"use client"; import { useState } from "react"; import { ShieldCheck, ChevronDown, ChevronUp, Router, Globe, Tv, Wifi, Package, Headphones, CreditCard, Play, } from "lucide-react"; import { usePublicVpnCatalog } from "@/features/services/hooks"; import { LoadingCard } from "@/components/atoms"; import { AsyncBlock } from "@/components/molecules/AsyncBlock/AsyncBlock"; import { AlertBanner } from "@/components/molecules/AlertBanner/AlertBanner"; import { VpnPlanCard } from "@/features/services/components/vpn/VpnPlanCard"; import { ServicesBackLink } from "@/features/services/components/base/ServicesBackLink"; import { ServicesHero } from "@/features/services/components/base/ServicesHero"; import { useServicesBasePath } from "@/features/services/hooks/useServicesBasePath"; import { ServiceHighlights, type HighlightFeature, } from "@/features/services/components/base/ServiceHighlights"; /** * Public VPN Plans View * * Displays VPN plans for unauthenticated users. */ export function PublicVpnPlansView() { const servicesBasePath = useServicesBasePath(); const { data, error } = usePublicVpnCatalog(); const vpnPlans = data?.plans || []; const activationFees = data?.activationFees || []; // Simple loading check: show skeleton until we have data or an error const isLoading = !data && !error; if (isLoading || error) { return (
{Array.from({ length: 4 }).map((_, index) => ( ))}
); } const vpnFeatures: HighlightFeature[] = [ { icon: , title: "Pre-configured Router", description: "Ready to use out of the box — just plug in and connect", highlight: "Plug & play", }, { icon: , title: "US & UK Servers", description: "Access content from San Francisco or London regions", highlight: "2 locations", }, { icon: , title: "Streaming Ready", description: "Works with Apple TV, Roku, Amazon Fire, and more", highlight: "All devices", }, { icon: , title: "Separate Network", description: "VPN runs on dedicated WiFi, keep regular internet normal", highlight: "No interference", }, { icon: , title: "Router Rental Included", description: "No equipment purchase — router rental is part of the plan", highlight: "No hidden costs", }, { icon: , title: "English Support", description: "Full English assistance for setup and troubleshooting", highlight: "Dedicated help", }, ]; return (
{/* Service Highlights */} {vpnPlans.length > 0 ? (
Choose Your Region

Available Plans

Select one region per router rental

{vpnPlans.map(plan => ( ))}
{activationFees.length > 0 && ( A one-time activation fee of ¥3,000 applies per router rental. Tax (10%) not included. )}
) : (

No VPN Plans Available

We couldn't find any VPN plans available at this time.

)} {/* How It Works Section */} {/* FAQ Section */}

Content subscriptions are NOT included in the VPN package. Our VPN service establishes a network connection that virtually locates you in the designated server location. Not all services can be unblocked. We do not guarantee access to any specific website or streaming service quality.

); } // VPN FAQ Data const vpnFaqItems = [ { question: "What devices can I connect to the VPN router?", answer: "Any device that connects via Wi-Fi can use the VPN router, including Apple TV, Roku, Amazon Fire TV, gaming consoles, smart TVs, and computers. Simply connect to the VPN router's Wi-Fi network to route your traffic through the VPN server.", }, { question: "Can I use VPN on my phone or laptop directly?", answer: "The VPN router service is designed for devices that don't natively support VPN apps. For phones and laptops, you could connect them to the VPN router's Wi-Fi, but we recommend using a standard VPN app on those devices for better flexibility.", }, { question: "What internet speeds can I expect through the VPN?", answer: "VPN speeds depend on your base internet connection and the distance to the VPN server. Typically, you can expect 20-100 Mbps for streaming, which is sufficient for 4K content. The San Francisco server generally offers faster speeds for users in Japan.", }, { question: "Can I switch between regions after signing up?", answer: "Each router is pre-configured for one region (San Francisco or London). If you need to access content from both regions, you would need two separate router rentals. Contact us if you need to change your region assignment.", }, { question: "What happens if the VPN router breaks or stops working?", answer: "We provide technical support and will replace faulty equipment at no extra charge. Simply contact our support team and we'll arrange a replacement router to be shipped to you.", }, ]; function VpnFaqSection() { const [openIndex, setOpenIndex] = useState(null); return (

Frequently Asked Questions

{vpnFaqItems.map((item, index) => (
{openIndex === index && (

{item.answer}

)}
))}
); } interface HowItWorksStepProps { number: number; icon: React.ReactNode; title: string; description: string; } function HowItWorksStep({ number, icon, title, description }: HowItWorksStepProps) { return (
{/* Icon with number badge */}
{icon}
{/* Number badge */}
{number}
{/* Content */}

{title}

{description}

); } function VpnHowItWorksSection() { const steps = [ { icon: , title: "Sign Up", description: "Create your account to get started", }, { icon: , title: "Choose Region", description: "Select US (San Francisco) or UK (London)", }, { icon: , title: "Place Order", description: "Complete checkout and receive router", }, { icon: , title: "Connect & Stream", description: "Plug in, connect devices, enjoy", }, ]; return (
{/* Header */}
Simple Setup

How It Works

{/* Steps with connecting line */}
{/* Connecting line - hidden on mobile */}
{/* Curved path SVG for visual connection - hidden on mobile */} {/* Steps grid */}
{steps.map((step, index) => ( ))}
); } export default PublicVpnPlansView;