From ccc6cc1da5eace0d3d111f808813bc4979023062 Mon Sep 17 00:00:00 2001 From: Mark Henderson Date: Thu, 2 Apr 2026 12:05:33 -0700 Subject: [PATCH] =?UTF-8?q?feat(justine):=20isolate=20design=20system=20?= =?UTF-8?q?=E2=80=94=20verbatim=20CSS=20+=20(justine)=20route=20group?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add app/styles/justine/01-homepage.css: rules from 01_homepage.html scoped to [data-justine] - Replace app/(marketing) with app/(justine): layout wraps data-justine + Plus Jakarta - JustineHomePage/Nav/Footer: original class names (btn-ink, hero-grid, …) + inline styles from HTML - Remove app/justine-marketing.css; move /features /pricing /privacy /terms under (justine) Made-with: Cursor --- .../features/page.tsx | 0 app/(justine)/layout.tsx | 47 ++ app/(justine)/page.tsx | 5 + .../pricing/page.tsx | 0 .../privacy/page.tsx | 0 app/{(marketing) => (justine)}/terms/page.tsx | 0 app/(marketing)/layout.tsx | 94 ---- app/(marketing)/page.tsx | 26 - app/styles/justine/01-homepage.css | 355 ++++++++++++ .../components/justine/JustineFooter.tsx | 32 ++ .../components/justine/JustineHomePage.tsx | 518 ++++++++++++++++++ marketing/components/justine/JustineNav.tsx | 115 ++++ marketing/components/justine/index.ts | 3 + 13 files changed, 1075 insertions(+), 120 deletions(-) rename app/{(marketing) => (justine)}/features/page.tsx (100%) create mode 100644 app/(justine)/layout.tsx create mode 100644 app/(justine)/page.tsx rename app/{(marketing) => (justine)}/pricing/page.tsx (100%) rename app/{(marketing) => (justine)}/privacy/page.tsx (100%) rename app/{(marketing) => (justine)}/terms/page.tsx (100%) delete mode 100644 app/(marketing)/layout.tsx delete mode 100644 app/(marketing)/page.tsx create mode 100644 app/styles/justine/01-homepage.css create mode 100644 marketing/components/justine/JustineFooter.tsx create mode 100644 marketing/components/justine/JustineHomePage.tsx create mode 100644 marketing/components/justine/JustineNav.tsx create mode 100644 marketing/components/justine/index.ts diff --git a/app/(marketing)/features/page.tsx b/app/(justine)/features/page.tsx similarity index 100% rename from app/(marketing)/features/page.tsx rename to app/(justine)/features/page.tsx diff --git a/app/(justine)/layout.tsx b/app/(justine)/layout.tsx new file mode 100644 index 0000000..421cd87 --- /dev/null +++ b/app/(justine)/layout.tsx @@ -0,0 +1,47 @@ +import type { Metadata } from "next"; +import { Plus_Jakarta_Sans } from "next/font/google"; +import { homepage } from "@/marketing/content/homepage"; +import { JustineNav } from "@/marketing/components/justine/JustineNav"; +import { JustineFooter } from "@/marketing/components/justine/JustineFooter"; +import "../styles/justine/01-homepage.css"; + +const justineJakarta = Plus_Jakarta_Sans({ + subsets: ["latin"], + weight: ["400", "500", "600", "700", "800"], + variable: "--font-justine-jakarta", + display: "swap", +}); + +export const metadata: Metadata = { + title: homepage.meta.title, + description: homepage.meta.description, + openGraph: { + title: homepage.meta.title, + description: homepage.meta.description, + url: "https://www.vibnai.com", + siteName: "VIBN", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: homepage.meta.title, + description: homepage.meta.description, + }, +}; + +export default function JustineLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+ +
{children}
+ +
+ ); +} diff --git a/app/(justine)/page.tsx b/app/(justine)/page.tsx new file mode 100644 index 0000000..cd77307 --- /dev/null +++ b/app/(justine)/page.tsx @@ -0,0 +1,5 @@ +import { JustineHomePage } from "@/marketing/components/justine/JustineHomePage"; + +export default function LandingPage() { + return ; +} diff --git a/app/(marketing)/pricing/page.tsx b/app/(justine)/pricing/page.tsx similarity index 100% rename from app/(marketing)/pricing/page.tsx rename to app/(justine)/pricing/page.tsx diff --git a/app/(marketing)/privacy/page.tsx b/app/(justine)/privacy/page.tsx similarity index 100% rename from app/(marketing)/privacy/page.tsx rename to app/(justine)/privacy/page.tsx diff --git a/app/(marketing)/terms/page.tsx b/app/(justine)/terms/page.tsx similarity index 100% rename from app/(marketing)/terms/page.tsx rename to app/(justine)/terms/page.tsx diff --git a/app/(marketing)/layout.tsx b/app/(marketing)/layout.tsx deleted file mode 100644 index 34a9b70..0000000 --- a/app/(marketing)/layout.tsx +++ /dev/null @@ -1,94 +0,0 @@ -import { Button } from "@/components/ui/button"; -import Link from "next/link"; -import type { Metadata } from "next"; -import { homepage } from "@/marketing/content/homepage"; -import { Footer } from "@/marketing/components"; - -export const metadata: Metadata = { - title: homepage.meta.title, - description: homepage.meta.description, - openGraph: { - title: homepage.meta.title, - description: homepage.meta.description, - url: "https://www.vibnai.com", - siteName: "VIBN", - type: "website", - }, - twitter: { - card: "summary_large_image", - title: homepage.meta.title, - description: homepage.meta.description, - }, -}; - -export default function MarketingLayout({ - children, -}: { - children: React.ReactNode; -}) { - return ( -
- {/* Navigation */} -
-
-
- - Vib'n - Vib'n - -
-
- -
- - - - - - -
-
-
-
- - {/* Main Content */} -
{children}
- -
-
- ); -} - diff --git a/app/(marketing)/page.tsx b/app/(marketing)/page.tsx deleted file mode 100644 index 3e9d07e..0000000 --- a/app/(marketing)/page.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { - Hero, - EmotionalHook, - WhoItsFor, - Transformation, - Features, - HowItWorks, - Pricing, - CTA, -} from "@/marketing/components"; - -export default function LandingPage() { - return ( -
- - - - - - - - -
- ); -} - diff --git a/app/styles/justine/01-homepage.css b/app/styles/justine/01-homepage.css new file mode 100644 index 0000000..1654840 --- /dev/null +++ b/app/styles/justine/01-homepage.css @@ -0,0 +1,355 @@ +/** + * Verbatim from justine/01_homepage.html