Latest: Phase 2 Complete - Advanced analysis features and scenario management
See detailed changes:
- Phase 2 Changes - Pool Target, Exit Waterfall, Timeline, Scenarios
- Phase 1 Changes - Accessibility, UI enhancements, Scenario Summary
Completed Phase 1 accessibility and UI enhancements for the Cap Table Simulator. All features are now implemented and integrated.
File: components/ScenarioSummary.tsx
A new dashboard component that displays:
- Partner Equity Breakdown: Shows investment equity vs. vested grant equity separately
- Potential Upside (Path B only): Displays additional equity available through milestone completion
- Cap Table Overview: At-a-glance view of founder equity, partner vested equity, and option pool
- Pool Health Indicator: Visual warning if option pool drops below 8% minimum
- Path-Specific Insight: Contextual message explaining the current deal structure
Key Features:
- Uses
useIdReact hook for accessible tooltip integration (React 19) - Inline tooltips with
aria-describedbyfor accessibility - Color-coded values (green for founders, indigo for partner, red for warnings)
- Responsive layout adapting to card-based design
File: components/FounderSetup.tsx
Added three founder-specific guardrail warnings:
| Warning | Condition | Risk Level |
|---|---|---|
| Founder Concentration Risk | Single founder > 70% | High decision-making power concentration |
| Total Founder Equity Too High | Total > 92% | Leaves insufficient room for option pool & partners |
| Founder Disparity | Max-Min gap > 30% | Potential fairness/incentive alignment issues |
Visual Implementation:
- Yellow warning boxes with clear risk descriptions
- Only shows when conditions are met
- Suggests remediation steps (e.g., "Ensure vesting reflects contribution")
File: components/JaviersCapitalInfusion.tsx
New Features:
- Numeric Input Fields: Text inputs synchronized with sliders for precise value entry
- Currency Parser:
parseCurrencyInput()function supports:- Standard format:
$50000,50000 - Short format:
50k,$50k,50M,$50M - Automatic K/M suffix parsing
- Input validation and range clamping
- Standard format:
Risk Guardrail:
- Warns when purchased equity > 15% (early partnership concern)
- Yellow warning box appears below "Equity Purchased" metric
Accessibility:
aria-labelattributes on all numeric inputs- Clear labeling for investment type selector
- Tooltips explain each valuation type
File: components/Tooltip.tsx
Enhancements:
- Uses React 19's
useId()hook for unique tooltip IDs - Implements
aria-describedbylinking tooltip to trigger element - Proper
role="tooltip"on tooltip content - Keyboard-accessible via
tabIndex={0}andonFocus/onBlurhandlers - Maintains focus outline for screen reader users
File: App.tsx
Changes:
- Added
ScenarioSummarycomponent import - Extended memoized calculations return object with:
investmentEquity: Equity purchased from cash investmentvestedGrantEquity: Equity earned from time-based or performance-based grantstotalFounderEquity: Sum of all diluted founder equity percentages
- Updated destructuring to expose these values
- Integrated ScenarioSummary into right column (between ComparisonPanel and ExitCalculator)
Layout: Right column now displays:
- ComparisonPanel
- ScenarioSummary (NEW)
- ExitCalculator
- Warnings
All changes maintain full TypeScript compliance with no errors or warnings.
- ScenarioSummary calculations are lightweight and pass memoized values
- No additional memoization needed; uses App.tsx memoized calculations
- Tooltip
useId()adds minimal runtime overhead
- ✅ Tooltips now have proper ARIA labels and descriptions
- ✅ Founder warnings convey risk level with color + text
- ✅ Numeric inputs have aria-labels and clear purposes
- ✅ Keyboard navigation supported throughout
App.tsx (memoized calculations)
├── investmentEquity ──→ ScenarioSummary
├── vestedGrantEquity ──→ ScenarioSummary
├── totalFounderEquity ──→ ScenarioSummary
├── partnerTotalPotentialEquity ──→ ScenarioSummary
├── unallocatedPool ──→ ScenarioSummary
└── selectedPath ──→ ScenarioSummary
JaviersCapitalInfusion
├── parseCurrencyInput() [NEW]
├── Risk warning (purchased equity > 15%)
└── Numeric inputs with aria-labels
FounderSetup
├── Concentration risk warning (> 70%)
├── Total equity warning (> 92%)
└── Disparity warning (> 30%)
Tooltip (shared)
├── useId() for unique IDs
└── aria-describedby linking
- No TypeScript errors
- All components render without warnings
- ScenarioSummary displays correct equity breakdown
- Founder warnings appear under correct conditions
- Numeric inputs parse K/M suffixes correctly
- Tooltips have proper ARIA attributes
- Layout is responsive across breakpoints
- Path switching updates ScenarioSummary correctly
- Pool Target Input: Allow users to set desired option pool % and get recommendations
- Exit Waterfall: Detailed breakdown of who gets paid what in various exit scenarios
- Milestone Timeline: Visual timeline showing when vesting cliffs occur
- Historical Comparison: Save and compare multiple scenarios side-by-side
- Print/Export: Generate PDF reports of the current scenario
- Mobile Optimization: Full mobile-first responsive design
| File | Status | Changes |
|---|---|---|
App.tsx |
Modified | Added ScenarioSummary import, calculations export, integration |
components/ScenarioSummary.tsx |
New | Full component implementation |
components/FounderSetup.tsx |
Modified | Added 3 guardrail warnings |
components/JaviersCapitalInfusion.tsx |
Modified | Added numeric inputs, currency parser, risk warning |
components/Tooltip.tsx |
Modified | Added useId, aria-describedby accessibility |
✅ All Phase 1 features completed and integrated
- Scenario Summary component provides at-a-glance deal overview
- Founder guardrails help identify concentration and fairness issues
- Investment controls enhanced with numeric inputs and currency parsing
- Accessibility significantly improved with ARIA labels and proper semantics
- No breaking changes; all existing functionality preserved
- Code quality: Zero TypeScript errors, clean integration
Next session can proceed to Phase 2 features without blockers.