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[];