Enhance Internet Offering Components and Improve User Guidance
- Updated InternetImportantNotes component for better clarity and user understanding. - Simplified InternetOfferingCard layout by removing unused props, enhancing usability. - Improved PlanComparisonGuide with collapsible sections for easier navigation. - Enhanced PublicOfferingCard to support custom call-to-action labels and click handlers. - Updated SimTypeSelector with additional EID information and verification notices for improved user guidance. - Refined PublicInternetPlans and PublicSimPlans views to highlight new services and enhance overall presentation.
This commit is contained in:
parent
3bb4e8ce40
commit
d313ba0c2c
11
apps/portal/src/app/(public)/(site)/about/page.tsx
Normal file
11
apps/portal/src/app/(public)/(site)/about/page.tsx
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Public About Page
|
||||
*
|
||||
* Corporate profile and company information.
|
||||
*/
|
||||
|
||||
import { AboutUsView } from "@/features/marketing/views/AboutUsView";
|
||||
|
||||
export default function AboutPage() {
|
||||
return <AboutUsView />;
|
||||
}
|
||||
@ -0,0 +1,97 @@
|
||||
import { Button } from "@/components/atoms";
|
||||
import {
|
||||
ServerStackIcon,
|
||||
ComputerDesktopIcon,
|
||||
WrenchScrewdriverIcon,
|
||||
GlobeAltIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
export default function BusinessSolutionsPage() {
|
||||
return (
|
||||
<div className="max-w-6xl mx-auto px-4">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-16 pt-8">
|
||||
<h1 className="text-4xl sm:text-5xl font-extrabold text-foreground mb-6 tracking-tight">
|
||||
Business Solutions
|
||||
</h1>
|
||||
<p className="text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed">
|
||||
We provide comprehensive business solutions including DIA (Dedicated Internet Access) with
|
||||
SLA and bandwidth guarantees to ensure your business stays connected.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-8 mb-16">
|
||||
{/* Office LAN Setup */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8 shadow-sm">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
||||
<ComputerDesktopIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">Office LAN Setup</h2>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
Whether you are upgrading your current LAN for greater bandwidth and reliability or
|
||||
installing a new LAN for a new facility, Assist Solutions will ensure you make informed
|
||||
decisions. From cable installation and data switches to configuration of routers and
|
||||
firewalls, we help you determine a cost-effective and reliable way to do this.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Onsite & Remote Tech Support */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8 shadow-sm">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
||||
<WrenchScrewdriverIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">Onsite & Remote Tech Support</h2>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
We provide onsite and remote support to make sure your network is up and running as
|
||||
quickly as possible. Assist Solutions can help with your IT needs so you can grow your
|
||||
business with ease and stability. From computer networks to phone and printer
|
||||
installations, our team will complete your project to your highest satisfaction.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Dedicated Internet Access (DIA) */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8 shadow-sm">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
||||
<GlobeAltIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">
|
||||
Dedicated Internet Access (DIA)
|
||||
</h2>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
Dedicated Internet Access is designed for businesses that need greater Internet capacity
|
||||
and a dedicated connection between their existing Local Area Network (LAN) and the
|
||||
public Internet. We are able to provide a bandwidth guarantee with a service level
|
||||
agreement depending on what is most suitable for your business.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Data Center Service */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8 shadow-sm">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-6">
|
||||
<ServerStackIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">Data Center Service</h2>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
Our Data Center Service provides high-quality data center facilities in Equinix (Tokyo
|
||||
Tennozu Isle) and GDC (Gotenyama) and many value-added network services to help
|
||||
establish stable infrastructure platforms. This improves both reliability and efficiency
|
||||
in your company.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div className="text-center py-12 bg-muted/20 rounded-3xl mb-16">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">
|
||||
Interested in our Business Solutions?
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-8 max-w-2xl mx-auto">
|
||||
Contact us today to discuss your requirements and how we can help your business grow.
|
||||
</p>
|
||||
<Button as="a" href="/contact" size="lg">
|
||||
Contact Us
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Public Internet Configure Page
|
||||
*
|
||||
* Configure internet plan for unauthenticated users.
|
||||
*/
|
||||
|
||||
import { PublicInternetConfigureView } from "@/features/catalog/views/PublicInternetConfigure";
|
||||
import { RedirectAuthenticatedToAccountServices } from "@/features/catalog/components/common/RedirectAuthenticatedToAccountServices";
|
||||
|
||||
export default function PublicInternetConfigurePage() {
|
||||
return (
|
||||
<>
|
||||
<RedirectAuthenticatedToAccountServices targetPath="/account/services/internet/configure" />
|
||||
<PublicInternetConfigureView />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Public Internet Plans Page
|
||||
*
|
||||
* Displays internet plans for unauthenticated users.
|
||||
*/
|
||||
|
||||
import { PublicInternetPlansView } from "@/features/catalog/views/PublicInternetPlans";
|
||||
import { RedirectAuthenticatedToAccountServices } from "@/features/catalog/components/common/RedirectAuthenticatedToAccountServices";
|
||||
|
||||
export default function PublicInternetPlansPage() {
|
||||
return (
|
||||
<>
|
||||
<RedirectAuthenticatedToAccountServices targetPath="/account/services/internet" />
|
||||
<PublicInternetPlansView />
|
||||
</>
|
||||
);
|
||||
}
|
||||
147
apps/portal/src/app/(public)/(site)/services/onsite/page.tsx
Normal file
147
apps/portal/src/app/(public)/(site)/services/onsite/page.tsx
Normal file
@ -0,0 +1,147 @@
|
||||
import { Button } from "@/components/atoms";
|
||||
import {
|
||||
UserGroupIcon,
|
||||
ComputerDesktopIcon,
|
||||
TvIcon,
|
||||
ChatBubbleLeftRightIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
export default function OnsiteSupportPage() {
|
||||
return (
|
||||
<div className="max-w-6xl mx-auto px-4">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-16 pt-8">
|
||||
<h1 className="text-4xl sm:text-5xl font-extrabold text-foreground mb-6 tracking-tight">
|
||||
Onsite Support
|
||||
</h1>
|
||||
<p className="text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed">
|
||||
We dispatch our skillful in-house tech staff to your residence or office for your needs.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Main Services */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-12 mb-20">
|
||||
<div className="space-y-6">
|
||||
<h2 className="text-3xl font-bold text-foreground">Need Our Technical Support?</h2>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
We can provide you with on-site technical support service. If you would like for our
|
||||
technicians to visit your residence and provide technical assistance, please let us
|
||||
know.
|
||||
</p>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
We also provide "Remote Access Services" which allows our technicians to do support via
|
||||
Remote Access Software over the Internet connection to fix up the issue (depends on what
|
||||
the issue is).
|
||||
</p>
|
||||
<div className="pt-4">
|
||||
<Button as="a" href="/contact" size="lg">
|
||||
Request Support
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
<div className="relative h-[300px] bg-muted/30 rounded-2xl overflow-hidden flex items-center justify-center">
|
||||
<UserGroupIcon className="h-32 w-32 text-muted-foreground/20" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Pricing Cards */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6 mb-20">
|
||||
{/* Onsite Network & Computer Support */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-6 shadow-sm flex flex-col">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-4">
|
||||
<ComputerDesktopIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h3 className="text-lg font-bold text-foreground mb-2">
|
||||
Onsite Network & Computer Support
|
||||
</h3>
|
||||
<div className="mt-auto pt-4">
|
||||
<div className="text-sm text-muted-foreground mb-1">Basic Service Fee</div>
|
||||
<div className="text-3xl font-bold text-foreground">15,000 JPY</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Remote Support */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-6 shadow-sm flex flex-col">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-4">
|
||||
<ChatBubbleLeftRightIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h3 className="text-lg font-bold text-foreground mb-2">
|
||||
Remote Network & Computer Support
|
||||
</h3>
|
||||
<div className="mt-auto pt-4">
|
||||
<div className="text-sm text-muted-foreground mb-1">Basic Service Fee</div>
|
||||
<div className="text-3xl font-bold text-foreground">5,000 JPY</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Onsite TV Support */}
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-6 shadow-sm flex flex-col">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 flex items-center justify-center text-primary mb-4">
|
||||
<TvIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h3 className="text-lg font-bold text-foreground mb-2">Onsite TV Support Service</h3>
|
||||
<div className="mt-auto pt-4">
|
||||
<div className="text-sm text-muted-foreground mb-1">Basic Service Fee</div>
|
||||
<div className="text-3xl font-bold text-foreground">15,000 JPY</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* FAQ Section */}
|
||||
<div className="max-w-4xl mx-auto mb-16">
|
||||
<h2 className="text-3xl font-bold text-foreground mb-8 text-center">
|
||||
Frequently Asked Questions
|
||||
</h2>
|
||||
|
||||
<div className="space-y-8">
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8">
|
||||
<h3 className="text-xl font-bold text-foreground mb-3">
|
||||
My home requires multiple Wi-Fi routers. Would you be able to assist with this?
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
Yes, the Assist Solutions technical team is able to visit your residence for device
|
||||
set up including Wi-Fi routers, printers, Apple TVs etc. Our tech consulting team will
|
||||
be able to make suggestions based on your residence layout and requirements. Please
|
||||
contact us for a free consultation.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8">
|
||||
<h3 className="text-xl font-bold text-foreground mb-3">
|
||||
I am already subscribed to a different Internet provider but require more Wi-Fi
|
||||
coverage. Would I be able to just opt for the Onsite Support service without switching
|
||||
over my entire home Internet service?
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
Yes, we are able to offer the Onsite Support service as a standalone service.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8">
|
||||
<h3 className="text-xl font-bold text-foreground mb-3">
|
||||
Do you offer this service outside of Tokyo?
|
||||
</h3>
|
||||
<div className="text-muted-foreground leading-relaxed">
|
||||
<p className="mb-2">
|
||||
Our In-Home Technical Assistance service can be provided in Tokyo, Saitama and
|
||||
Kanagawa prefecture.
|
||||
</p>
|
||||
<p className="text-sm italic">
|
||||
*Please note that this service may not available in some areas within the above
|
||||
prefectures. For more information, please contact us.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div className="text-center py-12 bg-muted/20 rounded-3xl">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">Ready to get started?</h2>
|
||||
<Button as="a" href="/contact" size="lg">
|
||||
Contact Us for Support
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
149
apps/portal/src/app/(public)/(site)/services/page.tsx
Normal file
149
apps/portal/src/app/(public)/(site)/services/page.tsx
Normal file
@ -0,0 +1,149 @@
|
||||
import Link from "next/link";
|
||||
import {
|
||||
BuildingOfficeIcon,
|
||||
WrenchScrewdriverIcon,
|
||||
TvIcon,
|
||||
ArrowRightIcon,
|
||||
ServerIcon,
|
||||
DevicePhoneMobileIcon,
|
||||
ShieldCheckIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
export default function ServicesPage() {
|
||||
return (
|
||||
<div className="max-w-6xl mx-auto px-4">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-16 pt-8">
|
||||
<h1 className="text-4xl sm:text-5xl font-extrabold text-foreground mb-6 tracking-tight">
|
||||
Our Services
|
||||
</h1>
|
||||
<p className="text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed">
|
||||
From high-speed internet to onsite support, we provide comprehensive solutions for your
|
||||
home and business.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 mb-20">
|
||||
{/* Internet */}
|
||||
<Link href="/services/internet" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-blue-500/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-blue-500/10 flex items-center justify-center text-blue-600 mb-6 group-hover:scale-110 transition-transform">
|
||||
<ServerIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-blue-600 transition-colors">
|
||||
Internet
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
NTT fiber with speeds up to 10Gbps and professional installation support. Fast and
|
||||
reliable connectivity.
|
||||
</p>
|
||||
<div className="flex items-center text-blue-600 font-medium mt-auto">
|
||||
View Plans{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* SIM & eSIM */}
|
||||
<Link href="/services/sim" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-green-500/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-green-500/10 flex items-center justify-center text-green-600 mb-6 group-hover:scale-110 transition-transform">
|
||||
<DevicePhoneMobileIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-green-600 transition-colors">
|
||||
SIM & eSIM
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
Data, voice & SMS on NTT Docomo's nationwide network. Available as physical SIM or
|
||||
instant eSIM.
|
||||
</p>
|
||||
<div className="flex items-center text-green-600 font-medium mt-auto">
|
||||
View Plans{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* VPN */}
|
||||
<Link href="/services/vpn" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-purple-500/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-purple-500/10 flex items-center justify-center text-purple-600 mb-6 group-hover:scale-110 transition-transform">
|
||||
<ShieldCheckIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-purple-600 transition-colors">
|
||||
VPN
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
Access US/UK content with a pre-configured router. Easy plug & play setup for seamless
|
||||
streaming.
|
||||
</p>
|
||||
<div className="flex items-center text-purple-600 font-medium mt-auto">
|
||||
View Plans{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* Business Solutions */}
|
||||
<Link href="/services/business" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-primary/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-primary/10 flex items-center justify-center text-primary mb-6 group-hover:scale-110 transition-transform">
|
||||
<BuildingOfficeIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-primary transition-colors">
|
||||
Business Solutions
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
Dedicated Internet Access (DIA), Office LAN setup, Data Center services, and
|
||||
onsite/remote tech support.
|
||||
</p>
|
||||
<div className="flex items-center text-primary font-medium mt-auto">
|
||||
Learn more{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* Onsite Support */}
|
||||
<Link href="/services/onsite" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-primary/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-primary/10 flex items-center justify-center text-primary mb-6 group-hover:scale-110 transition-transform">
|
||||
<WrenchScrewdriverIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-primary transition-colors">
|
||||
Onsite Support
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
Professional technical support at your residence or office. Network setup, device
|
||||
configuration, and troubleshooting.
|
||||
</p>
|
||||
<div className="flex items-center text-primary font-medium mt-auto">
|
||||
Learn more{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
|
||||
{/* TV Services */}
|
||||
<Link href="/services/tv" className="group block h-full">
|
||||
<div className="h-full bg-card rounded-2xl border border-border/60 p-8 shadow-sm transition-all duration-300 hover:shadow-md hover:border-primary/50 flex flex-col">
|
||||
<div className="h-14 w-14 rounded-2xl bg-primary/10 flex items-center justify-center text-primary mb-6 group-hover:scale-110 transition-transform">
|
||||
<TvIcon className="h-7 w-7" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground mb-3 group-hover:text-primary transition-colors">
|
||||
TV Services
|
||||
</h2>
|
||||
<p className="text-muted-foreground mb-6 flex-grow">
|
||||
Satellite, Cable, and Optical Fiber TV services. We arrange subscriptions for major
|
||||
Japanese TV providers.
|
||||
</p>
|
||||
<div className="flex items-center text-primary font-medium mt-auto">
|
||||
Learn more{" "}
|
||||
<ArrowRightIcon className="h-4 w-4 ml-2 group-hover:translate-x-1 transition-transform" />
|
||||
</div>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Public SIM Configure Page
|
||||
*
|
||||
* Configure SIM plan for unauthenticated users.
|
||||
*/
|
||||
|
||||
import { PublicSimConfigureView } from "@/features/catalog/views/PublicSimConfigure";
|
||||
import { RedirectAuthenticatedToAccountServices } from "@/features/catalog/components/common/RedirectAuthenticatedToAccountServices";
|
||||
|
||||
export default function PublicSimConfigurePage() {
|
||||
return (
|
||||
<>
|
||||
<RedirectAuthenticatedToAccountServices targetPath="/account/services/sim/configure" />
|
||||
<PublicSimConfigureView />
|
||||
</>
|
||||
);
|
||||
}
|
||||
17
apps/portal/src/app/(public)/(site)/services/sim/page.tsx
Normal file
17
apps/portal/src/app/(public)/(site)/services/sim/page.tsx
Normal file
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Public SIM Plans Page
|
||||
*
|
||||
* Displays SIM plans for unauthenticated users.
|
||||
*/
|
||||
|
||||
import { PublicSimPlansView } from "@/features/catalog/views/PublicSimPlans";
|
||||
import { RedirectAuthenticatedToAccountServices } from "@/features/catalog/components/common/RedirectAuthenticatedToAccountServices";
|
||||
|
||||
export default function PublicSimPlansPage() {
|
||||
return (
|
||||
<>
|
||||
<RedirectAuthenticatedToAccountServices targetPath="/account/services/sim" />
|
||||
<PublicSimPlansView />
|
||||
</>
|
||||
);
|
||||
}
|
||||
729
apps/portal/src/app/(public)/(site)/services/tv/page.tsx
Normal file
729
apps/portal/src/app/(public)/(site)/services/tv/page.tsx
Normal file
@ -0,0 +1,729 @@
|
||||
import { Button } from "@/components/atoms";
|
||||
import {
|
||||
TvIcon,
|
||||
FilmIcon,
|
||||
MusicalNoteIcon,
|
||||
TrophyIcon,
|
||||
NewspaperIcon,
|
||||
SparklesIcon,
|
||||
EllipsisHorizontalCircleIcon,
|
||||
AcademicCapIcon,
|
||||
GlobeAsiaAustraliaIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
export default function TVServicesPage() {
|
||||
return (
|
||||
<div className="max-w-6xl mx-auto px-4">
|
||||
{/* Header */}
|
||||
<div className="text-center mb-16 pt-8">
|
||||
<h1 className="text-4xl sm:text-5xl font-extrabold text-foreground mb-6 tracking-tight">
|
||||
TV Services
|
||||
</h1>
|
||||
<p className="text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed">
|
||||
Providing a variety of options for our customers such as Satellite TV, Cable TV and
|
||||
Optical Fiber TV.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Intro */}
|
||||
<div className="max-w-3xl mx-auto text-center mb-16">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">Service Lineup</h2>
|
||||
<p className="text-muted-foreground leading-relaxed mb-6">
|
||||
We are proud to act as agents for Japan's major paid TV service providers, and we will
|
||||
arrange your services on your behalf (no service fee required for us to arrange your
|
||||
services). Usually each building has their pre-assigned main TV service providers. To find
|
||||
out which TV service you can apply for, please feel free to contact us anytime.
|
||||
</p>
|
||||
<Button as="a" href="/contact" size="lg">
|
||||
Check Availability
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
{/* Services List */}
|
||||
<div className="space-y-16 mb-20">
|
||||
{/* Sky PerfecTV Premium Hikari */}
|
||||
<TVServiceSection
|
||||
title="Sky PerfecTV Premium Hikari (Optical Fiber TV)"
|
||||
fees={[
|
||||
{ type: "Apartment Type", initial: "Free", monthly: "4,567 JPY" },
|
||||
{
|
||||
type: "Home Type",
|
||||
initial: "14,630 JPY (6,680 JPY if simultaneous installation)",
|
||||
monthly: "5,392 JPY",
|
||||
},
|
||||
]}
|
||||
note="*Prices shown above are including tax (10%)"
|
||||
>
|
||||
<ChannelPackage title="Basic Package">
|
||||
<ChannelCategory
|
||||
title="Movie"
|
||||
channels={[
|
||||
"The Cinema HD",
|
||||
"Movie Plus HD",
|
||||
"Channel NECO HD",
|
||||
"Japanese Movie HD",
|
||||
"Fox Movie Premium HD",
|
||||
"Cinefil Wowow HD",
|
||||
"NTV G HD",
|
||||
"EX Sports",
|
||||
"Dance Channel",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Sports"
|
||||
channels={[
|
||||
"Golf Network HD",
|
||||
"GAORA HD",
|
||||
"J Sports 1 HD",
|
||||
"J Sports 2 HD",
|
||||
"J Sports 3 HD",
|
||||
"Sky A Sports HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Music"
|
||||
channels={[
|
||||
"Music Japan TV HD",
|
||||
"MTV HD",
|
||||
"Music ON! TV HD",
|
||||
"Space Shower TV HD",
|
||||
"Space Shower TV Plus HD",
|
||||
"Kayou Pops HD",
|
||||
"Music Air HD",
|
||||
"Music Graffiti TV",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Kids"
|
||||
channels={[
|
||||
"Cartoon Network HD",
|
||||
"Disney Channel HD",
|
||||
"Disney XD HD",
|
||||
"Kids Station HD",
|
||||
"Animax HD",
|
||||
"Lala HD",
|
||||
"Asia Dramatic TV HD",
|
||||
"KBS World HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Foreign Drama"
|
||||
channels={[
|
||||
"Super Drama TV HD",
|
||||
"AXN Mystery HD",
|
||||
"AXN HD",
|
||||
"FOX HD",
|
||||
"FOX CLASSICS HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Documentary"
|
||||
channels={[
|
||||
"History Channel HD",
|
||||
"National Geographic HD",
|
||||
"Discovery HD",
|
||||
"Nat Geo Wild HD",
|
||||
"Animal Planet HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="News & Business"
|
||||
channels={[
|
||||
"TBS News Bird HD",
|
||||
"Nikkei CNBC HD",
|
||||
"BBC World News HD",
|
||||
"CNNj HD",
|
||||
"NTV News 24",
|
||||
"SORA Weather Channel",
|
||||
"E-tenki.net",
|
||||
"Entametele HD",
|
||||
"Nittele Plus HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Entertainment"
|
||||
channels={[
|
||||
"Fox Sports HD",
|
||||
"FujiTV One HD",
|
||||
"FujiTV Two HD",
|
||||
"TBS Channel 1 HD",
|
||||
"TBS Channel 2 HD",
|
||||
"TV Asahi Channel 1 HD",
|
||||
"TV Asahi Channel 2 HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Others"
|
||||
channels={[
|
||||
"Mondo TV HD",
|
||||
"Family Theater HD",
|
||||
"Home Drama HD",
|
||||
"Samurai Drama HD",
|
||||
"TABI Channel HD",
|
||||
"Tsuri Vision HD",
|
||||
"Igo/Shogi Channel HD",
|
||||
]}
|
||||
/>
|
||||
</ChannelPackage>
|
||||
</TVServiceSection>
|
||||
|
||||
{/* Sky PerfecTV Premium (Satellite) */}
|
||||
<TVServiceSection
|
||||
title="Sky PerfecTV Premium (Satellite)"
|
||||
fees={[{ type: "Standard", initial: "Free", monthly: "4,514 JPY" }]}
|
||||
note="*Prices shown above are including tax (10%)"
|
||||
>
|
||||
<ChannelPackage title="Basic Package">
|
||||
<ChannelCategory
|
||||
title="Movie"
|
||||
channels={[
|
||||
"Imagica BS HD",
|
||||
"The Cinema HD",
|
||||
"Movie Plus HD",
|
||||
"Channel NECO HD",
|
||||
"Japanese Movie HD",
|
||||
"Fox Movie Premium HD",
|
||||
"Cinefil Wowow HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Sports"
|
||||
channels={[
|
||||
"J Sports 3 HD",
|
||||
"Sky A Sports HD",
|
||||
"NTV G HD",
|
||||
"EX Sports",
|
||||
"Dance Channel",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Music"
|
||||
channels={[
|
||||
"Music Japan TV HD",
|
||||
"MTV HD",
|
||||
"Music ON! TV HD",
|
||||
"Space Shower TV HD",
|
||||
"Space Shower TV Plus HD",
|
||||
"Kayou Pops HD",
|
||||
"Music Air HD",
|
||||
"Music Graffiti TV",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Kids"
|
||||
channels={[
|
||||
"Cartoon Network HD",
|
||||
"Disney Channel HD",
|
||||
"Disney XD HD",
|
||||
"Kids Station HD",
|
||||
"Animax HD",
|
||||
"Disney Junior",
|
||||
"Asia Dramatic TV HD",
|
||||
"KBS World HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Foreign Drama"
|
||||
channels={[
|
||||
"Super Drama TV HD",
|
||||
"AXN Mystery HD",
|
||||
"AXN HD",
|
||||
"FOX HD",
|
||||
"FOX CLASSICS HD",
|
||||
"Lala HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Documentary"
|
||||
channels={[
|
||||
"History Channel HD",
|
||||
"National Geographic HD",
|
||||
"Discovery HD",
|
||||
"Nat Geo Wild HD",
|
||||
"Animal Planet HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="News & Business"
|
||||
channels={[
|
||||
"TBS News Bird HD",
|
||||
"Nikkei CNBC HD",
|
||||
"BBC World News HD",
|
||||
"CNNj HD",
|
||||
"NTV News 24",
|
||||
"CCTV Daifu",
|
||||
"SORA Weather Channel",
|
||||
"Entametele HD",
|
||||
"NTV Plus HD",
|
||||
"Channel Ginga",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Entertainment"
|
||||
channels={[
|
||||
"Fox Sports HD",
|
||||
"FujiTV One HD",
|
||||
"FujiTV Two HD",
|
||||
"TBS Channel 1 HD",
|
||||
"TBS Channel 2 HD",
|
||||
"TV Asahi Channel 1 HD",
|
||||
"TV Asahi Channel 2 HD",
|
||||
"Yose Channel",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Others"
|
||||
channels={[
|
||||
"IGO & Shogi",
|
||||
"Mondo 21 HD",
|
||||
"Family Theater HD",
|
||||
"Home Drama HD",
|
||||
"Samurai Drama HD",
|
||||
"TABI Channel HD",
|
||||
"Railyway Channel HD",
|
||||
]}
|
||||
/>
|
||||
</ChannelPackage>
|
||||
</TVServiceSection>
|
||||
|
||||
{/* Sky PerfecTV (Satellite) */}
|
||||
<TVServiceSection
|
||||
title="Sky PerfecTV (Satellite)"
|
||||
fees={[
|
||||
{ type: "Apartment Type", initial: "Free", monthly: "4,389 JPY" },
|
||||
{
|
||||
type: "Home Type",
|
||||
initial: "11,330 JPY (6,680 JPY if simultaneous installation)",
|
||||
monthly: "5,214 JPY",
|
||||
},
|
||||
]}
|
||||
note="*Prices shown above are including tax (10%)"
|
||||
>
|
||||
<ChannelPackage title="Basic Package">
|
||||
<ChannelCategory
|
||||
title="Movie"
|
||||
channels={[
|
||||
"Movie Plus HD",
|
||||
"Japanese Movie HD (BS)",
|
||||
"The Cinema",
|
||||
"Channel NECO",
|
||||
"Cinefil Wowow HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Sports"
|
||||
channels={["Nittele G HD", "Sky A Sports HD", "GAORA Sports HD", "Fox Sports HD"]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Music"
|
||||
channels={[
|
||||
"MTV HD",
|
||||
"Music ON! TV HD",
|
||||
"Space Shower TV",
|
||||
"Music Air",
|
||||
"Space Shower TV Plus",
|
||||
"Kayo Pops",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Kids"
|
||||
channels={[
|
||||
"Kids Station HD",
|
||||
"BS Animax HD (BS)",
|
||||
"Disney (BS)",
|
||||
"Cartoon Network",
|
||||
"Disney Junior",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Foreign Drama"
|
||||
channels={["Lala HD", "Super Drama TV HD", "AXN", "AXN Mystery", "FOX"]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Documentary"
|
||||
channels={["History Channel", "National Geographic", "Discovery", "Animal Planet"]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="News & Business"
|
||||
channels={[
|
||||
"TBS News Bird",
|
||||
"BBC World News",
|
||||
"CNNj",
|
||||
"NTV News 24",
|
||||
"TBS Channel 1 HD",
|
||||
"TBS Channel 2",
|
||||
"NTV Plus",
|
||||
"Channel Ginga",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Entertainment"
|
||||
channels={[
|
||||
"Fuji TV One HD",
|
||||
"Fuji TV Two HD",
|
||||
"TV Asahi Channel 1 HD",
|
||||
"TV Asahi Channel 2 HD",
|
||||
"Igo/Shogi Channel",
|
||||
"Mondo TV HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Others"
|
||||
channels={[
|
||||
"Tsuri Vision HD (BS)",
|
||||
"Family Gekijo HD",
|
||||
"Samurai Drama HD",
|
||||
"Home Drama Channel",
|
||||
]}
|
||||
/>
|
||||
</ChannelPackage>
|
||||
</TVServiceSection>
|
||||
|
||||
{/* iTSCOM (CATV) */}
|
||||
<TVServiceSection
|
||||
title="iTSCOM (CATV)"
|
||||
fees={[{ type: "Big Package", initial: "11,000 JPY", monthly: "5,280 JPY" }]}
|
||||
note="*Prices shown above are including tax (10%)"
|
||||
>
|
||||
<ChannelPackage title="Big Package">
|
||||
<ChannelCategory
|
||||
title="Movie"
|
||||
channels={[
|
||||
"Movie Plus HD",
|
||||
"Japanese Movie HD",
|
||||
"Channel NECO HD",
|
||||
"FOX Movie Premium HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Sports"
|
||||
channels={[
|
||||
"Golf Network HD",
|
||||
"Nittele G HD",
|
||||
"Sky A Sports HD",
|
||||
"GAORA HD",
|
||||
"J Sports 1 HD",
|
||||
"J Sports 2 HD",
|
||||
"J Sports 3 HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Music"
|
||||
channels={["MTV HD", "Music ON! TV HD", "Space Shower TV", "Music Air"]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Kids"
|
||||
channels={[
|
||||
"Animax HD",
|
||||
"Kids Station HD",
|
||||
"Disney XD",
|
||||
"Cartoon Network",
|
||||
"Baby TV",
|
||||
"Disney Junior",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Foreign Drama"
|
||||
channels={[
|
||||
"AXN HD",
|
||||
"FOX HD",
|
||||
"Asia Dramatic TV HD",
|
||||
"Super Drama TV HD",
|
||||
"AXN Mystery HD",
|
||||
"Family Theater HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Documentary"
|
||||
channels={[
|
||||
"Discovery HD",
|
||||
"National Geographic",
|
||||
"Animal Planet HD",
|
||||
"History Channel HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="News & Business"
|
||||
channels={[
|
||||
"BBC World News HD",
|
||||
"CNNj HD",
|
||||
"Nikkei CNBC HD",
|
||||
"TBS News Bird HD",
|
||||
"TV Asahi Channel 2",
|
||||
"NTV News 24",
|
||||
"NHK World Japan",
|
||||
"Disney Channel HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Entertainment"
|
||||
channels={[
|
||||
"LaLa TV HD",
|
||||
"Channel Ginga HD",
|
||||
"Dlife HD",
|
||||
"FOX Sports HD",
|
||||
"TBS Channel 1 HD",
|
||||
"TBS Channel 2",
|
||||
"NTV Plus",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Others"
|
||||
channels={[
|
||||
"Japanet Channel DX HD",
|
||||
"Jewelly Gem Shopping HD",
|
||||
"Samurai Drama HD",
|
||||
"TABI Channel",
|
||||
"QVC",
|
||||
"Shop Channel",
|
||||
"Igo/Shogi Channel",
|
||||
]}
|
||||
/>
|
||||
</ChannelPackage>
|
||||
</TVServiceSection>
|
||||
|
||||
{/* JCOM (CATV) */}
|
||||
<TVServiceSection
|
||||
title="JCOM (CATV)"
|
||||
fees={[{ type: "Standard Package", initial: "9,900 JPY", monthly: "6,074 JPY" }]}
|
||||
note="*Prices shown above are including tax (10%)"
|
||||
>
|
||||
<ChannelPackage title="Standard Package">
|
||||
<ChannelCategory
|
||||
title="Movie"
|
||||
channels={[
|
||||
"Movie Plus HD",
|
||||
"The Cinema HD",
|
||||
"Channel NECO HD",
|
||||
"Japanese Movie HD",
|
||||
"Fox Movies",
|
||||
"Cinefil Wowow HD",
|
||||
"Fox Sports & Entertainment",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Sports"
|
||||
channels={[
|
||||
"J Sports 1 HD",
|
||||
"J Sports 2 HD",
|
||||
"J Sports 3 HD",
|
||||
"Sky A Sports HD",
|
||||
"Golf Network HD",
|
||||
"GAORA HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Music"
|
||||
channels={["MTV HD", "Music ON! TV HD", "Space Shower TV", "Kayou Pops"]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Kids"
|
||||
channels={[
|
||||
"Animax HD",
|
||||
"Kids Station HD",
|
||||
"Cartoon Network HD",
|
||||
"Disney CHannel HD",
|
||||
"Disney XD HD",
|
||||
"Disney Junior HD",
|
||||
"AXN Mystery HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Foreign Drama"
|
||||
channels={[
|
||||
"Super Drama TV HD",
|
||||
"FOX HD",
|
||||
"FOX Classics HD",
|
||||
"AXN HD",
|
||||
"Lala HD",
|
||||
"KBS World HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Documentary"
|
||||
channels={[
|
||||
"Histroy Channel HD",
|
||||
"National Geographic HD",
|
||||
"Discovery Channel HD",
|
||||
"Animal Planet HD",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="News & Business"
|
||||
channels={[
|
||||
"TBS News Bird HD",
|
||||
"Nikkei CNBC HD",
|
||||
"TV Asahi Channel 2 HD",
|
||||
"CNNj",
|
||||
"NTV News 24",
|
||||
"NHK World Japan",
|
||||
"KBS World",
|
||||
"NTV Plus",
|
||||
"Act On TV",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Entertainment"
|
||||
channels={[
|
||||
"FujiTV One HD",
|
||||
"FujiTV Two HD",
|
||||
"TBS Channel 1 HD",
|
||||
"TBS Channel 2 HD",
|
||||
"Channel Ginga HD",
|
||||
"TV Asahi Channel 1",
|
||||
"Housou University TV",
|
||||
]}
|
||||
/>
|
||||
<ChannelCategory
|
||||
title="Others"
|
||||
channels={[
|
||||
"Family Theater HD",
|
||||
"Samurai Drama HD",
|
||||
"Home Drama Channel HD",
|
||||
"Mondo TV HD",
|
||||
"Tsuri Vision HD",
|
||||
"Igo/Shogi Channel",
|
||||
]}
|
||||
/>
|
||||
</ChannelPackage>
|
||||
</TVServiceSection>
|
||||
</div>
|
||||
|
||||
{/* FAQ */}
|
||||
<div className="max-w-4xl mx-auto mb-16">
|
||||
<h2 className="text-3xl font-bold text-foreground mb-8 text-center">
|
||||
Frequently Asked Questions
|
||||
</h2>
|
||||
<div className="space-y-6">
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8">
|
||||
<h3 className="text-xl font-bold text-foreground mb-3">
|
||||
Is Assist Solutions directly providing the TV service?
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
As partners, we are able to refer you to each cable TV company available at your home.
|
||||
However, once the service starts, the cable TV service itself will be directly
|
||||
provided by each cable TV company.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="bg-card rounded-2xl border border-border/60 p-8">
|
||||
<h3 className="text-xl font-bold text-foreground mb-3">
|
||||
Would I be able to choose any cable TV service that Assist Solutions is partnered
|
||||
with?
|
||||
</h3>
|
||||
<p className="text-muted-foreground leading-relaxed">
|
||||
In Japan, most cable TV companies have predetermined service areas. We will be able to
|
||||
check which services are available for your home. Please contact us for a free
|
||||
consultation.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div className="text-center py-12 bg-muted/20 rounded-3xl">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-4">
|
||||
Find the best TV service for you
|
||||
</h2>
|
||||
<Button as="a" href="/contact" size="lg">
|
||||
Contact Us
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// Helper Components
|
||||
|
||||
function TVServiceSection({
|
||||
title,
|
||||
fees,
|
||||
note,
|
||||
children,
|
||||
}: {
|
||||
title: string;
|
||||
fees: { type: string; initial: string; monthly: string }[];
|
||||
note?: string;
|
||||
children?: React.ReactNode;
|
||||
}) {
|
||||
return (
|
||||
<div className="border border-border/60 rounded-2xl overflow-hidden bg-card shadow-sm">
|
||||
<div className="bg-primary/5 p-6 border-b border-border/60">
|
||||
<div className="flex items-center gap-3">
|
||||
<div className="h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center text-primary">
|
||||
<TvIcon className="h-6 w-6" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground">{title}</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="p-6 md:p-8">
|
||||
<div className="mb-8">
|
||||
<h3 className="text-sm font-semibold text-muted-foreground uppercase tracking-wider mb-4">
|
||||
Service Fees
|
||||
</h3>
|
||||
<div className="overflow-x-auto">
|
||||
<table className="w-full text-sm text-left">
|
||||
<thead className="bg-muted/50 text-muted-foreground font-medium">
|
||||
<tr>
|
||||
<th className="px-4 py-3 rounded-l-lg">Type</th>
|
||||
<th className="px-4 py-3">Initial Cost</th>
|
||||
<th className="px-4 py-3 rounded-r-lg">Monthly Cost</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody className="divide-y divide-border/60">
|
||||
{fees.map((fee, i) => (
|
||||
<tr key={i}>
|
||||
<td className="px-4 py-3 font-medium text-foreground">{fee.type}</td>
|
||||
<td className="px-4 py-3">{fee.initial}</td>
|
||||
<td className="px-4 py-3">{fee.monthly}</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{note && <p className="text-xs text-muted-foreground mt-2">{note}</p>}
|
||||
</div>
|
||||
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function ChannelPackage({ title, children }: { title: string; children: React.ReactNode }) {
|
||||
return (
|
||||
<div>
|
||||
<h3 className="text-lg font-bold text-foreground mb-4 border-l-4 border-primary pl-3">
|
||||
{title}
|
||||
</h3>
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">{children}</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function ChannelCategory({ title, channels }: { title: string; channels: string[] }) {
|
||||
return (
|
||||
<div className="bg-muted/30 rounded-lg p-4">
|
||||
<h4 className="font-semibold text-foreground mb-3 flex items-center gap-2">
|
||||
{title === "Movie" && <FilmIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Music" && <MusicalNoteIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Sports" && <TrophyIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "News & Business" && <NewspaperIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Entertainment" && <SparklesIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Kids" && <SparklesIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Foreign Drama" && <GlobeAsiaAustraliaIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Documentary" && <AcademicCapIcon className="h-4 w-4 text-primary" />}
|
||||
{title === "Others" && <EllipsisHorizontalCircleIcon className="h-4 w-4 text-primary" />}
|
||||
{title}
|
||||
</h4>
|
||||
<ul className="space-y-1">
|
||||
{channels.map(channel => (
|
||||
<li key={channel} className="text-sm text-muted-foreground">
|
||||
{channel}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
17
apps/portal/src/app/(public)/(site)/services/vpn/page.tsx
Normal file
17
apps/portal/src/app/(public)/(site)/services/vpn/page.tsx
Normal file
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* Public VPN Plans Page
|
||||
*
|
||||
* Displays VPN plans for unauthenticated users.
|
||||
*/
|
||||
|
||||
import { PublicVpnPlansView } from "@/features/catalog/views/PublicVpnPlans";
|
||||
import { RedirectAuthenticatedToAccountServices } from "@/features/catalog/components/common/RedirectAuthenticatedToAccountServices";
|
||||
|
||||
export default function PublicVpnPlansPage() {
|
||||
return (
|
||||
<>
|
||||
<RedirectAuthenticatedToAccountServices targetPath="/account/services/vpn" />
|
||||
<PublicVpnPlansView />
|
||||
</>
|
||||
);
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import InternetCancelContainer from "@/features/subscriptions/views/InternetCancel";
|
||||
|
||||
export default function AccountInternetCancelPage() {
|
||||
return <InternetCancelContainer />;
|
||||
}
|
||||
19
apps/portal/src/app/account/my-services/[id]/loading.tsx
Normal file
19
apps/portal/src/app/account/my-services/[id]/loading.tsx
Normal file
@ -0,0 +1,19 @@
|
||||
import { RouteLoading } from "@/components/molecules/RouteLoading";
|
||||
import { ServerIcon } from "@heroicons/react/24/outline";
|
||||
import { LoadingCard } from "@/components/atoms/loading-skeleton";
|
||||
|
||||
export default function AccountServiceDetailLoading() {
|
||||
return (
|
||||
<RouteLoading
|
||||
icon={<ServerIcon />}
|
||||
title="Service"
|
||||
description="Service details"
|
||||
mode="content"
|
||||
>
|
||||
<div className="space-y-4">
|
||||
<LoadingCard />
|
||||
<LoadingCard />
|
||||
</div>
|
||||
</RouteLoading>
|
||||
);
|
||||
}
|
||||
5
apps/portal/src/app/account/my-services/[id]/page.tsx
Normal file
5
apps/portal/src/app/account/my-services/[id]/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import SubscriptionDetailContainer from "@/features/subscriptions/views/SubscriptionDetail";
|
||||
|
||||
export default function AccountServiceDetailPage() {
|
||||
return <SubscriptionDetailContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import SimCallHistoryContainer from "@/features/subscriptions/views/SimCallHistory";
|
||||
|
||||
export default function AccountSimCallHistoryPage() {
|
||||
return <SimCallHistoryContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import SimCancelContainer from "@/features/subscriptions/views/SimCancel";
|
||||
|
||||
export default function AccountSimCancelPage() {
|
||||
return <SimCancelContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import SimChangePlanContainer from "@/features/subscriptions/views/SimChangePlan";
|
||||
|
||||
export default function AccountSimChangePlanPage() {
|
||||
return <SimChangePlanContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import SimReissueContainer from "@/features/subscriptions/views/SimReissue";
|
||||
|
||||
export default function AccountSimReissuePage() {
|
||||
return <SimReissueContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import SimTopUpContainer from "@/features/subscriptions/views/SimTopUp";
|
||||
|
||||
export default function AccountSimTopUpPage() {
|
||||
return <SimTopUpContainer />;
|
||||
}
|
||||
16
apps/portal/src/app/account/my-services/loading.tsx
Normal file
16
apps/portal/src/app/account/my-services/loading.tsx
Normal file
@ -0,0 +1,16 @@
|
||||
import { RouteLoading } from "@/components/molecules/RouteLoading";
|
||||
import { ServerIcon } from "@heroicons/react/24/outline";
|
||||
import { LoadingTable } from "@/components/atoms/loading-skeleton";
|
||||
|
||||
export default function AccountServicesLoading() {
|
||||
return (
|
||||
<RouteLoading
|
||||
icon={<ServerIcon />}
|
||||
title="Services"
|
||||
description="View and manage your services"
|
||||
mode="content"
|
||||
>
|
||||
<LoadingTable rows={6} columns={5} />
|
||||
</RouteLoading>
|
||||
);
|
||||
}
|
||||
5
apps/portal/src/app/account/my-services/page.tsx
Normal file
5
apps/portal/src/app/account/my-services/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import SubscriptionsListContainer from "@/features/subscriptions/views/SubscriptionsList";
|
||||
|
||||
export default function AccountServicesPage() {
|
||||
return <SubscriptionsListContainer />;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import { InternetConfigureContainer } from "@/features/catalog/views/InternetConfigure";
|
||||
|
||||
export default function AccountInternetConfigurePage() {
|
||||
return <InternetConfigureContainer />;
|
||||
}
|
||||
5
apps/portal/src/app/account/services/internet/page.tsx
Normal file
5
apps/portal/src/app/account/services/internet/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import { InternetPlansContainer } from "@/features/catalog/views/InternetPlans";
|
||||
|
||||
export default function AccountInternetPlansPage() {
|
||||
return <InternetPlansContainer />;
|
||||
}
|
||||
5
apps/portal/src/app/account/services/layout.tsx
Normal file
5
apps/portal/src/app/account/services/layout.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
export default function AccountShopLayout({ children }: { children: ReactNode }) {
|
||||
return <>{children}</>;
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
import { SimConfigureContainer } from "@/features/catalog/views/SimConfigure";
|
||||
|
||||
export default function AccountSimConfigurePage() {
|
||||
return <SimConfigureContainer />;
|
||||
}
|
||||
5
apps/portal/src/app/account/services/sim/page.tsx
Normal file
5
apps/portal/src/app/account/services/sim/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import { SimPlansContainer } from "@/features/catalog/views/SimPlans";
|
||||
|
||||
export default function AccountSimPlansPage() {
|
||||
return <SimPlansContainer />;
|
||||
}
|
||||
5
apps/portal/src/app/account/services/vpn/page.tsx
Normal file
5
apps/portal/src/app/account/services/vpn/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import { VpnPlansView } from "@/features/catalog/views/VpnPlans";
|
||||
|
||||
export default function AccountVpnPlansPage() {
|
||||
return <VpnPlansView />;
|
||||
}
|
||||
124
apps/portal/src/components/organisms/SiteFooter/SiteFooter.tsx
Normal file
124
apps/portal/src/components/organisms/SiteFooter/SiteFooter.tsx
Normal file
@ -0,0 +1,124 @@
|
||||
/**
|
||||
* SiteFooter
|
||||
*
|
||||
* Shared footer component for all public-facing pages.
|
||||
* Contains company info, address, services links, and company links.
|
||||
*/
|
||||
|
||||
import Link from "next/link";
|
||||
import { Logo } from "@/components/atoms/logo";
|
||||
import { PhoneIcon, MapPinIcon } from "@heroicons/react/24/outline";
|
||||
|
||||
export function SiteFooter() {
|
||||
return (
|
||||
<footer className="border-t border-border/40 bg-muted/30">
|
||||
<div className="max-w-[var(--cp-page-max-width)] mx-auto px-[var(--cp-page-padding)] py-12">
|
||||
<div className="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
|
||||
{/* Company Info */}
|
||||
<div className="md:col-span-2">
|
||||
<Link href="/" className="inline-flex items-center gap-2.5 mb-4">
|
||||
<span className="inline-flex items-center justify-center h-8 w-8 rounded-lg bg-primary/10 text-primary">
|
||||
<Logo size={18} />
|
||||
</span>
|
||||
<span className="text-base font-bold text-foreground">Assist Solutions</span>
|
||||
</Link>
|
||||
<p className="text-sm text-muted-foreground mb-4 max-w-sm">
|
||||
Serving Japan's international community with reliable IT solutions since 2002.
|
||||
</p>
|
||||
<div className="space-y-2 text-sm text-muted-foreground">
|
||||
<div className="flex items-start gap-2">
|
||||
<MapPinIcon className="h-4 w-4 mt-0.5 flex-shrink-0" />
|
||||
<span>
|
||||
3F Azabu Maruka Bldg., 3-8-2 Higashi Azabu,
|
||||
<br />
|
||||
Minato-ku, Tokyo 106-0044
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
<PhoneIcon className="h-4 w-4 flex-shrink-0" />
|
||||
<span>
|
||||
<a href="tel:0120-660-470" className="hover:text-foreground transition-colors">
|
||||
0120-660-470
|
||||
</a>{" "}
|
||||
(Toll Free)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Services */}
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-foreground mb-4">Services</h3>
|
||||
<ul className="space-y-2 text-sm">
|
||||
<li>
|
||||
<Link
|
||||
href="/services/internet"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
Internet
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/services/sim"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
SIM & eSIM
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/services/vpn"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
VPN
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* Company */}
|
||||
<div>
|
||||
<h3 className="text-sm font-semibold text-foreground mb-4">Company</h3>
|
||||
<ul className="space-y-2 text-sm">
|
||||
<li>
|
||||
<Link
|
||||
href="/about"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
About Us
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/contact"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
Contact
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link
|
||||
href="/help"
|
||||
className="text-muted-foreground hover:text-foreground transition-colors"
|
||||
>
|
||||
Support
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Bottom Bar */}
|
||||
<div className="pt-8 border-t border-border/40 flex flex-col sm:flex-row items-center justify-between gap-4">
|
||||
<div className="text-sm text-muted-foreground">
|
||||
© {new Date().getFullYear()} Assist Solutions Corp. All rights reserved.
|
||||
</div>
|
||||
<div className="text-xs text-muted-foreground">
|
||||
Notified Telecommunication Carrier: A-19-9538
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
1
apps/portal/src/components/organisms/SiteFooter/index.ts
Normal file
1
apps/portal/src/components/organisms/SiteFooter/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export { SiteFooter } from "./SiteFooter";
|
||||
@ -0,0 +1,2 @@
|
||||
export { PublicShell } from "./PublicShell";
|
||||
export type { PublicShellProps } from "./PublicShell";
|
||||
@ -0,0 +1,36 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
||||
import { useAuthStore } from "@/features/auth/services/auth.store";
|
||||
|
||||
type Props = {
|
||||
/**
|
||||
* Absolute target path (no querystring). When omitted, the current pathname is transformed:
|
||||
* `/services/...` -> `/account/services/...`.
|
||||
*/
|
||||
targetPath?: string;
|
||||
};
|
||||
|
||||
export function RedirectAuthenticatedToAccountServices({ targetPath }: Props) {
|
||||
const router = useRouter();
|
||||
const pathname = usePathname();
|
||||
const searchParams = useSearchParams();
|
||||
const isAuthenticated = useAuthStore(state => state.isAuthenticated);
|
||||
const hasCheckedAuth = useAuthStore(state => state.hasCheckedAuth);
|
||||
|
||||
useEffect(() => {
|
||||
if (!hasCheckedAuth) return;
|
||||
if (!isAuthenticated) return;
|
||||
|
||||
// Simple path transformation: /services/* → /account/services/*
|
||||
const nextPath =
|
||||
targetPath ??
|
||||
(pathname.startsWith("/services") ? `/account${pathname}` : "/account/services");
|
||||
|
||||
const query = searchParams?.toString() ?? "";
|
||||
router.replace(query ? `${nextPath}?${query}` : nextPath);
|
||||
}, [hasCheckedAuth, isAuthenticated, pathname, router, searchParams, targetPath]);
|
||||
|
||||
return null;
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
"use client";
|
||||
|
||||
import { usePathname } from "next/navigation";
|
||||
|
||||
/**
|
||||
* Returns the active services base path for the current shell.
|
||||
*
|
||||
* - Public services: `/services`
|
||||
* - Account services (inside AppShell): `/account/services`
|
||||
*/
|
||||
export function useServicesBasePath(): "/services" | "/account/services" {
|
||||
const pathname = usePathname();
|
||||
if (pathname.startsWith("/account/services")) {
|
||||
return "/account/services";
|
||||
}
|
||||
return "/services";
|
||||
}
|
||||
204
apps/portal/src/features/marketing/views/AboutUsView.tsx
Normal file
204
apps/portal/src/features/marketing/views/AboutUsView.tsx
Normal file
@ -0,0 +1,204 @@
|
||||
"use client";
|
||||
|
||||
import {
|
||||
BuildingOffice2Icon,
|
||||
UserGroupIcon,
|
||||
CalendarIcon,
|
||||
BanknotesIcon,
|
||||
PhoneIcon,
|
||||
MapPinIcon,
|
||||
ClockIcon,
|
||||
CheckCircleIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
|
||||
/**
|
||||
* AboutUsView - Corporate profile and company information
|
||||
*
|
||||
* Displays company background, corporate data, business activities,
|
||||
* and mission statement for Assist Solutions.
|
||||
*/
|
||||
export function AboutUsView() {
|
||||
return (
|
||||
<div className="max-w-4xl mx-auto space-y-12">
|
||||
{/* Header */}
|
||||
<div className="text-center">
|
||||
<h1 className="text-3xl sm:text-4xl font-bold text-foreground mb-4">About Us</h1>
|
||||
<p className="text-lg text-muted-foreground max-w-2xl mx-auto leading-relaxed">
|
||||
We specialize in serving Japan's international community with the most reliable and
|
||||
cost-efficient IT solutions available.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Who We Are Section */}
|
||||
<section className="bg-card rounded-2xl border border-border p-8 sm:p-10">
|
||||
<div className="flex items-center gap-3 mb-6">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center">
|
||||
<BuildingOffice2Icon className="h-6 w-6 text-primary" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground">Who We Are</h2>
|
||||
</div>
|
||||
<div className="space-y-4 text-muted-foreground leading-relaxed">
|
||||
<p>
|
||||
Assist Solutions Corp. is a privately-owned entrepreneurial IT service company. We
|
||||
specialize in serving Japan's international community with the most reliable and
|
||||
cost-efficient IT & TV solutions available.
|
||||
</p>
|
||||
<p>
|
||||
We are dedicated to providing comfortable support for our customer's diverse needs
|
||||
in both English and Japanese. We believe that our excellent bi-lingual support and
|
||||
flexible service along with our knowledge and experience in the field are what sets us
|
||||
apart from the rest of the information technology and broadcasting industry.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Corporate Data Section */}
|
||||
<section className="bg-card rounded-2xl border border-border p-8 sm:p-10">
|
||||
<div className="flex items-center gap-3 mb-6">
|
||||
<div className="h-12 w-12 rounded-xl bg-primary/10 border border-primary/20 flex items-center justify-center">
|
||||
<UserGroupIcon className="h-6 w-6 text-primary" />
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold text-foreground">Corporate Data</h2>
|
||||
</div>
|
||||
<p className="text-muted-foreground mb-6">
|
||||
Assist Solutions is a privately-owned entrepreneurial IT supporting company, focused on
|
||||
the international community in Japan.
|
||||
</p>
|
||||
|
||||
<div className="divide-y divide-border">
|
||||
{/* Company Name */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground">Name</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">
|
||||
Assist Solutions Corp.
|
||||
<br />
|
||||
<span className="text-sm">(Notified Telecommunication Carrier: A-19-9538)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Address */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground flex items-center gap-2">
|
||||
<MapPinIcon className="h-4 w-4 text-primary" />
|
||||
Address
|
||||
</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">
|
||||
3F Azabu Maruka Bldg., 3-8-2 Higashi Azabu,
|
||||
<br />
|
||||
Minato-ku, Tokyo 106-0044
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Phone/Fax */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground flex items-center gap-2">
|
||||
<PhoneIcon className="h-4 w-4 text-primary" />
|
||||
Tel / Fax
|
||||
</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">
|
||||
Tel: 03-3560-1006
|
||||
<br />
|
||||
Fax: 03-3560-1007
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Business Hours */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground flex items-center gap-2">
|
||||
<ClockIcon className="h-4 w-4 text-primary" />
|
||||
Business Hours
|
||||
</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground space-y-1">
|
||||
<div>Mon - Fri 9:30AM - 6:00PM — Customer Support Team</div>
|
||||
<div>Mon - Fri 9:30AM - 6:00PM — In-office Tech Support Team</div>
|
||||
<div>Mon - Sat 10:00AM - 9:00PM — Onsite Tech Support Team</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Representative */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground">Representative Director</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">Daisuke Nagakawa</div>
|
||||
</div>
|
||||
|
||||
{/* Employees */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground">Employees</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">
|
||||
21 Staff Members (as of March 31st, 2025)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Established */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground flex items-center gap-2">
|
||||
<CalendarIcon className="h-4 w-4 text-primary" />
|
||||
Established
|
||||
</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">March 8, 2002</div>
|
||||
</div>
|
||||
|
||||
{/* Capital */}
|
||||
<div className="py-4 grid grid-cols-1 sm:grid-cols-3 gap-2">
|
||||
<div className="font-medium text-foreground flex items-center gap-2">
|
||||
<BanknotesIcon className="h-4 w-4 text-primary" />
|
||||
Paid-in Capital
|
||||
</div>
|
||||
<div className="sm:col-span-2 text-muted-foreground">40,000,000 JPY</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Business Activities Section */}
|
||||
<section className="bg-card rounded-2xl border border-border p-8 sm:p-10">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-6">Business Activities</h2>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 gap-3">
|
||||
{[
|
||||
"IT Consulting Services",
|
||||
"TV Consulting Services",
|
||||
"Internet Connection Service Provision (SonixNet ISP)",
|
||||
"VPN Connection Service Provision (SonixNet US/UK Remote Access)",
|
||||
"Agent for Telecommunication Services",
|
||||
"Agent for Internet Services",
|
||||
"Agent for TV Services",
|
||||
"Onsite Support Service for IT",
|
||||
"Onsite Support Service for TV",
|
||||
"Server Management Service",
|
||||
"Network Management Service",
|
||||
].map((activity, index) => (
|
||||
<div key={index} className="flex items-start gap-2">
|
||||
<CheckCircleIcon className="h-5 w-5 text-primary flex-shrink-0 mt-0.5" />
|
||||
<span className="text-muted-foreground">{activity}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Mission Statement Section */}
|
||||
<section className="bg-gradient-to-br from-primary/5 to-transparent rounded-2xl border border-primary/20 p-8 sm:p-10">
|
||||
<h2 className="text-2xl font-bold text-foreground mb-6">Mission Statement</h2>
|
||||
<p className="text-muted-foreground mb-6 leading-relaxed">
|
||||
We will achieve business success by pursuing the following:
|
||||
</p>
|
||||
<ul className="space-y-4">
|
||||
{[
|
||||
"Provide the most customer-oriented service in this industry in Japan.",
|
||||
"Through our service, we save client's time and enrich customers' lives.",
|
||||
"We always have the latest and most efficient knowledge required for our service.",
|
||||
"Be a responsible participant in Japan's international community.",
|
||||
"Maintain high ethical standards in all business activities.",
|
||||
].map((mission, index) => (
|
||||
<li key={index} className="flex items-start gap-3">
|
||||
<span className="flex h-6 w-6 items-center justify-center rounded-full bg-primary/10 text-primary text-sm font-semibold flex-shrink-0">
|
||||
{index + 1}
|
||||
</span>
|
||||
<span className="text-foreground leading-relaxed">{mission}</span>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AboutUsView;
|
||||
Loading…
x
Reference in New Issue
Block a user