feat: implement reports page with analytical charts and data grids, and add payment status tracking to submissions.

This commit is contained in:
Firman Ramdhani
2026-08-28 14:14:58 +07:00
parent 5faea68379
commit 3e68d12ce4
20 changed files with 6381 additions and 34 deletions
+13 -6
View File
@@ -2,7 +2,7 @@
import { useEffect, useState } from 'react'
import { usePathname } from 'next/navigation'
import { Menu, Calendar, Store, ClipboardList, Package, User, FileText } from 'lucide-react'
import { Menu, Calendar, Store, ClipboardList, Package, User, FileText, BarChart2 } from 'lucide-react'
import { buttonVariants } from '@/components/ui/button'
import { cn } from '@/lib/utils'
import Link from 'next/link'
@@ -47,6 +47,13 @@ export function Header({ onMenuClick }: { onMenuClick: () => void }) {
badge: 'Akun',
Icon: User
}
case '/reports':
return {
title: 'Laporan Keuangan',
subtitle: 'Pantau omzet, pengeluaran, dan hutang piutang Anda.',
badge: 'Laporan',
Icon: BarChart2
}
default:
if (pathname.startsWith('/my-orders/')) {
return {
@@ -57,9 +64,9 @@ export function Header({ onMenuClick }: { onMenuClick: () => void }) {
}
}
return {
title: 'TitipIn Dashboard',
title: 'TitipIn',
subtitle: 'Sistem Titip Pesanan Bersama',
badge: 'Dashboard',
badge: 'App',
Icon: Store
}
}
@@ -102,9 +109,9 @@ export function Header({ onMenuClick }: { onMenuClick: () => void }) {
{/* Right: Date info & Quick Action */}
<div className="flex items-center gap-3">
{todayStr && (
<div className="hidden md:flex items-center gap-2 px-3 py-1.5 rounded-xl bg-slate-100/70 dark:bg-slate-800/60 border border-slate-200/60 dark:border-slate-800 text-xs font-medium text-slate-600 dark:text-slate-300 animate-in fade-in">
<Calendar className="w-3.5 h-3.5 text-[#1B2CC1]" />
<span>{todayStr}</span>
<div className="flex items-center gap-2 px-3 py-1.5 rounded-xl bg-slate-100/70 dark:bg-slate-800/60 border border-slate-200/60 dark:border-slate-800 text-[10px] sm:text-xs font-medium text-slate-600 dark:text-slate-300 animate-in fade-in font-bold">
<Calendar className="w-3.5 h-3.5 text-[#1B2CC1] shrink-0" />
<span className='font-bold whitespace-nowrap'>{todayStr}</span>
</div>
)}
</div>