echos-ocr/src/app/page.tsx
Randall Stillwell 7ff9724a63 Unified dashboard redesign: Quicksand font, charcoal theme, merged upload
- 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
2026-03-11 15:26:56 -05:00

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>
);
}