-
- );
-}
diff --git a/apps/portal/src/app/(authenticated)/subscriptions/loading.tsx b/apps/portal/src/app/(authenticated)/subscriptions/loading.tsx
deleted file mode 100644
index 82717262..00000000
--- a/apps/portal/src/app/(authenticated)/subscriptions/loading.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import { RouteLoading } from "@/components/molecules/RouteLoading";
-import { ServerIcon } from "@heroicons/react/24/outline";
-import { LoadingTable } from "@/components/atoms/loading-skeleton";
-
-export default function SubscriptionsLoading() {
- return (
- }
- title="Subscriptions"
- description="View and manage your subscriptions"
- mode="content"
- >
-
-
- );
-}
diff --git a/apps/portal/src/app/(authenticated)/support/page.tsx b/apps/portal/src/app/(authenticated)/support/page.tsx
deleted file mode 100644
index 5148a44b..00000000
--- a/apps/portal/src/app/(authenticated)/support/page.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { SupportHomeView } from "@/features/support";
-import { AgentforceWidget } from "@/components";
-
-export default function SupportPage() {
- return (
- <>
-
-
- >
- );
-}
-
diff --git a/apps/portal/src/app/(public)/(site)/about/page.tsx b/apps/portal/src/app/(public)/(site)/about/page.tsx
new file mode 100644
index 00000000..f95bf359
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/about/page.tsx
@@ -0,0 +1,11 @@
+/**
+ * Public About Page
+ *
+ * Corporate profile and company information.
+ */
+
+import { AboutUsView } from "@/features/marketing/views/AboutUsView";
+
+export default function AboutPage() {
+ return ;
+}
diff --git a/apps/portal/src/app/(public)/auth/forgot-password/page.tsx b/apps/portal/src/app/(public)/(site)/auth/forgot-password/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/forgot-password/page.tsx
rename to apps/portal/src/app/(public)/(site)/auth/forgot-password/page.tsx
diff --git a/apps/portal/src/app/(public)/auth/loading.tsx b/apps/portal/src/app/(public)/(site)/auth/loading.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/loading.tsx
rename to apps/portal/src/app/(public)/(site)/auth/loading.tsx
diff --git a/apps/portal/src/app/(public)/auth/login/page.tsx b/apps/portal/src/app/(public)/(site)/auth/login/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/login/page.tsx
rename to apps/portal/src/app/(public)/(site)/auth/login/page.tsx
diff --git a/apps/portal/src/app/(public)/(site)/auth/migrate/page.tsx b/apps/portal/src/app/(public)/(site)/auth/migrate/page.tsx
new file mode 100644
index 00000000..33cf7d4c
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/auth/migrate/page.tsx
@@ -0,0 +1,5 @@
+import MigrateAccountView from "@/features/auth/views/MigrateAccountView";
+
+export default function MigrateAccountPage() {
+ return ;
+}
diff --git a/apps/portal/src/app/(public)/auth/reset-password/page.tsx b/apps/portal/src/app/(public)/(site)/auth/reset-password/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/reset-password/page.tsx
rename to apps/portal/src/app/(public)/(site)/auth/reset-password/page.tsx
diff --git a/apps/portal/src/app/(public)/auth/set-password/page.tsx b/apps/portal/src/app/(public)/(site)/auth/set-password/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/set-password/page.tsx
rename to apps/portal/src/app/(public)/(site)/auth/set-password/page.tsx
diff --git a/apps/portal/src/app/(public)/auth/signup/page.tsx b/apps/portal/src/app/(public)/(site)/auth/signup/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/auth/signup/page.tsx
rename to apps/portal/src/app/(public)/(site)/auth/signup/page.tsx
diff --git a/apps/portal/src/app/(public)/(site)/contact/page.tsx b/apps/portal/src/app/(public)/(site)/contact/page.tsx
new file mode 100644
index 00000000..cea3eeee
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/contact/page.tsx
@@ -0,0 +1,11 @@
+/**
+ * Public Contact Page
+ *
+ * Contact form for unauthenticated users.
+ */
+
+import { PublicContactView } from "@/features/support/views/PublicContactView";
+
+export default function ContactPage() {
+ return ;
+}
diff --git a/apps/portal/src/app/(public)/(site)/help/page.tsx b/apps/portal/src/app/(public)/(site)/help/page.tsx
new file mode 100644
index 00000000..dc45df1d
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/help/page.tsx
@@ -0,0 +1,11 @@
+/**
+ * Public Support Page
+ *
+ * FAQ and help center for unauthenticated users.
+ */
+
+import { PublicSupportView } from "@/features/support/views/PublicSupportView";
+
+export default function PublicSupportPage() {
+ return ;
+}
diff --git a/apps/portal/src/app/(public)/(site)/layout.tsx b/apps/portal/src/app/(public)/(site)/layout.tsx
new file mode 100644
index 00000000..a0693a1a
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/layout.tsx
@@ -0,0 +1,11 @@
+/**
+ * Public Site Layout
+ *
+ * Landing/auth/help/contact pages using the PublicShell header/footer.
+ */
+
+import { PublicShell } from "@/components/templates";
+
+export default function PublicSiteLayout({ children }: { children: React.ReactNode }) {
+ return {children};
+}
diff --git a/apps/portal/src/app/(public)/loading.tsx b/apps/portal/src/app/(public)/(site)/loading.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/loading.tsx
rename to apps/portal/src/app/(public)/(site)/loading.tsx
diff --git a/apps/portal/src/app/(public)/page.tsx b/apps/portal/src/app/(public)/(site)/page.tsx
similarity index 100%
rename from apps/portal/src/app/(public)/page.tsx
rename to apps/portal/src/app/(public)/(site)/page.tsx
diff --git a/apps/portal/src/app/(public)/(site)/services/business/page.tsx b/apps/portal/src/app/(public)/(site)/services/business/page.tsx
new file mode 100644
index 00000000..dbef92a9
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/business/page.tsx
@@ -0,0 +1,92 @@
+import { Button } from "@/components/atoms";
+import { Server, Monitor, Wrench, Globe } from "lucide-react";
+
+export default function BusinessSolutionsPage() {
+ return (
+
+ {/* Header */}
+
+
+ Business Solutions
+
+
+ We provide comprehensive business solutions including DIA (Dedicated Internet Access) with
+ SLA and bandwidth guarantees to ensure your business stays connected.
+
+
+
+
+ {/* Office LAN Setup */}
+
+
+
+
+
Office LAN Setup
+
+ 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.
+
+
+
+ {/* Onsite & Remote Tech Support */}
+
+
+
+
+
Onsite & Remote Tech Support
+
+ 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.
+
+
+
+ {/* Dedicated Internet Access (DIA) */}
+
+
+
+
+
+ Dedicated Internet Access (DIA)
+
+
+ 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.
+
+
+
+ {/* Data Center Service */}
+
+
+
+
+
Data Center Service
+
+ 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.
+
+
+
+
+ {/* CTA */}
+
+
+ Interested in our Business Solutions?
+
+
+ Contact us today to discuss your requirements and how we can help your business grow.
+
+
+
+
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/internet/configure/page.tsx b/apps/portal/src/app/(public)/(site)/services/internet/configure/page.tsx
new file mode 100644
index 00000000..badebabc
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/internet/configure/page.tsx
@@ -0,0 +1,17 @@
+/**
+ * Public Internet Configure Page
+ *
+ * Configure internet plan for unauthenticated users.
+ */
+
+import { PublicInternetConfigureView } from "@/features/services/views/PublicInternetConfigure";
+import { RedirectAuthenticatedToAccountServices } from "@/features/services/components/common/RedirectAuthenticatedToAccountServices";
+
+export default function PublicInternetConfigurePage() {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/internet/page.tsx b/apps/portal/src/app/(public)/(site)/services/internet/page.tsx
new file mode 100644
index 00000000..2e23ef80
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/internet/page.tsx
@@ -0,0 +1,17 @@
+/**
+ * Public Internet Plans Page
+ *
+ * Displays internet plans for unauthenticated users.
+ */
+
+import { PublicInternetPlansView } from "@/features/services/views/PublicInternetPlans";
+import { RedirectAuthenticatedToAccountServices } from "@/features/services/components/common/RedirectAuthenticatedToAccountServices";
+
+export default function PublicInternetPlansPage() {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/onsite/page.tsx b/apps/portal/src/app/(public)/(site)/services/onsite/page.tsx
new file mode 100644
index 00000000..ded38d14
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/onsite/page.tsx
@@ -0,0 +1,142 @@
+import { Button } from "@/components/atoms";
+import { Users, Monitor, Tv, Headset } from "lucide-react";
+
+export default function OnsiteSupportPage() {
+ return (
+
+ {/* Header */}
+
+
+ Onsite Support
+
+
+ We dispatch our skillful in-house tech staff to your residence or office for your needs.
+
+
+
+ {/* Main Services */}
+
+
+
Need Our Technical Support?
+
+ 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.
+
+
+ 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).
+
+
+
+
+
+
+
+
+
+
+ {/* Pricing Cards */}
+
+ {/* Onsite Network & Computer Support */}
+
+
+
+
+
+ Onsite Network & Computer Support
+
+
+
Basic Service Fee
+
15,000 JPY
+
+
+
+ {/* Remote Support */}
+
+
+
+
+
+ Remote Network & Computer Support
+
+
+
Basic Service Fee
+
5,000 JPY
+
+
+
+ {/* Onsite TV Support */}
+
+
+
+
+
Onsite TV Support Service
+
+
Basic Service Fee
+
15,000 JPY
+
+
+
+
+ {/* FAQ Section */}
+
+
+ Frequently Asked Questions
+
+
+
+
+
+ My home requires multiple Wi-Fi routers. Would you be able to assist with this?
+
+
+ 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.
+
+
+
+
+
+ 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?
+
+
+ Yes, we are able to offer the Onsite Support service as a standalone service.
+
+
+
+
+
+ Do you offer this service outside of Tokyo?
+
+
+
+ Our In-Home Technical Assistance service can be provided in Tokyo, Saitama and
+ Kanagawa prefecture.
+
+
+ *Please note that this service may not available in some areas within the above
+ prefectures. For more information, please contact us.
+
+ From high-speed internet to onsite support, we provide comprehensive solutions for your
+ home and business.
+
+
+
+
+
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/sim/configure/page.tsx b/apps/portal/src/app/(public)/(site)/services/sim/configure/page.tsx
new file mode 100644
index 00000000..da3da30e
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/sim/configure/page.tsx
@@ -0,0 +1,17 @@
+/**
+ * Public SIM Configure Page
+ *
+ * Configure SIM plan for unauthenticated users.
+ */
+
+import { PublicSimConfigureView } from "@/features/services/views/PublicSimConfigure";
+import { RedirectAuthenticatedToAccountServices } from "@/features/services/components/common/RedirectAuthenticatedToAccountServices";
+
+export default function PublicSimConfigurePage() {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/sim/page.tsx b/apps/portal/src/app/(public)/(site)/services/sim/page.tsx
new file mode 100644
index 00000000..365bfbbb
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/sim/page.tsx
@@ -0,0 +1,17 @@
+/**
+ * Public SIM Plans Page
+ *
+ * Displays SIM plans for unauthenticated users.
+ */
+
+import { PublicSimPlansView } from "@/features/services/views/PublicSimPlans";
+import { RedirectAuthenticatedToAccountServices } from "@/features/services/components/common/RedirectAuthenticatedToAccountServices";
+
+export default function PublicSimPlansPage() {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/apps/portal/src/app/(public)/(site)/services/tv/page.tsx b/apps/portal/src/app/(public)/(site)/services/tv/page.tsx
new file mode 100644
index 00000000..7cd0c8ad
--- /dev/null
+++ b/apps/portal/src/app/(public)/(site)/services/tv/page.tsx
@@ -0,0 +1,729 @@
+import { Button } from "@/components/atoms";
+import {
+ Tv,
+ Film,
+ Music,
+ Trophy,
+ Newspaper,
+ Sparkles,
+ MoreHorizontal,
+ GraduationCap,
+ Globe,
+} from "lucide-react";
+
+export default function TVServicesPage() {
+ return (
+
+ {/* Header */}
+
+
+ TV Services
+
+
+ Providing a variety of options for our customers such as Satellite TV, Cable TV and
+ Optical Fiber TV.
+
+
+
+ {/* Intro */}
+
+
Service Lineup
+
+ 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.
+
+ Is Assist Solutions directly providing the TV service?
+
+
+ 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.
+
+
+
+
+
+ Would I be able to choose any cable TV service that Assist Solutions is partnered
+ with?
+
+
+ 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.
+
+
+ Your residence card has been submitted. We'll verify it before activating SIM
+ service.
+
+ {(verificationQuery.data?.filename || verificationQuery.data?.submittedAt) && (
+