Rehyor's picture
🧠 Prompt: “Develop the Nexus UI (Pilot)”
60f1b69 verified
raw
history blame
14.9 kB
<!DOCTYPE html>
<html lang="en" class="h-full bg-gray-50">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nexus Vision | Data Ingestion Dashboard</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: {
500: '#6366f1',
600: '#4f46e5',
},
secondary: {
500: '#ec4899',
600: '#db2777',
}
}
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
body {
font-family: 'Inter', sans-serif;
}
.vanta-bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 350px;
z-index: 0;
}
.dashboard-grid {
display: grid;
grid-template-columns: 240px 1fr;
grid-template-rows: 60px 1fr;
min-height: 100vh;
}
@media (max-width: 768px) {
.dashboard-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body class="h-full">
<!-- Vanta.js background -->
<div id="vanta-bg" class="vanta-bg"></div>
<div class="dashboard-grid">
<!-- Sidebar -->
<aside class="bg-white shadow-lg z-10">
<div class="p-4 border-b border-gray-200">
<div class="flex items-center space-x-2">
<div class="w-8 h-8 rounded-full bg-primary-500 flex items-center justify-center">
<i data-feather="database" class="text-white w-4 h-4"></i>
</div>
<span class="font-semibold text-gray-800">Nexus Vision</span>
</div>
</div>
<nav class="p-4">
<ul class="space-y-2">
<li>
<a href="#" class="flex items-center space-x-3 p-2 rounded-lg bg-primary-50 text-primary-600">
<i data-feather="home" class="w-5 h-5"></i>
<span>Dashboard</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-3 p-2 rounded-lg text-gray-600 hover:bg-gray-100">
<i data-feather="upload" class="w-5 h-5"></i>
<span>Data Ingestion</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-3 p-2 rounded-lg text-gray-600 hover:bg-gray-100">
<i data-feather="list" class="w-5 h-5"></i>
<span>Audit Log</span>
</a>
</li>
<li>
<a href="#" class="flex items-center space-x-3 p-2 rounded-lg text-gray-600 hover:bg-gray-100">
<i data-feather="activity" class="w-5 h-5"></i>
<span>System Health</span>
</a>
</li>
</ul>
</nav>
</aside>
<!-- Main content -->
<main class="z-10">
<!-- Header -->
<header class="bg-white border-b border-gray-200 px-6 py-4 flex items-center justify-between">
<h1 class="text-xl font-semibold text-gray-800">Dashboard Overview</h1>
<div class="flex items-center space-x-4">
<div class="relative">
<i data-feather="search" class="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
<input type="text" placeholder="Search..." class="pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-primary-500 outline-none">
</div>
<button class="p-2 rounded-full bg-gray-100 hover:bg-gray-200">
<i data-feather="bell" class="w-5 h-5 text-gray-600"></i>
</button>
<div class="flex items-center space-x-2">
<div class="w-8 h-8 rounded-full bg-gray-200 flex items-center justify-center">
<i data-feather="user" class="w-4 h-4 text-gray-600"></i>
</div>
<span class="text-sm font-medium text-gray-700">Admin</span>
</div>
</div>
</header>
<!-- Dashboard content -->
<div class="p-6 space-y-6">
<!-- Stats cards -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
<div class="flex items-center justify-between">
<div>
<p class="text-sm font-medium text-gray-500">Total Ingestion Runs</p>
<h3 class="text-2xl font-semibold text-gray-800 mt-1">24</h3>
</div>
<div class="p-3 rounded-lg bg-primary-50">
<i data-feather="database" class="w-6 h-6 text-primary-600"></i>
</div>
</div>
<div class="mt-4 flex items-center text-sm text-gray-500">
<i data-feather="trending-up" class="w-4 h-4 text-green-500"></i>
<span class="ml-1">12% from last month</span>
</div>
</div>
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
<div class="flex items-center justify-between">
<div>
<p class="text-sm font-medium text-gray-500">Successful Runs</p>
<h3 class="text-2xl font-semibold text-gray-800 mt-1">22</h3>
</div>
<div class="p-3 rounded-lg bg-green-50">
<i data-feather="check-circle" class="w-6 h-6 text-green-600"></i>
</div>
</div>
<div class="mt-4 flex items-center text-sm text-gray-500">
<i data-feather="trending-up" class="w-4 h-4 text-green-500"></i>
<span class="ml-1">8% from last month</span>
</div>
</div>
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
<div class="flex items-center justify-between">
<div>
<p class="text-sm font-medium text-gray-500">System Health</p>
<h3 class="text-2xl font-semibold text-gray-800 mt-1">Operational</h3>
</div>
<div class="p-3 rounded-lg bg-green-50">
<i data-feather="activity" class="w-6 h-6 text-green-600"></i>
</div>
</div>
<div class="mt-4 flex items-center text-sm text-gray-500">
<div class="w-2 h-2 rounded-full bg-green-500 mr-2"></div>
<span>All systems normal</span>
</div>
</div>
</div>
<!-- Upload and preview section -->
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
<div class="flex items-center justify-between mb-6">
<h2 class="text-lg font-semibold text-gray-800">CSV Data Ingestion</h2>
<button class="px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 flex items-center space-x-2">
<i data-feather="upload" class="w-4 h-4"></i>
<span>Upload CSV</span>
</button>
</div>
<div class="border-2 border-dashed border-gray-300 rounded-lg p-8 text-center">
<div class="mx-auto w-12 h-12 bg-gray-100 rounded-full flex items-center justify-center mb-4">
<i data-feather="file" class="w-5 h-5 text-gray-500"></i>
</div>
<p class="text-gray-500 mb-2">Drag and drop your CSV file here</p>
<p class="text-sm text-gray-400 mb-4">or</p>
<label for="file-upload" class="cursor-pointer px-4 py-2 border border-gray-300 rounded-lg text-gray-700 hover:bg-gray-50">
Browse Files
</label>
<input id="file-upload" type="file" class="hidden" accept=".csv">
</div>
</div>
<!-- Recent activity section -->
<div class="bg-white rounded-xl shadow-sm p-6 border border-gray-100">
<div class="flex items-center justify-between mb-6">
<h2 class="text-lg font-semibold text-gray-800">Recent Activity</h2>
<button class="text-sm text-primary-600 hover:text-primary-700">View All</button>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Date</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Event Type</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Entity</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Description</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-06-15 14:32</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Success</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">workforce_data.csv</td>
<td class="px-6 py-4 text-sm text-gray-500">CSV file successfully ingested (243 records)</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-06-15 11:45</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Success</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">employee_stats.csv</td>
<td class="px-6 py-4 text-sm text-gray-500">CSV file successfully ingested (187 records)</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-06-14 16:20</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">Error</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">payroll_data.csv</td>
<td class="px-6 py-4 text-sm text-gray-500">Validation error: Missing required column "employee_id"</td>
</tr>
<tr class="hover:bg-gray-50">
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-06-14 09:12</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Success</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">department_budget.csv</td>
<td class="px-6 py-4 text-sm text-gray-500">CSV file successfully ingested (56 records)</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</main>
</div>
<!-- Scripts -->
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
<script>
VANTA.GLOBE({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x6366f1,
backgroundColor: 0xf8fafc,
size: 1.00
});
</script>
<script>
feather.replace();
</script>
</body>
</html>