From 21dfd31338e0422e5ec7db5b6f4e56cad723ae59 Mon Sep 17 00:00:00 2001 From: Oleg Proskurin Date: Wed, 31 Dec 2025 18:35:05 +0700 Subject: [PATCH] feat(landing): implement route groups for different header behaviors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Created (landings) route group for home page with sticky header - Created (apps) route group for docs/demo/admin with scrollable header - Moved page components to respective route groups - Updated root layout to be minimal (no header/footer) - Each route group has its own layout with appropriate header style - Updated Footer and layouts to use public folder logo path This enables sticky header on landing pages while docs/demo pages have a header that scrolls away with content. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../app/{ => (apps)}/admin/apikeys/page.tsx | 0 .../src/app/{ => (apps)}/admin/layout.tsx | 0 .../app/{ => (apps)}/admin/master/page.tsx | 0 .../app/{ => (apps)}/demo/gallery/page.tsx | 0 .../src/app/{ => (apps)}/demo/layout.tsx | 0 .../src/app/{ => (apps)}/demo/tti/page.tsx | 0 .../src/app/{ => (apps)}/demo/upload/page.tsx | 0 .../app/{ => (apps)}/docs/api/flows/page.tsx | 0 .../docs/api/generations/page.tsx | 0 .../app/{ => (apps)}/docs/api/images/page.tsx | 0 .../docs/api/live-scopes/page.tsx | 0 .../src/app/{ => (apps)}/docs/api/page.tsx | 0 .../{ => (apps)}/docs/authentication/page.tsx | 0 .../app/{ => (apps)}/docs/generation/page.tsx | 0 .../src/app/{ => (apps)}/docs/images/page.tsx | 0 .../src/app/{ => (apps)}/docs/layout.tsx | 0 .../app/{ => (apps)}/docs/live-urls/page.tsx | 0 .../src/app/{ => (apps)}/docs/page.tsx | 0 apps/landing/src/app/(apps)/layout.tsx | 38 ++++++++++++++++++ .../src/app/{ => (landings)}/_assets/1.jpg | Bin .../src/app/{ => (landings)}/_assets/2.jpg | Bin .../src/app/{ => (landings)}/_assets/3.jpg | Bin .../src/app/{ => (landings)}/_assets/4.jpg | Bin .../src/app/{ => (landings)}/_assets/5.jpg | Bin .../src/app/{ => (landings)}/_assets/6.jpg | Bin .../src/app/{ => (landings)}/_assets/7.jpg | Bin .../src/app/{ => (landings)}/_assets/8.jpg | Bin .../src/app/{ => (landings)}/_assets/9.jpg | Bin .../_assets/banatie-logo-horisontal.png | Bin .../_components/ApiExampleSection.tsx | 0 .../_components/BackgroundBlobs.tsx | 0 .../_components/FinalCtaSection.tsx | 0 .../_components/GeminiSection.tsx | 0 .../_components/GlowEffect.tsx | 0 .../{ => (landings)}/_components/HeroGlow.tsx | 0 .../_components/HeroSection.tsx | 0 .../_components/HowItWorksSection.tsx | 0 .../_components/IntegrationsSection.tsx | 0 .../_components/KeyFeaturesSection.tsx | 0 .../_components/ProblemSolutionSection.tsx | 0 .../_components/PromptUrlsSection.tsx | 0 .../_components/ShapeTheFutureSection.tsx | 0 .../_components/WaitlistEmailForm.tsx | 0 .../_components/WaitlistPopup.tsx | 0 .../app/{ => (landings)}/_components/index.ts | 0 apps/landing/src/app/(landings)/layout.tsx | 38 ++++++++++++++++++ .../landing/src/app/{ => (landings)}/page.tsx | 0 apps/landing/src/app/layout.tsx | 28 ------------- apps/landing/src/components/shared/Footer.tsx | 3 +- 49 files changed, 77 insertions(+), 30 deletions(-) rename apps/landing/src/app/{ => (apps)}/admin/apikeys/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/admin/layout.tsx (100%) rename apps/landing/src/app/{ => (apps)}/admin/master/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/demo/gallery/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/demo/layout.tsx (100%) rename apps/landing/src/app/{ => (apps)}/demo/tti/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/demo/upload/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/api/flows/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/api/generations/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/api/images/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/api/live-scopes/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/api/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/authentication/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/generation/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/images/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/layout.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/live-urls/page.tsx (100%) rename apps/landing/src/app/{ => (apps)}/docs/page.tsx (100%) create mode 100644 apps/landing/src/app/(apps)/layout.tsx rename apps/landing/src/app/{ => (landings)}/_assets/1.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/2.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/3.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/4.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/5.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/6.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/7.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/8.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/9.jpg (100%) rename apps/landing/src/app/{ => (landings)}/_assets/banatie-logo-horisontal.png (100%) rename apps/landing/src/app/{ => (landings)}/_components/ApiExampleSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/BackgroundBlobs.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/FinalCtaSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/GeminiSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/GlowEffect.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/HeroGlow.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/HeroSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/HowItWorksSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/IntegrationsSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/KeyFeaturesSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/ProblemSolutionSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/PromptUrlsSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/ShapeTheFutureSection.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/WaitlistEmailForm.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/WaitlistPopup.tsx (100%) rename apps/landing/src/app/{ => (landings)}/_components/index.ts (100%) create mode 100644 apps/landing/src/app/(landings)/layout.tsx rename apps/landing/src/app/{ => (landings)}/page.tsx (100%) diff --git a/apps/landing/src/app/admin/apikeys/page.tsx b/apps/landing/src/app/(apps)/admin/apikeys/page.tsx similarity index 100% rename from apps/landing/src/app/admin/apikeys/page.tsx rename to apps/landing/src/app/(apps)/admin/apikeys/page.tsx diff --git a/apps/landing/src/app/admin/layout.tsx b/apps/landing/src/app/(apps)/admin/layout.tsx similarity index 100% rename from apps/landing/src/app/admin/layout.tsx rename to apps/landing/src/app/(apps)/admin/layout.tsx diff --git a/apps/landing/src/app/admin/master/page.tsx b/apps/landing/src/app/(apps)/admin/master/page.tsx similarity index 100% rename from apps/landing/src/app/admin/master/page.tsx rename to apps/landing/src/app/(apps)/admin/master/page.tsx diff --git a/apps/landing/src/app/demo/gallery/page.tsx b/apps/landing/src/app/(apps)/demo/gallery/page.tsx similarity index 100% rename from apps/landing/src/app/demo/gallery/page.tsx rename to apps/landing/src/app/(apps)/demo/gallery/page.tsx diff --git a/apps/landing/src/app/demo/layout.tsx b/apps/landing/src/app/(apps)/demo/layout.tsx similarity index 100% rename from apps/landing/src/app/demo/layout.tsx rename to apps/landing/src/app/(apps)/demo/layout.tsx diff --git a/apps/landing/src/app/demo/tti/page.tsx b/apps/landing/src/app/(apps)/demo/tti/page.tsx similarity index 100% rename from apps/landing/src/app/demo/tti/page.tsx rename to apps/landing/src/app/(apps)/demo/tti/page.tsx diff --git a/apps/landing/src/app/demo/upload/page.tsx b/apps/landing/src/app/(apps)/demo/upload/page.tsx similarity index 100% rename from apps/landing/src/app/demo/upload/page.tsx rename to apps/landing/src/app/(apps)/demo/upload/page.tsx diff --git a/apps/landing/src/app/docs/api/flows/page.tsx b/apps/landing/src/app/(apps)/docs/api/flows/page.tsx similarity index 100% rename from apps/landing/src/app/docs/api/flows/page.tsx rename to apps/landing/src/app/(apps)/docs/api/flows/page.tsx diff --git a/apps/landing/src/app/docs/api/generations/page.tsx b/apps/landing/src/app/(apps)/docs/api/generations/page.tsx similarity index 100% rename from apps/landing/src/app/docs/api/generations/page.tsx rename to apps/landing/src/app/(apps)/docs/api/generations/page.tsx diff --git a/apps/landing/src/app/docs/api/images/page.tsx b/apps/landing/src/app/(apps)/docs/api/images/page.tsx similarity index 100% rename from apps/landing/src/app/docs/api/images/page.tsx rename to apps/landing/src/app/(apps)/docs/api/images/page.tsx diff --git a/apps/landing/src/app/docs/api/live-scopes/page.tsx b/apps/landing/src/app/(apps)/docs/api/live-scopes/page.tsx similarity index 100% rename from apps/landing/src/app/docs/api/live-scopes/page.tsx rename to apps/landing/src/app/(apps)/docs/api/live-scopes/page.tsx diff --git a/apps/landing/src/app/docs/api/page.tsx b/apps/landing/src/app/(apps)/docs/api/page.tsx similarity index 100% rename from apps/landing/src/app/docs/api/page.tsx rename to apps/landing/src/app/(apps)/docs/api/page.tsx diff --git a/apps/landing/src/app/docs/authentication/page.tsx b/apps/landing/src/app/(apps)/docs/authentication/page.tsx similarity index 100% rename from apps/landing/src/app/docs/authentication/page.tsx rename to apps/landing/src/app/(apps)/docs/authentication/page.tsx diff --git a/apps/landing/src/app/docs/generation/page.tsx b/apps/landing/src/app/(apps)/docs/generation/page.tsx similarity index 100% rename from apps/landing/src/app/docs/generation/page.tsx rename to apps/landing/src/app/(apps)/docs/generation/page.tsx diff --git a/apps/landing/src/app/docs/images/page.tsx b/apps/landing/src/app/(apps)/docs/images/page.tsx similarity index 100% rename from apps/landing/src/app/docs/images/page.tsx rename to apps/landing/src/app/(apps)/docs/images/page.tsx diff --git a/apps/landing/src/app/docs/layout.tsx b/apps/landing/src/app/(apps)/docs/layout.tsx similarity index 100% rename from apps/landing/src/app/docs/layout.tsx rename to apps/landing/src/app/(apps)/docs/layout.tsx diff --git a/apps/landing/src/app/docs/live-urls/page.tsx b/apps/landing/src/app/(apps)/docs/live-urls/page.tsx similarity index 100% rename from apps/landing/src/app/docs/live-urls/page.tsx rename to apps/landing/src/app/(apps)/docs/live-urls/page.tsx diff --git a/apps/landing/src/app/docs/page.tsx b/apps/landing/src/app/(apps)/docs/page.tsx similarity index 100% rename from apps/landing/src/app/docs/page.tsx rename to apps/landing/src/app/(apps)/docs/page.tsx diff --git a/apps/landing/src/app/(apps)/layout.tsx b/apps/landing/src/app/(apps)/layout.tsx new file mode 100644 index 0000000..502835d --- /dev/null +++ b/apps/landing/src/app/(apps)/layout.tsx @@ -0,0 +1,38 @@ +import Image from 'next/image'; +import { Footer } from '@/components/shared/Footer'; + +export default function AppsLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {/* Scrollable Header (NOT sticky) */} +
+ +
+ + {children} + +