Build the full site from the copy decks

Adds About, Contact, Services (index + 8) and Industries (index + 7),
generated from structured JSON converted out of the .docx copy decks
by scripts/convert-docs.py. Shared header with dropdowns, footer,
contact form (mailto until a backend exists), FAQ/breadcrumb JSON-LD,
sitemap and robots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alejandro Veras
2026-10-08 22:54:50 -04:00
parent 99a48fac2b
commit b8cf7cfbcb
42 changed files with 11488 additions and 151 deletions
+86
View File
@@ -0,0 +1,86 @@
import about from "@/content/pages/about.json";
import contact from "@/content/pages/contact.json";
import services from "@/content/pages/services.json";
import industries from "@/content/pages/industries.json";
import paidMedia from "@/content/pages/services_paid-media.json";
import seo from "@/content/pages/services_seo.json";
import llmo from "@/content/pages/services_llmo.json";
import webDevelopment from "@/content/pages/services_web-development.json";
import socialMedia from "@/content/pages/services_social-media.json";
import brand from "@/content/pages/services_brand.json";
import consulting from "@/content/pages/services_consulting.json";
import cybersecurity from "@/content/pages/services_cybersecurity.json";
import hospitality from "@/content/pages/industries_hospitality.json";
import medicalDental from "@/content/pages/industries_medical-dental.json";
import automotive from "@/content/pages/industries_automotive.json";
import ecommerce from "@/content/pages/industries_e-commerce.json";
import homeServices from "@/content/pages/industries_home-services.json";
import b2b from "@/content/pages/industries_b2b.json";
import creators from "@/content/pages/industries_creators.json";
import { industryNav, serviceNav } from "./routes";
export type SectionKind = "text" | "cards" | "steps" | "faq" | "links" | "stats" | "offices" | "showcase";
export type Item = {
kicker: string | null;
title: string;
subtitle: string | null;
body: string[];
list: string[];
cta: string | null;
num?: string;
};
export type Section = {
eyebrow: string | null;
title: string | null;
intro: string[];
items: Item[];
outro: string[];
ctas: string[];
form: boolean;
kind: SectionKind | string;
};
export type Page = {
slug: string;
path: string;
meta: { title: string | null; description: string | null };
hero: Section;
sections: Section[];
};
const serviceContent: Record<string, unknown> = {
"paid-media": paidMedia,
seo,
llmo,
"web-development": webDevelopment,
"social-media": socialMedia,
brand,
consulting,
cybersecurity,
};
const industryContent: Record<string, unknown> = {
hospitality,
"medical-dental": medicalDental,
automotive,
"e-commerce": ecommerce,
"home-services": homeServices,
b2b,
creators,
};
export const pages = { about, contact, services, industries } as unknown as Record<
"about" | "contact" | "services" | "industries",
Page
>;
export function getService(slug: string): Page | undefined {
return serviceNav.some((s) => s.slug === slug) ? (serviceContent[slug] as Page) : undefined;
}
export function getIndustry(slug: string): Page | undefined {
return industryNav.some((s) => s.slug === slug) ? (industryContent[slug] as Page) : undefined;
}