From 85bcd8d8b5032c626a764bfd18080d72648de57a Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 11 Oct 2023 13:28:24 -0400 Subject: [PATCH 01/74] Added the languanges Preference dropdown --- .../Public/Components/LangPrefDropdown.js | 76 +++++++++++++++++++ .../front/src/pages/Public/Layout/Navbar.js | 4 +- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 frontend/front/src/pages/Public/Components/LangPrefDropdown.js diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js new file mode 100644 index 00000000..f88ef11d --- /dev/null +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -0,0 +1,76 @@ +import React, { useState } from "react"; +import { Box, Menu, MenuItem, Fade, Button, Typography } from "@mui/material"; +import LanguageIcon from "@mui/icons-material/Language"; + +const langsPref = { + English: { + lang: "en-us", + }, + French: { + lang: "fr-ht", + }, + Spanish: { + lang: "es", + }, + Portuguese: { + lang: "pt-br", + }, +}; + +const LangPrefDropdown = ({ langPref, setLangPref }) => { + const [anchorMore, setAnchorMore] = useState(null); + const open = Boolean(anchorMore); + + const handleClickMore = (event) => { + setAnchorMore(event.currentTarget); + }; + + const handleCloseMore = () => setAnchorMore(null); + + const handleLangSelect = (selectedLang) => { + setLangPref(selectedLang); + handleCloseMore(); + }; + + return ( +
+ + + + + {Object.keys(langsPref).map((lang, index) => ( + handleLangSelect(langsPref[lang].lang)} + > + {lang} + + ))} + + +
+ ); +}; + +export default LangPrefDropdown; diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index f54d78f3..fa76fbd1 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -27,6 +27,7 @@ import logoHeatPump from "../../../assets/images/bhpa-logos/bhpa-logo300px.gif"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import ExpandLess from "@mui/icons-material/ExpandLess"; import ExpandMore from "@mui/icons-material/ExpandMore"; +import LangPrefDropdown from "../Components/LangPrefDropdown"; // import { red, green, blue, yellow, orange } from "@mui/material/colors"; const Root = styled("div")(({ theme }) => ({ @@ -103,7 +104,7 @@ function Navbar(props) { aria-controls={open ? "fade-menu" : undefined} aria-haspopup="true" aria-expanded={open ? "true" : undefined} - onClick={handleClickMore} // Changed from onMouseEnter to onClick + onClick={handleClickMore} endIcon={} sx={{ color: "var(--color-text-1)" }} > @@ -361,6 +362,7 @@ function Navbar(props) { )} ))} + From fdb866977d6710d2f1fb39561178a9cc493025cf Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 11 Oct 2023 17:19:25 -0400 Subject: [PATCH 02/74] Added the dropdown langPref in the desktop/mobile view and installed the i18next library --- .../Public/Components/LangPrefDropdown.js | 22 +++++++++------ .../front/src/pages/Public/Layout/Navbar.js | 27 +++++++++++++------ 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index f88ef11d..9662dec4 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -1,6 +1,8 @@ import React, { useState } from "react"; import { Box, Menu, MenuItem, Fade, Button, Typography } from "@mui/material"; import LanguageIcon from "@mui/icons-material/Language"; +import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; +import i18next from "i18next"; const langsPref = { English: { @@ -9,15 +11,15 @@ const langsPref = { French: { lang: "fr-ht", }, - Spanish: { - lang: "es", - }, Portuguese: { lang: "pt-br", }, + Spanish: { + lang: "es-xm", + }, }; -const LangPrefDropdown = ({ langPref, setLangPref }) => { +const LangPrefDropdown = ({ setLangPref = "en-us" }) => { const [anchorMore, setAnchorMore] = useState(null); const open = Boolean(anchorMore); @@ -30,6 +32,9 @@ const LangPrefDropdown = ({ langPref, setLangPref }) => { const handleLangSelect = (selectedLang) => { setLangPref(selectedLang); handleCloseMore(); + + // Define the language for i18next + i18next.changeLanguage(langsPref[selectedLang].lang); }; return ( @@ -40,10 +45,11 @@ const LangPrefDropdown = ({ langPref, setLangPref }) => { aria-haspopup="true" onClick={handleClickMore} startIcon={} + endIcon={} sx={{ color: "var(--color-text-1)" }} > - {langsPref[langPref] ? langPref : "English"} + {langsPref[setLangPref] ? langsPref[setLangPref].lang : "English"} @@ -58,11 +64,11 @@ const LangPrefDropdown = ({ langPref, setLangPref }) => { TransitionComponent={Fade} > - {Object.keys(langsPref).map((lang, index) => ( + {Object.keys(langsPref).map((lang) => ( handleLangSelect(langsPref[lang].lang)} + onClick={() => handleLangSelect(lang)} > {lang} diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index fa76fbd1..e0dec4ce 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -286,8 +286,13 @@ function Navbar(props) { ))} - - + + + + + + + @@ -341,7 +346,7 @@ function Navbar(props) { - + {Object.keys(navbarItems).map((item) => (
@@ -362,12 +367,18 @@ function Navbar(props) { )}
))} -
- - + + + Date: Wed, 11 Oct 2023 17:29:42 -0400 Subject: [PATCH 03/74] Installed the i18next library --- frontend/front/package.json | 2 ++ frontend/front/public/index.html | 4 ++-- frontend/front/yarn.lock | 34 ++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/frontend/front/package.json b/frontend/front/package.json index f42afb39..767c6c32 100644 --- a/frontend/front/package.json +++ b/frontend/front/package.json @@ -18,10 +18,12 @@ "clsx": "^1.2.1", "framer-motion": "^9.0.3", "generate-password-browser": "^1.1.0", + "i18next": "^23.5.1", "jwt-decode": "^3.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.35.0", + "react-i18next": "^13.2.2", "react-intersection-observer": "^9.4.2", "react-material-ui-carousel": "^3.4.2", "react-redux": "^8.0.2", diff --git a/frontend/front/public/index.html b/frontend/front/public/index.html index 3fbd8d7d..07eac6c9 100644 --- a/frontend/front/public/index.html +++ b/frontend/front/public/index.html @@ -28,12 +28,12 @@ defer > --> - + > -->
diff --git a/frontend/front/yarn.lock b/frontend/front/yarn.lock index 3f38c4b9..fc8def5e 100644 --- a/frontend/front/yarn.lock +++ b/frontend/front/yarn.lock @@ -1150,6 +1150,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.22.5": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" @@ -5428,6 +5435,13 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + html-webpack-plugin@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" @@ -5522,6 +5536,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +i18next@^23.5.1: + version "23.5.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.5.1.tgz#7f7c35ffaa907618d9489f106d5006b09fbca3d3" + integrity sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg== + dependencies: + "@babel/runtime" "^7.22.5" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8221,6 +8242,14 @@ react-hook-form@^7.35.0: resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.45.4.tgz#73d228b704026ae95d7e5f7b207a681b173ec62a" integrity sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ== +react-i18next@^13.2.2: + version "13.2.2" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.2.2.tgz#b1e78ed66a54f4bc819616f68b98221e1b1a1936" + integrity sha512-+nFUkbRByFwnrfDcYqvzBuaeZb+nACHx+fAWN/pZMddWOCJH5hoc21+Sa/N/Lqi6ne6/9wC/qRGOoQhJa6IkEQ== + dependencies: + "@babel/runtime" "^7.22.5" + html-parse-stringify "^3.0.1" + react-intersection-observer@^9.4.2: version "9.5.2" resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.5.2.tgz#f68363a1ff292323c0808201b58134307a1626d0" @@ -9731,6 +9760,11 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" From 36581aa0a2330f1a5f948c336b93ee822944d975 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sat, 14 Oct 2023 21:57:20 -0400 Subject: [PATCH 04/74] Install i18next; configure Hero section first translation (pt-en-es-fr) --- frontend/front/package.json | 1 - .../src/pages/Public/Assets/constants.js | 5 - .../Public/Components/LangPrefDropdown.js | 46 +- .../front/src/pages/Public/Layout/Navbar.js | 6 +- frontend/front/src/pages/Public/Libs/i18n.js | 22 + .../front/src/pages/Public/Locale/en.json | 13 + .../front/src/pages/Public/Locale/es.json | 13 + .../front/src/pages/Public/Locale/fr.json | 13 + .../front/src/pages/Public/Locale/pt.json | 13 + .../pages/Public/Pages/Home/CarrouselHero.js | 91 - .../front/src/pages/Public/Pages/Home/Home.js | 16 +- .../front/src/pages/Public/PublicContainer.js | 1 + frontend/front/yarn.lock | 2036 +++++++++-------- 13 files changed, 1159 insertions(+), 1117 deletions(-) delete mode 100644 frontend/front/src/pages/Public/Assets/constants.js create mode 100644 frontend/front/src/pages/Public/Libs/i18n.js create mode 100644 frontend/front/src/pages/Public/Locale/en.json create mode 100644 frontend/front/src/pages/Public/Locale/es.json create mode 100644 frontend/front/src/pages/Public/Locale/fr.json create mode 100644 frontend/front/src/pages/Public/Locale/pt.json delete mode 100644 frontend/front/src/pages/Public/Pages/Home/CarrouselHero.js diff --git a/frontend/front/package.json b/frontend/front/package.json index 767c6c32..cea27385 100644 --- a/frontend/front/package.json +++ b/frontend/front/package.json @@ -25,7 +25,6 @@ "react-hook-form": "^7.35.0", "react-i18next": "^13.2.2", "react-intersection-observer": "^9.4.2", - "react-material-ui-carousel": "^3.4.2", "react-redux": "^8.0.2", "react-router-dom": "6", "react-scripts": "5.0.1", diff --git a/frontend/front/src/pages/Public/Assets/constants.js b/frontend/front/src/pages/Public/Assets/constants.js deleted file mode 100644 index bbe12c40..00000000 --- a/frontend/front/src/pages/Public/Assets/constants.js +++ /dev/null @@ -1,5 +0,0 @@ -const strings = { - appName: "Boston Heat Pump Accelerator", -}; - -export default strings; diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 9662dec4..6906d7f6 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -2,25 +2,17 @@ import React, { useState } from "react"; import { Box, Menu, MenuItem, Fade, Button, Typography } from "@mui/material"; import LanguageIcon from "@mui/icons-material/Language"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import i18next from "i18next"; +import { useTranslation } from "react-i18next"; -const langsPref = { - English: { - lang: "en-us", - }, - French: { - lang: "fr-ht", - }, - Portuguese: { - lang: "pt-br", - }, - Spanish: { - lang: "es-xm", - }, -}; +const LangPrefDropdown = () => { + const { + i18n: { changeLanguage, language }, + } = useTranslation(); -const LangPrefDropdown = ({ setLangPref = "en-us" }) => { const [anchorMore, setAnchorMore] = useState(null); + const [langDisplay, setLangDisplay] = useState("English"); // ["English", "Portuguese", "Spanish", "French"] + const [currentLanguage, setCurrentLanguage] = useState(language); + const open = Boolean(anchorMore); const handleClickMore = (event) => { @@ -29,12 +21,18 @@ const LangPrefDropdown = ({ setLangPref = "en-us" }) => { const handleCloseMore = () => setAnchorMore(null); - const handleLangSelect = (selectedLang) => { - setLangPref(selectedLang); - handleCloseMore(); + const langsPref = { + English: "en", + Portuguese: "pt", + Spanish: "es", + French: "fr", + }; - // Define the language for i18next - i18next.changeLanguage(langsPref[selectedLang].lang); + const handleChangeLanguage = (lang, display) => { + setCurrentLanguage(lang); + changeLanguage(lang); + console.log(lang); + setLangDisplay(display); }; return ( @@ -48,9 +46,7 @@ const LangPrefDropdown = ({ setLangPref = "en-us" }) => { endIcon={} sx={{ color: "var(--color-text-1)" }} > - - {langsPref[setLangPref] ? langsPref[setLangPref].lang : "English"} - + {langDisplay} { handleLangSelect(lang)} + onClick={() => handleChangeLanguage(langsPref[lang], lang)} > {lang} diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index e0dec4ce..2b725320 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -290,7 +290,7 @@ function Navbar(props) { - + @@ -370,6 +370,10 @@ function Navbar(props) { + + {/* Removed this button from the navbar */} + + { - const handleResize = () => { - setHeroHeight(window.innerHeight); - }; - window.addEventListener("resize", handleResize); - return () => { - window.removeEventListener("resize", handleResize); - }; - }, []); - - const items = [ - { - component: ( - - ), - }, - // component: ( - // - // ), - // }, - // { - // component: ( - // - // ), - // }, - ]; - - return ( -
- - {items.map((item, i) => ( - - ))} - -
- ); -} - -function Item(props) { - return ( - - {props.item.component} - - ); -} - -export default CarrouselHero; diff --git a/frontend/front/src/pages/Public/Pages/Home/Home.js b/frontend/front/src/pages/Public/Pages/Home/Home.js index 5049db91..1552225f 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Home.js +++ b/frontend/front/src/pages/Public/Pages/Home/Home.js @@ -1,11 +1,13 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import { Box, Container } from "@mui/material"; import { styled } from "@mui/material/styles"; import Partners from "./Partners"; import CardBenefitsSection from "./CardBenefitsSection"; import CardLinksSection from "./CardLinksSection"; -import CarrouselHero from "./CarrouselHero"; import Testimonial from "./Testimonial"; +import HeroPage from "./HeroPage"; +import imageHeroFirst from "../../../../assets/images/copywritingImages/Eric-Richards-unedited-3-EDITED.webp"; const SectionWrapper = styled(Box)(({ theme, image }) => ({ background: "var(--bgColor-1)", @@ -14,6 +16,8 @@ const SectionWrapper = styled(Box)(({ theme, image }) => ({ })); const Home = () => { + const { t } = useTranslation(); + return ( { > {/* HERO */} - + {/* CARDS LINKS TO SURVEY AND ABOUT PAGES */} diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index 8eb2d364..e224b145 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -15,6 +15,7 @@ import PrivacyPolicy from "./Pages/PrivacyPolicy/PrivacyPolicy"; import "./Assets/index.css"; import "animate.css/animate.min.css"; import ScrollToTopButton from "./Components/ScrollToTopButton"; +import "./Libs/i18n"; const PublicContainer = () => { return ( diff --git a/frontend/front/yarn.lock b/frontend/front/yarn.lock index fc8def5e..a78930bb 100644 --- a/frontend/front/yarn.lock +++ b/frontend/front/yarn.lock @@ -34,55 +34,55 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" - integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.22.10" + "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" - integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.10" - "@babel/parser" "^7.22.10" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" + json5 "^2.2.3" semver "^6.3.1" "@babel/eslint-parser@^7.16.3": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.10.tgz#bfdf3d1b32ad573fe7c1c3447e0b485e3a41fd09" - integrity sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" + integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.22.10", "@babel/generator@^7.7.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== +"@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.22.10" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -95,39 +95,24 @@ "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz#573e735937e99ea75ea30788b57eb52fab7468c9" - integrity sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/types" "^7.22.10" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" - integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" browserslist "^4.21.9" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.10", "@babel/helper-create-class-features-plugin@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3" - integrity sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.21.0": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== @@ -143,18 +128,18 @@ semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -162,18 +147,18 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -189,30 +174,23 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-simple-access" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -226,22 +204,22 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": @@ -275,63 +253,58 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== - -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-wrap-function@^7.22.9": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz#d845e043880ed0b8c18bd194a12005cb16d2f614" - integrity sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.10" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a" - integrity sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" - integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" - integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" @@ -342,13 +315,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.10.tgz#d6a8c3a9018e1b13e6647f869c5ea56ff2b585d4" - integrity sha512-KxN6TqZzcFi4uD3UifqXElBTBNLAEH1l3vzMQj6JwJZbL2sZlThxSViOKCYY+4Ah4V4JhQ95IVB7s/Y6SJSlMQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz#0b345a5754f48309fa50b7cd99075ef0295b12c8" + integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.10" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" "@babel/plugin-syntax-decorators" "^7.22.10" @@ -569,14 +542,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz#45946cd17f915b10e65c29b8ed18a0a50fc648c8" - integrity sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g== +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.22.5": @@ -595,10 +568,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" - integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg== +"@babel/plugin-transform-block-scoping@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -610,27 +583,27 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" @@ -642,10 +615,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.10": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" - integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== +"@babel/plugin-transform-destructuring@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -664,10 +637,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" @@ -680,10 +653,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" @@ -696,10 +669,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.22.5" -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -712,10 +685,10 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -727,10 +700,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -742,32 +715,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== +"@babel/plugin-transform-modules-amd@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== +"@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== +"@babel/plugin-transform-modules-systemjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -792,32 +765,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" @@ -827,27 +800,27 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.10", "@babel/plugin-transform-optional-chaining@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz#076d28a7e074392e840d4ae587d83445bac0372a" - integrity sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g== +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -859,13 +832,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" @@ -897,16 +870,16 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416" - integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA== +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" "@babel/plugin-transform-react-pure-annotations@^7.22.5": version "7.22.5" @@ -932,15 +905,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.16.4": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.10.tgz#89eda6daf1d3af6f36fb368766553054c8d7cd46" - integrity sha512-RchI7HePu1eu0CYNKHHHQdfenZcM4nz8rew5B1VWqeRKdcwW5aQ5HeG9eTUbWiAS1UrmHVLmoxTWHt3iLD/NhA== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" + integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.22.5": @@ -979,13 +952,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.22.5": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.10.tgz#aadd98fab871f0bb5717bcc24c31aaaa455af923" - integrity sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A== +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.10" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.22.5" @@ -1021,16 +994,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.10.tgz#3263b9fe2c8823d191d28e61eac60a79f9ce8a0f" - integrity sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.10" + "@babel/compat-data" "^7.23.2" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -1051,41 +1024,41 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.10" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.10" + "@babel/plugin-transform-block-scoping" "^7.23.0" "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.10" + "@babel/plugin-transform-destructuring" "^7.23.0" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.10" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" "@babel/plugin-transform-property-literals" "^7.22.5" "@babel/plugin-transform-regenerator" "^7.22.10" "@babel/plugin-transform-reserved-words" "^7.22.5" @@ -1099,10 +1072,10 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.10" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" core-js-compat "^3.31.0" semver "^6.3.1" @@ -1116,82 +1089,66 @@ esutils "^2.0.2" "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.5.tgz#c4d6058fbf80bccad02dd8c313a9aaa67e3c3dd6" - integrity sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-transform-react-display-name" "^7.22.5" - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.16.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" - integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.22.5": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.5", "@babel/template@^7.3.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" -"@babel/traverse@^7.22.10", "@babel/traverse@^7.7.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" - integrity sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig== +"@babel/traverse@^7.23.2", "@babel/traverse@^7.7.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.10" - "@babel/types" "^7.22.10" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.10", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" - integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.23.0": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== @@ -1373,7 +1330,7 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.10.0", "@emotion/react@^11.7.1": +"@emotion/react@^11.10.0": version "11.11.1" resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== @@ -1403,7 +1360,7 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== -"@emotion/styled@^11.10.0", "@emotion/styled@^11.6.0": +"@emotion/styled@^11.10.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== @@ -1443,9 +1400,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.6.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" - integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -1462,15 +1419,42 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@^8.47.0": - version "8.47.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d" - integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og== +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@floating-ui/core@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== + dependencies: + "@floating-ui/utils" "^0.1.3" + +"@floating-ui/dom@^1.5.1": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== + dependencies: + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" + +"@floating-ui/react-dom@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" + integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== + dependencies: + "@floating-ui/dom" "^1.5.1" + +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== + +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -1570,10 +1554,10 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/expect-utils@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.3.tgz#5ef1a9689fdaa348da837c8be8d1219f56940ea3" - integrity sha512-nvOEW4YoqRKD9HBJ9OJ6przvIvP9qilp5nAn1462P5ZlL/MM9SgPEZFyjTGPfs7QkocdUsJa6KjHhyRn4ueItA== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: jest-get-type "^29.6.3" @@ -1783,110 +1767,108 @@ resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@mui/base@5.0.0-beta.11": - version "5.0.0-beta.11" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.11.tgz#0124d336f1931c6cd5f0008d015df5bd8fafd3a8" - integrity sha512-FdKZGPd8qmC3ZNke7CNhzcEgToc02M6WYZc9hcBsNQ17bgAd3s9F//1bDDYgMVBYxDM71V0sv/hBHlOY4I1ZVA== +"@mui/base@5.0.0-beta.19": + version "5.0.0-beta.19" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.19.tgz#c1776e91b6a377c1a6a0079b5d6fec6e07a3bf9c" + integrity sha512-maNBgAscddyPNzFZQUJDF/puxM27Li+NqSBsr/lAP8TLns2VvWS2SoL3OKFOIoRnAMKGY/Ic6Aot6gCYeQnssA== dependencies: - "@babel/runtime" "^7.22.6" - "@emotion/is-prop-valid" "^1.2.1" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + "@babel/runtime" "^7.23.1" + "@floating-ui/react-dom" "^2.0.2" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" "@popperjs/core" "^2.11.8" clsx "^2.0.0" prop-types "^15.8.1" - react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.5.tgz#c5854b89d57520c77253a79b20b784d5c2903fb6" - integrity sha512-+wpGH1USwPcKMFPMvXqYPC6fEvhxM3FzxC8lyDiNK/imLyyJ6y2DPb1Oue7OGIKJWBmYBqrWWtfovrxd1aJHTA== +"@mui/core-downloads-tracker@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.13.tgz#4b87e28aec6e568613683517ce4b7a7f75fa681a" + integrity sha512-3ZUbzcH4yloLKlV6Y+S0Edn2wef9t+EGHSfEkwVCn8E0ULdshifEFgfEroKRegQifDIwcKS/ofccxuZ8njTAYg== -"@mui/icons-material@^5.4.1", "@mui/icons-material@^5.8.4": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.3.tgz#26a84d52ab2fceea2856adf7a139527b3a51ae90" - integrity sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw== +"@mui/icons-material@^5.8.4": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.13.tgz#d5169f804cc97c86282e85b5b7fdb523fb04689d" + integrity sha512-fxKE1UrjI4xVxHe9IAGuVQZrc18dSBJg0P+Sqi2SZmcDUCShmgRq6Jq7l7GduvuMIkOSqAJdNgLtXmtmZkjtLg== dependencies: - "@babel/runtime" "^7.22.6" + "@babel/runtime" "^7.23.1" "@mui/lab@^5.0.0-alpha.103": - version "5.0.0-alpha.140" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.140.tgz#07028563fb18715e49da973ee814da7c0976133d" - integrity sha512-k75jos6jklCD8tA20PAK2H4RSCKycTcR4Pbfz7JbdxIkWXJ+y2MRalwMcen1vpB99v0yZHNUo6BtGz6rvs2jlQ== - dependencies: - "@babel/runtime" "^7.22.6" - "@mui/base" "5.0.0-beta.11" - "@mui/system" "^5.14.5" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + version "5.0.0-alpha.148" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.148.tgz#3cd05cabedc11e96022f77e365e1847c4e669dfb" + integrity sha512-FfgHSYO59tznwMkn6FAjuowU1KteTV2AQRD7NsZq82TpiRBpBFkDtcsap02uf+rRVdwgF/yokdYLtVJ96snDGA== + dependencies: + "@babel/runtime" "^7.23.1" + "@mui/base" "5.0.0-beta.19" + "@mui/system" "^5.14.13" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" + "@mui/x-tree-view" "6.0.0-alpha.1" clsx "^2.0.0" prop-types "^15.8.1" - react-is "^18.2.0" -"@mui/material@^5.10.9", "@mui/material@^5.4.1": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.5.tgz#4610b381fd159cd208c28e1d1f29c303ea24a518" - integrity sha512-4qa4GMfuZH0Ai3mttk5ccXP8a3sf7aPlAJwyMrUSz6h9hPri6BPou94zeu3rENhhmKLby9S/W1y+pmficy8JKA== - dependencies: - "@babel/runtime" "^7.22.6" - "@mui/base" "5.0.0-beta.11" - "@mui/core-downloads-tracker" "^5.14.5" - "@mui/system" "^5.14.5" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" - "@types/react-transition-group" "^4.4.6" +"@mui/material@^5.10.9": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.13.tgz#d2df8270cafaa0cae595e843a01e8a9047a05e8e" + integrity sha512-iPEFwhoVG789UVsXX4gqd1eJUlcLW1oceqwJYQN8Z4MpcAKfL9Lv3fda65AwG7pQ5lf+d7IbHzm4m48SWZxI2g== + dependencies: + "@babel/runtime" "^7.23.1" + "@mui/base" "5.0.0-beta.19" + "@mui/core-downloads-tracker" "^5.14.13" + "@mui/system" "^5.14.13" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" + "@types/react-transition-group" "^4.4.7" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.5.tgz#834e1569c31e2644665f98d902def79014053017" - integrity sha512-cC4C5RrpXpDaaZyH9QwmPhRLgz+f2SYbOty3cPkk4qPSOSfif2ZEcDD9HTENKDDd9deB+xkPKzzZhi8cxIx8Ig== +"@mui/private-theming@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.13.tgz#10cb55a6e2caaf568dfaae894969a933c037da80" + integrity sha512-5EFqk4tqiSwPguj4NW/6bUf4u1qoUWXy9lrKfNh9H6oAohM+Ijv/7qSxFjnxPGBctj469/Sc5aKAR35ILBKZLQ== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/utils" "^5.14.5" + "@babel/runtime" "^7.23.1" + "@mui/utils" "^5.14.13" prop-types "^15.8.1" -"@mui/styled-engine@^5.13.2": - version "5.13.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" - integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== +"@mui/styled-engine@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.13.tgz#4ab4ef7d86ffe8709bdce4b8b2e3dba9090da199" + integrity sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.23.1" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.14.5", "@mui/system@^5.4.1": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.5.tgz#614394c4183d90df82c540e0e736ba72c1f95f8e" - integrity sha512-mextXZHDeGcR7E1kx43TRARrVXy+gI4wzpUgNv7MqZs1dvTVXQGVeAT6ydj9d6FUqHBPMNLGV/21vJOrpqsL+w== +"@mui/system@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.13.tgz#6c7a3cb28e45e3b66eb162ee5b292a6cf80efb8e" + integrity sha512-+5+Dx50lG4csbx2sGjrKLozXQJeCpJ4dIBZolyFLkZ+XphD1keQWouLUvJkPQ3MSglLLKuD37pp52YjMncZMEQ== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/private-theming" "^5.14.5" - "@mui/styled-engine" "^5.13.2" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.5" + "@babel/runtime" "^7.23.1" + "@mui/private-theming" "^5.14.13" + "@mui/styled-engine" "^5.14.13" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/types@^7.2.4": - version "7.2.4" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" - integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== +"@mui/types@^7.2.6": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.6.tgz#d72b9e9eb0032e107e76033932d65c3f731d2608" + integrity sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng== -"@mui/utils@^5.10.3", "@mui/utils@^5.14.5": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.5.tgz#98fb6060610b793a8478e70ffe5e4ed5bd922dba" - integrity sha512-6Hzw63VR9C5xYv+CbjndoRLU6Gntal8rJ5W+GUzkyHrGWIyYPWZPa6AevnyGioySNETATe1H9oXS8f/7qgIHJA== +"@mui/utils@^5.10.3", "@mui/utils@^5.14.13", "@mui/utils@^5.14.3": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.13.tgz#42c352b342da90b44a29a83d3dbda6ee1e56a0f8" + integrity sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw== dependencies: - "@babel/runtime" "^7.22.6" - "@types/prop-types" "^15.7.5" - "@types/react-is" "^18.2.1" + "@babel/runtime" "^7.23.1" + "@types/prop-types" "^15.7.7" prop-types "^15.8.1" react-is "^18.2.0" @@ -1901,6 +1883,18 @@ prop-types "^15.8.1" reselect "^4.1.6" +"@mui/x-tree-view@6.0.0-alpha.1": + version "6.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-6.0.0-alpha.1.tgz#fe499f8c43c01d28aca95cfb17491746ffcc3080" + integrity sha512-JUG3HmBrmGEALbCFg1b+i7h726e1dWYZs4db3syO1j+Q++E3nbvE4Lehp5yGTFm+8esH0Tny50tuJaa4WX6VSA== + dependencies: + "@babel/runtime" "^7.22.6" + "@mui/utils" "^5.14.3" + "@types/react-transition-group" "^4.4.6" + clsx "^2.0.0" + prop-types "^15.8.1" + react-transition-group "^4.4.5" + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -1950,19 +1944,19 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@reduxjs/toolkit@^1.8.5": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4" - integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ== + version "1.9.7" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.7.tgz#7fc07c0b0ebec52043f8cb43510cf346405f78a6" + integrity sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ== dependencies: immer "^9.0.21" redux "^4.2.1" redux-thunk "^2.4.2" reselect "^4.1.8" -"@remix-run/router@1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.8.0.tgz#e848d2f669f601544df15ce2a313955e4bf0bafc" - integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== +"@remix-run/router@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" + integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== "@rollup/plugin-babel@^5.2.0": version "5.3.1" @@ -2002,9 +1996,9 @@ picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.0": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz#16ab6c727d8c2020a5b6e4a176a243ecd88d8d69" - integrity sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -2199,14 +2193,14 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/aria-query@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" - integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.2.tgz#6f1225829d89794fd9f891989c9ce667422d7f64" + integrity sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2215,77 +2209,77 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.5" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== dependencies: "@babel/types" "^7.20.7" "@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" + integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + version "3.7.5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a" - integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== + version "8.44.4" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" + integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== "@types/estree@0.0.39": version "0.0.39" @@ -2293,9 +2287,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2303,9 +2297,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + version "4.17.19" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" + integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2313,16 +2307,16 @@ "@types/serve-static" "*" "@types/graceful-fs@^4.1.2": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + version "3.3.3" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz#8bb41d9a88164f82dd2745ff05e637e655f34d19" + integrity sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw== dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -2333,14 +2327,14 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== "@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + version "1.17.12" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== dependencies: "@types/node" "*" @@ -2350,31 +2344,31 @@ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" + integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" + integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.5.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.3.tgz#7a35dc0044ffb8b56325c6802a4781a626b05777" - integrity sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA== + version "29.5.5" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" + integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -2382,19 +2376,21 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/node@*": - version "20.5.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30" - integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg== + version "20.8.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" + integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + dependencies: + undici-types "~5.25.1" "@types/parse-json@^4.0.0": version "4.0.0" @@ -2406,51 +2402,44 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== -"@types/prop-types@*", "@types/prop-types@^15.7.5": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== +"@types/prop-types@*", "@types/prop-types@^15.7.7": + version "15.7.8" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" + integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== "@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + version "1.5.6" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.6.tgz#a6edffe8283910e46dc7a573621f928e6b47fa56" + integrity sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ== "@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== "@types/react-dom@^18.0.0": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" - integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== + version "18.2.13" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" + integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== dependencies: "@types/react" "*" -"@types/react-is@^18.2.1": - version "18.2.1" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" - integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== - dependencies: - "@types/react" "*" - -"@types/react-transition-group@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" - integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== +"@types/react-transition-group@^4.4.6", "@types/react-transition-group@^4.4.7": + version "4.4.7" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" + integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== dependencies: "@types/react" "*" "@types/react@*": - version "18.2.20" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.20.tgz#1605557a83df5c8a2cc4eeb743b3dfc0eb6aaeb2" - integrity sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw== + version "18.2.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" + integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2469,43 +2458,43 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== "@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" - integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + version "0.3.34" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== dependencies: "@types/node" "*" @@ -2522,9 +2511,9 @@ "@types/jest" "*" "@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" + integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== "@types/use-sync-external-store@^0.0.3": version "0.0.3" @@ -2532,28 +2521,28 @@ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/ws@^8.5.5": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + version "8.5.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" + integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + version "16.0.6" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" + integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + version "17.0.28" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== dependencies: "@types/yargs-parser" "*" @@ -2993,14 +2982,14 @@ array-flatten@^2.1.2: integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -3009,66 +2998,67 @@ array-union@^2.1.0: integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.findlastindex@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" - integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" define-properties "^1.2.0" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" @@ -3106,13 +3096,13 @@ at-least-node@^1.0.0: integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== autoprefixer@^10.4.13: - version "10.4.15" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530" - integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== dependencies: browserslist "^4.21.10" - caniuse-lite "^1.0.30001520" - fraction.js "^4.2.0" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -3123,9 +3113,9 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" - integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== axobject-query@^3.1.1: version "3.2.1" @@ -3193,29 +3183,29 @@ babel-plugin-named-asset-import@^0.3.8: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -babel-plugin-polyfill-corejs2@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" + integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.32.2" -babel-plugin-polyfill-regenerator@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" @@ -3286,13 +3276,14 @@ batch@0.6.1: integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" + bluebird "^3.7.2" + check-types "^11.2.3" hoopy "^0.1.4" + jsonpath "^1.1.1" tryer "^1.0.1" big.js@^5.2.2: @@ -3305,7 +3296,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bluebird@^3.5.5: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3370,15 +3361,15 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" - update-browserslist-db "^1.0.11" + update-browserslist-db "^1.0.13" bser@2.1.1: version "2.1.1" @@ -3461,10 +3452,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: - version "1.0.30001522" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz#44b87a406c901269adcdb834713e23582dd71856" - integrity sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001549" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" + integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -3506,10 +3497,10 @@ char-regex@^2.0.0: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== -check-types@^11.1.1: - version "11.2.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" - integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" @@ -3532,9 +3523,9 @@ chrome-trace-event@^1.0.2: integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: version "1.2.3" @@ -3719,6 +3710,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -3729,22 +3725,22 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-js-compat@^3.31.0: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.1.tgz#55f9a7d297c0761a8eb1d31b593e0f5b6ffae964" - integrity sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA== +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-js-pure@^3.23.3: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.1.tgz#5775b88f9062885f67b6d7edce59984e89d276f3" - integrity sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.0.tgz#938a28754b4d82017a7a8cbd2727b1abecc63591" + integrity sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg== core-js@^3.19.2: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.1.tgz#a7d8736a3ed9dd05940c3c4ff32c591bb735be77" - integrity sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" + integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== core-util-is@~1.0.0: version "1.0.3" @@ -3906,9 +3902,9 @@ css.escape@^1.5.1: integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== cssdb@^7.1.0: - version "7.7.1" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.7.1.tgz#759e333f516e47f26dd2c7be06147d4f4716356d" - integrity sha512-kM+Fs0BFyhJNeE6wbOrlnRsugRdL6vn7QcON0aBDZ7XRd7RI2pMlk+nxoHuTb4Et+aBobXgK0I+6NGLA0LLgTw== + version "7.8.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.8.0.tgz#ac41fa025371b74eb2ccfe3d41f5c4dbd444fbe3" + integrity sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg== cssesc@^3.0.0: version "3.0.0" @@ -4062,7 +4058,7 @@ deep-equal@^2.0.5: which-collection "^1.0.1" which-typed-array "^1.1.9" -deep-is@^0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -4079,16 +4075,26 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" +define-data-property@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -4168,9 +4174,9 @@ dns-equal@^1.0.0: integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -4301,10 +4307,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.477: - version "1.4.496" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz#a57534b70d2bdee7e1ad7dbd4c91e560cbd08db1" - integrity sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g== +electron-to-chromium@^1.4.535: + version "1.4.554" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz#04e09c2ee31dc0f1546174033809b54cc372740b" + integrity sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ== emittery@^0.10.2: version "0.10.2" @@ -4363,18 +4369,18 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2, es-abstract@^1.21.3: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== +es-abstract@^1.17.2, es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -4390,23 +4396,23 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21 is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -4429,14 +4435,14 @@ es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-iterator-helpers@^1.0.12: - version "1.0.13" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz#72101046ffc19baf9996adc70e6177a26e6e8084" - integrity sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA== + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: asynciterator.prototype "^1.0.0" call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.21.3" + define-properties "^1.2.1" + es-abstract "^1.22.1" es-set-tostringtag "^2.0.1" function-bind "^1.1.1" get-intrinsic "^1.2.1" @@ -4445,13 +4451,13 @@ es-iterator-helpers@^1.0.12: has-proto "^1.0.1" has-symbols "^1.0.3" internal-slot "^1.0.5" - iterator.prototype "^1.1.0" - safe-array-concat "^1.0.0" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: version "2.0.1" @@ -4503,6 +4509,18 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -4682,15 +4700,15 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0, eslint@^8.44.0: - version "8.47.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.47.0.tgz#c95f9b935463fb4fad7005e626c7621052e90806" - integrity sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q== + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "^8.47.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.12.4" @@ -4733,6 +4751,11 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -4752,7 +4775,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -4818,15 +4841,15 @@ expect@^27.5.1: jest-message-util "^27.5.1" expect@^29.0.0: - version "29.6.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.3.tgz#e74b57c35a81fd93ece6b570e371309c53dc4f54" - integrity sha512-x1vY4LlEMWUYVZQrFi4ZANXFwqYbJ/JNQspLVvzhW2BNY28aNcXMQH6imBbt+RBf5sVRTodYHXtSP/TLEU0Dxw== + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: - "@jest/expect-utils" "^29.6.3" + "@jest/expect-utils" "^29.7.0" jest-get-type "^29.6.3" - jest-matcher-utils "^29.6.3" - jest-message-util "^29.6.3" - jest-util "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" express@^4.17.3: version "4.18.2" @@ -4886,7 +4909,7 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== @@ -4997,22 +5020,23 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -5054,23 +5078,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.1.tgz#14b4cc886575a5684f8d5fd5759c5db376bb7bb8" - integrity sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q== - -framer-motion@^4.1.17: - version "4.1.17" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-4.1.17.tgz#4029469252a62ea599902e5a92b537120cc89721" - integrity sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw== - dependencies: - framesync "5.3.0" - hey-listen "^1.0.8" - popmotion "9.3.6" - style-value-types "4.1.4" - tslib "^2.1.0" - optionalDependencies: - "@emotion/is-prop-valid" "^0.8.2" +fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== framer-motion@^9.0.3: version "9.1.7" @@ -5081,13 +5092,6 @@ framer-motion@^9.0.3: optionalDependencies: "@emotion/is-prop-valid" "^0.8.2" -framesync@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b" - integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== - dependencies: - tslib "^2.1.0" - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -5113,9 +5117,9 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: universalify "^2.0.0" fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== fs.realpath@^1.0.0: version "1.0.0" @@ -5128,21 +5132,21 @@ fsevents@^2.3.2, fsevents@~2.3.2: integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -5263,9 +5267,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -5362,22 +5366,15 @@ has-tostringtag@^1.0.0: has-symbols "^1.0.2" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" @@ -5638,7 +5635,7 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: +internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -5713,7 +5710,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.9.0: +is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== @@ -5864,7 +5861,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -5960,16 +5957,16 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.0.tgz#690c88b043d821f783843aaf725d7ac3b62e3b46" - integrity sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - define-properties "^1.1.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - has-tostringtag "^1.0.0" - reflect.getprototypeof "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" jake@^10.8.5: version "10.8.7" @@ -6073,15 +6070,15 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-diff@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.3.tgz#365c6b037ea8e67d2f2af68bc018fc18d44311f0" - integrity sha512-3sw+AdWnwH9sSNohMRKA7JiYUJSRr/WS6+sEFfBuhxU5V5GlEVKfvUn8JuMHE0wqKowemR1C2aHy8VtXbaV8dQ== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" diff-sequences "^29.6.3" jest-get-type "^29.6.3" - pretty-format "^29.6.3" + pretty-format "^29.7.0" jest-docblock@^27.5.1: version "27.5.1" @@ -6197,15 +6194,15 @@ jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-matcher-utils@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.3.tgz#a7574092b635d96a38fa0a22d015fb596b9c2efc" - integrity sha512-6ZrMYINZdwduSt5Xu18/n49O1IgXdjsfG7NEZaQws9k69eTKWKcVbJBw/MZsjOZe2sSyJFmuzh8042XWwl54Zg== +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" - jest-diff "^29.6.3" + jest-diff "^29.7.0" jest-get-type "^29.6.3" - pretty-format "^29.6.3" + pretty-format "^29.7.0" jest-message-util@^27.5.1: version "27.5.1" @@ -6237,10 +6234,10 @@ jest-message-util@^28.1.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-message-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.3.tgz#bce16050d86801b165f20cfde34dc01d3cf85fbf" - integrity sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.6.3" @@ -6248,7 +6245,7 @@ jest-message-util@^29.6.3: chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.6.3" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" @@ -6415,10 +6412,10 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.3.tgz#e15c3eac8716440d1ed076f09bc63ace1aebca63" - integrity sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA== +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: "@jest/types" "^29.6.3" "@types/node" "*" @@ -6516,9 +6513,9 @@ jest@^27.4.3: jest-cli "^27.5.1" jiti@^1.18.2: - version "1.19.3" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569" - integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w== + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -6583,6 +6580,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -6620,7 +6622,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.2: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -6634,6 +6636,15 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + jsonpointer@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" @@ -6654,6 +6665,13 @@ jwt-decode@^3.1.2: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -6682,12 +6700,12 @@ language-tags@=1.0.5: language-subtag-registry "~0.3.2" launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" - shell-quote "^1.7.3" + shell-quote "^1.8.1" leven@^3.1.0: version "3.1.0" @@ -6702,6 +6720,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -7164,60 +7190,60 @@ object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.getownpropertydescriptors@^2.1.0: - version "2.1.6" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" - integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== dependencies: - array.prototype.reduce "^1.0.5" + array.prototype.reduce "^1.0.6" call-bind "^1.0.2" define-properties "^1.2.0" - es-abstract "^1.21.2" + es-abstract "^1.22.1" safe-array-concat "^1.0.0" object.groupby@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" - integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - es-abstract "^1.21.2" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.values@^1.1.0, object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -7259,6 +7285,18 @@ open@^8.0.9, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -7471,16 +7509,6 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -popmotion@9.3.6: - version "9.3.6" - resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.3.6.tgz#b5236fa28f242aff3871b9e23721f093133248d1" - integrity sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw== - dependencies: - framesync "5.3.0" - hey-listen "^1.0.8" - style-value-types "4.1.4" - tslib "^2.1.0" - postcss-attribute-case-insensitive@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" @@ -8025,9 +8053,9 @@ postcss@^7.0.35: source-map "^0.6.1" postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: - version "8.4.28" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" - integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -8038,6 +8066,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + prettier@^2.8.8: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -8075,10 +8108,10 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0, pretty-format@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7" - integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw== +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" @@ -8238,14 +8271,14 @@ react-error-overlay@^6.0.11: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-hook-form@^7.35.0: - version "7.45.4" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.45.4.tgz#73d228b704026ae95d7e5f7b207a681b173ec62a" - integrity sha512-HGDV1JOOBPZj10LB3+OZgfDBTn+IeEsNOKiq/cxbQAIbKaiJUe/KV8DBUzsx0Gx/7IG/orWqRRm736JwOfUSWQ== + version "7.47.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.47.0.tgz#a42f07266bd297ddf1f914f08f4b5f9783262f31" + integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg== react-i18next@^13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.2.2.tgz#b1e78ed66a54f4bc819616f68b98221e1b1a1936" - integrity sha512-+nFUkbRByFwnrfDcYqvzBuaeZb+nACHx+fAWN/pZMddWOCJH5hoc21+Sa/N/Lqi6ne6/9wC/qRGOoQhJa6IkEQ== + version "13.3.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-13.3.0.tgz#8e39c0101f654db7eb971f159bb55067a78925c3" + integrity sha512-FlR9xjYHSPIJfQspEmkN0yOlxgRyNuiJKJ8gCaZH08UJ7SZHG+VrptEPcpEMEchjNoCOZdKcvJ3PnmHEZhkeXg== dependencies: "@babel/runtime" "^7.22.5" html-parse-stringify "^3.0.1" @@ -8270,22 +8303,10 @@ react-is@^18.0.0, react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-material-ui-carousel@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/react-material-ui-carousel/-/react-material-ui-carousel-3.4.2.tgz#3db3b4719859960284f262470b304fecad89fa18" - integrity sha512-jUbC5aBWqbbbUOOdUe3zTVf4kMiZFwKJqwhxzHgBfklaXQbSopis4iWAHvEOLcZtSIJk4JAGxKE0CmxDoxvUuw== - dependencies: - "@emotion/react" "^11.7.1" - "@emotion/styled" "^11.6.0" - "@mui/icons-material" "^5.4.1" - "@mui/material" "^5.4.1" - "@mui/system" "^5.4.1" - framer-motion "^4.1.17" - react-redux@^8.0.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.2.tgz#9076bbc6b60f746659ad6d51cb05de9c5e1e9188" - integrity sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw== + version "8.1.3" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.3.tgz#4fdc0462d0acb59af29a13c27ffef6f49ab4df46" + integrity sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw== dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -8300,19 +8321,19 @@ react-refresh@^0.11.0: integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-router-dom@6: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.15.0.tgz#6da7db61e56797266fbbef0d5e324d6ac443ee40" - integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: - "@remix-run/router" "1.8.0" - react-router "6.15.0" + "@remix-run/router" "1.9.0" + react-router "6.16.0" -react-router@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.15.0.tgz#bf2cb5a4a7ed57f074d4ea88db0d95033f39cac8" - integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== +react-router@6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" + integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== dependencies: - "@remix-run/router" "1.8.0" + "@remix-run/router" "1.9.0" react-scripts@5.0.1: version "5.0.1" @@ -8458,22 +8479,22 @@ redux@^4.2.1: dependencies: "@babel/runtime" "^7.9.2" -reflect.getprototypeof@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz#2738fd896fcc3477ffbd4190b40c2458026b6928" - integrity sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw== +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" globalthis "^1.0.3" which-builtin-type "^1.1.3" regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -8504,14 +8525,14 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" regexpu-core@^5.3.1: version "5.3.2" @@ -8602,20 +8623,20 @@ resolve.exports@^1.1.0: integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -8660,13 +8681,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -8848,6 +8869,15 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -8882,7 +8912,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3: +shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -9001,9 +9031,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== spdy-transport@^3.0.0: version "3.0.0" @@ -9050,6 +9080,13 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -9098,54 +9135,55 @@ string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.1" string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" string.prototype.padend@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz#2c43bb3a89eb54b6750de5942c123d6c98dd65b6" - integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" + integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -9221,14 +9259,6 @@ style-loader@^3.3.1: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== -style-value-types@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-4.1.4.tgz#80f37cb4fb024d6394087403dfb275e8bb627e75" - integrity sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg== - dependencies: - hey-listen "^1.0.8" - tslib "^2.1.0" - stylehacks@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" @@ -9404,9 +9434,9 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.0.0, terser@^5.10.0, terser@^5.16.8: - version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -9522,7 +9552,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.3, tslib@^2.4.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -9541,6 +9571,13 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -9625,6 +9662,16 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -9680,10 +9727,10 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -9898,9 +9945,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.88.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" - integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== + version "5.89.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -9949,9 +9996,9 @@ whatwg-encoding@^1.0.5: iconv-lite "0.4.24" whatwg-fetch@^3.6.2: - version "3.6.17" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz#009bbbfc122b227b74ba1ff31536b3a1a0e0e212" - integrity sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ== + version "3.6.19" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" + integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== whatwg-mimetype@^2.3.0: version "2.3.0" @@ -10015,7 +10062,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -10040,6 +10087,11 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + workbox-background-sync@6.6.1: version "6.6.1" resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" @@ -10239,9 +10291,9 @@ ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xml-name-validator@^3.0.0: version "3.0.0" @@ -10274,9 +10326,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== yargs-parser@^20.2.2: version "20.2.9" From 49b7ddafa8de6bd91cbd66a659c19460d34ccef7 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sat, 14 Oct 2023 22:10:28 -0400 Subject: [PATCH 05/74] Fix language sync issue in LangPrefDropdown --- .../pages/Public/Components/LangPrefDropdown.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 6906d7f6..458cce02 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import { Box, Menu, MenuItem, Fade, Button, Typography } from "@mui/material"; import LanguageIcon from "@mui/icons-material/Language"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; @@ -13,6 +13,16 @@ const LangPrefDropdown = () => { const [langDisplay, setLangDisplay] = useState("English"); // ["English", "Portuguese", "Spanish", "French"] const [currentLanguage, setCurrentLanguage] = useState(language); + useEffect(() => { + const langMap = { + en: "English", + pt: "Portuguese", + es: "Spanish", + fr: "French", + }; + setLangDisplay(langMap[language]); + }, [language]); + const open = Boolean(anchorMore); const handleClickMore = (event) => { @@ -64,7 +74,9 @@ const LangPrefDropdown = () => { handleChangeLanguage(langsPref[lang], lang)} + onClick={() => ( + handleChangeLanguage(langsPref[lang], lang), handleCloseMore() + )} > {lang} From 38811e80d8b8d454baf522dda76226052d43011a Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sat, 14 Oct 2023 22:21:26 -0400 Subject: [PATCH 06/74] Public hero section - button translation --- frontend/front/src/pages/Public/Locale/en.json | 3 ++- frontend/front/src/pages/Public/Locale/es.json | 3 ++- frontend/front/src/pages/Public/Locale/fr.json | 3 ++- frontend/front/src/pages/Public/Locale/pt.json | 3 ++- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 4 +++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/frontend/front/src/pages/Public/Locale/en.json b/frontend/front/src/pages/Public/Locale/en.json index c017cd94..623f5231 100644 --- a/frontend/front/src/pages/Public/Locale/en.json +++ b/frontend/front/src/pages/Public/Locale/en.json @@ -6,7 +6,8 @@ "titleBold": "heating and cooling bills", "text1": "You may be able to get incentives to install a heat pump, a type of heating and cooling system that can ", "textBold": "lower your utility bills", - "text2": "." + "text2": ".", + "button": "Benefits of heat pumps" } } } diff --git a/frontend/front/src/pages/Public/Locale/es.json b/frontend/front/src/pages/Public/Locale/es.json index 9ab44ced..3840b43c 100644 --- a/frontend/front/src/pages/Public/Locale/es.json +++ b/frontend/front/src/pages/Public/Locale/es.json @@ -6,7 +6,8 @@ "titleBold": "FACTURAS DE CALEFACCIÓN Y REFRIGERACIÓN", "text1": "Es posible que pueda obtener incentivos para instalar una bomba de calor, un tipo de sistema de calefacción y refrigeración que puede ", "textBold": "reducir sus facturas de servicios", - "text2": "." + "text2": ".", + "button": "Ventajas de las bombas de calor" } } } diff --git a/frontend/front/src/pages/Public/Locale/fr.json b/frontend/front/src/pages/Public/Locale/fr.json index 0382e95c..b238cfae 100644 --- a/frontend/front/src/pages/Public/Locale/fr.json +++ b/frontend/front/src/pages/Public/Locale/fr.json @@ -6,7 +6,8 @@ "titleBold": "FACTURES DE CHAUFFAGE ET DE REFROIDISSEMENT", "text1": "", "textBold": "", - "text2": "." + "text2": ".", + "button": "Avantages des pompes à chaleur" } } } diff --git a/frontend/front/src/pages/Public/Locale/pt.json b/frontend/front/src/pages/Public/Locale/pt.json index 759e2036..1504e2f4 100644 --- a/frontend/front/src/pages/Public/Locale/pt.json +++ b/frontend/front/src/pages/Public/Locale/pt.json @@ -6,7 +6,8 @@ "titleBold": "contas de aquecimento e resfriamento", "text1": "Você pode receber incentivos para instalar uma bomba de calor, um tipo de sistema de aquecimento e resfriamento que pode ", "textBold": "reduzir suas contas de serviços públicos", - "text2": "." + "text2": ".", + "button": "Benefícios das bombas de calor" } } } diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 42833563..d72504ea 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -1,5 +1,6 @@ import React from "react"; import { styled } from "@mui/material/styles"; +import { useTranslation } from "react-i18next"; import { Typography, Box, Button } from "@mui/material"; import AnimatedBox from "../../Components/AnimatedBox"; import TitleHero from "../../Components/Typography/TitleHero"; @@ -48,6 +49,7 @@ const HeroPage = ({ text2, image, }) => { + const { t } = useTranslation(); return ( @@ -112,7 +114,7 @@ const HeroPage = ({ }, }} > - Benefits of heat pumps + {t("public-home.hero.button")} From 9808abf80d77836874b6148963ddea8f17dfead9 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sat, 14 Oct 2023 23:51:46 -0400 Subject: [PATCH 07/74] Implemented query 'langPref' and set languages in localStorage --- .../Public/Components/LangPrefDropdown.js | 57 ++++++++++++++----- .../front/src/pages/Public/Locale/en.json | 5 ++ .../front/src/pages/Public/Locale/es.json | 5 ++ .../front/src/pages/Public/Locale/fr.json | 9 ++- .../front/src/pages/Public/Locale/pt.json | 5 ++ 5 files changed, 65 insertions(+), 16 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 458cce02..64a55fbd 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -10,16 +10,28 @@ const LangPrefDropdown = () => { } = useTranslation(); const [anchorMore, setAnchorMore] = useState(null); - const [langDisplay, setLangDisplay] = useState("English"); // ["English", "Portuguese", "Spanish", "French"] + const [langDisplay, setLangDisplay] = useState("English"); const [currentLanguage, setCurrentLanguage] = useState(language); useEffect(() => { + // Read the langPref from localStorage + const storedLangPref = localStorage.getItem("langPref"); + + // If it exists, set the language + if (storedLangPref) { + changeLanguage(storedLangPref); + } else { + // If it doesn't exist, set it to 'en-us' + localStorage.setItem("langPref", "en-us"); + } + const langMap = { - en: "English", - pt: "Portuguese", - es: "Spanish", - fr: "French", + "en-us": "English", + "pt-br": "Portuguese", + "es-xm": "Spanish", + "fr-ht": "French", }; + setLangDisplay(langMap[language]); }, [language]); @@ -32,16 +44,30 @@ const LangPrefDropdown = () => { const handleCloseMore = () => setAnchorMore(null); const langsPref = { - English: "en", - Portuguese: "pt", - Spanish: "es", - French: "fr", + English: "en-us", + Portuguese: "pt-br", + Spanish: "es-xm", + French: "fr-ht", }; const handleChangeLanguage = (lang, display) => { setCurrentLanguage(lang); changeLanguage(lang); - console.log(lang); + + // Update localStorage + localStorage.setItem("langPref", lang); + + // Update URL query param + if (lang !== "en-us") { + const url = new URL(window.location.href); + url.searchParams.set("langPref", lang); + window.history.replaceState({}, "", url); + } else { + const url = new URL(window.location.href); + url.searchParams.delete("langPref"); + window.history.replaceState({}, "", url); + } + setLangDisplay(display); }; @@ -56,7 +82,9 @@ const LangPrefDropdown = () => { endIcon={} sx={{ color: "var(--color-text-1)" }} > - {langDisplay} + + {langDisplay === undefined ? "English" : langDisplay} + { ( - handleChangeLanguage(langsPref[lang], lang), handleCloseMore() - )} + onClick={() => { + handleChangeLanguage(langsPref[lang], lang); + handleCloseMore(); + }} > {lang} diff --git a/frontend/front/src/pages/Public/Locale/en.json b/frontend/front/src/pages/Public/Locale/en.json index 623f5231..3849a3c2 100644 --- a/frontend/front/src/pages/Public/Locale/en.json +++ b/frontend/front/src/pages/Public/Locale/en.json @@ -8,6 +8,11 @@ "textBold": "lower your utility bills", "text2": ".", "button": "Benefits of heat pumps" + }, + "cardLinksSection": { + "title": "What is a heat pump?", + "paragraph": "A heat pump is an energy-efficient system that heats your home in the winter, and cools your home in the summer.", + "button": "Take the survey" } } } diff --git a/frontend/front/src/pages/Public/Locale/es.json b/frontend/front/src/pages/Public/Locale/es.json index 3840b43c..09d55a4b 100644 --- a/frontend/front/src/pages/Public/Locale/es.json +++ b/frontend/front/src/pages/Public/Locale/es.json @@ -8,6 +8,11 @@ "textBold": "reducir sus facturas de servicios", "text2": ".", "button": "Ventajas de las bombas de calor" + }, + "cardLinksSection": { + "title": "", + "paragraph": "", + "button": "" } } } diff --git a/frontend/front/src/pages/Public/Locale/fr.json b/frontend/front/src/pages/Public/Locale/fr.json index b238cfae..30a52c45 100644 --- a/frontend/front/src/pages/Public/Locale/fr.json +++ b/frontend/front/src/pages/Public/Locale/fr.json @@ -4,10 +4,15 @@ "hero": { "title": "Économisez de l'argent sur vos ", "titleBold": "FACTURES DE CHAUFFAGE ET DE REFROIDISSEMENT", - "text1": "", - "textBold": "", + "text1": "Vous pourrez peut-être obtenir des incitations pour installer une pompe à chaleur, un type de système de chauffage et de refroidissement qui peut ", + "textBold": "réduire vos factures de services publics", "text2": ".", "button": "Avantages des pompes à chaleur" + }, + "cardLinksSection": { + "title": "", + "paragraph": "", + "button": "" } } } diff --git a/frontend/front/src/pages/Public/Locale/pt.json b/frontend/front/src/pages/Public/Locale/pt.json index 1504e2f4..200fbd55 100644 --- a/frontend/front/src/pages/Public/Locale/pt.json +++ b/frontend/front/src/pages/Public/Locale/pt.json @@ -8,6 +8,11 @@ "textBold": "reduzir suas contas de serviços públicos", "text2": ".", "button": "Benefícios das bombas de calor" + }, + "cardLinksSection": { + "title": "", + "paragraph": "", + "button": "" } } } From e06e90e198a64d91bd69ea1ea518b2d91bc9bd5a Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 15 Oct 2023 00:16:40 -0400 Subject: [PATCH 08/74] Fixed CSS issues related to mobile view --- .../front/src/pages/Public/Layout/Navbar.js | 20 ++++++++++--------- .../src/pages/Public/Pages/Home/HeroPage.js | 5 ++++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index 2b725320..f3c9fc34 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -141,7 +141,7 @@ function Navbar(props) { const drawer = ( - + diff --git a/frontend/front/src/pages/Public/Pages/Home/Home.js b/frontend/front/src/pages/Public/Pages/Home/Home.js index 1552225f..2493e415 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Home.js +++ b/frontend/front/src/pages/Public/Pages/Home/Home.js @@ -30,11 +30,11 @@ const Home = () => { {/* HERO */} diff --git a/frontend/front/src/pages/Public/Pages/Home/Partners.js b/frontend/front/src/pages/Public/Pages/Home/Partners.js index 78c52ed8..00275ad3 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Partners.js +++ b/frontend/front/src/pages/Public/Pages/Home/Partners.js @@ -69,7 +69,7 @@ const Partners = () => { textAlign: "center", }} > - + @@ -100,14 +100,14 @@ const Partners = () => { sx={{ color: "var(--color-text-3)" }} textAlign={{ xs: "center", sm: "left" }} > - {t("public-home.partners.text1")}{" "} + {t("public.home.partners.text1")}{" "} - {t("public-home.partners.link")} + {t("public.home.partners.link")} . diff --git a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js index f3026011..5894e353 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js +++ b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js @@ -43,7 +43,7 @@ const Testimonial = () => { > - + {isSmallerThanMd && ( @@ -64,13 +64,13 @@ const Testimonial = () => { - {t("public-home.testimonials.text1")} + {t("public.home.testimonials.text1")} - {t("public-home.testimonials.text2")} + {t("public.home.testimonials.text2")} Date: Sun, 15 Oct 2023 13:42:28 -0400 Subject: [PATCH 12/74] fixed CSS issues related to translations and some translations on the public-home --- .../Public/.vscode/i18n-ally-reviews.yml | 72 +++++++++++++------ .../Public/Pages/Home/CardBenefitsSection.js | 59 ++++++++------- .../Public/Pages/Home/CardLinksSection.js | 13 ++-- .../src/pages/Public/locales/es-419.json | 2 +- .../front/src/pages/Public/locales/fr-HT.json | 2 +- .../front/src/pages/Public/locales/pt-BR.json | 2 +- 6 files changed, 97 insertions(+), 53 deletions(-) diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index 00e19d7f..36353720 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -9,10 +9,10 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: eednowkKNoroUqVJOoSSO - comment: "" + comment: '' suggestion: Saiba mais type: request_change - time: "2023-10-15T15:17:05.195Z" + time: '2023-10-15T15:17:05.195Z' resolved: true public.home.testimonials.text1: locales: @@ -22,30 +22,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: r0yBD1yt3vfVUVIjTJEJa - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T15:24:54.763Z" + time: '2023-10-15T15:24:54.763Z' fr-HT: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: M9MU4w717b8jp7lAKZBRt - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T15:26:42.348Z" + time: '2023-10-15T15:26:42.348Z' es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: IWqlWzXqAFgcniYfYW4Qe - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T15:26:52.244Z" + time: '2023-10-15T15:26:52.244Z' public.home.partners.link: locales: pt-BR: @@ -54,27 +54,59 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: HbG6QoRz9krU44i4w4dX7 - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T16:16:09.131Z" + time: '2023-10-15T16:16:09.131Z' es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: KygrtysPUza-9LpMK2d0s - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T16:16:37.215Z" + time: '2023-10-15T16:16:37.215Z' fr-HT: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: vTqhaZNmLgeSLUR32hGar - comment: "" - suggestion: "" + comment: '' + suggestion: '' type: approve - time: "2023-10-15T16:17:08.933Z" + time: '2023-10-15T16:17:08.933Z' + public.home.cardBenefitsSection.subtitle1: + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: a_2gXdc8bj6h9qbCDYtQL + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T17:03:53.330Z' + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: 8GlhLo8p4vt_pV0RtOV87 + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T17:04:35.669Z' + fr-HT: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: Jyk03o31X1nsvKyRqf8W5 + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T17:04:53.209Z' diff --git a/frontend/front/src/pages/Public/Pages/Home/CardBenefitsSection.js b/frontend/front/src/pages/Public/Pages/Home/CardBenefitsSection.js index 4258bb3b..42686f63 100644 --- a/frontend/front/src/pages/Public/Pages/Home/CardBenefitsSection.js +++ b/frontend/front/src/pages/Public/Pages/Home/CardBenefitsSection.js @@ -10,6 +10,7 @@ import { Stack, Container, } from "@mui/material"; +import { Link as MuiLink } from "@mui/material"; import { Link } from "react-router-dom"; import { styled } from "@mui/material/styles"; import AnimatedBox from "../../Components/AnimatedBox"; @@ -87,25 +88,25 @@ const CardBenefitsSection = () => { sx={{ color: "var(--color-text-3)", display: "inline-block" }} > {t("public.home.cardBenefitsSection.subtitle1")}  - - - + - {t("public.home.cardBenefitsSection.link")} - - + textUnderlineOffset: "2px", + ":hover": { + textDecorationColor: "var(--color-text-3)", + textDecorationThickness: "1px", + }, + }} + > + {t("public.home.cardBenefitsSection.link")} + + + {cards.map((card, index) => ( @@ -123,17 +124,25 @@ const CardBenefitsSection = () => { > + > + + - + + diff --git a/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js b/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js index bc85e603..ec11323c 100644 --- a/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js +++ b/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js @@ -87,8 +87,10 @@ const CardLinksSection = () => { width: { xs: "100%", sm: "300px" }, minWidth: "260px", maxWidth: { xs: "468px", sm: "680px" }, - backgroundSize: "cover", - height: "auto", + // backgroundSize: "cover", + objectFit: { xs: "cover", sm: "cover" }, + objectPosition: "50% 50%", + height: { xs: "250px", sm: "auto" }, }} image={detail.image} alt={detail.title} @@ -99,7 +101,8 @@ const CardLinksSection = () => { { diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index d3022156..11cddc2f 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -31,7 +31,7 @@ }, "cardBenefitsSection": { "link": "Beneficios de las bombas de calor", - "subtitle1": "Obtenga más información sobre el", + "subtitle1": "Obtenga más información sobre los", "heading1": "Beneficios de las bombas de calor", "item1": { "title": "Facturas de energía más bajas", diff --git a/frontend/front/src/pages/Public/locales/fr-HT.json b/frontend/front/src/pages/Public/locales/fr-HT.json index b452d9cd..e44cb61a 100644 --- a/frontend/front/src/pages/Public/locales/fr-HT.json +++ b/frontend/front/src/pages/Public/locales/fr-HT.json @@ -31,7 +31,7 @@ }, "cardBenefitsSection": { "link": "Avantages des pompes à chaleur", - "subtitle1": "En savoir plus sur le", + "subtitle1": "En savoir plus sur les", "heading1": "Avantages des pompes à chaleur", "item1": { "title": "Des factures d’énergie réduites", diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index af22b10f..888a3c3c 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -31,7 +31,7 @@ }, "cardBenefitsSection": { "link": "Benefícios das bombas de calor", - "subtitle1": "Saiba mais sobre o", + "subtitle1": "Saiba mais sobre os", "heading1": "Benefícios das bombas de calor", "item1": { "title": "Contas de energia mais baixas", From 81329cf0ce76f9c58389dbe8ab4b4448c3d01dd3 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 15:40:00 -0400 Subject: [PATCH 13/74] Translated the navbar using i18n, append ?langPref=lg-lg for public URLs, and fix related CSS issues --- .../Public/.vscode/i18n-ally-reviews.yml | 80 ++++ .../src/pages/Public/.vscode/settings.json | 4 +- .../Public/Components/Button/ButtonGetPump.js | 5 +- .../Public/Components/LangPrefDropdown.js | 47 +- .../front/src/pages/Public/Layout/Navbar.js | 435 +++++++++--------- frontend/front/src/pages/Public/Libs/i18n.js | 7 +- .../src/pages/Public/Pages/Home/HeroPage.js | 4 +- .../pages/Public/Pages/Home/Testimonial.js | 8 +- .../front/src/pages/Public/locales/en.json | 29 +- .../src/pages/Public/locales/es-419.json | 28 +- .../front/src/pages/Public/locales/fr-HT.json | 60 --- .../front/src/pages/Public/locales/ht.json | 86 ++++ .../front/src/pages/Public/locales/pt-BR.json | 28 +- 13 files changed, 510 insertions(+), 311 deletions(-) delete mode 100644 frontend/front/src/pages/Public/locales/fr-HT.json create mode 100644 frontend/front/src/pages/Public/locales/ht.json diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index 36353720..5209b55a 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -110,3 +110,83 @@ reviews: suggestion: '' type: approve time: '2023-10-15T17:04:53.209Z' + public.layout.navbar.learn-more.learn-more: + locales: + fr-HT: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: cSW3cx_3ciQGYkY1Vts67 + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T18:06:10.356Z' + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: NlXB3vBEjw1rZ-jmM66ss + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T18:06:13.734Z' + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: CG2sibg7DZo4BRkbScorC + comment: '' + suggestion: '' + type: approve + time: '2023-10-15T18:07:47.471Z' + public.layout.navbar.learn-more.value: + description: Using machine learn to translate to others languages - google translation + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: 8C1Q539GxPtFnMOA2Wi1U + comment: '' + suggestion: Saiba Mais + type: request_change + time: '2023-10-16T16:35:44.382Z' + resolved: true + public.home.testimonials.button: + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: F2lE6iWvKSfxJQCEUUfEv + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T17:54:11.252Z' + public.components.locales.english: + locales: + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: GBWstVZdSKUsqOgNvSSce + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T19:26:11.738Z' + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: g9ptZ4S5g_VYYA0_u2pEK + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T19:26:38.810Z' diff --git a/frontend/front/src/pages/Public/.vscode/settings.json b/frontend/front/src/pages/Public/.vscode/settings.json index 9b9a7976..2fe8ace0 100644 --- a/frontend/front/src/pages/Public/.vscode/settings.json +++ b/frontend/front/src/pages/Public/.vscode/settings.json @@ -1,6 +1,4 @@ { "i18n-ally.localesPaths": ["locales"], "i18n-ally.keystyle": "nested" -} // { -// "i18n-ally.localesPaths": ["locales"] -// } +} diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js index 4f6f98ca..90f76609 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js @@ -1,8 +1,11 @@ import { useEffect } from "react"; +import { useTranslation } from "react-i18next"; import { Button } from "@mui/material"; import { Link } from "react-router-dom"; const ButtonGetPumnp = ({ variant }) => { + const { t } = useTranslation(); + useEffect(() => { window.scrollTo(0, 0); }, []); @@ -29,7 +32,7 @@ const ButtonGetPumnp = ({ variant }) => { }, }} > - GET A HEAT PUMP + {t("public.components.button-get-heat-pump")} ); diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 36684eca..c5ca3417 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -6,6 +6,7 @@ import { useTranslation } from "react-i18next"; const LangPrefDropdown = () => { const { + t, i18n: { changeLanguage, language }, } = useTranslation(); @@ -13,6 +14,13 @@ const LangPrefDropdown = () => { const [langDisplay, setLangDisplay] = useState("English"); const [currentLanguage, setCurrentLanguage] = useState(language); + const langMap = { + "en-us": t("public.components.locales.english"), + "pt-br": t("public.components.locales.portuguese"), + "es-us": t("public.components.locales.spanish"), + "ht-cr": "Creole (Haiti)", + }; + useEffect(() => { // Read the langPref from localStorage const storedLangPref = localStorage.getItem("langPref"); @@ -25,13 +33,6 @@ const LangPrefDropdown = () => { localStorage.setItem("langPref", "en-us"); } - const langMap = { - "en-us": "English", - "pt-br": "Portuguese", - "es-416": "Spanish", - "fr-ht": "French", - }; - setLangDisplay(langMap[language]); }, [language]); @@ -43,13 +44,6 @@ const LangPrefDropdown = () => { const handleCloseMore = () => setAnchorMore(null); - const langsPref = { - English: "en-us", - Portuguese: "pt-br", - Spanish: "es-416", - French: "fr-ht", - }; - const handleChangeLanguage = (lang, display) => { setCurrentLanguage(lang); changeLanguage(lang); @@ -58,17 +52,18 @@ const LangPrefDropdown = () => { localStorage.setItem("langPref", lang); // Update URL query param - if (lang !== "en-us") { - const url = new URL(window.location.href); - url.searchParams.set("langPref", lang); - window.history.replaceState({}, "", url); - } else { - const url = new URL(window.location.href); - url.searchParams.delete("langPref"); + const url = new URL(window.location.href); + + if (url.pathname.includes("public")) { + if (lang !== "en-us") { + url.searchParams.set("langPref", lang); + } else { + url.searchParams.delete("langPref"); + } window.history.replaceState({}, "", url); } - setLangDisplay(display); + setLangDisplay(langMap[lang]); }; return ( @@ -83,7 +78,7 @@ const LangPrefDropdown = () => { sx={{ color: "var(--color-text-1)" }} > - {langDisplay === undefined ? "English" : langDisplay} + {langDisplay === undefined ? "English" : language} @@ -98,16 +93,16 @@ const LangPrefDropdown = () => { TransitionComponent={Fade} > - {Object.keys(langsPref).map((lang) => ( + {Object.keys(langMap).map((lang) => ( { - handleChangeLanguage(langsPref[lang], lang); + handleChangeLanguage(lang, langMap[lang]); handleCloseMore(); }} > - {lang} + {langMap[lang]} ))} diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index 92f636b3..c03d9fd2 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -1,5 +1,6 @@ import { useState } from "react"; import { Link, useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; import MenuIcon from "@mui/icons-material/Menu"; import { AppBar, @@ -20,7 +21,6 @@ import { Collapse, Fade, } from "@mui/material"; -import { styled } from "@mui/material/styles"; import CloseIcon from "@mui/icons-material/Close"; import ButtonGetPump from "../Components/Button/ButtonGetPump"; import logoHeatPump from "../../../assets/images/bhpa-logos/bhpa-logo300px.gif"; @@ -29,44 +29,44 @@ import ExpandLess from "@mui/icons-material/ExpandLess"; import ExpandMore from "@mui/icons-material/ExpandMore"; import LangPrefDropdown from "../Components/LangPrefDropdown"; -// import { red, green, blue, yellow, orange } from "@mui/material/colors"; -const Root = styled("div")(({ theme }) => ({ - // padding: theme.spacing(1), - // [theme.breakpoints.up("xs")]: { - // backgroundColor: yellow[500], - // }, - // [theme.breakpoints.up("sm")]: { - // backgroundColor: red[500], - // }, - // [theme.breakpoints.up("md")]: { - // backgroundColor: blue[500], - // }, - // [theme.breakpoints.up("lg")]: { - // backgroundColor: green[500], - // }, - // [theme.breakpoints.up("xl")]: { - // backgroundColor: orange[500], - // }, -})); - const drawerWidth = "100%"; -const navbarItems = { - SURVEY: { link: "survey" }, - "Learn More": { - "Benefits of Heat Pumps": { link: "benefits-heat-pump" }, - "About Heat Pumps": { link: "about-heat-pump" }, - Testimonials: { link: "testimonial-section" }, - "About BHPA": { link: "about-us" }, - }, - "GET INVOLVED": { link: "get-involved" }, -}; - function Navbar(props) { const [anchorMore, setAnchorMore] = useState(null); const [mobileOpen, setMobileOpen] = useState(false); const [openMoreMobile, setOpenMoreMobile] = useState(false); + const { t } = useTranslation(); + + const navbarItems = { + SURVEY: { link: "survey", value: t("public.layout.navbar.survey") }, + "Learn More": { + value: t("public.layout.navbar.learn-more.value"), + items: { + "Benefits of Heat Pumps": { + link: "benefits-heat-pump", + value: t("public.layout.navbar.learn-more.items.benefits-heat-pumps"), + }, + "About Heat Pumps": { + link: "about-heat-pump", + value: t("public.layout.navbar.learn-more.items.about-us"), + }, + Testimonials: { + link: "testimonial-section", + value: t("public.layout.navbar.learn-more.items.testimonials"), + }, + "About BHPA": { + link: "about-us", + value: t("public.layout.navbar.learn-more.items.about-bhpa"), + }, + }, + }, + getInvolved: { + link: "get-involved", + value: t("public.layout.navbar.get-involved"), + }, + }; + const { window } = props; const navigate = useNavigate(); @@ -108,7 +108,9 @@ function Navbar(props) { endIcon={} sx={{ color: "var(--color-text-1)" }} > - {item} + + {navbarItems[item].value || item} + - {Object.keys(navbarItems[item]).map((subItem, index) => ( - { - handleNavigation(navbarItems[item][subItem].link); - handleCloseMore(); - }} - > - {subItem} - - ))} + {Object.keys(navbarItems["Learn More"].items).map( + (subItem, index) => ( + { + handleNavigation( + navbarItems["Learn More"].items[subItem].link + ); + handleCloseMore(); + }} + > + {t(navbarItems["Learn More"].items[subItem].value)} + + ) + )} @@ -176,7 +182,7 @@ function Navbar(props) { - {item} + {navbarItems[item].value.toUpperCase()} @@ -246,43 +252,56 @@ function Navbar(props) { fontWeight: "500", }} > - {item} + {navbarItems[item].value.toUpperCase()} - {Object.keys(navbarItems[item]).map((subItem, index) => ( - - - { - handleNavigation(navbarItems[item][subItem].link); - handleCloseMore(); - setOpenMoreMobile(false); // Close the dropdown menu (if open) in the drawer when an item is selected - }} - > - - ( + + - {subItem} - - - - - - ))} + { + handleNavigation( + navbarItems[item].items[subItemKey].link + ); + handleCloseMore(); + setOpenMoreMobile(false); + }} + > + + + {t( + navbarItems[item].items[subItemKey] + .value + )} + + + + + + ) + ) + : null} )} @@ -305,148 +324,144 @@ function Navbar(props) { window !== undefined ? () => window().document.body : undefined; return ( - - + - - - + + + + + + + + + + {Object.keys(navbarItems).map((item) => ( +
+ {item === "Learn More" ? ( + desktopNavLink(navbarItems, item) + ) : ( + + )} +
+ ))} +
+
+
+ + {/* Removed this button from the navbar */} + - - - - - - - - - {Object.keys(navbarItems).map((item) => ( -
- {item === "Learn More" ? ( - desktopNavLink(navbarItems, item) - ) : ( - - )} -
- ))} -
-
-
+ +
- {/* Removed this button from the navbar */} - - - + + + + + + - - - - - - - + - - -
-
-
+ /> + + + +
- - - {drawer} - - + + + {drawer} + -
+
); } diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index a8390f50..31f3f22d 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -3,17 +3,18 @@ import { initReactI18next } from "react-i18next"; import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; -import frTranslations from "../locales/fr-HT.json"; +import htTranslations from "../locales/ht.json"; +// configuration for i18next library i18next .use(initReactI18next) // passes i18next down to react-i18next .init({ debug: true, resources: { en: { translation: { ...enTranslations } }, // English - United States - pt: { translation: { ...ptTranslations } }, // Portuguese - Brazil + "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil es: { translation: { ...esTranslations } }, // Spanish - Latin America - fr: { translation: { ...frTranslations } }, // French - Haiti + ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti }, lng: "en", // default language }); diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 3d381052..7a220f82 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -104,9 +104,7 @@ const HeroPage = ({ to="/public/benefits-heat-pump" onClick={() => window.scrollTo(0, 0)} sx={{ - width: "100%", - minWidth: 200, - maxWidth: 350, + width: "auto", height: "50px", color: "var(--color-text-2)", background: "var(--bgColor-3)", diff --git a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js index 5894e353..63246c27 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js +++ b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js @@ -67,14 +67,18 @@ const Testimonial = () => { {t("public.home.testimonials.text1")} - + {t("public.home.testimonials.text2")} diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index cf6b537a..9b6e069d 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -23,7 +23,10 @@ }, "testimonials": { "heading1": "Testimonials", - "text1": "“Wow, it blew my mind. Normally the bill is anywhere from $400 to $500, and it was more like $200. I was like, let me look at that again!”" + "text1": "“Wow, it blew my mind. Normally the bill is anywhere from $400 to $500, and it was more like $200. I was like, let me look at that again!”", + "text2": "Stories from other Massachusetts residents about their heat pumps.", + "button": "read more", + "text3": "Resident" }, "cardBenefitsSection": { "heading1": "Benefits of Heat Pumps", @@ -51,6 +54,30 @@ "text1": "The Boston Heat Pump Accelerator is an initiative of the Urban League of Eastern Massachusetts, in partnership with local and national organizations.", "link": "Learn more" } + }, + "layout": { + "navbar": { + "survey": "survey", + "learn-more": { + "value": "Learn More", + "items": { + "benefits-heat-pumps": "Benefits of Heat Pumps", + "about-us": "About Heat Pumps", + "testimonials": "Testimonials", + "about-bhpa": "About BHPA" + } + }, + "get-involved": "GET INVOLVED" + } + }, + "components": { + "button-get-heat-pump": "GET A HEAT PUMP", + "locales": { + "english": "English (United States)", + "portuguese": "Portuguese (Brazil)", + "spanish": "Spanish (Latin America)", + "creole": "Creole (Haiti)" + } } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 11cddc2f..deee53b1 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -27,7 +27,9 @@ "testimonials": { "heading1": "Testimonios", "text1": "“Guau, me ha deslumbrado la mente. Normalmente, la factura oscila entre $400 y $500, y era más bien de $200. Yo estaba así, ¡déjeme volver a verlo!”", - "text2": "Historias de otros residentes de Massachusetts sobre sus bombas de calor." + "text2": "Historias de otros residentes de Massachusetts sobre sus bombas de calor.", + "button": "leer más", + "text3": "Residente" }, "cardBenefitsSection": { "link": "Beneficios de las bombas de calor", @@ -55,6 +57,30 @@ "text1": "El Acelerador de Bombas de Calor de Boston es una iniciativa de la Urban League of Eastern Massachusetts, en asociación con organizaciones locales y nacionales.", "link": "Más información" } + }, + "layout": { + "navbar": { + "survey": "encuesta", + "learn-more": { + "value": "Aprende más", + "items": { + "testimonials": "Testimonios", + "about-us": "Acerca de las bombas de calor", + "about-bhpa": "Acerca de BHPA", + "benefits-heat-pumps": "Beneficios de las bombas de calor" + } + }, + "get-involved": "INVOLUCRARSE" + } + }, + "components": { + "button-get-heat-pump": "CONSIGUE UNA BOMBA DE CALOR", + "locales": { + "english": "Inglés (Estados Unidos)", + "portuguese": "Portugués (Brasil)", + "spanish": "Español (Latinoamérica)", + "creole": "criollo (Haití)" + } } } } diff --git a/frontend/front/src/pages/Public/locales/fr-HT.json b/frontend/front/src/pages/Public/locales/fr-HT.json deleted file mode 100644 index e44cb61a..00000000 --- a/frontend/front/src/pages/Public/locales/fr-HT.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "public": { - "home": { - "hero": { - "title": "Économisez de l'argent sur vos ", - "titleBold": "FACTURES DE CHAUFFAGE ET DE REFROIDISSEMENT", - "text1": "Vous pourrez peut-être obtenir des incitations pour installer une pompe à chaleur, un type de système de chauffage et de refroidissement qui peut ", - "link": "réduire vos factures de services publics", - "text2": ".", - "button": "Avantages des pompes à chaleur" - }, - "cardLinksSection": { - "title": "Qu'est-ce qu'une pompe à chaleur ?", - "paragraph": "Une thermopompe est un système économe en énergie qui chauffe votre maison en hiver et la rafraîchit en été.", - "button": "Participer à l'enquête", - "item1": { - "title": "Qu'est-ce qu'une pompe à chaleur ?", - "paragraph": "Une thermopompe est un système économe en énergie qui chauffe votre maison en hiver et la rafraîchit en été.", - "button": "Participer à l'enquête" - }, - "item2": { - "title": "À propos de nous", - "paragraph": "Le Boston Heat Pump Accelerator est une initiative de l’Urban League of Eastern Massachusetts, en partenariat avec des organisations locales et nationales.", - "button": "En Savoir Plus" - } - }, - "testimonials": { - "heading1": "Témoignages", - "text1": "« Waouh, ça m’a fait sauter d’esprit. Normalement, la facture va de400 $ à500$, et elle s’élevait plus à200$. J’étais comme, permettez-moi de revoir ça ! »", - "text2": "Histoires d'autres résidents du Massachusetts sur leurs pompes à chaleur." - }, - "cardBenefitsSection": { - "link": "Avantages des pompes à chaleur", - "subtitle1": "En savoir plus sur les", - "heading1": "Avantages des pompes à chaleur", - "item1": { - "title": "Des factures d’énergie réduites", - "text1": "Les pompes à chaleur sont si économes en énergie qu'elles peuvent entraîner des économies significatives sur les factures mensuelles de services publics et réduire les coûts d'entretien, de réparation et de remplacement." - }, - "item2": { - "text1": "La même thermopompe qui aide à rafraîchir en été peut ensuite fournir de la chaleur en hiver. Il s'agit d'un système efficace, silencieux et pratique, offrant un confort dans toute la maison.", - "title": "Confort à la maison" - }, - "item3": { - "title": "Des communautés plus fortes", - "text1": "En contribuant à réduire les factures de services publics, les pompes à chaleur peuvent réduire le coût de la vie des résidents, ce qui peut à son tour aider les résidents vivant avec des revenus fixes ou faibles à rester plus longtemps dans leur logement, renforçant ainsi les communautés." - }, - "item4": { - "title": "Un air plus pur", - "text1": "Les pompes à chaleur utilisent de l'électricité qui peut être produite par des sources renouvelables. \nÀ mesure que le réseau devient plus vert, les pompes à chaleur deviennent beaucoup plus écologiques que les systèmes alimentés au gaz ou au mazout. \nAvec une seule unité « alimentée verte » qui chauffe et refroidit, l’empreinte carbone de votre maison est aussi faible que possible." - } - }, - "partners": { - "heading1": "Nos partenaires", - "text1": "Le Boston Heat Pump Accelerator est une initiative de l’Urban League of Eastern Massachusetts, en partenariat avec des organisations locales et nationales.", - "link": "En savoir plus" - } - } - } -} diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json new file mode 100644 index 00000000..5432b234 --- /dev/null +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -0,0 +1,86 @@ +{ + "public": { + "home": { + "hero": { + "title": "Ekonomize lajan sou ou", + "titleBold": "bòdwo chofaj ak refwadisman", + "text1": "Ou ka kapab jwenn ankourajman pou enstale yon ponp chalè, yon kalite sistèm chofaj ak refwadisman ki kapab", + "link": "bese bòdwo sèvis piblik ou yo", + "text2": ".", + "button": "Benefis nan ponp chalè" + }, + "cardLinksSection": { + "title": "", + "paragraph": "", + "button": "", + "item1": { + "title": "Ki sa ki se yon ponp chalè?", + "paragraph": "Yon ponp chalè se yon sistèm enèji efikas ki chofe kay ou nan sezon fredi a, ak refwadi kay ou an ete.", + "button": "Pran sondaj la" + }, + "item2": { + "title": "Sou nou", + "paragraph": "Boston Heat Pump Accelerator se yon inisyativ Lig Urban nan Lès Massachusetts, an patenarya ak òganizasyon lokal ak nasyonal.", + "button": "Aprann plis" + } + }, + "testimonials": { + "heading1": "Temwayaj", + "text1": "\"Wow, sa te soufle tèt mwen. \nNòmalman bòdwo a se nenpòt kote nan $ 400 a $ 500, epi li te plis tankou $ 200. \nMwen te tankou, kite m 'gade sa ankò!\"", + "text2": "Istwa lòt rezidan Massachusetts sou ponp chalè yo.", + "button": "li piplis", + "text3": "Rezidan" + }, + "cardBenefitsSection": { + "link": "Benefis ki genyen nan ponp chalè", + "subtitle1": "Aprann plis sou la", + "heading1": "Benefis ki genyen nan ponp chalè", + "item1": { + "title": "Pi ba bòdwo enèji", + "text1": "Ponp chalè yo tèlman efikas nan enèji ke yo ka mennen nan gwo ekonomi sou bòdwo sèvis piblik chak mwa ak pi ba pri antretyen, reparasyon ak ranplasman." + }, + "item2": { + "text1": "Menm ponp chalè a ki ede refwadi nan sezon lete an ka bay chalè nan sezon fredi a - li se yon sistèm ki efikas, trankil, ak pratik, bay konfò nan tout kay la.", + "title": "Konfò lakay ou" + }, + "item3": { + "title": "Pi fò kominote yo", + "text1": "Lè yo ede bese bòdwo sèvis piblik yo, ponp chalè yo kapab bese pri lavi pou rezidan yo, sa k ap ede rezidan k ap viv sou revni fiks oswa ki ba yo rete lakay yo pi lontan, sa ki ka ranfòse kominote yo." + }, + "item4": { + "title": "Pi pwòp lè", + "text1": "Ponp chalè sèvi ak elektrisite ki ka pwodwi pa sous renouvlab. \nKòm kadriyaj la vin pi vèt, ponp chalè vin pi plis ekolojik pase sistèm gaz oswa lwil oliv. \nAvèk yon sèl inite \"vèt ki mache ak pisans\" ki chofe ak refwadi, anprint kabòn lakay ou a osi ba ke li kapab ale." + } + }, + "partners": { + "heading1": "Patnè nou yo", + "text1": "Boston Heat Pump Accelerator se yon inisyativ Lig Urban nan Lès Massachusetts, an patenarya ak òganizasyon lokal ak nasyonal.", + "link": "Aprann plis" + } + }, + "layout": { + "navbar": { + "survey": "sondaj", + "learn-more": { + "value": "Aprann plis", + "items": { + "testimonials": "Temwayaj", + "about-bhpa": "Konsènan BHPA", + "benefits-heat-pumps": "Benefis ki genyen nan ponp chalè", + "about-us": "Konsènan Ponp Chalè" + } + }, + "get-involved": "PATISIPE" + } + }, + "components": { + "button-get-heat-pump": "JWENN YON PONP CHALÈ", + "locales": { + "english": "Angle (Etazini)", + "portuguese": "Pòtigè (Brezil)", + "spanish": "Panyòl (Amerik Latin)", + "creole": "Kreyòl (Ayiti)" + } + } + } +} diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 888a3c3c..e249bb06 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -27,7 +27,9 @@ "testimonials": { "heading1": "Depoimentos", "text1": "“Uau, me surpreendeu. Normalmente, a conta varia de US$400 a US$500, e era mais parecido com US$200. Eu pensei: \"Deixe-me olhar para isso novamente!\"", - "text2": "Histórias de outros residentes de Massachusetts sobre as suas bombas de calor." + "text2": "Histórias de outros residentes de Massachusetts sobre as suas bombas de calor.", + "button": "Leia Mais", + "text3": "Residente" }, "cardBenefitsSection": { "link": "Benefícios das bombas de calor", @@ -55,6 +57,30 @@ "text1": "O Boston Heat Pump Accelerator é uma iniciativa da Urban League of Eastern Massachusetts, em parceria com organizações locais e nacionais.", "link": "Saiba mais" } + }, + "layout": { + "navbar": { + "survey": "enquete", + "learn-more": { + "value": "Saiba Mais", + "items": { + "testimonials": "Depoimentos", + "about-us": "Sobre bombas de calor", + "about-bhpa": "Sobre a BHPA", + "benefits-heat-pumps": "Benefícios das bombas de calor" + } + }, + "get-involved": "ENVOLVER-SE" + } + }, + "components": { + "button-get-heat-pump": "OBTENHA UMA BOMBA DE CALOR", + "locales": { + "english": "Inglês (Estados Unidos)", + "portuguese": "Português (Brasil)", + "spanish": "Espanhol (América Latina)", + "creole": "Crioulo (Haiti)" + } } } } From 9e36e815f4bd1b491a9a8d249d6648f489287440 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 15:45:01 -0400 Subject: [PATCH 14/74] Add flag icons to language dropdown --- .../front/src/pages/Public/Components/LangPrefDropdown.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index c5ca3417..d8fbbb4a 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -15,10 +15,10 @@ const LangPrefDropdown = () => { const [currentLanguage, setCurrentLanguage] = useState(language); const langMap = { - "en-us": t("public.components.locales.english"), - "pt-br": t("public.components.locales.portuguese"), - "es-us": t("public.components.locales.spanish"), - "ht-cr": "Creole (Haiti)", + "en-us": `🇺🇸 ${t("public.components.locales.english")}`, + "pt-br": `🇧🇷 ${t("public.components.locales.portuguese")}`, + "es-us": `🇪🇸 ${t("public.components.locales.spanish")}`, + "ht-cr": `🇭🇹 ${t("public.components.locales.creole")}`, }; useEffect(() => { From a9183e3e7cc233001173fac1dd1bfe9e5de080f2 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 15:56:23 -0400 Subject: [PATCH 15/74] LangPrefDropdown - fix related CSS issues --- .../front/src/pages/Public/Components/LangPrefDropdown.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index d8fbbb4a..21bcff84 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -91,6 +91,14 @@ const LangPrefDropdown = () => { open={open} onClose={handleCloseMore} TransitionComponent={Fade} + anchorOrigin={{ + vertical: "bottom", + horizontal: "center", + }} + transformOrigin={{ + vertical: "top", + horizontal: "center", + }} > {Object.keys(langMap).map((lang) => ( From 4683845e3c60ccb4253e12c6182f04db13ddc6e6 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 16:58:22 -0400 Subject: [PATCH 16/74] Translated the footer using i18n and fix related CSS issues --- .../Public/.vscode/i18n-ally-reviews.yml | 74 ++++++++++++++++++- .../Public/Components/Button/ButtonGetPump.js | 4 +- .../Public/Components/LangPrefDropdown.js | 8 +- .../front/src/pages/Public/Layout/Footer.js | 35 +++++---- .../front/src/pages/Public/Layout/Navbar.js | 14 ++-- .../src/pages/Public/Pages/Home/HeroPage.js | 2 +- .../front/src/pages/Public/locales/en.json | 37 +++++----- .../src/pages/Public/locales/es-419.json | 41 +++++----- .../front/src/pages/Public/locales/ht.json | 39 +++++----- .../front/src/pages/Public/locales/pt-BR.json | 41 +++++----- 10 files changed, 190 insertions(+), 105 deletions(-) diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index 5209b55a..c538427c 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -110,7 +110,7 @@ reviews: suggestion: '' type: approve time: '2023-10-15T17:04:53.209Z' - public.layout.navbar.learn-more.learn-more: + public.global-labels.learn-more.learn-more: locales: fr-HT: comments: @@ -142,7 +142,7 @@ reviews: suggestion: '' type: approve time: '2023-10-15T18:07:47.471Z' - public.layout.navbar.learn-more.value: + public.global-labels.learn-more.value: description: Using machine learn to translate to others languages - google translation locales: pt-BR: @@ -156,6 +156,14 @@ reviews: type: request_change time: '2023-10-16T16:35:44.382Z' resolved: true + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: wGVABJNYs5Ng6uQYeJ4F8 + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:31:42.001Z' public.home.testimonials.button: locales: pt-BR: @@ -168,7 +176,7 @@ reviews: suggestion: '' type: approve time: '2023-10-16T17:54:11.252Z' - public.components.locales.english: + public.global-labels.locales.english: locales: es-419: comments: @@ -190,3 +198,63 @@ reviews: suggestion: '' type: approve time: '2023-10-16T19:26:38.810Z' + public.footer.privacy-and-data-policy: + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: 0WNq5iCz7WMgnzJ7izqWt + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:43:27.061Z' + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: P-r7htOjXYxqzK1hv2yjc + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:45:00.387Z' + ht: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: UOIQXJfwJsCSaAwb-X36R + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:44:23.268Z' + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: 2ejpIP0qlM0GJJlm9CiGg + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:45:52.060Z' + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: Mvdl-2rBhSK38Zo-trUo0 + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:45:24.484Z' + public.footer.member-login: + locales: + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: Q6wTGlNjNEtUGLb-kdvnZ + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T20:55:56.927Z' diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js index 90f76609..6b06bc44 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { Button } from "@mui/material"; import { Link } from "react-router-dom"; -const ButtonGetPumnp = ({ variant }) => { +const ButtonGetPumnp = () => { const { t } = useTranslation(); useEffect(() => { @@ -32,7 +32,7 @@ const ButtonGetPumnp = ({ variant }) => { }, }} > - {t("public.components.button-get-heat-pump")} + {t("public.global-labels.button-get-heat-pump")} ); diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 21bcff84..fad6f434 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -15,10 +15,10 @@ const LangPrefDropdown = () => { const [currentLanguage, setCurrentLanguage] = useState(language); const langMap = { - "en-us": `🇺🇸 ${t("public.components.locales.english")}`, - "pt-br": `🇧🇷 ${t("public.components.locales.portuguese")}`, - "es-us": `🇪🇸 ${t("public.components.locales.spanish")}`, - "ht-cr": `🇭🇹 ${t("public.components.locales.creole")}`, + "en-us": `🇺🇸 ${t("public.global-labels.locales.english")}`, + "pt-br": `🇧🇷 ${t("public.global-labels.locales.portuguese")}`, + "es-us": `🇪🇸 ${t("public.global-labels.locales.spanish")}`, + "ht-cr": `🇭🇹 ${t("public.global-labels.locales.creole")}`, }; useEffect(() => { diff --git a/frontend/front/src/pages/Public/Layout/Footer.js b/frontend/front/src/pages/Public/Layout/Footer.js index 58086ca7..eb3b5923 100644 --- a/frontend/front/src/pages/Public/Layout/Footer.js +++ b/frontend/front/src/pages/Public/Layout/Footer.js @@ -1,5 +1,5 @@ import * as routes from "../../../routing/routes"; - +import { useTranslation } from "react-i18next"; import { Box, Divider, @@ -17,16 +17,19 @@ import ButtonGetPump from "../Components/Button/ButtonGetPump"; import ButtonWhite from "../Components/Button/ButtonWhite"; import EmailIcon from "@mui/icons-material/Email"; import LockOutlinedIcon from "@mui/icons-material/LockOutlined"; -// import PermPhoneMsgIcon from "@mui/icons-material/PermPhoneMsg"; import logoHeatPump from "../../../assets/images/bhpa-logos/bhpa-logo300px.png"; import { styled } from "@mui/material/styles"; const footerItems = { - "About BHPA": { link: "about-us" }, - "About Heat Pumps": { link: "about-heat-pump" }, - "Benefits of Heat Pumps": { link: "benefits-heat-pump" }, - "Get Involved": { link: "get-involved" }, - Testimonials: { link: "testimonial-section" }, + "public.global-labels.learn-more.items.about-bhpa": { link: "about-us" }, + "public.global-labels.learn-more.items.about-us": { link: "about-heat-pump" }, + "public.global-labels.learn-more.items.benefits-heat-pumps": { + link: "benefits-heat-pump", + }, + "public.global-labels.get-involved": { link: "get-involved" }, + "public.global-labels.learn-more.items.testimonials": { + link: "testimonial-section", + }, }; const FooterWrapper = styled("div")(({ theme }) => ({ @@ -46,6 +49,7 @@ const Footer = () => { const navigate = useNavigate(); const currentYear = new Date().getFullYear(); + const { t } = useTranslation(); return ( @@ -97,7 +101,7 @@ const Footer = () => { > - Learn More + {t("public.global-labels.learn-more.value")} {Object.keys(footerItems).map((item) => ( @@ -134,12 +138,13 @@ const Footer = () => { } > @@ -162,7 +167,7 @@ const Footer = () => { > - Legal + {t("public.footer.legal")} @@ -178,7 +183,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > { > <> - Contact Us + {t("public.footer.contact-us")} {/* { > - Member Login + {t("public.footer.member-login")} @@ -284,7 +289,7 @@ const Footer = () => { > - Member Login + {t("public.footer.member-login")} @@ -315,7 +320,7 @@ const Footer = () => { Copyright © {currentYear} | Boston Heat Pump Accelerator. {` `} - All Rights Reserved. + {t("public.global-labels.all-rights-reserved")} diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index c03d9fd2..83398591 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -39,31 +39,31 @@ function Navbar(props) { const { t } = useTranslation(); const navbarItems = { - SURVEY: { link: "survey", value: t("public.layout.navbar.survey") }, + SURVEY: { link: "survey", value: t("public.global-labels.survey") }, "Learn More": { - value: t("public.layout.navbar.learn-more.value"), + value: t("public.global-labels.learn-more.value"), items: { "Benefits of Heat Pumps": { link: "benefits-heat-pump", - value: t("public.layout.navbar.learn-more.items.benefits-heat-pumps"), + value: t("public.global-labels.learn-more.items.benefits-heat-pumps"), }, "About Heat Pumps": { link: "about-heat-pump", - value: t("public.layout.navbar.learn-more.items.about-us"), + value: t("public.global-labels.learn-more.items.about-us"), }, Testimonials: { link: "testimonial-section", - value: t("public.layout.navbar.learn-more.items.testimonials"), + value: t("public.global-labels.learn-more.items.testimonials"), }, "About BHPA": { link: "about-us", - value: t("public.layout.navbar.learn-more.items.about-bhpa"), + value: t("public.global-labels.learn-more.items.about-bhpa"), }, }, }, getInvolved: { link: "get-involved", - value: t("public.layout.navbar.get-involved"), + value: t("public.global-labels.get-involved"), }, }; diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 7a220f82..d31462d3 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -29,7 +29,7 @@ const HeroWrapper = styled("div")(({ theme, image }) => ({ }, "& .text-overlay": { margin: "0 auto", - minWidth: "100vw", + // minWidth: "100vw", minHeight: "350px", top: "143px", left: 0, diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index 9b6e069d..86a0bef3 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -55,29 +55,32 @@ "link": "Learn more" } }, - "layout": { - "navbar": { - "survey": "survey", - "learn-more": { - "value": "Learn More", - "items": { - "benefits-heat-pumps": "Benefits of Heat Pumps", - "about-us": "About Heat Pumps", - "testimonials": "Testimonials", - "about-bhpa": "About BHPA" - } - }, - "get-involved": "GET INVOLVED" - } - }, - "components": { + "global-labels": { + "survey": "survey", + "learn-more": { + "value": "Learn More", + "items": { + "benefits-heat-pumps": "Benefits of Heat Pumps", + "about-us": "About Heat Pumps", + "testimonials": "Testimonials", + "about-bhpa": "About BHPA" + } + }, + "get-involved": "Get Involved", "button-get-heat-pump": "GET A HEAT PUMP", "locales": { "english": "English (United States)", "portuguese": "Portuguese (Brazil)", "spanish": "Spanish (Latin America)", "creole": "Creole (Haiti)" - } + }, + "all-rights-reserved": "All Rights Reserved." + }, + "footer": { + "legal": "Legal", + "privacy-and-data-policy": "Privacy & Data Policy", + "contact-us": "Contact Us", + "member-login": "Member Login" } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index deee53b1..781b8f9d 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -58,29 +58,32 @@ "link": "Más información" } }, - "layout": { - "navbar": { - "survey": "encuesta", - "learn-more": { - "value": "Aprende más", - "items": { - "testimonials": "Testimonios", - "about-us": "Acerca de las bombas de calor", - "about-bhpa": "Acerca de BHPA", - "benefits-heat-pumps": "Beneficios de las bombas de calor" - } - }, - "get-involved": "INVOLUCRARSE" - } - }, - "components": { - "button-get-heat-pump": "CONSIGUE UNA BOMBA DE CALOR", + "global-labels": { + "survey": "encuesta", + "learn-more": { + "value": "Aprende más", + "items": { + "benefits-heat-pumps": "Beneficios de las bombas de calor", + "about-us": "Acerca de las bombas de calor", + "testimonials": "Testimonios", + "about-bhpa": "Acerca de BHPA" + } + }, + "get-involved": "Involucrarse", "locales": { - "english": "Inglés (Estados Unidos)", + "english": "Inglés Estados Unidos)", "portuguese": "Portugués (Brasil)", "spanish": "Español (Latinoamérica)", "creole": "criollo (Haití)" - } + }, + "button-get-heat-pump": "CONSIGUE UNA BOMBA DE CALOR", + "all-rights-reserved": "Reservados todos los derechos." + }, + "footer": { + "legal": "Legal", + "privacy-and-data-policy": "\nPolítica de Privacidad y Datos", + "contact-us": "Contáctenos", + "member-login": "Acceso de miembro" } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index 5432b234..ebe2fe09 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -58,29 +58,32 @@ "link": "Aprann plis" } }, - "layout": { - "navbar": { - "survey": "sondaj", - "learn-more": { - "value": "Aprann plis", - "items": { - "testimonials": "Temwayaj", - "about-bhpa": "Konsènan BHPA", - "benefits-heat-pumps": "Benefis ki genyen nan ponp chalè", - "about-us": "Konsènan Ponp Chalè" - } - }, - "get-involved": "PATISIPE" - } - }, - "components": { - "button-get-heat-pump": "JWENN YON PONP CHALÈ", + "global-labels": { + "survey": "sondaj", + "learn-more": { + "value": "Aprann plis", + "items": { + "benefits-heat-pumps": "Benefis ki genyen nan ponp chalè", + "about-us": "Konsènan Ponp Chalè", + "testimonials": "Temwayaj", + "about-bhpa": "Konsènan BHPA" + } + }, + "get-involved": "Patisipe", "locales": { "english": "Angle (Etazini)", "portuguese": "Pòtigè (Brezil)", "spanish": "Panyòl (Amerik Latin)", "creole": "Kreyòl (Ayiti)" - } + }, + "button-get-heat-pump": "JWENN YON PONP CHALÈ", + "all-rights-reserved": "Tout dwa rezève." + }, + "footer": { + "legal": "Legal", + "privacy-and-data-policy": "Politik Privasite ak Donee", + "contact-us": "Kontakte nou", + "member-login": "Login manm" } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index e249bb06..7eab179a 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -58,29 +58,32 @@ "link": "Saiba mais" } }, - "layout": { - "navbar": { - "survey": "enquete", - "learn-more": { - "value": "Saiba Mais", - "items": { - "testimonials": "Depoimentos", - "about-us": "Sobre bombas de calor", - "about-bhpa": "Sobre a BHPA", - "benefits-heat-pumps": "Benefícios das bombas de calor" - } - }, - "get-involved": "ENVOLVER-SE" - } - }, - "components": { - "button-get-heat-pump": "OBTENHA UMA BOMBA DE CALOR", + "global-labels": { + "survey": "enquete", + "learn-more": { + "value": "Saiba mais", + "items": { + "benefits-heat-pumps": "Benefícios das bombas de calor", + "about-us": "Sobre bombas de calor", + "testimonials": "Depoimentos", + "about-bhpa": "Sobre a BHPA" + } + }, + "get-involved": "Envolver-se", "locales": { - "english": "Inglês (Estados Unidos)", + "english": "Inglês dos Estados Unidos)", "portuguese": "Português (Brasil)", "spanish": "Espanhol (América Latina)", "creole": "Crioulo (Haiti)" - } + }, + "button-get-heat-pump": "OBTENHA UMA BOMBA DE CALOR", + "all-rights-reserved": "Todos os direitos reservados." + }, + "footer": { + "legal": "Jurídico", + "privacy-and-data-policy": "\nPolítica de Privacidade e Dados", + "contact-us": "Contate-nos", + "member-login": "Acesso de membro" } } } From 32005785d98c6be619e280fdafd9bc1d383f2d14 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 17:04:21 -0400 Subject: [PATCH 17/74] Translated the Survey page using i18n --- .../front/src/pages/Public/Pages/SurveyPage.js | 14 ++++++++++---- frontend/front/src/pages/Public/locales/en.json | 4 ++++ .../front/src/pages/Public/locales/es-419.json | 4 ++++ frontend/front/src/pages/Public/locales/ht.json | 4 ++++ frontend/front/src/pages/Public/locales/pt-BR.json | 4 ++++ 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/SurveyPage.js b/frontend/front/src/pages/Public/Pages/SurveyPage.js index 14156a03..7884f00a 100644 --- a/frontend/front/src/pages/Public/Pages/SurveyPage.js +++ b/frontend/front/src/pages/Public/Pages/SurveyPage.js @@ -1,3 +1,4 @@ +import { useTranslation } from "react-i18next"; import { Alert, Box, Container, Snackbar, Stack } from "@mui/material"; import { RECAPTCHA_ACTION_PUBLIC_SURVEY, @@ -27,6 +28,8 @@ const STEP_THANKS = "PHASE_THANKS"; * This page should handle all API calls so that component switching is easier to control */ export const SurveyPage = () => { + const { t } = useTranslation(); + const getReCaptchaToken = useGetReCAPTCHAToken( RECAPTCHA_ACTION_PUBLIC_SURVEY ); @@ -151,14 +154,17 @@ export const SurveyPage = () => { minHeight: "calc(100vh - 520px)", }} > - + {publicSurveyEnabled ? ( pageContent() ) : ( -
-

Public survey is under construction!

-
+ +

{t("public.survey.under-construction")}

+
)}
diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index 86a0bef3..1973ffd7 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -81,6 +81,10 @@ "privacy-and-data-policy": "Privacy & Data Policy", "contact-us": "Contact Us", "member-login": "Member Login" + }, + "survey": { + "heading1BlueBgGround": "Take the Survey", + "under-construction": "Public survey is under construction!" } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 781b8f9d..35b77bc4 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -84,6 +84,10 @@ "privacy-and-data-policy": "\nPolítica de Privacidad y Datos", "contact-us": "Contáctenos", "member-login": "Acceso de miembro" + }, + "survey": { + "heading1BlueBgGround": "Realice la encuesta", + "under-construction": "¡La encuesta pública está en construcción!" } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index ebe2fe09..4bd4e105 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -84,6 +84,10 @@ "privacy-and-data-policy": "Politik Privasite ak Donee", "contact-us": "Kontakte nou", "member-login": "Login manm" + }, + "survey": { + "heading1BlueBgGround": "Pran Sondaj la", + "under-construction": "Sondaj piblik an konstriksyon!" } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 7eab179a..84220f96 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -84,6 +84,10 @@ "privacy-and-data-policy": "\nPolítica de Privacidade e Dados", "contact-us": "Contate-nos", "member-login": "Acesso de membro" + }, + "survey": { + "heading1BlueBgGround": "Faça a pesquisa", + "under-construction": "A pesquisa pública está em construção!" } } } From 34a3378975eb35c5f2b53d7da807d121ea240513 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 18:47:12 -0400 Subject: [PATCH 18/74] Translated the Benefits Heat Pumps page using i18n --- .../Public/.vscode/i18n-ally-reviews.yml | 44 +++++++ .../Typography/Heading1BlueBgGround.js | 1 + .../pages/Public/Pages/BenefitsHeatPumps.js | 119 ++++++++++-------- .../src/pages/Public/Pages/Home/HeroPage.js | 1 + .../front/src/pages/Public/locales/en.json | 29 ++++- .../src/pages/Public/locales/es-419.json | 29 ++++- .../front/src/pages/Public/locales/ht.json | 29 ++++- .../front/src/pages/Public/locales/pt-BR.json | 29 ++++- 8 files changed, 223 insertions(+), 58 deletions(-) diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index c538427c..20abff49 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -258,3 +258,47 @@ reviews: suggestion: '' type: approve time: '2023-10-16T20:55:56.927Z' + public.benefits-heat-pump.text2: + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: uWsVO3VUJzQ5vLsZB8HwW + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T22:42:24.795Z' + ht: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: TT5QzNS5bGUJPwxnp2bHA + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T22:43:07.437Z' + es-419: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: uHX7yK6V0595EOnzzlbi8 + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T22:43:16.320Z' + public.benefits-heat-pump.text3: + locales: + ht: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: 342jM5AMjuemch-QDVetP + comment: '' + suggestion: '' + type: approve + time: '2023-10-16T22:44:32.924Z' diff --git a/frontend/front/src/pages/Public/Components/Typography/Heading1BlueBgGround.js b/frontend/front/src/pages/Public/Components/Typography/Heading1BlueBgGround.js index d323bf58..bf0b0870 100644 --- a/frontend/front/src/pages/Public/Components/Typography/Heading1BlueBgGround.js +++ b/frontend/front/src/pages/Public/Components/Typography/Heading1BlueBgGround.js @@ -21,6 +21,7 @@ function Heading1BlueBgGround({ text }) { fontWeight: "600", color: "var(--color-text-2)", textShadow: "1px 1px 1px var(--color-text-5)", + textTransform: "capitalize", }} > {text} diff --git a/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js b/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js index 19d5d821..0037615e 100644 --- a/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js +++ b/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js @@ -1,4 +1,5 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import { Box, Typography, @@ -19,44 +20,45 @@ import heatIcon from "../../../assets/images/Icons/heat.png"; import ArrowRightAltIcon from "@mui/icons-material/ArrowRightAlt"; import ButtonDarkBlue from "../Components/Button/ButtonDarkBlue"; -const cardBenefits = [ - { - icon: moneyIcon, - title: "Lower utility bills", - body: "Air source heat pumps (ASHPs) can reduce electricity usage for heating by up to 50% compared to electrical furnaces and baseboard heaters (", - bodyLink: - "https://www.amerenmissourisavings.com/hvac-air-source-heat-pump-education-flyer/", - body2: - "). For cooling, ASHPs are roughly equivalent to “central air conditioning” and far more efficient than window AC units. Together, this can translate into homeowner savings of 20%-40% off of their annual heating and cooling bills. To compare your system and to see how much you could save, ", - link: "https://www.masssave.com/residential/heating-comparison-calculator", - }, - { - icon: snowSunIcon, - title: "Better Heating & Cooling", - body: "Heat pumps are an excellent way to heat and cool your home. They’re nearly silent, draw less electricity, and they are continuous: heat pumps’ continuous, low-level operation provides constant heating or cooling, eliminating the blasts of hot or cold that legacy systems usually create. To learn more about ASHP operation and benefits, ", - bodyLink: "", - link: "https://goclean.masscec.com/clean-energy-solutions/air-source-heat-pumps", - }, - { - icon: communityIcon, - title: "Stronger Communities", - body: "Boston residents want to stay in their homes and keep their communities strong, even while facing challenges from rising costs. Switching to heat pumps can lower utility costs, reducing the financial challenge of staying in the community. By also adding active cooling capacity, ASHPs also improve the “housing resiliency” of entire neighborhoods as annual temperatures rise. With both energy bills and temperatures on the rise, housing resiliency is more important than ever to empower communities to stay strong and stay together. To learn more, ", - bodyLink: "", - link: "https://www.energy.gov/policy/articles/heat-pumps-keep-homes-warm-and-bills-low-winter", - }, - { - icon: heatIcon, - title: "Lower Carbon Emissions", - body: "Heat pumps are highly efficient heating and cooling systems that are electrically-powered. As such, they become “cleaner” whenever the source of their electric power becomes cleaner. Gas or oil fueled heating/cooling cannot benefit in the same way. How much of a difference will switching to ASHPs make in your case? Find specifics on the climate impact of a switch to heat pumps, ", - bodyLink: "", - link: "https://goclean.masscec.com/clean-energy-solutions/", - }, -]; - const BenefitsHeatPumps = () => { const theme = useTheme(); const isSmallerThanSm = useMediaQuery(theme.breakpoints.down("sm")); + const { t } = useTranslation(); + + const cardBenefits = [ + { + icon: moneyIcon, + title: t("public.benefits-heat-pump.cardBenefits.item1.title"), + body: t("public.benefits-heat-pump.cardBenefits.item1.body1"), + bodyLink: + "https://www.amerenmissourisavings.com/hvac-air-source-heat-pump-education-flyer/", + body2: `). ${t("public.benefits-heat-pump.cardBenefits.item1.body2")}`, + link: "https://www.masssave.com/residential/heating-comparison-calculator", + }, + { + icon: snowSunIcon, + title: t("public.benefits-heat-pump.cardBenefits.item2.title"), + body: t("public.benefits-heat-pump.cardBenefits.item2.body1"), + bodyLink: "", + link: "https://goclean.masscec.com/clean-energy-solutions/air-source-heat-pumps", + }, + { + icon: communityIcon, + title: t("public.benefits-heat-pump.cardBenefits.item3.title"), + body: t("public.benefits-heat-pump.cardBenefits.item3.body1"), + bodyLink: "", + link: "https://www.energy.gov/policy/articles/heat-pumps-keep-homes-warm-and-bills-low-winter", + }, + { + icon: heatIcon, + title: t("public.benefits-heat-pump.cardBenefits.item4.title"), + body: t("public.benefits-heat-pump.cardBenefits.item4.body1"), + bodyLink: "", + link: "https://goclean.masscec.com/clean-energy-solutions/", + }, + ]; + return ( { minHeight: "calc(100vh - 520px)", }} > - + @@ -112,27 +116,30 @@ const BenefitsHeatPumps = () => { textDecorationColor: "var(--color-text-3)", }} > - source + {t("public.global-labels.source")} {card.body2} )} {card.link !== "" && ( - - click here. - + + + {t("public.global-labels.click-here")} + + . + )} @@ -148,13 +155,14 @@ const BenefitsHeatPumps = () => { > {isSmallerThanSm ? ( - + ) : ( - We want to hear your
opinions! + {t("public.benefits-heat-pump.text2")} +
{t("public.benefits-heat-pump.text3")} {
)}
- +
diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index d31462d3..47a58060 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -30,6 +30,7 @@ const HeroWrapper = styled("div")(({ theme, image }) => ({ "& .text-overlay": { margin: "0 auto", // minWidth: "100vw", + width: "calc(100vw - 18px)", minHeight: "350px", top: "143px", left: 0, diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index 1973ffd7..4f9aa1de 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -74,7 +74,10 @@ "spanish": "Spanish (Latin America)", "creole": "Creole (Haiti)" }, - "all-rights-reserved": "All Rights Reserved." + "all-rights-reserved": "All Rights Reserved.", + "source": "source", + "click-here": "click here", + "take-the-survey": "Take the survey" }, "footer": { "legal": "Legal", @@ -85,6 +88,30 @@ "survey": { "heading1BlueBgGround": "Take the Survey", "under-construction": "Public survey is under construction!" + }, + "benefits-heat-pump": { + "cardBenefits": { + "item1": { + "title": "Lower utility bills", + "body1": "Air source heat pumps (ASHPs) can reduce electricity usage for heating by up to 50% compared to electrical furnaces and baseboard heaters (", + "body2": "For cooling, ASHPs are roughly equivalent to “central air conditioning” and far more efficient than window AC units. Together, this can translate into homeowner savings of 20%-40% off of their annual heating and cooling bills. To compare your system and to see how much you could save. " + }, + "item2": { + "title": "Better Heating & Cooling", + "body1": "Heat pumps are an excellent way to heat and cool your home. They’re nearly silent, draw less electricity, and they are continuous: heat pumps’ continuous, low-level operation provides constant heating or cooling, eliminating the blasts of hot or cold that legacy systems usually create. To learn more about ASHP operation and benefits. " + }, + "item3": { + "title": "Stronger Communities", + "body1": "Boston residents want to stay in their homes and keep their communities strong, even while facing challenges from rising costs. Switching to heat pumps can lower utility costs, reducing the financial challenge of staying in the community. By also adding active cooling capacity, ASHPs also improve the “housing resiliency” of entire neighborhoods as annual temperatures rise. With both energy bills and temperatures on the rise, housing resiliency is more important than ever to empower communities to stay strong and stay together. To learn more. " + }, + "item4": { + "title": "Lower Carbon Emissions", + "body1": "Heat pumps are highly efficient heating and cooling systems that are electrically-powered. As such, they become “cleaner” whenever the source of their electric power becomes cleaner. Gas or oil fueled heating/cooling cannot benefit in the same way. How much of a difference will switching to ASHPs make in your case? Find specifics on the climate impact of a switch to heat pumps. " + } + }, + "text1": "We want to hear your opinions!", + "text2": "We want to hear your", + "text3": "opinions!" } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 35b77bc4..1842ef08 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -77,7 +77,10 @@ "creole": "criollo (Haití)" }, "button-get-heat-pump": "CONSIGUE UNA BOMBA DE CALOR", - "all-rights-reserved": "Reservados todos los derechos." + "all-rights-reserved": "Reservados todos los derechos.", + "source": "fuente", + "click-here": "haga clic aquí", + "take-the-survey": "Toma la encuesta" }, "footer": { "legal": "Legal", @@ -88,6 +91,30 @@ "survey": { "heading1BlueBgGround": "Realice la encuesta", "under-construction": "¡La encuesta pública está en construcción!" + }, + "benefits-heat-pump": { + "cardBenefits": { + "item1": { + "title": "Facturas de servicios públicos más bajas", + "body1": "Las bombas de calor de fuente de aire (ASHP) pueden reducir el uso de electricidad para calefacción hasta en un 50% en comparación con los hornos eléctricos y los calentadores de zócalo (", + "body2": "Para la refrigeración, los ASHP son aproximadamente equivalentes al \"aire acondicionado central\" y mucho más eficientes que las unidades de aire acondicionado de ventana. \nEn conjunto, esto puede traducirse en ahorros para los propietarios del 20 % al 40 % en sus facturas anuales de calefacción y refrigeración. \nPara comparar su sistema y ver cuánto podría ahorrar. " + }, + "item2": { + "title": "Mejor calefacción", + "body1": "Las bombas de calor son una excelente manera de calentar y enfriar su hogar. \nSon casi silenciosas, consumen menos electricidad y son continuas: el funcionamiento continuo y de bajo nivel de las bombas de calor proporciona calefacción o refrigeración constante, eliminando las ráfagas de calor o frío que suelen crear los sistemas heredados. \nPara obtener más información sobre el funcionamiento y los beneficios de ASHP. " + }, + "item3": { + "title": "Comunidades más fuertes", + "body1": "Los residentes de Boston quieren permanecer en sus hogares y mantener fuertes a sus comunidades, incluso cuando enfrentan los desafíos del aumento de los costos. \nCambiar a bombas de calor puede reducir los costos de servicios públicos, reduciendo el desafío financiero de permanecer en la comunidad. \nAl agregar también capacidad de enfriamiento activo, los ASHP también mejoran la “resiliencia de la vivienda” de vecindarios enteros a medida que aumentan las temperaturas anuales. \nCon el aumento de las facturas de energía y las temperaturas, la resiliencia de la vivienda es más importante que nunca para capacitar a las comunidades para que se mantengan fuertes y unidas. \nAprender más." + }, + "item4": { + "title": "Menores emisiones de carbono", + "body1": "Las bombas de calor son sistemas de calefacción y refrigeración altamente eficientes que funcionan con electricidad. \nComo tales, se vuelven “más limpios” cuando la fuente de su energía eléctrica se vuelve más limpia. \nLa calefacción/refrigeración alimentada por gas o petróleo no puede beneficiarse de la misma manera. \n¿Qué diferencia supondrá en su caso cambiar a ASHP? \nEncuentre detalles sobre el impacto climático de un cambio a bombas de calor. " + } + }, + "text1": "¡Queremos escuchar tus opiniones!", + "text2": "Queremos escuchar tus", + "text3": "opiniones!" } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index 4bd4e105..c7e38919 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -77,7 +77,10 @@ "creole": "Kreyòl (Ayiti)" }, "button-get-heat-pump": "JWENN YON PONP CHALÈ", - "all-rights-reserved": "Tout dwa rezève." + "all-rights-reserved": "Tout dwa rezève.", + "source": "sous", + "click-here": "klike la a", + "take-the-survey": "Pran sondaj la" }, "footer": { "legal": "Legal", @@ -88,6 +91,30 @@ "survey": { "heading1BlueBgGround": "Pran Sondaj la", "under-construction": "Sondaj piblik an konstriksyon!" + }, + "benefits-heat-pump": { + "cardBenefits": { + "item1": { + "title": "Pi ba bòdwo sèvis piblik yo", + "body1": "Ponp chalè sous lè (ASHPs) ka diminye itilizasyon elektrisite pou chofaj jiska 50% konpare ak founo elektrik ak aparèy chofaj plint (", + "body2": "Pou refwadisman, ASHP yo apeprè ekivalan a \"èkondisyone santral\" epi yo pi efikas pase inite AC fenèt yo. \nAnsanm, sa ka tradwi nan ekonomi pwopriyetè kay 20%-40% sou bòdwo anyèl chofaj ak refwadisman yo. \nPou konpare sistèm ou a ak wè konbyen lajan ou ta ka ekonomize. " + }, + "item2": { + "title": "Pi bon chofaj", + "body1": "Ponp chalè se yon fason ekselan pou chofe ak refwadi kay ou. \nYo prèske an silans, tire mwens elektrisite, epi yo kontinyèl: operasyon kontinyèl ponp chalè a ba-nivo bay chofaj oswa refwadisman konstan, elimine eksplozyon yo nan cho oswa frèt ke sistèm eritaj anjeneral kreye. \nPou aprann plis sou operasyon ASHP ak benefis yo. " + }, + "item3": { + "title": "Kominote ki pi fò", + "body1": "Moun ki abite Boston vle rete lakay yo epi kenbe kominote yo solid, menm lè yo fè fas ak defi ki soti nan ogmantasyon depans yo. \nChanje nan ponp chalè ka diminye depans sèvis piblik yo, diminye defi finansye pou rete nan kominote a. \nLè yo ajoute kapasite refwadisman aktif tou, ASHP yo amelyore tou \"rezistans lojman\" tout katye yo pandan tanperati anyèl yo ap monte. \nAk tou de bòdwo enèji ak tanperati a ap monte, rezistans lojman pi enpòtan pase tout tan pou pèmèt kominote yo rete djanm epi rete ansanm. \nPou aprann plis." + }, + "item4": { + "title": "Pi ba emisyon kabòn", + "body1": "Ponp chalè yo se sistèm chofaj ak refwadisman trè efikas ki mache ak elektrik. \nKòm sa yo, yo vin \"pi pwòp\" chak fwa sous enèji elektrik yo vin pi pwòp. \nGaz oswa lwil oliv chofaj/refwadisman pa ka benefisye nan menm fason an. \nKi diferans ki genyen lè w chanje nan ASHPs nan ka w la? \nJwenn spesifik sou enpak klima a nan yon chanjman nan ponp chalè. " + } + }, + "text1": "Nou vle tande opinyon ou!", + "text2": "Nou vle tande ", + "text3": "opinyon ou!" } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 84220f96..87a3dcbc 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -77,7 +77,10 @@ "creole": "Crioulo (Haiti)" }, "button-get-heat-pump": "OBTENHA UMA BOMBA DE CALOR", - "all-rights-reserved": "Todos os direitos reservados." + "all-rights-reserved": "Todos os direitos reservados.", + "source": "fonte", + "click-here": "Clique aqui", + "take-the-survey": "Faça a pesquisa" }, "footer": { "legal": "Jurídico", @@ -88,6 +91,30 @@ "survey": { "heading1BlueBgGround": "Faça a pesquisa", "under-construction": "A pesquisa pública está em construção!" + }, + "benefits-heat-pump": { + "cardBenefits": { + "item1": { + "title": "Contas de serviços públicos mais baixas", + "body1": "As bombas de calor de fonte de ar (ASHPs) podem reduzir o uso de eletricidade para aquecimento em até 50% em comparação com fornos elétricos e aquecedores de rodapé (", + "body2": "Para refrigeração, os ASHPs são aproximadamente equivalentes ao “ar condicionado central” e muito mais eficientes do que as unidades de AC de janela. \nJuntos, isso pode se traduzir em economias de 20% a 40% para os proprietários de suas contas anuais de aquecimento e resfriamento. \nPara comparar seu sistema e ver quanto você pode economizar. " + }, + "item2": { + "title": "Melhor aquecimento", + "body1": "As bombas de calor são uma excelente forma de aquecer e arrefecer a sua casa. \nSão quase silenciosas, consomem menos eletricidade e são contínuas: o funcionamento contínuo e de baixo nível das bombas de calor proporciona aquecimento ou arrefecimento constante, eliminando as rajadas de calor ou frio que os sistemas legados normalmente criam. \nPara saber mais sobre a operação e os benefícios do ASHP. " + }, + "item3": { + "title": "Comunidades mais fortes", + "body1": "Os residentes de Boston querem permanecer nas suas casas e manter as suas comunidades fortes, mesmo enfrentando desafios decorrentes do aumento dos custos. \nA mudança para bombas de calor pode reduzir os custos dos serviços públicos, reduzindo o desafio financeiro de permanecer na comunidade. \nAo adicionar também capacidade de refrigeração ativa, os ASHPs também melhoram a “resiliência habitacional” de bairros inteiros à medida que as temperaturas anuais aumentam. \nCom o aumento das contas de energia e das temperaturas, a resiliência da habitação é mais importante do que nunca para capacitar as comunidades a permanecerem fortes e unidas. \nAprender mais. " + }, + "item4": { + "title": "Menores emissões de carbono", + "body1": "As bombas de calor são sistemas de aquecimento e refrigeração altamente eficientes, alimentados eletricamente. \nComo tal, tornam-se “mais limpos” sempre que a fonte da sua energia eléctrica se torna mais limpa. \nO aquecimento/arrefecimento a gás ou a óleo não pode beneficiar da mesma forma. \nQuanta diferença a mudança para ASHPs fará no seu caso? \nEncontre detalhes sobre o impacto climático de uma mudança para bombas de calor. " + } + }, + "text1": "Queremos ouvir suas opiniões!", + "text2": "Queremos ouvir suas", + "text3": "opiniões!" } } } From c6ff7e1389cc817b95c109858d00c637248f8fa9 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 18:50:16 -0400 Subject: [PATCH 19/74] HeroPage - fixed CSS issues --- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 47a58060..5577c1da 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -29,8 +29,7 @@ const HeroWrapper = styled("div")(({ theme, image }) => ({ }, "& .text-overlay": { margin: "0 auto", - // minWidth: "100vw", - width: "calc(100vw - 18px)", + width: { xs: "100%", sm: "calc(100vw - 18px)" }, minHeight: "350px", top: "143px", left: 0, From 37b27ccd9c1f0aa9689b0f03fbcb50906a58de21 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 19:32:24 -0400 Subject: [PATCH 20/74] Fix ?langPref query param to only show on 'public' routes --- .../Public/Components/LangPrefDropdown.js | 53 +++++++++++++------ .../src/pages/Public/Pages/Home/HeroPage.js | 2 +- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index fad6f434..756b9924 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -1,4 +1,5 @@ import React, { useState, useEffect } from "react"; +import { useLocation } from "react-router-dom"; import { Box, Menu, MenuItem, Fade, Button, Typography } from "@mui/material"; import LanguageIcon from "@mui/icons-material/Language"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; @@ -13,6 +14,9 @@ const LangPrefDropdown = () => { const [anchorMore, setAnchorMore] = useState(null); const [langDisplay, setLangDisplay] = useState("English"); const [currentLanguage, setCurrentLanguage] = useState(language); + // const [isReloaded, setIsReloaded] = useState(false); + + const location = useLocation(); const langMap = { "en-us": `🇺🇸 ${t("public.global-labels.locales.english")}`, @@ -22,47 +26,66 @@ const LangPrefDropdown = () => { }; useEffect(() => { - // Read the langPref from localStorage - const storedLangPref = localStorage.getItem("langPref"); - - // If it exists, set the language - if (storedLangPref) { - changeLanguage(storedLangPref); - } else { - // If it doesn't exist, set it to 'en-us' - localStorage.setItem("langPref", "en-us"); + // Get query params from current URL + const params = new URLSearchParams(window.location.search); + let queryLang = params.get("langPref"); + // Check if current route is a 'public' route + const isPublicRoute = window.location.pathname.includes("public"); + + if (isPublicRoute) { + // Get language preference from localStorage or default to 'en-us' + queryLang = localStorage.getItem("langPref") || "en-us"; + const url = new URL(window.location.href); + + // Update or remove 'langPref' query param based on language + if (queryLang !== "en-us") { + url.searchParams.set("langPref", queryLang); + } else { + url.searchParams.delete("langPref"); + } + + // Update the browser history + window.history.replaceState({ path: url.toString() }, "", url.toString()); } - setLangDisplay(langMap[language]); - }, [language]); + // Update language state if queryLang is different + if (queryLang && queryLang !== currentLanguage) { + setCurrentLanguage(queryLang); + changeLanguage(queryLang); + localStorage.setItem("langPref", queryLang); + } + }, [location, currentLanguage]); + // Determine if the language menu should be open const open = Boolean(anchorMore); + // Handle click to open language menu const handleClickMore = (event) => { setAnchorMore(event.currentTarget); }; + // Close language menu const handleCloseMore = () => setAnchorMore(null); + // Change language and update localStorage and URL const handleChangeLanguage = (lang, display) => { setCurrentLanguage(lang); changeLanguage(lang); - - // Update localStorage localStorage.setItem("langPref", lang); - // Update URL query param const url = new URL(window.location.href); + // Update or remove 'langPref' query param based on route and language if (url.pathname.includes("public")) { if (lang !== "en-us") { url.searchParams.set("langPref", lang); } else { url.searchParams.delete("langPref"); } - window.history.replaceState({}, "", url); + window.history.replaceState({}, "", url.toString()); } + // Update displayed language setLangDisplay(langMap[lang]); }; diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 5577c1da..7387bec4 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -29,7 +29,7 @@ const HeroWrapper = styled("div")(({ theme, image }) => ({ }, "& .text-overlay": { margin: "0 auto", - width: { xs: "100%", sm: "calc(100vw - 18px)" }, + width: "100%", minHeight: "350px", top: "143px", left: 0, From a1bc7d131775c355d108392405a9113a297ffe88 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 19:49:27 -0400 Subject: [PATCH 21/74] Home page - fixed CSS issues --- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 2 +- frontend/front/src/pages/Public/Pages/Home/Partners.js | 1 - .../front/src/pages/Public/Pages/Home/Testimonial.js | 10 +++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 7387bec4..21e75514 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -68,7 +68,7 @@ const HeroPage = ({ }, }} > - + { container alignItems="center" justifyContent="space-around" - px={2} gap={2} > {partners.map((partner) => ( diff --git a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js index 63246c27..145f11be 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Testimonial.js +++ b/frontend/front/src/pages/Public/Pages/Home/Testimonial.js @@ -42,9 +42,9 @@ const Testimonial = () => { direction={{ xs: "reverse-column", md: "row" }} > - + - + {isSmallerThanMd && ( @@ -62,7 +62,7 @@ const Testimonial = () => { )} - + {t("public.home.testimonials.text1")} @@ -73,7 +73,7 @@ const Testimonial = () => { )}`} /> - + {t("public.home.testimonials.text2")} @@ -83,7 +83,7 @@ const Testimonial = () => { externalLink={true} /> - + {!isSmallerThanMd && ( From ef626b0a89246e1ea98d86804dbdd3096a97532c Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 16 Oct 2023 19:50:55 -0400 Subject: [PATCH 22/74] Home page - fixed CSS issues --- frontend/front/src/pages/Public/Components/LangPrefDropdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 756b9924..2dda1a7b 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -20,9 +20,9 @@ const LangPrefDropdown = () => { const langMap = { "en-us": `🇺🇸 ${t("public.global-labels.locales.english")}`, + "ht-cr": `🇭🇹 ${t("public.global-labels.locales.creole")}`, "pt-br": `🇧🇷 ${t("public.global-labels.locales.portuguese")}`, "es-us": `🇪🇸 ${t("public.global-labels.locales.spanish")}`, - "ht-cr": `🇭🇹 ${t("public.global-labels.locales.creole")}`, }; useEffect(() => { From 7721cd43e2ae42d5faea7df092952e45772d073e Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 13:51:00 -0400 Subject: [PATCH 23/74] Fix multiple ESLint issues, update langPref in localStorage, integrate i18next with LanguageDetector, and resolve CSS issues --- frontend/front/package.json | 2 + .../Public/.vscode/i18n-ally-reviews.yml | 164 +++++++++--------- .../Public/Components/LangPrefDropdown.js | 6 +- .../front/src/pages/Public/Layout/Footer.js | 64 +++---- .../front/src/pages/Public/Layout/Navbar.js | 101 ++++++----- frontend/front/src/pages/Public/Libs/i18n.js | 9 +- .../src/pages/Public/Pages/AboutUs/AboutUs.js | 2 +- .../pages/Public/Pages/BenefitsHeatPumps.js | 4 +- .../Public/Pages/Home/CardBenefitsSection.js | 34 ++-- .../Public/Pages/Home/CardLinksSection.js | 5 +- .../pages/Public/Pages/Home/Testimonial.js | 4 +- .../front/src/pages/Public/PublicContainer.js | 6 +- frontend/front/yarn.lock | 48 ++++- 13 files changed, 240 insertions(+), 209 deletions(-) diff --git a/frontend/front/package.json b/frontend/front/package.json index cea27385..79266cbf 100644 --- a/frontend/front/package.json +++ b/frontend/front/package.json @@ -19,6 +19,8 @@ "framer-motion": "^9.0.3", "generate-password-browser": "^1.1.0", "i18next": "^23.5.1", + "i18next-browser-languagedetector": "^7.1.0", + "i18next-http-backend": "^2.2.2", "jwt-decode": "^3.1.2", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index 20abff49..51ab547a 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -9,10 +9,10 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: eednowkKNoroUqVJOoSSO - comment: '' + comment: "" suggestion: Saiba mais type: request_change - time: '2023-10-15T15:17:05.195Z' + time: "2023-10-15T15:17:05.195Z" resolved: true public.home.testimonials.text1: locales: @@ -22,30 +22,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: r0yBD1yt3vfVUVIjTJEJa - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T15:24:54.763Z' + time: "2023-10-15T15:24:54.763Z" fr-HT: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: M9MU4w717b8jp7lAKZBRt - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T15:26:42.348Z' + time: "2023-10-15T15:26:42.348Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: IWqlWzXqAFgcniYfYW4Qe - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T15:26:52.244Z' + time: "2023-10-15T15:26:52.244Z" public.home.partners.link: locales: pt-BR: @@ -54,30 +54,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: HbG6QoRz9krU44i4w4dX7 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T16:16:09.131Z' + time: "2023-10-15T16:16:09.131Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: KygrtysPUza-9LpMK2d0s - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T16:16:37.215Z' + time: "2023-10-15T16:16:37.215Z" fr-HT: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: vTqhaZNmLgeSLUR32hGar - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T16:17:08.933Z' + time: "2023-10-15T16:17:08.933Z" public.home.cardBenefitsSection.subtitle1: locales: pt-BR: @@ -86,30 +86,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: a_2gXdc8bj6h9qbCDYtQL - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T17:03:53.330Z' + time: "2023-10-15T17:03:53.330Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: 8GlhLo8p4vt_pV0RtOV87 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T17:04:35.669Z' + time: "2023-10-15T17:04:35.669Z" fr-HT: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: Jyk03o31X1nsvKyRqf8W5 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T17:04:53.209Z' + time: "2023-10-15T17:04:53.209Z" public.global-labels.learn-more.learn-more: locales: fr-HT: @@ -118,30 +118,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: cSW3cx_3ciQGYkY1Vts67 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T18:06:10.356Z' + time: "2023-10-15T18:06:10.356Z" pt-BR: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: NlXB3vBEjw1rZ-jmM66ss - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T18:06:13.734Z' + time: "2023-10-15T18:06:13.734Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: CG2sibg7DZo4BRkbScorC - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-15T18:07:47.471Z' + time: "2023-10-15T18:07:47.471Z" public.global-labels.learn-more.value: description: Using machine learn to translate to others languages - google translation locales: @@ -151,19 +151,19 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: 8C1Q539GxPtFnMOA2Wi1U - comment: '' + comment: "" suggestion: Saiba Mais type: request_change - time: '2023-10-16T16:35:44.382Z' + time: "2023-10-16T16:35:44.382Z" resolved: true - user: name: thiagobadini email: thiagobardini@hotmail.com id: wGVABJNYs5Ng6uQYeJ4F8 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:31:42.001Z' + time: "2023-10-16T20:31:42.001Z" public.home.testimonials.button: locales: pt-BR: @@ -172,10 +172,10 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: F2lE6iWvKSfxJQCEUUfEv - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T17:54:11.252Z' + time: "2023-10-16T17:54:11.252Z" public.global-labels.locales.english: locales: es-419: @@ -184,20 +184,20 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: GBWstVZdSKUsqOgNvSSce - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T19:26:11.738Z' + time: "2023-10-16T19:26:11.738Z" pt-BR: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: g9ptZ4S5g_VYYA0_u2pEK - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T19:26:38.810Z' + time: "2023-10-16T19:26:38.810Z" public.footer.privacy-and-data-policy: locales: pt-BR: @@ -206,46 +206,46 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: 0WNq5iCz7WMgnzJ7izqWt - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:43:27.061Z' + time: "2023-10-16T20:43:27.061Z" - user: name: thiagobadini email: thiagobardini@hotmail.com id: P-r7htOjXYxqzK1hv2yjc - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:45:00.387Z' + time: "2023-10-16T20:45:00.387Z" ht: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: UOIQXJfwJsCSaAwb-X36R - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:44:23.268Z' + time: "2023-10-16T20:44:23.268Z" - user: name: thiagobadini email: thiagobardini@hotmail.com id: 2ejpIP0qlM0GJJlm9CiGg - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:45:52.060Z' + time: "2023-10-16T20:45:52.060Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: Mvdl-2rBhSK38Zo-trUo0 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:45:24.484Z' + time: "2023-10-16T20:45:24.484Z" public.footer.member-login: locales: es-419: @@ -254,10 +254,10 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: Q6wTGlNjNEtUGLb-kdvnZ - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T20:55:56.927Z' + time: "2023-10-16T20:55:56.927Z" public.benefits-heat-pump.text2: locales: pt-BR: @@ -266,30 +266,30 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: uWsVO3VUJzQ5vLsZB8HwW - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T22:42:24.795Z' + time: "2023-10-16T22:42:24.795Z" ht: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: TT5QzNS5bGUJPwxnp2bHA - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T22:43:07.437Z' + time: "2023-10-16T22:43:07.437Z" es-419: comments: - user: name: thiagobadini email: thiagobardini@hotmail.com id: uHX7yK6V0595EOnzzlbi8 - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T22:43:16.320Z' + time: "2023-10-16T22:43:16.320Z" public.benefits-heat-pump.text3: locales: ht: @@ -298,7 +298,7 @@ reviews: name: thiagobadini email: thiagobardini@hotmail.com id: 342jM5AMjuemch-QDVetP - comment: '' - suggestion: '' + comment: "" + suggestion: "" type: approve - time: '2023-10-16T22:44:32.924Z' + time: "2023-10-16T22:44:32.924Z" diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 2dda1a7b..e727dece 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -28,13 +28,13 @@ const LangPrefDropdown = () => { useEffect(() => { // Get query params from current URL const params = new URLSearchParams(window.location.search); - let queryLang = params.get("langPref"); + let queryLang = params.get("i18nextLng"); // Check if current route is a 'public' route const isPublicRoute = window.location.pathname.includes("public"); if (isPublicRoute) { // Get language preference from localStorage or default to 'en-us' - queryLang = localStorage.getItem("langPref") || "en-us"; + queryLang = localStorage.getItem("i18nextLng"); const url = new URL(window.location.href); // Update or remove 'langPref' query param based on language @@ -52,7 +52,6 @@ const LangPrefDropdown = () => { if (queryLang && queryLang !== currentLanguage) { setCurrentLanguage(queryLang); changeLanguage(queryLang); - localStorage.setItem("langPref", queryLang); } }, [location, currentLanguage]); @@ -71,7 +70,6 @@ const LangPrefDropdown = () => { const handleChangeLanguage = (lang, display) => { setCurrentLanguage(lang); changeLanguage(lang); - localStorage.setItem("langPref", lang); const url = new URL(window.location.href); diff --git a/frontend/front/src/pages/Public/Layout/Footer.js b/frontend/front/src/pages/Public/Layout/Footer.js index eb3b5923..50218935 100644 --- a/frontend/front/src/pages/Public/Layout/Footer.js +++ b/frontend/front/src/pages/Public/Layout/Footer.js @@ -20,17 +20,28 @@ import LockOutlinedIcon from "@mui/icons-material/LockOutlined"; import logoHeatPump from "../../../assets/images/bhpa-logos/bhpa-logo300px.png"; import { styled } from "@mui/material/styles"; -const footerItems = { - "public.global-labels.learn-more.items.about-bhpa": { link: "about-us" }, - "public.global-labels.learn-more.items.about-us": { link: "about-heat-pump" }, - "public.global-labels.learn-more.items.benefits-heat-pumps": { +const getFooterItems = () => ({ + aboutBHPA: { + link: "about-us", + value: "public.global-labels.learn-more.items.about-bhpa", + }, + aboutUs: { + link: "about-heat-pump", + value: "public.global-labels.learn-more.items.about-us", + }, + benefitsHeatPumps: { link: "benefits-heat-pump", + value: "public.global-labels.learn-more.items.benefits-heat-pumps", + }, + getInvolved: { + link: "get-involved", + value: "public.global-labels.get-involved", }, - "public.global-labels.get-involved": { link: "get-involved" }, - "public.global-labels.learn-more.items.testimonials": { + testimonials: { link: "testimonial-section", + value: "public.global-labels.learn-more.items.testimonials", }, -}; +}); const FooterWrapper = styled("div")(({ theme }) => ({ background: "var(--bgColor-2)", @@ -50,6 +61,8 @@ const Footer = () => { const navigate = useNavigate(); const currentYear = new Date().getFullYear(); const { t } = useTranslation(); + const footerItems = getFooterItems(); + return ( @@ -111,18 +124,10 @@ const Footer = () => { px: 0, textAlign: { xs: "center", lg: "left" }, }} - component={ - item === "Our Partners" || item === "Testimonials" - ? "button" - : Link - } - to={ - item === "Our Partners" || item === "Testimonials" - ? null - : footerItems[item].link - } + component={item === "testimonials" ? "button" : Link} + to={item === "testimonials" ? null : footerItems[item].link} onClick={ - item === "Our Partners" || item === "Testimonials" + item === "Our Partners" || item === "testimonials" ? () => { navigate("/public"); setTimeout(() => { @@ -138,7 +143,7 @@ const Footer = () => { } > { {t("public.footer.contact-us")} - {/* - - - 617-635-4500 - - */} ({ + SURVEY: { link: "survey", value: "public.global-labels.survey" }, + LearnMore: { + value: "public.global-labels.learn-more.value", + items: { + BenefitsofHeatPumps: { + link: "benefits-heat-pump", + value: "public.global-labels.learn-more.items.benefits-heat-pumps", + }, + AboutHeatPumps: { + link: "about-heat-pump", + value: "public.global-labels.learn-more.items.about-us", + }, + Testimonials: { + link: "testimonial-section", + value: "public.global-labels.learn-more.items.testimonials", + }, + AboutBHPA: { + link: "about-us", + value: "public.global-labels.learn-more.items.about-bhpa", + }, + }, + }, + getInvolved: { + link: "get-involved", + value: "public.global-labels.get-involved", + }, +}); + function Navbar(props) { const [anchorMore, setAnchorMore] = useState(null); const [mobileOpen, setMobileOpen] = useState(false); const [openMoreMobile, setOpenMoreMobile] = useState(false); + const { window } = props; const { t } = useTranslation(); - const navbarItems = { - SURVEY: { link: "survey", value: t("public.global-labels.survey") }, - "Learn More": { - value: t("public.global-labels.learn-more.value"), - items: { - "Benefits of Heat Pumps": { - link: "benefits-heat-pump", - value: t("public.global-labels.learn-more.items.benefits-heat-pumps"), - }, - "About Heat Pumps": { - link: "about-heat-pump", - value: t("public.global-labels.learn-more.items.about-us"), - }, - Testimonials: { - link: "testimonial-section", - value: t("public.global-labels.learn-more.items.testimonials"), - }, - "About BHPA": { - link: "about-us", - value: t("public.global-labels.learn-more.items.about-bhpa"), - }, - }, - }, - getInvolved: { - link: "get-involved", - value: t("public.global-labels.get-involved"), - }, - }; - - const { window } = props; + const navbarItems = getNavbarItems(t); const navigate = useNavigate(); @@ -109,7 +110,7 @@ function Navbar(props) { sx={{ color: "var(--color-text-1)" }} > - {navbarItems[item].value || item} + {t(navbarItems[item].value) || item} - {Object.keys(navbarItems["Learn More"].items).map( - (subItem, index) => ( - { - handleNavigation( - navbarItems["Learn More"].items[subItem].link - ); - handleCloseMore(); - }} - > - {t(navbarItems["Learn More"].items[subItem].value)} - - ) - )} + {Object.keys(navbarItems.LearnMore.items).map((subItem, index) => ( + { + handleNavigation(navbarItems.LearnMore.items[subItem].link); + handleCloseMore(); + }} + > + {t(navbarItems.LearnMore.items[subItem].value)} + + ))} @@ -190,7 +187,7 @@ function Navbar(props) { {Object.keys(navbarItems).map((item) => (
- {item !== "Learn More" ? ( + {item !== "LearnMore" ? ( - {navbarItems[item].value.toUpperCase()} + {t(navbarItems[item].value).toUpperCase()} @@ -252,7 +249,7 @@ function Navbar(props) { fontWeight: "500", }} > - {navbarItems[item].value.toUpperCase()} + {t(navbarItems[item].value).toUpperCase()} @@ -370,7 +367,7 @@ function Navbar(props) { {Object.keys(navbarItems).map((item) => (
- {item === "Learn More" ? ( + {item === "LearnMore" ? ( desktopNavLink(navbarItems, item) ) : ( )} diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 31f3f22d..793f4546 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -1,5 +1,7 @@ import i18next from "i18next"; import { initReactI18next } from "react-i18next"; +import LanguageDetector from "i18next-browser-languagedetector"; +import Backend from "i18next-http-backend"; import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; @@ -8,15 +10,18 @@ import htTranslations from "../locales/ht.json"; // configuration for i18next library i18next .use(initReactI18next) // passes i18next down to react-i18next + .use(Backend) + .use(LanguageDetector) .init({ debug: true, + fallbackLng: "en", resources: { en: { translation: { ...enTranslations } }, // English - United States "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil es: { translation: { ...esTranslations } }, // Spanish - Latin America ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti }, - lng: "en", // default language + lng: "en-us", // default language }); -console.log(i18next.t("key")); +// console.log(i18next.t("key")); diff --git a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js index 22551d31..db9bb536 100644 --- a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js +++ b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js @@ -30,7 +30,7 @@ function AboutUs() { > - + The Boston Heat Pump Accelerator (BHPA) works to support diff --git a/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js b/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js index 0037615e..1a54293b 100644 --- a/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js +++ b/frontend/front/src/pages/Public/Pages/BenefitsHeatPumps.js @@ -75,8 +75,8 @@ const BenefitsHeatPumps = () => { - {cardBenefits.map((card) => ( - + {cardBenefits.map((card, index) => ( + { sx={{ color: "var(--color-text-3)", display: "inline-block" }} > {t("public.home.cardBenefitsSection.subtitle1")}  - - - {t("public.home.cardBenefitsSection.link")} - - + }, + }} + > + {t("public.home.cardBenefitsSection.link")} + diff --git a/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js b/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js index ec11323c..27a57b01 100644 --- a/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js +++ b/frontend/front/src/pages/Public/Pages/Home/CardLinksSection.js @@ -66,10 +66,9 @@ const CardLinksSection = () => { return ( - {linkCards.map((detail, index) => ( - + {linkCards.map((detail) => ( + { {isSmallerThanMd && ( - + { )} - + {t("public.home.testimonials.text1")} diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index e224b145..061daaa3 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { Suspense } from "react"; import { ThemeProvider, Box, Stack } from "@mui/material"; import { responsiveTheme } from "./Assets/theme"; import { Route, Routes } from "react-router-dom"; @@ -19,7 +19,7 @@ import "./Libs/i18n"; const PublicContainer = () => { return ( - <> + { - + ); }; diff --git a/frontend/front/yarn.lock b/frontend/front/yarn.lock index a78930bb..4680818a 100644 --- a/frontend/front/yarn.lock +++ b/frontend/front/yarn.lock @@ -1116,7 +1116,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== @@ -3769,6 +3769,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-fetch@3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c" + integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g== + dependencies: + node-fetch "^2.6.11" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -5533,6 +5540,20 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +i18next-browser-languagedetector@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" + integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== + dependencies: + "@babel/runtime" "^7.19.4" + +i18next-http-backend@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/i18next-http-backend/-/i18next-http-backend-2.2.2.tgz#3ee16dfe5fe33524ec8925d4f0bf1508ebbbfadf" + integrity sha512-mJu4ZqzDtBiU3O4GV9AbK5ekEqoDMdMnCl3pkdXmb5b8yoIH//u8FsmIe6C5qXb3teZu+j6VMi20tjUgzeABiw== + dependencies: + cross-fetch "3.1.6" + i18next@^23.5.1: version "23.5.1" resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.5.1.tgz#7f7c35ffaa907618d9489f106d5006b09fbca3d3" @@ -7070,6 +7091,13 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-fetch@^2.6.11: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -9527,6 +9555,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -9853,6 +9886,11 @@ web-vitals@^2.1.0: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -10005,6 +10043,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" From f9f066929ddf1616ff66d16625e57c56a3e9e758 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 17:06:19 -0400 Subject: [PATCH 24/74] Re-add langPref to localStorage for persistent user language preference --- .../Public/Components/LangPrefDropdown.js | 6 ++-- .../front/src/pages/Public/Layout/Navbar.js | 2 +- frontend/front/src/pages/Public/Libs/i18n.js | 34 +++++++++---------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index e727dece..2dda1a7b 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -28,13 +28,13 @@ const LangPrefDropdown = () => { useEffect(() => { // Get query params from current URL const params = new URLSearchParams(window.location.search); - let queryLang = params.get("i18nextLng"); + let queryLang = params.get("langPref"); // Check if current route is a 'public' route const isPublicRoute = window.location.pathname.includes("public"); if (isPublicRoute) { // Get language preference from localStorage or default to 'en-us' - queryLang = localStorage.getItem("i18nextLng"); + queryLang = localStorage.getItem("langPref") || "en-us"; const url = new URL(window.location.href); // Update or remove 'langPref' query param based on language @@ -52,6 +52,7 @@ const LangPrefDropdown = () => { if (queryLang && queryLang !== currentLanguage) { setCurrentLanguage(queryLang); changeLanguage(queryLang); + localStorage.setItem("langPref", queryLang); } }, [location, currentLanguage]); @@ -70,6 +71,7 @@ const LangPrefDropdown = () => { const handleChangeLanguage = (lang, display) => { setCurrentLanguage(lang); changeLanguage(lang); + localStorage.setItem("langPref", lang); const url = new URL(window.location.href); diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index eee6e020..e35e0164 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -68,7 +68,7 @@ function Navbar(props) { const { window } = props; const { t } = useTranslation(); - const navbarItems = getNavbarItems(t); + const navbarItems = getNavbarItems(); const navigate = useNavigate(); diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 793f4546..acbdc92a 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -8,20 +8,20 @@ import esTranslations from "../locales/es-419.json"; import htTranslations from "../locales/ht.json"; // configuration for i18next library -i18next - .use(initReactI18next) // passes i18next down to react-i18next - .use(Backend) - .use(LanguageDetector) - .init({ - debug: true, - fallbackLng: "en", - resources: { - en: { translation: { ...enTranslations } }, // English - United States - "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil - es: { translation: { ...esTranslations } }, // Spanish - Latin America - ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti - }, - lng: "en-us", // default language - }); - -// console.log(i18next.t("key")); +if (!i18next.isInitialized) { + i18next + .use(initReactI18next) // passes i18next down to react-i18next + .use(Backend) + .use(LanguageDetector) + .init({ + debug: true, + fallbackLng: "en", + resources: { + en: { translation: { ...enTranslations } }, // English - United States + "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil + es: { translation: { ...esTranslations } }, // Spanish - Latin America + ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti + }, + lng: "en-us", // default language + }); +} From 1060c077af7b0990e3760af451c5c19a21e261fd Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 17:44:45 -0400 Subject: [PATCH 25/74] Clean code --- frontend/front/public/index.html | 7 ------- 1 file changed, 7 deletions(-) diff --git a/frontend/front/public/index.html b/frontend/front/public/index.html index 07eac6c9..36287aa2 100644 --- a/frontend/front/public/index.html +++ b/frontend/front/public/index.html @@ -27,13 +27,6 @@ src="https://maps.googleapis.com/maps/api/js?key=%REACT_APP_GOOGLE_API_KEY%" defer > --> - -
From 26743050df72becdba16c7aef46add02943fda29 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 17:50:44 -0400 Subject: [PATCH 26/74] Clean code --- frontend/front/src/pages/Public/Layout/Navbar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index e35e0164..01e83d41 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -389,7 +389,7 @@ function Navbar(props) {
{/* Removed this button from the navbar */} - - + */} Date: Tue, 17 Oct 2023 18:20:59 -0400 Subject: [PATCH 27/74] Clean code --- .../front/src/pages/Public/Components/Button/ButtonGetPump.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js index 6b06bc44..35162048 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonGetPump.js @@ -24,6 +24,7 @@ const ButtonGetPumnp = () => { height: "50px", fontWeight: 600, borderRadius: "50px", + width: "auto", minWidth: 200, transition: "0.3s cubic-bezier(.47,1.64,.41,.8)", letterSpacing: "-.03em", From 625dff07f20cbeb77fa53f8520e56839463518e4 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 18:54:39 -0400 Subject: [PATCH 28/74] Fixed langPref to localStorage to persist user language preferences --- frontend/front/src/pages/Public/Libs/i18n.js | 2 +- frontend/front/src/pages/Public/PublicContainer.js | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index acbdc92a..82052596 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -12,7 +12,7 @@ if (!i18next.isInitialized) { i18next .use(initReactI18next) // passes i18next down to react-i18next .use(Backend) - .use(LanguageDetector) + // .use(LanguageDetector) .init({ debug: true, fallbackLng: "en", diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index 061daaa3..31dfe55c 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -19,7 +19,8 @@ import "./Libs/i18n"; const PublicContainer = () => { return ( - + <> + {/* // */} { - + {/* */} + ); }; From ab64543bb9f7c182c10f215404d74ee074b103cf Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 21:17:46 -0400 Subject: [PATCH 29/74] Fixed langPref to localStorage to persist user language preference - part 2 --- frontend/front/src/pages/Public/Libs/i18n.js | 36 ++++++++++--------- .../src/pages/Public/Pages/GetInvolved.js | 5 ++- .../front/src/pages/Public/PublicContainer.js | 6 ++-- .../front/src/pages/Public/locales/en.json | 3 ++ .../src/pages/Public/locales/es-419.json | 3 ++ .../front/src/pages/Public/locales/ht.json | 3 ++ .../front/src/pages/Public/locales/pt-BR.json | 3 ++ 7 files changed, 37 insertions(+), 22 deletions(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 82052596..611f07ce 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -6,22 +6,24 @@ import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; import htTranslations from "../locales/ht.json"; +import jpTranslations from "../locales/jp.json"; // configuration for i18next library -if (!i18next.isInitialized) { - i18next - .use(initReactI18next) // passes i18next down to react-i18next - .use(Backend) - // .use(LanguageDetector) - .init({ - debug: true, - fallbackLng: "en", - resources: { - en: { translation: { ...enTranslations } }, // English - United States - "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil - es: { translation: { ...esTranslations } }, // Spanish - Latin America - ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti - }, - lng: "en-us", // default language - }); -} +// if (!i18next.isInitialized) { +i18next + .use(initReactI18next) // passes i18next down to react-i18next + .use(Backend) + .use(LanguageDetector) + .init({ + debug: false, // change to true to debug i18next + fallbackLng: "en", + resources: { + en: { translation: { ...enTranslations } }, // English - United States + "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil + es: { translation: { ...esTranslations } }, // Spanish - Latin America + ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti + jp: { translation: { ...jpTranslations } }, // Japanese - Japan + }, + lng: "en-us", // default language + }); +// } diff --git a/frontend/front/src/pages/Public/Pages/GetInvolved.js b/frontend/front/src/pages/Public/Pages/GetInvolved.js index 1676e41a..fb979021 100644 --- a/frontend/front/src/pages/Public/Pages/GetInvolved.js +++ b/frontend/front/src/pages/Public/Pages/GetInvolved.js @@ -1,5 +1,6 @@ import { Box, Container } from "@mui/material"; import React from "react"; +import { useTranslation } from "react-i18next"; import card1 from "../../../assets/images/copywritingImages/jason-goodman-NYMJYXfZG-g-unsplash.jpg"; import card2 from "../../../assets/images/copywritingImages/todd-kent-iRKv_XiN--M-unsplash.jpg"; import card3 from "../../../assets/images/copywritingImages/erika-giraud-H6xKnDKrKDk-unsplash.jpg"; @@ -10,11 +11,13 @@ import SocialSharingKit from "../../../assets/pdfDownload/SocialSharingKit.pdf"; import CommunityFlyer from "../../../assets/pdfDownload/CommunityFlyer.pdf"; function GetInvolved() { + const { t } = useTranslation(); + const cardContent = [ { mediaType: "img", mediaSource: card1, - title: "Share with your community", + title: t("public.getInvolved.title1"), body: "Let your neighbors know about the savings and other benefits of heat pumps. Share this website on social media or through email.", linkDescription: "Download social sharing kit", linkDownload: SocialSharingKit, diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index 31dfe55c..061daaa3 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -19,8 +19,7 @@ import "./Libs/i18n"; const PublicContainer = () => { return ( - <> - {/* // */} + { - {/* */} - + ); }; diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index 4f9aa1de..f726e3d7 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -112,6 +112,9 @@ "text1": "We want to hear your opinions!", "text2": "We want to hear your", "text3": "opinions!" + }, + "getInvolved": { + "title1": "Share with your community" } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 1842ef08..616b459f 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -115,6 +115,9 @@ "text1": "¡Queremos escuchar tus opiniones!", "text2": "Queremos escuchar tus", "text3": "opiniones!" + }, + "getInvolved": { + "title1": "Comparte con tu comunidad" } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index c7e38919..fa100d4f 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -115,6 +115,9 @@ "text1": "Nou vle tande opinyon ou!", "text2": "Nou vle tande ", "text3": "opinyon ou!" + }, + "getInvolved": { + "title1": "Pataje ak kominote w la" } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 87a3dcbc..dd60b0c9 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -115,6 +115,9 @@ "text1": "Queremos ouvir suas opiniões!", "text2": "Queremos ouvir suas", "text3": "opiniões!" + }, + "getInvolved": { + "title1": "Compartilhe com sua comunidade" } } } From ba180047adbccc4a05fb9debc50872bd03c79ba7 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 17 Oct 2023 21:18:31 -0400 Subject: [PATCH 30/74] Clean code --- frontend/front/src/pages/Public/Libs/i18n.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 611f07ce..a95b5b75 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -6,7 +6,6 @@ import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; import htTranslations from "../locales/ht.json"; -import jpTranslations from "../locales/jp.json"; // configuration for i18next library // if (!i18next.isInitialized) { @@ -22,7 +21,6 @@ i18next "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil es: { translation: { ...esTranslations } }, // Spanish - Latin America ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti - jp: { translation: { ...jpTranslations } }, // Japanese - Japan }, lng: "en-us", // default language }); From 4495cd045fd8785d3c08beac3c69d6664a20df41 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 12:16:26 -0400 Subject: [PATCH 31/74] Implement one-time page reload for language detection --- .../src/pages/Public/Components/LangPrefDropdown.js | 12 +++++++++--- frontend/front/src/pages/Public/Libs/i18n.js | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 2dda1a7b..70b72dd4 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -14,7 +14,9 @@ const LangPrefDropdown = () => { const [anchorMore, setAnchorMore] = useState(null); const [langDisplay, setLangDisplay] = useState("English"); const [currentLanguage, setCurrentLanguage] = useState(language); - // const [isReloaded, setIsReloaded] = useState(false); + const [isReloaded, setIsReloaded] = useState( + localStorage.getItem("isReloaded") === "true" + ); const location = useLocation(); @@ -32,7 +34,11 @@ const LangPrefDropdown = () => { // Check if current route is a 'public' route const isPublicRoute = window.location.pathname.includes("public"); - if (isPublicRoute) { + if (isPublicRoute && !isReloaded) { + setIsReloaded(true); + localStorage.setItem("isReloaded", "true"); + window.location.reload(); + // Get language preference from localStorage or default to 'en-us' queryLang = localStorage.getItem("langPref") || "en-us"; const url = new URL(window.location.href); @@ -54,7 +60,7 @@ const LangPrefDropdown = () => { changeLanguage(queryLang); localStorage.setItem("langPref", queryLang); } - }, [location, currentLanguage]); + }, [location, currentLanguage, isReloaded]); // Determine if the language menu should be open const open = Boolean(anchorMore); diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index a95b5b75..f8aa52b8 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -14,7 +14,7 @@ i18next .use(Backend) .use(LanguageDetector) .init({ - debug: false, // change to true to debug i18next + debug: true, // change to true to debug i18next fallbackLng: "en", resources: { en: { translation: { ...enTranslations } }, // English - United States From 9dca86bdf84af2eda058be6333cf8af93810f9dc Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 12:40:31 -0400 Subject: [PATCH 32/74] Implement one-time page reload for language detection - part 2 --- .../src/pages/Public/Components/LangPrefDropdown.js | 12 +++--------- frontend/front/src/pages/Public/Libs/i18n.js | 4 +++- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 70b72dd4..0af70e5a 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -14,9 +14,6 @@ const LangPrefDropdown = () => { const [anchorMore, setAnchorMore] = useState(null); const [langDisplay, setLangDisplay] = useState("English"); const [currentLanguage, setCurrentLanguage] = useState(language); - const [isReloaded, setIsReloaded] = useState( - localStorage.getItem("isReloaded") === "true" - ); const location = useLocation(); @@ -27,6 +24,7 @@ const LangPrefDropdown = () => { "es-us": `🇪🇸 ${t("public.global-labels.locales.spanish")}`, }; + console.log("currentLanguage", language); useEffect(() => { // Get query params from current URL const params = new URLSearchParams(window.location.search); @@ -34,11 +32,7 @@ const LangPrefDropdown = () => { // Check if current route is a 'public' route const isPublicRoute = window.location.pathname.includes("public"); - if (isPublicRoute && !isReloaded) { - setIsReloaded(true); - localStorage.setItem("isReloaded", "true"); - window.location.reload(); - + if (isPublicRoute) { // Get language preference from localStorage or default to 'en-us' queryLang = localStorage.getItem("langPref") || "en-us"; const url = new URL(window.location.href); @@ -60,7 +54,7 @@ const LangPrefDropdown = () => { changeLanguage(queryLang); localStorage.setItem("langPref", queryLang); } - }, [location, currentLanguage, isReloaded]); + }, [location, currentLanguage, currentLanguage]); // Determine if the language menu should be open const open = Boolean(anchorMore); diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index f8aa52b8..be05b9cf 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -12,7 +12,7 @@ import htTranslations from "../locales/ht.json"; i18next .use(initReactI18next) // passes i18next down to react-i18next .use(Backend) - .use(LanguageDetector) + // .use(LanguageDetector) .init({ debug: true, // change to true to debug i18next fallbackLng: "en", @@ -25,3 +25,5 @@ i18next lng: "en-us", // default language }); // } + +// Add event listener here From 2e558f581a1c315dd7274925cb8de644523790a3 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 12:44:07 -0400 Subject: [PATCH 33/74] Fixing the language detector - part 3 --- frontend/front/src/pages/Public/Libs/i18n.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index be05b9cf..f4bc474a 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -1,7 +1,7 @@ import i18next from "i18next"; import { initReactI18next } from "react-i18next"; import LanguageDetector from "i18next-browser-languagedetector"; -import Backend from "i18next-http-backend"; +// import Backend from "i18next-http-backend"; import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; @@ -11,8 +11,8 @@ import htTranslations from "../locales/ht.json"; // if (!i18next.isInitialized) { i18next .use(initReactI18next) // passes i18next down to react-i18next - .use(Backend) - // .use(LanguageDetector) + // .use(Backend) + .use(LanguageDetector) .init({ debug: true, // change to true to debug i18next fallbackLng: "en", From f41a8f8023ddef799eeca6185dc1562c5e22ec7a Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 12:52:26 -0400 Subject: [PATCH 34/74] Fixing the language detector - part 4 --- frontend/front/src/pages/Public/Libs/i18n.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index f4bc474a..2245aa0a 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -15,7 +15,12 @@ i18next .use(LanguageDetector) .init({ debug: true, // change to true to debug i18next - fallbackLng: "en", + fallbackLng: { + "pt-BR": ["pt"], + es: ["es"], + ht: ["ht"], + default: ["en"], + }, resources: { en: { translation: { ...enTranslations } }, // English - United States "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil From d56e99739fffeec3dbc4ec816d98e5b4f85c4b9f Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 13:05:55 -0400 Subject: [PATCH 35/74] Fixing the language detector - part 5 --- frontend/front/src/pages/Public/Libs/i18n.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 2245aa0a..d3ec37d5 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -1,34 +1,28 @@ import i18next from "i18next"; import { initReactI18next } from "react-i18next"; import LanguageDetector from "i18next-browser-languagedetector"; -// import Backend from "i18next-http-backend"; import enTranslations from "../locales/en.json"; import ptTranslations from "../locales/pt-BR.json"; import esTranslations from "../locales/es-419.json"; import htTranslations from "../locales/ht.json"; +const userLangPref = localStorage.getItem("langPref") || "en-us"; +console.log("userLangPref", userLangPref); + // configuration for i18next library // if (!i18next.isInitialized) { i18next .use(initReactI18next) // passes i18next down to react-i18next - // .use(Backend) .use(LanguageDetector) .init({ debug: true, // change to true to debug i18next - fallbackLng: { - "pt-BR": ["pt"], - es: ["es"], - ht: ["ht"], - default: ["en"], - }, + fallbackLng: ["en", "es"], // fallback language resources: { en: { translation: { ...enTranslations } }, // English - United States "pt-BR": { translation: { ...ptTranslations } }, // Portuguese - Brazil es: { translation: { ...esTranslations } }, // Spanish - Latin America ht: { translation: { ...htTranslations } }, // Haitian Creole - Haiti }, - lng: "en-us", // default language + lng: userLangPref, // default language }); // } - -// Add event listener here From f13bad085f80bca83e47f46650de8a74abe6ddc7 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 14:26:45 -0400 Subject: [PATCH 36/74] Translated the public/get-involved page using i18n --- .../Public/Components/LangPrefDropdown.js | 3 +-- frontend/front/src/pages/Public/Libs/i18n.js | 1 - .../src/pages/Public/Pages/GetInvolved.js | 22 +++++++++---------- .../front/src/pages/Public/PublicContainer.js | 6 ++--- .../front/src/pages/Public/locales/en.json | 20 ++++++++++++++++- .../src/pages/Public/locales/es-419.json | 20 ++++++++++++++++- .../front/src/pages/Public/locales/ht.json | 20 ++++++++++++++++- .../front/src/pages/Public/locales/pt-BR.json | 20 ++++++++++++++++- 8 files changed, 91 insertions(+), 21 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 0af70e5a..d397952b 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -24,7 +24,6 @@ const LangPrefDropdown = () => { "es-us": `🇪🇸 ${t("public.global-labels.locales.spanish")}`, }; - console.log("currentLanguage", language); useEffect(() => { // Get query params from current URL const params = new URLSearchParams(window.location.search); @@ -54,7 +53,7 @@ const LangPrefDropdown = () => { changeLanguage(queryLang); localStorage.setItem("langPref", queryLang); } - }, [location, currentLanguage, currentLanguage]); + }, [location, currentLanguage, changeLanguage]); // Determine if the language menu should be open const open = Boolean(anchorMore); diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index d3ec37d5..4e61411d 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -7,7 +7,6 @@ import esTranslations from "../locales/es-419.json"; import htTranslations from "../locales/ht.json"; const userLangPref = localStorage.getItem("langPref") || "en-us"; -console.log("userLangPref", userLangPref); // configuration for i18next library // if (!i18next.isInitialized) { diff --git a/frontend/front/src/pages/Public/Pages/GetInvolved.js b/frontend/front/src/pages/Public/Pages/GetInvolved.js index fb979021..46dbfbc4 100644 --- a/frontend/front/src/pages/Public/Pages/GetInvolved.js +++ b/frontend/front/src/pages/Public/Pages/GetInvolved.js @@ -17,31 +17,31 @@ function GetInvolved() { { mediaType: "img", mediaSource: card1, - title: t("public.getInvolved.title1"), - body: "Let your neighbors know about the savings and other benefits of heat pumps. Share this website on social media or through email.", - linkDescription: "Download social sharing kit", + title: t("public.getInvolved.item1.title"), + body: t("public.getInvolved.item1.body"), + linkDescription: t("public.getInvolved.item1.link"), linkDownload: SocialSharingKit, }, { mediaType: "img", mediaSource: card2, - title: "Post flyers at local businesses", - body: "Print and post this flyer at cafes, conveniences, and community bulletin boards around your neighborhood.", - linkDescription: "Download informational flyer", + title: t("public.getInvolved.item2.title"), + body: t("public.getInvolved.item2.body"), + linkDescription: t("public.getInvolved.item2.link"), linkDownload: CommunityFlyer, }, { mediaType: "img", mediaSource: card3, - title: "Discuss with your community", - body: "Help to organize and/or host an event for neighbors to learn about heat pumps and their benefits.", + title: t("public.getInvolved.item3.title"), + body: t("public.getInvolved.item3.body"), }, { mediaType: "img", mediaSource: card4, - title: "Share with your local legislators", - body: "Assist your neighbors in transitioning towards cheaper and cleaner energy by seeking local initiatives and communicating with your elected representatives to express your preference for heat pumps. Use the following free service to get contact info for a call, email, or letter to your elected representatives.", - linkDescription: "Contact your elected officials", + title: t("public.getInvolved.item4.title"), + body: t("public.getInvolved.item4.body"), + linkDescription: t("public.getInvolved.item4.link"), link: "https://www.usa.gov/elected-officials", }, ]; diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index 061daaa3..e224b145 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -1,4 +1,4 @@ -import React, { Suspense } from "react"; +import React from "react"; import { ThemeProvider, Box, Stack } from "@mui/material"; import { responsiveTheme } from "./Assets/theme"; import { Route, Routes } from "react-router-dom"; @@ -19,7 +19,7 @@ import "./Libs/i18n"; const PublicContainer = () => { return ( - + <> { - + ); }; diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index f726e3d7..b06324f5 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -114,7 +114,25 @@ "text3": "opinions!" }, "getInvolved": { - "title1": "Share with your community" + "item1": { + "body": "Let your neighbors know about the savings and other benefits of heat pumps. Share this website on social media or through email.", + "title": "Share with your community", + "link": "Download social sharing kit" + }, + "item2": { + "title": "Post flyers at local businesses", + "body": "Print and post this flyer at cafes, conveniences, and community bulletin boards around your neighborhood.", + "link": "Download informational flyer" + }, + "item3": { + "title": "Discuss with your community", + "body": "Help to organize and/or host an event for neighbors to learn about heat pumps and their benefits." + }, + "item4": { + "title": "Share with your local legislators", + "body": "Assist your neighbors in transitioning towards cheaper and cleaner energy by seeking local initiatives and communicating with your elected representatives to express your preference for heat pumps. Use the following free service to get contact info for a call, email, or letter to your elected representatives.", + "link": "Contact your elected officials" + } } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 616b459f..3bfaddce 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -117,7 +117,25 @@ "text3": "opiniones!" }, "getInvolved": { - "title1": "Comparte con tu comunidad" + "item1": { + "title": "Comparte con tu comunidad", + "body": "Informe a sus vecinos sobre los ahorros y otros beneficios de las bombas de calor. \nComparta este sitio web en las redes sociales o por correo electrónico.", + "link": "Descargar el kit para compartir en redes sociales" + }, + "item2": { + "title": "Publicar folletos en empresas locales.", + "body": "Imprima y publique este folleto en cafés, tiendas de conveniencia y tableros de anuncios comunitarios de su vecindario.", + "link": "Descargar folleto informativo" + }, + "item3": { + "title": "Discute con tu comunidad", + "body": "Ayude a organizar y/o albergar un evento para que los vecinos aprendan sobre las bombas de calor y sus beneficios." + }, + "item4": { + "title": "Comparta con sus legisladores locales", + "body": "Ayude a sus vecinos en la transición hacia una energía más barata y limpia buscando iniciativas locales y comunicándose con sus representantes electos para expresar su preferencia por las bombas de calor. \nUtilice el siguiente servicio gratuito para obtener información de contacto para una llamada, correo electrónico o carta a sus representantes electos.", + "link": "Comuníquese con sus funcionarios electos" + } } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index fa100d4f..875ff198 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -117,7 +117,25 @@ "text3": "opinyon ou!" }, "getInvolved": { - "title1": "Pataje ak kominote w la" + "item1": { + "title": "Pataje ak kominote w la", + "body": "Fè vwazen ou yo konnen ekonomi yo ak lòt benefis nan ponp chalè. \nPataje sit entènèt sa a sou rezo sosyal oswa pa imèl.", + "link": "Telechaje twous pataje sosyal" + }, + "item2": { + "title": "Afiche feyè nan biznis lokal yo", + "body": "Enprime epi poste feyè sa a nan kafe, konvenyans, ak tablo afichaj kominotè nan katye w la.", + "link": "Telechaje feyè enfòmasyon" + }, + "item3": { + "title": "Diskite ak kominote w la", + "body": "Ede yo òganize ak/oswa òganize yon evènman pou vwazen yo aprann sou ponp chalè ak benefis yo." + }, + "item4": { + "title": "Pataje ak lejislatè lokal ou yo", + "body": "Ede vwazen ou yo nan tranzisyon nan direksyon pi bon mache ak pi pwòp nan chèche inisyativ lokal yo epi kominike ak reprezantan ou eli yo eksprime preferans ou pou ponp chalè. \nSèvi ak sèvis gratis sa a pou jwenn enfòmasyon kontak pou yon apèl, imèl, oswa lèt bay reprezantan ou eli yo.", + "link": "Kontakte ofisyèl eli ou yo" + } } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index dd60b0c9..9c9c8493 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -117,7 +117,25 @@ "text3": "opiniões!" }, "getInvolved": { - "title1": "Compartilhe com sua comunidade" + "item1": { + "title": "Compartilhe com sua comunidade", + "body": "Informe os seus vizinhos sobre as poupanças e outros benefícios das bombas de calor. \nCompartilhe este site nas redes sociais ou por e-mail.", + "link": "Baixe o kit de compartilhamento social" + }, + "item2": { + "title": "Publique panfletos em empresas locais", + "body": "Imprima e publique este folheto em cafés, conveniências e quadros de avisos comunitários em sua vizinhança.", + "link": "Baixe o folheto informativo" + }, + "item3": { + "title": "Discuta com sua comunidade", + "body": "Ajude a organizar e/ou acolher um evento para os vizinhos aprenderem sobre bombas de calor e os seus benefícios." + }, + "item4": { + "title": "Compartilhe com seus legisladores locais", + "body": "Ajude os seus vizinhos na transição para uma energia mais barata e mais limpa, procurando iniciativas locais e comunicando com os seus representantes eleitos para expressar a sua preferência por bombas de calor. \nUse o seguinte serviço gratuito para obter informações de contato para uma ligação, e-mail ou carta aos seus representantes eleitos.", + "link": "Contate seus funcionários eleitos" + } } } } From 57a105eb1db2775f56a7ebdc5a98f99176ee07b5 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Fri, 20 Oct 2023 14:41:30 -0400 Subject: [PATCH 37/74] Translated the public/about-heat-pumpabout-heat-pumps page using i18n --- .../Pages/AboutHeatPump/AboutHeatPump.js | 95 +++++++------------ .../front/src/pages/Public/locales/en.json | 20 ++++ .../src/pages/Public/locales/es-419.json | 20 ++++ .../front/src/pages/Public/locales/ht.json | 20 ++++ .../front/src/pages/Public/locales/pt-BR.json | 20 ++++ 5 files changed, 112 insertions(+), 63 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js b/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js index 0aacc7e8..9bcb051f 100644 --- a/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js +++ b/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js @@ -1,4 +1,5 @@ import { Box, Container, Stack } from "@mui/material"; +import { useTranslation } from "react-i18next"; import React from "react"; import heatpump from "../../../../assets/images/heatPump-outside.png"; import ButtonDarkBlue from "../../Components/Button/ButtonDarkBlue"; @@ -6,37 +7,37 @@ import Heading1BlueBgGround from "../../Components/Typography/Heading1BlueBgGrou import Heading4 from "../../Components/Typography/Heading4"; import CardsSection from "../../Components/CardsSection"; -const cardContent = [ - { - mediaType: "img", - mediaSource: heatpump, - title: "What is a heat pump?", - body: "Check out this comprehensive article that Carrier, a heat pump manufacturer, has written up about what a heat pump is and how they work.", - link: "https://www.carrier.com/residential/en/us/products/heat-pumps/what-is-a-heat-pump-how-does-it-work/", - linkDescription: "Read Article", - }, - { - mediaType: "iframe", - mediaSource: "https://www.youtube.com/embed/iQaycSD5GWE", - title: "How does a heat pump work?", - body: "This Old House plumbing and heating expert Richard Tretheway instructs Kevin O’Connor on the basic principles of how a heat pump works.", - }, - { - mediaType: "iframe", - mediaSource: "https://youtube.com/embed/PIulbHyK0bc", - title: "Why are heat pumps better?", - body: "This video by Vox explains why heat pumps are better for the environment than fossil fuel heaters.", - }, - { - mediaType: "iframe", - mediaSource: "https://www.youtube.com/embed/Ep9zqk5bVaU", - title: "What do other people say?", - body: "Hear what someone else has to say about their experience getting a heat pump installed in their home.", - }, -]; - function AboutHeatPump() { - // const isSmallerThanMd = useMediaQuery(theme.breakpoints.down("md")); + const { t } = useTranslation(); + + const cardContent = [ + { + mediaType: "img", + mediaSource: heatpump, + title: t("public.about-heat-pump.item1.title"), + body: t("public.about-heat-pump.item1.body"), + link: "https://www.carrier.com/residential/en/us/products/heat-pumps/what-is-a-heat-pump-how-does-it-work/", + linkDescription: t("public.about-heat-pump.item1.link"), + }, + { + mediaType: "iframe", + mediaSource: "https://www.youtube.com/embed/iQaycSD5GWE", + title: t("public.about-heat-pump.item2.title"), + body: t("public.about-heat-pump.item2.body"), + }, + { + mediaType: "iframe", + mediaSource: "https://youtube.com/embed/PIulbHyK0bc", + title: t("public.about-heat-pump.item3.title"), + body: t("public.about-heat-pump.item3.body"), + }, + { + mediaType: "iframe", + mediaSource: "https://www.youtube.com/embed/Ep9zqk5bVaU", + title: t("public.about-heat-pump.item4.title"), + body: t("public.about-heat-pump.item4.body"), + }, + ]; return ( - + - {/* - {isSmallerThanMd ? ( - - ) : ( - <> - - - - )} - */} - {/* - {cardContent.map((card, index) => { - return ( - - ); - })} - */} - Date: Fri, 20 Oct 2023 15:03:16 -0400 Subject: [PATCH 38/74] Clean code --- .../src/pages/Public/Pages/GetInvolved.js | 2 +- .../Pages/PrivacyPolicy/PrivacyPolicy.js | 8 +- frontend/front/yarn.lock | 489 +++++++++--------- 3 files changed, 254 insertions(+), 245 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/GetInvolved.js b/frontend/front/src/pages/Public/Pages/GetInvolved.js index 46dbfbc4..1247ebcb 100644 --- a/frontend/front/src/pages/Public/Pages/GetInvolved.js +++ b/frontend/front/src/pages/Public/Pages/GetInvolved.js @@ -1,5 +1,5 @@ -import { Box, Container } from "@mui/material"; import React from "react"; +import { Box, Container } from "@mui/material"; import { useTranslation } from "react-i18next"; import card1 from "../../../assets/images/copywritingImages/jason-goodman-NYMJYXfZG-g-unsplash.jpg"; import card2 from "../../../assets/images/copywritingImages/todd-kent-iRKv_XiN--M-unsplash.jpg"; diff --git a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js b/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js index bcef5951..5a2734a3 100644 --- a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js +++ b/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js @@ -1,3 +1,4 @@ +import { useTranslation } from "react-i18next"; import { styled } from "@mui/material/styles"; import { Container, Typography, Box } from "@mui/material"; import MuiAccordion from "@mui/material/Accordion"; @@ -12,9 +13,6 @@ const Accordion = styled((props) => ( ))(({ theme }) => ({ borderBottom: "2px solid var(--color-text-5)", - "&:not(:last-child)": { - // borderBottom: 0, - }, "&:before": { display: "none", }, @@ -26,7 +24,6 @@ const AccordionSummary = styled((props) => ( {...props} /> ))(({ theme }) => ({ - // backgroundColor: "var(--bgColor-3)", flexDirection: "row-reverse", "& .MuiAccordionSummary-expandIconWrapper.Mui-expanded": { transform: "rotate(90deg)", @@ -38,10 +35,11 @@ const AccordionSummary = styled((props) => ( const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ padding: theme.spacing(2), - // borderTop: "1px solid rgba(0, 0, 0, .125)", })); function PrivacyPolicy() { + const { t } = useTranslation(); + return ( Date: Fri, 20 Oct 2023 20:44:57 -0400 Subject: [PATCH 39/74] Fixed some CSS styling - /public --- .../pages/Public/Components/Button/ButtonDarkBlue.js | 8 ++++++-- .../pages/Public/Components/Button/ButtonGetPump.js | 2 +- .../src/pages/Public/Components/Button/ButtonWhite.js | 1 + .../pages/Public/Pages/AboutHeatPump/AboutHeatPump.js | 9 ++++++--- frontend/front/src/pages/Public/Pages/GetInvolved.js | 2 +- .../src/pages/Public/Pages/Home/CardLinksSection.js | 8 +++----- frontend/front/src/pages/Public/locales/en.json | 10 ++++++++-- frontend/front/src/pages/Public/locales/es-419.json | 10 ++++++++-- frontend/front/src/pages/Public/locales/ht.json | 10 ++++++++-- frontend/front/src/pages/Public/locales/pt-BR.json | 10 ++++++++-- 10 files changed, 50 insertions(+), 20 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js index 02ffe9f6..5e641a68 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js @@ -13,7 +13,9 @@ const ButtonDarkBklue = ({ text, to, children, externalLink }) => { - + {linkDescription !== "" && ( + + + + )} {renderMedia()}
diff --git a/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js b/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js index feb51deb..2cdef95a 100644 --- a/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js +++ b/frontend/front/src/pages/Public/Pages/AboutHeatPump/AboutHeatPump.js @@ -71,7 +71,7 @@ function AboutHeatPump() { ); })} - + diff --git a/frontend/front/yarn.lock b/frontend/front/yarn.lock index 0d180d2c..4c384a2f 100644 --- a/frontend/front/yarn.lock +++ b/frontend/front/yarn.lock @@ -1419,10 +1419,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== "@floating-ui/core@^1.4.2": version "1.5.0" @@ -1451,7 +1451,7 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@humanwhocodes/config-array@^0.11.11": +"@humanwhocodes/config-array@^0.11.13": version "0.11.13" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== @@ -2637,6 +2637,11 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -3406,7 +3411,7 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== @@ -4316,9 +4321,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.562" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.562.tgz#7502b8cafbb7cc59701b17e744fa6ef5f7fe2b96" - integrity sha512-kMGVZLP65O2/oH7zzaoIA5hcr4/xPYO6Sa83FrIpWcd7YPPtSlxqwxTd8lJIwKxaiXM6FGsYK4ukyJ40XkW7jg== + version "1.4.563" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz#dabb424202754c1fed2d2938ff564b23d3bbf0d3" + integrity sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw== emittery@^0.10.2: version "0.10.2" @@ -4378,25 +4383,25 @@ error-stack-parser@^2.0.6: stackframe "^1.3.4" es-abstract@^1.17.2, es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -4406,7 +4411,7 @@ es-abstract@^1.17.2, es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -4420,7 +4425,7 @@ es-abstract@^1.17.2, es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -4468,20 +4473,20 @@ es-module-lexer@^1.2.1: integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -4708,17 +4713,18 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0, eslint@^8.44.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -5177,15 +5183,15 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -5350,11 +5356,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -5378,6 +5384,13 @@ has@^1.0.3: resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -5658,12 +5671,12 @@ ini@^1.3.5: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" ipaddr.js@1.9.1: @@ -5733,11 +5746,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" @@ -7190,7 +7203,7 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.3, object-inspect@^1.9.0: +object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -10119,7 +10132,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: version "1.1.13" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== From 704b7fbb1e1c50a6a3a9c8f335bed210eb6c1e8b Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sat, 21 Oct 2023 14:05:07 -0400 Subject: [PATCH 50/74] Added arrow down on the hero page --- .../src/pages/Public/Pages/Home/HeroPage.js | 73 +++++++++++++------ .../front/src/pages/Public/Pages/Home/Home.js | 4 +- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index f107bb89..8228312b 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -1,11 +1,12 @@ import React from "react"; -import { styled } from "@mui/material/styles"; +import { Link as RouterLink } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { Typography, Box, Button } from "@mui/material"; +import { styled } from "@mui/material/styles"; +import { Typography, Box, Button, IconButton } from "@mui/material"; import AnimatedBox from "../../Components/AnimatedBox"; import TitleHero from "../../Components/Typography/TitleHero"; import { Link as MuiLink } from "@mui/material"; -import { Link as RouterLink } from "react-router-dom"; +import ArrowDownwardIcon from "@mui/icons-material/KeyboardArrowDown"; const HeroWrapper = styled("div")(({ theme, image }) => ({ display: "flex", @@ -50,6 +51,12 @@ const HeroPage = ({ image, }) => { const { t } = useTranslation(); + + const scrollToSection = () => { + const section = document.getElementById("target-section"); + section.scrollIntoView({ behavior: "smooth" }); + }; + return ( @@ -62,7 +69,7 @@ const HeroPage = ({ justifyContent: "center", alignItems: "center", gap: 8, - minHeight: "calc(100vh - 122px)", + minHeight: "calc(100vh - 232px)", "@media (max-width: 385px)": { minHeight: "calc(100vh - 90px)", }, @@ -98,27 +105,45 @@ const HeroPage = ({ {text2} - - + + + + + + diff --git a/frontend/front/src/pages/Public/Pages/Home/Home.js b/frontend/front/src/pages/Public/Pages/Home/Home.js index 2493e415..6893b4be 100644 --- a/frontend/front/src/pages/Public/Pages/Home/Home.js +++ b/frontend/front/src/pages/Public/Pages/Home/Home.js @@ -39,9 +39,9 @@ const Home = () => { link="https://www.cenhud.com/en/my-energy/save-energy-money/energy-calculators/fuel-switching-calculator/" /> - + {/* CARDS LINKS TO SURVEY AND ABOUT PAGES */} - + From 2171c627a7e44d612708d1ffbcec1707b99c2435 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 11:23:34 -0400 Subject: [PATCH 51/74] Refatored the code on the hero page --- .../src/pages/Public/Pages/Home/HeroPage.js | 188 +++++++++--------- 1 file changed, 93 insertions(+), 95 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 8228312b..a5ef18c3 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -9,38 +9,42 @@ import { Link as MuiLink } from "@mui/material"; import ArrowDownwardIcon from "@mui/icons-material/KeyboardArrowDown"; const HeroWrapper = styled("div")(({ theme, image }) => ({ - display: "flex", - alignItems: "center", - justifyContent: "center", - minHeight: "350px", - position: "relative", + height: "calc(100vh - 120px)", backgroundImage: `url(${image})`, backgroundSize: "cover", backgroundPosition: "center", backgroundRepeat: "no-repeat", - "& .text-wrapper": { - width: "100vw", - display: "flex", - flexDirection: "column", - justifyContent: "center", - alignContent: "center", - textAlign: "center", - position: "relative", - zIndex: 1, - }, + position: "relative", "& .text-overlay": { - margin: "0 auto", - width: "100%", - minHeight: "350px", - top: "143px", - left: 0, - right: 0, - bottom: 0, + height: "calc(100vh - 120px)", background: "var(--accent-1)", - boxSizing: "border-box", }, })); +const ArrowDown = () => { + const scrollToSection = () => { + const section = document.getElementById("target-section"); + section.scrollIntoView({ behavior: "smooth" }); + }; + + return ( + + + + ); +}; + const HeroPage = ({ title, titleBold, @@ -52,60 +56,69 @@ const HeroPage = ({ }) => { const { t } = useTranslation(); - const scrollToSection = () => { - const section = document.getElementById("target-section"); - section.scrollIntoView({ behavior: "smooth" }); - }; - return ( - - - - - - - - {text1} - {link !== "" && ( - - {textBold} - - )} - {text2} - - - + + + + + + + {text1} + {link !== "" && ( + + {textBold} + + )} + {text2} + + + + + - + From 1548ade1297fbf117ee355c984b2e35afe1cfba6 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 11:40:45 -0400 Subject: [PATCH 53/74] Refatored the code on the hero page - part 3 --- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index a6c7a61b..50fa56a3 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -145,7 +145,7 @@ const HeroPage = ({ From 9c4a7538744cc3e245d3b665046050e00ae27d74 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 12:06:23 -0400 Subject: [PATCH 54/74] Refatored the code on the hero page - part 4 --- .../src/pages/Public/Pages/Home/HeroPage.js | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 50fa56a3..123b2533 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -9,14 +9,23 @@ import { Link as MuiLink } from "@mui/material"; import ArrowDownwardIcon from "@mui/icons-material/KeyboardArrowDown"; const HeroWrapper = styled("div")(({ theme, image }) => ({ - height: "calc(100vh - 120px)", + height: "calc(100vh - 124px)", + position: "absolute", + bottom: 0, + paddingBottom: "5rem", + + width: "100%", backgroundImage: `url(${image})`, backgroundSize: "cover", backgroundPosition: "center", backgroundRepeat: "no-repeat", position: "relative", "& .text-overlay": { - height: "calc(100vh - 120px)", + width: "100%", + position: "absolute", + paddingBottom: "3rem", + paddingTop: "2rem", + height: "calc(100vh - 124px)", background: "var(--accent-1)", }, })); @@ -71,7 +80,7 @@ const HeroPage = ({ {t("public.home.hero.button")} - + From d0690848c73c25b903d0aebb88426552d4b3c576 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 12:39:49 -0400 Subject: [PATCH 55/74] Refatored the code on the hero page - part 5 --- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 123b2533..833c7914 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -13,7 +13,6 @@ const HeroWrapper = styled("div")(({ theme, image }) => ({ position: "absolute", bottom: 0, paddingBottom: "5rem", - width: "100%", backgroundImage: `url(${image})`, backgroundSize: "cover", From 6cf59d6b27ed4c256262c436b182de4de3186684 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 12:57:21 -0400 Subject: [PATCH 56/74] Refatored the code on the hero page - part 6 --- .../src/pages/Public/Pages/Home/HeroPage.js | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 833c7914..50fa56a3 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -9,22 +9,14 @@ import { Link as MuiLink } from "@mui/material"; import ArrowDownwardIcon from "@mui/icons-material/KeyboardArrowDown"; const HeroWrapper = styled("div")(({ theme, image }) => ({ - height: "calc(100vh - 124px)", - position: "absolute", - bottom: 0, - paddingBottom: "5rem", - width: "100%", + height: "calc(100vh - 120px)", backgroundImage: `url(${image})`, backgroundSize: "cover", backgroundPosition: "center", backgroundRepeat: "no-repeat", position: "relative", "& .text-overlay": { - width: "100%", - position: "absolute", - paddingBottom: "3rem", - paddingTop: "2rem", - height: "calc(100vh - 124px)", + height: "calc(100vh - 120px)", background: "var(--accent-1)", }, })); @@ -79,7 +71,7 @@ const HeroPage = ({ {t("public.home.hero.button")} - + From 6613577ffaca937f0b6cab6fd0690ee222e913f7 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Sun, 22 Oct 2023 13:07:18 -0400 Subject: [PATCH 57/74] Refatored the code on the hero page - part 7 --- frontend/front/src/pages/Public/Pages/Home/HeroPage.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js index 50fa56a3..90af2f20 100644 --- a/frontend/front/src/pages/Public/Pages/Home/HeroPage.js +++ b/frontend/front/src/pages/Public/Pages/Home/HeroPage.js @@ -10,12 +10,14 @@ import ArrowDownwardIcon from "@mui/icons-material/KeyboardArrowDown"; const HeroWrapper = styled("div")(({ theme, image }) => ({ height: "calc(100vh - 120px)", + minHeight: "450px", backgroundImage: `url(${image})`, backgroundSize: "cover", backgroundPosition: "center", backgroundRepeat: "no-repeat", position: "relative", "& .text-overlay": { + minHeight: "450px", height: "calc(100vh - 120px)", background: "var(--accent-1)", }, @@ -70,8 +72,8 @@ const HeroPage = ({ > Date: Mon, 23 Oct 2023 13:17:57 -0400 Subject: [PATCH 58/74] Translated the 'public/about-us' page using i18n --- .../Public/.vscode/i18n-ally-reviews.yml | 12 ++ .../src/pages/Public/Pages/AboutUs/AboutUs.js | 113 +++++------- .../pages/Public/Pages/AboutUs/PartnerTile.js | 166 ++++++++++++++---- .../front/src/pages/Public/locales/en.json | 13 ++ .../src/pages/Public/locales/es-419.json | 13 ++ .../front/src/pages/Public/locales/ht.json | 13 ++ .../front/src/pages/Public/locales/pt-BR.json | 13 ++ 7 files changed, 236 insertions(+), 107 deletions(-) diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index f0a41b08..30648b4e 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -337,3 +337,15 @@ reviews: type: request_change time: '2023-10-21T01:51:03.507Z' resolved: true + public.about-us.mcec: + locales: + en: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: e1FkAxgn2HeTvHT4UQUzR + comment: '' + suggestion: '' + type: approve + time: '2023-10-23T16:38:02.522Z' diff --git a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js index db9bb536..f7c2ca65 100644 --- a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js +++ b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js @@ -1,4 +1,5 @@ import React from "react"; +import { useTranslation, Trans } from "react-i18next"; import { Box, Typography, @@ -18,6 +19,8 @@ import moc from "../../../../assets/images/partnersLogo/moc.png"; import Heading1BlueBgGround from "../../Components/Typography/Heading1BlueBgGround"; function AboutUs() { + const { t } = useTranslation(); + return ( - + - + - The Boston Heat Pump Accelerator (BHPA) works to support - increased access for Boston homeowners to heat pumps and related - resources, helping to reduce costs for residents, increase - community resilience, and shift the region to low-carbon - technologies. This initiative takes no funding from companies or - heat pump installers - it supports overall access to heat pumps - only, via education and awareness efforts. + + The Boston Heat Pump Accelerator (BHPA) works to support + increased access for Boston homeowners to heat pumps and related + resources, helping to reduce costs for residents, increase + community resilience, and shift the region to low-carbon + technologies. This initiative takes no funding from companies or + heat pump installers - it supports overall access to heat pumps + only, via education and awareness efforts. + @@ -60,77 +65,43 @@ function AboutUs() { - - The Urban League of Eastern Massachusetts (ULEM) - {" "} - is the sponsor of the BHPA effort. Since 1919, ULEM has - delivered workforce and economic development services and - programs to increase self-reliance of residents of the Boston - community and surrounding metropolitan areas. ULEM is a 501c3 - nonprofit organization and one of the oldest affiliates within - the National Urban League movement.{" "} + + The + + Urban League of Eastern Massachusetts (ULEM) + + is the sponsor of the BHPA effort. Since 1919, ULEM has + delivered workforce and economic development services and + programs to increase self-reliance of residents of the + Boston community and surrounding metropolitan areas. ULEM is + a 501c3 nonprofit organization and one of the oldest + affiliates within the National Urban League movement. + - The BHPA project is directed by ULEM Board Member Christopher - Scranton, in coordination with core partners, listed below. + {t("public.about-us.ulem2")} - - BHPA CORE PARTNERS + + + {t("public.about-us.bhpa-core-partners")} + - - - - - - - - - - - +
diff --git a/frontend/front/src/pages/Public/Pages/AboutUs/PartnerTile.js b/frontend/front/src/pages/Public/Pages/AboutUs/PartnerTile.js index 4dbb4505..a37b20d0 100644 --- a/frontend/front/src/pages/Public/Pages/AboutUs/PartnerTile.js +++ b/frontend/front/src/pages/Public/Pages/AboutUs/PartnerTile.js @@ -1,42 +1,136 @@ import React from "react"; -import { Box, Stack, Typography, Link } from "@mui/material"; +import { useTranslation, Trans } from "react-i18next"; +import { Box, Stack, Typography, Link, Divider } from "@mui/material"; +import mcec from "../../../../assets/images/partnersLogo/MACleanEnergy.png"; +import cfb from "../../../../assets/images/partnersLogo/CFB.png"; +import cfa from "../../../../assets/images/partnersLogo/CFA.png"; +import heatsmart from "../../../../assets/images/partnersLogo/HeatSmart.png"; +import pcb from "../../../../assets/images/partnersLogo/powercorp-boston.jpeg"; +import moc from "../../../../assets/images/partnersLogo/moc.png"; + +const PartnerTile = () => { + const { t } = useTranslation(); + + const partners = [ + { + initialText: "The ", + partnerName: "Massachusetts Clean Energy Center (MassCEC)", + text: ` is a quasi-public state economic development agency dedicated to accelerating the growth of the clean energy sector across the Commonwealth, to spur job creation, deliver statewide environmental benefits, and to secure long-term economic growth for the people of Massachusetts. MassCEC provided primary funding to the BHPA project via the EmPower grant program.`, + image: mcec, + website: "https://www.masscec.com/", + textTranslationKey: t("public.about-us.mcec"), + }, + { + initialText: "", + partnerName: "Code For Boston (CFB)", + text: "is a volunteer civic technology and social change organization. CfB is made up of developers, designers, data geeks, citizen activists, and many others who use creative technology to solve civic and social problems. CfB staff and volunteers provided core elements of the BHPA project.", + image: cfb, + website: "https://www.codeforboston.org/", + textTranslationKey: t("public.about-us.cfb"), + }, + { + initialText: "", + partnerName: "Code For America (CFA)", + text: "is a 501(c)(3) nonprofit founded in 2009 to improve government services for all, starting with those who need them most. The CfA Brigade Network provided in-kind staff support to the BHPA project via the 2022 Impact Sprints program.", + image: cfa, + website: "https://codeforamerica.org/", + textTranslationKey: t("public.about-us.cfa"), + }, + { + initialText: "The ", + partnerName: "HeatSmart Alliance", + text: "is a volunteer group that promotes adoption of low-emissions heating, cooling, and related technologies in local communities. The Alliance staff provided technical expertise and guidance to the BHPA project.", + image: heatsmart, + website: "https://heatsmartalliance.org/", + textTranslationKey: t("public.about-us.heat-smart"), + }, + { + initialText: "", + partnerName: "City of Boston - PowerCorpsBOS (PCB)", + text: "is a green jobs program that provides young adults with training, career readiness support, and connections to employers in the green industry. PCB provided support to the BHPA surveying effort.", + image: pcb, + website: + "https://www.boston.gov/departments/workforce-development/powercorpsbos", + textTranslationKey: t("public.about-us.pcb"), + }, + { + initialText: "", + partnerName: "Mass Open Cloud (MOC)", + text: "is a laboratory for cloud research and innovation. Since its creation in 2013, with support from the Mass Tech Collaborative, it has provided a production cloud that has enabled innovation by a broad community of industry and research partners, used by thousands of students and researchers, and supported tens of millions of dollars in associated research grants that have resulted in contributions to open source software and hundreds of publications.", + image: moc, + website: "https://massopen.cloud/", + textTranslationKey: t("public.about-us.moc"), + }, + ]; -const PartnerTile = ({ partnerName, paragraphText, image, website }) => { return ( - - - - - - - - - {partnerName} - {" "} - {paragraphText} - - - - + <> + + {partners.map( + ( + { + initialText, + partnerName, + text, + image, + website, + textTranslationKey, + }, + index, + array + ) => ( + + + + + + + + + {partnerName} + , + ]} + > + + + + {index !== array.length - 1 && ( + + )} + + ) + )} + + ); }; diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index e29a6bf0..72047e31 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -160,6 +160,19 @@ "text2": "Get started here!", "button": "GET A HEAT PUMP" } + }, + "about-us": { + "headingbg": "About the Boston Heat Pump Accelerator", + "bhpa": "The <1>Boston Heat Pump Accelerator (BHPA) works to support increased access for Boston homeowners to heat pumps and related resources, helping to reduce costs for residents, increase community resilience, and shift the region to low-carbon technologies. This initiative takes no funding from companies or heat pump installers - it supports overall access to heat pumps only, via education and awareness efforts.", + "ulem1": "The <1> <5>Urban League of Eastern Massachusetts (ULEM) is the sponsor of the BHPA effort. Since 1919, ULEM has delivered workforce and economic development services and programs to increase self-reliance of residents of the Boston community and surrounding metropolitan areas. ULEM is a 501c3 nonprofit organization and one of the oldest affiliates within the National Urban League movement.", + "ulem2": "The BHPA project is directed by ULEM Board Member Christopher Scranton, in coordination with core partners, listed below.", + "mcec": "The <0>{{partnerName}} is a quasi-public state economic development agency dedicated to accelerating the growth of the clean energy sector across the Commonwealth, to spur job creation, deliver statewide environmental benefits, and to secure long-term economic growth for the people of Massachusetts. MassCEC provided primary funding to the BHPA project via the EmPower grant program.", + "cfb": "<0>{{partnerName}} is a volunteer civic technology and social change organization. CfB is made up of developers, designers, data geeks, citizen activists, and many others who use creative technology to solve civic and social problems. CfB staff and volunteers provided core elements of the BHPA project.", + "cfa": "<0>{{partnerName}} is a 501(c)(3) nonprofit founded in 2009 to improve government services for all, starting with those who need them most. The CfA Brigade Network provided in-kind staff support to the BHPA project via the 2022 Impact Sprints program.", + "heat-smart": "The <0>{{partnerName}} is a volunteer group that promotes adoption of low-emissions heating, cooling, and related technologies in local communities. The Alliance staff provided technical expertise and guidance to the BHPA project.", + "pcb": "<0>{{partnerName}} is a green jobs program that provides young adults with training, career readiness support, and connections to employers in the green industry. PCB provided support to the BHPA surveying effort.", + "moc": "The <0>{{partnerName}} is a laboratory for cloud research and innovation. Since its creation in 2013, with support from the Mass Tech Collaborative, it has provided a production cloud that has enabled innovation by a broad community of industry and research partners, used by thousands of students and researchers, and supported tens of millions of dollars in associated research grants that have resulted in contributions to open source software and hundreds of publications.", + "bhpa-core-partners": "BHPA CORE PARTNERS" } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 9fd95311..66e236c2 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -163,6 +163,19 @@ "text2": "¡Empiece aquí!", "button": "CONSIGUE UNA BOMBA DE CALOR" } + }, + "about-us": { + "mcec": "El <0>{{partnerName}} es una agencia estatal de desarrollo económico cuasi pública dedicada a acelerar el crecimiento del sector de energía limpia en todo el Commonwealth, estimular la creación de empleo, brindar beneficios ambientales en todo el estado y asegurar \ncrecimiento económico a corto plazo para el pueblo de Massachusetts. \nMassCEC proporcionó financiación primaria al proyecto BHPA a través del programa de subvenciones EmPower.", + "cfb": "<0>{{partnerName}} es una organización voluntaria de tecnología cívica y cambio social. \nCfB está formado por desarrolladores, diseñadores, expertos en datos, activistas ciudadanos y muchos otros que utilizan tecnología creativa para resolver problemas cívicos y sociales. \nEl personal y los voluntarios de CfB proporcionaron elementos centrales del proyecto BHPA.", + "cfa": "<0>{{partnerName}} es una organización sin fines de lucro 501(c)(3) fundada en 2009 para mejorar los servicios gubernamentales para todos, empezando por quienes más los necesitan. \nLa CfA Brigade Network brindó apoyo de personal en especie al proyecto BHPA a través del programa Impact Sprints 2022.", + "heat-smart": "El <0>{{partnerName}} es un grupo de voluntarios que promueve la adopción de calefacción, refrigeración y tecnologías relacionadas con bajas emisiones en las comunidades locales. \nEl personal de la Alianza brindó experiencia técnica y orientación al proyecto BHPA.", + "pcb": "<0>{{partnerName}} es un programa de empleos verdes que brinda a los adultos jóvenes capacitación, apoyo para su preparación profesional y conexiones con empleadores en la industria verde. \nPCB brindó apoyo al esfuerzo de encuesta de BHPA.", + "moc": "El <0>{{partnerName}} es un laboratorio para la investigación e innovación en la nube. \nDesde su creación en 2013, con el apoyo de Mass Tech Collaborative, ha proporcionado una nube de producción que ha permitido la innovación por parte de una amplia comunidad de socios industriales y de investigación, utilizada por miles de estudiantes e investigadores, y respaldado decenas de millones de dólares en \nbecas de investigación asociadas que han resultado en contribuciones al software de código abierto y cientos de publicaciones.", + "bhpa-core-partners": "SOCIOS PRINCIPALES DE BHPA", + "headingbg": "Acerca del acelerador de bomba de calor Boston", + "bhpa": "El <1>Acelerador de Bombas de Calor de Boston (BHPA) trabaja para respaldar un mayor acceso de los propietarios de viviendas de Boston a bombas de calor y recursos relacionados, ayudando a reducir los costos para los residentes, aumentar la resiliencia de la comunidad y hacer que la región adopte tecnologías bajas en carbono. \n. \nEsta iniciativa no requiere financiación de empresas ni instaladores de bombas de calor; solo apoya el acceso general a las bombas de calor, a través de esfuerzos de educación y concientización.", + "ulem1": "La <1> <5>Liga Urbana del Este de Massachusetts (ULEM) es el patrocinador del esfuerzo de BHPA. \nDesde 1919, ULEM ha brindado servicios y programas de desarrollo económico y laboral para aumentar la autosuficiencia de los residentes de la comunidad de Boston y las áreas metropolitanas circundantes. \nULEM es una organización sin fines de lucro 501c3 y una de las afiliadas más antiguas dentro del movimiento de la Liga Urbana Nacional.", + "ulem2": "El proyecto BHPA está dirigido por Christopher Scranton, miembro de la junta directiva de ULEM, en coordinación con los socios principales, que se enumeran a continuación." } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index b6f3141f..c86bdfdf 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -163,6 +163,19 @@ "text2": "Kòmanse isit la!", "button": "JWENN YON PONP CHALÈ" } + }, + "about-us": { + "mcec": "<0>{{partnerName}} se yon ajans devlopman ekonomik eta kasi-piblik ki dedye a akselere kwasans sektè enèji pwòp atravè Commonwealth la, pou ankouraje kreyasyon djòb, bay avantaj anviwonmantal nan tout eta a, epi asire lontan. \n- tèm kwasans ekonomik pou moun nan Massachusetts. \nMassCEC te bay finansman prensipal pwojè BHPA atravè pwogram sibvansyon EmPower.", + "cfb": "<0>{{partnerName}} se yon òganizasyon volontè teknoloji sivik ak chanjman sosyal. \nCfB konpoze de devlopè, konsèpteur, done geeks, aktivis sitwayen yo, ak anpil lòt moun ki sèvi ak teknoloji kreyatif pou rezoud pwoblèm sivik ak sosyal. \nAnplwaye ak volontè CfB te bay eleman debaz pwojè BHPA a.", + "cfa": "<0>{{partnerName}} se yon 501(c)(3) san bi likratif ki te fonde an 2009 pou amelyore sèvis gouvènman an pou tout moun, kòmanse ak moun ki pi bezwen yo. \nCfA Brigade Network te bay sipò pèsonèl an kalite pou pwojè BHPA atravè pwogram Impact Sprints 2022 la.", + "heat-smart": "<0>{{partnerName}} a se yon gwoup volontè ki ankouraje adopsyon chofaj, refwadisman ak teknoloji ki gen rapò ak emisyon ki ba nan kominote lokal yo. \nAnplwaye Alliance lan te bay ekspètiz teknik ak konsèy pou pwojè BHPA a.", + "pcb": "<0>{{partnerName}} se yon pwogram travay vèt ki bay jèn adilt fòmasyon, sipò pou preparasyon pou karyè, ak koneksyon ak anplwayè nan endistri vèt la. \nPCB te bay sipò nan efò sondaj BHPA a.", + "moc": "<0>{{partnerName}} se yon laboratwa pou rechèch ak inovasyon sou nwaj. \nDepi kreyasyon li an 2013, ak sipò Mass Tech Collaborative, li te bay yon nwaj pwodiksyon ki te pèmèt inovasyon pa yon gwo kominote endistri ak patnè rechèch, itilize pa plizyè milye etidyan ak chèchè, epi sipòte plizyè dizèn milyon dola nan \nsibvansyon rechèch ki asosye ki te lakòz kontribisyon nan lojisyèl sous louvri ak plizyè santèn piblikasyon.", + "bhpa-core-partners": "BHPA CORE PATÈNÈ", + "headingbg": "Konsènan Boston Heat Pump Accelerator", + "bhpa": "<1>Boston Heat Pump Accelerator (BHPA) travay pou sipòte plis aksè pou pwopriyetè kay Boston yo nan ponp chalè ak resous ki gen rapò, ede diminye depans pou rezidan yo, ogmante rezistans kominote a, epi chanje rejyon an nan teknoloji ki ba kabòn. \n. \nInisyativ sa a pa pran okenn finansman nan men konpayi oswa enstalatè ponp chalè - li sipòte aksè jeneral nan ponp chalè sèlman, atravè efò edikasyon ak konsyantizasyon.", + "ulem1": "<1> <5>Urban League of Eastern Massachusetts (ULEM) se patwone efò BHPA a. \nDepi 1919, ULEM te bay mendèv ak sèvis devlopman ekonomik ak pwogram pou ogmante endepandans rezidan kominote Boston ak zòn metwopolitèn ki antoure yo. \nULEM se yon òganizasyon 501c3 san bi likratif ak youn nan pi ansyen afilye nan mouvman National Urban League la.", + "ulem2": "Se Christopher Scranton Manm Konsèy ULEM ki dirije pwojè BHPA a, an kowòdinasyon ak patnè prensipal yo, ki endike anba a." } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 186dc101..6decb38e 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -163,6 +163,19 @@ "text2": "Comece aqui!", "button": "OBTENHA UMA BOMBA DE CALOR" } + }, + "about-us": { + "mcec": "A <0>{{partnerName}} é uma agência estatal quase pública de desenvolvimento econômico dedicada a acelerar o crescimento do setor de energia limpa em toda a Commonwealth, a estimular a criação de empregos, a proporcionar benefícios ambientais em todo o estado e a garantir longos \ncrescimento económico a longo prazo para o povo de Massachusetts. \nO MassCEC forneceu financiamento primário ao projeto BHPA através do programa de subsídios EmPower.", + "cfb": "<0>{{partnerName}} é uma organização cívica voluntária de tecnologia e mudança social. \nO CfB é composto por desenvolvedores, designers, geeks de dados, ativistas cidadãos e muitos outros que usam tecnologia criativa para resolver problemas cívicos e sociais. \nA equipe e os voluntários do CfB forneceram elementos essenciais do projeto BHPA.", + "cfa": "<0>{{partnerName}} é uma organização sem fins lucrativos 501(c)(3) fundada em 2009 para melhorar os serviços governamentais para todos, começando por aqueles que mais precisam deles. \nA CfA Brigade Network forneceu apoio em espécie ao projeto BHPA por meio do programa 2022 Impact Sprints.", + "heat-smart": "O <0>{{partnerName}} é um grupo de voluntários que promove a adoção de aquecimento, refrigeração e tecnologias relacionadas com baixas emissões em comunidades locais. \nA equipe da Aliança forneceu conhecimentos técnicos e orientação ao projeto BHPA.", + "pcb": "<0>{{partnerName}} é um programa de empregos verdes que oferece a jovens adultos treinamento, apoio para preparação profissional e conexões com empregadores na indústria verde. \nA PCB forneceu apoio ao esforço de levantamento da BHPA.", + "moc": "O <0>{{partnerName}} é um laboratório de pesquisa e inovação em nuvem. \nDesde a sua criação em 2013, com o apoio da Mass Tech Collaborative, forneceu uma nuvem de produção que permitiu a inovação por uma ampla comunidade de parceiros da indústria e de pesquisa, usada por milhares de estudantes e pesquisadores, e apoiou dezenas de milhões de dólares em \nbolsas de pesquisa associadas que resultaram em contribuições para software de código aberto e centenas de publicações.", + "bhpa-core-partners": "PARCEIROS PRINCIPAIS DA BHPA", + "headingbg": "Sobre o acelerador da bomba de calor de Boston", + "bhpa": "O <1>Boston Heat Pump Accelerator (BHPA) trabalha para apoiar o aumento do acesso dos proprietários de residências de Boston às bombas de calor e recursos relacionados, ajudando a reduzir custos para os residentes, aumentar a resiliência da comunidade e mudar a região para tecnologias de baixo carbono \n. \nEsta iniciativa não recebe financiamento de empresas ou instaladores de bombas de calor - apoia apenas o acesso geral a bombas de calor, através de esforços de educação e sensibilização.", + "ulem1": "A <1> <5>Liga Urbana do Leste de Massachusetts (ULEM) é a patrocinadora do esforço da BHPA. \nDesde 1919, a ULEM fornece serviços e programas de força de trabalho e de desenvolvimento econômico para aumentar a autossuficiência dos residentes da comunidade de Boston e das áreas metropolitanas vizinhas. \nA ULEM é uma organização sem fins lucrativos 501c3 e uma das afiliadas mais antigas do movimento da Liga Urbana Nacional.", + "ulem2": "O projeto BHPA é dirigido pelo membro do Conselho da ULEM, Christopher Scranton, em coordenação com os principais parceiros, listados abaixo." } } } From b56c7149c88b83d2257a12eb07cb0e873c449b5d Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 23 Oct 2023 13:19:17 -0400 Subject: [PATCH 59/74] Translated the 'public/about-us' page using i18n --- .../src/pages/Public/Pages/AboutUs/AboutUs.js | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js index f7c2ca65..46e9c8a0 100644 --- a/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js +++ b/frontend/front/src/pages/Public/Pages/AboutUs/AboutUs.js @@ -1,21 +1,8 @@ import React from "react"; import { useTranslation, Trans } from "react-i18next"; -import { - Box, - Typography, - Divider, - Stack, - Link, - Container, -} from "@mui/material"; +import { Box, Typography, Stack, Link, Container } from "@mui/material"; import PartnerTile from "./PartnerTile"; import ulem from "../../../../assets/images/partnersLogo/ULEM.png"; -import mcec from "../../../../assets/images/partnersLogo/MACleanEnergy.png"; -import cfb from "../../../../assets/images/partnersLogo/CFB.png"; -import cfa from "../../../../assets/images/partnersLogo/CFA.png"; -import heatsmart from "../../../../assets/images/partnersLogo/HeatSmart.png"; -import pcb from "../../../../assets/images/partnersLogo/powercorp-boston.jpeg"; -import moc from "../../../../assets/images/partnersLogo/moc.png"; import Heading1BlueBgGround from "../../Components/Typography/Heading1BlueBgGround"; function AboutUs() { From 2c5c08f59d6dcfe110b4c9ea34da98de4be9d4db Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Mon, 23 Oct 2023 14:06:16 -0400 Subject: [PATCH 60/74] Translated the 'public/get-heat-pump' page using i18n --- .../Public/.vscode/i18n-ally-reviews.yml | 12 +++ .../Pages/{GetHeatPump => }/GetHeatPump.js | 88 ++++++++++++++----- .../Public/Pages/GetHeatPump/getHeatPump.json | 38 -------- .../front/src/pages/Public/PublicContainer.js | 2 +- .../front/src/pages/Public/locales/en.json | 22 +++++ .../src/pages/Public/locales/es-419.json | 22 +++++ .../front/src/pages/Public/locales/ht.json | 22 +++++ .../front/src/pages/Public/locales/pt-BR.json | 22 +++++ 8 files changed, 165 insertions(+), 63 deletions(-) rename frontend/front/src/pages/Public/Pages/{GetHeatPump => }/GetHeatPump.js (67%) delete mode 100644 frontend/front/src/pages/Public/Pages/GetHeatPump/getHeatPump.json diff --git a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml index 30648b4e..df83bb03 100644 --- a/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml +++ b/frontend/front/src/pages/Public/.vscode/i18n-ally-reviews.yml @@ -349,3 +349,15 @@ reviews: suggestion: '' type: approve time: '2023-10-23T16:38:02.522Z' + public.get-heat-pump.step1.itemE: + locales: + pt-BR: + comments: + - user: + name: thiagobadini + email: thiagobardini@hotmail.com + id: jvkqez29ESzNkkuTHTQ4c + comment: '' + suggestion: '' + type: approve + time: '2023-10-23T17:55:08.671Z' diff --git a/frontend/front/src/pages/Public/Pages/GetHeatPump/GetHeatPump.js b/frontend/front/src/pages/Public/Pages/GetHeatPump.js similarity index 67% rename from frontend/front/src/pages/Public/Pages/GetHeatPump/GetHeatPump.js rename to frontend/front/src/pages/Public/Pages/GetHeatPump.js index 119f4d27..5cdf8ef0 100644 --- a/frontend/front/src/pages/Public/Pages/GetHeatPump/GetHeatPump.js +++ b/frontend/front/src/pages/Public/Pages/GetHeatPump.js @@ -10,10 +10,10 @@ import { useMediaQuery, } from "@mui/material"; import React from "react"; -import Heading1BlueBgGround from "../../Components/Typography/Heading1BlueBgGround"; -import pageContent from "./getHeatPump.json"; -import Heading2 from "../../Components/Typography/Heading2"; -import ButtonDarkBlue from "../../Components/Button/ButtonDarkBlue"; +import { useTranslation, Trans } from "react-i18next"; +import Heading1BlueBgGround from "../Components/Typography/Heading1BlueBgGround"; +import Heading2 from "../Components/Typography/Heading2"; +import ButtonDarkBlue from "../Components/Button/ButtonDarkBlue"; import { styled } from "@mui/material/styles"; const StyledSectionNumber = styled(Typography)(({ theme }) => ({ @@ -29,9 +29,50 @@ const StyledSectionNumber = styled(Typography)(({ theme }) => ({ })); const GetHeatPump = () => { + const { t } = useTranslation(); const theme = useTheme(); const isSmallerThanMd = useMediaQuery(theme.breakpoints.down("md")); + const pageContent = [ + { + step: "1", + title: t("public.get-heat-pump.step1.title"), + subtitle: "", + description: [ + t("public.get-heat-pump.step1.itemA"), + t("public.get-heat-pump.step1.itemB"), + t("public.get-heat-pump.step1.itemC"), + t("public.get-heat-pump.step1.itemD"), + { + text: "Estimate Your savings ", + link: { + text: "with this link calculator", + url: "https://www.cenhud.com/en/my-energy/save-energy-money/energy-calculators/fuel-switching-calculator/", + }, + textTranslationKey: t("public.get-heat-pump.step1.itemE"), + }, + ], + textButton: "", + linkButton: "", + }, + { + step: "2", + title: t("public.get-heat-pump.step2.title"), + subtitle: t("public.get-heat-pump.step2.title2"), + description: [], + textButton: t("public.get-heat-pump.step2.buttonText"), + linkButton: "https://heatsmartalliance.org/request-a-coach-2/", + }, + { + step: "3", + title: t("public.get-heat-pump.step3.title"), + subtitle: "", + description: [], + textButton: t("public.get-heat-pump.step3.buttonText"), + linkButton: "https://heatsmartalliance.org/resources/", + }, + ]; + return ( { }} > {/*Page Title */} - + @@ -53,12 +94,10 @@ const GetHeatPump = () => { }} > {/*SubTile */} - + - To get a heat pump, start by getting some details about your home so - you can have an informed conversation about how heat pumps can help - you. + {t("public.get-heat-pump.subtitle")} {/* Sections */} @@ -150,21 +189,22 @@ const GetHeatPump = () => { {typeof item === "string" ? ( item ) : ( - <> - {item.text}{" "} - - {item.link.text} - - + , + ]} + > )} ))} diff --git a/frontend/front/src/pages/Public/Pages/GetHeatPump/getHeatPump.json b/frontend/front/src/pages/Public/Pages/GetHeatPump/getHeatPump.json deleted file mode 100644 index 8ecc254e..00000000 --- a/frontend/front/src/pages/Public/Pages/GetHeatPump/getHeatPump.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "step": "1", - "title": "Get Details About Your Home Heating/Cooling Needs", - "subtitle": "", - "description": [ - "Square footage", - "How many floors", - "Current HVAC system", - "Current utility bills/usage", - { - "text": "Estimate Your savings ", - "link": { - "text": "with this link calculator", - "url": "https://www.cenhud.com/en/my-energy/save-energy-money/energy-calculators/fuel-switching-calculator/" - } - } - ], - "textButton": "", - "linkButton": "" - }, - { - "step": "2", - "title": "Talk with a Heat Pump Coach", - "subtitle": "(Optional but recommend)", - "description": [], - "textButton": "REQUEST A COACH", - "linkButton": "https://heatsmartalliance.org/request-a-coach-2/" - }, - { - "step": "3", - "title": "Get Details About Your Home Heating/Cooling Needs", - "subtitle": "", - "description": [], - "textButton": "RESOURCES", - "linkButton": "https://heatsmartalliance.org/resources/" - } -] diff --git a/frontend/front/src/pages/Public/PublicContainer.js b/frontend/front/src/pages/Public/PublicContainer.js index e224b145..c73528c5 100644 --- a/frontend/front/src/pages/Public/PublicContainer.js +++ b/frontend/front/src/pages/Public/PublicContainer.js @@ -7,7 +7,7 @@ import Navbar from "./Layout/Navbar"; import Footer from "./Layout/Footer"; import { SurveyPage } from "./Pages/SurveyPage"; import GetInvolved from "./Pages/GetInvolved"; -import GetHeatPump from "./Pages/GetHeatPump/GetHeatPump"; +import GetHeatPump from "./Pages/GetHeatPump"; import BenefitsHeatPumps from "./Pages/BenefitsHeatPumps"; import AboutUs from "./Pages/AboutUs/AboutUs"; import AboutHeatPump from "./Pages/AboutHeatPump/AboutHeatPump"; diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index 72047e31..ccaa2346 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -173,6 +173,28 @@ "pcb": "<0>{{partnerName}} is a green jobs program that provides young adults with training, career readiness support, and connections to employers in the green industry. PCB provided support to the BHPA surveying effort.", "moc": "The <0>{{partnerName}} is a laboratory for cloud research and innovation. Since its creation in 2013, with support from the Mass Tech Collaborative, it has provided a production cloud that has enabled innovation by a broad community of industry and research partners, used by thousands of students and researchers, and supported tens of millions of dollars in associated research grants that have resulted in contributions to open source software and hundreds of publications.", "bhpa-core-partners": "BHPA CORE PARTNERS" + }, + "get-heat-pump": { + "headingBg": "How To Get a Heat Pump?", + "heading2": "Calculate your savings in 3 easy steps", + "subtitle": "To get a heat pump, start by getting some details about your home so you can have an informed conversation about how heat pumps can help you.", + "step1": { + "title": "Get Details About Your Home Heating/Cooling Needs", + "itemA": "Square footage", + "itemB": "How many floors", + "itemC": "Current HVAC system", + "itemD": "Current utility bills/usage", + "itemE": "Estimate Your savings <0>with this link calculator" + }, + "step2": { + "title": "Talk with a Heat Pump Coach", + "title2": "(Optional but recommend)", + "buttonText": "REQUEST A COACH" + }, + "step3": { + "title": "Get Details About Your Home Heating/Cooling Needs", + "buttonText": "RESOURCES" + } } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index 66e236c2..f58c18e1 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -176,6 +176,28 @@ "bhpa": "El <1>Acelerador de Bombas de Calor de Boston (BHPA) trabaja para respaldar un mayor acceso de los propietarios de viviendas de Boston a bombas de calor y recursos relacionados, ayudando a reducir los costos para los residentes, aumentar la resiliencia de la comunidad y hacer que la región adopte tecnologías bajas en carbono. \n. \nEsta iniciativa no requiere financiación de empresas ni instaladores de bombas de calor; solo apoya el acceso general a las bombas de calor, a través de esfuerzos de educación y concientización.", "ulem1": "La <1> <5>Liga Urbana del Este de Massachusetts (ULEM) es el patrocinador del esfuerzo de BHPA. \nDesde 1919, ULEM ha brindado servicios y programas de desarrollo económico y laboral para aumentar la autosuficiencia de los residentes de la comunidad de Boston y las áreas metropolitanas circundantes. \nULEM es una organización sin fines de lucro 501c3 y una de las afiliadas más antiguas dentro del movimiento de la Liga Urbana Nacional.", "ulem2": "El proyecto BHPA está dirigido por Christopher Scranton, miembro de la junta directiva de ULEM, en coordinación con los socios principales, que se enumeran a continuación." + }, + "get-heat-pump": { + "headingBg": "¿Cómo conseguir una bomba de calor?", + "heading2": "Calcula tus ahorros en 3 sencillos pasos", + "subtitle": "Para adquirir una bomba de calor, comience por obtener algunos detalles sobre su hogar para poder tener una conversación informada sobre cómo las bombas de calor pueden ayudarlo.", + "step1": { + "title": "Obtenga detalles sobre las necesidades de calefacción/refrigeración de su hogar", + "itemE": "Calcule sus ahorros <0>con esta calculadora de enlace", + "itemA": "Pies cuadrados", + "itemB": "Cuantos pisos", + "itemC": "Sistema HVAC actual", + "itemD": "Facturas/uso de servicios públicos actuales" + }, + "step2": { + "title": "Hable con un entrenador de bombas de calor", + "title2": "(Opcional pero recomendado)", + "buttonText": "SOLICITA UN ENTRENADOR" + }, + "step3": { + "title": "Obtenga detalles sobre las necesidades de calefacción/refrigeración de su hogar", + "buttonText": "RECURSOS" + } } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index c86bdfdf..a299f819 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -176,6 +176,28 @@ "bhpa": "<1>Boston Heat Pump Accelerator (BHPA) travay pou sipòte plis aksè pou pwopriyetè kay Boston yo nan ponp chalè ak resous ki gen rapò, ede diminye depans pou rezidan yo, ogmante rezistans kominote a, epi chanje rejyon an nan teknoloji ki ba kabòn. \n. \nInisyativ sa a pa pran okenn finansman nan men konpayi oswa enstalatè ponp chalè - li sipòte aksè jeneral nan ponp chalè sèlman, atravè efò edikasyon ak konsyantizasyon.", "ulem1": "<1> <5>Urban League of Eastern Massachusetts (ULEM) se patwone efò BHPA a. \nDepi 1919, ULEM te bay mendèv ak sèvis devlopman ekonomik ak pwogram pou ogmante endepandans rezidan kominote Boston ak zòn metwopolitèn ki antoure yo. \nULEM se yon òganizasyon 501c3 san bi likratif ak youn nan pi ansyen afilye nan mouvman National Urban League la.", "ulem2": "Se Christopher Scranton Manm Konsèy ULEM ki dirije pwojè BHPA a, an kowòdinasyon ak patnè prensipal yo, ki endike anba a." + }, + "get-heat-pump": { + "headingBg": "Ki jan yo jwenn yon ponp chalè?", + "heading2": "Kalkile ekonomi ou nan 3 etap fasil", + "subtitle": "Pou jwenn yon ponp chalè, kòmanse pa jwenn kèk detay sou kay ou pou ou ka gen yon konvèsasyon enfòme sou fason ponp chalè ka ede w.", + "step1": { + "title": "Jwenn detay sou bezwen chofaj/refwadisman lakay ou", + "itemE": "Estime ekonomi ou <0>ak kalkilatris lyen sa a", + "itemA": "Pye kare", + "itemB": "Konbyen etaj", + "itemC": "Aktyèl sistèm HVAC", + "itemD": "Bòdwo sèvis piblik aktyèl / itilizasyon" + }, + "step2": { + "title": "Pale ak yon antrenè ponp chalè", + "title2": "(Opsyonèl, men rekòmande)", + "buttonText": "MANDE YON ANTRENÈ" + }, + "step3": { + "title": "Jwenn detay sou bezwen chofaj/refwadisman lakay ou", + "buttonText": "RESOUS" + } } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index 6decb38e..f0b32877 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -176,6 +176,28 @@ "bhpa": "O <1>Boston Heat Pump Accelerator (BHPA) trabalha para apoiar o aumento do acesso dos proprietários de residências de Boston às bombas de calor e recursos relacionados, ajudando a reduzir custos para os residentes, aumentar a resiliência da comunidade e mudar a região para tecnologias de baixo carbono \n. \nEsta iniciativa não recebe financiamento de empresas ou instaladores de bombas de calor - apoia apenas o acesso geral a bombas de calor, através de esforços de educação e sensibilização.", "ulem1": "A <1> <5>Liga Urbana do Leste de Massachusetts (ULEM) é a patrocinadora do esforço da BHPA. \nDesde 1919, a ULEM fornece serviços e programas de força de trabalho e de desenvolvimento econômico para aumentar a autossuficiência dos residentes da comunidade de Boston e das áreas metropolitanas vizinhas. \nA ULEM é uma organização sem fins lucrativos 501c3 e uma das afiliadas mais antigas do movimento da Liga Urbana Nacional.", "ulem2": "O projeto BHPA é dirigido pelo membro do Conselho da ULEM, Christopher Scranton, em coordenação com os principais parceiros, listados abaixo." + }, + "get-heat-pump": { + "headingBg": "Como obter uma bomba de calor?", + "heading2": "Calcule suas economias em 3 etapas fáceis", + "subtitle": "Para obter uma bomba de calor, comece por obter alguns detalhes sobre a sua casa para que possa ter uma conversa informada sobre como as bombas de calor podem ajudá-lo.", + "step1": { + "title": "Obtenha detalhes sobre suas necessidades de aquecimento/resfriamento doméstico", + "itemE": "Estime suas economias <0>com esta calculadora no link", + "itemA": "Metragem quadrada", + "itemB": "Quantos andares", + "itemC": "Sistema HVAC atual", + "itemD": "Contas/uso de serviços públicos atuais" + }, + "step2": { + "title": "Fale com um treinador de bomba de calor", + "title2": "(Opcional, mas recomendado)", + "buttonText": "SOLICITE UM TREINADOR" + }, + "step3": { + "title": "Obtenha detalhes sobre suas necessidades de aquecimento/resfriamento doméstico", + "buttonText": "RECURSOS" + } } } } From af17055feab54e85364ce2544b5ac0cf2f7a7557 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 25 Oct 2023 13:43:47 -0400 Subject: [PATCH 61/74] Translated the 'public/privacy-policy' page using i18n --- .../front/src/pages/Public/Layout/Footer.js | 4 ++ .../Pages/PrivacyPolicy/PrivacyPolicy.js | 66 +++++++++++++++---- .../Pages/PrivacyPolicy/privacyContent.json | 30 --------- .../front/src/pages/Public/locales/en.json | 37 +++++++++++ .../src/pages/Public/locales/es-419.json | 37 +++++++++++ .../front/src/pages/Public/locales/ht.json | 37 +++++++++++ .../front/src/pages/Public/locales/pt-BR.json | 37 +++++++++++ 7 files changed, 205 insertions(+), 43 deletions(-) delete mode 100644 frontend/front/src/pages/Public/Pages/PrivacyPolicy/privacyContent.json diff --git a/frontend/front/src/pages/Public/Layout/Footer.js b/frontend/front/src/pages/Public/Layout/Footer.js index 6e6cc787..ce020af8 100644 --- a/frontend/front/src/pages/Public/Layout/Footer.js +++ b/frontend/front/src/pages/Public/Layout/Footer.js @@ -37,6 +37,10 @@ const getFooterItems = () => ({ link: "get-involved", value: "public.global-labels.get-involved", }, + survey: { + link: "survey", + value: "public.global-labels.survey", + }, testimonials: { link: "testimonial-section", value: "public.global-labels.learn-more.items.testimonials", diff --git a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js b/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js index 5a2734a3..5942a81f 100644 --- a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js +++ b/frontend/front/src/pages/Public/Pages/PrivacyPolicy/PrivacyPolicy.js @@ -1,10 +1,9 @@ -import { useTranslation } from "react-i18next"; +import { useTranslation, Trans } from "react-i18next"; import { styled } from "@mui/material/styles"; import { Container, Typography, Box } from "@mui/material"; import MuiAccordion from "@mui/material/Accordion"; import MuiAccordionSummary from "@mui/material/AccordionSummary"; import MuiAccordionDetails from "@mui/material/AccordionDetails"; -import pageContent from "./privacyContent.json"; import Heading1BlueBgGround from "../../Components/Typography/Heading1BlueBgGround"; import Heading2 from "../../Components/Typography/Heading2"; import ArrowForwardIosSharpIcon from "@mui/icons-material/ArrowForwardIosSharp"; @@ -40,6 +39,37 @@ const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ function PrivacyPolicy() { const { t } = useTranslation(); + const pageContent = [ + { + heading: t("public.privacy.items.item1.title"), + content: t("public.privacy.items.item1.text"), + }, + { + heading: t("public.privacy.items.item2.title"), + content: t("public.privacy.items.item2.text"), + }, + { + heading: t("public.privacy.items.item3.title"), + content: t("public.privacy.items.item3.text"), + }, + { + heading: t("public.privacy.items.item4.title"), + content: t("public.privacy.items.item4.text"), + }, + { + heading: t("public.privacy.items.item5.title"), + content: t("public.privacy.items.item5.text"), + }, + { + heading: t("public.privacy.items.item6.title"), + content: t("public.privacy.items.item6.text"), + }, + { + heading: t("public.privacy.items.item7.title"), + content: t("public.privacy.items.item7.text"), + }, + ]; + return ( - + - Last updated: April 19th, 2023
- Our{" "} - - Privacy Policy - {" "} - has been updated. + {t("public.privacy.textDate")}
+ + Privacy Policy + , + ]} + >
- **This privacy policy of the Boston Heat Pump Accelerator (BHPA) will - help you better understand how we collect, share, and use your - personal information.** + {t("public.privacy.text3")}
diff --git a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/privacyContent.json b/frontend/front/src/pages/Public/Pages/PrivacyPolicy/privacyContent.json deleted file mode 100644 index ca6d50c6..00000000 --- a/frontend/front/src/pages/Public/Pages/PrivacyPolicy/privacyContent.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "heading": "What data does the BHPA use?", - "content": "The data used for the BHPA project was the open, public data from the City of Boston's online Property Assessor's database. This data is not privileged or private. It is open to the public." - }, - { - "heading": "What did BHPA do with the data?", - "content": "BHPA used the Boston Assessor's data to identify homeowner-occupied homes in the the neighborhoods of Dorchester, Roxbury, and Mattapan. This enabled the project organizers to develop a list of neighborhood residents who could potentially participate in a survey intended for the owners of homes. Essentially, it helps the BHPA avoid sending surveyors to an address where the only residents/occupants wouldn't be able to participate in the survey. BHPA plans to use the anonymized data collected from surveys and the open source code to promote public access to generic information that hopefully will enable Boston-area users to make better informed decisions on heat pumps in their own personal environments." - }, - { - "heading": "Why is the BHPA survey only for homeowners and not for renters?", - "content": "Renters in Boston are residents and important voices in the community. Renters living in multi-unit homes and/or apartment buildings are already eligible to participate in other programs and initiatives, such as BlocPower. Separately, homeowners of owner-occupied homes (usually have legal control of their building and can make decisions about switching heating and cooling systems in ways that renters (usually) cannot. Both homeowners and renters have important voices and parts to play in the efforts around switching to cleaner, lower-cost heating and cooling. It makes sense to engage with these groups with an individualized and customized approach- the BHPA project focuses on homeowners." - }, - { - "heading": "Why does the City of Boston have data on the houses and owners of homes in the city of Boston?", - "content": "The City of Boston is the best resource for this question. The BHPA can offer our own take: During the purchase of a property, basic information involved in the transaction becomes part of the property record. This information is public- it is available to anyone who seeks it. Nearly every city, town, and/or county in the United States collects basically the same information and also makes it available to the public." - }, - { - "heading": "What data exactly does the City of Boston have about me and my property?", - "content": "The City of Boston's Property Assessor's database is easy to use. To learn more about the data that the city has, feel free to look up the address in question in their database here [LINK]" - }, - { - "heading": "What data about me and my property was used in this project? [and it harmed/reduced/invaded my privacy...]", - "content": "The Boston Heat Pump Accelerator uses publicly available data from the City of Boston Assessor's office to reach out to homeowners in Boston neighborhoods to survey residents about their knowledge of heat pumps. Since Massachusetts has some discounts for residents based on being a resident and a homeowner, we are reaching out to folks who are eligible for these discounts, and we use public data to do this. We also use open source code to help create tools to make the lists for people to contact. The Boston Heat Pump Accelerator works with volunteers in the Code for Boston community to create open source computer code in our technology. The code is public on GitHub in case you would like to inspect it." - }, - { - "heading": "What happens to the input that people provide to the survey (either in person or online)?", - "content": "When you take the BHPA survey about heat pumps, it is anonymized and collected in aggregate. We report data we collect in our survey to the partners listed on our Partners page to help them improve their programs, so we can help more people get the discounts for heat pumps for which they are eligible. We do not sell your data to 3rd parties. If you have questions about how your data is used, please contact privacy@bostonhpa.org." - } -] diff --git a/frontend/front/src/pages/Public/locales/en.json b/frontend/front/src/pages/Public/locales/en.json index ccaa2346..92c6fd4c 100644 --- a/frontend/front/src/pages/Public/locales/en.json +++ b/frontend/front/src/pages/Public/locales/en.json @@ -195,6 +195,43 @@ "title": "Get Details About Your Home Heating/Cooling Needs", "buttonText": "RESOURCES" } + }, + "privacy": { + "textDate": "Last updated: April 19th, 2023", + "text2": "Our <0>Privacy Policy has been updated.", + "text3": "**This privacy policy of the Boston Heat Pump Accelerator (BHPA) will help you better understand how we collect, share, and use your personal information.**", + "headingBg": "Privacy Policy", + "title1": "Table of Contents", + "items": { + "item1": { + "title": "What data does the BHPA use?", + "text": "The data used for the BHPA project was the open, public data from the City of Boston's online Property Assessor's database. This data is not privileged or private. It is open to the public." + }, + "item2": { + "title": "What did BHPA do with the data?", + "text": "BHPA used the Boston Assessor's data to identify homeowner-occupied homes in the the neighborhoods of Dorchester, Roxbury, and Mattapan. This enabled the project organizers to develop a list of neighborhood residents who could potentially participate in a survey intended for the owners of homes. Essentially, it helps the BHPA avoid sending surveyors to an address where the only residents/occupants wouldn't be able to participate in the survey. BHPA plans to use the anonymized data collected from surveys and the open source code to promote public access to generic information that hopefully will enable Boston-area users to make better informed decisions on heat pumps in their own personal environments." + }, + "item3": { + "title": "Why is the BHPA survey only for homeowners and not for renters?", + "text": "Renters in Boston are residents and important voices in the community. Renters living in multi-unit homes and/or apartment buildings are already eligible to participate in other programs and initiatives, such as BlocPower. Separately, homeowners of owner-occupied homes (usually have legal control of their building and can make decisions about switching heating and cooling systems in ways that renters (usually) cannot. Both homeowners and renters have important voices and parts to play in the efforts around switching to cleaner, lower-cost heating and cooling. It makes sense to engage with these groups with an individualized and customized approach- the BHPA project focuses on homeowners." + }, + "item4": { + "title": "Why does the City of Boston have data on the houses and owners of homes in the city of Boston?", + "text": "The City of Boston is the best resource for this question. The BHPA can offer our own take: During the purchase of a property, basic information involved in the transaction becomes part of the property record. This information is public- it is available to anyone who seeks it. Nearly every city, town, and/or county in the United States collects basically the same information and also makes it available to the public." + }, + "item5": { + "title": "What data exactly does the City of Boston have about me and my property?", + "text": "The City of Boston's Property Assessor's database is easy to use. To learn more about the data that the city has, feel free to look up the address in question in their database here [LINK]" + }, + "item6": { + "title": "What data about me and my property was used in this project? [and it harmed/reduced/invaded my privacy...]", + "text": "The Boston Heat Pump Accelerator uses publicly available data from the City of Boston Assessor's office to reach out to homeowners in Boston neighborhoods to survey residents about their knowledge of heat pumps. Since Massachusetts has some discounts for residents based on being a resident and a homeowner, we are reaching out to folks who are eligible for these discounts, and we use public data to do this. We also use open source code to help create tools to make the lists for people to contact. The Boston Heat Pump Accelerator works with volunteers in the Code for Boston community to create open source computer code in our technology. The code is public on GitHub in case you would like to inspect it." + }, + "item7": { + "title": "What happens to the input that people provide to the survey (either in person or online)?", + "text": "When you take the BHPA survey about heat pumps, it is anonymized and collected in aggregate. We report data we collect in our survey to the partners listed on our Partners page to help them improve their programs, so we can help more people get the discounts for heat pumps for which they are eligible. We do not sell your data to 3rd parties. If you have questions about how your data is used, please contact privacy@bostonhpa.org." + } + } } } } diff --git a/frontend/front/src/pages/Public/locales/es-419.json b/frontend/front/src/pages/Public/locales/es-419.json index f58c18e1..dec715bd 100644 --- a/frontend/front/src/pages/Public/locales/es-419.json +++ b/frontend/front/src/pages/Public/locales/es-419.json @@ -198,6 +198,43 @@ "title": "Obtenga detalles sobre las necesidades de calefacción/refrigeración de su hogar", "buttonText": "RECURSOS" } + }, + "privacy": { + "textDate": "Última actualización: 19 de abril de 2023", + "text2": "Nuestra <0>Política de Privacidad ha sido actualizada.", + "text3": "**Esta política de privacidad de Boston Heat Pump Accelerator (BHPA) le ayudará a comprender mejor cómo recopilamos, compartimos y utilizamos su información personal.**", + "headingBg": "política de privacidad", + "title1": "Tabla de contenido", + "items": { + "item1": { + "title": "¿Qué datos utiliza la BHPA?", + "text": "Los datos utilizados para el proyecto BHPA fueron datos públicos y abiertos de la base de datos en línea del Asesor de Propiedades de la ciudad de Boston. \nEstos datos no son privilegiados ni privados. \nEstá abierto al público." + }, + "item2": { + "title": "¿Qué hizo BHPA con los datos?", + "text": "BHPA utilizó los datos del Boston Assessor para identificar viviendas ocupadas por propietarios en los vecindarios de Dorchester, Roxbury y Mattapan. \nEsto permitió a los organizadores del proyecto desarrollar una lista de residentes del vecindario que potencialmente podrían participar en una encuesta dirigida a los propietarios de viviendas. \nBásicamente, ayuda a la BHPA a evitar enviar encuestadores a una dirección donde los únicos residentes/ocupantes no podrían participar en la encuesta. \nBHPA planea utilizar los datos anónimos recopilados de las encuestas y el código fuente abierto para promover el acceso público a información genérica que, con suerte, permitirá a los usuarios del área de Boston tomar decisiones mejor informadas sobre las bombas de calor en sus propios entornos personales." + }, + "item3": { + "title": "¿Por qué la encuesta BHPA es sólo para propietarios de viviendas y no para inquilinos?", + "text": "Los inquilinos en Boston son residentes y voces importantes de la comunidad. \nLos inquilinos que viven en viviendas de unidades múltiples y/o edificios de apartamentos ya son elegibles para participar en otros programas e iniciativas, como BlocPower. \nPor otra parte, los propietarios de viviendas ocupadas por sus propietarios (normalmente tienen control legal de su edificio y pueden tomar decisiones sobre el cambio de sistemas de calefacción y refrigeración de maneras que los inquilinos (normalmente) no pueden). Tanto los propietarios como los inquilinos tienen voces y papeles importantes que desempeñar en los esfuerzos para \ncambiar a calefacción y refrigeración más limpias y de menor costo. Tiene sentido involucrarse con estos grupos con un enfoque individualizado y personalizado: el proyecto BHPA se centra en los propietarios de viviendas." + }, + "item4": { + "title": "¿Por qué la ciudad de Boston tiene datos sobre las casas y los propietarios de viviendas en la ciudad de Boston?", + "text": "La ciudad de Boston es el mejor recurso para esta pregunta. \nLa BHPA puede ofrecer nuestra propia opinión: durante la compra de una propiedad, la información básica involucrada en la transacción pasa a formar parte del registro de propiedad. \nEsta información es pública: está disponible para cualquiera que la busque. \nCasi todas las ciudades, pueblos y/o condados de los Estados Unidos recopilan básicamente la misma información y también la ponen a disposición del público." + }, + "item5": { + "title": "¿Qué datos tiene exactamente la ciudad de Boston sobre mí y mi propiedad?", + "text": "La base de datos del Tasador de Propiedades de la Ciudad de Boston es fácil de usar. \nPara obtener más información sobre los datos que tiene la ciudad, no dude en buscar la dirección en cuestión en su base de datos aquí [ENLACE]" + }, + "item6": { + "title": "¿Qué datos sobre mí y mi propiedad se utilizaron en este proyecto? \n[y dañó/redujo/invadió mi privacidad...]", + "text": "El Boston Heat Pump Accelerator utiliza datos disponibles públicamente de la oficina del Tasador de la ciudad de Boston para llegar a los propietarios de viviendas en los vecindarios de Boston y encuestar a los residentes sobre sus conocimientos sobre las bombas de calor. \nDado que Massachusetts tiene algunos descuentos para residentes en función de ser residente y propietario de vivienda, nos estamos comunicando con personas que son elegibles para estos descuentos y utilizamos datos públicos para hacerlo. \nTambién utilizamos código fuente abierto para ayudar a crear herramientas para crear listas de personas con las que contactar. \nEl Boston Heat Pump Accelerator trabaja con voluntarios de la comunidad Code for Boston para crear código informático de fuente abierta en nuestra tecnología. \nEl código es público en GitHub en caso de que desee inspeccionarlo." + }, + "item7": { + "title": "¿Qué sucede con los aportes que las personas brindan a la encuesta (ya sea en persona o en línea)?", + "text": "Cuando realiza la encuesta de BHPA sobre bombas de calor, se anonimiza y se recopila de forma agregada. \nInformamos los datos que recopilamos en nuestra encuesta a los socios que figuran en nuestra página de Socios para ayudarlos a mejorar sus programas, de modo que podamos ayudar a más personas a obtener los descuentos para las bombas de calor para las que son elegibles. \nNo vendemos sus datos a terceros. \nSi tiene preguntas sobre cómo se utilizan sus datos, comuníquese con privacy@bostonhpa.org." + } + } } } } diff --git a/frontend/front/src/pages/Public/locales/ht.json b/frontend/front/src/pages/Public/locales/ht.json index a299f819..a65d5714 100644 --- a/frontend/front/src/pages/Public/locales/ht.json +++ b/frontend/front/src/pages/Public/locales/ht.json @@ -198,6 +198,43 @@ "title": "Jwenn detay sou bezwen chofaj/refwadisman lakay ou", "buttonText": "RESOUS" } + }, + "privacy": { + "textDate": "Dènye mizajou: 19 avril 2023", + "text2": "<0>Règleman sou enfòmasyon prive nou an te mete ajou.", + "text3": "**Règleman sou enfòmasyon prive Boston Heat Pump Accelerator (BHPA) sa a pral ede w pi byen konprann kijan nou kolekte, pataje, epi itilize enfòmasyon pèsonèl ou yo.**", + "headingBg": "Règleman sou enfòmasyon prive", + "title1": "Table of Contents", + "items": { + "item1": { + "title": "Ki done BHPA itilize?", + "text": "Done yo te itilize pou pwojè BHPA a se te done piblik ki louvri nan baz done Evalyatè Pwopriyete Vil Boston an. \nDone sa yo pa privilejye oswa prive. \nLi ouvri pou piblik la." + }, + "item2": { + "title": "Kisa BHPA te fè ak done yo?", + "text": "BHPA te itilize done Boston Assessor pou idantifye kay pwopriyetè kay yo te okipe nan katye Dorchester, Roxbury, ak Mattapan. \nSa te pèmèt òganizatè pwojè yo devlope yon lis rezidan katye yo ki kapab patisipe nan yon sondaj ki fèt pou pwopriyetè kay yo. \nEsansyèlman, li ede BHPA evite voye sondaj yo nan yon adrès kote sèlman rezidan/okipan yo pa ta kapab patisipe nan sondaj la. \nBHPA planifye pou sèvi ak done anonim yo kolekte nan sondaj yo ak kòd sous louvri pou ankouraje aksè piblik a enfòmasyon jenerik ki èspere ke pral pèmèt itilizatè zòn Boston yo pran desizyon pi byen enfòme sou ponp chalè nan pwòp anviwònman pèsonèl yo." + }, + "item3": { + "title": "Poukisa sondaj BHPA a se sèlman pou pwopriyetè kay epi li pa pou lokatè?", + "text": "Lokatè nan Boston se rezidan ak vwa enpòtan nan kominote a. \nLokatè k ap viv nan kay ki gen plizyè apatman ak/oswa bilding apatman yo deja elijib pou patisipe nan lòt pwogram ak inisyativ, tankou BlocPower. \nSepareman, pwopriyetè kay ki okipe kay pwopriyetè yo (anjeneral gen kontwòl legal sou bilding yo epi yo ka pran desizyon sou chanje sistèm chofaj ak refwadisman nan fason ke lokatè yo (anjeneral) pa kapab. Tou de pwopriyetè kay ak lokatè yo gen vwa enpòtan ak pati yo jwe nan efò alantou yo. \nchanje nan chofaj ak refwadisman ki pi pwòp, ki pi ba pri.Li fè sans pou angaje ak gwoup sa yo ak yon apwòch endividyèl ak pèsonalize- pwojè BHPA konsantre sou pwopriyetè kay." + }, + "item4": { + "title": "Poukisa Vil Boston gen done sou kay ak pwopriyetè kay nan vil Boston?", + "text": "Vil Boston se pi bon resous pou kesyon sa a. \nBHPA ka ofri pwòp pa nou: Pandan acha yon pwopriyete, enfòmasyon debaz ki enplike nan tranzaksyon an vin yon pati nan dosye pwopriyete a. \nEnfòmasyon sa a se piblik-li disponib pou nenpòt moun ki chèche li. \nPrèske chak vil, vil, ak/oswa konte Ozetazini kolekte fondamantalman menm enfòmasyon yo epi tou fè yo disponib pou piblik la." + }, + "item5": { + "title": "Ki done egzakteman Vil Boston genyen sou mwen ak pwopriyete mwen an?", + "text": "Baz done Evalyatè Pwopriyete Vil Boston an fasil pou itilize. \nPou aprann plis sou done vil la genyen, santi yo lib pou chèche adrès ki an kesyon nan baz done yo isit la [LINK]" + }, + "item6": { + "title": "Ki done sou mwen ak pwopriyete mwen yo te itilize nan pwojè sa a? \n[epi li fè mal/redwi/anvayi vi prive mwen...]", + "text": "Boston Heat Pump Accelerator itilize done ki disponib piblikman nan biwo Evalyatè Vil Boston pou kontakte pwopriyetè kay ki nan katye Boston yo pou sondaj rezidan yo sou konesans yo genyen sou ponp chalè. \nPiske Massachusetts gen kèk rabè pou rezidan yo ki baze sou yo se yon rezidan ak yon pwopriyetè kay, nou ap kontakte moun ki kalifye pou rabè sa yo, epi nou itilize done piblik pou fè sa. \nNou itilize tou kòd sous louvri pou ede kreye zouti pou fè lis moun yo kontakte. \nBoston Heat Pump Accelerator travay ak volontè nan kominote Code for Boston pou kreye kòd òdinatè sous louvri nan teknoloji nou an. \nKòd la se piblik sou GitHub nan ka ou ta renmen enspekte li." + }, + "item7": { + "title": "Kisa k ap pase ak opinyon moun yo bay sondaj la (swa an pèsòn oswa sou entènèt)?", + "text": "Lè w pran sondaj BHPA sou ponp chalè, li anonimize epi yo kolekte l an jeneral. \nNou rapòte done nou kolekte nan sondaj nou an bay patnè yo ki nan lis nan paj Patnè nou an pou ede yo amelyore pwogram yo, pou nou ka ede plis moun jwenn rabè pou ponp chalè yo kalifye pou yo. \nNou pa vann done ou yo bay twazyèm pati. \nSi w gen kesyon sou fason yo itilize done w yo, tanpri kontakte privacy@bostonhpa.org." + } + } } } } diff --git a/frontend/front/src/pages/Public/locales/pt-BR.json b/frontend/front/src/pages/Public/locales/pt-BR.json index f0b32877..44fc7f48 100644 --- a/frontend/front/src/pages/Public/locales/pt-BR.json +++ b/frontend/front/src/pages/Public/locales/pt-BR.json @@ -198,6 +198,43 @@ "title": "Obtenha detalhes sobre suas necessidades de aquecimento/resfriamento doméstico", "buttonText": "RECURSOS" } + }, + "privacy": { + "textDate": "Última atualização: 19 de abril de 2023", + "text2": "Nossa <0>Política de Privacidade foi atualizada.", + "text3": "**Esta política de privacidade do Boston Heat Pump Accelerator (BHPA) ajudará você a entender melhor como coletamos, compartilhamos e usamos suas informações pessoais.**", + "headingBg": "política de Privacidade", + "title1": "Índice", + "items": { + "item1": { + "title": "Quais dados o BHPA usa?", + "text": "Os dados usados ​​para o projeto BHPA foram dados abertos e públicos do banco de dados on-line do Property Assessor da cidade de Boston. \nEsses dados não são privilegiados ou privados. \nÉ aberto ao público." + }, + "item2": { + "title": "O que a BHPA fez com os dados?", + "text": "A BHPA usou os dados do Assessor de Boston para identificar casas ocupadas por proprietários nos bairros de Dorchester, Roxbury e Mattapan. \nIsto permitiu aos organizadores do projecto desenvolver uma lista de residentes do bairro que poderiam potencialmente participar num inquérito destinado aos proprietários de casas. \nEssencialmente, ajuda a BHPA a evitar o envio de pesquisadores para um endereço onde os únicos residentes/ocupantes não poderiam participar da pesquisa. \nA BHPA planeja usar os dados anonimizados coletados em pesquisas e o código-fonte aberto para promover o acesso público a informações genéricas que, esperançosamente, permitirão que os usuários da área de Boston tomem decisões mais informadas sobre bombas de calor em seus próprios ambientes pessoais." + }, + "item3": { + "title": "Por que a pesquisa da BHPA é apenas para proprietários e não para locatários?", + "text": "Os locatários em Boston são residentes e vozes importantes na comunidade. \nOs locatários que moram em residências com várias unidades e/ou prédios de apartamentos já são elegíveis para participar de outros programas e iniciativas, como o BlocPower. \nSeparadamente, os proprietários de casas ocupadas pelos proprietários (geralmente têm controle legal de seu edifício e podem tomar decisões sobre a troca de sistemas de aquecimento e resfriamento de uma forma que os locatários (geralmente) não podem. Tanto os proprietários quanto os locatários têm vozes e papéis importantes a desempenhar nos esforços em torno \nmudança para aquecimento e resfriamento mais limpos e de baixo custo. Faz sentido interagir com esses grupos com uma abordagem individualizada e personalizada - o projeto BHPA concentra-se nos proprietários de residências." + }, + "item4": { + "title": "Por que a cidade de Boston possui dados sobre as casas e os proprietários de casas na cidade de Boston?", + "text": "A cidade de Boston é o melhor recurso para esta questão. \nA BHPA pode oferecer nossa própria opinião: Durante a compra de um imóvel, as informações básicas envolvidas na transação passam a fazer parte do registro do imóvel. \nEsta informação é pública – está disponível para qualquer pessoa que a procure. \nQuase todas as cidades, vilas e/ou condados dos Estados Unidos coletam basicamente as mesmas informações e também as disponibilizam ao público." + }, + "item5": { + "title": "Quais dados exatamente a cidade de Boston possui sobre mim e minha propriedade?", + "text": "O banco de dados do Assessor de Propriedade da Cidade de Boston é fácil de usar. \nPara saber mais sobre os dados que a cidade possui, fique à vontade para procurar o endereço em questão em seu banco de dados aqui [LINK]" + }, + "item6": { + "title": "Quais dados sobre mim e minha propriedade foram usados ​​neste projeto? \n[e prejudicou/reduziu/invadiu minha privacidade...]", + "text": "O Boston Heat Pump Accelerator usa dados disponíveis publicamente do escritório do assessor da cidade de Boston para chegar aos proprietários de casas nos bairros de Boston e pesquisar os residentes sobre seu conhecimento sobre bombas de calor. \nComo Massachusetts oferece alguns descontos para residentes com base na condição de residente e proprietário de casa, estamos entrando em contato com pessoas que têm direito a esses descontos e usamos dados públicos para fazer isso. \nTambém usamos código-fonte aberto para ajudar a criar ferramentas para fazer listas de pessoas para contato. \nO Boston Heat Pump Accelerator trabalha com voluntários da comunidade Code for Boston para criar código de computador de código aberto em nossa tecnologia. \nO código é público no GitHub caso você queira inspecioná-lo." + }, + "item7": { + "title": "O que acontece com as informações que as pessoas fornecem para a pesquisa (presencialmente ou on-line)?", + "text": "Quando você responde à pesquisa da BHPA sobre bombas de calor, ela é anonimizada e coletada de forma agregada. \nReportamos os dados que recolhemos no nosso inquérito aos parceiros listados na nossa página de Parceiros para os ajudar a melhorar os seus programas, para que possamos ajudar mais pessoas a obter descontos em bombas de calor para as quais são elegíveis. \nNão vendemos seus dados a terceiros. \nSe você tiver dúvidas sobre como seus dados são usados, entre em contato com privacy@bostonhpa.org." + } + } } } } From 5ff722038b0ac667b81f637a6db8f12d112448d5 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 25 Oct 2023 15:07:46 -0400 Subject: [PATCH 62/74] Refactor LangPrefDropdown to use 'language' from useTranslation directly Removed the redundant 'currentLanguage' state and associated logic. This simplifies the component and ensures that it stays in sync with the selected language at all times. --- .../pages/Public/Components/LangPrefDropdown.js | 17 +++++++++-------- frontend/front/src/pages/Public/Libs/i18n.js | 6 ++---- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index d397952b..8a60cc85 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -13,7 +13,6 @@ const LangPrefDropdown = () => { const [anchorMore, setAnchorMore] = useState(null); const [langDisplay, setLangDisplay] = useState("English"); - const [currentLanguage, setCurrentLanguage] = useState(language); const location = useLocation(); @@ -26,14 +25,18 @@ const LangPrefDropdown = () => { useEffect(() => { // Get query params from current URL - const params = new URLSearchParams(window.location.search); - let queryLang = params.get("langPref"); + let queryLang = new URLSearchParams(window.location.search).get("langPref"); + // Check if current route is a 'public' route const isPublicRoute = window.location.pathname.includes("public"); if (isPublicRoute) { // Get language preference from localStorage or default to 'en-us' queryLang = localStorage.getItem("langPref") || "en-us"; + if (!localStorage.getItem("langPref")) { + localStorage.setItem("langPref", "en-us"); + } + const url = new URL(window.location.href); // Update or remove 'langPref' query param based on language @@ -48,12 +51,11 @@ const LangPrefDropdown = () => { } // Update language state if queryLang is different - if (queryLang && queryLang !== currentLanguage) { - setCurrentLanguage(queryLang); + if (queryLang && queryLang !== language) { changeLanguage(queryLang); localStorage.setItem("langPref", queryLang); } - }, [location, currentLanguage, changeLanguage]); + }, [location, language, changeLanguage]); // Determine if the language menu should be open const open = Boolean(anchorMore); @@ -67,8 +69,7 @@ const LangPrefDropdown = () => { const handleCloseMore = () => setAnchorMore(null); // Change language and update localStorage and URL - const handleChangeLanguage = (lang, display) => { - setCurrentLanguage(lang); + const handleChangeLanguage = (lang) => { changeLanguage(lang); localStorage.setItem("langPref", lang); diff --git a/frontend/front/src/pages/Public/Libs/i18n.js b/frontend/front/src/pages/Public/Libs/i18n.js index 4e61411d..710f66e3 100644 --- a/frontend/front/src/pages/Public/Libs/i18n.js +++ b/frontend/front/src/pages/Public/Libs/i18n.js @@ -9,12 +9,11 @@ import htTranslations from "../locales/ht.json"; const userLangPref = localStorage.getItem("langPref") || "en-us"; // configuration for i18next library -// if (!i18next.isInitialized) { i18next .use(initReactI18next) // passes i18next down to react-i18next - .use(LanguageDetector) + // .use(LanguageDetector) .init({ - debug: true, // change to true to debug i18next + // debug: false, // change to true to debug i18next fallbackLng: ["en", "es"], // fallback language resources: { en: { translation: { ...enTranslations } }, // English - United States @@ -24,4 +23,3 @@ i18next }, lng: userLangPref, // default language }); -// } From 61edb3f5b54e9c10918da2a4c5b42ee209da89cd Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 25 Oct 2023 15:23:27 -0400 Subject: [PATCH 63/74] Substitute window.location with useLocation from react-router-dom --- .../Public/Components/LangPrefDropdown.js | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js index 8a60cc85..96befa65 100644 --- a/frontend/front/src/pages/Public/Components/LangPrefDropdown.js +++ b/frontend/front/src/pages/Public/Components/LangPrefDropdown.js @@ -25,29 +25,37 @@ const LangPrefDropdown = () => { useEffect(() => { // Get query params from current URL - let queryLang = new URLSearchParams(window.location.search).get("langPref"); + const params = new URLSearchParams(location.search); + let queryLang = params.get("langPref"); // Check if current route is a 'public' route - const isPublicRoute = window.location.pathname.includes("public"); + const isPublicRoute = location.pathname.includes("public"); if (isPublicRoute) { // Get language preference from localStorage or default to 'en-us' queryLang = localStorage.getItem("langPref") || "en-us"; + if (!localStorage.getItem("langPref")) { localStorage.setItem("langPref", "en-us"); } - const url = new URL(window.location.href); - // Update or remove 'langPref' query param based on language if (queryLang !== "en-us") { - url.searchParams.set("langPref", queryLang); + params.set("langPref", queryLang); } else { - url.searchParams.delete("langPref"); + params.delete("langPref"); } // Update the browser history - window.history.replaceState({ path: url.toString() }, "", url.toString()); + if (params.toString()) { + window.history.replaceState( + {}, + "", + `${location.pathname}?${params.toString()}` + ); + } else { + window.history.replaceState({}, "", `${location.pathname}`); + } } // Update language state if queryLang is different From e5d1e833be90bb1e53986f92dc72685a5130b50b Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 25 Oct 2023 15:55:34 -0400 Subject: [PATCH 64/74] Replaced tag with MuiLink from @mui/material for external links. --- .../src/pages/Public/Components/Button/ButtonDarkBlue.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js index 19171c0c..57bbce40 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js @@ -1,5 +1,5 @@ import { useEffect } from "react"; -import { Button } from "@mui/material"; +import { Button, Link as MuiLink } from "@mui/material"; import { Link } from "react-router-dom"; const ButtonDarkBklue = ({ text, to, children, externalLink }) => { @@ -9,7 +9,7 @@ const ButtonDarkBklue = ({ text, to, children, externalLink }) => { if (externalLink) { return ( - + - + ); } From a4d6653067ce2031be02f74bcfd89919ff6e8ef0 Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Wed, 25 Oct 2023 16:03:15 -0400 Subject: [PATCH 65/74] Reverted this to key={subItem} since each one is unique. --- frontend/front/src/pages/Public/Layout/Navbar.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/front/src/pages/Public/Layout/Navbar.js b/frontend/front/src/pages/Public/Layout/Navbar.js index 01e83d41..69b1d1f1 100644 --- a/frontend/front/src/pages/Public/Layout/Navbar.js +++ b/frontend/front/src/pages/Public/Layout/Navbar.js @@ -124,9 +124,9 @@ function Navbar(props) { TransitionComponent={Fade} > - {Object.keys(navbarItems.LearnMore.items).map((subItem, index) => ( + {Object.keys(navbarItems.LearnMore.items).map((subItem) => ( { handleNavigation(navbarItems.LearnMore.items[subItem].link); From fe6197a96639f221fc76ded121f38a918968004b Mon Sep 17 00:00:00 2001 From: thiagobadini Date: Tue, 31 Oct 2023 12:33:33 -0400 Subject: [PATCH 66/74] Updated link to work with react-router-dom --- .../Components/Button/ButtonDarkBlue.js | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js index 57bbce40..15166a26 100644 --- a/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js +++ b/frontend/front/src/pages/Public/Components/Button/ButtonDarkBlue.js @@ -1,17 +1,23 @@ -import { useEffect } from "react"; -import { Button, Link as MuiLink } from "@mui/material"; -import { Link } from "react-router-dom"; +import { useEffect, forwardRef } from "react"; +import { Button } from "@mui/material"; +import { Link as RouterLink } from "react-router-dom"; const ButtonDarkBklue = ({ text, to, children, externalLink }) => { useEffect(() => { window.scrollTo(0, 0); }, []); + const LinkBehavior = forwardRef((props, ref) => ( + + )); + if (externalLink) { return ( - + <> - + ); } return ( <>