From babcc20166bf2785245c98a42843410ad3e0e2fb Mon Sep 17 00:00:00 2001 From: FernandoJVideira <03.pleaser-minster@icloud.com> Date: Sat, 19 Apr 2025 18:12:49 +0100 Subject: [PATCH] Website Overall --- package-lock.json | 139 +++++++++++++----- package.json | 1 + public/locales/PP/{en.json => en-GB.json} | 0 public/locales/PP/{pt.json => pt-PT.json} | 0 public/locales/TOS/{en.json => en-GB.json} | 0 public/locales/TOS/{pt.json => pt-PT.json} | 0 public/locales/common/{en.json => en-GB.json} | 0 public/locales/common/{pt.json => pt-PT.json} | 0 src/Components/Card.tsx | 28 ++-- src/Components/Footer/Footer.tsx | 38 +---- src/Components/Navbar/Navbar.tsx | 30 ++-- src/Components/Pages/Contact/ContactForm.tsx | 14 +- src/Components/Pages/Contact/ContactPage.tsx | 2 +- src/Components/Pages/Hero/Hero.tsx | 20 +-- src/Components/Pages/Results/ResultsPage.tsx | 2 +- src/Components/Pages/Services/CameraCards.tsx | 2 +- .../Pages/Services/MarketingCards.tsx | 2 +- src/Components/Pages/Services/ServiceCard.tsx | 28 ++-- src/Components/Pages/Services/Services.tsx | 14 +- src/Components/Pages/Services/SocialMedia.tsx | 2 +- .../Pages/Services/WebsiteCards.tsx | 2 +- src/Components/Shared/PremiumButton.tsx | 23 +++ src/i18n.ts | 4 +- src/index.css | 49 +++++- src/routes/PP.tsx | 35 ++--- src/routes/TOS.tsx | 37 ++--- tailwind.config.js | 23 +-- 27 files changed, 295 insertions(+), 200 deletions(-) rename public/locales/PP/{en.json => en-GB.json} (100%) rename public/locales/PP/{pt.json => pt-PT.json} (100%) rename public/locales/TOS/{en.json => en-GB.json} (100%) rename public/locales/TOS/{pt.json => pt-PT.json} (100%) rename public/locales/common/{en.json => en-GB.json} (100%) rename public/locales/common/{pt.json => pt-PT.json} (100%) create mode 100644 src/Components/Shared/PremiumButton.tsx diff --git a/package-lock.json b/package-lock.json index febaa61..0ec7e89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,8 @@ "@emailjs/browser": "^4.3.3", "@headlessui/react": "^1.7.18", "@heroicons/react": "^2.1.3", + "caniuse-lite": "^1.0.30001696", + "framer-motion": "^12.7.3", "i18next": "^23.11.5", "i18next-browser-languagedetector": "^8.0.0", "i18next-http-backend": "^2.5.2", @@ -20,7 +22,7 @@ "react-dom": "^18.2.0", "react-i18next": "^14.1.2", "react-icons": "^5.0.1", - "react-phone-input-2": "^2.15.1", + "react-phone-number-input": "^3.4.3", "react-router-dom": "^6.22.3", "react-toastify": "^10.0.5", "sort-by": "^0.0.2" @@ -1877,10 +1879,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001608", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz", - "integrity": "sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA==", - "dev": true, + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", "funding": [ { "type": "opencollective", @@ -1894,7 +1895,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chalk": { "version": "2.4.2", @@ -2001,6 +2003,12 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/country-flag-icons": { + "version": "1.5.18", + "resolved": "https://registry.npmjs.org/country-flag-icons/-/country-flag-icons-1.5.18.tgz", + "integrity": "sha512-z+Uzesi8u8IdkViqqbzzbkf3+a7WJpcET5B7sPwTg7GXqPYpVEgNlZ/FC3l8KO4mEf+mNkmzKLppKTN4PlCJEQ==", + "license": "MIT" + }, "node_modules/cross-fetch": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", @@ -2601,6 +2609,33 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "12.7.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.7.3.tgz", + "integrity": "sha512-dNT4l5gEnUo2ytXLUBUf6AI21dZ77TMclDKE3ElaIHZ8m90nJ/NCcExW51zdSIaS0RhAS5iXcF7bEIxZe8XG2g==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.7.3", + "motion-utils": "^12.7.2", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2850,6 +2885,27 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/input-format": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/input-format/-/input-format-0.3.14.tgz", + "integrity": "sha512-gHMrgrbCgmT4uK5Um5eVDUohuV9lcs95ZUUN9Px2Y0VIfjTzT2wF8Q3Z4fwLFm7c5Z2OXCm53FHoovj6SlOKdg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": ">=18.1.0", + "react-dom": ">=18.1.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3037,6 +3093,12 @@ "node": ">= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.12.6", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.6.tgz", + "integrity": "sha512-PJiS4ETaUfCOFLpmtKzAbqZQjCCKVu2OhTV4SVNNE7c2nu/dACvtCqj4L0i/KWNnIgRv7yrILvBj5Lonv5Ncxw==", + "license": "MIT" + }, "node_modules/lie": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", @@ -3083,32 +3145,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.reduce": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", - "integrity": "sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==" - }, - "node_modules/lodash.startswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", - "integrity": "sha512-XClYR1h4/fJ7H+mmCKppbiBmljN/nGs73iq2SjCT9SF4CBPoUHzLvWmH1GtZMhMBZSiRkHXfeA2RY1eIlJ75ww==" - }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -3184,6 +3226,21 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/motion-dom": { + "version": "12.7.3", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.7.3.tgz", + "integrity": "sha512-IjMt1YJHrvyvruFvmpmd6bGXXGCvmygrnvSb3aZ8KhOzF4H3PulU+cMBzH+U8TBJHjC/mnmJFRIA1Cu4vBfcBA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.7.2" + } + }, + "node_modules/motion-utils": { + "version": "12.7.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.7.2.tgz", + "integrity": "sha512-XhZwqctxyJs89oX00zn3OGCuIIpVevbTa+u82usWBC6pSHUd2AoNWiYa7Du8tJxJy9TFbZ82pcn5t7NOm1PHAw==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3710,21 +3767,21 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/react-phone-input-2": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/react-phone-input-2/-/react-phone-input-2-2.15.1.tgz", - "integrity": "sha512-W03abwhXcwUoq+vUFvC6ch2+LJYMN8qSOiO889UH6S7SyMCQvox/LF3QWt+cZagZrRdi5z2ON3omnjoCUmlaYw==", + "node_modules/react-phone-number-input": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/react-phone-number-input/-/react-phone-number-input-3.4.12.tgz", + "integrity": "sha512-Raob77KdtLGm49iC6nuOX9qy6Mg16idkgC7Y1mHmvG2WBYoauHpzxYNlfmFskQKeiztrJIwPhPzBhjFwjenNCA==", + "license": "MIT", "dependencies": { - "classnames": "^2.2.6", - "lodash.debounce": "^4.0.8", - "lodash.memoize": "^4.1.2", - "lodash.reduce": "^4.6.0", - "lodash.startswith": "^4.2.1", - "prop-types": "^15.7.2" + "classnames": "^2.5.1", + "country-flag-icons": "^1.5.17", + "input-format": "^0.3.10", + "libphonenumber-js": "^1.11.20", + "prop-types": "^15.8.1" }, "peerDependencies": { - "react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0", - "react-dom": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0" + "react": ">=16.8", + "react-dom": ">=16.8" } }, "node_modules/react-refresh": { @@ -4295,6 +4352,12 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index dd951c8..c41a26d 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@headlessui/react": "^1.7.18", "@heroicons/react": "^2.1.3", "caniuse-lite": "^1.0.30001696", + "framer-motion": "^12.7.3", "i18next": "^23.11.5", "i18next-browser-languagedetector": "^8.0.0", "i18next-http-backend": "^2.5.2", diff --git a/public/locales/PP/en.json b/public/locales/PP/en-GB.json similarity index 100% rename from public/locales/PP/en.json rename to public/locales/PP/en-GB.json diff --git a/public/locales/PP/pt.json b/public/locales/PP/pt-PT.json similarity index 100% rename from public/locales/PP/pt.json rename to public/locales/PP/pt-PT.json diff --git a/public/locales/TOS/en.json b/public/locales/TOS/en-GB.json similarity index 100% rename from public/locales/TOS/en.json rename to public/locales/TOS/en-GB.json diff --git a/public/locales/TOS/pt.json b/public/locales/TOS/pt-PT.json similarity index 100% rename from public/locales/TOS/pt.json rename to public/locales/TOS/pt-PT.json diff --git a/public/locales/common/en.json b/public/locales/common/en-GB.json similarity index 100% rename from public/locales/common/en.json rename to public/locales/common/en-GB.json diff --git a/public/locales/common/pt.json b/public/locales/common/pt-PT.json similarity index 100% rename from public/locales/common/pt.json rename to public/locales/common/pt-PT.json diff --git a/src/Components/Card.tsx b/src/Components/Card.tsx index 25f5de4..8a9a113 100644 --- a/src/Components/Card.tsx +++ b/src/Components/Card.tsx @@ -9,20 +9,20 @@ const Card = ({ title, description, image }: IProps) => { const imgClasses = image ? defaultImgClasses : `${defaultImgClasses} hidden`; return ( -