feat(dashboard): add grounded company-wide Financial Overview cards + drill-down to admin dashboard
This commit is contained in:
@@ -9,6 +9,8 @@ import {
|
|||||||
import { SpotlightCard } from '../components/SpotlightCard';
|
import { SpotlightCard } from '../components/SpotlightCard';
|
||||||
import { config } from '../config/env';
|
import { config } from '../config/env';
|
||||||
import { pipelineValue, pipelineFunnel, winRate, revenueSummary, stormAttribution } from '../data/selectors';
|
import { pipelineValue, pipelineFunnel, winRate, revenueSummary, stormAttribution } from '../data/selectors';
|
||||||
|
import FinancialKPICards from '../components/owner/FinancialKPICards';
|
||||||
|
import FinancialDetailsModal from '../components/owner/FinancialDetailsModal';
|
||||||
|
|
||||||
// New Widget Imports
|
// New Widget Imports
|
||||||
import { RoofConditionChart } from '../components/dashboard/RoofConditionChart';
|
import { RoofConditionChart } from '../components/dashboard/RoofConditionChart';
|
||||||
@@ -25,6 +27,7 @@ const Dashboard = () => {
|
|||||||
const { properties, meetings, projects, kanbanLeads, resolvePerson } = useMockStore();
|
const { properties, meetings, projects, kanbanLeads, resolvePerson } = useMockStore();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const [isLoading, setIsLoading] = useState(true);
|
const [isLoading, setIsLoading] = useState(true);
|
||||||
|
const [financialModal, setFinancialModal] = useState(null);
|
||||||
|
|
||||||
// Company-wide analytics (admin sees ALL projects + ALL kanbanLeads — no owner scoping)
|
// Company-wide analytics (admin sees ALL projects + ALL kanbanLeads — no owner scoping)
|
||||||
const analytics = useMemo(() => ({
|
const analytics = useMemo(() => ({
|
||||||
@@ -208,6 +211,10 @@ const Dashboard = () => {
|
|||||||
<span className="text-[10px] uppercase font-bold tracking-wider text-zinc-500 dark:text-zinc-400 bg-zinc-100 dark:bg-white/5 px-2.5 py-1 rounded-full border border-zinc-200 dark:border-white/10">Admin View</span>
|
<span className="text-[10px] uppercase font-bold tracking-wider text-zinc-500 dark:text-zinc-400 bg-zinc-100 dark:bg-white/5 px-2.5 py-1 rounded-full border border-zinc-200 dark:border-white/10">Admin View</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Financial Overview — grounded company-wide cards, click to drill into the real records */}
|
||||||
|
<FinancialKPICards onCardClick={(id) => setFinancialModal(id)} />
|
||||||
|
<FinancialDetailsModal isOpen={!!financialModal} onClose={() => setFinancialModal(null)} type={financialModal} />
|
||||||
|
|
||||||
{/* Row 1: Pipeline + Win Rate + Storm */}
|
{/* Row 1: Pipeline + Win Rate + Storm */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user