{card.problemHook}
{card.title}
{card.keyBenefit}
{card.priceFrom && (from {card.priceFrom}
)} {card.ctaLabel},
href: "/services/business",
ctaLabel: "Get a Quote",
},
];
```
**Step 2: Verify no lint errors**
Run: `pnpm lint --filter @customer-portal/portal -- --no-warn`
**Step 3: Commit**
```
feat: add conversion card data for landing page services carousel
```
---
### Task 2: Create ServicesCarousel Component
**Files:**
- Create: `apps/portal/src/features/landing-page/components/ServicesCarousel.tsx`
**Step 1: Create the tabbed carousel component**
This component has:
- Tab switcher ("For You" / "For Business")
- Horizontal scrolling carousel with auto-scroll
- Conversion-oriented service cards with problem hook, benefit, price, badge, CTA
- Prev/next navigation buttons
```tsx
"use client";
import { useCallback, useEffect, useRef, useState } from "react";
import Link from "next/link";
import { ArrowRight, ChevronLeft, ChevronRight } from "lucide-react";
import { cn } from "@/shared/utils";
import { useInView } from "@/features/landing-page/hooks";
import {
personalConversionCards,
businessConversionCards,
type ConversionServiceCard,
} from "@/features/landing-page/data";
type Tab = "personal" | "business";
function ServiceConversionCard({ card }: { card: ConversionServiceCard }) {
return (
{card.problemHook}
{card.keyBenefit}
{card.priceFrom && (from {card.priceFrom}
)} {card.ctaLabel}Everything you need to stay connected in Japan
Download one of these tools so our technicians can assist you remotely.
{tool.description}
{tool.useCase}
Click the bottom right “Chat Button” to reach our team anytime.
Toll Free within Japan
0120-660-470
From Overseas
+81-3-3560-1006
Subway Oedo Line / Nanboku Line
Short walk from Exit 6, Azabu-Juban Station
3F Azabu Maruka Bldg.,
3-8-2 Higashi Azabu, Minato-ku,
Tokyo 106-0044
From internet and mobile to VPN and on-site tech support — we handle it all in English so you don't have to.
; { /* NEW subtitle: */ }Internet, phone, VPN and IT support — set up in days, not weeks. No Japanese needed.
; ``` ```tsx {/* OLD CTAs (lines 58-69): */} }> Browse Services {/* NEW CTAs: */} }> Find Your Plan ``` **Step 2: Verify no lint errors** Run: `pnpm lint --filter @customer-portal/portal -- --no-warn` **Step 3: Commit** ``` feat: update hero to problem-first copy with #contact CTA ``` --- ### Task 6: Update CTABanner — Remove Phone, Update CTAs **Files:** - Modify: `apps/portal/src/features/landing-page/components/CTABanner.tsx` **Step 1: Rewrite CTABanner** Replace the entire file content: ```tsx import { ArrowRight } from "lucide-react"; import { Button } from "@/components/atoms/button"; export function CTABanner() { return (No Japanese required. Our English-speaking team is here to help.