import { Show, type Component } from 'solid-js'; import { Info, Plus } from 'lucide-solid'; interface ExecutiveSummaryProps { totals: { subtotal: number; markup: number; contingency: number; fees: number; modifiersTotal: number; grandTotal: number; }; onFinalizeBid: () => void; } export const ExecutiveSummary: Component = (props) => { const formatNumber = (num: number) => { return num.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); }; return (
Executive Summary
Project Subtotal
${formatNumber(props.totals.subtotal)}
Total Markup
${formatNumber(props.totals.markup)}
Contingency
${formatNumber(props.totals.contingency)}
Applied Modifiers
${formatNumber(props.totals.modifiersTotal)}
Fees & Logistics
${formatNumber(props.totals.fees)}

Comprehensive project total including all active scopes, sub-scopes, and unassigned takeoff items. Pricing is calculated dynamically based on current material/labor allocations.

Total Estimate Value
$ {formatNumber(props.totals.grandTotal)}
); };