From 8278d62e1cf6c2501952b037a21b2f02c42f446a Mon Sep 17 00:00:00 2001 From: Fernando Videira Date: Wed, 12 Jun 2024 11:18:06 +0100 Subject: [PATCH 1/3] Fixed typo --- public/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/locales/en.json b/public/locales/en.json index 711fb79..6522b83 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -119,7 +119,7 @@ "cards": { "card1": { - "title": "GARANTEED", + "title": "GUARANTEED", "description": "We only win if you win!\nThat’s the basis for a good\npartnership.\nYou won’t carry all the risk,\nwe’ll share it." }, From 2b89661b02b2c195bad968fa74b3face9c20210a Mon Sep 17 00:00:00 2001 From: Fernando Videira Date: Sun, 16 Jun 2024 02:47:40 +0100 Subject: [PATCH 2/3] Added Agitate part --- public/locales/en.json | 54 ++++++++-------- public/locales/pt.json | 35 ++++++++--- src/Components/Card.tsx | 29 +++++++++ src/Components/Navbar/Navbar.tsx | 2 +- .../Pages/Optimization/CardContainer.tsx | 32 ++++++++++ .../Pages/Optimization/Optimization.tsx | 18 ++++++ src/Components/Pages/Results/Card.tsx | 24 -------- .../Pages/Results/CardContainer.tsx | 6 +- src/assets/Agency.svg | 10 +++ src/assets/Staff.svg | 61 +++++++++++++++++++ src/assets/Yourself.svg | 16 +++++ src/routes/Home.tsx | 4 ++ tsconfig.json | 20 ++++-- 13 files changed, 246 insertions(+), 65 deletions(-) create mode 100644 src/Components/Card.tsx create mode 100644 src/Components/Pages/Optimization/CardContainer.tsx create mode 100644 src/Components/Pages/Optimization/Optimization.tsx delete mode 100644 src/Components/Pages/Results/Card.tsx create mode 100644 src/assets/Agency.svg create mode 100644 src/assets/Staff.svg create mode 100644 src/assets/Yourself.svg diff --git a/public/locales/en.json b/public/locales/en.json index 6522b83..78ab423 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -1,35 +1,30 @@ { "navbar": { "services": "Services", + "optimization": "Optimization", "advantages": "Advantages", "contact": "Contact" }, - "hero": { "heading": { "part1": "GROW YOUR", "part2": "BUSINESS" }, - "subheading": { "part1": "We do all the digital footprint for you,", "part2": "so you can focus on what's important!" }, - "button": "Yes, I want that!" }, - "services": { "heading": { - "part1": "We've got your", - "part2": "footprint", - "part3": "bullsh", + "part1": "We've Got Your", + "part2": "Footprint", + "part3": "Bullsh", "part4": "*", - "part5": "t covered!" + "part5": "t Covered!" }, - "subheading": "Unlock the full potential of your business with our services.", - "cards": { "marketing": { "card1": { @@ -49,7 +44,6 @@ "description": "Plan" } }, - "website": { "card1": { "title": "Idealize", @@ -68,7 +62,6 @@ "description": "Website" } }, - "social": { "card1": { "title": "Analyze", @@ -87,7 +80,6 @@ "description": "Platforms" } }, - "media": { "card1": { "title": "Envision", @@ -108,38 +100,51 @@ } } }, - + "optimization": { + "heading": { + "part1": "So How Do You Optimize", + "part2": "Your Business?" + }, + "cards": { + "card1": { + "title": "HANDLE EVERYTHING YOURSELF?", + "description": "That's fine if you have very little on your plate.\n\nBut if you're pretty swamped already... this isn't a viable option." + }, + "card2": { + "title": "NEW STAFF?", + "description": "Finding good people isn't easy. Training and onboarding staff is costly.\n\n And even if you do find the perfect man or woman for the position... you're still depending on one person!" + }, + "card3": { + "title": "HIRE AN AGENCY?", + "description": "Don't have a marketing budget of tens of thousands of euros?\n\n Then your account could end up being managed by the intern of the assistants' assistant.\n\n Not exactly optimal." + } + } + }, "results": { "heading": { - "part1": "Ok... So what makes", - "part2": "us different?" + "part1": "Ok... So What Makes", + "part2": "Us Different?" }, - "subheading": "We have helped many businesses grow and expand their digital footprint.", - "cards": { "card1": { "title": "GUARANTEED", "description": "We only win if you win!\nThat’s the basis for a good\npartnership.\nYou won’t carry all the risk,\nwe’ll share it." }, - "card2": { "title": "RESULTS", "description": "Our first priority is to get\nyou results.\n\nLess talk, more walk." }, - "card3": { "title": "LOCAL", "description": "We’re not a anonymous call\ncenter. We’re a local\ncompany, so you’ll be able to\nreach us when you need us" }, - "card4": { "title": "SPECIALIZED", "description": "Jack of all trades... master\nof none. Specialization\nworks. We work with\nindustries we know, so we\ncan guarantee results." } } }, - "contact": { "heading": { "part1": "Contact Us For", @@ -147,12 +152,10 @@ "part3": "Free", "part4": "Analysis" }, - "subheading": { "part1": "Would you like to know what we could do for you? Fill out the form ad we’ll get", "part2": "back to you No obligation, no annoying tactics. We won’t waste your time." }, - "form": { "name": "Name", "email": "Email", @@ -162,11 +165,10 @@ "message": "Message", "button": "Send" }, - "toasts": { "success": "Your message has been sent successfully!", "error": "An error occurred while sending your message. Please try again later.", "empty": "Please fill out all the fields before sending the message." } } -} +} \ No newline at end of file diff --git a/public/locales/pt.json b/public/locales/pt.json index 1715a86..0a6b098 100644 --- a/public/locales/pt.json +++ b/public/locales/pt.json @@ -1,6 +1,7 @@ { "navbar": { "services": "Serviços", + "optimization": "Otimização", "advantages": "Vantagens", "contact": "Contacto" }, @@ -17,11 +18,11 @@ }, "services": { "heading": { - "part1": "Nós cuidamos da sua", - "part2": "presença", - "part3": "digital", + "part1": "Nós Cuidamos Da Sua", + "part2": "Presença", + "part3": "Digital", "part4": " ", - "part5": "por completo!" + "part5": "Por Completo!" }, "subheading": "Desbloqueie todo o potencial do seu negócio com os nossos serviços.", "cards": { @@ -99,10 +100,30 @@ } } }, + "optimization": { + "heading": { + "part1": "Portanto, Como Otimizo", + "part2": "O Meu Negócio?" + }, + "cards": { + "card1": { + "title": "TRATAR DE TUDO SOZINHO?", + "description": "Está ótimo se tens muito pouco em mãos.\n\nMas se já estás bastante ocupado... esta não é uma opção viável." + }, + "card2": { + "title": "NOVA STAFF?", + "description": "Encontrar boas pessoas não é fácil. Treinar e integrar funcionários é dispendioso.\n\n E mesmo quando encontras a pessoa perfeita para o cargo... ainda estás dependente de uma só pessoa!" + }, + "card3": { + "title": "CONTRATAR UMA AGÊNCIA?", + "description": "Não tens um orçamento de dezenas de milhares de euros?\n\n Então a tua conta pode acabar a ser gerida pelo estagiário do assistente do assistente...\n\n Não é o cenário ideal." + } + } + }, "results": { "heading": { - "part1": "Ok... Então o que nos torna", - "part2": "diferentes?" + "part1": "Ok... Então O Que Nos Torna", + "part2": "Diferentes?" }, "subheading": "Ajudamos muitos negócios a crescer e expandir a sua presença digital.", "cards": { @@ -150,4 +171,4 @@ "empty": "Por favor, preencha todos os campos antes de enviar a mensagem." } } -} +} \ No newline at end of file diff --git a/src/Components/Card.tsx b/src/Components/Card.tsx new file mode 100644 index 0000000..9eacc9e --- /dev/null +++ b/src/Components/Card.tsx @@ -0,0 +1,29 @@ +interface IProps { + title: string; + description: string; + image: string; +} + +const Card = ({ title, description, image }: IProps) => { + const defaultImgClasses = `w-full h-20 mt-5`; + const imgClasses = image ? defaultImgClasses : `${defaultImgClasses} hidden`; + + return ( +
+
+ +

{title}

+

+ {description.split("\n").map((line, i) => ( + + {line} +
+
+ ))} +

+
+
+ ); +}; + +export default Card; diff --git a/src/Components/Navbar/Navbar.tsx b/src/Components/Navbar/Navbar.tsx index c065061..3bcdedc 100644 --- a/src/Components/Navbar/Navbar.tsx +++ b/src/Components/Navbar/Navbar.tsx @@ -19,9 +19,9 @@ export default () => { window.addEventListener("scroll", changeColor); - // Replace javascript:void(0) path with your path const navigation = [ { title: t("navbar.services"), path: "Services" }, + { title: t("navbar.optimization"), path: "Optimization" }, { title: t("navbar.advantages"), path: "Advantages" }, { title: t("navbar.contact"), path: "Contact" }, ]; diff --git a/src/Components/Pages/Optimization/CardContainer.tsx b/src/Components/Pages/Optimization/CardContainer.tsx new file mode 100644 index 0000000..fc4cb37 --- /dev/null +++ b/src/Components/Pages/Optimization/CardContainer.tsx @@ -0,0 +1,32 @@ +import Card from "../../Card"; +import yourself from "../../../assets/Yourself.svg" +import staff from "../../../assets/staff.svg" +import agency from "../../../assets/agency.svg" +import { useTranslation } from "react-i18next"; + +const CardContainer = () => { + + const { t } = useTranslation(); + + return ( +
+ + + +
+ ); +}; + +export default CardContainer; \ No newline at end of file diff --git a/src/Components/Pages/Optimization/Optimization.tsx b/src/Components/Pages/Optimization/Optimization.tsx new file mode 100644 index 0000000..ce58188 --- /dev/null +++ b/src/Components/Pages/Optimization/Optimization.tsx @@ -0,0 +1,18 @@ +import CardContainer from './CardContainer' +import { useTranslation } from 'react-i18next' + +const Optimization = () => { + const { t } = useTranslation('optimization') + return ( +
+

+ " + {t("optimization.heading.part1")}
{t("optimization.heading.part2")} + " +

+ +
+ ) +} + +export default Optimization \ No newline at end of file diff --git a/src/Components/Pages/Results/Card.tsx b/src/Components/Pages/Results/Card.tsx deleted file mode 100644 index b340fd6..0000000 --- a/src/Components/Pages/Results/Card.tsx +++ /dev/null @@ -1,24 +0,0 @@ -interface IProps { - title: string; - description: string; -} - -const Card = ({ title, description }: IProps) => { - return ( -
-
-

{title}

-

- {description.split("\n").map((line, i) => ( - - {line} -
-
- ))} -

-
-
- ); -}; - -export default Card; diff --git a/src/Components/Pages/Results/CardContainer.tsx b/src/Components/Pages/Results/CardContainer.tsx index 55c83a3..dac2c09 100644 --- a/src/Components/Pages/Results/CardContainer.tsx +++ b/src/Components/Pages/Results/CardContainer.tsx @@ -1,5 +1,5 @@ import { useTranslation } from "react-i18next"; -import Card from "./Card"; +import Card from "../../Card"; const CardContainer = () => { const { t } = useTranslation(); @@ -9,18 +9,22 @@ const CardContainer = () => { ); diff --git a/src/assets/Agency.svg b/src/assets/Agency.svg new file mode 100644 index 0000000..606bdfc --- /dev/null +++ b/src/assets/Agency.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/Staff.svg b/src/assets/Staff.svg new file mode 100644 index 0000000..f8d8996 --- /dev/null +++ b/src/assets/Staff.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + diff --git a/src/assets/Yourself.svg b/src/assets/Yourself.svg new file mode 100644 index 0000000..5440830 --- /dev/null +++ b/src/assets/Yourself.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx index 628aba7..5b9ae8d 100644 --- a/src/routes/Home.tsx +++ b/src/routes/Home.tsx @@ -2,6 +2,7 @@ import Navbar from "../Components/Navbar/Navbar"; import Hero from "../Components/Pages/Hero/Hero"; import Services from "../Components/Pages/Services/Services"; import ResultsPage from "../Components/Pages/Results/ResultsPage"; +import Optimization from "../Components/Pages/Optimization/Optimization"; import ContactPage from "../Components/Pages/Contact/ContactPage"; import Footer from "../Components/Footer/Footer"; @@ -13,6 +14,9 @@ const Home = () => {
+
+ +
diff --git a/tsconfig.json b/tsconfig.json index a7fc6fb..761deb7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,10 +2,13 @@ "compilerOptions": { "target": "ES2020", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], "module": "ESNext", "skipLibCheck": true, - /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, @@ -13,13 +16,18 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] -} + "include": [ + "src" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file From b226c82db65a081b7b6514bed055db089af45f90 Mon Sep 17 00:00:00 2001 From: Fernando Videira Date: Sun, 16 Jun 2024 02:50:24 +0100 Subject: [PATCH 3/3] Fixed imports --- src/Components/Pages/Optimization/CardContainer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Components/Pages/Optimization/CardContainer.tsx b/src/Components/Pages/Optimization/CardContainer.tsx index fc4cb37..8fc6bb0 100644 --- a/src/Components/Pages/Optimization/CardContainer.tsx +++ b/src/Components/Pages/Optimization/CardContainer.tsx @@ -1,7 +1,7 @@ import Card from "../../Card"; import yourself from "../../../assets/Yourself.svg" -import staff from "../../../assets/staff.svg" -import agency from "../../../assets/agency.svg" +import staff from "../../../assets/Staff.svg" +import agency from "../../../assets/Agency.svg" import { useTranslation } from "react-i18next"; const CardContainer = () => {