3.9 KiB
3.9 KiB
01. Inline Index Page Sections
meta: id: landing-pages-and-admin-01 feature: landing-pages-and-admin priority: P2 depends_on: [] tags: [implementation, ui, landing-page]
objective:
- Refactor the landing page (
/web/src/routes/index.tsx) to use an inline data-driven pattern like Lendair's index.tsx, where all section content is defined as typed data arrays at the top of the file and rendered directly in the component body, instead of being extracted into separate section components.
deliverables:
- Rewritten
/web/src/routes/index.tsxwith inline data arrays and layout - Typed data structures for: hero, how-it-works steps, feature cards, for-users panels, why-kordant items, CTA
- All inline SVG icon helpers (like Lendair's
IconPathandCheckIcon) - PageContainer wrapper used consistently
- Removal or deprecation of extracted section components (
HeroSection,HowItWorksSection,FeaturesGridSection,ForUsersSection,WhyKordantSection,CTABannerSection)
steps:
- Read Lendair's
/Users/mike/code/Lendair/web/src/routes/index.tsxto understand the inline data pattern - Read current Kordant landing section components to extract all content, structure, and styling
- Define typed data arrays in
index.tsx:stepsarray for How It Works (step number, title, description)platformFeaturesarray for feature cards (icon, title, description)forUsersarray for audience panels (icon, title, description, bullet points)whyKordantarray for value propositions (title, description, bullet points)- Hero data object (headline, subheadline, CTA buttons)
- Create inline SVG helper components (
IconPath,CheckIcon,ArrowIcon) matching Lendair's pattern - Rebuild the page layout inline using
PageContainer, clip-path sections, and Tailwind classes - Map existing feature icons to inline SVG path strings (DarkWatch, VoicePrint, SpamShield, HomeTitle, RemoveBrokers, Family Plans)
- Ensure
ColorWaveBackgroundcomponent is still imported and used at the top - Update
@solidjs/metaTitle tag - Test both desktop and mobile responsive layouts
- Verify dark/light theme compatibility
tests:
- Unit: Verify data arrays have correct shape and all required fields
- Integration: Page renders without errors at
/route - Visual: Compare rendered page against current landing page to ensure all sections present
- Responsive: Test at 320px, 768px, 1024px, 1440px breakpoints
acceptance_criteria:
index.tsxcontains all content as inline data arrays (no extracted section components)- Page renders identical visual output to current landing page
- All 6 feature cards render with correct icons, titles, and descriptions
- How It Works section shows all 3 steps with alternating layout
- For Users section shows split panels (individual vs family)
- Why Kordant section shows all value proposition cards with bullet points
- CTA banner renders with correct buttons linking to
/signupand/login ColorWaveBackgroundrenders at page top- No console errors or warnings
validation:
cd /Users/mike/Code/Kordant/web && pnpm devthen navigate tohttp://localhost:3000/- Visually compare each section against current landing page
- Toggle dark/light theme and verify all sections render correctly
- Resize browser to test responsive breakpoints
notes:
- Reference Lendair pattern: data arrays defined at module scope, rendered with
<For>loops - Existing section components live in
/web/src/components/landing/ FeaturesGridSection.tsxhas 6 feature cards with specific icons and descriptionsHowItWorksSection.tsxhas 3 steps with alternating left/right layoutForUsersSection.tsxhas individual vs family split panelsWhyKordantSection.tsxhas 3 value proposition cardsCTABannerSection.tsxhas CTA with two buttons- Keep
ColorWaveBackgroundas-is (it's a complex Three.js component) - Use
PageContainercomponent for consistent width and padding