diff --git a/frontend/app/(sidebar)/data-pipeline/page.tsx b/frontend/app/(sidebar)/data-pipeline/page.tsx
index 2acdf94..44d3a88 100644
--- a/frontend/app/(sidebar)/data-pipeline/page.tsx
+++ b/frontend/app/(sidebar)/data-pipeline/page.tsx
@@ -1,10 +1,9 @@
-import { Button } from "@/components/ui/button"
-import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"
-import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
-import { Badge } from "@/components/ui/badge"
-import { Clock, Database, Play, Plus, RefreshCw, Pause, AlertTriangle, Copy } from "lucide-react"
-import Link from "next/link"
-import PageHeader from "@/components/page-header"
+import { Button } from "@/components/ui/button";
+import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
+import { Plus } from "lucide-react";
+import Link from "next/link";
+import PageHeader from "@/components/page-header";
+import { PipelineCard } from "@/components/pipeline/card";
export default function DataPipelinePage() {
return (
@@ -135,108 +134,5 @@ export default function DataPipelinePage() {
- )
+ );
}
-
-interface PipelineCardProps {
- title: string
- description: string
- status: "active" | "paused" | "error"
- lastRun: string
- nextRun: string
- sources: number
- records: number
- error?: string
- aiPowered?: boolean
-}
-
-function PipelineCard({
- title,
- description,
- status,
- lastRun,
- nextRun,
- sources,
- records,
- error,
- aiPowered,
-}: PipelineCardProps) {
- return (
-
-
-
- {title}
-
-
- {description}
-
-
-
-
-
- Last run:
- {lastRun}
-
-
-
- Next run:
- {nextRun}
-
-
-
- Sources:
- {sources}
- •
- Records:
- {records}
-
- {error && (
-
- )}
-
-
-
-
-
-
-
-
- {status === "active" ? (
-
- ) : (
-
- )}
-
-
-
-
- )
-}
-
-function StatusBadge({ status }: { status: "active" | "paused" | "error" }) {
- if (status === "active") {
- return (
-
- Active
-
- )
- } else if (status === "paused") {
- return Paused
- } else {
- return Error
- }
-}
-
diff --git a/frontend/app/(sidebar)/maps/page.tsx b/frontend/app/(sidebar)/maps/page.tsx
index a1f6c89..65630b2 100644
--- a/frontend/app/(sidebar)/maps/page.tsx
+++ b/frontend/app/(sidebar)/maps/page.tsx
@@ -83,7 +83,7 @@ export default function MapsPage() {
return (
{/* Map Container */}
-
+
{/* Map Placeholder - In a real implementation, this would be a map component */}
Map View
diff --git a/frontend/components/pipeline/badge.tsx b/frontend/components/pipeline/badge.tsx
new file mode 100644
index 0000000..afc435d
--- /dev/null
+++ b/frontend/components/pipeline/badge.tsx
@@ -0,0 +1,18 @@
+import { Badge } from "@/components/ui/badge";
+
+export function StatusBadge({ status }: { status: "active" | "paused" | "error" }) {
+ if (status === "active") {
+ return (
+
+ Active
+
+ );
+ } else if (status === "paused") {
+ return
Paused;
+ } else {
+ return
Error;
+ }
+}
diff --git a/frontend/components/pipeline/card.tsx b/frontend/components/pipeline/card.tsx
new file mode 100644
index 0000000..8302bf9
--- /dev/null
+++ b/frontend/components/pipeline/card.tsx
@@ -0,0 +1,132 @@
+import {
+ Clock,
+ Database,
+ Play,
+ RefreshCw,
+ Pause,
+ AlertTriangle,
+ Copy,
+} from "lucide-react";
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "@/components/ui/card";
+import { StatusBadge } from "./badge";
+import Link from "next/link";
+import { Button } from "@/components/ui/button";
+
+
+interface PipelineCardProps {
+ title: string;
+ description: string;
+ status: "active" | "paused" | "error";
+ lastRun: string;
+ nextRun: string;
+ sources: number;
+ records: number;
+ error?: string;
+ aiPowered?: boolean;
+}
+
+export function PipelineCard({
+ title,
+ description,
+ status,
+ lastRun,
+ nextRun,
+ sources,
+ records,
+ error,
+}: PipelineCardProps) {
+ return (
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+
+
+ Last run:
+ {lastRun}
+
+
+
+ Next run:
+ {nextRun}
+
+
+
+ Sources:
+ {sources}
+ •
+ Records:
+ {records}
+
+ {error && (
+
+ )}
+
+
+
+
+
+
+
+
+ {status === "active" ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ );
+}