diff --git a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/domains/page.tsx b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/domains/page.tsx
index b724f99..50f100a 100644
--- a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/domains/page.tsx
+++ b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/domains/page.tsx
@@ -45,7 +45,7 @@ export default function DomainsPage() {
>
diff --git a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/logs/page.tsx b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/logs/page.tsx
index fd89ab4..ac49382 100644
--- a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/logs/page.tsx
+++ b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/logs/page.tsx
@@ -82,7 +82,7 @@ export default function LogsPage() {
}}
>
diff --git a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/plan/page.tsx b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/plan/page.tsx
index 9e8ee86..f1a0320 100644
--- a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/plan/page.tsx
+++ b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/plan/page.tsx
@@ -108,7 +108,7 @@ export default function PlanTab() {
>
diff --git a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/services/page.tsx b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/services/page.tsx
index e67e2c2..0de97f9 100644
--- a/vibn-frontend/app/[workspace]/project/[projectId]/(home)/services/page.tsx
+++ b/vibn-frontend/app/[workspace]/project/[projectId]/(home)/services/page.tsx
@@ -17,6 +17,13 @@ import {
Server,
} from "lucide-react";
import { useAnatomy, type Anatomy } from "@/components/project/use-anatomy";
+import {
+ THEME,
+ PageHeader,
+ Card,
+ SectionHeader,
+ EmptyState,
+} from "@/components/project/dashboard-ui";
/**
* Hosting tab — user-facing: "Is my thing live? How do I reach it?"
@@ -51,67 +58,96 @@ export default function ServicesPage() {
const showLoading = loading && !anatomy;
return (
-
- {showLoading && (
-
-
-
- Loading…
-
-
- )}
- {error && !showLoading && (
-
- )}
+
+
+
- {anatomy && (
- <>
- {/* ── Live endpoints ── */}
-
-
- {anatomy.hosting.live.length === 0 ? (
- }
- title="Nothing deployed yet"
- hint="Ask the AI to deploy your app and it will appear here."
- promptSuggestion="Deploy my app to production"
- />
- ) : (
-
- {anatomy.hosting.live.map((item) => (
-
- ))}
-
- )}
-
+ {showLoading && (
+
+
+ Loading…
+
+
+ )}
+ {error && !showLoading && (
+
+
+
+ )}
- {/* ── Previews ── */}
- {anatomy.hosting.previews.length > 0 && (
-
-
-
- {anatomy.hosting.previews.map((p) => (
-
- ))}
-
+ {anatomy && (
+ <>
+ {/* ── Live endpoints ── */}
+
+
+ {anatomy.hosting.live.length === 0 ? (
+ }
+ title="Nothing deployed yet"
+ hint="Ask the AI to deploy your app and it will appear here."
+ />
+ ) : (
+
+ {anatomy.hosting.live.map((item) => (
+
+ ))}
+
+ )}
- )}
- >
- )}
+
+ {/* ── Previews ── */}
+ {anatomy.hosting.previews.length > 0 && (
+
+
+
+ {anatomy.hosting.previews.map((p) => (
+
+ ))}
+
+
+ )}
+ >
+ )}
+
);
}