diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index b9baeae..b2c483b 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -22,23 +22,11 @@ export default function Layout() { { "name": "CONTATO", "href": "#contact" - }, - { - "name": "Hero", - "href": "#hero" - }, - { - "name": "Manifesto", - "href": "#manifesto" - }, - { - "name": "Manifesto Text", - "href": "#manifesto-text" } ]; return ( - + /sections/.tsx. Edit the section +// files directly. Non-block content (wrappers, non-inlinable sections) is +// preserved inline; extracted section blocks become refs. -export default function HomePage() { +import React from 'react'; +import HeroSection from './HomePage/sections/Hero'; +import ManifestoSection from './HomePage/sections/Manifesto'; +import ProcessSection from './HomePage/sections/Process'; +import ProjectsSection from './HomePage/sections/Projects'; +import LabSection from './HomePage/sections/Lab'; +import ManifestoTextSection from './HomePage/sections/ManifestoText'; +import MascoteSection from './HomePage/sections/Mascote'; +import ContactSection from './HomePage/sections/Contact'; + +export default function HomePage(): React.JSX.Element { return ( - <> -
- - - -
+<> + -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ -
- - - -
+ ); } diff --git a/src/pages/HomePage/sections/Contact.tsx b/src/pages/HomePage/sections/Contact.tsx new file mode 100644 index 0000000..bc6d5e0 --- /dev/null +++ b/src/pages/HomePage/sections/Contact.tsx @@ -0,0 +1,27 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "contact" section. + +import React from 'react'; +import ContactCta from '@/components/sections/contact/ContactCta'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ContactSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Hero.tsx b/src/pages/HomePage/sections/Hero.tsx new file mode 100644 index 0000000..51acdef --- /dev/null +++ b/src/pages/HomePage/sections/Hero.tsx @@ -0,0 +1,100 @@ +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import Button from "@/components/ui/Button"; +import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import AvatarGroup from "@/components/ui/AvatarGroup"; + +const primaryButton = { + text: "ENTRAR NO LAB", + href: "#lab" +}; +const secondaryButton = { + href: "#projects", + text: "VER PROJETOS" +}; + +type HeroOverlayProps = { + tag: string; + title: string; + description: string; + primaryButton: { text: string; href: string }; + secondaryButton: { text: string; href: string }; + avatarsSrc?: string[]; + avatarsLabel?: string; +} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }); + +const HeroInline = () => { + return ( +
+ + + +
+ ); +}; + +export default function HeroSection() { + return ( +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Lab.tsx b/src/pages/HomePage/sections/Lab.tsx new file mode 100644 index 0000000..16cd259 --- /dev/null +++ b/src/pages/HomePage/sections/Lab.tsx @@ -0,0 +1,34 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "lab" section. + +import React from 'react'; +import MetricsSimpleCards from '@/components/sections/metrics/MetricsSimpleCards'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function LabSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Manifesto.tsx b/src/pages/HomePage/sections/Manifesto.tsx new file mode 100644 index 0000000..5ec425c --- /dev/null +++ b/src/pages/HomePage/sections/Manifesto.tsx @@ -0,0 +1,39 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "manifesto" section. + +import React from 'react'; +import AboutFeaturesSplit from '@/components/sections/about/AboutFeaturesSplit'; +import { MessageSquare, Search, ShoppingBag } from "lucide-react"; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ManifestoSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/ManifestoText.tsx b/src/pages/HomePage/sections/ManifestoText.tsx new file mode 100644 index 0000000..2631591 --- /dev/null +++ b/src/pages/HomePage/sections/ManifestoText.tsx @@ -0,0 +1,35 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "manifesto-text" section. + +import React from 'react'; +import FaqTabbedAccordion from '@/components/sections/faq/FaqTabbedAccordion'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ManifestoTextSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Mascote.tsx b/src/pages/HomePage/sections/Mascote.tsx new file mode 100644 index 0000000..4326776 --- /dev/null +++ b/src/pages/HomePage/sections/Mascote.tsx @@ -0,0 +1,42 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "mascote" section. + +import React from 'react'; +import TestimonialTrustCard from '@/components/sections/testimonial/TestimonialTrustCard'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function MascoteSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +} diff --git a/src/pages/HomePage/sections/Process.tsx b/src/pages/HomePage/sections/Process.tsx new file mode 100644 index 0000000..8aa96c7 --- /dev/null +++ b/src/pages/HomePage/sections/Process.tsx @@ -0,0 +1,88 @@ +/* eslint-disable */ +// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body +import ImageOrVideo from "@/components/ui/ImageOrVideo"; +import TextAnimation from "@/components/ui/TextAnimation"; +import ScrollReveal from "@/components/ui/ScrollReveal"; +import Button from "@/components/ui/Button"; +import { cls } from "@/lib/utils"; + +type FeatureItem = { + title: string; + description: string; +} & ({ imageSrc: string; videoSrc?: never } | { videoSrc: string; imageSrc?: never }); + +interface FeaturesBentoGridProps { + tag: string; + title: string; + description: string; + features: [FeatureItem, FeatureItem, FeatureItem, FeatureItem]; + primaryButton?: { text: string; href: string }; + secondaryButton?: { text: string; href: string }; +} + +import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards'; + +const ProcessInline = () => { + return ( +
+
+ +
+
+ +

+ COMO TRABALHAMOS +

+
+
+ +
+
+ + {[ + { num: "01", title: "ANÁLISE", desc: "Investigamos sua marca." }, + { num: "02", title: "DIAGNÓSTICO", desc: "Identificamos gargalos." }, + { num: "03", title: "POSICIONAMENTO", desc: "Definimos direção." }, + { num: "04", title: "EXECUÇÃO", desc: "Transformamos estratégia em presença visual." } + ].map((step, i) => ( + +
+
+
+ {step.num} +
+ +
+
+ +{i+1} +
+ +

{step.title}

+

{step.desc}

+ +
+
+
+ Fase {step.num} concluída +
+
+
+
+
+ ))} +
+
+
+ ); +}; + +export default function ProcessSection() { + return ( +
+
+ +
+ +
+ ); +} diff --git a/src/pages/HomePage/sections/Projects.tsx b/src/pages/HomePage/sections/Projects.tsx new file mode 100644 index 0000000..5009305 --- /dev/null +++ b/src/pages/HomePage/sections/Projects.tsx @@ -0,0 +1,57 @@ +// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this +// file as the canonical source for the "projects" section. + +import React from 'react'; +import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento'; +import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary"; + +export default function ProjectsSection(): React.JSX.Element { + return ( +
+ + + +
+ ); +}