diff --git a/apps/compliance-portal/package.json b/apps/compliance-portal/package.json index 061d8dd74..38c55881b 100644 --- a/apps/compliance-portal/package.json +++ b/apps/compliance-portal/package.json @@ -10,6 +10,8 @@ "preview": "vite preview" }, "dependencies": { + "@probo/react-lazy": "1.0.0", + "@probo/routes": "1.0.0", "@probo/ui": "1.0.0", "clsx": "^2.1.1", "react": "^19.2.7", diff --git a/apps/compliance-portal/src/App.tsx b/apps/compliance-portal/src/App.tsx index 6670c687e..c63f49ac8 100644 --- a/apps/compliance-portal/src/App.tsx +++ b/apps/compliance-portal/src/App.tsx @@ -12,10 +12,10 @@ // OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR // PERFORMANCE OF THIS SOFTWARE. +import { RouterProvider } from "react-router"; + +import { router } from "#/routes"; + export function App() { - return ( -
-

Compliance Portal

-
- ); + return ; } diff --git a/apps/compliance-portal/src/components/skeletons/PageSkeleton.tsx b/apps/compliance-portal/src/components/skeletons/PageSkeleton.tsx new file mode 100644 index 000000000..32c0f55ca --- /dev/null +++ b/apps/compliance-portal/src/components/skeletons/PageSkeleton.tsx @@ -0,0 +1,21 @@ +// Copyright (c) 2026 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +export function PageSkeleton() { + return ( +
+
+
+ ); +} diff --git a/apps/compliance-portal/src/pages/HomePage.tsx b/apps/compliance-portal/src/pages/HomePage.tsx new file mode 100644 index 000000000..2c8b3f407 --- /dev/null +++ b/apps/compliance-portal/src/pages/HomePage.tsx @@ -0,0 +1,21 @@ +// Copyright (c) 2026 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +export default function HomePage() { + return ( +
+

Compliance Portal

+
+ ); +} diff --git a/apps/compliance-portal/src/pages/MainLayout.tsx b/apps/compliance-portal/src/pages/MainLayout.tsx new file mode 100644 index 000000000..2111cf97c --- /dev/null +++ b/apps/compliance-portal/src/pages/MainLayout.tsx @@ -0,0 +1,23 @@ +// Copyright (c) 2026 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +import { Outlet } from "react-router"; + +export default function MainLayout() { + return ( +
+ +
+ ); +} diff --git a/apps/compliance-portal/src/routes.tsx b/apps/compliance-portal/src/routes.tsx new file mode 100644 index 000000000..216df1a77 --- /dev/null +++ b/apps/compliance-portal/src/routes.tsx @@ -0,0 +1,35 @@ +// Copyright (c) 2026 Probo Inc . +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +// PERFORMANCE OF THIS SOFTWARE. + +import { lazy } from "@probo/react-lazy"; +import { type AppRoute, routeFromAppRoute } from "@probo/routes"; +import { createBrowserRouter } from "react-router"; + +import { PageSkeleton } from "#/components/skeletons/PageSkeleton"; + +const routes = [ + { + path: "/", + Fallback: PageSkeleton, + Component: lazy(() => import("#/pages/MainLayout")), + children: [ + { + index: true, + Component: lazy(() => import("#/pages/HomePage")), + }, + ], + }, +] satisfies AppRoute[]; + +export const router = createBrowserRouter(routes.map(routeFromAppRoute)); diff --git a/package-lock.json b/package-lock.json index 1f05d8463..ea6ce28a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,8 @@ "name": "@probo/compliance-portal", "version": "0.0.0", "dependencies": { + "@probo/react-lazy": "1.0.0", + "@probo/routes": "1.0.0", "@probo/ui": "1.0.0", "clsx": "^2.1.1", "react": "^19.2.7",