# Public Pages Restructuring Design **Date**: 2026-03-04 **Scope**: Homepage hero update, Contact page cleanup, Support page creation, shared ContactForm component ## Problem - Homepage hero text doesn't match desired branding ("A One Stop Solution for Your IT Needs") - Contact page mixes FAQ and contact form — unfocused - Support page is thin with placeholder content - Acronis/TeamViewer remote support tools are defined in data but not rendered anywhere - Contact form is hardcoded in PublicContactView — not reusable - `/help` just redirects to `/contact`, no dedicated support hub ## Design ### 1. Homepage (`/`) **Hero Section changes only** — rest of page (TrustStrip, ServicesGrid, WhyUsSection, CTABanner) stays as-is. - **Heading line 1**: "A One Stop Solution" - **Heading line 2** (primary color): "for Your IT Needs" - **Subtitle**: "From internet and mobile to VPN and on-site tech support — we handle it all in English so you don't have to." - **CTAs**: "Browse Services" (primary) + "Need Assistance?" (outline, links to `/contact`) ### 2. Contact Page (`/contact`) Focused page for reaching a human. Two-column layout. **Left column — Contact Form**: - Reusable `ContactForm` component - Fields: Name, Email, Phone (optional), Subject, Message - Same Zod validation (`publicContactRequestSchema`) - Submit → POST `/api/support/contact` → success state **Right sidebar — Contact Info** (stacked cards): - Quick contact options: Phone (0120-660-470), Email (support@assist-solutions.jp), Live Chat - Business hours: Mon-Fri 9:30 AM - 6:00 PM JST - Office location: address, access info, "Get Directions" link - Small embedded Google Map **Removed from contact page**: FAQ section (moves to Support) ### 3. Support Page (`/support`) Self-service support hub. Top-to-bottom flow. **Section 1: Header** - Icon + "How Can We Help?" heading - Subtitle about self-service and English support **Section 2: Knowledge Base Categories** - Grid of 6 category cards (2x3 on desktop, 1 col mobile): - Internet & Wi-Fi - Phone & SIM - VPN & Streaming - Business Solutions - Billing & Account - General Tech Support - Each card has icon, title, brief description - Cards can link to anchors or future article pages (placeholder for now) **Section 3: Remote Support Tools** - Uses existing `supportDownloads` data from `features/landing-page/data/services.tsx` - Two cards side-by-side: Acronis Quick Assist + TeamViewer QS - Each shows: logo image, title, description, use case, download link (external) **Section 4: FAQ** - Accordion-style FAQ items (moved from contact page) - Placeholder content for now, real content to be added later **Section 5: Contact Form Fallback** - "Still need help? Send us a message" heading - Reusable `ContactForm` component ### 4. Shared ContactForm Component **Location**: `apps/portal/src/features/support/components/ContactForm.tsx` Extracted from current `PublicContactView`: - Same fields, same Zod schema, same API call - Accepts optional `className` prop - Self-contained: manages own submit state and success/error UI - Exported from `features/support/components/index.ts` ## File Changes ### New files - `features/support/components/ContactForm.tsx` — reusable form - `app/(public)/(site)/support/page.tsx` — support page route ### Modified files - `features/landing-page/components/HeroSection.tsx` — new heading + subtitle - `features/support/views/PublicContactView.tsx` — two-column layout, remove FAQ, use ContactForm - `features/support/views/PublicSupportView.tsx` — full rewrite as support hub - `features/support/views/index.ts` — update exports if needed - `features/support/components/index.ts` — export ContactForm ### Routing - `/` — homepage (updated hero) - `/contact` — contact page (cleaned up) - `/support` — new support hub page - `/help` — keep redirect to `/contact` (backwards compat)