@empoweredvote/ev-ui 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -92,7 +92,6 @@ module.exports = __toCommonJS(index_exports);
92
92
  // src/RadarChartCore.jsx
93
93
  var import_react = __toESM(require("react"));
94
94
  var import_web = require("@react-spring/web");
95
- var import_react2 = require("react");
96
95
  function RadarChartCore({
97
96
  topics,
98
97
  data,
@@ -104,121 +103,94 @@ function RadarChartCore({
104
103
  onReplaceTopic = () => {
105
104
  },
106
105
  size = 400,
107
- labelFontSize = 18,
108
106
  padding = 80,
109
- labelOffset = 20,
110
- tightFit = false
107
+ tightFit = false,
108
+ activeSpoke = null,
109
+ writeIns = {}
111
110
  }) {
111
+ var _a;
112
112
  const radius = size / 2 - 40;
113
+ const extRadius = radius * 1.15;
113
114
  const centerX = size / 2;
114
115
  const centerY = size / 2;
116
+ const [tooltip, setTooltip] = (0, import_react.useState)(null);
115
117
  const spokes = Object.entries(data);
116
118
  const numSpokes = Math.max(spokes.length, 1);
117
- const prevCountRef = (0, import_react2.useRef)(numSpokes);
119
+ const prevCountRef = (0, import_react.useRef)(numSpokes);
118
120
  const countChanged = numSpokes !== prevCountRef.current;
119
- (0, import_react2.useEffect)(() => {
121
+ (0, import_react.useEffect)(() => {
120
122
  prevCountRef.current = numSpokes;
121
123
  }, [numSpokes]);
122
- const pointsArr = spokes.map(([shortTitle, value], index) => {
123
- var _a;
124
+ function calcAdjusted(value, shortTitle) {
125
+ var _a2;
126
+ if (!value || Number(value) === 0) return 0;
124
127
  const topic = topics.find((t) => t.short_title === shortTitle);
125
- const max = ((_a = topic == null ? void 0 : topic.stances) == null ? void 0 : _a.length) || 10;
126
- const pct = Math.min(value / max * 10, 10);
127
- const angle = 2 * Math.PI * index / numSpokes;
128
- const adjusted = value === 0 ? 0 : invertedSpokes[shortTitle] ? 11 - pct : pct;
128
+ const max = ((_a2 = topic == null ? void 0 : topic.stances) == null ? void 0 : _a2.length) || 10;
129
+ const pct = Number(value) / max * 10;
130
+ return invertedSpokes[shortTitle] ? (max + 1) * 10 / max - pct : pct;
131
+ }
132
+ const pointsArr = spokes.map(([shortTitle, value], index) => {
133
+ const adjusted = calcAdjusted(value, shortTitle);
129
134
  const r = adjusted / 10 * radius;
130
- const x = centerX + r * Math.sin(angle);
131
- const y = centerY - r * Math.cos(angle);
132
- return [x, y];
135
+ const angle = 2 * Math.PI * index / numSpokes;
136
+ return [centerX + r * Math.sin(angle), centerY - r * Math.cos(angle)];
133
137
  });
134
138
  const targetPoints = pointsArr.map((p) => p.join(",")).join(" ");
135
- const spring = (0, import_web.useSpring)({
139
+ const springBase = {
136
140
  to: { points: targetPoints },
137
141
  immediate: countChanged,
138
- reset: countChanged,
139
142
  config: { tension: 300, friction: 30 }
140
- });
143
+ };
144
+ if (countChanged) springBase.from = { points: targetPoints };
145
+ const spring = (0, import_web.useSpring)(springBase);
141
146
  const hasCompareData = Object.keys(compareData).length > 0;
142
147
  const centerPoints = spokes.map(() => `${centerX},${centerY}`).join(" ");
143
148
  let comparePoints = null;
144
149
  let compareCoords = null;
145
150
  if (hasCompareData) {
146
151
  const ccoords = spokes.map(([shortTitle], index) => {
147
- var _a, _b;
148
- const value = (_a = compareData[shortTitle]) != null ? _a : 0;
149
- const topic = topics.find((t) => t.short_title === shortTitle);
150
- const max = ((_b = topic == null ? void 0 : topic.stances) == null ? void 0 : _b.length) || 10;
151
- const pct = Math.min(value / max * 10, 10);
152
- const angle = 2 * Math.PI * index / numSpokes;
153
- const adjusted = value === 0 ? 0 : invertedSpokes[shortTitle] ? 11 - pct : pct;
152
+ var _a2;
153
+ const value = (_a2 = compareData[shortTitle]) != null ? _a2 : 0;
154
+ const adjusted = calcAdjusted(value, shortTitle);
154
155
  const r = adjusted / 10 * radius;
155
- const x = centerX + r * Math.sin(angle);
156
- const y = centerY - r * Math.cos(angle);
157
- return [x, y];
156
+ const angle = 2 * Math.PI * index / numSpokes;
157
+ return [centerX + r * Math.sin(angle), centerY - r * Math.cos(angle)];
158
158
  });
159
159
  compareCoords = ccoords;
160
160
  comparePoints = ccoords.map((p) => p.join(",")).join(" ");
161
161
  }
162
- const hadCompareDataRef = (0, import_react2.useRef)(false);
162
+ const hadCompareDataRef = (0, import_react.useRef)(false);
163
163
  const compareJustAppeared = hasCompareData && !hadCompareDataRef.current;
164
- (0, import_react2.useEffect)(() => {
164
+ (0, import_react.useEffect)(() => {
165
165
  hadCompareDataRef.current = hasCompareData;
166
166
  }, [hasCompareData]);
167
- const compareSpring = (0, import_web.useSpring)({
167
+ const compareSpringBase = {
168
168
  to: { points: comparePoints || centerPoints || `${centerX},${centerY}` },
169
169
  immediate: countChanged || compareJustAppeared,
170
- reset: countChanged || compareJustAppeared,
171
170
  config: { tension: 300, friction: 30 }
172
- });
173
- const labelMeta = spokes.map(([shortTitle], i) => {
174
- const angle = 2 * Math.PI * i / numSpokes;
175
- const baseFSize = labelFontSize;
176
- const lines = wrapLabel(shortTitle, 12);
177
- const longestLineLen = lines.reduce(
178
- (max, ln) => ln.length > max ? ln.length : max,
179
- 0
180
- );
181
- const fSize = adaptiveFontSize(longestLineLen, baseFSize);
182
- const estimatedWidth = longestLineLen * fSize * 0.6;
183
- const sinA = Math.sin(angle);
184
- const side = sinA < -0.1 ? "left" : sinA > 0.1 ? "right" : "center";
185
- return { estimatedWidth, side };
186
- });
187
- const leftLabelWidths = labelMeta.filter((m) => m.side === "left").map((m) => m.estimatedWidth);
188
- const rightLabelWidths = labelMeta.filter((m) => m.side === "right").map((m) => m.estimatedWidth);
189
- const minPadding = 40;
190
- const maxPadding = padding * 2;
191
- const rawLeftPadding = Math.min(
192
- Math.max(
193
- leftLabelWidths.length ? Math.max(...leftLabelWidths) + labelOffset : 0,
194
- minPadding
195
- ),
196
- maxPadding
197
- );
198
- const rawRightPadding = Math.min(
199
- Math.max(
200
- rightLabelWidths.length ? Math.max(...rightLabelWidths) + labelOffset : 0,
201
- minPadding
202
- ),
203
- maxPadding
204
- );
205
- const symmetricPadding = Math.max(rawLeftPadding, rawRightPadding);
206
- const leftPadding = symmetricPadding;
207
- const rightPadding = symmetricPadding;
208
- const verticalPadding = padding;
209
- let tightTop = -verticalPadding;
210
- let tightHeight = size + verticalPadding * 2;
171
+ };
172
+ if (countChanged || compareJustAppeared) compareSpringBase.from = compareSpringBase.to;
173
+ const compareSpring = (0, import_web.useSpring)(compareSpringBase);
174
+ const spokeExtension = spokes.reduce((acc, [shortTitle]) => {
175
+ const userAdj = calcAdjusted(data[shortTitle], shortTitle);
176
+ const cmpAdj = hasCompareData && compareData[shortTitle] ? calcAdjusted(compareData[shortTitle], shortTitle) : 0;
177
+ acc[shortTitle] = userAdj > 10 || cmpAdj > 10;
178
+ return acc;
179
+ }, {});
180
+ const sidePadding = 20;
181
+ let tightTop = -sidePadding;
182
+ let tightHeight = size + sidePadding * 2;
211
183
  if (tightFit && numSpokes > 0) {
212
184
  let yMin = Infinity, yMax = -Infinity;
213
185
  for (let i = 0; i < numSpokes; i++) {
214
186
  const angle = 2 * Math.PI * i / numSpokes;
215
- const y = centerY - radius * Math.cos(angle);
187
+ const effectiveR = spokeExtension[(_a = spokes[i]) == null ? void 0 : _a[0]] ? extRadius : radius;
188
+ const y = centerY - effectiveR * Math.cos(angle);
216
189
  if (y < yMin) yMin = y;
217
190
  if (y > yMax) yMax = y;
218
191
  }
219
- const labelMargin = labelOffset + labelFontSize * 1.4 + labelFontSize * 1.1;
220
- tightTop = yMin - labelMargin;
221
- tightHeight = yMax + labelMargin - tightTop;
192
+ tightTop = yMin - sidePadding;
193
+ tightHeight = yMax + sidePadding - tightTop;
222
194
  }
223
195
  const guidePolygons = [];
224
196
  for (let level = 1; level <= 5; level++) {
@@ -226,101 +198,76 @@ function RadarChartCore({
226
198
  const ring = [];
227
199
  for (let i = 0; i < numSpokes; i++) {
228
200
  const angle = 2 * Math.PI * i / numSpokes;
229
- const x = centerX + radius * scale * Math.sin(angle);
230
- const y = centerY - radius * scale * Math.cos(angle);
231
- ring.push(`${x},${y}`);
201
+ ring.push(`${centerX + radius * scale * Math.sin(angle)},${centerY - radius * scale * Math.cos(angle)}`);
232
202
  }
233
203
  guidePolygons.push(
234
204
  /* @__PURE__ */ import_react.default.createElement("polygon", { key: level, points: ring.join(" "), fill: "none", stroke: "#ccc" })
235
205
  );
236
206
  }
207
+ const getStanceText = (shortTitle, value) => {
208
+ if (writeIns[shortTitle]) return writeIns[shortTitle];
209
+ const topic = topics.find((t) => t.short_title === shortTitle);
210
+ const stances = (topic == null ? void 0 : topic.stances) || [];
211
+ const idx = Math.round(Number(value)) - 1;
212
+ if (idx >= 0 && idx < stances.length) {
213
+ return stances[idx].text || shortTitle;
214
+ }
215
+ return shortTitle;
216
+ };
237
217
  return /* @__PURE__ */ import_react.default.createElement(
238
218
  "svg",
239
219
  {
240
220
  className: "w-full h-auto max-h-full",
241
- viewBox: `-${leftPadding} ${tightTop} ${size + leftPadding + rightPadding} ${tightHeight}`,
242
- preserveAspectRatio: "xMidYMid meet"
221
+ viewBox: `-${sidePadding} ${tightTop} ${size + sidePadding * 2} ${tightHeight}`,
222
+ preserveAspectRatio: "xMidYMid meet",
223
+ onMouseLeave: () => setTooltip(null)
243
224
  },
244
225
  guidePolygons,
245
226
  spokes.map(([shortTitle], i) => {
246
227
  const angle = 2 * Math.PI * i / numSpokes;
247
- const x = centerX + radius * Math.sin(angle);
248
- const y = centerY - radius * Math.cos(angle);
228
+ const endX = centerX + radius * Math.sin(angle);
229
+ const endY = centerY - radius * Math.cos(angle);
249
230
  const isUnanswered = !!unansweredSpokes[shortTitle];
250
- return /* @__PURE__ */ import_react.default.createElement(
231
+ const needsExt = spokeExtension[shortTitle];
232
+ const extX = centerX + extRadius * Math.sin(angle);
233
+ const extY = centerY - extRadius * Math.cos(angle);
234
+ return /* @__PURE__ */ import_react.default.createElement("g", { key: `spoke-${shortTitle}` }, /* @__PURE__ */ import_react.default.createElement(
251
235
  "line",
252
236
  {
253
- key: `line-${shortTitle}`,
254
237
  x1: centerX,
255
238
  y1: centerY,
256
- x2: x,
257
- y2: y,
258
- stroke: isUnanswered ? "#9ca3af" : "black",
239
+ x2: endX,
240
+ y2: endY,
241
+ stroke: isUnanswered ? "#9ca3af" : "#aaa",
259
242
  strokeDasharray: isUnanswered ? "4 3" : void 0,
260
243
  opacity: isUnanswered ? 0.6 : 1
261
244
  }
262
- );
263
- }),
264
- spokes.map(([shortTitle], i) => {
265
- const angle = 2 * Math.PI * i / numSpokes;
266
- const anchor = angle > Math.PI ? "end" : angle < Math.PI && angle > 0 ? "start" : "middle";
267
- const cosA = Math.cos(angle);
268
- const isTop = cosA > 0.5;
269
- const isBottom = cosA < -0.5;
270
- const baseFSize = labelFontSize;
271
- const lines = wrapLabel(shortTitle, 12);
272
- const longestLine = lines.reduce(
273
- (max, ln) => ln.length > max ? ln.length : max,
274
- 0
275
- );
276
- const fSize = adaptiveFontSize(longestLine, baseFSize);
277
- const lineHeight = fSize * 1.1;
278
- const dynamicLabelOffset = lines.length > 1 ? labelOffset + 8 : labelOffset;
279
- const offset2 = radius + dynamicLabelOffset;
280
- const labelX = centerX + offset2 * Math.sin(angle);
281
- let labelY = centerY - offset2 * Math.cos(angle);
282
- if (isTop && lines.length > 1) {
283
- labelY -= (lines.length - 1) * lineHeight;
284
- }
285
- const isUnansweredLabel = !!unansweredSpokes[shortTitle];
286
- return /* @__PURE__ */ import_react.default.createElement(
287
- "text",
245
+ ), needsExt && /* @__PURE__ */ import_react.default.createElement(
246
+ "line",
288
247
  {
289
- key: `label-${shortTitle}`,
290
- x: labelX,
291
- y: labelY,
292
- textAnchor: anchor,
293
- dominantBaseline: isBottom ? "hanging" : "auto",
294
- onClick: () => onReplaceTopic(shortTitle),
295
- className: "text-xl font-medium mb-1 md:text-base md:font-normal",
296
- fill: isUnansweredLabel ? "#9ca3af" : void 0,
297
- style: { cursor: "pointer", userSelect: "none", fontSize: fSize }
298
- },
299
- isUnansweredLabel && /* @__PURE__ */ import_react.default.createElement("title", null, "No stance on file for this topic."),
300
- lines.map((ln, idx) => /* @__PURE__ */ import_react.default.createElement("tspan", { key: idx, x: labelX, dy: idx === 0 ? "0" : `${lineHeight}` }, ln))
301
- );
248
+ x1: endX,
249
+ y1: endY,
250
+ x2: extX,
251
+ y2: extY,
252
+ stroke: "#aaa",
253
+ strokeDasharray: "4 4",
254
+ opacity: 0.4
255
+ }
256
+ ));
302
257
  }),
303
258
  countChanged ? /* @__PURE__ */ import_react.default.createElement(
304
259
  "polygon",
305
260
  {
306
261
  key: "user-static",
307
262
  points: targetPoints,
308
- style: {
309
- fill: "rgba(124, 107, 158, 0.4)",
310
- stroke: "#7C6B9E",
311
- strokeWidth: 3
312
- }
263
+ style: { fill: "rgba(124, 107, 158, 0.4)", stroke: "#7C6B9E", strokeWidth: 3 }
313
264
  }
314
265
  ) : /* @__PURE__ */ import_react.default.createElement(
315
266
  import_web.animated.polygon,
316
267
  {
317
268
  key: "user-animated",
318
269
  points: spring.points,
319
- style: {
320
- fill: "rgba(124, 107, 158, 0.4)",
321
- stroke: "#7C6B9E",
322
- strokeWidth: 3
323
- }
270
+ style: { fill: "rgba(124, 107, 158, 0.4)", stroke: "#7C6B9E", strokeWidth: 3 }
324
271
  }
325
272
  ),
326
273
  pointsArr.map(([cx, cy], i) => {
@@ -338,7 +285,10 @@ function RadarChartCore({
338
285
  r: matches ? 8 : 7,
339
286
  fill: matches ? "#fed12e" : "#7C6B9E",
340
287
  stroke: "#FFFFFF",
341
- strokeWidth: 3
288
+ strokeWidth: 3,
289
+ style: { cursor: "default" },
290
+ onMouseEnter: () => setTooltip({ x: cx, y: cy, text: getStanceText(shortTitle, userVal) }),
291
+ onMouseLeave: () => setTooltip(null)
342
292
  }
343
293
  );
344
294
  }),
@@ -347,22 +297,14 @@ function RadarChartCore({
347
297
  {
348
298
  key: "compare-static",
349
299
  points: comparePoints,
350
- style: {
351
- fill: "rgba(90, 154, 110, 0.3)",
352
- stroke: "#5A9A6E",
353
- strokeWidth: 2
354
- }
300
+ style: { fill: "rgba(90, 154, 110, 0.3)", stroke: "#5A9A6E", strokeWidth: 2 }
355
301
  }
356
302
  ) : /* @__PURE__ */ import_react.default.createElement(
357
303
  import_web.animated.polygon,
358
304
  {
359
305
  key: "compare-animated",
360
306
  points: compareSpring.points,
361
- style: {
362
- fill: "rgba(90, 154, 110, 0.3)",
363
- stroke: "#5A9A6E",
364
- strokeWidth: 2
365
- }
307
+ style: { fill: "rgba(90, 154, 110, 0.3)", stroke: "#5A9A6E", strokeWidth: 2 }
366
308
  }
367
309
  ) : null,
368
310
  hasCompareData && compareCoords && compareCoords.map(([cx, cy], i) => {
@@ -370,7 +312,7 @@ function RadarChartCore({
370
312
  const userVal = spokes[i][1];
371
313
  const compareVal = compareData[shortTitle];
372
314
  if (!compareVal || Number(compareVal) === 0) return null;
373
- const matches = userVal !== 0 && compareVal !== 0 && compareVal != null && Number(userVal) === Number(compareVal);
315
+ const matches = userVal !== 0 && compareVal != null && Number(userVal) === Number(compareVal);
374
316
  return /* @__PURE__ */ import_react.default.createElement(
375
317
  "circle",
376
318
  {
@@ -380,14 +322,17 @@ function RadarChartCore({
380
322
  r: matches ? 8 : 7,
381
323
  fill: matches ? "#fed12e" : "#5A9A6E",
382
324
  stroke: "#FFFFFF",
383
- strokeWidth: 3
325
+ strokeWidth: 3,
326
+ style: { cursor: "default" },
327
+ onMouseEnter: () => setTooltip({ x: cx, y: cy, text: getStanceText(shortTitle, compareVal) }),
328
+ onMouseLeave: () => setTooltip(null)
384
329
  }
385
330
  );
386
331
  }),
387
332
  spokes.map(([shortTitle], i) => {
388
333
  const angle = 2 * Math.PI * i / numSpokes;
389
- const x = centerX + radius * Math.sin(angle);
390
- const y = centerY - radius * Math.cos(angle);
334
+ const endX = centerX + (spokeExtension[shortTitle] ? extRadius : radius) * Math.sin(angle);
335
+ const endY = centerY - (spokeExtension[shortTitle] ? extRadius : radius) * Math.cos(angle);
391
336
  const isUnansweredHitbox = !!unansweredSpokes[shortTitle];
392
337
  return /* @__PURE__ */ import_react.default.createElement(
393
338
  "line",
@@ -395,54 +340,56 @@ function RadarChartCore({
395
340
  key: `hitbox-${shortTitle}`,
396
341
  x1: centerX,
397
342
  y1: centerY,
398
- x2: x,
399
- y2: y,
343
+ x2: endX,
344
+ y2: endY,
400
345
  stroke: "transparent",
401
346
  strokeWidth: 14,
402
347
  onClick: () => isUnansweredHitbox ? onReplaceTopic(shortTitle) : onToggleInversion(shortTitle),
403
348
  style: { cursor: "pointer" }
404
349
  }
405
350
  );
406
- })
351
+ }),
352
+ tooltip && (() => {
353
+ const tipW = 190;
354
+ const tipH = 70;
355
+ const svgW = size + sidePadding * 2;
356
+ const tx = tooltip.x + sidePadding + 12 > svgW - tipW ? tooltip.x - tipW - 12 : tooltip.x + 12;
357
+ const ty = tooltip.y - 10;
358
+ return /* @__PURE__ */ import_react.default.createElement(
359
+ "foreignObject",
360
+ {
361
+ x: tx,
362
+ y: ty,
363
+ width: tipW,
364
+ height: tipH,
365
+ style: { overflow: "visible", pointerEvents: "none" }
366
+ },
367
+ /* @__PURE__ */ import_react.default.createElement(
368
+ "div",
369
+ {
370
+ xmlns: "http://www.w3.org/1999/xhtml",
371
+ style: {
372
+ background: "white",
373
+ border: "1px solid #d1d5db",
374
+ borderRadius: 6,
375
+ padding: "6px 10px",
376
+ fontSize: 11,
377
+ lineHeight: 1.4,
378
+ color: "#111",
379
+ boxShadow: "0 2px 8px rgba(0,0,0,0.12)",
380
+ width: tipW + "px",
381
+ wordWrap: "break-word"
382
+ }
383
+ },
384
+ tooltip.text
385
+ )
386
+ );
387
+ })()
407
388
  );
408
389
  }
409
- function adaptiveFontSize(longestLineLen, baseFSize) {
410
- return Math.max(baseFSize, 10);
411
- }
412
- function wrapLabel(label, maxChars = 12) {
413
- const str = String(label);
414
- let rawWords;
415
- if (str.includes("/")) {
416
- rawWords = str.split("/").reduce((acc, segment, idx, arr) => {
417
- const part = idx < arr.length - 1 ? segment + "/" : segment;
418
- if (part.trim()) acc.push(part.trim());
419
- return acc;
420
- }, []);
421
- } else {
422
- rawWords = str.split(/\s+/);
423
- }
424
- const lines = [];
425
- let line = "";
426
- for (const word of rawWords) {
427
- if (line === "") {
428
- line = word;
429
- } else if ((line + " " + word).length <= maxChars) {
430
- line += " " + word;
431
- } else {
432
- lines.push(line);
433
- line = word;
434
- }
435
- }
436
- if (line) lines.push(line);
437
- if (lines.length > 2) {
438
- const overflow = lines.splice(2).join(" ");
439
- lines[1] = lines[1] + " " + overflow;
440
- }
441
- return lines;
442
- }
443
390
 
444
391
  // src/Header.jsx
445
- var import_react4 = __toESM(require("react"));
392
+ var import_react3 = __toESM(require("react"));
446
393
 
447
394
  // src/tokens.js
448
395
  var colorScales = {
@@ -838,13 +785,13 @@ var breakpoints = {
838
785
  };
839
786
 
840
787
  // src/useMediaQuery.js
841
- var import_react3 = require("react");
788
+ var import_react2 = require("react");
842
789
  function useMediaQuery(query) {
843
- const [matches, setMatches] = (0, import_react3.useState)(() => {
790
+ const [matches, setMatches] = (0, import_react2.useState)(() => {
844
791
  if (typeof window === "undefined") return false;
845
792
  return window.matchMedia(query).matches;
846
793
  });
847
- (0, import_react3.useEffect)(() => {
794
+ (0, import_react2.useEffect)(() => {
848
795
  if (typeof window === "undefined") return;
849
796
  const mql = window.matchMedia(query);
850
797
  const handler = (e) => setMatches(e.matches);
@@ -859,6 +806,7 @@ function useMediaQuery(query) {
859
806
  function Header({
860
807
  logoSrc,
861
808
  logoAlt = "Empowered Vote",
809
+ logoHref = "https://login.empowered.vote/profile",
862
810
  navItems = [],
863
811
  ctaButton,
864
812
  secondaryAction,
@@ -867,12 +815,12 @@ function Header({
867
815
  profileMenu,
868
816
  style = {}
869
817
  }) {
870
- const [mobileMenuOpen, setMobileMenuOpen] = (0, import_react4.useState)(false);
871
- const [openDropdown, setOpenDropdown] = (0, import_react4.useState)(null);
872
- const [profileOpen, setProfileOpen] = (0, import_react4.useState)(false);
818
+ const [mobileMenuOpen, setMobileMenuOpen] = (0, import_react3.useState)(false);
819
+ const [openDropdown, setOpenDropdown] = (0, import_react3.useState)(null);
820
+ const [profileOpen, setProfileOpen] = (0, import_react3.useState)(false);
873
821
  const isMobile = useMediaQuery("(max-width: 768px)");
874
- const profileRef = (0, import_react4.useRef)(null);
875
- (0, import_react4.useEffect)(() => {
822
+ const profileRef = (0, import_react3.useRef)(null);
823
+ (0, import_react3.useEffect)(() => {
876
824
  if (!profileOpen) return;
877
825
  const handleClickOutside = (e) => {
878
826
  if (profileRef.current && !profileRef.current.contains(e.target)) {
@@ -1083,14 +1031,14 @@ function Header({
1083
1031
  const isActive = currentPath === item.href;
1084
1032
  const hasDropdown = item.dropdown && item.dropdown.length > 0;
1085
1033
  const isOpen = openDropdown === item.label;
1086
- return /* @__PURE__ */ import_react4.default.createElement(
1034
+ return /* @__PURE__ */ import_react3.default.createElement(
1087
1035
  "div",
1088
1036
  {
1089
1037
  style: { position: "relative" },
1090
1038
  onMouseEnter: () => hasDropdown && setOpenDropdown(item.label),
1091
1039
  onMouseLeave: () => hasDropdown && setOpenDropdown(null)
1092
1040
  },
1093
- /* @__PURE__ */ import_react4.default.createElement(
1041
+ /* @__PURE__ */ import_react3.default.createElement(
1094
1042
  "a",
1095
1043
  {
1096
1044
  href: item.href,
@@ -1101,7 +1049,7 @@ function Header({
1101
1049
  }
1102
1050
  },
1103
1051
  item.label,
1104
- hasDropdown && /* @__PURE__ */ import_react4.default.createElement(
1052
+ hasDropdown && /* @__PURE__ */ import_react3.default.createElement(
1105
1053
  "svg",
1106
1054
  {
1107
1055
  style: styles2.dropdownIcon,
@@ -1109,7 +1057,7 @@ function Header({
1109
1057
  fill: "none",
1110
1058
  xmlns: "http://www.w3.org/2000/svg"
1111
1059
  },
1112
- /* @__PURE__ */ import_react4.default.createElement(
1060
+ /* @__PURE__ */ import_react3.default.createElement(
1113
1061
  "path",
1114
1062
  {
1115
1063
  d: "M1 1L8 8L15 1",
@@ -1121,7 +1069,7 @@ function Header({
1121
1069
  )
1122
1070
  )
1123
1071
  ),
1124
- hasDropdown && isOpen && /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.dropdown }, /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.dropdownInner }, item.dropdown.map((dropdownItem, idx) => /* @__PURE__ */ import_react4.default.createElement(
1072
+ hasDropdown && isOpen && /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.dropdown }, /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.dropdownInner }, item.dropdown.map((dropdownItem, idx) => /* @__PURE__ */ import_react3.default.createElement(
1125
1073
  "a",
1126
1074
  {
1127
1075
  key: idx,
@@ -1139,14 +1087,14 @@ function Header({
1139
1087
  ))))
1140
1088
  );
1141
1089
  };
1142
- return /* @__PURE__ */ import_react4.default.createElement("header", { style: styles2.header }, /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.container }, /* @__PURE__ */ import_react4.default.createElement(
1090
+ return /* @__PURE__ */ import_react3.default.createElement("header", { style: styles2.header }, /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.container }, /* @__PURE__ */ import_react3.default.createElement(
1143
1091
  "a",
1144
1092
  {
1145
- href: "/",
1146
- onClick: (e) => handleNavClick(e, "/"),
1093
+ href: logoHref,
1094
+ onClick: (e) => handleNavClick(e, logoHref),
1147
1095
  style: { display: "flex", alignItems: "center" }
1148
1096
  },
1149
- logoSrc ? /* @__PURE__ */ import_react4.default.createElement("img", { src: logoSrc, alt: logoAlt, style: styles2.logo }) : /* @__PURE__ */ import_react4.default.createElement(
1097
+ logoSrc ? /* @__PURE__ */ import_react3.default.createElement("img", { src: logoSrc, alt: logoAlt, style: styles2.logo }) : /* @__PURE__ */ import_react3.default.createElement(
1150
1098
  "span",
1151
1099
  {
1152
1100
  style: {
@@ -1158,7 +1106,7 @@ function Header({
1158
1106
  },
1159
1107
  "empowered.vote"
1160
1108
  )
1161
- ), /* @__PURE__ */ import_react4.default.createElement("nav", { style: styles2.nav, className: "ev-header-nav" }, navItems.map((item, idx) => /* @__PURE__ */ import_react4.default.createElement(NavLink, { key: idx, item }))), /* @__PURE__ */ import_react4.default.createElement("div", { style: { display: isMobile ? "none" : "flex", alignItems: "center", gap: spacing[3] } }, secondaryAction && import_react4.default.isValidElement(secondaryAction) && secondaryAction, secondaryAction && !import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement(
1109
+ ), /* @__PURE__ */ import_react3.default.createElement("nav", { style: styles2.nav, className: "ev-header-nav" }, navItems.map((item, idx) => /* @__PURE__ */ import_react3.default.createElement(NavLink, { key: idx, item }))), /* @__PURE__ */ import_react3.default.createElement("div", { style: { display: isMobile ? "none" : "flex", alignItems: "center", gap: spacing[3] } }, secondaryAction && import_react3.default.isValidElement(secondaryAction) && secondaryAction, secondaryAction && !import_react3.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react3.default.createElement(
1162
1110
  "a",
1163
1111
  {
1164
1112
  href: secondaryAction.href,
@@ -1181,7 +1129,7 @@ function Header({
1181
1129
  }
1182
1130
  },
1183
1131
  secondaryAction.label
1184
- ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1132
+ ), ctaButton && /* @__PURE__ */ import_react3.default.createElement(
1185
1133
  "a",
1186
1134
  {
1187
1135
  href: ctaButton.href,
@@ -1196,7 +1144,7 @@ function Header({
1196
1144
  }
1197
1145
  },
1198
1146
  ctaButton.label
1199
- ), profileMenu && /* @__PURE__ */ import_react4.default.createElement("div", { ref: profileRef, style: { position: "relative" } }, /* @__PURE__ */ import_react4.default.createElement(
1147
+ ), profileMenu && /* @__PURE__ */ import_react3.default.createElement("div", { ref: profileRef, style: { position: "relative" } }, /* @__PURE__ */ import_react3.default.createElement(
1200
1148
  "button",
1201
1149
  {
1202
1150
  style: styles2.profileButton,
@@ -1204,7 +1152,7 @@ function Header({
1204
1152
  "aria-label": "Profile menu",
1205
1153
  "aria-expanded": profileOpen
1206
1154
  },
1207
- /* @__PURE__ */ import_react4.default.createElement(
1155
+ /* @__PURE__ */ import_react3.default.createElement(
1208
1156
  "svg",
1209
1157
  {
1210
1158
  width: "20",
@@ -1216,12 +1164,12 @@ function Header({
1216
1164
  strokeLinecap: "round",
1217
1165
  strokeLinejoin: "round"
1218
1166
  },
1219
- /* @__PURE__ */ import_react4.default.createElement("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
1220
- /* @__PURE__ */ import_react4.default.createElement("circle", { cx: "12", cy: "7", r: "4" })
1167
+ /* @__PURE__ */ import_react3.default.createElement("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
1168
+ /* @__PURE__ */ import_react3.default.createElement("circle", { cx: "12", cy: "7", r: "4" })
1221
1169
  )
1222
- ), profileOpen && /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.profileDropdown }, /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.profileDropdownInner }, profileMenu.label && /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.profileLabel }, profileMenu.label), profileMenu.items.map((item, idx) => {
1170
+ ), profileOpen && /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.profileDropdown }, /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.profileDropdownInner }, profileMenu.label && /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.profileLabel }, profileMenu.label), profileMenu.items.map((item, idx) => {
1223
1171
  if (item.href) {
1224
- return /* @__PURE__ */ import_react4.default.createElement(
1172
+ return /* @__PURE__ */ import_react3.default.createElement(
1225
1173
  "a",
1226
1174
  {
1227
1175
  key: idx,
@@ -1244,7 +1192,7 @@ function Header({
1244
1192
  item.label
1245
1193
  );
1246
1194
  }
1247
- return /* @__PURE__ */ import_react4.default.createElement(
1195
+ return /* @__PURE__ */ import_react3.default.createElement(
1248
1196
  "button",
1249
1197
  {
1250
1198
  key: idx,
@@ -1263,7 +1211,7 @@ function Header({
1263
1211
  },
1264
1212
  item.label
1265
1213
  );
1266
- }))))), /* @__PURE__ */ import_react4.default.createElement(
1214
+ }))))), /* @__PURE__ */ import_react3.default.createElement(
1267
1215
  "button",
1268
1216
  {
1269
1217
  style: styles2.mobileMenuButton,
@@ -1272,7 +1220,7 @@ function Header({
1272
1220
  "aria-label": "Toggle menu",
1273
1221
  "aria-expanded": mobileMenuOpen
1274
1222
  },
1275
- /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.hamburger }, /* @__PURE__ */ import_react4.default.createElement(
1223
+ /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.hamburger }, /* @__PURE__ */ import_react3.default.createElement(
1276
1224
  "span",
1277
1225
  {
1278
1226
  style: {
@@ -1284,7 +1232,7 @@ function Header({
1284
1232
  backgroundColor: colors.evTeal
1285
1233
  }
1286
1234
  }
1287
- ), /* @__PURE__ */ import_react4.default.createElement(
1235
+ ), /* @__PURE__ */ import_react3.default.createElement(
1288
1236
  "span",
1289
1237
  {
1290
1238
  style: {
@@ -1297,9 +1245,9 @@ function Header({
1297
1245
  }
1298
1246
  }
1299
1247
  ))
1300
- )), /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.mobileMenu, className: "ev-header-mobile-menu" }, navItems.map((item, idx) => {
1248
+ )), /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.mobileMenu, className: "ev-header-mobile-menu" }, navItems.map((item, idx) => {
1301
1249
  const hasDropdown = item.dropdown && item.dropdown.length > 0;
1302
- return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, { key: idx }, hasDropdown ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(
1250
+ return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, { key: idx }, hasDropdown ? /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(
1303
1251
  "span",
1304
1252
  {
1305
1253
  style: {
@@ -1309,7 +1257,7 @@ function Header({
1309
1257
  }
1310
1258
  },
1311
1259
  item.label
1312
- ), item.dropdown.map((sub, subIdx) => /* @__PURE__ */ import_react4.default.createElement(
1260
+ ), item.dropdown.map((sub, subIdx) => /* @__PURE__ */ import_react3.default.createElement(
1313
1261
  "a",
1314
1262
  {
1315
1263
  key: subIdx,
@@ -1326,7 +1274,7 @@ function Header({
1326
1274
  }
1327
1275
  },
1328
1276
  sub.label
1329
- ))) : /* @__PURE__ */ import_react4.default.createElement(
1277
+ ))) : /* @__PURE__ */ import_react3.default.createElement(
1330
1278
  "a",
1331
1279
  {
1332
1280
  href: item.href,
@@ -1338,7 +1286,7 @@ function Header({
1338
1286
  },
1339
1287
  item.label
1340
1288
  ));
1341
- }), secondaryAction && import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement("div", { style: { marginTop: spacing[4], textAlign: "center" } }, secondaryAction), secondaryAction && !import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement(
1289
+ }), secondaryAction && import_react3.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react3.default.createElement("div", { style: { marginTop: spacing[4], textAlign: "center" } }, secondaryAction), secondaryAction && !import_react3.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react3.default.createElement(
1342
1290
  "a",
1343
1291
  {
1344
1292
  href: secondaryAction.href,
@@ -1353,7 +1301,7 @@ function Header({
1353
1301
  style: { ...styles2.secondaryAction, marginTop: spacing[4], textAlign: "center", justifyContent: "center" }
1354
1302
  },
1355
1303
  secondaryAction.label
1356
- ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1304
+ ), ctaButton && /* @__PURE__ */ import_react3.default.createElement(
1357
1305
  "a",
1358
1306
  {
1359
1307
  href: ctaButton.href,
@@ -1364,7 +1312,7 @@ function Header({
1364
1312
  style: { ...styles2.ctaButton, marginTop: spacing[4], textAlign: "center" }
1365
1313
  },
1366
1314
  ctaButton.label
1367
- ), profileMenu && /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.mobileDivider }), profileMenu.label && /* @__PURE__ */ import_react4.default.createElement(
1315
+ ), profileMenu && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.mobileDivider }), profileMenu.label && /* @__PURE__ */ import_react3.default.createElement(
1368
1316
  "span",
1369
1317
  {
1370
1318
  style: {
@@ -1380,7 +1328,7 @@ function Header({
1380
1328
  profileMenu.label
1381
1329
  ), profileMenu.items.map((item, idx) => {
1382
1330
  if (item.href) {
1383
- return /* @__PURE__ */ import_react4.default.createElement(
1331
+ return /* @__PURE__ */ import_react3.default.createElement(
1384
1332
  "a",
1385
1333
  {
1386
1334
  key: idx,
@@ -1397,7 +1345,7 @@ function Header({
1397
1345
  item.label
1398
1346
  );
1399
1347
  }
1400
- return /* @__PURE__ */ import_react4.default.createElement(
1348
+ return /* @__PURE__ */ import_react3.default.createElement(
1401
1349
  "button",
1402
1350
  {
1403
1351
  key: idx,
@@ -1421,10 +1369,10 @@ function Header({
1421
1369
  }
1422
1370
 
1423
1371
  // src/SiteHeader.jsx
1424
- var import_react6 = __toESM(require("react"));
1372
+ var import_react5 = __toESM(require("react"));
1425
1373
 
1426
1374
  // src/FeedbackButton.jsx
1427
- var import_react5 = __toESM(require("react"));
1375
+ var import_react4 = __toESM(require("react"));
1428
1376
  var FEEDBACK_BASE_DEFAULT = "https://alpha.empowered.vote/feedback";
1429
1377
  var HOST_FEATURE_MAP = {
1430
1378
  "compass.empowered.vote": "compass",
@@ -1495,7 +1443,7 @@ function FeedbackButton({
1495
1443
  cursor: "pointer"
1496
1444
  };
1497
1445
  const baseStyle = variant === "link" ? linkStyle2 : pillStyle;
1498
- return /* @__PURE__ */ import_react5.default.createElement(
1446
+ return /* @__PURE__ */ import_react4.default.createElement(
1499
1447
  "a",
1500
1448
  {
1501
1449
  href,
@@ -1559,11 +1507,11 @@ function SiteHeader({
1559
1507
  if (secondaryAction === false) {
1560
1508
  resolvedSecondary = void 0;
1561
1509
  } else if (secondaryAction === void 0) {
1562
- resolvedSecondary = /* @__PURE__ */ import_react6.default.createElement(FeedbackButton, { feature: feedbackFeature });
1510
+ resolvedSecondary = /* @__PURE__ */ import_react5.default.createElement(FeedbackButton, { feature: feedbackFeature });
1563
1511
  } else {
1564
1512
  resolvedSecondary = secondaryAction;
1565
1513
  }
1566
- return /* @__PURE__ */ import_react6.default.createElement(
1514
+ return /* @__PURE__ */ import_react5.default.createElement(
1567
1515
  Header,
1568
1516
  {
1569
1517
  logoSrc,
@@ -1580,7 +1528,7 @@ function SiteHeader({
1580
1528
  }
1581
1529
 
1582
1530
  // src/FilterSidebar.jsx
1583
- var import_react7 = __toESM(require("react"));
1531
+ var import_react6 = __toESM(require("react"));
1584
1532
  function FilterSidebar({
1585
1533
  title = "Filter by",
1586
1534
  zipCode = "",
@@ -1734,14 +1682,14 @@ function FilterSidebar({
1734
1682
  fontSize: fontSizes.sm
1735
1683
  }
1736
1684
  };
1737
- return /* @__PURE__ */ import_react7.default.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ import_react7.default.createElement(
1685
+ return /* @__PURE__ */ import_react6.default.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ import_react6.default.createElement(
1738
1686
  "div",
1739
1687
  {
1740
1688
  ref: autocompleteContainerRef,
1741
1689
  style: styles2.zipInputWrapper,
1742
1690
  className: "ev-autocomplete-container"
1743
1691
  }
1744
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react7.default.createElement(
1692
+ ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react6.default.createElement(
1745
1693
  "input",
1746
1694
  {
1747
1695
  ref: zipInputRef,
@@ -1753,7 +1701,7 @@ function FilterSidebar({
1753
1701
  style: styles2.zipInput,
1754
1702
  "aria-label": "Search location"
1755
1703
  }
1756
- ), /* @__PURE__ */ import_react7.default.createElement(
1704
+ ), /* @__PURE__ */ import_react6.default.createElement(
1757
1705
  "button",
1758
1706
  {
1759
1707
  type: "button",
@@ -1762,7 +1710,7 @@ function FilterSidebar({
1762
1710
  "aria-label": "Clear ZIP code"
1763
1711
  },
1764
1712
  "\xD7"
1765
- ))), /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ import_react7.default.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ import_react7.default.createElement(
1713
+ ))), /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ import_react6.default.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ import_react6.default.createElement(
1766
1714
  "input",
1767
1715
  {
1768
1716
  type: "radio",
@@ -1772,18 +1720,18 @@ function FilterSidebar({
1772
1720
  onChange: () => onFilterChange == null ? void 0 : onFilterChange(option.value),
1773
1721
  style: styles2.radioInput
1774
1722
  }
1775
- ), option.label))))), !isMobile && /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ import_react7.default.createElement(
1723
+ ), option.label))))), !isMobile && /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ import_react6.default.createElement(
1776
1724
  "img",
1777
1725
  {
1778
1726
  src: buildingImageSrc,
1779
1727
  alt: `${selectedFilter} government building`,
1780
1728
  style: styles2.buildingImage
1781
1729
  }
1782
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1730
+ ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1783
1731
  }
1784
1732
 
1785
1733
  // src/PoliticianCard.jsx
1786
- var import_react8 = __toESM(require("react"));
1734
+ var import_react7 = __toESM(require("react"));
1787
1735
  function PoliticianCard({
1788
1736
  id,
1789
1737
  imageSrc,
@@ -1935,7 +1883,7 @@ function PoliticianCard({
1935
1883
  textTransform: "uppercase"
1936
1884
  }
1937
1885
  };
1938
- const CompassIcon2 = () => /* @__PURE__ */ import_react8.default.createElement(
1886
+ const CompassIcon2 = () => /* @__PURE__ */ import_react7.default.createElement(
1939
1887
  "svg",
1940
1888
  {
1941
1889
  style: styles2.compassIcon,
@@ -1943,7 +1891,7 @@ function PoliticianCard({
1943
1891
  fill: "none",
1944
1892
  xmlns: "http://www.w3.org/2000/svg"
1945
1893
  },
1946
- /* @__PURE__ */ import_react8.default.createElement(
1894
+ /* @__PURE__ */ import_react7.default.createElement(
1947
1895
  "polygon",
1948
1896
  {
1949
1897
  points: "12,1 21.5,6.5 21.5,17.5 12,23 2.5,17.5 2.5,6.5",
@@ -1953,13 +1901,13 @@ function PoliticianCard({
1953
1901
  strokeLinejoin: "round"
1954
1902
  }
1955
1903
  ),
1956
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
1957
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1958
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1959
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
1960
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1961
- /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1962
- /* @__PURE__ */ import_react8.default.createElement(
1904
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
1905
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1906
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1907
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
1908
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1909
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1910
+ /* @__PURE__ */ import_react7.default.createElement(
1963
1911
  "polygon",
1964
1912
  {
1965
1913
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1967,7 +1915,7 @@ function PoliticianCard({
1967
1915
  opacity: "0.35"
1968
1916
  }
1969
1917
  ),
1970
- /* @__PURE__ */ import_react8.default.createElement(
1918
+ /* @__PURE__ */ import_react7.default.createElement(
1971
1919
  "polygon",
1972
1920
  {
1973
1921
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1978,8 +1926,8 @@ function PoliticianCard({
1978
1926
  }
1979
1927
  )
1980
1928
  );
1981
- const [imgError, setImgError] = (0, import_react8.useState)(false);
1982
- (0, import_react8.useEffect)(() => {
1929
+ const [imgError, setImgError] = (0, import_react7.useState)(false);
1930
+ (0, import_react7.useEffect)(() => {
1983
1931
  setImgError(false);
1984
1932
  }, [imageSrc]);
1985
1933
  const getInitials = (n) => {
@@ -1988,7 +1936,7 @@ function PoliticianCard({
1988
1936
  const initials = parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_a = parts[0]) == null ? void 0 : _a[0]) || "?";
1989
1937
  return initials.toUpperCase();
1990
1938
  };
1991
- return /* @__PURE__ */ import_react8.default.createElement(
1939
+ return /* @__PURE__ */ import_react7.default.createElement(
1992
1940
  "div",
1993
1941
  {
1994
1942
  style: styles2.card,
@@ -2013,8 +1961,8 @@ function PoliticianCard({
2013
1961
  }
2014
1962
  }
2015
1963
  },
2016
- badge && /* @__PURE__ */ import_react8.default.createElement("span", { style: styles2.badge }, badge),
2017
- /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ import_react8.default.createElement(
1964
+ badge && /* @__PURE__ */ import_react7.default.createElement("span", { style: styles2.badge }, badge),
1965
+ /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ import_react7.default.createElement(
2018
1966
  "img",
2019
1967
  {
2020
1968
  src: imageSrc,
@@ -2022,9 +1970,9 @@ function PoliticianCard({
2022
1970
  style: styles2.image,
2023
1971
  onError: () => setImgError(true)
2024
1972
  }
2025
- ) : /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
2026
- /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.content }, /* @__PURE__ */ import_react8.default.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ import_react8.default.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ import_react8.default.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ import_react8.default.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
2027
- onCompassClick && /* @__PURE__ */ import_react8.default.createElement(
1973
+ ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
1974
+ /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.content }, /* @__PURE__ */ import_react7.default.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ import_react7.default.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ import_react7.default.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ import_react7.default.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
1975
+ onCompassClick && /* @__PURE__ */ import_react7.default.createElement(
2028
1976
  "button",
2029
1977
  {
2030
1978
  type: "button",
@@ -2039,16 +1987,16 @@ function PoliticianCard({
2039
1987
  },
2040
1988
  "aria-label": `View ${name}'s compass`
2041
1989
  },
2042
- /* @__PURE__ */ import_react8.default.createElement(CompassIcon2, null)
1990
+ /* @__PURE__ */ import_react7.default.createElement(CompassIcon2, null)
2043
1991
  )
2044
1992
  );
2045
1993
  }
2046
1994
 
2047
1995
  // src/CompassCardHorizontal.jsx
2048
- var import_react14 = __toESM(require("react"));
1996
+ var import_react13 = __toESM(require("react"));
2049
1997
 
2050
1998
  // src/PlaceholderRadar.jsx
2051
- var import_react9 = __toESM(require("react"));
1999
+ var import_react8 = __toESM(require("react"));
2052
2000
  function PlaceholderRadar({ size = 250, name = "" }) {
2053
2001
  const cx = size / 2;
2054
2002
  const cy = size / 2;
@@ -2061,7 +2009,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2061
2009
  const outerPts = vertices.map(([x, y]) => `${x},${y}`).join(" ");
2062
2010
  const midPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.6},${cy + (y - cy) * 0.6}`).join(" ");
2063
2011
  const innerPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.3},${cy + (y - cy) * 0.3}`).join(" ");
2064
- return /* @__PURE__ */ import_react9.default.createElement(
2012
+ return /* @__PURE__ */ import_react8.default.createElement(
2065
2013
  "svg",
2066
2014
  {
2067
2015
  width: size,
@@ -2075,7 +2023,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2075
2023
  flexShrink: 0
2076
2024
  }
2077
2025
  },
2078
- vertices.map(([x, y], i) => /* @__PURE__ */ import_react9.default.createElement(
2026
+ vertices.map(([x, y], i) => /* @__PURE__ */ import_react8.default.createElement(
2079
2027
  "line",
2080
2028
  {
2081
2029
  key: i,
@@ -2089,7 +2037,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2089
2037
  opacity: "0.6"
2090
2038
  }
2091
2039
  )),
2092
- /* @__PURE__ */ import_react9.default.createElement(
2040
+ /* @__PURE__ */ import_react8.default.createElement(
2093
2041
  "polygon",
2094
2042
  {
2095
2043
  points: innerPts,
@@ -2100,7 +2048,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2100
2048
  opacity: "0.5"
2101
2049
  }
2102
2050
  ),
2103
- /* @__PURE__ */ import_react9.default.createElement(
2051
+ /* @__PURE__ */ import_react8.default.createElement(
2104
2052
  "polygon",
2105
2053
  {
2106
2054
  points: midPts,
@@ -2111,7 +2059,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2111
2059
  opacity: "0.6"
2112
2060
  }
2113
2061
  ),
2114
- /* @__PURE__ */ import_react9.default.createElement(
2062
+ /* @__PURE__ */ import_react8.default.createElement(
2115
2063
  "polygon",
2116
2064
  {
2117
2065
  points: outerPts,
@@ -2125,16 +2073,16 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2125
2073
  }
2126
2074
 
2127
2075
  // src/CompassCardHorizontalMeta.jsx
2128
- var import_react13 = __toESM(require("react"));
2076
+ var import_react12 = __toESM(require("react"));
2129
2077
 
2130
2078
  // src/IconOverlay.jsx
2131
- var import_react11 = __toESM(require("react"));
2132
- var import_react12 = require("@floating-ui/react");
2079
+ var import_react10 = __toESM(require("react"));
2080
+ var import_react11 = require("@floating-ui/react");
2133
2081
 
2134
2082
  // src/icons.js
2135
- var import_react10 = __toESM(require("react"));
2083
+ var import_react9 = __toESM(require("react"));
2136
2084
  function BallotIcon({ size = 16, color = "currentColor" }) {
2137
- return /* @__PURE__ */ import_react10.default.createElement(
2085
+ return /* @__PURE__ */ import_react9.default.createElement(
2138
2086
  "svg",
2139
2087
  {
2140
2088
  width: size,
@@ -2147,13 +2095,13 @@ function BallotIcon({ size = 16, color = "currentColor" }) {
2147
2095
  strokeLinejoin: "round",
2148
2096
  xmlns: "http://www.w3.org/2000/svg"
2149
2097
  },
2150
- /* @__PURE__ */ import_react10.default.createElement("path", { d: "m9 12 2 2 4-4" }),
2151
- /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2152
- /* @__PURE__ */ import_react10.default.createElement("path", { d: "M22 19H2" })
2098
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "m9 12 2 2 4-4" }),
2099
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2100
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "M22 19H2" })
2153
2101
  );
2154
2102
  }
2155
2103
  function CompassIcon({ size = 16, color = "currentColor" }) {
2156
- return /* @__PURE__ */ import_react10.default.createElement(
2104
+ return /* @__PURE__ */ import_react9.default.createElement(
2157
2105
  "svg",
2158
2106
  {
2159
2107
  width: size,
@@ -2166,27 +2114,27 @@ function CompassIcon({ size = 16, color = "currentColor" }) {
2166
2114
  strokeLinejoin: "round",
2167
2115
  xmlns: "http://www.w3.org/2000/svg"
2168
2116
  },
2169
- /* @__PURE__ */ import_react10.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2170
- /* @__PURE__ */ import_react10.default.createElement("path", { d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" })
2117
+ /* @__PURE__ */ import_react9.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2118
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" })
2171
2119
  );
2172
2120
  }
2173
2121
  function BranchIcon({ size = 16, color = "currentColor", branch }) {
2174
2122
  let paths;
2175
2123
  switch (branch) {
2176
2124
  case "executive":
2177
- paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ import_react10.default.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ import_react10.default.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2125
+ paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ import_react9.default.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ import_react9.default.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2178
2126
  break;
2179
2127
  case "legislative":
2180
- paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M15 12h-5" }));
2128
+ paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M15 12h-5" }));
2181
2129
  break;
2182
2130
  case "judicial":
2183
- paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M8 21h8" }));
2131
+ paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M8 21h8" }));
2184
2132
  break;
2185
2133
  default:
2186
- paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M6 18v-7" }));
2134
+ paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M6 18v-7" }));
2187
2135
  break;
2188
2136
  }
2189
- return /* @__PURE__ */ import_react10.default.createElement(
2137
+ return /* @__PURE__ */ import_react9.default.createElement(
2190
2138
  "svg",
2191
2139
  {
2192
2140
  width: size,
@@ -2205,24 +2153,24 @@ function BranchIcon({ size = 16, color = "currentColor", branch }) {
2205
2153
 
2206
2154
  // src/IconOverlay.jsx
2207
2155
  function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps = {}, onClick }) {
2208
- const [isOpen, setIsOpen] = (0, import_react11.useState)(false);
2209
- const { refs, floatingStyles, context } = (0, import_react12.useFloating)({
2156
+ const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
2157
+ const { refs, floatingStyles, context } = (0, import_react11.useFloating)({
2210
2158
  open: isOpen,
2211
2159
  onOpenChange: setIsOpen,
2212
- middleware: [(0, import_react12.offset)(8), (0, import_react12.flip)(), (0, import_react12.shift)({ padding: 4 })],
2213
- whileElementsMounted: import_react12.autoUpdate
2160
+ middleware: [(0, import_react11.offset)(8), (0, import_react11.flip)(), (0, import_react11.shift)({ padding: 4 })],
2161
+ whileElementsMounted: import_react11.autoUpdate
2214
2162
  });
2215
- const hover = (0, import_react12.useHover)(context);
2216
- const focus2 = (0, import_react12.useFocus)(context);
2217
- const dismiss = (0, import_react12.useDismiss)(context);
2218
- const role = (0, import_react12.useRole)(context, { role: "tooltip" });
2219
- const { getReferenceProps, getFloatingProps } = (0, import_react12.useInteractions)([
2163
+ const hover = (0, import_react11.useHover)(context);
2164
+ const focus2 = (0, import_react11.useFocus)(context);
2165
+ const dismiss = (0, import_react11.useDismiss)(context);
2166
+ const role = (0, import_react11.useRole)(context, { role: "tooltip" });
2167
+ const { getReferenceProps, getFloatingProps } = (0, import_react11.useInteractions)([
2220
2168
  hover,
2221
2169
  focus2,
2222
2170
  dismiss,
2223
2171
  role
2224
2172
  ]);
2225
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
2173
+ return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(
2226
2174
  "span",
2227
2175
  {
2228
2176
  ref: refs.setReference,
@@ -2235,8 +2183,8 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2235
2183
  onClick(e);
2236
2184
  } : void 0
2237
2185
  },
2238
- /* @__PURE__ */ import_react11.default.createElement(IconComponent, { size, color, ...extraProps })
2239
- ), isOpen && /* @__PURE__ */ import_react11.default.createElement(import_react12.FloatingPortal, null, /* @__PURE__ */ import_react11.default.createElement(
2186
+ /* @__PURE__ */ import_react10.default.createElement(IconComponent, { size, color, ...extraProps })
2187
+ ), isOpen && /* @__PURE__ */ import_react10.default.createElement(import_react11.FloatingPortal, null, /* @__PURE__ */ import_react10.default.createElement(
2240
2188
  "div",
2241
2189
  {
2242
2190
  ref: refs.setFloating,
@@ -2260,7 +2208,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2260
2208
  function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2261
2209
  if (!ballot && !hasStances && !branch) return null;
2262
2210
  const ballotTooltip = ballot ? `This seat is on your ballot \u2014 ${ballot.electionLabel}: ${new Date(ballot.electionDate).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })}` : null;
2263
- return /* @__PURE__ */ import_react11.default.createElement(
2211
+ return /* @__PURE__ */ import_react10.default.createElement(
2264
2212
  "div",
2265
2213
  {
2266
2214
  style: {
@@ -2273,7 +2221,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2273
2221
  // offset icon wrapper padding so icons align flush-left with text
2274
2222
  }
2275
2223
  },
2276
- ballot && /* @__PURE__ */ import_react11.default.createElement(
2224
+ ballot && /* @__PURE__ */ import_react10.default.createElement(
2277
2225
  IconWithTooltip,
2278
2226
  {
2279
2227
  IconComponent: BallotIcon,
@@ -2282,7 +2230,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2282
2230
  size: 14
2283
2231
  }
2284
2232
  ),
2285
- hasStances && /* @__PURE__ */ import_react11.default.createElement(
2233
+ hasStances && /* @__PURE__ */ import_react10.default.createElement(
2286
2234
  IconWithTooltip,
2287
2235
  {
2288
2236
  IconComponent: CompassIcon,
@@ -2292,7 +2240,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2292
2240
  onClick: onCompassClick
2293
2241
  }
2294
2242
  ),
2295
- branch && /* @__PURE__ */ import_react11.default.createElement(
2243
+ branch && /* @__PURE__ */ import_react10.default.createElement(
2296
2244
  IconWithTooltip,
2297
2245
  {
2298
2246
  IconComponent: BranchIcon,
@@ -2312,20 +2260,20 @@ function CompassCardHorizontalMeta({
2312
2260
  userAnswers
2313
2261
  }) {
2314
2262
  const titleText = surface === "elections" ? politician.office_running_for : politician.office_title;
2315
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2263
+ return /* @__PURE__ */ import_react12.default.createElement("div", { style: {
2316
2264
  flex: 1,
2317
2265
  minWidth: 0,
2318
2266
  display: "flex",
2319
2267
  flexDirection: "column",
2320
2268
  gap: spacing[1]
2321
- } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2269
+ } }, /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2322
2270
  fontFamily: fonts.primary,
2323
2271
  fontSize: fontSizes.lg,
2324
2272
  fontWeight: fontWeights.semibold,
2325
2273
  lineHeight: 1.4,
2326
2274
  color: colors.evMutedBlue,
2327
2275
  margin: 0
2328
- } }, politician.full_name), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2276
+ } }, politician.full_name), /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2329
2277
  fontFamily: fonts.primary,
2330
2278
  fontSize: fontSizes.sm,
2331
2279
  fontWeight: fontWeights.semibold,
@@ -2336,7 +2284,7 @@ function CompassCardHorizontalMeta({
2336
2284
  display: "-webkit-box",
2337
2285
  WebkitLineClamp: 2,
2338
2286
  WebkitBoxOrient: "vertical"
2339
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2287
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2340
2288
  fontFamily: fonts.primary,
2341
2289
  fontSize: fontSizes.sm,
2342
2290
  fontWeight: fontWeights.regular,
@@ -2346,7 +2294,7 @@ function CompassCardHorizontalMeta({
2346
2294
  overflow: "hidden",
2347
2295
  textOverflow: "ellipsis",
2348
2296
  whiteSpace: "nowrap"
2349
- } }, politician.district_label), /* @__PURE__ */ import_react13.default.createElement(
2297
+ } }, politician.district_label), /* @__PURE__ */ import_react12.default.createElement(
2350
2298
  IconOverlay,
2351
2299
  {
2352
2300
  ballot: politician.ballot || null,
@@ -2395,11 +2343,11 @@ function CompassCardHorizontal({
2395
2343
  onClick
2396
2344
  }) {
2397
2345
  var _a;
2398
- const [hovered, setHovered] = (0, import_react14.useState)(false);
2399
- const [focused, setFocused] = (0, import_react14.useState)(false);
2400
- const [imgError, setImgError] = (0, import_react14.useState)(false);
2401
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2402
- (0, import_react14.useEffect)(() => {
2346
+ const [hovered, setHovered] = (0, import_react13.useState)(false);
2347
+ const [focused, setFocused] = (0, import_react13.useState)(false);
2348
+ const [imgError, setImgError] = (0, import_react13.useState)(false);
2349
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react13.useState)(false);
2350
+ (0, import_react13.useEffect)(() => {
2403
2351
  setImgError(false);
2404
2352
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2405
2353
  const cardStyle = {
@@ -2423,7 +2371,7 @@ function CompassCardHorizontal({
2423
2371
  function renderCompass() {
2424
2372
  var _a2, _b, _c;
2425
2373
  if (!userAnswers || userAnswers.length === 0) {
2426
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2374
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2427
2375
  }
2428
2376
  let topics = [];
2429
2377
  let data = {};
@@ -2459,12 +2407,12 @@ function CompassCardHorizontal({
2459
2407
  }, {}) : politician.stances;
2460
2408
  }
2461
2409
  if (topics.length === 0) {
2462
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2410
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2463
2411
  }
2464
2412
  } catch (err) {
2465
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2413
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2466
2414
  }
2467
- return /* @__PURE__ */ import_react14.default.createElement(
2415
+ return /* @__PURE__ */ import_react13.default.createElement(
2468
2416
  RadarChartCore,
2469
2417
  {
2470
2418
  topics,
@@ -2486,7 +2434,7 @@ function CompassCardHorizontal({
2486
2434
  var _a2, _b, _c;
2487
2435
  const imageSrc = (politician == null ? void 0 : politician.photo_origin_url) || (politician == null ? void 0 : politician.images) && ((_a2 = politician.images[0]) == null ? void 0 : _a2.url) || null;
2488
2436
  if (imageSrc && !imgError) {
2489
- return /* @__PURE__ */ import_react14.default.createElement(
2437
+ return /* @__PURE__ */ import_react13.default.createElement(
2490
2438
  "img",
2491
2439
  {
2492
2440
  src: imageSrc,
@@ -2504,7 +2452,7 @@ function CompassCardHorizontal({
2504
2452
  }
2505
2453
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2506
2454
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2507
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2455
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2508
2456
  width: "100%",
2509
2457
  height: "100%",
2510
2458
  backgroundColor: colors.evMutedBlue,
@@ -2518,7 +2466,7 @@ function CompassCardHorizontal({
2518
2466
  } }, initials);
2519
2467
  }
2520
2468
  function renderEmptyVariant() {
2521
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2469
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2522
2470
  width: "100%",
2523
2471
  height: "100%",
2524
2472
  display: "flex",
@@ -2529,14 +2477,14 @@ function CompassCardHorizontal({
2529
2477
  padding: "12px 14px",
2530
2478
  boxSizing: "border-box",
2531
2479
  backgroundColor: colorScales.teal["050"]
2532
- } }, /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2480
+ } }, /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2533
2481
  margin: 0,
2534
2482
  fontSize: fontSizes.xs,
2535
2483
  color: colors.textMuted,
2536
2484
  textAlign: "center",
2537
2485
  lineHeight: 1.4,
2538
2486
  fontFamily: fonts.primary
2539
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react14.default.createElement(
2487
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react13.default.createElement(
2540
2488
  "button",
2541
2489
  {
2542
2490
  type: "button",
@@ -2564,7 +2512,7 @@ function CompassCardHorizontal({
2564
2512
  ));
2565
2513
  }
2566
2514
  function renderUnavailablePlate(message = "Compass currently unavailable for this role.") {
2567
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2515
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2568
2516
  width: "100%",
2569
2517
  height: "100%",
2570
2518
  backgroundColor: colorScales.teal["050"],
@@ -2573,7 +2521,7 @@ function CompassCardHorizontal({
2573
2521
  justifyContent: "center",
2574
2522
  padding: spacing[4],
2575
2523
  boxSizing: "border-box"
2576
- } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2524
+ } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2577
2525
  fontSize: fontSizes.sm,
2578
2526
  fontWeight: fontWeights.semibold,
2579
2527
  lineHeight: 1.4,
@@ -2592,7 +2540,7 @@ function CompassCardHorizontal({
2592
2540
  const name = (politician == null ? void 0 : politician.full_name) || "this official";
2593
2541
  return renderUnavailablePlate(`No compass stances on file for ${name} yet.`);
2594
2542
  }
2595
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2543
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2596
2544
  width: "100%",
2597
2545
  height: "100%",
2598
2546
  display: "flex",
@@ -2602,7 +2550,7 @@ function CompassCardHorizontal({
2602
2550
  boxSizing: "border-box"
2603
2551
  } }, renderCompass());
2604
2552
  }
2605
- return /* @__PURE__ */ import_react14.default.createElement(
2553
+ return /* @__PURE__ */ import_react13.default.createElement(
2606
2554
  "div",
2607
2555
  {
2608
2556
  role: "article",
@@ -2621,7 +2569,7 @@ function CompassCardHorizontal({
2621
2569
  onFocus: () => setFocused(true),
2622
2570
  onBlur: () => setFocused(false)
2623
2571
  },
2624
- /* @__PURE__ */ import_react14.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2572
+ /* @__PURE__ */ import_react13.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2625
2573
  position: "absolute",
2626
2574
  bottom: "15px",
2627
2575
  left: 0,
@@ -2636,7 +2584,7 @@ function CompassCardHorizontal({
2636
2584
  padding: "6px 0",
2637
2585
  pointerEvents: "none"
2638
2586
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed")),
2639
- /* @__PURE__ */ import_react14.default.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ import_react14.default.createElement(
2587
+ /* @__PURE__ */ import_react13.default.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ import_react13.default.createElement(
2640
2588
  CompassCardHorizontalMeta,
2641
2589
  {
2642
2590
  politician,
@@ -2648,7 +2596,7 @@ function CompassCardHorizontal({
2648
2596
  }
2649
2597
 
2650
2598
  // src/CompassCardVertical.jsx
2651
- var import_react15 = __toESM(require("react"));
2599
+ var import_react14 = __toESM(require("react"));
2652
2600
  var RADAR_SIZE2 = 400;
2653
2601
  function CompassCardVertical({
2654
2602
  politician,
@@ -2662,11 +2610,11 @@ function CompassCardVertical({
2662
2610
  onClick
2663
2611
  }) {
2664
2612
  var _a;
2665
- const [hovered, setHovered] = (0, import_react15.useState)(false);
2666
- const [focused, setFocused] = (0, import_react15.useState)(false);
2667
- const [imgError, setImgError] = (0, import_react15.useState)(false);
2668
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react15.useState)(false);
2669
- (0, import_react15.useEffect)(() => {
2613
+ const [hovered, setHovered] = (0, import_react14.useState)(false);
2614
+ const [focused, setFocused] = (0, import_react14.useState)(false);
2615
+ const [imgError, setImgError] = (0, import_react14.useState)(false);
2616
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2617
+ (0, import_react14.useEffect)(() => {
2670
2618
  setImgError(false);
2671
2619
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2672
2620
  const cardStyle = {
@@ -2689,7 +2637,7 @@ function CompassCardVertical({
2689
2637
  function renderCompass() {
2690
2638
  var _a2, _b, _c;
2691
2639
  if (!userAnswers || userAnswers.length === 0) {
2692
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2640
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2693
2641
  }
2694
2642
  let topics = [];
2695
2643
  let data = {};
@@ -2725,17 +2673,17 @@ function CompassCardVertical({
2725
2673
  }, {}) : politician.stances;
2726
2674
  }
2727
2675
  if (topics.length === 0) {
2728
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2676
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2729
2677
  }
2730
2678
  } catch {
2731
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2679
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2732
2680
  }
2733
2681
  const unansweredSpokes = {};
2734
2682
  for (const t of topics) {
2735
2683
  const v = compareData[t.short_title];
2736
2684
  if (!v || Number(v) === 0) unansweredSpokes[t.short_title] = true;
2737
2685
  }
2738
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react15.default.createElement(
2686
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react14.default.createElement(
2739
2687
  RadarChartCore,
2740
2688
  {
2741
2689
  topics,
@@ -2770,7 +2718,7 @@ function CompassCardVertical({
2770
2718
  justifyContent: "center"
2771
2719
  };
2772
2720
  if (imageSrc && !imgError) {
2773
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react15.default.createElement(
2721
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement(
2774
2722
  "img",
2775
2723
  {
2776
2724
  src: imageSrc,
@@ -2788,7 +2736,7 @@ function CompassCardVertical({
2788
2736
  }
2789
2737
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2790
2738
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2791
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
2739
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement("span", { style: {
2792
2740
  color: colors.textWhite,
2793
2741
  fontFamily: fonts.primary,
2794
2742
  fontWeight: fontWeights.bold,
@@ -2799,7 +2747,7 @@ function CompassCardVertical({
2799
2747
  var _a2, _b, _c;
2800
2748
  const imageSrc = (politician == null ? void 0 : politician.photo_origin_url) || (politician == null ? void 0 : politician.images) && ((_a2 = politician.images[0]) == null ? void 0 : _a2.url) || null;
2801
2749
  if (imageSrc && !imgError) {
2802
- return /* @__PURE__ */ import_react15.default.createElement(
2750
+ return /* @__PURE__ */ import_react14.default.createElement(
2803
2751
  "img",
2804
2752
  {
2805
2753
  src: imageSrc,
@@ -2818,7 +2766,7 @@ function CompassCardVertical({
2818
2766
  }
2819
2767
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2820
2768
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2821
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2769
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2822
2770
  width: RADAR_SIZE2,
2823
2771
  height: RADAR_SIZE2,
2824
2772
  backgroundColor: colors.evMutedBlue,
@@ -2833,7 +2781,7 @@ function CompassCardVertical({
2833
2781
  } }, initials);
2834
2782
  }
2835
2783
  function renderEmptyVariant() {
2836
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2784
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2837
2785
  width: "100%",
2838
2786
  height: "100%",
2839
2787
  flex: 1,
@@ -2846,14 +2794,14 @@ function CompassCardVertical({
2846
2794
  boxSizing: "border-box",
2847
2795
  backgroundColor: colorScales.teal["050"],
2848
2796
  borderRadius: borderRadius.md
2849
- } }, /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2797
+ } }, /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2850
2798
  margin: 0,
2851
2799
  fontSize: fontSizes.sm,
2852
2800
  color: colors.textMuted,
2853
2801
  textAlign: "center",
2854
2802
  lineHeight: 1.4,
2855
2803
  fontFamily: fonts.primary
2856
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react15.default.createElement(
2804
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react14.default.createElement(
2857
2805
  "button",
2858
2806
  {
2859
2807
  type: "button",
@@ -2879,7 +2827,7 @@ function CompassCardVertical({
2879
2827
  ));
2880
2828
  }
2881
2829
  function renderUnavailablePlate(message) {
2882
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2830
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2883
2831
  width: "100%",
2884
2832
  height: "100%",
2885
2833
  flex: 1,
@@ -2890,7 +2838,7 @@ function CompassCardVertical({
2890
2838
  justifyContent: "center",
2891
2839
  padding: spacing[6],
2892
2840
  boxSizing: "border-box"
2893
- } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2841
+ } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2894
2842
  fontSize: fontSizes.base,
2895
2843
  fontWeight: fontWeights.semibold,
2896
2844
  lineHeight: 1.4,
@@ -2911,7 +2859,7 @@ function CompassCardVertical({
2911
2859
  }
2912
2860
  return renderCompass();
2913
2861
  }
2914
- return /* @__PURE__ */ import_react15.default.createElement(
2862
+ return /* @__PURE__ */ import_react14.default.createElement(
2915
2863
  "div",
2916
2864
  {
2917
2865
  role: "article",
@@ -2930,21 +2878,21 @@ function CompassCardVertical({
2930
2878
  onFocus: () => setFocused(true),
2931
2879
  onBlur: () => setFocused(false)
2932
2880
  },
2933
- /* @__PURE__ */ import_react15.default.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ import_react15.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2881
+ /* @__PURE__ */ import_react14.default.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2934
2882
  fontFamily: fonts.primary,
2935
2883
  fontSize: fontSizes.xl,
2936
2884
  fontWeight: fontWeights.semibold,
2937
2885
  lineHeight: 1.3,
2938
2886
  color: colors.evMutedBlue,
2939
2887
  margin: 0
2940
- } }, politician.full_name), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2888
+ } }, politician.full_name), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2941
2889
  fontFamily: fonts.primary,
2942
2890
  fontSize: fontSizes.sm,
2943
2891
  fontWeight: fontWeights.semibold,
2944
2892
  lineHeight: 1.4,
2945
2893
  color: colors.textSecondary,
2946
2894
  margin: 0
2947
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2895
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2948
2896
  fontFamily: fonts.primary,
2949
2897
  fontSize: fontSizes.sm,
2950
2898
  fontWeight: fontWeights.regular,
@@ -2954,7 +2902,7 @@ function CompassCardVertical({
2954
2902
  overflow: "hidden",
2955
2903
  textOverflow: "ellipsis",
2956
2904
  whiteSpace: "nowrap"
2957
- } }, politician.district_label), /* @__PURE__ */ import_react15.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react15.default.createElement(
2905
+ } }, politician.district_label), /* @__PURE__ */ import_react14.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react14.default.createElement(
2958
2906
  IconOverlay,
2959
2907
  {
2960
2908
  ballot: politician.ballot || null,
@@ -2962,7 +2910,7 @@ function CompassCardVertical({
2962
2910
  branch: politician.branch || null
2963
2911
  }
2964
2912
  )))),
2965
- surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2913
+ surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2966
2914
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2967
2915
  backgroundColor: "rgba(120,0,0,0.85)",
2968
2916
  color: "#fff",
@@ -2974,7 +2922,7 @@ function CompassCardVertical({
2974
2922
  padding: "6px 0",
2975
2923
  borderRadius: borderRadius.sm
2976
2924
  } }, "Withdrawn"),
2977
- surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2925
+ surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2978
2926
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2979
2927
  backgroundColor: "rgba(0,0,0,0.75)",
2980
2928
  color: "#fff",
@@ -2986,7 +2934,7 @@ function CompassCardVertical({
2986
2934
  padding: "6px 0",
2987
2935
  borderRadius: borderRadius.sm
2988
2936
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed"),
2989
- /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2937
+ /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2990
2938
  flex: 1,
2991
2939
  padding: spacing[4],
2992
2940
  paddingTop: 0,
@@ -3000,7 +2948,7 @@ function CompassCardVertical({
3000
2948
  }
3001
2949
 
3002
2950
  // src/CompassKey.jsx
3003
- var import_react16 = __toESM(require("react"));
2951
+ var import_react15 = __toESM(require("react"));
3004
2952
 
3005
2953
  // src/evContext.js
3006
2954
  var DEFAULT_BROKER_URL = "https://ev-context.empowered.vote/";
@@ -3245,9 +3193,9 @@ var evContext = {
3245
3193
 
3246
3194
  // src/CompassKey.jsx
3247
3195
  function CompassKey({ compact = false } = {}) {
3248
- const [dismissed, setDismissed] = (0, import_react16.useState)(false);
3249
- const [loaded, setLoaded] = (0, import_react16.useState)(false);
3250
- (0, import_react16.useEffect)(() => {
3196
+ const [dismissed, setDismissed] = (0, import_react15.useState)(false);
3197
+ const [loaded, setLoaded] = (0, import_react15.useState)(false);
3198
+ (0, import_react15.useEffect)(() => {
3251
3199
  let cancelled = false;
3252
3200
  evContext.get().then((shared) => {
3253
3201
  if (cancelled) return;
@@ -3277,7 +3225,7 @@ function CompassKey({ compact = false } = {}) {
3277
3225
  persistDismissed(false);
3278
3226
  }
3279
3227
  if (!loaded) return null;
3280
- const Swatch = ({ color, label, ring }) => /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3228
+ const Swatch = ({ color, label, ring }) => /* @__PURE__ */ import_react15.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3281
3229
  display: "inline-block",
3282
3230
  width: 12,
3283
3231
  height: 12,
@@ -3285,9 +3233,9 @@ function CompassKey({ compact = false } = {}) {
3285
3233
  background: color,
3286
3234
  border: `2px solid ${ring || "#fff"}`,
3287
3235
  boxShadow: "0 0 0 1px rgba(0,0,0,0.08)"
3288
- } }), /* @__PURE__ */ import_react16.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3236
+ } }), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3289
3237
  if (dismissed) {
3290
- return /* @__PURE__ */ import_react16.default.createElement(
3238
+ return /* @__PURE__ */ import_react15.default.createElement(
3291
3239
  "button",
3292
3240
  {
3293
3241
  type: "button",
@@ -3308,11 +3256,11 @@ function CompassKey({ compact = false } = {}) {
3308
3256
  cursor: "pointer"
3309
3257
  }
3310
3258
  },
3311
- /* @__PURE__ */ import_react16.default.createElement("span", { "aria-hidden": "true" }, "?"),
3259
+ /* @__PURE__ */ import_react15.default.createElement("span", { "aria-hidden": "true" }, "?"),
3312
3260
  " Compass key"
3313
3261
  );
3314
3262
  }
3315
- return /* @__PURE__ */ import_react16.default.createElement(
3263
+ return /* @__PURE__ */ import_react15.default.createElement(
3316
3264
  "div",
3317
3265
  {
3318
3266
  role: "region",
@@ -3331,17 +3279,17 @@ function CompassKey({ compact = false } = {}) {
3331
3279
  boxSizing: "border-box"
3332
3280
  }
3333
3281
  },
3334
- !compact && /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3282
+ !compact && /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3335
3283
  fontSize: fontSizes.xs,
3336
3284
  fontWeight: fontWeights.semibold,
3337
3285
  color: colors.textMuted,
3338
3286
  textTransform: "uppercase",
3339
3287
  letterSpacing: "0.5px"
3340
3288
  } }, "Compass key"),
3341
- /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3342
- /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3343
- /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3344
- /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3289
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3290
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3291
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3292
+ /* @__PURE__ */ import_react15.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3345
3293
  fontSize: fontSizes.xs,
3346
3294
  fontWeight: fontWeights.semibold,
3347
3295
  color: "#9ca3af",
@@ -3349,8 +3297,8 @@ function CompassKey({ compact = false } = {}) {
3349
3297
  textDecoration: "underline",
3350
3298
  textDecorationStyle: "dashed",
3351
3299
  textUnderlineOffset: "3px"
3352
- } }, "Topic"), /* @__PURE__ */ import_react16.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3353
- /* @__PURE__ */ import_react16.default.createElement(
3300
+ } }, "Topic"), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3301
+ /* @__PURE__ */ import_react15.default.createElement(
3354
3302
  "button",
3355
3303
  {
3356
3304
  type: "button",
@@ -3373,7 +3321,7 @@ function CompassKey({ compact = false } = {}) {
3373
3321
  }
3374
3322
 
3375
3323
  // src/CategorySection.jsx
3376
- var import_react17 = __toESM(require("react"));
3324
+ var import_react16 = __toESM(require("react"));
3377
3325
  function CategorySection({
3378
3326
  title,
3379
3327
  infoTooltip,
@@ -3383,7 +3331,7 @@ function CategorySection({
3383
3331
  tier
3384
3332
  }) {
3385
3333
  var _a, _b;
3386
- const [showTooltip, setShowTooltip] = (0, import_react17.useState)(false);
3334
+ const [showTooltip, setShowTooltip] = (0, import_react16.useState)(false);
3387
3335
  const tierStyle = tier ? tierColors[tier] : null;
3388
3336
  const styles2 = {
3389
3337
  section: {
@@ -3451,7 +3399,7 @@ function CategorySection({
3451
3399
  gap: spacing[4]
3452
3400
  }
3453
3401
  };
3454
- return /* @__PURE__ */ import_react17.default.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react17.default.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ import_react17.default.createElement(
3402
+ return /* @__PURE__ */ import_react16.default.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react16.default.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ import_react16.default.createElement(
3455
3403
  "button",
3456
3404
  {
3457
3405
  type: "button",
@@ -3463,8 +3411,8 @@ function CategorySection({
3463
3411
  "aria-label": `Info about ${title}`
3464
3412
  },
3465
3413
  "i",
3466
- showTooltip && /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3467
- ), websiteUrl && /* @__PURE__ */ import_react17.default.createElement(
3414
+ showTooltip && /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3415
+ ), websiteUrl && /* @__PURE__ */ import_react16.default.createElement(
3468
3416
  "a",
3469
3417
  {
3470
3418
  href: websiteUrl,
@@ -3473,7 +3421,7 @@ function CategorySection({
3473
3421
  style: styles2.externalLink,
3474
3422
  "aria-label": `Visit official website for ${title}`
3475
3423
  },
3476
- /* @__PURE__ */ import_react17.default.createElement(
3424
+ /* @__PURE__ */ import_react16.default.createElement(
3477
3425
  "svg",
3478
3426
  {
3479
3427
  viewBox: "0 0 24 24",
@@ -3481,7 +3429,7 @@ function CategorySection({
3481
3429
  xmlns: "http://www.w3.org/2000/svg",
3482
3430
  style: { width: "14px", height: "14px" }
3483
3431
  },
3484
- /* @__PURE__ */ import_react17.default.createElement(
3432
+ /* @__PURE__ */ import_react16.default.createElement(
3485
3433
  "path",
3486
3434
  {
3487
3435
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14",
@@ -3492,11 +3440,11 @@ function CategorySection({
3492
3440
  }
3493
3441
  )
3494
3442
  )
3495
- )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3443
+ )), /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3496
3444
  }
3497
3445
 
3498
3446
  // src/SubGroupSection.jsx
3499
- var import_react18 = __toESM(require("react"));
3447
+ var import_react17 = __toESM(require("react"));
3500
3448
  function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap, justifyContent }) {
3501
3449
  const styles2 = {
3502
3450
  section: {
@@ -3531,7 +3479,7 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3531
3479
  width: "100%"
3532
3480
  }
3533
3481
  };
3534
- return /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3482
+ return /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react17.default.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ import_react17.default.createElement(
3535
3483
  "a",
3536
3484
  {
3537
3485
  href: websiteUrl,
@@ -3539,12 +3487,12 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3539
3487
  rel: "noopener noreferrer",
3540
3488
  style: styles2.link
3541
3489
  },
3542
- /* @__PURE__ */ import_react18.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react18.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react18.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3543
- )), /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3490
+ /* @__PURE__ */ import_react17.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react17.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react17.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3491
+ )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3544
3492
  }
3545
3493
 
3546
3494
  // src/GovernmentBodySection.jsx
3547
- var import_react19 = __toESM(require("react"));
3495
+ var import_react18 = __toESM(require("react"));
3548
3496
  function GovernmentBodySection({
3549
3497
  title,
3550
3498
  websiteUrl,
@@ -3553,7 +3501,7 @@ function GovernmentBodySection({
3553
3501
  children
3554
3502
  }) {
3555
3503
  var _a;
3556
- const [expanded, setExpanded] = (0, import_react19.useState)(defaultExpanded);
3504
+ const [expanded, setExpanded] = (0, import_react18.useState)(defaultExpanded);
3557
3505
  const tierStyle = tier ? tierColors[tier] : null;
3558
3506
  const accentColor = (_a = tierStyle == null ? void 0 : tierStyle.accent) != null ? _a : colors.borderMedium;
3559
3507
  const styles2 = {
@@ -3593,7 +3541,7 @@ function GovernmentBodySection({
3593
3541
  display: expanded ? "block" : "none"
3594
3542
  }
3595
3543
  };
3596
- return /* @__PURE__ */ import_react19.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react19.default.createElement(
3544
+ return /* @__PURE__ */ import_react18.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react18.default.createElement(
3597
3545
  "div",
3598
3546
  {
3599
3547
  style: styles2.header,
@@ -3609,8 +3557,8 @@ function GovernmentBodySection({
3609
3557
  "aria-expanded": expanded,
3610
3558
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${title}`
3611
3559
  },
3612
- /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.title }, title),
3613
- websiteUrl && /* @__PURE__ */ import_react19.default.createElement(
3560
+ /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.title }, title),
3561
+ websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3614
3562
  "a",
3615
3563
  {
3616
3564
  href: websiteUrl,
@@ -3620,14 +3568,14 @@ function GovernmentBodySection({
3620
3568
  onClick: (e) => e.stopPropagation(),
3621
3569
  "aria-label": `Visit ${title} website`
3622
3570
  },
3623
- /* @__PURE__ */ import_react19.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3571
+ /* @__PURE__ */ import_react18.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ import_react18.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react18.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3624
3572
  ),
3625
- /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3626
- ), /* @__PURE__ */ import_react19.default.createElement("div", { style: styles2.content }, children));
3573
+ /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3574
+ ), /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.content }, children));
3627
3575
  }
3628
3576
 
3629
3577
  // src/SocialLinks.jsx
3630
- var import_react20 = __toESM(require("react"));
3578
+ var import_react19 = __toESM(require("react"));
3631
3579
  var SOCIAL_PLATFORMS = [
3632
3580
  { test: /facebook\.com/i, platform: "facebook" },
3633
3581
  { test: /twitter\.com|x\.com/i, platform: "twitter" },
@@ -3698,7 +3646,7 @@ function SocialLinks({
3698
3646
  }
3699
3647
  };
3700
3648
  const platformIconMap = {
3701
- twitter: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3649
+ twitter: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3702
3650
  "path",
3703
3651
  {
3704
3652
  d: "M4 4L10.5 12.5M20 20L13.5 11.5M10.5 12.5L4 20H8L13.5 11.5M10.5 12.5L16 4H20L13.5 11.5",
@@ -3708,7 +3656,7 @@ function SocialLinks({
3708
3656
  strokeLinejoin: "round"
3709
3657
  }
3710
3658
  )),
3711
- facebook: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3659
+ facebook: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3712
3660
  "path",
3713
3661
  {
3714
3662
  d: "M18 2H15C13.6739 2 12.4021 2.52678 11.4645 3.46447C10.5268 4.40215 10 5.67392 10 7V10H7V14H10V22H14V14H17L18 10H14V7C14 6.73478 14.1054 6.48043 14.2929 6.29289C14.4804 6.10536 14.7348 6 15 6H18V2Z",
@@ -3718,8 +3666,8 @@ function SocialLinks({
3718
3666
  strokeLinejoin: "round"
3719
3667
  }
3720
3668
  )),
3721
- instagram: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
3722
- linkedin: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3669
+ instagram: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
3670
+ linkedin: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3723
3671
  "path",
3724
3672
  {
3725
3673
  d: "M16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8Z",
@@ -3728,8 +3676,8 @@ function SocialLinks({
3728
3676
  strokeLinecap: "round",
3729
3677
  strokeLinejoin: "round"
3730
3678
  }
3731
- ), /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
3732
- youtube: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
3679
+ ), /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
3680
+ youtube: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
3733
3681
  };
3734
3682
  const links = [
3735
3683
  {
@@ -3755,7 +3703,7 @@ function SocialLinks({
3755
3703
  {
3756
3704
  href: website,
3757
3705
  label: "Website",
3758
- icon: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement(
3706
+ icon: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement(
3759
3707
  "path",
3760
3708
  {
3761
3709
  d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z",
@@ -3785,7 +3733,7 @@ function SocialLinks({
3785
3733
  if (links.length === 0) {
3786
3734
  return null;
3787
3735
  }
3788
- return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react20.default.createElement(
3736
+ return /* @__PURE__ */ import_react19.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react19.default.createElement(
3789
3737
  "a",
3790
3738
  {
3791
3739
  key: link.label,
@@ -3808,7 +3756,7 @@ function SocialLinks({
3808
3756
  }
3809
3757
 
3810
3758
  // src/IssueTags.jsx
3811
- var import_react21 = __toESM(require("react"));
3759
+ var import_react20 = __toESM(require("react"));
3812
3760
  function IssueTags({
3813
3761
  tags = [],
3814
3762
  selectedTags = [],
@@ -3851,9 +3799,9 @@ function IssueTags({
3851
3799
  onTagClick(tag.value);
3852
3800
  }
3853
3801
  };
3854
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3802
+ return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3855
3803
  const isSelected = selectedTags.includes(tag.value);
3856
- return /* @__PURE__ */ import_react21.default.createElement(
3804
+ return /* @__PURE__ */ import_react20.default.createElement(
3857
3805
  "span",
3858
3806
  {
3859
3807
  key: tag.value,
@@ -3882,7 +3830,7 @@ function IssueTags({
3882
3830
  }
3883
3831
 
3884
3832
  // src/CommitteeTable.jsx
3885
- var import_react22 = __toESM(require("react"));
3833
+ var import_react21 = __toESM(require("react"));
3886
3834
  var ROLE_ORDER = {
3887
3835
  "chair": 0,
3888
3836
  "co-chair": 1,
@@ -3909,7 +3857,7 @@ function CommitteeTable({
3909
3857
  maxVisible = 6,
3910
3858
  style = {}
3911
3859
  }) {
3912
- const [showAll, setShowAll] = (0, import_react22.useState)(false);
3860
+ const [showAll, setShowAll] = (0, import_react21.useState)(false);
3913
3861
  if (committees.length === 0) {
3914
3862
  return null;
3915
3863
  }
@@ -3971,7 +3919,7 @@ function CommitteeTable({
3971
3919
  cursor: "pointer"
3972
3920
  }
3973
3921
  };
3974
- return /* @__PURE__ */ import_react22.default.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ import_react22.default.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ import_react22.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react22.default.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ import_react22.default.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ import_react22.default.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ import_react22.default.createElement("table", { style: styles2.table }, /* @__PURE__ */ import_react22.default.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ import_react22.default.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ import_react22.default.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ import_react22.default.createElement(
3922
+ return /* @__PURE__ */ import_react21.default.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ import_react21.default.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ import_react21.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react21.default.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ import_react21.default.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ import_react21.default.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ import_react21.default.createElement("table", { style: styles2.table }, /* @__PURE__ */ import_react21.default.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ import_react21.default.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ import_react21.default.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ import_react21.default.createElement(
3975
3923
  "a",
3976
3924
  {
3977
3925
  href: committee.url,
@@ -3986,7 +3934,7 @@ function CommitteeTable({
3986
3934
  }
3987
3935
  },
3988
3936
  committee.name
3989
- ) : committee.name), /* @__PURE__ */ import_react22.default.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ import_react22.default.createElement(
3937
+ ) : committee.name), /* @__PURE__ */ import_react21.default.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ import_react21.default.createElement(
3990
3938
  "button",
3991
3939
  {
3992
3940
  type: "button",
@@ -3994,7 +3942,7 @@ function CommitteeTable({
3994
3942
  onClick: () => setShowAll(!showAll)
3995
3943
  },
3996
3944
  showAll ? "Show less" : `Show all ${sorted.length} committees`,
3997
- /* @__PURE__ */ import_react22.default.createElement(
3945
+ /* @__PURE__ */ import_react21.default.createElement(
3998
3946
  "svg",
3999
3947
  {
4000
3948
  width: "14",
@@ -4007,16 +3955,16 @@ function CommitteeTable({
4007
3955
  strokeLinejoin: "round",
4008
3956
  style: { transform: showAll ? "rotate(180deg)" : "none", transition: "transform 0.2s" }
4009
3957
  },
4010
- /* @__PURE__ */ import_react22.default.createElement("polyline", { points: "6 9 12 15 18 9" })
3958
+ /* @__PURE__ */ import_react21.default.createElement("polyline", { points: "6 9 12 15 18 9" })
4011
3959
  )
4012
3960
  ));
4013
3961
  }
4014
3962
 
4015
3963
  // src/PoliticianProfile.jsx
4016
- var import_react25 = __toESM(require("react"));
3964
+ var import_react24 = __toESM(require("react"));
4017
3965
 
4018
3966
  // src/LegislativeInlineSummary.jsx
4019
- var import_react23 = __toESM(require("react"));
3967
+ var import_react22 = __toESM(require("react"));
4020
3968
  function normalizePosition(pos) {
4021
3969
  if (!pos) return "";
4022
3970
  return pos.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -4124,7 +4072,7 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4124
4072
  fontSize: fontSizes.sm,
4125
4073
  fontWeight: fontWeights.medium
4126
4074
  };
4127
- return /* @__PURE__ */ import_react23.default.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ import_react23.default.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ import_react23.default.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ import_react23.default.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ import_react23.default.createElement("div", null), /* @__PURE__ */ import_react23.default.createElement("div", { style: footerRow }, /* @__PURE__ */ import_react23.default.createElement(
4075
+ return /* @__PURE__ */ import_react22.default.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ import_react22.default.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ import_react22.default.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ import_react22.default.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ import_react22.default.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ import_react22.default.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ import_react22.default.createElement("div", null), /* @__PURE__ */ import_react22.default.createElement("div", { style: footerRow }, /* @__PURE__ */ import_react22.default.createElement(
4128
4076
  "button",
4129
4077
  {
4130
4078
  onClick: () => {
@@ -4149,12 +4097,12 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4149
4097
  }
4150
4098
  },
4151
4099
  "View Full Legislative Record",
4152
- /* @__PURE__ */ import_react23.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement("path", { d: "M9 18l6-6-6-6" }))
4100
+ /* @__PURE__ */ import_react22.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react22.default.createElement("path", { d: "M9 18l6-6-6-6" }))
4153
4101
  )));
4154
4102
  }
4155
4103
 
4156
4104
  // src/JudicialScorecard.jsx
4157
- var import_react24 = __toESM(require("react"));
4105
+ var import_react23 = __toESM(require("react"));
4158
4106
 
4159
4107
  // src/judicialUtils.js
4160
4108
  function formatDate(dateStr) {
@@ -4272,7 +4220,7 @@ function JudicialScorecard({ judicialRecord, politicianId, onNavigateToRecord })
4272
4220
  onNavigateToRecord(`/politician/${politicianId}/judicial-record`);
4273
4221
  }
4274
4222
  };
4275
- return /* @__PURE__ */ import_react24.default.createElement("section", { style: sectionStyle }, /* @__PURE__ */ import_react24.default.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ import_react24.default.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ import_react24.default.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react24.default.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ import_react24.default.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ import_react24.default.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ import_react24.default.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4223
+ return /* @__PURE__ */ import_react23.default.createElement("section", { style: sectionStyle }, /* @__PURE__ */ import_react23.default.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ import_react23.default.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ import_react23.default.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ import_react23.default.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react23.default.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ import_react23.default.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ import_react23.default.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ import_react23.default.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4276
4224
  }
4277
4225
 
4278
4226
  // src/PoliticianProfile.jsx
@@ -4423,13 +4371,13 @@ function formatAddress(addr) {
4423
4371
  if (cityStateZip) lines.push(cityStateZip);
4424
4372
  return lines;
4425
4373
  }
4426
- var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4427
- var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react25.default.createElement("polyline", { points: "12 6 12 12 16 14" }));
4428
- var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4429
- var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8 19.79 19.79 0 01.07 2.18 2 2 0 012.02 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z" }));
4430
- var MailIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M4 4H20C21.1 4 22 4.9 22 6V18C22 19.1 21.1 20 20 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4Z" }), /* @__PURE__ */ import_react25.default.createElement("path", { d: "M22 6L12 13L2 6" }));
4431
- var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react25.default.createElement("path", { d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z" }));
4432
- var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ import_react25.default.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4374
+ var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4375
+ var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "12 6 12 12 16 14" }));
4376
+ var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4377
+ var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8 19.79 19.79 0 01.07 2.18 2 2 0 012.02 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z" }));
4378
+ var MailIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M4 4H20C21.1 4 22 4.9 22 6V18C22 19.1 21.1 20 20 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4Z" }), /* @__PURE__ */ import_react24.default.createElement("path", { d: "M22 6L12 13L2 6" }));
4379
+ var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react24.default.createElement("path", { d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z" }));
4380
+ var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4433
4381
  function PoliticianProfile({
4434
4382
  politician = {},
4435
4383
  onBack,
@@ -4456,8 +4404,8 @@ function PoliticianProfile({
4456
4404
  return pol.photo_origin_url;
4457
4405
  })();
4458
4406
  const initials = [pol.first_name, pol.last_name].filter(Boolean).map((n) => n[0]).join("");
4459
- const [imgError, setImgError] = (0, import_react25.useState)(false);
4460
- (0, import_react25.useEffect)(() => {
4407
+ const [imgError, setImgError] = (0, import_react24.useState)(false);
4408
+ (0, import_react24.useEffect)(() => {
4461
4409
  setImgError(false);
4462
4410
  }, [profileImageUrl]);
4463
4411
  const getSocialHandle = (type) => {
@@ -4757,7 +4705,7 @@ function PoliticianProfile({
4757
4705
  borderRadius: borderRadius.full
4758
4706
  }
4759
4707
  };
4760
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react25.default.createElement(
4708
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react24.default.createElement(
4761
4709
  "button",
4762
4710
  {
4763
4711
  type: "button",
@@ -4770,9 +4718,9 @@ function PoliticianProfile({
4770
4718
  e.currentTarget.style.textDecoration = "none";
4771
4719
  }
4772
4720
  },
4773
- /* @__PURE__ */ import_react25.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M15 19l-7-7 7-7" })),
4721
+ /* @__PURE__ */ import_react24.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M15 19l-7-7 7-7" })),
4774
4722
  label
4775
- ), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.card }, /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ import_react25.default.createElement(
4723
+ ), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.card }, /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ import_react24.default.createElement(
4776
4724
  "img",
4777
4725
  {
4778
4726
  src: profileImageUrl,
@@ -4780,7 +4728,7 @@ function PoliticianProfile({
4780
4728
  style: styles2.photo,
4781
4729
  onError: () => setImgError(true)
4782
4730
  }
4783
- ) : /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ import_react25.default.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ import_react25.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react25.default.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ import_react25.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react25.default.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ import_react25.default.createElement(
4731
+ ) : /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ import_react24.default.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ import_react24.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react24.default.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ import_react24.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react24.default.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ import_react24.default.createElement(
4784
4732
  "a",
4785
4733
  {
4786
4734
  href: pol.web_form_url,
@@ -4794,9 +4742,9 @@ function PoliticianProfile({
4794
4742
  e.currentTarget.style.background = colors.evTeal;
4795
4743
  }
4796
4744
  },
4797
- /* @__PURE__ */ import_react25.default.createElement(ExternalLinkIcon, { size: 14 }),
4745
+ /* @__PURE__ */ import_react24.default.createElement(ExternalLinkIcon, { size: 14 }),
4798
4746
  "Submit a Message"
4799
- ))), hasContactInfo && /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react25.default.createElement("div", { style: sectionHeading }, /* @__PURE__ */ import_react25.default.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ import_react25.default.createElement("br", null))))))), hasPhones && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ import_react25.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4747
+ ))), hasContactInfo && /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react24.default.createElement("div", { style: sectionHeading }, /* @__PURE__ */ import_react24.default.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ import_react24.default.createElement("br", null))))))), hasPhones && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ import_react24.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4800
4748
  "a",
4801
4749
  {
4802
4750
  href: `tel:${phone}`,
@@ -4809,7 +4757,7 @@ function PoliticianProfile({
4809
4757
  }
4810
4758
  },
4811
4759
  phone
4812
- )))))), hasEmails && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ import_react25.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4760
+ )))))), hasEmails && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ import_react24.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4813
4761
  "a",
4814
4762
  {
4815
4763
  href: `mailto:${email}`,
@@ -4822,7 +4770,7 @@ function PoliticianProfile({
4822
4770
  }
4823
4771
  },
4824
4772
  email
4825
- )))))), hasWebsitesCol && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ import_react25.default.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4773
+ )))))), hasWebsitesCol && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ import_react24.default.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4826
4774
  "a",
4827
4775
  {
4828
4776
  href: url,
@@ -4837,7 +4785,7 @@ function PoliticianProfile({
4837
4785
  }
4838
4786
  },
4839
4787
  extractDomain(url)
4840
- ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react25.default.createElement(
4788
+ ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react24.default.createElement(
4841
4789
  SocialLinks,
4842
4790
  {
4843
4791
  twitter,
@@ -4848,14 +4796,14 @@ function PoliticianProfile({
4848
4796
  size: "sm",
4849
4797
  style: { marginTop: allWebsites.length > 0 ? "8px" : 0 }
4850
4798
  }
4851
- )))), committees.length > 0 && /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react25.default.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ import_react25.default.createElement(
4799
+ )))), committees.length > 0 && /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react24.default.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ import_react24.default.createElement(
4852
4800
  JudicialScorecard,
4853
4801
  {
4854
4802
  judicialRecord,
4855
4803
  politicianId,
4856
4804
  onNavigateToRecord
4857
4805
  }
4858
- ) : /* @__PURE__ */ import_react25.default.createElement(
4806
+ ) : /* @__PURE__ */ import_react24.default.createElement(
4859
4807
  LegislativeInlineSummary,
4860
4808
  {
4861
4809
  summary: legislativeSummary,
@@ -4866,7 +4814,7 @@ function PoliticianProfile({
4866
4814
  }
4867
4815
 
4868
4816
  // src/LegislativeRecord.jsx
4869
- var import_react26 = __toESM(require("react"));
4817
+ var import_react25 = __toESM(require("react"));
4870
4818
  var DEFAULT_LIMIT = 25;
4871
4819
  function normalizeText(str) {
4872
4820
  if (!str) return "";
@@ -4946,7 +4894,7 @@ function getPositionBadge(position) {
4946
4894
  return { bg: colors.borderLight, text: colors.textSecondary };
4947
4895
  }
4948
4896
  function Badge({ label, bg, text }) {
4949
- return /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4897
+ return /* @__PURE__ */ import_react25.default.createElement("span", { style: {
4950
4898
  display: "inline-block",
4951
4899
  background: bg,
4952
4900
  color: text,
@@ -4959,18 +4907,18 @@ function Badge({ label, bg, text }) {
4959
4907
  } }, label);
4960
4908
  }
4961
4909
  function SectionHeader({ title, yearFilter, years, onYearChange }) {
4962
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4910
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
4963
4911
  display: "flex",
4964
4912
  alignItems: "center",
4965
4913
  justifyContent: "space-between",
4966
4914
  marginBottom: spacing[4]
4967
- } }, /* @__PURE__ */ import_react26.default.createElement("h2", { style: {
4915
+ } }, /* @__PURE__ */ import_react25.default.createElement("h2", { style: {
4968
4916
  fontFamily: fonts.primary,
4969
4917
  fontSize: fontSizes.xl,
4970
4918
  fontWeight: fontWeights.bold,
4971
4919
  color: colors.evTeal,
4972
4920
  margin: 0
4973
- } }, title), years && years.length > 0 && /* @__PURE__ */ import_react26.default.createElement(
4921
+ } }, title), years && years.length > 0 && /* @__PURE__ */ import_react25.default.createElement(
4974
4922
  "select",
4975
4923
  {
4976
4924
  value: yearFilter,
@@ -4986,13 +4934,13 @@ function SectionHeader({ title, yearFilter, years, onYearChange }) {
4986
4934
  cursor: "pointer"
4987
4935
  }
4988
4936
  },
4989
- /* @__PURE__ */ import_react26.default.createElement("option", { value: "All" }, "All years"),
4990
- years.map((y) => /* @__PURE__ */ import_react26.default.createElement("option", { key: y, value: y }, y))
4937
+ /* @__PURE__ */ import_react25.default.createElement("option", { value: "All" }, "All years"),
4938
+ years.map((y) => /* @__PURE__ */ import_react25.default.createElement("option", { key: y, value: y }, y))
4991
4939
  ));
4992
4940
  }
4993
4941
  function ShowAllLink({ totalCount, visibleCount, onClick }) {
4994
4942
  if (totalCount <= visibleCount) return null;
4995
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react26.default.createElement(
4943
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react25.default.createElement(
4996
4944
  "button",
4997
4945
  {
4998
4946
  type: "button",
@@ -5020,7 +4968,7 @@ function ShowAllLink({ totalCount, visibleCount, onClick }) {
5020
4968
  ));
5021
4969
  }
5022
4970
  function EmptyState({ message }) {
5023
- return /* @__PURE__ */ import_react26.default.createElement("p", { style: {
4971
+ return /* @__PURE__ */ import_react25.default.createElement("p", { style: {
5024
4972
  fontFamily: fonts.primary,
5025
4973
  fontSize: fontSizes.sm,
5026
4974
  color: colors.textMuted,
@@ -5030,24 +4978,24 @@ function EmptyState({ message }) {
5030
4978
  } }, message);
5031
4979
  }
5032
4980
  function Spinner() {
5033
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4981
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5034
4982
  display: "flex",
5035
4983
  justifyContent: "center",
5036
4984
  alignItems: "center",
5037
4985
  padding: spacing[10]
5038
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4986
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5039
4987
  width: "40px",
5040
4988
  height: "40px",
5041
4989
  borderRadius: borderRadius.full,
5042
4990
  border: `3px solid ${colors.borderLight}`,
5043
4991
  borderTopColor: colors.evTeal,
5044
4992
  animation: "ev-spin 0.8s linear infinite"
5045
- } }), /* @__PURE__ */ import_react26.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
4993
+ } }), /* @__PURE__ */ import_react25.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5046
4994
  }
5047
4995
  function CommitteesSection({ committees, leadership }) {
5048
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
4996
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5049
4997
  const visible = showAll ? committees : committees.slice(0, DEFAULT_LIMIT);
5050
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ import_react26.default.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4998
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ import_react25.default.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5051
4999
  display: "inline-flex",
5052
5000
  alignItems: "center",
5053
5001
  gap: spacing[1],
@@ -5058,23 +5006,23 @@ function CommitteesSection({ committees, leadership }) {
5058
5006
  fontFamily: fonts.primary,
5059
5007
  fontSize: fontSizes.sm,
5060
5008
  fontWeight: fontWeights.semibold
5061
- } }, role.title, role.chamber && /* @__PURE__ */ import_react26.default.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((c, i) => {
5009
+ } }, role.title, role.chamber && /* @__PURE__ */ import_react25.default.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((c, i) => {
5062
5010
  const badge = getRoleBadge(c.role);
5063
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5011
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5064
5012
  display: "flex",
5065
5013
  alignItems: "center",
5066
5014
  justifyContent: "space-between",
5067
5015
  padding: `${spacing[3]} 0`,
5068
5016
  borderBottom: `1px solid ${colors.borderLight}`,
5069
5017
  gap: spacing[3]
5070
- } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5018
+ } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5071
5019
  fontFamily: fonts.primary,
5072
5020
  fontSize: fontSizes.sm,
5073
5021
  color: colors.textSecondary,
5074
5022
  flex: 1,
5075
5023
  minWidth: 0
5076
- } }, c.committee_name, c.parent_name && /* @__PURE__ */ import_react26.default.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ import_react26.default.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
5077
- })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5024
+ } }, c.committee_name, c.parent_name && /* @__PURE__ */ import_react25.default.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ import_react25.default.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
5025
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5078
5026
  ShowAllLink,
5079
5027
  {
5080
5028
  totalCount: committees.length,
@@ -5085,15 +5033,15 @@ function CommitteesSection({ committees, leadership }) {
5085
5033
  }
5086
5034
  function LegislationSection({ bills, isMobile }) {
5087
5035
  const years = getYears(bills, "introduced_at");
5088
- const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5089
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
5036
+ const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
5037
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5090
5038
  const handleYearChange = (y) => {
5091
5039
  setYearFilter(y);
5092
5040
  setShowAll(false);
5093
5041
  };
5094
5042
  const filtered = yearFilter === "All" ? bills : bills.filter((b) => extractYear(b.introduced_at) === yearFilter);
5095
5043
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
5096
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(
5044
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5097
5045
  SectionHeader,
5098
5046
  {
5099
5047
  title: "Sponsored Legislation",
@@ -5101,42 +5049,42 @@ function LegislationSection({ bills, isMobile }) {
5101
5049
  years,
5102
5050
  onYearChange: handleYearChange
5103
5051
  }
5104
- ), bills.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((bill, i) => {
5052
+ ), bills.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((bill, i) => {
5105
5053
  const statusBadge = getStatusBadge(bill.status_label);
5106
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5054
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5107
5055
  display: "flex",
5108
5056
  flexDirection: isMobile ? "column" : "row",
5109
5057
  alignItems: isMobile ? "flex-start" : "center",
5110
5058
  gap: isMobile ? spacing[1] : spacing[3],
5111
5059
  padding: `${spacing[3]} 0`,
5112
5060
  borderBottom: `1px solid ${colors.borderLight}`
5113
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5061
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5114
5062
  fontFamily: fonts.primary,
5115
5063
  fontSize: fontSizes.xs,
5116
5064
  fontWeight: fontWeights.bold,
5117
5065
  color: colors.textSecondary,
5118
5066
  marginRight: spacing[2]
5119
- } }, bill.number), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5067
+ } }, bill.number), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5120
5068
  fontFamily: fonts.primary,
5121
5069
  fontSize: fontSizes.sm,
5122
5070
  color: colors.textSecondary
5123
- } }, bill.title)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5071
+ } }, bill.title)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5124
5072
  display: "flex",
5125
5073
  alignItems: "center",
5126
5074
  gap: spacing[2],
5127
5075
  flexShrink: 0,
5128
5076
  flexWrap: "wrap"
5129
- } }, /* @__PURE__ */ import_react26.default.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5077
+ } }, /* @__PURE__ */ import_react25.default.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5130
5078
  fontFamily: fonts.primary,
5131
5079
  fontSize: fontSizes.xs,
5132
5080
  color: colors.textMuted
5133
- } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5081
+ } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5134
5082
  fontFamily: fonts.primary,
5135
5083
  fontSize: fontSizes.xs,
5136
5084
  color: colors.textMuted,
5137
5085
  fontStyle: "italic"
5138
5086
  } }, bill.is_sponsor ? "Sponsored" : "Cosponsored")));
5139
- })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5087
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5140
5088
  ShowAllLink,
5141
5089
  {
5142
5090
  totalCount: filtered.length,
@@ -5147,15 +5095,15 @@ function LegislationSection({ bills, isMobile }) {
5147
5095
  }
5148
5096
  function VotingSection({ votes, isMobile }) {
5149
5097
  const years = getYears(votes, "vote_date");
5150
- const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5151
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
5098
+ const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
5099
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5152
5100
  const handleYearChange = (y) => {
5153
5101
  setYearFilter(y);
5154
5102
  setShowAll(false);
5155
5103
  };
5156
5104
  const filtered = yearFilter === "All" ? votes : votes.filter((v) => extractYear(v.vote_date) === yearFilter);
5157
5105
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
5158
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(
5106
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5159
5107
  SectionHeader,
5160
5108
  {
5161
5109
  title: "Voting Record",
@@ -5163,38 +5111,38 @@ function VotingSection({ votes, isMobile }) {
5163
5111
  years,
5164
5112
  onYearChange: handleYearChange
5165
5113
  }
5166
- ), votes.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((vote, i) => {
5114
+ ), votes.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((vote, i) => {
5167
5115
  const positionBadge = getPositionBadge(vote.position);
5168
5116
  const normPosition = normalizeText(vote.position);
5169
5117
  const topic = vote.bill_title || vote.vote_question;
5170
5118
  const sourceUrl = vote.bill_url;
5171
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5119
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5172
5120
  display: "flex",
5173
5121
  flexDirection: isMobile ? "column" : "row",
5174
5122
  alignItems: isMobile ? "flex-start" : "center",
5175
5123
  gap: isMobile ? spacing[1] : spacing[3],
5176
5124
  padding: `${spacing[3]} 0`,
5177
5125
  borderBottom: `1px solid ${colors.borderLight}`
5178
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5126
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5179
5127
  fontFamily: fonts.primary,
5180
5128
  fontSize: fontSizes.sm,
5181
5129
  color: colors.textSecondary
5182
- } }, topic)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5130
+ } }, topic)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5183
5131
  display: "flex",
5184
5132
  alignItems: "center",
5185
5133
  gap: spacing[2],
5186
5134
  flexShrink: 0,
5187
5135
  flexWrap: "wrap"
5188
- } }, vote.vote_date && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5136
+ } }, vote.vote_date && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5189
5137
  fontFamily: fonts.primary,
5190
5138
  fontSize: fontSizes.xs,
5191
5139
  color: colors.textMuted
5192
- } }, formatDate2(vote.vote_date)), /* @__PURE__ */ import_react26.default.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5140
+ } }, formatDate2(vote.vote_date)), /* @__PURE__ */ import_react25.default.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5193
5141
  fontFamily: fonts.primary,
5194
5142
  fontSize: fontSizes.xs,
5195
5143
  color: vote.result === "Passed" ? colors.success : colors.textMuted,
5196
5144
  fontWeight: fontWeights.medium
5197
- } }, vote.result), sourceUrl && /* @__PURE__ */ import_react26.default.createElement(
5145
+ } }, vote.result), sourceUrl && /* @__PURE__ */ import_react25.default.createElement(
5198
5146
  "a",
5199
5147
  {
5200
5148
  href: sourceUrl,
@@ -5215,7 +5163,7 @@ function VotingSection({ votes, isMobile }) {
5215
5163
  },
5216
5164
  "Source"
5217
5165
  )));
5218
- })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5166
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5219
5167
  ShowAllLink,
5220
5168
  {
5221
5169
  totalCount: filtered.length,
@@ -5234,20 +5182,20 @@ function LegislativeRecord({
5234
5182
  }) {
5235
5183
  const isMobile = useMediaQuery("(max-width: 768px)");
5236
5184
  if (loading) {
5237
- return /* @__PURE__ */ import_react26.default.createElement(Spinner, null);
5185
+ return /* @__PURE__ */ import_react25.default.createElement(Spinner, null);
5238
5186
  }
5239
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react26.default.createElement("h1", { style: {
5187
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react25.default.createElement("h1", { style: {
5240
5188
  fontFamily: fonts.primary,
5241
5189
  fontSize: isMobile ? fontSizes["2xl"] : fontSizes["4xl"],
5242
5190
  fontWeight: fontWeights.bold,
5243
5191
  color: colors.evTeal,
5244
5192
  marginBottom: spacing[8],
5245
5193
  marginTop: 0
5246
- } }, "Legislative Record: ", politicianName), /* @__PURE__ */ import_react26.default.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ import_react26.default.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ import_react26.default.createElement(VotingSection, { votes, isMobile }));
5194
+ } }, "Legislative Record: ", politicianName), /* @__PURE__ */ import_react25.default.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ import_react25.default.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ import_react25.default.createElement(VotingSection, { votes, isMobile }));
5247
5195
  }
5248
5196
 
5249
5197
  // src/JudicialRecordDetail.jsx
5250
- var import_react27 = __toESM(require("react"));
5198
+ var import_react26 = __toESM(require("react"));
5251
5199
  var containerStyle = {
5252
5200
  fontFamily: "'Manrope', sans-serif",
5253
5201
  maxWidth: "800px"
@@ -5332,7 +5280,7 @@ var emptyStateStyle = {
5332
5280
  function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5333
5281
  var _a;
5334
5282
  if (!judicialRecord) {
5335
- return /* @__PURE__ */ import_react27.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react27.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5283
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react26.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5336
5284
  }
5337
5285
  const {
5338
5286
  judge_detail: detail,
@@ -5341,13 +5289,13 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5341
5289
  disciplinary_records: disciplinary = []
5342
5290
  } = judicialRecord;
5343
5291
  const displayName = politician.full_name || `${politician.first_name || ""} ${politician.last_name || ""}`.trim();
5344
- return /* @__PURE__ */ import_react27.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react27.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react27.default.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ import_react27.default.createElement("p", { style: roleStyle }, (detail == null ? void 0 : detail.court_role) || politician.office_title, (detail == null ? void 0 : detail.date_seated) && ` \xB7 Seated ${formatDate(detail.date_seated)}`), detail && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.election_type === "retention" ? "Retention (Yes/No)" : "Contested Election")), ((_a = detail.areas_of_focus) == null ? void 0 : _a.length) > 0 && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ import_react27.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ import_react27.default.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ import_react27.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ import_react27.default.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ import_react27.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ import_react27.default.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ import_react27.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ import_react27.default.createElement("div", { key: i, style: {
5292
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react26.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react26.default.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ import_react26.default.createElement("p", { style: roleStyle }, (detail == null ? void 0 : detail.court_role) || politician.office_title, (detail == null ? void 0 : detail.date_seated) && ` \xB7 Seated ${formatDate(detail.date_seated)}`), detail && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.election_type === "retention" ? "Retention (Yes/No)" : "Contested Election")), ((_a = detail.areas_of_focus) == null ? void 0 : _a.length) > 0 && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ import_react26.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ import_react26.default.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ import_react26.default.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ import_react26.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ import_react26.default.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5345
5293
  borderLeft: "3px solid #fc8181",
5346
5294
  backgroundColor: "#fff5f5",
5347
5295
  borderRadius: "0 6px 6px 0",
5348
5296
  padding: "12px 16px",
5349
5297
  marginBottom: "10px"
5350
- } }, /* @__PURE__ */ import_react27.default.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ import_react27.default.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ import_react27.default.createElement(
5298
+ } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ import_react26.default.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ import_react26.default.createElement(
5351
5299
  "a",
5352
5300
  {
5353
5301
  href: d.source_url,
@@ -5360,7 +5308,7 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5360
5308
  }
5361
5309
 
5362
5310
  // src/AuthForm.jsx
5363
- var import_react28 = __toESM(require("react"));
5311
+ var import_react27 = __toESM(require("react"));
5364
5312
  function AuthForm({
5365
5313
  logoSrc = "/EVLogo.svg",
5366
5314
  appName = "Empowered Vote",
@@ -5371,11 +5319,11 @@ function AuthForm({
5371
5319
  error = null,
5372
5320
  submitting = false
5373
5321
  }) {
5374
- const [username, setUsername] = (0, import_react28.useState)("");
5375
- const [password, setPassword] = (0, import_react28.useState)("");
5376
- const [confirmPassword, setConfirmPassword] = (0, import_react28.useState)("");
5377
- const [showPasswords, setShowPasswords] = (0, import_react28.useState)(false);
5378
- const [passwordMismatch, setPasswordMismatch] = (0, import_react28.useState)(false);
5322
+ const [username, setUsername] = (0, import_react27.useState)("");
5323
+ const [password, setPassword] = (0, import_react27.useState)("");
5324
+ const [confirmPassword, setConfirmPassword] = (0, import_react27.useState)("");
5325
+ const [showPasswords, setShowPasswords] = (0, import_react27.useState)(false);
5326
+ const [passwordMismatch, setPasswordMismatch] = (0, import_react27.useState)(false);
5379
5327
  const isLogin = mode === "login";
5380
5328
  const handleSubmit = (e) => {
5381
5329
  e.preventDefault();
@@ -5387,7 +5335,7 @@ function AuthForm({
5387
5335
  setPasswordMismatch(false);
5388
5336
  onSubmit == null ? void 0 : onSubmit(username.trim(), password);
5389
5337
  };
5390
- const EyeOpen = () => /* @__PURE__ */ import_react28.default.createElement(
5338
+ const EyeOpen = () => /* @__PURE__ */ import_react27.default.createElement(
5391
5339
  "svg",
5392
5340
  {
5393
5341
  xmlns: "http://www.w3.org/2000/svg",
@@ -5397,7 +5345,7 @@ function AuthForm({
5397
5345
  stroke: "currentColor",
5398
5346
  style: { width: "20px", height: "20px" }
5399
5347
  },
5400
- /* @__PURE__ */ import_react28.default.createElement(
5348
+ /* @__PURE__ */ import_react27.default.createElement(
5401
5349
  "path",
5402
5350
  {
5403
5351
  strokeLinecap: "round",
@@ -5405,7 +5353,7 @@ function AuthForm({
5405
5353
  d: "M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"
5406
5354
  }
5407
5355
  ),
5408
- /* @__PURE__ */ import_react28.default.createElement(
5356
+ /* @__PURE__ */ import_react27.default.createElement(
5409
5357
  "path",
5410
5358
  {
5411
5359
  strokeLinecap: "round",
@@ -5414,7 +5362,7 @@ function AuthForm({
5414
5362
  }
5415
5363
  )
5416
5364
  );
5417
- const EyeClosed = () => /* @__PURE__ */ import_react28.default.createElement(
5365
+ const EyeClosed = () => /* @__PURE__ */ import_react27.default.createElement(
5418
5366
  "svg",
5419
5367
  {
5420
5368
  xmlns: "http://www.w3.org/2000/svg",
@@ -5424,7 +5372,7 @@ function AuthForm({
5424
5372
  stroke: "currentColor",
5425
5373
  style: { width: "20px", height: "20px" }
5426
5374
  },
5427
- /* @__PURE__ */ import_react28.default.createElement(
5375
+ /* @__PURE__ */ import_react27.default.createElement(
5428
5376
  "path",
5429
5377
  {
5430
5378
  strokeLinecap: "round",
@@ -5433,17 +5381,17 @@ function AuthForm({
5433
5381
  }
5434
5382
  )
5435
5383
  );
5436
- const PasswordToggle = () => /* @__PURE__ */ import_react28.default.createElement(
5384
+ const PasswordToggle = () => /* @__PURE__ */ import_react27.default.createElement(
5437
5385
  "button",
5438
5386
  {
5439
5387
  type: "button",
5440
5388
  onClick: () => setShowPasswords((prev) => !prev),
5441
5389
  style: styles.passwordToggle
5442
5390
  },
5443
- showPasswords ? /* @__PURE__ */ import_react28.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react28.default.createElement(EyeClosed, null)
5391
+ showPasswords ? /* @__PURE__ */ import_react27.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react27.default.createElement(EyeClosed, null)
5444
5392
  );
5445
5393
  const displayError = passwordMismatch ? "Passwords do not match." : error;
5446
- return /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.container }, /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ import_react28.default.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ import_react28.default.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ import_react28.default.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ import_react28.default.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ import_react28.default.createElement(
5394
+ return /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.container }, /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ import_react27.default.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ import_react27.default.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ import_react27.default.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ import_react27.default.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ import_react27.default.createElement(
5447
5395
  "input",
5448
5396
  {
5449
5397
  type: "text",
@@ -5460,7 +5408,7 @@ function AuthForm({
5460
5408
  },
5461
5409
  required: true
5462
5410
  }
5463
- )), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react28.default.createElement(
5411
+ )), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react27.default.createElement(
5464
5412
  "input",
5465
5413
  {
5466
5414
  type: showPasswords ? "text" : "password",
@@ -5476,7 +5424,7 @@ function AuthForm({
5476
5424
  },
5477
5425
  required: true
5478
5426
  }
5479
- ), /* @__PURE__ */ import_react28.default.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react28.default.createElement(
5427
+ ), /* @__PURE__ */ import_react27.default.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react27.default.createElement(
5480
5428
  "input",
5481
5429
  {
5482
5430
  type: showPasswords ? "text" : "password",
@@ -5492,7 +5440,7 @@ function AuthForm({
5492
5440
  },
5493
5441
  required: true
5494
5442
  }
5495
- ), /* @__PURE__ */ import_react28.default.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ import_react28.default.createElement(
5443
+ ), /* @__PURE__ */ import_react27.default.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ import_react27.default.createElement(
5496
5444
  "button",
5497
5445
  {
5498
5446
  type: "submit",
@@ -5510,7 +5458,7 @@ function AuthForm({
5510
5458
  }
5511
5459
  },
5512
5460
  submitting ? isLogin ? "Signing In..." : "Creating Account..." : isLogin ? "Sign In" : "Create Account"
5513
- ), onModeSwitch && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ import_react28.default.createElement(
5461
+ ), onModeSwitch && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ import_react27.default.createElement(
5514
5462
  "button",
5515
5463
  {
5516
5464
  type: "button",
@@ -5683,9 +5631,9 @@ var styles = {
5683
5631
  };
5684
5632
 
5685
5633
  // src/TopicTierBadge.jsx
5686
- var import_react29 = __toESM(require("react"));
5634
+ var import_react28 = __toESM(require("react"));
5687
5635
  function LandmarkIcon({ size = 14 }) {
5688
- return /* @__PURE__ */ import_react29.default.createElement(
5636
+ return /* @__PURE__ */ import_react28.default.createElement(
5689
5637
  "svg",
5690
5638
  {
5691
5639
  width: size,
@@ -5699,16 +5647,16 @@ function LandmarkIcon({ size = 14 }) {
5699
5647
  xmlns: "http://www.w3.org/2000/svg",
5700
5648
  "aria-hidden": "true"
5701
5649
  },
5702
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 18v-7" }),
5703
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }),
5704
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M14 18v-7" }),
5705
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M18 18v-7" }),
5706
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M3 22h18" }),
5707
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 18v-7" })
5650
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18v-7" }),
5651
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }),
5652
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M14 18v-7" }),
5653
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 18v-7" }),
5654
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M3 22h18" }),
5655
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 18v-7" })
5708
5656
  );
5709
5657
  }
5710
5658
  function Building2Icon({ size = 14 }) {
5711
- return /* @__PURE__ */ import_react29.default.createElement(
5659
+ return /* @__PURE__ */ import_react28.default.createElement(
5712
5660
  "svg",
5713
5661
  {
5714
5662
  width: size,
@@ -5722,17 +5670,17 @@ function Building2Icon({ size = 14 }) {
5722
5670
  xmlns: "http://www.w3.org/2000/svg",
5723
5671
  "aria-hidden": "true"
5724
5672
  },
5725
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5726
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5727
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5728
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 6h4" }),
5729
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 10h4" }),
5730
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 14h4" }),
5731
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 18h4" })
5673
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5674
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5675
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5676
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 6h4" }),
5677
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 10h4" }),
5678
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 14h4" }),
5679
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18h4" })
5732
5680
  );
5733
5681
  }
5734
5682
  function HomeIcon({ size = 14 }) {
5735
- return /* @__PURE__ */ import_react29.default.createElement(
5683
+ return /* @__PURE__ */ import_react28.default.createElement(
5736
5684
  "svg",
5737
5685
  {
5738
5686
  width: size,
@@ -5746,8 +5694,8 @@ function HomeIcon({ size = 14 }) {
5746
5694
  xmlns: "http://www.w3.org/2000/svg",
5747
5695
  "aria-hidden": "true"
5748
5696
  },
5749
- /* @__PURE__ */ import_react29.default.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
5750
- /* @__PURE__ */ import_react29.default.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5697
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
5698
+ /* @__PURE__ */ import_react28.default.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5751
5699
  );
5752
5700
  }
5753
5701
  var TIER_INFO = {
@@ -5807,7 +5755,7 @@ function TopicTierBadge({
5807
5755
  userSelect: "none"
5808
5756
  };
5809
5757
  };
5810
- return /* @__PURE__ */ import_react29.default.createElement(
5758
+ return /* @__PURE__ */ import_react28.default.createElement(
5811
5759
  "span",
5812
5760
  {
5813
5761
  className: "ev-topic-tier-badge",
@@ -5817,13 +5765,13 @@ function TopicTierBadge({
5817
5765
  },
5818
5766
  effectiveTiers.map((tier) => {
5819
5767
  const { label, Icon } = TIER_INFO[tier];
5820
- return /* @__PURE__ */ import_react29.default.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ import_react29.default.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ import_react29.default.createElement("span", null, label));
5768
+ return /* @__PURE__ */ import_react28.default.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ import_react28.default.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ import_react28.default.createElement("span", null, label));
5821
5769
  })
5822
5770
  );
5823
5771
  }
5824
5772
 
5825
5773
  // src/CompassCoverageCallout.jsx
5826
- var import_react30 = __toESM(require("react"));
5774
+ var import_react29 = __toESM(require("react"));
5827
5775
  var TIER_LABELS = {
5828
5776
  federal: "federal",
5829
5777
  state: "state",
@@ -5836,7 +5784,7 @@ function CompassCoverageCallout({
5836
5784
  compassUrl,
5837
5785
  onDismiss
5838
5786
  }) {
5839
- const [dismissed, setDismissed] = (0, import_react30.useState)(false);
5787
+ const [dismissed, setDismissed] = (0, import_react29.useState)(false);
5840
5788
  if (dismissed) return null;
5841
5789
  const tierLabel = TIER_LABELS[tier] || tier;
5842
5790
  const tierStyle = tierColors[tier] || tierColors.federal;
@@ -5887,15 +5835,15 @@ function CompassCoverageCallout({
5887
5835
  setDismissed(true);
5888
5836
  if (onDismiss) onDismiss();
5889
5837
  };
5890
- return /* @__PURE__ */ import_react30.default.createElement(
5838
+ return /* @__PURE__ */ import_react29.default.createElement(
5891
5839
  "div",
5892
5840
  {
5893
5841
  className: "ev-compass-coverage-callout",
5894
5842
  role: "status",
5895
5843
  style: containerStyle2
5896
5844
  },
5897
- /* @__PURE__ */ import_react30.default.createElement("div", { style: textStyle }, /* @__PURE__ */ import_react30.default.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ import_react30.default.createElement("div", null, count === 0 ? `None of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. ` : `Only ${count} of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. `, "Add more ", tierLabel, "-applicable topics to get better comparisons with ", tierLabel, " officials."), /* @__PURE__ */ import_react30.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
5898
- onDismiss !== void 0 && /* @__PURE__ */ import_react30.default.createElement(
5845
+ /* @__PURE__ */ import_react29.default.createElement("div", { style: textStyle }, /* @__PURE__ */ import_react29.default.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ import_react29.default.createElement("div", null, count === 0 ? `None of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. ` : `Only ${count} of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. `, "Add more ", tierLabel, "-applicable topics to get better comparisons with ", tierLabel, " officials."), /* @__PURE__ */ import_react29.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
5846
+ onDismiss !== void 0 && /* @__PURE__ */ import_react29.default.createElement(
5899
5847
  "button",
5900
5848
  {
5901
5849
  onClick: handleDismiss,
@@ -5908,7 +5856,7 @@ function CompassCoverageCallout({
5908
5856
  }
5909
5857
 
5910
5858
  // src/ExpandCompassNudge.jsx
5911
- var import_react31 = __toESM(require("react"));
5859
+ var import_react30 = __toESM(require("react"));
5912
5860
  function ExpandCompassNudge({
5913
5861
  politicianName,
5914
5862
  missingCount,
@@ -5955,7 +5903,7 @@ function ExpandCompassNudge({
5955
5903
  };
5956
5904
  const topicsLabel = missingCount === 1 ? "topic" : "topics";
5957
5905
  const speakerName = politicianName || "This politician";
5958
- return /* @__PURE__ */ import_react31.default.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ import_react31.default.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ import_react31.default.createElement("p", { style: bodyStyle }, speakerName, " has stances on ", missingCount, " more ", topicsLabel, " you haven't answered yet. Expand your compass to see where you stand on all of them."), /* @__PURE__ */ import_react31.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
5906
+ return /* @__PURE__ */ import_react30.default.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ import_react30.default.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ import_react30.default.createElement("p", { style: bodyStyle }, speakerName, " has stances on ", missingCount, " more ", topicsLabel, " you haven't answered yet. Expand your compass to see where you stand on all of them."), /* @__PURE__ */ import_react30.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
5959
5907
  }
5960
5908
 
5961
5909
  // src/computeTierCoverage.js
@@ -5976,7 +5924,7 @@ function computeTierCoverage(topics) {
5976
5924
  }
5977
5925
 
5978
5926
  // src/useEvContextPromotion.js
5979
- var import_react32 = require("react");
5927
+ var import_react31 = require("react");
5980
5928
  function useEvContextPromotion({
5981
5929
  domain,
5982
5930
  isLoggedIn,
@@ -5985,23 +5933,23 @@ function useEvContextPromotion({
5985
5933
  apiWriter,
5986
5934
  enabled = true
5987
5935
  }) {
5988
- const [shouldPrompt, setShouldPrompt] = (0, import_react32.useState)(false);
5989
- const [payload, setPayload] = (0, import_react32.useState)(null);
5990
- const [status, setStatus] = (0, import_react32.useState)("idle");
5991
- const [error, setError] = (0, import_react32.useState)(null);
5992
- const apiDataRef = (0, import_react32.useRef)(apiData);
5936
+ const [shouldPrompt, setShouldPrompt] = (0, import_react31.useState)(false);
5937
+ const [payload, setPayload] = (0, import_react31.useState)(null);
5938
+ const [status, setStatus] = (0, import_react31.useState)("idle");
5939
+ const [error, setError] = (0, import_react31.useState)(null);
5940
+ const apiDataRef = (0, import_react31.useRef)(apiData);
5993
5941
  apiDataRef.current = apiData;
5994
- const userIdRef = (0, import_react32.useRef)(userId);
5942
+ const userIdRef = (0, import_react31.useRef)(userId);
5995
5943
  userIdRef.current = userId;
5996
- const isLoggedInRef = (0, import_react32.useRef)(isLoggedIn);
5944
+ const isLoggedInRef = (0, import_react31.useRef)(isLoggedIn);
5997
5945
  isLoggedInRef.current = isLoggedIn;
5998
- const enabledRef = (0, import_react32.useRef)(enabled);
5946
+ const enabledRef = (0, import_react31.useRef)(enabled);
5999
5947
  enabledRef.current = enabled;
6000
- const domainRef = (0, import_react32.useRef)(domain);
5948
+ const domainRef = (0, import_react31.useRef)(domain);
6001
5949
  domainRef.current = domain;
6002
- const apiWriterRef = (0, import_react32.useRef)(apiWriter);
5950
+ const apiWriterRef = (0, import_react31.useRef)(apiWriter);
6003
5951
  apiWriterRef.current = apiWriter;
6004
- const detect = (0, import_react32.useCallback)(async () => {
5952
+ const detect = (0, import_react31.useCallback)(async () => {
6005
5953
  const _enabled = enabledRef.current;
6006
5954
  const _isLoggedIn = isLoggedInRef.current;
6007
5955
  const _userId = userIdRef.current;
@@ -6040,16 +5988,16 @@ function useEvContextPromotion({
6040
5988
  setPayload(null);
6041
5989
  }
6042
5990
  }, []);
6043
- (0, import_react32.useEffect)(() => {
5991
+ (0, import_react31.useEffect)(() => {
6044
5992
  detect();
6045
5993
  }, [detect, isLoggedIn, userId, apiData, enabled, domain]);
6046
- (0, import_react32.useEffect)(() => {
5994
+ (0, import_react31.useEffect)(() => {
6047
5995
  const unsub = evContext.subscribe(() => {
6048
5996
  detect();
6049
5997
  });
6050
5998
  return unsub;
6051
5999
  }, [detect]);
6052
- const promote = (0, import_react32.useCallback)(async () => {
6000
+ const promote = (0, import_react31.useCallback)(async () => {
6053
6001
  const _userId = userIdRef.current;
6054
6002
  const _domain = domainRef.current;
6055
6003
  const _writer = apiWriterRef.current;
@@ -6076,7 +6024,7 @@ function useEvContextPromotion({
6076
6024
  setError(err instanceof Error ? err : new Error(String(err)));
6077
6025
  }
6078
6026
  }, [payload]);
6079
- const dismiss = (0, import_react32.useCallback)(async () => {
6027
+ const dismiss = (0, import_react31.useCallback)(async () => {
6080
6028
  const _userId = userIdRef.current;
6081
6029
  const _domain = domainRef.current;
6082
6030
  if (!_userId) return;
@@ -6135,14 +6083,14 @@ function isGuestPopulated(domain, fullEvContext) {
6135
6083
  }
6136
6084
 
6137
6085
  // src/StanceAccordion.jsx
6138
- var import_react34 = __toESM(require("react"));
6086
+ var import_react33 = __toESM(require("react"));
6139
6087
 
6140
6088
  // src/Favicon.jsx
6141
- var import_react33 = __toESM(require("react"));
6089
+ var import_react32 = __toESM(require("react"));
6142
6090
  function Favicon({ url, size = 16 }) {
6143
6091
  try {
6144
6092
  const domain = new URL(url).hostname;
6145
- return /* @__PURE__ */ import_react33.default.createElement(
6093
+ return /* @__PURE__ */ import_react32.default.createElement(
6146
6094
  "img",
6147
6095
  {
6148
6096
  src: `https://www.google.com/s2/favicons?sz=${size}&domain=${domain}`,
@@ -6153,7 +6101,7 @@ function Favicon({ url, size = 16 }) {
6153
6101
  }
6154
6102
  );
6155
6103
  } catch {
6156
- return /* @__PURE__ */ import_react33.default.createElement(
6104
+ return /* @__PURE__ */ import_react32.default.createElement(
6157
6105
  "svg",
6158
6106
  {
6159
6107
  width: size,
@@ -6164,8 +6112,8 @@ function Favicon({ url, size = 16 }) {
6164
6112
  strokeWidth: "1.5",
6165
6113
  style: { verticalAlign: "middle", flexShrink: 0 }
6166
6114
  },
6167
- /* @__PURE__ */ import_react33.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6168
- /* @__PURE__ */ import_react33.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
6115
+ /* @__PURE__ */ import_react32.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6116
+ /* @__PURE__ */ import_react32.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
6169
6117
  );
6170
6118
  }
6171
6119
  }
@@ -6196,11 +6144,11 @@ function StanceAccordion({
6196
6144
  apiUrl = "https://api.empowered.vote"
6197
6145
  }) {
6198
6146
  var _a;
6199
- const [expandedTopicId, setExpandedTopicId] = (0, import_react34.useState)(null);
6200
- const [loadingId, setLoadingId] = (0, import_react34.useState)(null);
6201
- const [showAll, setShowAll] = (0, import_react34.useState)(false);
6202
- const contextCache = (0, import_react34.useRef)(/* @__PURE__ */ new Map());
6203
- const quotesCache = (0, import_react34.useRef)(null);
6147
+ const [expandedTopicId, setExpandedTopicId] = (0, import_react33.useState)(null);
6148
+ const [loadingId, setLoadingId] = (0, import_react33.useState)(null);
6149
+ const [showAll, setShowAll] = (0, import_react33.useState)(false);
6150
+ const contextCache = (0, import_react33.useRef)(/* @__PURE__ */ new Map());
6151
+ const quotesCache = (0, import_react33.useRef)(null);
6204
6152
  const polAnswerMap = {};
6205
6153
  if (polAnswers) {
6206
6154
  polAnswers.forEach((a) => {
@@ -6259,7 +6207,7 @@ function StanceAccordion({
6259
6207
  quotesCache.current = [];
6260
6208
  }
6261
6209
  }
6262
- const handleToggle = (0, import_react34.useCallback)(
6210
+ const handleToggle = (0, import_react33.useCallback)(
6263
6211
  async (topicId) => {
6264
6212
  if (expandedTopicId === topicId) {
6265
6213
  setExpandedTopicId(null);
@@ -6276,7 +6224,7 @@ function StanceAccordion({
6276
6224
  },
6277
6225
  [expandedTopicId, politicianId, apiUrl]
6278
6226
  );
6279
- (0, import_react34.useEffect)(() => {
6227
+ (0, import_react33.useEffect)(() => {
6280
6228
  if (initialExpandedTopicId && topics && topics.length > 0) {
6281
6229
  handleToggle(String(initialExpandedTopicId));
6282
6230
  }
@@ -6292,13 +6240,13 @@ function StanceAccordion({
6292
6240
  visibleTopics = [pinned, ...baseTopics.filter((t) => String(t.id) !== String(initialExpandedTopicId))];
6293
6241
  }
6294
6242
  }
6295
- return /* @__PURE__ */ import_react34.default.createElement(
6243
+ return /* @__PURE__ */ import_react33.default.createElement(
6296
6244
  "div",
6297
6245
  {
6298
6246
  className: "flex flex-col",
6299
6247
  style: { fontFamily: "'Manrope', sans-serif" }
6300
6248
  },
6301
- /* @__PURE__ */ import_react34.default.createElement(
6249
+ /* @__PURE__ */ import_react33.default.createElement(
6302
6250
  "h3",
6303
6251
  {
6304
6252
  className: "text-sm font-semibold text-neutral-400 uppercase tracking-wider mb-2",
@@ -6321,15 +6269,15 @@ function StanceAccordion({
6321
6269
  if (topic.topic_key) return q.issue === topic.topic_key;
6322
6270
  return topic.short_title && q.issue.toLowerCase() === topic.short_title.toLowerCase();
6323
6271
  }) : [];
6324
- return /* @__PURE__ */ import_react34.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react34.default.createElement(
6272
+ return /* @__PURE__ */ import_react33.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react33.default.createElement(
6325
6273
  "button",
6326
6274
  {
6327
6275
  type: "button",
6328
6276
  onClick: () => handleToggle(topicId),
6329
6277
  className: "w-full flex items-center justify-between py-3 px-2 text-left cursor-pointer hover:bg-neutral-50 transition-colors"
6330
6278
  },
6331
- /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-sm font-medium text-neutral-800 truncate" }, topic.short_title), questionText && /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-neutral-400 mt-0.5" }, questionText), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-neutral-500 mt-0.5" }, label)),
6332
- /* @__PURE__ */ import_react34.default.createElement(
6279
+ /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-sm font-medium text-neutral-800 truncate" }, topic.short_title), questionText && /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-xs text-neutral-400 mt-0.5" }, questionText), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-xs text-neutral-500 mt-0.5" }, label)),
6280
+ /* @__PURE__ */ import_react33.default.createElement(
6333
6281
  "svg",
6334
6282
  {
6335
6283
  width: "16",
@@ -6346,9 +6294,9 @@ function StanceAccordion({
6346
6294
  transition: "transform 0.2s ease"
6347
6295
  }
6348
6296
  },
6349
- /* @__PURE__ */ import_react34.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6297
+ /* @__PURE__ */ import_react33.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6350
6298
  )
6351
- ), /* @__PURE__ */ import_react34.default.createElement(
6299
+ ), /* @__PURE__ */ import_react33.default.createElement(
6352
6300
  "div",
6353
6301
  {
6354
6302
  style: {
@@ -6357,7 +6305,7 @@ function StanceAccordion({
6357
6305
  transition: "grid-template-rows 0.25s ease"
6358
6306
  }
6359
6307
  },
6360
- /* @__PURE__ */ import_react34.default.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "px-2 pb-4" }, isLoading && /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center py-3" }, /* @__PURE__ */ import_react34.default.createElement(
6308
+ /* @__PURE__ */ import_react33.default.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "px-2 pb-4" }, isLoading && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center py-3" }, /* @__PURE__ */ import_react33.default.createElement(
6361
6309
  "div",
6362
6310
  {
6363
6311
  style: {
@@ -6369,14 +6317,14 @@ function StanceAccordion({
6369
6317
  animation: "ev-spin 0.8s linear infinite"
6370
6318
  }
6371
6319
  }
6372
- )), !isLoading && cached && /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react34.default.createElement(
6320
+ )), !isLoading && cached && /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react33.default.createElement(
6373
6321
  "p",
6374
6322
  {
6375
6323
  className: "text-sm text-neutral-700 mb-3",
6376
6324
  style: { whiteSpace: "pre-wrap", lineHeight: 1.6 }
6377
6325
  },
6378
6326
  cached.reasoning
6379
- ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ import_react34.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-xs font-semibold text-neutral-500 uppercase tracking-wider mb-1.5" }, "References"), /* @__PURE__ */ import_react34.default.createElement("ol", { className: "list-decimal list-inside space-y-1" }, cached.sources.map((src, i) => /* @__PURE__ */ import_react34.default.createElement("li", { key: i, className: "text-xs text-neutral-600" }, /* @__PURE__ */ import_react34.default.createElement(
6327
+ ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-xs font-semibold text-neutral-500 uppercase tracking-wider mb-1.5" }, "References"), /* @__PURE__ */ import_react33.default.createElement("ol", { className: "list-decimal list-inside space-y-1" }, cached.sources.map((src, i) => /* @__PURE__ */ import_react33.default.createElement("li", { key: i, className: "text-xs text-neutral-600" }, /* @__PURE__ */ import_react33.default.createElement(
6380
6328
  "a",
6381
6329
  {
6382
6330
  href: src,
@@ -6384,9 +6332,9 @@ function StanceAccordion({
6384
6332
  rel: "noreferrer",
6385
6333
  className: "inline-flex items-center gap-1.5 hover:text-[#00657c] transition-colors"
6386
6334
  },
6387
- /* @__PURE__ */ import_react34.default.createElement(Favicon, { url: src }),
6388
- /* @__PURE__ */ import_react34.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6389
- ))))), topicQuotes.length > 0 && /* @__PURE__ */ import_react34.default.createElement("div", { style: { marginTop: "12px" } }, /* @__PURE__ */ import_react34.default.createElement(
6335
+ /* @__PURE__ */ import_react33.default.createElement(Favicon, { url: src }),
6336
+ /* @__PURE__ */ import_react33.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6337
+ ))))), topicQuotes.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { style: { marginTop: "12px" } }, /* @__PURE__ */ import_react33.default.createElement(
6390
6338
  "p",
6391
6339
  {
6392
6340
  style: {
@@ -6403,7 +6351,7 @@ function StanceAccordion({
6403
6351
  const verdict = verdictsByQuote ? verdictsByQuote[quote.id] : void 0;
6404
6352
  const borderColor = verdict === "agreed" ? "#0e7490" : verdict === "disagreed" ? "#b45309" : "#e2e8f0";
6405
6353
  const sourceName = quote.source_name || quote.sourceName;
6406
- return /* @__PURE__ */ import_react34.default.createElement(
6354
+ return /* @__PURE__ */ import_react33.default.createElement(
6407
6355
  "div",
6408
6356
  {
6409
6357
  key: quote.id,
@@ -6415,7 +6363,7 @@ function StanceAccordion({
6415
6363
  marginBottom: "8px"
6416
6364
  }
6417
6365
  },
6418
- /* @__PURE__ */ import_react34.default.createElement(
6366
+ /* @__PURE__ */ import_react33.default.createElement(
6419
6367
  "p",
6420
6368
  {
6421
6369
  style: {
@@ -6428,7 +6376,7 @@ function StanceAccordion({
6428
6376
  },
6429
6377
  quote.text
6430
6378
  ),
6431
- verdict === "agreed" && /* @__PURE__ */ import_react34.default.createElement(
6379
+ verdict === "agreed" && /* @__PURE__ */ import_react33.default.createElement(
6432
6380
  "span",
6433
6381
  {
6434
6382
  style: {
@@ -6445,10 +6393,10 @@ function StanceAccordion({
6445
6393
  flexShrink: 0
6446
6394
  }
6447
6395
  },
6448
- /* @__PURE__ */ import_react34.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react34.default.createElement("path", { d: "M5 13l4 4L19 7" })),
6396
+ /* @__PURE__ */ import_react33.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react33.default.createElement("path", { d: "M5 13l4 4L19 7" })),
6449
6397
  "Agreed"
6450
6398
  ),
6451
- verdict === "disagreed" && /* @__PURE__ */ import_react34.default.createElement(
6399
+ verdict === "disagreed" && /* @__PURE__ */ import_react33.default.createElement(
6452
6400
  "span",
6453
6401
  {
6454
6402
  style: {
@@ -6465,10 +6413,10 @@ function StanceAccordion({
6465
6413
  flexShrink: 0
6466
6414
  }
6467
6415
  },
6468
- /* @__PURE__ */ import_react34.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react34.default.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
6416
+ /* @__PURE__ */ import_react33.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react33.default.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
6469
6417
  "Disagreed"
6470
6418
  ),
6471
- sourceName && /* @__PURE__ */ import_react34.default.createElement(
6419
+ sourceName && /* @__PURE__ */ import_react33.default.createElement(
6472
6420
  "a",
6473
6421
  {
6474
6422
  href: quote.source_url || quote.sourceUrl,
@@ -6485,10 +6433,10 @@ function StanceAccordion({
6485
6433
  sourceName
6486
6434
  )
6487
6435
  );
6488
- })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-sm text-neutral-400 italic py-2" }, "No detailed reasoning available for this topic."))))
6436
+ })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-sm text-neutral-400 italic py-2" }, "No detailed reasoning available for this topic."))))
6489
6437
  ));
6490
6438
  }),
6491
- hasToggle && /* @__PURE__ */ import_react34.default.createElement(
6439
+ hasToggle && /* @__PURE__ */ import_react33.default.createElement(
6492
6440
  "button",
6493
6441
  {
6494
6442
  type: "button",