diff --git a/.eslintcache b/.eslintcache
index 9cf64a1..3c18449 100644
--- a/.eslintcache
+++ b/.eslintcache
@@ -1 +1 @@
-[{"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/index.js":"1","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/App.js":"2","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/reportWebVitals.js":"3","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/index.js":"4","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/menuComponent.js":"5","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/index.js":"6","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/MenuComponent.js":"7","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/mainCard/mainCard.js":"8","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MainCard/MainCard.js":"9","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/index.js":"10","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/ExperienceCard.js":"11","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/index.js":"12","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/buttonIcon.js":"13","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/index.js":"14","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/ButtonIcon.js":"15","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/index.js":"16","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/ProjectsCard.js":"17","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/index.js":"18","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/ProjectCard.js":"19","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/index.js":"20","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/ContactCard.js":"21","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/index.js":"22","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/contactButton.js":"23","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/index.js":"24","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/ContactButton.js":"25","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/index.js":"26","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/FooterCard.js":"27"},{"size":500,"mtime":1607637518763,"results":"28","hashOfConfig":"29"},{"size":521,"mtime":1609105967619,"results":"30","hashOfConfig":"29"},{"size":362,"mtime":1607637518766,"results":"31","hashOfConfig":"29"},{"size":74,"mtime":1607640746796,"results":"32","hashOfConfig":"33"},{"size":681,"mtime":1607640746796,"results":"34","hashOfConfig":"33"},{"size":74,"mtime":1607640746796,"results":"35","hashOfConfig":"29"},{"size":1059,"mtime":1609105413992,"results":"36","hashOfConfig":"29"},{"size":632,"mtime":1607641188004,"results":"37","hashOfConfig":"33"},{"size":5353,"mtime":1609105317832,"results":"38","hashOfConfig":"29"},{"size":77,"mtime":1607642019704,"results":"39","hashOfConfig":"29"},{"size":1500,"mtime":1607643468593,"results":"40","hashOfConfig":"29"},{"size":65,"mtime":1607643386517,"results":"41","hashOfConfig":"33"},{"size":674,"mtime":1607643491629,"results":"42","hashOfConfig":"33"},{"size":65,"mtime":1607643577907,"results":"43","hashOfConfig":"29"},{"size":491,"mtime":1607643905302,"results":"44","hashOfConfig":"29"},{"size":71,"mtime":1607644745576,"results":"45","hashOfConfig":"29"},{"size":1674,"mtime":1607646170128,"results":"46","hashOfConfig":"29"},{"size":68,"mtime":1607645435051,"results":"47","hashOfConfig":"29"},{"size":907,"mtime":1607645693299,"results":"48","hashOfConfig":"29"},{"size":68,"mtime":1609103467221,"results":"49","hashOfConfig":"29"},{"size":1739,"mtime":1609105125599,"results":"50","hashOfConfig":"29"},{"size":74,"mtime":1609104253014,"results":"51","hashOfConfig":"29"},{"size":1034,"mtime":1609105283072,"results":"52","hashOfConfig":"29"},{"size":74,"mtime":1609104253014,"results":"53","hashOfConfig":"29"},{"size":1034,"mtime":1609105283072,"results":"54","hashOfConfig":"29"},{"size":65,"mtime":1609105952845,"results":"55","hashOfConfig":"29"},{"size":5250,"mtime":1609258290462,"results":"56","hashOfConfig":"29"},{"filePath":"57","messages":"58","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},"v7zf0g",{"filePath":"60","messages":"61","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"62","messages":"63","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"n0bckm",{"filePath":"66","messages":"67","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"75","messages":"76","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"81","messages":"82","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"83"},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"110","messages":"111","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"59"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/index.js",[],["114","115"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/App.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/reportWebVitals.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/menuComponent.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/MenuComponent.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/mainCard/mainCard.js",[],["116","117"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MainCard/MainCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/ExperienceCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/index.js",[],["118","119"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/buttonIcon.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/ButtonIcon.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/ProjectsCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/ProjectCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/ContactCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/contactButton.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/ContactButton.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/FooterCard.js",[],{"ruleId":"120","replacedBy":"121"},{"ruleId":"122","replacedBy":"123"},{"ruleId":"120","replacedBy":"124"},{"ruleId":"122","replacedBy":"125"},{"ruleId":"120","replacedBy":"126"},{"ruleId":"122","replacedBy":"127"},"no-native-reassign",["128"],"no-negated-in-lhs",["129"],["128"],["129"],["128"],["129"],"no-global-assign","no-unsafe-negation"]
\ No newline at end of file
+[{"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/index.js":"1","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/App.js":"2","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/reportWebVitals.js":"3","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/index.js":"4","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/menuComponent.js":"5","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/index.js":"6","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/MenuComponent.js":"7","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/mainCard/mainCard.js":"8","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MainCard/MainCard.js":"9","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/index.js":"10","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/ExperienceCard.js":"11","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/index.js":"12","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/buttonIcon.js":"13","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/index.js":"14","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/ButtonIcon.js":"15","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/index.js":"16","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/ProjectsCard.js":"17","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/index.js":"18","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/ProjectCard.js":"19","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/index.js":"20","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/ContactCard.js":"21","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/index.js":"22","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/contactButton.js":"23","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/index.js":"24","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/ContactButton.js":"25","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/index.js":"26","/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/FooterCard.js":"27"},{"size":1195,"mtime":1609432497337,"results":"28","hashOfConfig":"29"},{"size":521,"mtime":1609403660650,"results":"30","hashOfConfig":"29"},{"size":362,"mtime":1607637518766,"results":"31","hashOfConfig":"29"},{"size":74,"mtime":1607640746796,"results":"32","hashOfConfig":"33"},{"size":681,"mtime":1607640746796,"results":"34","hashOfConfig":"33"},{"size":74,"mtime":1607640746796,"results":"35","hashOfConfig":"29"},{"size":2027,"mtime":1609432661946,"results":"36","hashOfConfig":"29"},{"size":632,"mtime":1607641188004,"results":"37","hashOfConfig":"33"},{"size":5353,"mtime":1609105317832,"results":"38","hashOfConfig":"29"},{"size":77,"mtime":1607642019704,"results":"39","hashOfConfig":"29"},{"size":1500,"mtime":1607643468593,"results":"40","hashOfConfig":"29"},{"size":65,"mtime":1607643386517,"results":"41","hashOfConfig":"33"},{"size":674,"mtime":1607643491629,"results":"42","hashOfConfig":"33"},{"size":65,"mtime":1607643577907,"results":"43","hashOfConfig":"29"},{"size":491,"mtime":1607643905302,"results":"44","hashOfConfig":"29"},{"size":71,"mtime":1607644745576,"results":"45","hashOfConfig":"29"},{"size":1674,"mtime":1607646170128,"results":"46","hashOfConfig":"29"},{"size":68,"mtime":1607645435051,"results":"47","hashOfConfig":"29"},{"size":907,"mtime":1607645693299,"results":"48","hashOfConfig":"29"},{"size":68,"mtime":1609103467221,"results":"49","hashOfConfig":"29"},{"size":1739,"mtime":1609105125599,"results":"50","hashOfConfig":"29"},{"size":74,"mtime":1609104253014,"results":"51","hashOfConfig":"29"},{"size":1034,"mtime":1609105283072,"results":"52","hashOfConfig":"29"},{"size":74,"mtime":1609104253014,"results":"53","hashOfConfig":"29"},{"size":1034,"mtime":1609105283072,"results":"54","hashOfConfig":"29"},{"size":65,"mtime":1609105952845,"results":"55","hashOfConfig":"29"},{"size":5250,"mtime":1609258290462,"results":"56","hashOfConfig":"29"},{"filePath":"57","messages":"58","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"v7zf0g",{"filePath":"59","messages":"60","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"61","messages":"62","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"64","messages":"65","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"n0bckm",{"filePath":"66","messages":"67","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"70","messages":"71","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"72","messages":"73","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"74"},{"filePath":"75","messages":"76","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"77","messages":"78","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"81","messages":"82","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"83"},{"filePath":"84","messages":"85","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"86","messages":"87","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"92","messages":"93","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"104","messages":"105","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"106","messages":"107","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"108","messages":"109","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"110","messages":"111","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},{"filePath":"112","messages":"113","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"63"},"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/index.js",["114"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/App.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/reportWebVitals.js",[],["115","116"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/menuComponent/menuComponent.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MenuComponent/MenuComponent.js",["117","118"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/mainCard/mainCard.js",[],["119","120"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/MainCard/MainCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ExperienceCard/ExperienceCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/index.js",[],["121","122"],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/buttonIcon/buttonIcon.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ButtonIcon/ButtonIcon.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectsCard/ProjectsCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ProjectCard/ProjectCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactCard/ContactCard.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/contactButton/contactButton.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/ContactButton/ContactButton.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/index.js",[],"/Users/adamas/adm.ink/dev/anthony-dumas.fr/anthony-dumas.fr/src/components/FooterCard/FooterCard.js",[],{"ruleId":"123","severity":1,"message":"124","line":26,"column":21,"nodeType":"125","messageId":"126","endLine":26,"endColumn":23},{"ruleId":"127","replacedBy":"128"},{"ruleId":"129","replacedBy":"130"},{"ruleId":"131","severity":1,"message":"132","line":59,"column":11,"nodeType":"133","endLine":59,"endColumn":63},{"ruleId":"131","severity":1,"message":"132","line":62,"column":11,"nodeType":"133","endLine":62,"endColumn":62},{"ruleId":"127","replacedBy":"134"},{"ruleId":"129","replacedBy":"135"},{"ruleId":"127","replacedBy":"136"},{"ruleId":"129","replacedBy":"137"},"eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected","no-native-reassign",["138"],"no-negated-in-lhs",["139"],"jsx-a11y/anchor-is-valid","The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-is-valid.md","JSXOpeningElement",["138"],["139"],["138"],["139"],"no-global-assign","no-unsafe-negation"]
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index ad1f8c4..27e9bd8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,6 +13,7 @@
"bulma": "^0.9.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
+ "react-intl": "^5.10.9",
"react-scripts": "4.0.1",
"sass": "^1.30.0",
"web-vitals": "^0.2.4"
@@ -1462,6 +1463,66 @@
"node": ">=8"
}
},
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz",
+ "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/@formatjs/intl": {
+ "version": "1.4.13",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.4.13.tgz",
+ "integrity": "sha512-GEWwkaNFnskOGGd6gq0Y0RetiH2iNnARXzQ+glR2RqU0xk00aS5KpwkEDo1hN9NaO9fRr9UDvzDoEu9foQFVmA==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "@formatjs/intl-datetimeformat": "3.2.1",
+ "@formatjs/intl-displaynames": "4.0.2",
+ "@formatjs/intl-listformat": "5.0.2",
+ "@formatjs/intl-relativetimeformat": "8.0.1",
+ "fast-memoize": "^2.5.2",
+ "intl-messageformat": "9.4.0",
+ "intl-messageformat-parser": "6.1.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/@formatjs/intl-datetimeformat": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.1.tgz",
+ "integrity": "sha512-teeUgUoieP0JjZYPWjJV72CoPQoukCMKGW1YUu00+TaHzZBNqVgPCdFJo2vgl1jKccOAT3VT79BHNEsR9DsBBQ==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/@formatjs/intl-displaynames": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-4.0.2.tgz",
+ "integrity": "sha512-rOlDcFzr6UFYqH7BKI9vlpDC5MpTT48dsPxO9I6yciDlOb1IyqvIgUs+xsuNOj96akDCDrgwocrdJ1VEDO0Ntw==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/@formatjs/intl-listformat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-5.0.2.tgz",
+ "integrity": "sha512-Y+7/Dw3oe29kT4afbw2KCSzast6M04ibidBMMPqjxOHHxan1LeL0KQsY/iRHTgTAcfiSIqZnneJZjZi4MzjLJg==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/@formatjs/intl-relativetimeformat": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.1.tgz",
+ "integrity": "sha512-yMCtrDeQnqx95ucaYbHc1BP4XUP0q+JoMiP8kzMe04AgVvkfAScsoRuKfXw1EH1FkV51C/vqWIKDoGj1WoZnxQ==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
"node_modules/@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -2927,6 +2988,15 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"node_modules/@types/html-minifier-terser": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
@@ -2997,11 +3067,25 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz",
"integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ=="
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
+ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
+ },
"node_modules/@types/q": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
+ "node_modules/@types/react": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz",
+ "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/@types/resolve": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
@@ -6058,6 +6142,11 @@
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
"integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
},
+ "node_modules/csstype": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
+ "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ },
"node_modules/cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -8106,6 +8195,11 @@
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
},
+ "node_modules/fast-memoize": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
+ "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
+ },
"node_modules/fastq": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz",
@@ -9083,6 +9177,19 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ },
"node_modules/hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -9693,6 +9800,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/intl-messageformat": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.4.0.tgz",
+ "integrity": "sha512-zcF8OWG52dCwwePkykqqv7F038vCaixPR14Lr3YUFc9jRdGoCazl2dTE3BwBaeHr3pG/qYb6A/mwMKrj4LFt9Q==",
+ "dependencies": {
+ "fast-memoize": "^2.5.2",
+ "intl-messageformat-parser": "6.1.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "node_modules/intl-messageformat-parser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.0.tgz",
+ "integrity": "sha512-nPPh2kOrKqlh4D9bCAetxkrUiq5/6S1exPQyg52Ihusy0ECNGhZ0Qmq8pFRK9gWIuiQPVmLA7eSNp8diC2tX3w==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
"node_modules/ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -15735,6 +15861,34 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz",
"integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
},
+ "node_modules/react-intl": {
+ "version": "5.10.9",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.10.9.tgz",
+ "integrity": "sha512-DfUF4YMlZqaNRfgfvf46AcXxz7pDi7pkxRbQoimUJWEkjep+6QYLlH7ogypysGD1Sl5kbWi7b69bbG7wPqt1vA==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "@formatjs/intl": "1.4.13",
+ "@formatjs/intl-displaynames": "4.0.2",
+ "@formatjs/intl-listformat": "5.0.2",
+ "@formatjs/intl-relativetimeformat": "8.0.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "fast-memoize": "^2.5.2",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "9.4.0",
+ "intl-messageformat-parser": "6.1.0",
+ "shallow-equal": "^1.2.1",
+ "tslib": "^2.0.1"
+ },
+ "peerDependencies": {
+ "react": "^16.3.0 || 17",
+ "typescript": "4"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/react-is": {
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
@@ -17248,6 +17402,11 @@
"node": ">=8"
}
},
+ "node_modules/shallow-equal": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
+ "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -22344,6 +22503,66 @@
}
}
},
+ "@formatjs/ecma402-abstract": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz",
+ "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==",
+ "requires": {
+ "tslib": "^2.0.1"
+ }
+ },
+ "@formatjs/intl": {
+ "version": "1.4.13",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.4.13.tgz",
+ "integrity": "sha512-GEWwkaNFnskOGGd6gq0Y0RetiH2iNnARXzQ+glR2RqU0xk00aS5KpwkEDo1hN9NaO9fRr9UDvzDoEu9foQFVmA==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "@formatjs/intl-datetimeformat": "3.2.1",
+ "@formatjs/intl-displaynames": "4.0.2",
+ "@formatjs/intl-listformat": "5.0.2",
+ "@formatjs/intl-relativetimeformat": "8.0.1",
+ "fast-memoize": "^2.5.2",
+ "intl-messageformat": "9.4.0",
+ "intl-messageformat-parser": "6.1.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "@formatjs/intl-datetimeformat": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.1.tgz",
+ "integrity": "sha512-teeUgUoieP0JjZYPWjJV72CoPQoukCMKGW1YUu00+TaHzZBNqVgPCdFJo2vgl1jKccOAT3VT79BHNEsR9DsBBQ==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "@formatjs/intl-displaynames": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-4.0.2.tgz",
+ "integrity": "sha512-rOlDcFzr6UFYqH7BKI9vlpDC5MpTT48dsPxO9I6yciDlOb1IyqvIgUs+xsuNOj96akDCDrgwocrdJ1VEDO0Ntw==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "@formatjs/intl-listformat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-5.0.2.tgz",
+ "integrity": "sha512-Y+7/Dw3oe29kT4afbw2KCSzast6M04ibidBMMPqjxOHHxan1LeL0KQsY/iRHTgTAcfiSIqZnneJZjZi4MzjLJg==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "@formatjs/intl-relativetimeformat": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.1.tgz",
+ "integrity": "sha512-yMCtrDeQnqx95ucaYbHc1BP4XUP0q+JoMiP8kzMe04AgVvkfAScsoRuKfXw1EH1FkV51C/vqWIKDoGj1WoZnxQ==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
"@hapi/address": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
@@ -23408,6 +23627,15 @@
"@types/node": "*"
}
},
+ "@types/hoist-non-react-statics": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==",
+ "requires": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
"@types/html-minifier-terser": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz",
@@ -23478,11 +23706,25 @@
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz",
"integrity": "sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ=="
},
+ "@types/prop-types": {
+ "version": "15.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
+ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
+ },
"@types/q": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
+ "@types/react": {
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz",
+ "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==",
+ "requires": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
"@types/resolve": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz",
@@ -25942,6 +26184,11 @@
}
}
},
+ "csstype": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
+ "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ },
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -27539,6 +27786,11 @@
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
},
+ "fast-memoize": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz",
+ "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
+ },
"fastq": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz",
@@ -28308,6 +28560,21 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
+ "hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "requires": {
+ "react-is": "^16.7.0"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
+ }
+ },
"hoopy": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
@@ -28803,6 +29070,25 @@
}
}
},
+ "intl-messageformat": {
+ "version": "9.4.0",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.4.0.tgz",
+ "integrity": "sha512-zcF8OWG52dCwwePkykqqv7F038vCaixPR14Lr3YUFc9jRdGoCazl2dTE3BwBaeHr3pG/qYb6A/mwMKrj4LFt9Q==",
+ "requires": {
+ "fast-memoize": "^2.5.2",
+ "intl-messageformat-parser": "6.1.0",
+ "tslib": "^2.0.1"
+ }
+ },
+ "intl-messageformat-parser": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.0.tgz",
+ "integrity": "sha512-nPPh2kOrKqlh4D9bCAetxkrUiq5/6S1exPQyg52Ihusy0ECNGhZ0Qmq8pFRK9gWIuiQPVmLA7eSNp8diC2tX3w==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "tslib": "^2.0.1"
+ }
+ },
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@@ -33469,6 +33755,25 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz",
"integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw=="
},
+ "react-intl": {
+ "version": "5.10.9",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.10.9.tgz",
+ "integrity": "sha512-DfUF4YMlZqaNRfgfvf46AcXxz7pDi7pkxRbQoimUJWEkjep+6QYLlH7ogypysGD1Sl5kbWi7b69bbG7wPqt1vA==",
+ "requires": {
+ "@formatjs/ecma402-abstract": "1.5.0",
+ "@formatjs/intl": "1.4.13",
+ "@formatjs/intl-displaynames": "4.0.2",
+ "@formatjs/intl-listformat": "5.0.2",
+ "@formatjs/intl-relativetimeformat": "8.0.1",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "fast-memoize": "^2.5.2",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "9.4.0",
+ "intl-messageformat-parser": "6.1.0",
+ "shallow-equal": "^1.2.1",
+ "tslib": "^2.0.1"
+ }
+ },
"react-is": {
"version": "17.0.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz",
@@ -34651,6 +34956,11 @@
"kind-of": "^6.0.2"
}
},
+ "shallow-equal": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
+ "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
diff --git a/package.json b/package.json
index 546a4ee..c6877d4 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"bulma": "^0.9.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
+ "react-intl": "^5.10.9",
"react-scripts": "4.0.1",
"sass": "^1.30.0",
"web-vitals": "^0.2.4"
diff --git a/src/components/MenuComponent/MenuComponent.js b/src/components/MenuComponent/MenuComponent.js
index 3de34ce..daa155a 100644
--- a/src/components/MenuComponent/MenuComponent.js
+++ b/src/components/MenuComponent/MenuComponent.js
@@ -1,27 +1,70 @@
import React, {Component} from '../../../node_modules/react';
+import {FormattedMessage} from 'react-intl';
import './MenuComponent.scss'
-// import { connect } from "react-redux";
-// import { bindActionCreators } from "redux";
-// import * as MenuComponentActions from "../../store/MenuComponent/actions";
-let title = "Anthony Dumas";
-let jobTitle = "Développeur Full Stack @ Harvest";
+const URL_add_parameter = function(url, param, value){
+ var hash = {};
+ var parser = document.createElement('a');
+
+ parser.href = url;
+
+ var parameters = parser.search.split(/\?|&/);
+
+ for(var i=0; i < parameters.length; i++) {
+ if(!parameters[i])
+ continue;
+
+ var ary = parameters[i].split('=');
+ hash[ary[0]] = ary[1];
+ }
+
+ hash[param] = value;
+
+ var list = [];
+ Object.keys(hash).forEach(function (key) {
+ list.push(key + '=' + hash[key]);
+ });
+
+ parser.search = '?' + list.join('&');
+ return parser.href;
+}
export default class MenuComponent extends Component {
// constructor(props) {
// super(props);
// this.state = {};
// }
+ honhonhon() {
+ window.location.href=URL_add_parameter(window.location.href, "lang", "fr");
+ }
+
+ heygovna() {
+ window.location.href=URL_add_parameter(window.location.href, "lang", "en");
+ }
+
+
render() {
return ;
}
diff --git a/src/index.js b/src/index.js
index ef2edf8..fdc2c7d 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,12 +1,43 @@
import React from 'react';
import ReactDOM from 'react-dom';
+import { IntlProvider } from 'react-intl';
+
+
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
+import messages_fr from './messages/fr.json';
+import messages_en from './messages/en.json';
+
+const messages = {
+ 'fr': messages_fr,
+ 'en': messages_en,
+};
+
+const i18nConfig = {
+ defaultLocale: 'fr',
+ messages,
+};
+
+const language = function() {
+ const queryString = window.location.search;
+ const urlParams = new URLSearchParams(queryString);
+ let lang = urlParams.get("lang");
+ if(messages[lang] == undefined){
+ lang = navigator.language.split(/[-_]/)[0];
+ }
+ return lang;
+}
ReactDOM.render(
+
+
,
document.getElementById('root')
);
diff --git a/src/messages/en.json b/src/messages/en.json
new file mode 100644
index 0000000..fba979e
--- /dev/null
+++ b/src/messages/en.json
@@ -0,0 +1,4 @@
+{
+ "title":"Anthony Dumas",
+ "subtitle":"Full Stack Developer @ Harvest"
+}
\ No newline at end of file
diff --git a/src/messages/fr.json b/src/messages/fr.json
new file mode 100644
index 0000000..540118f
--- /dev/null
+++ b/src/messages/fr.json
@@ -0,0 +1,4 @@
+{
+ "title":"Anthony Yvon Dumas",
+ "subtitle":"Développeur Full Stack @ Harvest"
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 01f8b8d..40fed2b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1140,6 +1140,60 @@
"minimatch" "^3.0.4"
"strip-json-comments" "^3.1.1"
+"@formatjs/ecma402-abstract@1.5.0":
+ "integrity" "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q=="
+ "resolved" "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz"
+ "version" "1.5.0"
+ dependencies:
+ "tslib" "^2.0.1"
+
+"@formatjs/intl-datetimeformat@3.2.1":
+ "integrity" "sha512-teeUgUoieP0JjZYPWjJV72CoPQoukCMKGW1YUu00+TaHzZBNqVgPCdFJo2vgl1jKccOAT3VT79BHNEsR9DsBBQ=="
+ "resolved" "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.1.tgz"
+ "version" "3.2.1"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "tslib" "^2.0.1"
+
+"@formatjs/intl-displaynames@4.0.2":
+ "integrity" "sha512-rOlDcFzr6UFYqH7BKI9vlpDC5MpTT48dsPxO9I6yciDlOb1IyqvIgUs+xsuNOj96akDCDrgwocrdJ1VEDO0Ntw=="
+ "resolved" "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-4.0.2.tgz"
+ "version" "4.0.2"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "tslib" "^2.0.1"
+
+"@formatjs/intl-listformat@5.0.2":
+ "integrity" "sha512-Y+7/Dw3oe29kT4afbw2KCSzast6M04ibidBMMPqjxOHHxan1LeL0KQsY/iRHTgTAcfiSIqZnneJZjZi4MzjLJg=="
+ "resolved" "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-5.0.2.tgz"
+ "version" "5.0.2"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "tslib" "^2.0.1"
+
+"@formatjs/intl-relativetimeformat@8.0.1":
+ "integrity" "sha512-yMCtrDeQnqx95ucaYbHc1BP4XUP0q+JoMiP8kzMe04AgVvkfAScsoRuKfXw1EH1FkV51C/vqWIKDoGj1WoZnxQ=="
+ "resolved" "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.1.tgz"
+ "version" "8.0.1"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "tslib" "^2.0.1"
+
+"@formatjs/intl@1.4.13":
+ "integrity" "sha512-GEWwkaNFnskOGGd6gq0Y0RetiH2iNnARXzQ+glR2RqU0xk00aS5KpwkEDo1hN9NaO9fRr9UDvzDoEu9foQFVmA=="
+ "resolved" "https://registry.npmjs.org/@formatjs/intl/-/intl-1.4.13.tgz"
+ "version" "1.4.13"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "@formatjs/intl-datetimeformat" "3.2.1"
+ "@formatjs/intl-displaynames" "4.0.2"
+ "@formatjs/intl-listformat" "5.0.2"
+ "@formatjs/intl-relativetimeformat" "8.0.1"
+ "fast-memoize" "^2.5.2"
+ "intl-messageformat" "9.4.0"
+ "intl-messageformat-parser" "6.1.0"
+ "tslib" "^2.0.1"
+
"@hapi/address@2.x.x":
"integrity" "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ=="
"resolved" "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz"
@@ -1672,6 +1726,14 @@
dependencies:
"@types/node" "*"
+"@types/hoist-non-react-statics@^3.3.1":
+ "integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA=="
+ "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz"
+ "version" "3.3.1"
+ dependencies:
+ "@types/react" "*"
+ "hoist-non-react-statics" "^3.3.0"
+
"@types/html-minifier-terser@^5.0.0":
"integrity" "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA=="
"resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz"
@@ -1739,11 +1801,24 @@
"resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz"
"version" "2.1.5"
+"@types/prop-types@*":
+ "integrity" "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw=="
+ "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz"
+ "version" "15.7.3"
+
"@types/q@^1.5.1":
"integrity" "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
"resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz"
"version" "1.5.4"
+"@types/react@*":
+ "integrity" "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw=="
+ "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz"
+ "version" "17.0.0"
+ dependencies:
+ "@types/prop-types" "*"
+ "csstype" "^3.0.2"
+
"@types/resolve@0.0.8":
"integrity" "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ=="
"resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz"
@@ -3830,6 +3905,11 @@
dependencies:
"cssom" "~0.3.6"
+"csstype@^3.0.2":
+ "integrity" "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz"
+ "version" "3.0.5"
+
"cyclist@^1.0.1":
"integrity" "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk="
"resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz"
@@ -4914,6 +4994,11 @@
"resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
"version" "2.0.6"
+"fast-memoize@^2.5.2":
+ "integrity" "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw=="
+ "resolved" "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz"
+ "version" "2.5.2"
+
"fastq@^1.6.0":
"integrity" "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w=="
"resolved" "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz"
@@ -5478,6 +5563,13 @@
"minimalistic-assert" "^1.0.0"
"minimalistic-crypto-utils" "^1.0.1"
+"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.2":
+ "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="
+ "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
+ "version" "3.3.2"
+ dependencies:
+ "react-is" "^16.7.0"
+
"hoopy@^0.1.4":
"integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ=="
"resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz"
@@ -5791,6 +5883,23 @@
"has" "^1.0.3"
"side-channel" "^1.0.2"
+"intl-messageformat-parser@6.1.0":
+ "integrity" "sha512-nPPh2kOrKqlh4D9bCAetxkrUiq5/6S1exPQyg52Ihusy0ECNGhZ0Qmq8pFRK9gWIuiQPVmLA7eSNp8diC2tX3w=="
+ "resolved" "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.0.tgz"
+ "version" "6.1.0"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "tslib" "^2.0.1"
+
+"intl-messageformat@9.4.0":
+ "integrity" "sha512-zcF8OWG52dCwwePkykqqv7F038vCaixPR14Lr3YUFc9jRdGoCazl2dTE3BwBaeHr3pG/qYb6A/mwMKrj4LFt9Q=="
+ "resolved" "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.4.0.tgz"
+ "version" "9.4.0"
+ dependencies:
+ "fast-memoize" "^2.5.2"
+ "intl-messageformat-parser" "6.1.0"
+ "tslib" "^2.0.1"
+
"ip-regex@^2.1.0":
"integrity" "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk="
"resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz"
@@ -9054,6 +9163,29 @@
"resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz"
"version" "6.0.8"
+"react-intl@^5.10.9":
+ "integrity" "sha512-DfUF4YMlZqaNRfgfvf46AcXxz7pDi7pkxRbQoimUJWEkjep+6QYLlH7ogypysGD1Sl5kbWi7b69bbG7wPqt1vA=="
+ "resolved" "https://registry.npmjs.org/react-intl/-/react-intl-5.10.9.tgz"
+ "version" "5.10.9"
+ dependencies:
+ "@formatjs/ecma402-abstract" "1.5.0"
+ "@formatjs/intl" "1.4.13"
+ "@formatjs/intl-displaynames" "4.0.2"
+ "@formatjs/intl-listformat" "5.0.2"
+ "@formatjs/intl-relativetimeformat" "8.0.1"
+ "@types/hoist-non-react-statics" "^3.3.1"
+ "fast-memoize" "^2.5.2"
+ "hoist-non-react-statics" "^3.3.2"
+ "intl-messageformat" "9.4.0"
+ "intl-messageformat-parser" "6.1.0"
+ "shallow-equal" "^1.2.1"
+ "tslib" "^2.0.1"
+
+"react-is@^16.7.0":
+ "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
+ "version" "16.13.1"
+
"react-is@^16.8.1":
"integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
"resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
@@ -9136,7 +9268,7 @@
optionalDependencies:
"fsevents" "^2.1.3"
-"react@*", "react@^17.0.1", "react@17.0.1":
+"react@*", "react@^16.3.0 || 17", "react@^17.0.1", "react@17.0.1":
"integrity" "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w=="
"resolved" "https://registry.npmjs.org/react/-/react-17.0.1.tgz"
"version" "17.0.1"
@@ -9951,6 +10083,11 @@
dependencies:
"kind-of" "^6.0.2"
+"shallow-equal@^1.2.1":
+ "integrity" "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
+ "resolved" "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz"
+ "version" "1.2.1"
+
"shebang-command@^1.2.0":
"integrity" "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo="
"resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
@@ -10832,7 +10969,7 @@
"resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
"version" "1.14.1"
-"tslib@^2.0.3":
+"tslib@^2.0.1", "tslib@^2.0.3":
"integrity" "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
"resolved" "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz"
"version" "2.0.3"
@@ -10930,7 +11067,7 @@
"resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
"version" "0.0.6"
-"typescript@^3.2.1", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta":
+"typescript@^3.2.1", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@4":
"integrity" "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ=="
"resolved" "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz"
"version" "4.1.2"