@@ -127,13 +132,13 @@ export default function ControlPlaneView() {
{t('ControlPlaneView.landscapersTitle')}}
+ header={{t('McpPage.landscapersTitle')}}
noAnimation
>
@@ -142,13 +147,13 @@ export default function ControlPlaneView() {
{t('ControlPlaneView.gitOpsTitle')}}
+ header={{t('McpPage.gitOpsTitle')}}
noAnimation
>
diff --git a/src/spaces/onboarding/pages/ProjectPage.tsx b/src/spaces/onboarding/pages/ProjectPage.tsx
new file mode 100644
index 00000000..aa5288a8
--- /dev/null
+++ b/src/spaces/onboarding/pages/ProjectPage.tsx
@@ -0,0 +1,65 @@
+import { ObjectPage, ObjectPageTitle, Title } from '@ui5/webcomponents-react';
+import ProjectChooser from '../../../components/Projects/ProjectChooser.tsx';
+import { useParams } from 'react-router-dom';
+import ControlPlaneListAllWorkspaces from '../../../components/ControlPlanes/List/ControlPlaneListAllWorkspaces.tsx';
+import IntelligentBreadcrumbs from '../../../components/Core/IntelligentBreadcrumbs.tsx';
+import { ControlPlaneListToolbar } from '../../../components/ControlPlanes/List/ControlPlaneListToolbar.tsx';
+import { Trans, useTranslation } from 'react-i18next';
+import { useApiResource } from '../../../lib/api/useApiResource.ts';
+import { ListWorkspaces } from '../../../lib/api/types/crate/listWorkspaces.ts';
+import Loading from '../../../components/Shared/Loading.tsx';
+import { isNotFoundError } from '../../../lib/api/error.ts';
+import { NotFoundBanner } from '../../../components/Ui/NotFoundBanner/NotFoundBanner.tsx';
+import IllustratedError from '../../../components/Shared/IllustratedError.tsx';
+
+export default function ProjectPage() {
+ const { projectName } = useParams();
+ const { data: workspaces, error, isLoading } = useApiResource(ListWorkspaces(projectName));
+ const { t } = useTranslation();
+
+ if (isLoading) {
+ return ;
+ }
+
+ if (isNotFoundError(error)) {
+ return ;
+ }
+
+ if (error || !workspaces || !projectName) {
+ return ;
+ }
+
+ return (
+ <>
+
+ }} />
+
+ }
+ subHeader={
+
+
{t('ProjectsPage.projectHeader')}
+
+
+ }
+ breadcrumbs={}
+ actionsBar={}
+ />
+ }
+ //TODO: project chooser should be part of the breadcrumb section if possible?
+ >
+
+
+ >
+ );
+}
diff --git a/src/views/ControlPlanes/ControlPlaneListView.tsx b/src/views/ControlPlanes/ControlPlaneListView.tsx
deleted file mode 100644
index 67d92fd3..00000000
--- a/src/views/ControlPlanes/ControlPlaneListView.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import { ObjectPage, ObjectPageTitle, Title } from '@ui5/webcomponents-react';
-import ProjectChooser from '../../components/Projects/ProjectChooser.tsx';
-import { useParams } from 'react-router-dom';
-import ControlPlaneListAllWorkspaces from '../../components/ControlPlanes/List/ControlPlaneListAllWorkspaces.tsx';
-import IntelligentBreadcrumbs from '../../components/Core/IntelligentBreadcrumbs.tsx';
-import { ControlPlaneListToolbar } from '../../components/ControlPlanes/List/ControlPlaneListToolbar.tsx';
-import { Trans, useTranslation } from 'react-i18next';
-
-export default function ControlPlaneListView() {
- const { projectName } = useParams();
- const { t } = useTranslation();
-
- return (
- <>
-
- }} />
-
- }
- subHeader={
-
-
{t('ControlPlaneListView.projectHeader')}
-
-
- }
- breadcrumbs={}
- actionsBar={}
- />
- }
- //TODO: project chooser should be part of the breadcrumb section if possible?
- >
-
-
- >
- );
-}