File size: 1,582 Bytes
2c6638a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import React from "react";
import { Card, CardContent } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { motion } from "framer-motion";
export default function Dashboard() {
return (
<div className="p-6 grid grid-cols-1 md:grid-cols-2 gap-6">
<motion.h1
initial={{ opacity: 0, y: -20 }}
animate={{ opacity: 1, y: 0 }}
className="text-3xl font-bold col-span-full"
>
Integral Infrastructure Dashboard
</motion.h1>
<Card className="rounded-2xl shadow-md">
<CardContent className="p-4">
<h2 className="text-xl font-semibold mb-2">Infrastructure Status</h2>
<p>Live road condition, pothole detection, and alerts.</p>
</CardContent>
</Card>
<Card className="rounded-2xl shadow-md">
<CardContent className="p-4">
<h2 className="text-xl font-semibold mb-2">AI Verification</h2>
<p>Model outputs for pothole validation and cost optimization.</p>
</CardContent>
</Card>
<Card className="rounded-2xl shadow-md">
<CardContent className="p-4">
<h2 className="text-xl font-semibold mb-2">Event Stream</h2>
<p>Live subscriptions showing infrastructureFaults and updates.</p>
</CardContent>
</Card>
<Card className="rounded-2xl shadow-md">
<CardContent className="p-4">
<h2 className="text-xl font-semibold mb-2">Trigger Action</h2>
<Button>Simulate Repair</Button>
</CardContent>
</Card>
</div>
);
}
|