diff --git a/src/pages/invision/Invision.tsx b/src/pages/invision/Invision.tsx index e7abd02..acdb8b9 100644 --- a/src/pages/invision/Invision.tsx +++ b/src/pages/invision/Invision.tsx @@ -80,6 +80,7 @@ const Invision: React.FC = () => { const secondaryGovernanceMetrics = ( invision?.governanceState.metrics ?? [] ).slice(3); + const decentralization = invision?.decentralization ?? null; const stability = invision?.stability ?? null; const stabilityToneClass = (tone: "positive" | "watch" | "critical") => { if (tone === "critical") return "text-destructive"; @@ -151,6 +152,65 @@ const Invision: React.FC = () => { ) : null} + {decentralization ? ( + + + Decentralization engine + + + + + Band + + {decentralization.band} + + + + Confidence + + {decentralization.confidence}% ยท{" "} + {decentralization.confidenceBand} + + + + Window + + {decentralization.windowLabel} + + + + + + {decentralization.components.map((component) => ( + + {component.label} + + {component.score}% + + {component.detail} + + ))} + + + {decentralization.capsApplied.length > 0 ? ( + + Active caps + + {decentralization.capsApplied.map((cap) => ( + {cap} + ))} + + + ) : null} + + + ) : null} + {stability ? ( diff --git a/src/types/api.ts b/src/types/api.ts index f007087..ef2a334 100644 --- a/src/types/api.ts +++ b/src/types/api.ts @@ -286,6 +286,17 @@ export type InvisionStabilityDto = { capsApplied: string[]; components: InvisionStabilityComponentDto[]; }; +export type InvisionDecentralizationComponentDto = + InvisionStabilityComponentDto; +export type InvisionDecentralizationDto = { + score: number; + band: "Broad" | "Mixed" | "Concentrated"; + confidence: number; + confidenceBand: "Low" | "Medium" | "High"; + windowLabel: string; + capsApplied: string[]; + components: InvisionDecentralizationComponentDto[]; +}; export type InvisionEconomicIndicatorDto = { label: string; value: string; @@ -303,6 +314,7 @@ export type InvisionChamberProposalDto = { }; export type GetInvisionResponse = { governanceState: InvisionGovernanceStateDto; + decentralization: InvisionDecentralizationDto; stability: InvisionStabilityDto; economicIndicators: InvisionEconomicIndicatorDto[]; riskSignals: InvisionRiskSignalDto[];
+ {decentralization.band} +
+ {decentralization.confidence}% ยท{" "} + {decentralization.confidenceBand} +
+ {decentralization.windowLabel} +
+ {component.score}% +
{component.detail}
{cap}