Skip to content

Commit 2814fbf

Browse files
refactor(ui): proposal cards and mock-driven meta
Make proposal list cards stage-aware: pool quorum math, chamber vote snapshot, formation execution metrics Remove collapsed “summary pill” tags and the secondary “Watch” CTA Drop meta subheaders (chamber/tier) and render them as compact badges next to the stage chip Centralize people usage across mocks (human nodes/profiles, courts, factions) and remove legacy hardcoded names Update ExpandableCard to support optional meta cleanly
1 parent 0aed6a1 commit 2814fbf

15 files changed

Lines changed: 1502 additions & 704 deletions

File tree

src/components/ExpandableCard.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { cn } from "@/lib/utils";
99
type ExpandableCardProps = {
1010
expanded: boolean;
1111
onToggle: () => void;
12-
meta: ReactNode;
12+
meta?: ReactNode;
1313
title: ReactNode;
1414
right: ReactNode;
1515
children: ReactNode;
@@ -35,8 +35,8 @@ export function ExpandableCard({
3535
aria-expanded={expanded}
3636
onClick={onToggle}
3737
>
38-
<div className="space-y-1">
39-
<Kicker>{meta}</Kicker>
38+
<div className={cn(meta ? "space-y-1" : undefined)}>
39+
{meta ? <Kicker>{meta}</Kicker> : null}
4040
<p className="text-lg font-semibold text-text">{title}</p>
4141
</div>
4242
<div className="flex flex-col gap-2 text-right sm:flex-row sm:items-center sm:gap-3">

src/data/mock/chamberDetail.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ export const chamberProposals: ChamberProposal[] = [
6464
];
6565

6666
export const chamberGovernors: Governor[] = [
67-
{ id: "johndoe", name: "JohnDoe", tier: "Legate", focus: "Protocol" },
68-
{ id: "victor", name: "Victor", tier: "Consul", focus: "Economics" },
67+
{ id: "shahmeer", name: "Shahmeer", tier: "Citizen", focus: "Protocol" },
68+
{ id: "dato", name: "Dato", tier: "Consul", focus: "Infra" },
69+
{ id: "andrei", name: "Andrei", tier: "Consul", focus: "Observability" },
70+
{ id: "victor", name: "Victor", tier: "Legate", focus: "Legal" },
71+
{ id: "fares", name: "Fares", tier: "Legate", focus: "Economics" },
6972
{ id: "sesh", name: "Sesh", tier: "Legate", focus: "Security" },
70-
{ id: "nyx", name: "Nyx", tier: "Ecclesiast", focus: "Infra" },
71-
{ id: "nana", name: "Nana", tier: "Consul", focus: "Formation" },
72-
{ id: "raamara", name: "Raamara", tier: "Consul", focus: "Treasury" },
7373
];
7474

7575
export const chamberThreads: Thread[] = [

src/data/mock/courtroom.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
export const courtroomJury = [
2-
"John Doe",
3-
"Raamara",
4-
"Nyx",
5-
"Nana",
2+
"Dato",
63
"Victor",
7-
"Tony",
4+
"Temo",
85
"Dima",
6+
"Tony",
7+
"Sesh",
8+
"Petr",
99
"Shannon",
10-
"Artem",
11-
"Lena",
12-
"Cass",
13-
"Victor M",
10+
"Shahmeer",
11+
"Fiona",
12+
"Silis",
13+
"Ekko",
14+
"Andrei",
15+
"Fares",
1416
] as const;

src/data/mock/factions.ts

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ export type Faction = {
88
focus: string;
99
goals: string[];
1010
initiatives: string[];
11+
roster: {
12+
humanNodeId: string;
13+
role: string;
14+
tag:
15+
| { kind: "acm"; value: number }
16+
| { kind: "mm"; value: number }
17+
| { kind: "text"; value: string };
18+
}[];
1119
};
1220

1321
export const factions: Faction[] = [
@@ -29,6 +37,23 @@ export const factions: Faction[] = [
2937
"Validator neutrality charter",
3038
"Cross-shard liveness probes",
3139
],
40+
roster: [
41+
{
42+
humanNodeId: "shahmeer",
43+
role: "Core protocol",
44+
tag: { kind: "acm", value: 184 },
45+
},
46+
{
47+
humanNodeId: "dato",
48+
role: "Reliability & ops",
49+
tag: { kind: "mm", value: 88 },
50+
},
51+
{
52+
humanNodeId: "andrei",
53+
role: "Infra & telemetry",
54+
tag: { kind: "text", value: "Votes 52" },
55+
},
56+
],
3257
},
3358
{
3459
id: "formation-guild",
@@ -48,6 +73,23 @@ export const factions: Faction[] = [
4873
"Squad fast-track pilot",
4974
"Formation mentorship lane",
5075
],
76+
roster: [
77+
{
78+
humanNodeId: "shannon",
79+
role: "Execution lead",
80+
tag: { kind: "acm", value: 173 },
81+
},
82+
{
83+
humanNodeId: "ekko",
84+
role: "Delivery ops",
85+
tag: { kind: "mm", value: 75 },
86+
},
87+
{
88+
humanNodeId: "petr",
89+
role: "Budget ops",
90+
tag: { kind: "text", value: "Votes 41" },
91+
},
92+
],
5193
},
5294
{
5395
id: "mesh-vanguard",
@@ -66,6 +108,23 @@ export const factions: Faction[] = [
66108
"Anonymous identity pilot",
67109
"Telemetry minimisation program",
68110
],
111+
roster: [
112+
{
113+
humanNodeId: "andrei",
114+
role: "Reliability",
115+
tag: { kind: "acm", value: 170 },
116+
},
117+
{
118+
humanNodeId: "dato",
119+
role: "Ops & incident drills",
120+
tag: { kind: "mm", value: 88 },
121+
},
122+
{
123+
humanNodeId: "sesh",
124+
role: "Security & hardening",
125+
tag: { kind: "text", value: "Votes 64" },
126+
},
127+
],
69128
},
70129
{
71130
id: "treasury-collective",
@@ -85,6 +144,23 @@ export const factions: Faction[] = [
85144
"Treasury transparency dashboard",
86145
"Participation-weighted rewards",
87146
],
147+
roster: [
148+
{
149+
humanNodeId: "fares",
150+
role: "Budget modeling",
151+
tag: { kind: "acm", value: 163 },
152+
},
153+
{
154+
humanNodeId: "petr",
155+
role: "Reporting cadence",
156+
tag: { kind: "mm", value: 77 },
157+
},
158+
{
159+
humanNodeId: "victor",
160+
role: "Policy liaison",
161+
tag: { kind: "text", value: "Votes 33" },
162+
},
163+
],
88164
},
89165
{
90166
id: "guardian-circle",
@@ -104,6 +180,23 @@ export const factions: Faction[] = [
104180
"Guardian hotline",
105181
"Onboarding playbooks",
106182
],
183+
roster: [
184+
{
185+
humanNodeId: "fiona",
186+
role: "Onboarding",
187+
tag: { kind: "acm", value: 148 },
188+
},
189+
{
190+
humanNodeId: "tony",
191+
role: "Community ops",
192+
tag: { kind: "text", value: "Votes 28" },
193+
},
194+
{
195+
humanNodeId: "temo",
196+
role: "UX & docs",
197+
tag: { kind: "mm", value: 66 },
198+
},
199+
],
107200
},
108201
{
109202
id: "research-lab",
@@ -123,5 +216,22 @@ export const factions: Faction[] = [
123216
"Privacy circuit sprint",
124217
"Threat model atlas",
125218
],
219+
roster: [
220+
{
221+
humanNodeId: "victor",
222+
role: "Legal research",
223+
tag: { kind: "acm", value: 160 },
224+
},
225+
{
226+
humanNodeId: "silis",
227+
role: "Risk analysis",
228+
tag: { kind: "mm", value: 81 },
229+
},
230+
{
231+
humanNodeId: "sesh",
232+
role: "Threat modeling",
233+
tag: { kind: "text", value: "Votes 47" },
234+
},
235+
],
126236
},
127237
];

0 commit comments

Comments
 (0)