- Switch font from Geist to Google Quicksand - Replace indigo/violet primary with charcoal gray (rgb 31,32,29) - Update gradient-mesh to warm neutral tones (amber/sage) - Remove sidebar, add fixed top header bar with profile dropdown - Merge dashboard and upload pages into single table-centric view - Stat cards now act as clickable table filters with active highlight - Simplified filter toolbar: search + dropdowns left, export + upload right - Upload modal with drag-drop, per-file XHR progress, background uploads - Global drag-and-drop listener opens upload modal from anywhere - Table rows are clickable (navigate to detail page) - Right-click column headers for visibility context menu - Mobile-responsive card layout below md breakpoint - Uploading row placeholders with animated progress bars - Floating selection toolbar slides in at bottom on multi-select - Delete sidebar, dashboard-hero, quick-actions, upload page Made-with: Cursor
27 lines
852 B
TypeScript
27 lines
852 B
TypeScript
import { Suspense } from "react";
|
|
import { DashboardContent } from "@/components/cards/dashboard-content";
|
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
|
|
export default function DashboardPage() {
|
|
return (
|
|
<Suspense
|
|
fallback={
|
|
<div className="space-y-6">
|
|
<div>
|
|
<Skeleton className="h-8 w-48 rounded-lg" />
|
|
<Skeleton className="mt-2 h-4 w-64 rounded-lg" />
|
|
</div>
|
|
<div className="grid grid-cols-2 gap-3 lg:grid-cols-4">
|
|
{Array.from({ length: 4 }).map((_, i) => (
|
|
<Skeleton key={i} className="h-28 rounded-2xl" />
|
|
))}
|
|
</div>
|
|
<Skeleton className="h-10 w-full rounded-xl" />
|
|
<Skeleton className="h-[400px] w-full rounded-2xl" />
|
|
</div>
|
|
}
|
|
>
|
|
<DashboardContent />
|
|
</Suspense>
|
|
);
|
|
}
|