diff --git a/services/frontend/src/features/dashboard/components/ChannelProfileDetail.tsx b/services/frontend/src/features/dashboard/components/ChannelProfileDetail.tsx
index c14886d..d817103 100644
--- a/services/frontend/src/features/dashboard/components/ChannelProfileDetail.tsx
+++ b/services/frontend/src/features/dashboard/components/ChannelProfileDetail.tsx
@@ -1,16 +1,6 @@
-import { motion } from "framer-motion";
-import { AlertCircle, ArrowLeft, Hash, RefreshCw } from "lucide-react";
+import { Hash } from "lucide-react";
import type { DashboardChannelDetail } from "../../../shared/api/client";
-import { cardItem, cardStagger } from "../../../shared/hooks/useFramerStagger";
-import { cn } from "../../../shared/lib/utils";
-import {
- Badge,
- Card,
- CardContent,
- CardHeader,
- CardTitle,
- Skeleton,
-} from "../../../shared/ui";
+import { ProfileDetail } from "../../../shared/ui";
interface ChannelProfileDetailProps {
detail: DashboardChannelDetail | null;
@@ -27,218 +17,40 @@ export function ChannelProfileDetail({
onBack,
onRefetch,
}: ChannelProfileDetailProps) {
+ if (!detail && !loading && !error) return null;
+
return (
- {error}
- {detail.channel_id}
-
- AI Channel Summary
-
- {detail.culture_summary}
-
- Last analyzed:{" "}
- {new Date(detail.last_analyzed_at).toLocaleString()}
-
- {detail.total_messages.toLocaleString()}
-
- Total Messages
-
- {detail.clean_count.toLocaleString()}
- Clean 0
- ? "text-destructive"
- : "text-muted-foreground",
- )}
- >
- {detail.flagged_count.toLocaleString()}
- Flagged
- No messages found.
-
- {msg.content}
-
- {msg.username ?? "unknown"} ·{" "}
- {new Date(msg.created_at).toLocaleString()}
-
- #{detail.channel_name ?? detail.channel_id}
-
-
{error}
- -No channels found.
-
{stats.moderation_overview.pending}
diff --git a/services/frontend/src/features/dashboard/components/UserProfileDetail.tsx b/services/frontend/src/features/dashboard/components/UserProfileDetail.tsx
index af1e9d5..0058e6c 100644
--- a/services/frontend/src/features/dashboard/components/UserProfileDetail.tsx
+++ b/services/frontend/src/features/dashboard/components/UserProfileDetail.tsx
@@ -1,20 +1,6 @@
-import { motion } from "framer-motion";
-import { AlertCircle, ArrowLeft, RefreshCw, User } from "lucide-react";
+import { User } from "lucide-react";
import type { DashboardUserDetail } from "../../../shared/api/client";
-import {
- cardItem,
- cardStagger,
- fadeSlideUp,
-} from "../../../shared/hooks/useFramerStagger";
-import { cn } from "../../../shared/lib/utils";
-import {
- Badge,
- Card,
- CardContent,
- CardHeader,
- CardTitle,
- Skeleton,
-} from "../../../shared/ui";
+import { ProfileDetail } from "../../../shared/ui";
interface UserProfileDetailProps {
detail: DashboardUserDetail | null;
@@ -31,247 +17,50 @@ export function UserProfileDetail({
onBack,
onRefetch,
}: UserProfileDetailProps) {
+ if (!detail && !loading && !error) return null;
+
+ const icon = detail?.avatar_url ? (
+ {error}
- {detail.user_id}
-
- AI Profile Summary
-
- {detail.profile_summary}
-
- Last analyzed:{" "}
- {new Date(detail.last_analyzed_at).toLocaleString()}
-
- {detail.total_messages.toLocaleString()}
-
- Total Messages
-
- {detail.clean_count.toLocaleString()}
- Clean 0
- ? "text-destructive"
- : "text-muted-foreground",
- )}
- >
- {detail.flagged_count.toLocaleString()}
- Flagged
- No messages found.
-
- {msg.content}
-
- #{msg.channel_id} ·{" "}
- {new Date(msg.created_at).toLocaleString()}
-
+ ) : (
+
- ) : (
-
- {detail.username ?? detail.user_id}
-
-
{error}
- -No users found.
-