diff --git a/apps/mesh/public/empty-state-error.svg b/apps/mesh/public/empty-state-error.svg
new file mode 100644
index 0000000000..0bd63f8695
--- /dev/null
+++ b/apps/mesh/public/empty-state-error.svg
@@ -0,0 +1,19 @@
+
diff --git a/apps/mesh/public/empty-state-logs.svg b/apps/mesh/public/empty-state-logs.svg
new file mode 100644
index 0000000000..5881981308
--- /dev/null
+++ b/apps/mesh/public/empty-state-logs.svg
@@ -0,0 +1,80 @@
+
diff --git a/apps/mesh/public/empty-state-success-muted.svg b/apps/mesh/public/empty-state-success-muted.svg
new file mode 100644
index 0000000000..2e7596d56c
--- /dev/null
+++ b/apps/mesh/public/empty-state-success-muted.svg
@@ -0,0 +1,19 @@
+
diff --git a/apps/mesh/public/empty-state-success.svg b/apps/mesh/public/empty-state-success.svg
new file mode 100644
index 0000000000..c7b9e06f0c
--- /dev/null
+++ b/apps/mesh/public/empty-state-success.svg
@@ -0,0 +1,19 @@
+
diff --git a/apps/mesh/src/web/components/details/connection/settings-tab/index.tsx b/apps/mesh/src/web/components/details/connection/settings-tab/index.tsx
index 27344eb015..cca10aa6ad 100644
--- a/apps/mesh/src/web/components/details/connection/settings-tab/index.tsx
+++ b/apps/mesh/src/web/components/details/connection/settings-tab/index.tsx
@@ -398,6 +398,15 @@ function SettingsRightPanel({
return (
+ }
title="This server is all set!"
description="No additional configuration is needed. Everything is ready to go."
/>
diff --git a/apps/mesh/src/web/routes/oauth-callback.tsx b/apps/mesh/src/web/routes/oauth-callback.tsx
index 0696eb86cc..494c1e6d1e 100644
--- a/apps/mesh/src/web/routes/oauth-callback.tsx
+++ b/apps/mesh/src/web/routes/oauth-callback.tsx
@@ -1,11 +1,5 @@
import { useEffect, useState } from "react";
-import {
- Card,
- CardContent,
- CardHeader,
- CardTitle,
-} from "@deco/ui/components/card.tsx";
-import { CheckCircle, AlertCircle, Loading01 } from "@untitledui/icons";
+import { Loading01 } from "@untitledui/icons";
import { handleOAuthCallback } from "@/web/lib/mcp-oauth";
export default function OAuthCallback() {
@@ -46,51 +40,68 @@ export default function OAuthCallback() {
}, []);
return (
-
-
-
-
+
+
+ {/* Image */}
+ {success && (
+

+ )}
+
+ {/* Loading spinner */}
+ {!success && !error && (
+
+
+
+ )}
+
+ {/* Error image */}
+ {error && (
+

+ )}
+
+ {/* Text content */}
+
+
+ {error
+ ? "Authentication Failed"
+ : success
+ ? "Authentication Successful"
+ : "Authentication in progress..."}
+
+
{error ? (
<>
-
- Authentication Failed
+
An error occurred during authentication:
+
{error}
+
+
+ This window will close automatically.
+
>
) : success ? (
- <>
-
- Authentication Successful
- >
+
+ Authentication complete.
+
+ This window will close automatically.
+
) : (
- <>
-
- Authentication in progress...
- >
+
Processing authentication...
)}
-
-
-
- {error ? (
-
-
An error occurred during authentication:
-
{error}
-
This window will close automatically.
-
- ) : success ? (
-
- Authentication complete. This window will close automatically.
-
- ) : (
- <>
-
-
-
-
- Processing authentication...
-
- >
- )}
-
-
+
+
+
);
}
diff --git a/apps/mesh/src/web/routes/orgs/monitoring.tsx b/apps/mesh/src/web/routes/orgs/monitoring.tsx
index f11ccecf24..dc27ad55e1 100644
--- a/apps/mesh/src/web/routes/orgs/monitoring.tsx
+++ b/apps/mesh/src/web/routes/orgs/monitoring.tsx
@@ -348,6 +348,15 @@ function MonitoringLogsTableContent({
return (
+ }
title="No logs found"
description={
searchQuery ||