Price varies based on your connection type: Home 10Gbps (select areas), Home 1Gbps, or
Apartment (up to 1Gbps depending on building infrastructure). We'll confirm
availability at your address.
{tiers.map(tier => (
{/* Popular Badge for Gold */}
{tier.tier === "Gold" && (
);
}
// FAQ data
const faqItems = [
{
question: "How can I check if 10Gbps service is available at my address?",
answer:
"10Gbps service is currently available in select areas, primarily in Tokyo and surrounding regions. When you check availability with your address, we'll show you exactly which speed options are available at your location.",
},
{
question: "Why do apartment speeds vary by building?",
answer:
"Apartment buildings have different NTT fiber infrastructure. Newer buildings often have FTTH (fiber-to-the-home) supporting up to 1Gbps, while older buildings may use VDSL or LAN connections at 100Mbps. The good news: all apartment types have the same monthly price.",
},
{
question: "My home needs multiple WiFi routers for full coverage. Can you help?",
answer:
"Yes! Our Platinum tier includes a mesh WiFi system designed for larger homes. During setup, our team will assess your space and recommend the best equipment configuration for full coverage.",
},
{
question: "Can I transfer my existing internet service to Assist Solutions?",
answer:
"In most cases, yes. If you already have an NTT line, we can often take over the service without a new installation. Contact us with your current provider details and we'll guide you through the process.",
},
{
question: "What is the contract period?",
answer:
"Our standard contract is 2 years. Early termination fees may apply if you cancel before the contract ends. The setup fee can be paid upfront or spread across 12 or 24 monthly installments.",
},
{
question: "How are invoices sent?",
answer:
"E-statements (available only in English) will be sent to your primary email address. The service fee will be charged automatically to your registered credit card on file. For corporate plans, please contact us with your requests.",
},
];
/**
* FAQ Item component with expand/collapse
*/
function FAQItem({
question,
answer,
isOpen,
onToggle,
}: {
question: string;
answer: string;
isOpen: boolean;
onToggle: () => void;
}) {
return (
{isOpen && (
{answer}
)}
);
}
export interface PublicInternetPlansContentProps {
onCtaClick?: (e: React.MouseEvent) => void;
ctaPath?: string;
ctaLabel?: string;
heroTitle?: string;
heroDescription?: string;
}
/**
* Public Internet Plans Content - Reusable component
*/
export function PublicInternetPlansContent({
onCtaClick,
ctaPath: propCtaPath,
ctaLabel = "Check Availability",
heroTitle = "Internet Service Plans",
heroDescription = "NTT Optical Fiber with full English support",
}: PublicInternetPlansContentProps) {
const { data: servicesCatalog, error } = usePublicInternetCatalog();
// Simple loading check: show skeleton until we have data or an error
const isLoading = !servicesCatalog && !error;
const servicesBasePath = useServicesBasePath();
const defaultCtaPath = `${servicesBasePath}/internet/configure`;
const ctaPath = propCtaPath ?? defaultCtaPath;
const [openFaqIndex, setOpenFaqIndex] = useState(null);
const internetFeatures: HighlightFeature[] = [
{
icon: ,
title: "NTT Optical Fiber",
description: "Japan's most reliable network with speeds up to 10Gbps",
highlight: "99.9% uptime",
},
{
icon: ,
title: "IPv6/IPoE Ready",
description: "Next-gen protocol for congestion-free browsing",
highlight: "No peak-hour slowdowns",
},
{
icon: ,
title: "Full English Support",
description: "Native English service for setup, billing & technical help",
highlight: "No language barriers",
},
{
icon: ,
title: "One Bill, One Provider",
description: "NTT line + ISP + equipment bundled with simple billing",
highlight: "No hidden fees",
},
{
icon: ,
title: "On-site Support",
description: "Technicians can visit for installation & troubleshooting",
highlight: "Professional setup",
},
{
icon: ,
title: "Flexible Options",
description: "Multiple ISP configs available, IPv4/PPPoE if needed",
highlight: "Customizable",
},
];
// Consolidated internet plans data - one card with all tiers
const consolidatedPlanData = useMemo(() => {
if (!servicesCatalog?.plans) return null;
// Get installation item for setup fee
const installationItem = servicesCatalog.installations?.[0] as
| InternetInstallationCatalogItem
| undefined;
const setupFee = installationItem?.oneTimePrice ?? 22800;
// Get all prices across all plan types to show full range
const allPrices = servicesCatalog.plans.map(p => p.monthlyPrice ?? 0).filter(p => p > 0);
const minPrice = Math.min(...allPrices);
const maxPrice = Math.max(...allPrices);
// Get unique tiers with their price ranges across all offering types
const tierOrder: Record = { Silver: 0, Gold: 1, Platinum: 2 };
const tierData: Record<
string,
{ minPrice: number; maxPrice: number; plans: InternetPlanCatalogItem[] }
> = {};
for (const plan of servicesCatalog.plans) {
const tier = plan.internetPlanTier ?? "Silver";
if (!tierData[tier]) {
tierData[tier] = { minPrice: Infinity, maxPrice: 0, plans: [] };
}
const price = plan.monthlyPrice ?? 0;
tierData[tier].minPrice = Math.min(tierData[tier].minPrice, price);
tierData[tier].maxPrice = Math.max(tierData[tier].maxPrice, price);
tierData[tier].plans.push(plan);
}
// Build consolidated tier info with price ranges
const tiers: TierInfo[] = Object.entries(tierData)
.sort(([a], [b]) => (tierOrder[a] ?? 99) - (tierOrder[b] ?? 99))
.map(([tier, data]) => ({
tier: tier as TierInfo["tier"],
monthlyPrice: data.minPrice,
maxMonthlyPrice: data.maxPrice,
description: getTierDescription(tier),
features: getTierFeatures(tier),
pricingNote: tier === "Platinum" ? "+ equipment fees" : undefined,
}));
return {
minPrice,
maxPrice,
setupFee,
tiers,
};
}, [servicesCatalog]);
// Error state
if (error) {
return (
We couldn't load internet plans. Please try again later.
);
}
return (
{/* Back link */}
{/* Hero - Clean and impactful */}
{heroTitle}
{heroDescription}
{/* Service Highlights */}
{/* Consolidated Internet Plans Card */}
{isLoading ? (
) : consolidatedPlanData ? (
) : null}
{/* How It Works Section */}
{/* Final CTA - Polished */}
Get started in minutes
Ready to get connected?
Enter your address to see what's available at your location