@empoweredvote/ev-ui 0.7.0 → 0.8.0

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,
@@ -107,78 +106,78 @@ function RadarChartCore({
107
106
  labelFontSize = 18,
108
107
  padding = 80,
109
108
  labelOffset = 20,
110
- tightFit = false
109
+ tightFit = false,
110
+ activeSpoke = null,
111
+ writeIns = {}
111
112
  }) {
113
+ var _a;
112
114
  const radius = size / 2 - 40;
115
+ const extRadius = radius * 1.15;
113
116
  const centerX = size / 2;
114
117
  const centerY = size / 2;
118
+ const [tooltip, setTooltip] = (0, import_react.useState)(null);
115
119
  const spokes = Object.entries(data);
116
120
  const numSpokes = Math.max(spokes.length, 1);
117
- const prevCountRef = (0, import_react2.useRef)(numSpokes);
121
+ const prevCountRef = (0, import_react.useRef)(numSpokes);
118
122
  const countChanged = numSpokes !== prevCountRef.current;
119
- (0, import_react2.useEffect)(() => {
123
+ (0, import_react.useEffect)(() => {
120
124
  prevCountRef.current = numSpokes;
121
125
  }, [numSpokes]);
122
- const pointsArr = spokes.map(([shortTitle, value], index) => {
123
- var _a;
126
+ function calcAdjusted(value, shortTitle) {
127
+ var _a2;
128
+ if (!value || Number(value) === 0) return 0;
124
129
  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;
130
+ const max = ((_a2 = topic == null ? void 0 : topic.stances) == null ? void 0 : _a2.length) || 10;
131
+ const pct = Number(value) / max * 10;
132
+ return invertedSpokes[shortTitle] ? (max + 1) * 10 / max - pct : pct;
133
+ }
134
+ const pointsArr = spokes.map(([shortTitle, value], index) => {
135
+ const adjusted = calcAdjusted(value, shortTitle);
129
136
  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];
137
+ const angle = 2 * Math.PI * index / numSpokes;
138
+ return [centerX + r * Math.sin(angle), centerY - r * Math.cos(angle)];
133
139
  });
134
140
  const targetPoints = pointsArr.map((p) => p.join(",")).join(" ");
135
- const spring = (0, import_web.useSpring)({
141
+ const springBase = {
136
142
  to: { points: targetPoints },
137
143
  immediate: countChanged,
138
- reset: countChanged,
139
144
  config: { tension: 300, friction: 30 }
140
- });
145
+ };
146
+ if (countChanged) springBase.from = { points: targetPoints };
147
+ const spring = (0, import_web.useSpring)(springBase);
141
148
  const hasCompareData = Object.keys(compareData).length > 0;
142
149
  const centerPoints = spokes.map(() => `${centerX},${centerY}`).join(" ");
143
150
  let comparePoints = null;
144
151
  let compareCoords = null;
145
152
  if (hasCompareData) {
146
153
  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;
154
+ var _a2;
155
+ const value = (_a2 = compareData[shortTitle]) != null ? _a2 : 0;
156
+ const adjusted = calcAdjusted(value, shortTitle);
154
157
  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];
158
+ const angle = 2 * Math.PI * index / numSpokes;
159
+ return [centerX + r * Math.sin(angle), centerY - r * Math.cos(angle)];
158
160
  });
159
161
  compareCoords = ccoords;
160
162
  comparePoints = ccoords.map((p) => p.join(",")).join(" ");
161
163
  }
162
- const hadCompareDataRef = (0, import_react2.useRef)(false);
164
+ const hadCompareDataRef = (0, import_react.useRef)(false);
163
165
  const compareJustAppeared = hasCompareData && !hadCompareDataRef.current;
164
- (0, import_react2.useEffect)(() => {
166
+ (0, import_react.useEffect)(() => {
165
167
  hadCompareDataRef.current = hasCompareData;
166
168
  }, [hasCompareData]);
167
- const compareSpring = (0, import_web.useSpring)({
169
+ const compareSpringBase = {
168
170
  to: { points: comparePoints || centerPoints || `${centerX},${centerY}` },
169
171
  immediate: countChanged || compareJustAppeared,
170
- reset: countChanged || compareJustAppeared,
171
172
  config: { tension: 300, friction: 30 }
172
- });
173
+ };
174
+ if (countChanged || compareJustAppeared) compareSpringBase.from = compareSpringBase.to;
175
+ const compareSpring = (0, import_web.useSpring)(compareSpringBase);
173
176
  const labelMeta = spokes.map(([shortTitle], i) => {
174
177
  const angle = 2 * Math.PI * i / numSpokes;
175
- const baseFSize = labelFontSize;
176
178
  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);
179
+ const longestLineLen = lines.reduce((m, ln) => ln.length > m ? ln.length : m, 0);
180
+ const fSize = adaptiveFontSize(longestLineLen, labelFontSize);
182
181
  const estimatedWidth = longestLineLen * fSize * 0.6;
183
182
  const sinA = Math.sin(angle);
184
183
  const side = sinA < -0.1 ? "left" : sinA > 0.1 ? "right" : "center";
@@ -189,30 +188,31 @@ function RadarChartCore({
189
188
  const minPadding = 40;
190
189
  const maxPadding = padding * 2;
191
190
  const rawLeftPadding = Math.min(
192
- Math.max(
193
- leftLabelWidths.length ? Math.max(...leftLabelWidths) + labelOffset : 0,
194
- minPadding
195
- ),
191
+ Math.max(leftLabelWidths.length ? Math.max(...leftLabelWidths) + labelOffset : 0, minPadding),
196
192
  maxPadding
197
193
  );
198
194
  const rawRightPadding = Math.min(
199
- Math.max(
200
- rightLabelWidths.length ? Math.max(...rightLabelWidths) + labelOffset : 0,
201
- minPadding
202
- ),
195
+ Math.max(rightLabelWidths.length ? Math.max(...rightLabelWidths) + labelOffset : 0, minPadding),
203
196
  maxPadding
204
197
  );
205
198
  const symmetricPadding = Math.max(rawLeftPadding, rawRightPadding);
206
199
  const leftPadding = symmetricPadding;
207
200
  const rightPadding = symmetricPadding;
208
201
  const verticalPadding = padding;
202
+ const spokeExtension = spokes.reduce((acc, [shortTitle]) => {
203
+ const userAdj = calcAdjusted(data[shortTitle], shortTitle);
204
+ const cmpAdj = hasCompareData && compareData[shortTitle] ? calcAdjusted(compareData[shortTitle], shortTitle) : 0;
205
+ acc[shortTitle] = userAdj > 10 || cmpAdj > 10;
206
+ return acc;
207
+ }, {});
209
208
  let tightTop = -verticalPadding;
210
209
  let tightHeight = size + verticalPadding * 2;
211
210
  if (tightFit && numSpokes > 0) {
212
211
  let yMin = Infinity, yMax = -Infinity;
213
212
  for (let i = 0; i < numSpokes; i++) {
214
213
  const angle = 2 * Math.PI * i / numSpokes;
215
- const y = centerY - radius * Math.cos(angle);
214
+ const effectiveR = spokeExtension[(_a = spokes[i]) == null ? void 0 : _a[0]] ? extRadius : radius;
215
+ const y = centerY - effectiveR * Math.cos(angle);
216
216
  if (y < yMin) yMin = y;
217
217
  if (y > yMax) yMax = y;
218
218
  }
@@ -226,75 +226,94 @@ function RadarChartCore({
226
226
  const ring = [];
227
227
  for (let i = 0; i < numSpokes; i++) {
228
228
  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}`);
229
+ ring.push(`${centerX + radius * scale * Math.sin(angle)},${centerY - radius * scale * Math.cos(angle)}`);
232
230
  }
233
231
  guidePolygons.push(
234
232
  /* @__PURE__ */ import_react.default.createElement("polygon", { key: level, points: ring.join(" "), fill: "none", stroke: "#ccc" })
235
233
  );
236
234
  }
235
+ const getStanceText = (shortTitle, value) => {
236
+ if (writeIns[shortTitle]) return writeIns[shortTitle];
237
+ const topic = topics.find((t) => t.short_title === shortTitle);
238
+ const stances = (topic == null ? void 0 : topic.stances) || [];
239
+ const idx = Math.round(Number(value)) - 1;
240
+ if (idx >= 0 && idx < stances.length) {
241
+ return stances[idx].text || shortTitle;
242
+ }
243
+ return shortTitle;
244
+ };
237
245
  return /* @__PURE__ */ import_react.default.createElement(
238
246
  "svg",
239
247
  {
240
248
  className: "w-full h-auto max-h-full",
241
249
  viewBox: `-${leftPadding} ${tightTop} ${size + leftPadding + rightPadding} ${tightHeight}`,
242
- preserveAspectRatio: "xMidYMid meet"
250
+ preserveAspectRatio: "xMidYMid meet",
251
+ onMouseLeave: () => setTooltip(null)
243
252
  },
244
253
  guidePolygons,
245
254
  spokes.map(([shortTitle], i) => {
246
255
  const angle = 2 * Math.PI * i / numSpokes;
247
- const x = centerX + radius * Math.sin(angle);
248
- const y = centerY - radius * Math.cos(angle);
256
+ const endX = centerX + radius * Math.sin(angle);
257
+ const endY = centerY - radius * Math.cos(angle);
249
258
  const isUnanswered = !!unansweredSpokes[shortTitle];
250
- return /* @__PURE__ */ import_react.default.createElement(
259
+ const needsExt = spokeExtension[shortTitle];
260
+ const extX = centerX + extRadius * Math.sin(angle);
261
+ const extY = centerY - extRadius * Math.cos(angle);
262
+ return /* @__PURE__ */ import_react.default.createElement("g", { key: `spoke-${shortTitle}` }, /* @__PURE__ */ import_react.default.createElement(
251
263
  "line",
252
264
  {
253
- key: `line-${shortTitle}`,
254
265
  x1: centerX,
255
266
  y1: centerY,
256
- x2: x,
257
- y2: y,
267
+ x2: endX,
268
+ y2: endY,
258
269
  stroke: isUnanswered ? "#9ca3af" : "black",
259
270
  strokeDasharray: isUnanswered ? "4 3" : void 0,
260
271
  opacity: isUnanswered ? 0.6 : 1
261
272
  }
262
- );
273
+ ), needsExt && /* @__PURE__ */ import_react.default.createElement(
274
+ "line",
275
+ {
276
+ x1: endX,
277
+ y1: endY,
278
+ x2: extX,
279
+ y2: extY,
280
+ stroke: "black",
281
+ strokeDasharray: "4 4",
282
+ opacity: 0.4
283
+ }
284
+ ));
263
285
  }),
264
286
  spokes.map(([shortTitle], i) => {
265
287
  const angle = 2 * Math.PI * i / numSpokes;
266
- const anchor = angle > Math.PI ? "end" : angle < Math.PI && angle > 0 ? "start" : "middle";
267
288
  const cosA = Math.cos(angle);
268
- const isTop = cosA > 0.5;
269
289
  const isBottom = cosA < -0.5;
270
- const baseFSize = labelFontSize;
290
+ const isTop = cosA > 0.5;
271
291
  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);
292
+ const longestLine = lines.reduce((m, ln) => ln.length > m ? ln.length : m, 0);
293
+ const fSize = adaptiveFontSize(longestLine, labelFontSize);
277
294
  const lineHeight = fSize * 1.1;
278
295
  const dynamicLabelOffset = lines.length > 1 ? labelOffset + 8 : labelOffset;
279
296
  const offset2 = radius + dynamicLabelOffset;
280
297
  const labelX = centerX + offset2 * Math.sin(angle);
281
298
  let labelY = centerY - offset2 * Math.cos(angle);
282
- if (isTop && lines.length > 1) {
283
- labelY -= (lines.length - 1) * lineHeight;
284
- }
299
+ if (isTop && lines.length > 1) labelY -= (lines.length - 1) * lineHeight;
300
+ const isActive = shortTitle === activeSpoke;
285
301
  const isUnansweredLabel = !!unansweredSpokes[shortTitle];
302
+ const activeFSize = fSize * 1.5;
303
+ const displayFSize = isActive ? activeFSize : fSize;
286
304
  return /* @__PURE__ */ import_react.default.createElement(
287
305
  "text",
288
306
  {
289
307
  key: `label-${shortTitle}`,
290
308
  x: labelX,
291
309
  y: labelY,
292
- textAnchor: anchor,
310
+ textAnchor: "middle",
293
311
  dominantBaseline: isBottom ? "hanging" : "auto",
294
312
  onClick: () => onReplaceTopic(shortTitle),
295
313
  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 }
314
+ fill: isActive ? "#E85D26" : isUnansweredLabel ? "#9ca3af" : void 0,
315
+ fontWeight: isActive ? "bold" : void 0,
316
+ style: { cursor: "pointer", userSelect: "none", fontSize: displayFSize }
298
317
  },
299
318
  isUnansweredLabel && /* @__PURE__ */ import_react.default.createElement("title", null, "No stance on file for this topic."),
300
319
  lines.map((ln, idx) => /* @__PURE__ */ import_react.default.createElement("tspan", { key: idx, x: labelX, dy: idx === 0 ? "0" : `${lineHeight}` }, ln))
@@ -305,22 +324,14 @@ function RadarChartCore({
305
324
  {
306
325
  key: "user-static",
307
326
  points: targetPoints,
308
- style: {
309
- fill: "rgba(124, 107, 158, 0.4)",
310
- stroke: "#7C6B9E",
311
- strokeWidth: 3
312
- }
327
+ style: { fill: "rgba(124, 107, 158, 0.4)", stroke: "#7C6B9E", strokeWidth: 3 }
313
328
  }
314
329
  ) : /* @__PURE__ */ import_react.default.createElement(
315
330
  import_web.animated.polygon,
316
331
  {
317
332
  key: "user-animated",
318
333
  points: spring.points,
319
- style: {
320
- fill: "rgba(124, 107, 158, 0.4)",
321
- stroke: "#7C6B9E",
322
- strokeWidth: 3
323
- }
334
+ style: { fill: "rgba(124, 107, 158, 0.4)", stroke: "#7C6B9E", strokeWidth: 3 }
324
335
  }
325
336
  ),
326
337
  pointsArr.map(([cx, cy], i) => {
@@ -338,7 +349,10 @@ function RadarChartCore({
338
349
  r: matches ? 8 : 7,
339
350
  fill: matches ? "#fed12e" : "#7C6B9E",
340
351
  stroke: "#FFFFFF",
341
- strokeWidth: 3
352
+ strokeWidth: 3,
353
+ style: { cursor: "default" },
354
+ onMouseEnter: () => setTooltip({ x: cx, y: cy, text: getStanceText(shortTitle, userVal) }),
355
+ onMouseLeave: () => setTooltip(null)
342
356
  }
343
357
  );
344
358
  }),
@@ -347,22 +361,14 @@ function RadarChartCore({
347
361
  {
348
362
  key: "compare-static",
349
363
  points: comparePoints,
350
- style: {
351
- fill: "rgba(90, 154, 110, 0.3)",
352
- stroke: "#5A9A6E",
353
- strokeWidth: 2
354
- }
364
+ style: { fill: "rgba(90, 154, 110, 0.3)", stroke: "#5A9A6E", strokeWidth: 2 }
355
365
  }
356
366
  ) : /* @__PURE__ */ import_react.default.createElement(
357
367
  import_web.animated.polygon,
358
368
  {
359
369
  key: "compare-animated",
360
370
  points: compareSpring.points,
361
- style: {
362
- fill: "rgba(90, 154, 110, 0.3)",
363
- stroke: "#5A9A6E",
364
- strokeWidth: 2
365
- }
371
+ style: { fill: "rgba(90, 154, 110, 0.3)", stroke: "#5A9A6E", strokeWidth: 2 }
366
372
  }
367
373
  ) : null,
368
374
  hasCompareData && compareCoords && compareCoords.map(([cx, cy], i) => {
@@ -370,7 +376,7 @@ function RadarChartCore({
370
376
  const userVal = spokes[i][1];
371
377
  const compareVal = compareData[shortTitle];
372
378
  if (!compareVal || Number(compareVal) === 0) return null;
373
- const matches = userVal !== 0 && compareVal !== 0 && compareVal != null && Number(userVal) === Number(compareVal);
379
+ const matches = userVal !== 0 && compareVal != null && Number(userVal) === Number(compareVal);
374
380
  return /* @__PURE__ */ import_react.default.createElement(
375
381
  "circle",
376
382
  {
@@ -380,14 +386,17 @@ function RadarChartCore({
380
386
  r: matches ? 8 : 7,
381
387
  fill: matches ? "#fed12e" : "#5A9A6E",
382
388
  stroke: "#FFFFFF",
383
- strokeWidth: 3
389
+ strokeWidth: 3,
390
+ style: { cursor: "default" },
391
+ onMouseEnter: () => setTooltip({ x: cx, y: cy, text: getStanceText(shortTitle, compareVal) }),
392
+ onMouseLeave: () => setTooltip(null)
384
393
  }
385
394
  );
386
395
  }),
387
396
  spokes.map(([shortTitle], i) => {
388
397
  const angle = 2 * Math.PI * i / numSpokes;
389
- const x = centerX + radius * Math.sin(angle);
390
- const y = centerY - radius * Math.cos(angle);
398
+ const endX = centerX + (spokeExtension[shortTitle] ? extRadius : radius) * Math.sin(angle);
399
+ const endY = centerY - (spokeExtension[shortTitle] ? extRadius : radius) * Math.cos(angle);
391
400
  const isUnansweredHitbox = !!unansweredSpokes[shortTitle];
392
401
  return /* @__PURE__ */ import_react.default.createElement(
393
402
  "line",
@@ -395,15 +404,51 @@ function RadarChartCore({
395
404
  key: `hitbox-${shortTitle}`,
396
405
  x1: centerX,
397
406
  y1: centerY,
398
- x2: x,
399
- y2: y,
407
+ x2: endX,
408
+ y2: endY,
400
409
  stroke: "transparent",
401
410
  strokeWidth: 14,
402
411
  onClick: () => isUnansweredHitbox ? onReplaceTopic(shortTitle) : onToggleInversion(shortTitle),
403
412
  style: { cursor: "pointer" }
404
413
  }
405
414
  );
406
- })
415
+ }),
416
+ tooltip && (() => {
417
+ const tipW = 190;
418
+ const tipH = 70;
419
+ const svgW = size + leftPadding + rightPadding;
420
+ const tx = tooltip.x + leftPadding + 12 > svgW - tipW ? tooltip.x - tipW - 12 : tooltip.x + 12;
421
+ const ty = tooltip.y - 10;
422
+ return /* @__PURE__ */ import_react.default.createElement(
423
+ "foreignObject",
424
+ {
425
+ x: tx,
426
+ y: ty,
427
+ width: tipW,
428
+ height: tipH,
429
+ style: { overflow: "visible", pointerEvents: "none" }
430
+ },
431
+ /* @__PURE__ */ import_react.default.createElement(
432
+ "div",
433
+ {
434
+ xmlns: "http://www.w3.org/1999/xhtml",
435
+ style: {
436
+ background: "white",
437
+ border: "1px solid #d1d5db",
438
+ borderRadius: 6,
439
+ padding: "6px 10px",
440
+ fontSize: 11,
441
+ lineHeight: 1.4,
442
+ color: "#111",
443
+ boxShadow: "0 2px 8px rgba(0,0,0,0.12)",
444
+ width: tipW + "px",
445
+ wordWrap: "break-word"
446
+ }
447
+ },
448
+ tooltip.text
449
+ )
450
+ );
451
+ })()
407
452
  );
408
453
  }
409
454
  function adaptiveFontSize(longestLineLen, baseFSize) {
@@ -442,7 +487,7 @@ function wrapLabel(label, maxChars = 12) {
442
487
  }
443
488
 
444
489
  // src/Header.jsx
445
- var import_react4 = __toESM(require("react"));
490
+ var import_react3 = __toESM(require("react"));
446
491
 
447
492
  // src/tokens.js
448
493
  var colorScales = {
@@ -838,13 +883,13 @@ var breakpoints = {
838
883
  };
839
884
 
840
885
  // src/useMediaQuery.js
841
- var import_react3 = require("react");
886
+ var import_react2 = require("react");
842
887
  function useMediaQuery(query) {
843
- const [matches, setMatches] = (0, import_react3.useState)(() => {
888
+ const [matches, setMatches] = (0, import_react2.useState)(() => {
844
889
  if (typeof window === "undefined") return false;
845
890
  return window.matchMedia(query).matches;
846
891
  });
847
- (0, import_react3.useEffect)(() => {
892
+ (0, import_react2.useEffect)(() => {
848
893
  if (typeof window === "undefined") return;
849
894
  const mql = window.matchMedia(query);
850
895
  const handler = (e) => setMatches(e.matches);
@@ -859,6 +904,7 @@ function useMediaQuery(query) {
859
904
  function Header({
860
905
  logoSrc,
861
906
  logoAlt = "Empowered Vote",
907
+ logoHref = "https://login.empowered.vote/profile",
862
908
  navItems = [],
863
909
  ctaButton,
864
910
  secondaryAction,
@@ -867,12 +913,12 @@ function Header({
867
913
  profileMenu,
868
914
  style = {}
869
915
  }) {
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);
916
+ const [mobileMenuOpen, setMobileMenuOpen] = (0, import_react3.useState)(false);
917
+ const [openDropdown, setOpenDropdown] = (0, import_react3.useState)(null);
918
+ const [profileOpen, setProfileOpen] = (0, import_react3.useState)(false);
873
919
  const isMobile = useMediaQuery("(max-width: 768px)");
874
- const profileRef = (0, import_react4.useRef)(null);
875
- (0, import_react4.useEffect)(() => {
920
+ const profileRef = (0, import_react3.useRef)(null);
921
+ (0, import_react3.useEffect)(() => {
876
922
  if (!profileOpen) return;
877
923
  const handleClickOutside = (e) => {
878
924
  if (profileRef.current && !profileRef.current.contains(e.target)) {
@@ -1083,14 +1129,14 @@ function Header({
1083
1129
  const isActive = currentPath === item.href;
1084
1130
  const hasDropdown = item.dropdown && item.dropdown.length > 0;
1085
1131
  const isOpen = openDropdown === item.label;
1086
- return /* @__PURE__ */ import_react4.default.createElement(
1132
+ return /* @__PURE__ */ import_react3.default.createElement(
1087
1133
  "div",
1088
1134
  {
1089
1135
  style: { position: "relative" },
1090
1136
  onMouseEnter: () => hasDropdown && setOpenDropdown(item.label),
1091
1137
  onMouseLeave: () => hasDropdown && setOpenDropdown(null)
1092
1138
  },
1093
- /* @__PURE__ */ import_react4.default.createElement(
1139
+ /* @__PURE__ */ import_react3.default.createElement(
1094
1140
  "a",
1095
1141
  {
1096
1142
  href: item.href,
@@ -1101,7 +1147,7 @@ function Header({
1101
1147
  }
1102
1148
  },
1103
1149
  item.label,
1104
- hasDropdown && /* @__PURE__ */ import_react4.default.createElement(
1150
+ hasDropdown && /* @__PURE__ */ import_react3.default.createElement(
1105
1151
  "svg",
1106
1152
  {
1107
1153
  style: styles2.dropdownIcon,
@@ -1109,7 +1155,7 @@ function Header({
1109
1155
  fill: "none",
1110
1156
  xmlns: "http://www.w3.org/2000/svg"
1111
1157
  },
1112
- /* @__PURE__ */ import_react4.default.createElement(
1158
+ /* @__PURE__ */ import_react3.default.createElement(
1113
1159
  "path",
1114
1160
  {
1115
1161
  d: "M1 1L8 8L15 1",
@@ -1121,7 +1167,7 @@ function Header({
1121
1167
  )
1122
1168
  )
1123
1169
  ),
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(
1170
+ 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
1171
  "a",
1126
1172
  {
1127
1173
  key: idx,
@@ -1139,14 +1185,14 @@ function Header({
1139
1185
  ))))
1140
1186
  );
1141
1187
  };
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(
1188
+ 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
1189
  "a",
1144
1190
  {
1145
- href: "/",
1146
- onClick: (e) => handleNavClick(e, "/"),
1191
+ href: logoHref,
1192
+ onClick: (e) => handleNavClick(e, logoHref),
1147
1193
  style: { display: "flex", alignItems: "center" }
1148
1194
  },
1149
- logoSrc ? /* @__PURE__ */ import_react4.default.createElement("img", { src: logoSrc, alt: logoAlt, style: styles2.logo }) : /* @__PURE__ */ import_react4.default.createElement(
1195
+ logoSrc ? /* @__PURE__ */ import_react3.default.createElement("img", { src: logoSrc, alt: logoAlt, style: styles2.logo }) : /* @__PURE__ */ import_react3.default.createElement(
1150
1196
  "span",
1151
1197
  {
1152
1198
  style: {
@@ -1158,7 +1204,7 @@ function Header({
1158
1204
  },
1159
1205
  "empowered.vote"
1160
1206
  )
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(
1207
+ ), /* @__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
1208
  "a",
1163
1209
  {
1164
1210
  href: secondaryAction.href,
@@ -1181,7 +1227,7 @@ function Header({
1181
1227
  }
1182
1228
  },
1183
1229
  secondaryAction.label
1184
- ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1230
+ ), ctaButton && /* @__PURE__ */ import_react3.default.createElement(
1185
1231
  "a",
1186
1232
  {
1187
1233
  href: ctaButton.href,
@@ -1196,7 +1242,7 @@ function Header({
1196
1242
  }
1197
1243
  },
1198
1244
  ctaButton.label
1199
- ), profileMenu && /* @__PURE__ */ import_react4.default.createElement("div", { ref: profileRef, style: { position: "relative" } }, /* @__PURE__ */ import_react4.default.createElement(
1245
+ ), profileMenu && /* @__PURE__ */ import_react3.default.createElement("div", { ref: profileRef, style: { position: "relative" } }, /* @__PURE__ */ import_react3.default.createElement(
1200
1246
  "button",
1201
1247
  {
1202
1248
  style: styles2.profileButton,
@@ -1204,7 +1250,7 @@ function Header({
1204
1250
  "aria-label": "Profile menu",
1205
1251
  "aria-expanded": profileOpen
1206
1252
  },
1207
- /* @__PURE__ */ import_react4.default.createElement(
1253
+ /* @__PURE__ */ import_react3.default.createElement(
1208
1254
  "svg",
1209
1255
  {
1210
1256
  width: "20",
@@ -1216,12 +1262,12 @@ function Header({
1216
1262
  strokeLinecap: "round",
1217
1263
  strokeLinejoin: "round"
1218
1264
  },
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" })
1265
+ /* @__PURE__ */ import_react3.default.createElement("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
1266
+ /* @__PURE__ */ import_react3.default.createElement("circle", { cx: "12", cy: "7", r: "4" })
1221
1267
  )
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) => {
1268
+ ), 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
1269
  if (item.href) {
1224
- return /* @__PURE__ */ import_react4.default.createElement(
1270
+ return /* @__PURE__ */ import_react3.default.createElement(
1225
1271
  "a",
1226
1272
  {
1227
1273
  key: idx,
@@ -1244,7 +1290,7 @@ function Header({
1244
1290
  item.label
1245
1291
  );
1246
1292
  }
1247
- return /* @__PURE__ */ import_react4.default.createElement(
1293
+ return /* @__PURE__ */ import_react3.default.createElement(
1248
1294
  "button",
1249
1295
  {
1250
1296
  key: idx,
@@ -1263,7 +1309,7 @@ function Header({
1263
1309
  },
1264
1310
  item.label
1265
1311
  );
1266
- }))))), /* @__PURE__ */ import_react4.default.createElement(
1312
+ }))))), /* @__PURE__ */ import_react3.default.createElement(
1267
1313
  "button",
1268
1314
  {
1269
1315
  style: styles2.mobileMenuButton,
@@ -1272,7 +1318,7 @@ function Header({
1272
1318
  "aria-label": "Toggle menu",
1273
1319
  "aria-expanded": mobileMenuOpen
1274
1320
  },
1275
- /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.hamburger }, /* @__PURE__ */ import_react4.default.createElement(
1321
+ /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.hamburger }, /* @__PURE__ */ import_react3.default.createElement(
1276
1322
  "span",
1277
1323
  {
1278
1324
  style: {
@@ -1284,7 +1330,7 @@ function Header({
1284
1330
  backgroundColor: colors.evTeal
1285
1331
  }
1286
1332
  }
1287
- ), /* @__PURE__ */ import_react4.default.createElement(
1333
+ ), /* @__PURE__ */ import_react3.default.createElement(
1288
1334
  "span",
1289
1335
  {
1290
1336
  style: {
@@ -1297,9 +1343,9 @@ function Header({
1297
1343
  }
1298
1344
  }
1299
1345
  ))
1300
- )), /* @__PURE__ */ import_react4.default.createElement("div", { style: styles2.mobileMenu, className: "ev-header-mobile-menu" }, navItems.map((item, idx) => {
1346
+ )), /* @__PURE__ */ import_react3.default.createElement("div", { style: styles2.mobileMenu, className: "ev-header-mobile-menu" }, navItems.map((item, idx) => {
1301
1347
  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(
1348
+ 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
1349
  "span",
1304
1350
  {
1305
1351
  style: {
@@ -1309,7 +1355,7 @@ function Header({
1309
1355
  }
1310
1356
  },
1311
1357
  item.label
1312
- ), item.dropdown.map((sub, subIdx) => /* @__PURE__ */ import_react4.default.createElement(
1358
+ ), item.dropdown.map((sub, subIdx) => /* @__PURE__ */ import_react3.default.createElement(
1313
1359
  "a",
1314
1360
  {
1315
1361
  key: subIdx,
@@ -1326,7 +1372,7 @@ function Header({
1326
1372
  }
1327
1373
  },
1328
1374
  sub.label
1329
- ))) : /* @__PURE__ */ import_react4.default.createElement(
1375
+ ))) : /* @__PURE__ */ import_react3.default.createElement(
1330
1376
  "a",
1331
1377
  {
1332
1378
  href: item.href,
@@ -1338,7 +1384,7 @@ function Header({
1338
1384
  },
1339
1385
  item.label
1340
1386
  ));
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(
1387
+ }), 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
1388
  "a",
1343
1389
  {
1344
1390
  href: secondaryAction.href,
@@ -1353,7 +1399,7 @@ function Header({
1353
1399
  style: { ...styles2.secondaryAction, marginTop: spacing[4], textAlign: "center", justifyContent: "center" }
1354
1400
  },
1355
1401
  secondaryAction.label
1356
- ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1402
+ ), ctaButton && /* @__PURE__ */ import_react3.default.createElement(
1357
1403
  "a",
1358
1404
  {
1359
1405
  href: ctaButton.href,
@@ -1364,7 +1410,7 @@ function Header({
1364
1410
  style: { ...styles2.ctaButton, marginTop: spacing[4], textAlign: "center" }
1365
1411
  },
1366
1412
  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(
1413
+ ), 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
1414
  "span",
1369
1415
  {
1370
1416
  style: {
@@ -1380,7 +1426,7 @@ function Header({
1380
1426
  profileMenu.label
1381
1427
  ), profileMenu.items.map((item, idx) => {
1382
1428
  if (item.href) {
1383
- return /* @__PURE__ */ import_react4.default.createElement(
1429
+ return /* @__PURE__ */ import_react3.default.createElement(
1384
1430
  "a",
1385
1431
  {
1386
1432
  key: idx,
@@ -1397,7 +1443,7 @@ function Header({
1397
1443
  item.label
1398
1444
  );
1399
1445
  }
1400
- return /* @__PURE__ */ import_react4.default.createElement(
1446
+ return /* @__PURE__ */ import_react3.default.createElement(
1401
1447
  "button",
1402
1448
  {
1403
1449
  key: idx,
@@ -1421,10 +1467,10 @@ function Header({
1421
1467
  }
1422
1468
 
1423
1469
  // src/SiteHeader.jsx
1424
- var import_react6 = __toESM(require("react"));
1470
+ var import_react5 = __toESM(require("react"));
1425
1471
 
1426
1472
  // src/FeedbackButton.jsx
1427
- var import_react5 = __toESM(require("react"));
1473
+ var import_react4 = __toESM(require("react"));
1428
1474
  var FEEDBACK_BASE_DEFAULT = "https://alpha.empowered.vote/feedback";
1429
1475
  var HOST_FEATURE_MAP = {
1430
1476
  "compass.empowered.vote": "compass",
@@ -1495,7 +1541,7 @@ function FeedbackButton({
1495
1541
  cursor: "pointer"
1496
1542
  };
1497
1543
  const baseStyle = variant === "link" ? linkStyle2 : pillStyle;
1498
- return /* @__PURE__ */ import_react5.default.createElement(
1544
+ return /* @__PURE__ */ import_react4.default.createElement(
1499
1545
  "a",
1500
1546
  {
1501
1547
  href,
@@ -1559,11 +1605,11 @@ function SiteHeader({
1559
1605
  if (secondaryAction === false) {
1560
1606
  resolvedSecondary = void 0;
1561
1607
  } else if (secondaryAction === void 0) {
1562
- resolvedSecondary = /* @__PURE__ */ import_react6.default.createElement(FeedbackButton, { feature: feedbackFeature });
1608
+ resolvedSecondary = /* @__PURE__ */ import_react5.default.createElement(FeedbackButton, { feature: feedbackFeature });
1563
1609
  } else {
1564
1610
  resolvedSecondary = secondaryAction;
1565
1611
  }
1566
- return /* @__PURE__ */ import_react6.default.createElement(
1612
+ return /* @__PURE__ */ import_react5.default.createElement(
1567
1613
  Header,
1568
1614
  {
1569
1615
  logoSrc,
@@ -1580,7 +1626,7 @@ function SiteHeader({
1580
1626
  }
1581
1627
 
1582
1628
  // src/FilterSidebar.jsx
1583
- var import_react7 = __toESM(require("react"));
1629
+ var import_react6 = __toESM(require("react"));
1584
1630
  function FilterSidebar({
1585
1631
  title = "Filter by",
1586
1632
  zipCode = "",
@@ -1734,14 +1780,14 @@ function FilterSidebar({
1734
1780
  fontSize: fontSizes.sm
1735
1781
  }
1736
1782
  };
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(
1783
+ 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
1784
  "div",
1739
1785
  {
1740
1786
  ref: autocompleteContainerRef,
1741
1787
  style: styles2.zipInputWrapper,
1742
1788
  className: "ev-autocomplete-container"
1743
1789
  }
1744
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react7.default.createElement(
1790
+ ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react6.default.createElement(
1745
1791
  "input",
1746
1792
  {
1747
1793
  ref: zipInputRef,
@@ -1753,7 +1799,7 @@ function FilterSidebar({
1753
1799
  style: styles2.zipInput,
1754
1800
  "aria-label": "Search location"
1755
1801
  }
1756
- ), /* @__PURE__ */ import_react7.default.createElement(
1802
+ ), /* @__PURE__ */ import_react6.default.createElement(
1757
1803
  "button",
1758
1804
  {
1759
1805
  type: "button",
@@ -1762,7 +1808,7 @@ function FilterSidebar({
1762
1808
  "aria-label": "Clear ZIP code"
1763
1809
  },
1764
1810
  "\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(
1811
+ ))), /* @__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
1812
  "input",
1767
1813
  {
1768
1814
  type: "radio",
@@ -1772,18 +1818,18 @@ function FilterSidebar({
1772
1818
  onChange: () => onFilterChange == null ? void 0 : onFilterChange(option.value),
1773
1819
  style: styles2.radioInput
1774
1820
  }
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(
1821
+ ), 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
1822
  "img",
1777
1823
  {
1778
1824
  src: buildingImageSrc,
1779
1825
  alt: `${selectedFilter} government building`,
1780
1826
  style: styles2.buildingImage
1781
1827
  }
1782
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1828
+ ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1783
1829
  }
1784
1830
 
1785
1831
  // src/PoliticianCard.jsx
1786
- var import_react8 = __toESM(require("react"));
1832
+ var import_react7 = __toESM(require("react"));
1787
1833
  function PoliticianCard({
1788
1834
  id,
1789
1835
  imageSrc,
@@ -1935,7 +1981,7 @@ function PoliticianCard({
1935
1981
  textTransform: "uppercase"
1936
1982
  }
1937
1983
  };
1938
- const CompassIcon2 = () => /* @__PURE__ */ import_react8.default.createElement(
1984
+ const CompassIcon2 = () => /* @__PURE__ */ import_react7.default.createElement(
1939
1985
  "svg",
1940
1986
  {
1941
1987
  style: styles2.compassIcon,
@@ -1943,7 +1989,7 @@ function PoliticianCard({
1943
1989
  fill: "none",
1944
1990
  xmlns: "http://www.w3.org/2000/svg"
1945
1991
  },
1946
- /* @__PURE__ */ import_react8.default.createElement(
1992
+ /* @__PURE__ */ import_react7.default.createElement(
1947
1993
  "polygon",
1948
1994
  {
1949
1995
  points: "12,1 21.5,6.5 21.5,17.5 12,23 2.5,17.5 2.5,6.5",
@@ -1953,13 +1999,13 @@ function PoliticianCard({
1953
1999
  strokeLinejoin: "round"
1954
2000
  }
1955
2001
  ),
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(
2002
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
2003
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2004
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2005
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
2006
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2007
+ /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2008
+ /* @__PURE__ */ import_react7.default.createElement(
1963
2009
  "polygon",
1964
2010
  {
1965
2011
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1967,7 +2013,7 @@ function PoliticianCard({
1967
2013
  opacity: "0.35"
1968
2014
  }
1969
2015
  ),
1970
- /* @__PURE__ */ import_react8.default.createElement(
2016
+ /* @__PURE__ */ import_react7.default.createElement(
1971
2017
  "polygon",
1972
2018
  {
1973
2019
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1978,8 +2024,8 @@ function PoliticianCard({
1978
2024
  }
1979
2025
  )
1980
2026
  );
1981
- const [imgError, setImgError] = (0, import_react8.useState)(false);
1982
- (0, import_react8.useEffect)(() => {
2027
+ const [imgError, setImgError] = (0, import_react7.useState)(false);
2028
+ (0, import_react7.useEffect)(() => {
1983
2029
  setImgError(false);
1984
2030
  }, [imageSrc]);
1985
2031
  const getInitials = (n) => {
@@ -1988,7 +2034,7 @@ function PoliticianCard({
1988
2034
  const initials = parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_a = parts[0]) == null ? void 0 : _a[0]) || "?";
1989
2035
  return initials.toUpperCase();
1990
2036
  };
1991
- return /* @__PURE__ */ import_react8.default.createElement(
2037
+ return /* @__PURE__ */ import_react7.default.createElement(
1992
2038
  "div",
1993
2039
  {
1994
2040
  style: styles2.card,
@@ -2013,8 +2059,8 @@ function PoliticianCard({
2013
2059
  }
2014
2060
  }
2015
2061
  },
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(
2062
+ badge && /* @__PURE__ */ import_react7.default.createElement("span", { style: styles2.badge }, badge),
2063
+ /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ import_react7.default.createElement(
2018
2064
  "img",
2019
2065
  {
2020
2066
  src: imageSrc,
@@ -2022,9 +2068,9 @@ function PoliticianCard({
2022
2068
  style: styles2.image,
2023
2069
  onError: () => setImgError(true)
2024
2070
  }
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(
2071
+ ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
2072
+ /* @__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)),
2073
+ onCompassClick && /* @__PURE__ */ import_react7.default.createElement(
2028
2074
  "button",
2029
2075
  {
2030
2076
  type: "button",
@@ -2039,16 +2085,16 @@ function PoliticianCard({
2039
2085
  },
2040
2086
  "aria-label": `View ${name}'s compass`
2041
2087
  },
2042
- /* @__PURE__ */ import_react8.default.createElement(CompassIcon2, null)
2088
+ /* @__PURE__ */ import_react7.default.createElement(CompassIcon2, null)
2043
2089
  )
2044
2090
  );
2045
2091
  }
2046
2092
 
2047
2093
  // src/CompassCardHorizontal.jsx
2048
- var import_react14 = __toESM(require("react"));
2094
+ var import_react13 = __toESM(require("react"));
2049
2095
 
2050
2096
  // src/PlaceholderRadar.jsx
2051
- var import_react9 = __toESM(require("react"));
2097
+ var import_react8 = __toESM(require("react"));
2052
2098
  function PlaceholderRadar({ size = 250, name = "" }) {
2053
2099
  const cx = size / 2;
2054
2100
  const cy = size / 2;
@@ -2061,7 +2107,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2061
2107
  const outerPts = vertices.map(([x, y]) => `${x},${y}`).join(" ");
2062
2108
  const midPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.6},${cy + (y - cy) * 0.6}`).join(" ");
2063
2109
  const innerPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.3},${cy + (y - cy) * 0.3}`).join(" ");
2064
- return /* @__PURE__ */ import_react9.default.createElement(
2110
+ return /* @__PURE__ */ import_react8.default.createElement(
2065
2111
  "svg",
2066
2112
  {
2067
2113
  width: size,
@@ -2075,7 +2121,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2075
2121
  flexShrink: 0
2076
2122
  }
2077
2123
  },
2078
- vertices.map(([x, y], i) => /* @__PURE__ */ import_react9.default.createElement(
2124
+ vertices.map(([x, y], i) => /* @__PURE__ */ import_react8.default.createElement(
2079
2125
  "line",
2080
2126
  {
2081
2127
  key: i,
@@ -2089,7 +2135,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2089
2135
  opacity: "0.6"
2090
2136
  }
2091
2137
  )),
2092
- /* @__PURE__ */ import_react9.default.createElement(
2138
+ /* @__PURE__ */ import_react8.default.createElement(
2093
2139
  "polygon",
2094
2140
  {
2095
2141
  points: innerPts,
@@ -2100,7 +2146,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2100
2146
  opacity: "0.5"
2101
2147
  }
2102
2148
  ),
2103
- /* @__PURE__ */ import_react9.default.createElement(
2149
+ /* @__PURE__ */ import_react8.default.createElement(
2104
2150
  "polygon",
2105
2151
  {
2106
2152
  points: midPts,
@@ -2111,7 +2157,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2111
2157
  opacity: "0.6"
2112
2158
  }
2113
2159
  ),
2114
- /* @__PURE__ */ import_react9.default.createElement(
2160
+ /* @__PURE__ */ import_react8.default.createElement(
2115
2161
  "polygon",
2116
2162
  {
2117
2163
  points: outerPts,
@@ -2125,16 +2171,16 @@ function PlaceholderRadar({ size = 250, name = "" }) {
2125
2171
  }
2126
2172
 
2127
2173
  // src/CompassCardHorizontalMeta.jsx
2128
- var import_react13 = __toESM(require("react"));
2174
+ var import_react12 = __toESM(require("react"));
2129
2175
 
2130
2176
  // src/IconOverlay.jsx
2131
- var import_react11 = __toESM(require("react"));
2132
- var import_react12 = require("@floating-ui/react");
2177
+ var import_react10 = __toESM(require("react"));
2178
+ var import_react11 = require("@floating-ui/react");
2133
2179
 
2134
2180
  // src/icons.js
2135
- var import_react10 = __toESM(require("react"));
2181
+ var import_react9 = __toESM(require("react"));
2136
2182
  function BallotIcon({ size = 16, color = "currentColor" }) {
2137
- return /* @__PURE__ */ import_react10.default.createElement(
2183
+ return /* @__PURE__ */ import_react9.default.createElement(
2138
2184
  "svg",
2139
2185
  {
2140
2186
  width: size,
@@ -2147,13 +2193,13 @@ function BallotIcon({ size = 16, color = "currentColor" }) {
2147
2193
  strokeLinejoin: "round",
2148
2194
  xmlns: "http://www.w3.org/2000/svg"
2149
2195
  },
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" })
2196
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "m9 12 2 2 4-4" }),
2197
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2198
+ /* @__PURE__ */ import_react9.default.createElement("path", { d: "M22 19H2" })
2153
2199
  );
2154
2200
  }
2155
2201
  function CompassIcon({ size = 16, color = "currentColor" }) {
2156
- return /* @__PURE__ */ import_react10.default.createElement(
2202
+ return /* @__PURE__ */ import_react9.default.createElement(
2157
2203
  "svg",
2158
2204
  {
2159
2205
  width: size,
@@ -2166,27 +2212,27 @@ function CompassIcon({ size = 16, color = "currentColor" }) {
2166
2212
  strokeLinejoin: "round",
2167
2213
  xmlns: "http://www.w3.org/2000/svg"
2168
2214
  },
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" })
2215
+ /* @__PURE__ */ import_react9.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2216
+ /* @__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
2217
  );
2172
2218
  }
2173
2219
  function BranchIcon({ size = 16, color = "currentColor", branch }) {
2174
2220
  let paths;
2175
2221
  switch (branch) {
2176
2222
  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" }));
2223
+ 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
2224
  break;
2179
2225
  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" }));
2226
+ 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
2227
  break;
2182
2228
  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" }));
2229
+ 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
2230
  break;
2185
2231
  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" }));
2232
+ 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
2233
  break;
2188
2234
  }
2189
- return /* @__PURE__ */ import_react10.default.createElement(
2235
+ return /* @__PURE__ */ import_react9.default.createElement(
2190
2236
  "svg",
2191
2237
  {
2192
2238
  width: size,
@@ -2205,24 +2251,24 @@ function BranchIcon({ size = 16, color = "currentColor", branch }) {
2205
2251
 
2206
2252
  // src/IconOverlay.jsx
2207
2253
  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)({
2254
+ const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
2255
+ const { refs, floatingStyles, context } = (0, import_react11.useFloating)({
2210
2256
  open: isOpen,
2211
2257
  onOpenChange: setIsOpen,
2212
- middleware: [(0, import_react12.offset)(8), (0, import_react12.flip)(), (0, import_react12.shift)({ padding: 4 })],
2213
- whileElementsMounted: import_react12.autoUpdate
2258
+ middleware: [(0, import_react11.offset)(8), (0, import_react11.flip)(), (0, import_react11.shift)({ padding: 4 })],
2259
+ whileElementsMounted: import_react11.autoUpdate
2214
2260
  });
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)([
2261
+ const hover = (0, import_react11.useHover)(context);
2262
+ const focus2 = (0, import_react11.useFocus)(context);
2263
+ const dismiss = (0, import_react11.useDismiss)(context);
2264
+ const role = (0, import_react11.useRole)(context, { role: "tooltip" });
2265
+ const { getReferenceProps, getFloatingProps } = (0, import_react11.useInteractions)([
2220
2266
  hover,
2221
2267
  focus2,
2222
2268
  dismiss,
2223
2269
  role
2224
2270
  ]);
2225
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
2271
+ return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(
2226
2272
  "span",
2227
2273
  {
2228
2274
  ref: refs.setReference,
@@ -2235,8 +2281,8 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2235
2281
  onClick(e);
2236
2282
  } : void 0
2237
2283
  },
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(
2284
+ /* @__PURE__ */ import_react10.default.createElement(IconComponent, { size, color, ...extraProps })
2285
+ ), isOpen && /* @__PURE__ */ import_react10.default.createElement(import_react11.FloatingPortal, null, /* @__PURE__ */ import_react10.default.createElement(
2240
2286
  "div",
2241
2287
  {
2242
2288
  ref: refs.setFloating,
@@ -2260,7 +2306,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2260
2306
  function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2261
2307
  if (!ballot && !hasStances && !branch) return null;
2262
2308
  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(
2309
+ return /* @__PURE__ */ import_react10.default.createElement(
2264
2310
  "div",
2265
2311
  {
2266
2312
  style: {
@@ -2273,7 +2319,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2273
2319
  // offset icon wrapper padding so icons align flush-left with text
2274
2320
  }
2275
2321
  },
2276
- ballot && /* @__PURE__ */ import_react11.default.createElement(
2322
+ ballot && /* @__PURE__ */ import_react10.default.createElement(
2277
2323
  IconWithTooltip,
2278
2324
  {
2279
2325
  IconComponent: BallotIcon,
@@ -2282,7 +2328,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2282
2328
  size: 14
2283
2329
  }
2284
2330
  ),
2285
- hasStances && /* @__PURE__ */ import_react11.default.createElement(
2331
+ hasStances && /* @__PURE__ */ import_react10.default.createElement(
2286
2332
  IconWithTooltip,
2287
2333
  {
2288
2334
  IconComponent: CompassIcon,
@@ -2292,7 +2338,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2292
2338
  onClick: onCompassClick
2293
2339
  }
2294
2340
  ),
2295
- branch && /* @__PURE__ */ import_react11.default.createElement(
2341
+ branch && /* @__PURE__ */ import_react10.default.createElement(
2296
2342
  IconWithTooltip,
2297
2343
  {
2298
2344
  IconComponent: BranchIcon,
@@ -2312,20 +2358,20 @@ function CompassCardHorizontalMeta({
2312
2358
  userAnswers
2313
2359
  }) {
2314
2360
  const titleText = surface === "elections" ? politician.office_running_for : politician.office_title;
2315
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2361
+ return /* @__PURE__ */ import_react12.default.createElement("div", { style: {
2316
2362
  flex: 1,
2317
2363
  minWidth: 0,
2318
2364
  display: "flex",
2319
2365
  flexDirection: "column",
2320
2366
  gap: spacing[1]
2321
- } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2367
+ } }, /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2322
2368
  fontFamily: fonts.primary,
2323
2369
  fontSize: fontSizes.lg,
2324
2370
  fontWeight: fontWeights.semibold,
2325
2371
  lineHeight: 1.4,
2326
2372
  color: colors.evMutedBlue,
2327
2373
  margin: 0
2328
- } }, politician.full_name), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2374
+ } }, politician.full_name), /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2329
2375
  fontFamily: fonts.primary,
2330
2376
  fontSize: fontSizes.sm,
2331
2377
  fontWeight: fontWeights.semibold,
@@ -2336,7 +2382,7 @@ function CompassCardHorizontalMeta({
2336
2382
  display: "-webkit-box",
2337
2383
  WebkitLineClamp: 2,
2338
2384
  WebkitBoxOrient: "vertical"
2339
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2385
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2340
2386
  fontFamily: fonts.primary,
2341
2387
  fontSize: fontSizes.sm,
2342
2388
  fontWeight: fontWeights.regular,
@@ -2346,7 +2392,7 @@ function CompassCardHorizontalMeta({
2346
2392
  overflow: "hidden",
2347
2393
  textOverflow: "ellipsis",
2348
2394
  whiteSpace: "nowrap"
2349
- } }, politician.district_label), /* @__PURE__ */ import_react13.default.createElement(
2395
+ } }, politician.district_label), /* @__PURE__ */ import_react12.default.createElement(
2350
2396
  IconOverlay,
2351
2397
  {
2352
2398
  ballot: politician.ballot || null,
@@ -2395,11 +2441,11 @@ function CompassCardHorizontal({
2395
2441
  onClick
2396
2442
  }) {
2397
2443
  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)(() => {
2444
+ const [hovered, setHovered] = (0, import_react13.useState)(false);
2445
+ const [focused, setFocused] = (0, import_react13.useState)(false);
2446
+ const [imgError, setImgError] = (0, import_react13.useState)(false);
2447
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react13.useState)(false);
2448
+ (0, import_react13.useEffect)(() => {
2403
2449
  setImgError(false);
2404
2450
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2405
2451
  const cardStyle = {
@@ -2423,7 +2469,7 @@ function CompassCardHorizontal({
2423
2469
  function renderCompass() {
2424
2470
  var _a2, _b, _c;
2425
2471
  if (!userAnswers || userAnswers.length === 0) {
2426
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2472
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2427
2473
  }
2428
2474
  let topics = [];
2429
2475
  let data = {};
@@ -2459,12 +2505,12 @@ function CompassCardHorizontal({
2459
2505
  }, {}) : politician.stances;
2460
2506
  }
2461
2507
  if (topics.length === 0) {
2462
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2508
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2463
2509
  }
2464
2510
  } catch (err) {
2465
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2511
+ return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2466
2512
  }
2467
- return /* @__PURE__ */ import_react14.default.createElement(
2513
+ return /* @__PURE__ */ import_react13.default.createElement(
2468
2514
  RadarChartCore,
2469
2515
  {
2470
2516
  topics,
@@ -2486,7 +2532,7 @@ function CompassCardHorizontal({
2486
2532
  var _a2, _b, _c;
2487
2533
  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
2534
  if (imageSrc && !imgError) {
2489
- return /* @__PURE__ */ import_react14.default.createElement(
2535
+ return /* @__PURE__ */ import_react13.default.createElement(
2490
2536
  "img",
2491
2537
  {
2492
2538
  src: imageSrc,
@@ -2504,7 +2550,7 @@ function CompassCardHorizontal({
2504
2550
  }
2505
2551
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2506
2552
  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: {
2553
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2508
2554
  width: "100%",
2509
2555
  height: "100%",
2510
2556
  backgroundColor: colors.evMutedBlue,
@@ -2518,7 +2564,7 @@ function CompassCardHorizontal({
2518
2564
  } }, initials);
2519
2565
  }
2520
2566
  function renderEmptyVariant() {
2521
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2567
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2522
2568
  width: "100%",
2523
2569
  height: "100%",
2524
2570
  display: "flex",
@@ -2529,14 +2575,14 @@ function CompassCardHorizontal({
2529
2575
  padding: "12px 14px",
2530
2576
  boxSizing: "border-box",
2531
2577
  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: {
2578
+ } }, /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2533
2579
  margin: 0,
2534
2580
  fontSize: fontSizes.xs,
2535
2581
  color: colors.textMuted,
2536
2582
  textAlign: "center",
2537
2583
  lineHeight: 1.4,
2538
2584
  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(
2585
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react13.default.createElement(
2540
2586
  "button",
2541
2587
  {
2542
2588
  type: "button",
@@ -2564,7 +2610,7 @@ function CompassCardHorizontal({
2564
2610
  ));
2565
2611
  }
2566
2612
  function renderUnavailablePlate(message = "Compass currently unavailable for this role.") {
2567
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2613
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2568
2614
  width: "100%",
2569
2615
  height: "100%",
2570
2616
  backgroundColor: colorScales.teal["050"],
@@ -2573,7 +2619,7 @@ function CompassCardHorizontal({
2573
2619
  justifyContent: "center",
2574
2620
  padding: spacing[4],
2575
2621
  boxSizing: "border-box"
2576
- } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2622
+ } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2577
2623
  fontSize: fontSizes.sm,
2578
2624
  fontWeight: fontWeights.semibold,
2579
2625
  lineHeight: 1.4,
@@ -2592,7 +2638,7 @@ function CompassCardHorizontal({
2592
2638
  const name = (politician == null ? void 0 : politician.full_name) || "this official";
2593
2639
  return renderUnavailablePlate(`No compass stances on file for ${name} yet.`);
2594
2640
  }
2595
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2641
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2596
2642
  width: "100%",
2597
2643
  height: "100%",
2598
2644
  display: "flex",
@@ -2602,7 +2648,7 @@ function CompassCardHorizontal({
2602
2648
  boxSizing: "border-box"
2603
2649
  } }, renderCompass());
2604
2650
  }
2605
- return /* @__PURE__ */ import_react14.default.createElement(
2651
+ return /* @__PURE__ */ import_react13.default.createElement(
2606
2652
  "div",
2607
2653
  {
2608
2654
  role: "article",
@@ -2621,7 +2667,7 @@ function CompassCardHorizontal({
2621
2667
  onFocus: () => setFocused(true),
2622
2668
  onBlur: () => setFocused(false)
2623
2669
  },
2624
- /* @__PURE__ */ import_react14.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2670
+ /* @__PURE__ */ import_react13.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2625
2671
  position: "absolute",
2626
2672
  bottom: "15px",
2627
2673
  left: 0,
@@ -2636,7 +2682,7 @@ function CompassCardHorizontal({
2636
2682
  padding: "6px 0",
2637
2683
  pointerEvents: "none"
2638
2684
  } }, 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(
2685
+ /* @__PURE__ */ import_react13.default.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ import_react13.default.createElement(
2640
2686
  CompassCardHorizontalMeta,
2641
2687
  {
2642
2688
  politician,
@@ -2648,7 +2694,7 @@ function CompassCardHorizontal({
2648
2694
  }
2649
2695
 
2650
2696
  // src/CompassCardVertical.jsx
2651
- var import_react15 = __toESM(require("react"));
2697
+ var import_react14 = __toESM(require("react"));
2652
2698
  var RADAR_SIZE2 = 400;
2653
2699
  function CompassCardVertical({
2654
2700
  politician,
@@ -2662,11 +2708,11 @@ function CompassCardVertical({
2662
2708
  onClick
2663
2709
  }) {
2664
2710
  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)(() => {
2711
+ const [hovered, setHovered] = (0, import_react14.useState)(false);
2712
+ const [focused, setFocused] = (0, import_react14.useState)(false);
2713
+ const [imgError, setImgError] = (0, import_react14.useState)(false);
2714
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2715
+ (0, import_react14.useEffect)(() => {
2670
2716
  setImgError(false);
2671
2717
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2672
2718
  const cardStyle = {
@@ -2689,7 +2735,7 @@ function CompassCardVertical({
2689
2735
  function renderCompass() {
2690
2736
  var _a2, _b, _c;
2691
2737
  if (!userAnswers || userAnswers.length === 0) {
2692
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2738
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2693
2739
  }
2694
2740
  let topics = [];
2695
2741
  let data = {};
@@ -2725,17 +2771,17 @@ function CompassCardVertical({
2725
2771
  }, {}) : politician.stances;
2726
2772
  }
2727
2773
  if (topics.length === 0) {
2728
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2774
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2729
2775
  }
2730
2776
  } catch {
2731
- return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2777
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2732
2778
  }
2733
2779
  const unansweredSpokes = {};
2734
2780
  for (const t of topics) {
2735
2781
  const v = compareData[t.short_title];
2736
2782
  if (!v || Number(v) === 0) unansweredSpokes[t.short_title] = true;
2737
2783
  }
2738
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react15.default.createElement(
2784
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react14.default.createElement(
2739
2785
  RadarChartCore,
2740
2786
  {
2741
2787
  topics,
@@ -2770,7 +2816,7 @@ function CompassCardVertical({
2770
2816
  justifyContent: "center"
2771
2817
  };
2772
2818
  if (imageSrc && !imgError) {
2773
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react15.default.createElement(
2819
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement(
2774
2820
  "img",
2775
2821
  {
2776
2822
  src: imageSrc,
@@ -2788,7 +2834,7 @@ function CompassCardVertical({
2788
2834
  }
2789
2835
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2790
2836
  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: {
2837
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement("span", { style: {
2792
2838
  color: colors.textWhite,
2793
2839
  fontFamily: fonts.primary,
2794
2840
  fontWeight: fontWeights.bold,
@@ -2799,7 +2845,7 @@ function CompassCardVertical({
2799
2845
  var _a2, _b, _c;
2800
2846
  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
2847
  if (imageSrc && !imgError) {
2802
- return /* @__PURE__ */ import_react15.default.createElement(
2848
+ return /* @__PURE__ */ import_react14.default.createElement(
2803
2849
  "img",
2804
2850
  {
2805
2851
  src: imageSrc,
@@ -2818,7 +2864,7 @@ function CompassCardVertical({
2818
2864
  }
2819
2865
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2820
2866
  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: {
2867
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2822
2868
  width: RADAR_SIZE2,
2823
2869
  height: RADAR_SIZE2,
2824
2870
  backgroundColor: colors.evMutedBlue,
@@ -2833,7 +2879,7 @@ function CompassCardVertical({
2833
2879
  } }, initials);
2834
2880
  }
2835
2881
  function renderEmptyVariant() {
2836
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2882
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2837
2883
  width: "100%",
2838
2884
  height: "100%",
2839
2885
  flex: 1,
@@ -2846,14 +2892,14 @@ function CompassCardVertical({
2846
2892
  boxSizing: "border-box",
2847
2893
  backgroundColor: colorScales.teal["050"],
2848
2894
  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: {
2895
+ } }, /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2850
2896
  margin: 0,
2851
2897
  fontSize: fontSizes.sm,
2852
2898
  color: colors.textMuted,
2853
2899
  textAlign: "center",
2854
2900
  lineHeight: 1.4,
2855
2901
  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(
2902
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react14.default.createElement(
2857
2903
  "button",
2858
2904
  {
2859
2905
  type: "button",
@@ -2879,7 +2925,7 @@ function CompassCardVertical({
2879
2925
  ));
2880
2926
  }
2881
2927
  function renderUnavailablePlate(message) {
2882
- return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2928
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2883
2929
  width: "100%",
2884
2930
  height: "100%",
2885
2931
  flex: 1,
@@ -2890,7 +2936,7 @@ function CompassCardVertical({
2890
2936
  justifyContent: "center",
2891
2937
  padding: spacing[6],
2892
2938
  boxSizing: "border-box"
2893
- } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2939
+ } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2894
2940
  fontSize: fontSizes.base,
2895
2941
  fontWeight: fontWeights.semibold,
2896
2942
  lineHeight: 1.4,
@@ -2911,7 +2957,7 @@ function CompassCardVertical({
2911
2957
  }
2912
2958
  return renderCompass();
2913
2959
  }
2914
- return /* @__PURE__ */ import_react15.default.createElement(
2960
+ return /* @__PURE__ */ import_react14.default.createElement(
2915
2961
  "div",
2916
2962
  {
2917
2963
  role: "article",
@@ -2930,21 +2976,21 @@ function CompassCardVertical({
2930
2976
  onFocus: () => setFocused(true),
2931
2977
  onBlur: () => setFocused(false)
2932
2978
  },
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: {
2979
+ /* @__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
2980
  fontFamily: fonts.primary,
2935
2981
  fontSize: fontSizes.xl,
2936
2982
  fontWeight: fontWeights.semibold,
2937
2983
  lineHeight: 1.3,
2938
2984
  color: colors.evMutedBlue,
2939
2985
  margin: 0
2940
- } }, politician.full_name), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2986
+ } }, politician.full_name), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2941
2987
  fontFamily: fonts.primary,
2942
2988
  fontSize: fontSizes.sm,
2943
2989
  fontWeight: fontWeights.semibold,
2944
2990
  lineHeight: 1.4,
2945
2991
  color: colors.textSecondary,
2946
2992
  margin: 0
2947
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2993
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2948
2994
  fontFamily: fonts.primary,
2949
2995
  fontSize: fontSizes.sm,
2950
2996
  fontWeight: fontWeights.regular,
@@ -2954,7 +3000,7 @@ function CompassCardVertical({
2954
3000
  overflow: "hidden",
2955
3001
  textOverflow: "ellipsis",
2956
3002
  whiteSpace: "nowrap"
2957
- } }, politician.district_label), /* @__PURE__ */ import_react15.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react15.default.createElement(
3003
+ } }, politician.district_label), /* @__PURE__ */ import_react14.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react14.default.createElement(
2958
3004
  IconOverlay,
2959
3005
  {
2960
3006
  ballot: politician.ballot || null,
@@ -2962,7 +3008,7 @@ function CompassCardVertical({
2962
3008
  branch: politician.branch || null
2963
3009
  }
2964
3010
  )))),
2965
- surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
3011
+ surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2966
3012
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2967
3013
  backgroundColor: "rgba(120,0,0,0.85)",
2968
3014
  color: "#fff",
@@ -2974,7 +3020,7 @@ function CompassCardVertical({
2974
3020
  padding: "6px 0",
2975
3021
  borderRadius: borderRadius.sm
2976
3022
  } }, "Withdrawn"),
2977
- surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
3023
+ surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2978
3024
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2979
3025
  backgroundColor: "rgba(0,0,0,0.75)",
2980
3026
  color: "#fff",
@@ -2986,7 +3032,7 @@ function CompassCardVertical({
2986
3032
  padding: "6px 0",
2987
3033
  borderRadius: borderRadius.sm
2988
3034
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed"),
2989
- /* @__PURE__ */ import_react15.default.createElement("div", { style: {
3035
+ /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2990
3036
  flex: 1,
2991
3037
  padding: spacing[4],
2992
3038
  paddingTop: 0,
@@ -3000,7 +3046,7 @@ function CompassCardVertical({
3000
3046
  }
3001
3047
 
3002
3048
  // src/CompassKey.jsx
3003
- var import_react16 = __toESM(require("react"));
3049
+ var import_react15 = __toESM(require("react"));
3004
3050
 
3005
3051
  // src/evContext.js
3006
3052
  var DEFAULT_BROKER_URL = "https://ev-context.empowered.vote/";
@@ -3245,9 +3291,9 @@ var evContext = {
3245
3291
 
3246
3292
  // src/CompassKey.jsx
3247
3293
  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)(() => {
3294
+ const [dismissed, setDismissed] = (0, import_react15.useState)(false);
3295
+ const [loaded, setLoaded] = (0, import_react15.useState)(false);
3296
+ (0, import_react15.useEffect)(() => {
3251
3297
  let cancelled = false;
3252
3298
  evContext.get().then((shared) => {
3253
3299
  if (cancelled) return;
@@ -3277,7 +3323,7 @@ function CompassKey({ compact = false } = {}) {
3277
3323
  persistDismissed(false);
3278
3324
  }
3279
3325
  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: {
3326
+ 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
3327
  display: "inline-block",
3282
3328
  width: 12,
3283
3329
  height: 12,
@@ -3285,9 +3331,9 @@ function CompassKey({ compact = false } = {}) {
3285
3331
  background: color,
3286
3332
  border: `2px solid ${ring || "#fff"}`,
3287
3333
  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));
3334
+ } }), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3289
3335
  if (dismissed) {
3290
- return /* @__PURE__ */ import_react16.default.createElement(
3336
+ return /* @__PURE__ */ import_react15.default.createElement(
3291
3337
  "button",
3292
3338
  {
3293
3339
  type: "button",
@@ -3308,11 +3354,11 @@ function CompassKey({ compact = false } = {}) {
3308
3354
  cursor: "pointer"
3309
3355
  }
3310
3356
  },
3311
- /* @__PURE__ */ import_react16.default.createElement("span", { "aria-hidden": "true" }, "?"),
3357
+ /* @__PURE__ */ import_react15.default.createElement("span", { "aria-hidden": "true" }, "?"),
3312
3358
  " Compass key"
3313
3359
  );
3314
3360
  }
3315
- return /* @__PURE__ */ import_react16.default.createElement(
3361
+ return /* @__PURE__ */ import_react15.default.createElement(
3316
3362
  "div",
3317
3363
  {
3318
3364
  role: "region",
@@ -3331,17 +3377,17 @@ function CompassKey({ compact = false } = {}) {
3331
3377
  boxSizing: "border-box"
3332
3378
  }
3333
3379
  },
3334
- !compact && /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3380
+ !compact && /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3335
3381
  fontSize: fontSizes.xs,
3336
3382
  fontWeight: fontWeights.semibold,
3337
3383
  color: colors.textMuted,
3338
3384
  textTransform: "uppercase",
3339
3385
  letterSpacing: "0.5px"
3340
3386
  } }, "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: {
3387
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3388
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3389
+ /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3390
+ /* @__PURE__ */ import_react15.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3345
3391
  fontSize: fontSizes.xs,
3346
3392
  fontWeight: fontWeights.semibold,
3347
3393
  color: "#9ca3af",
@@ -3349,8 +3395,8 @@ function CompassKey({ compact = false } = {}) {
3349
3395
  textDecoration: "underline",
3350
3396
  textDecorationStyle: "dashed",
3351
3397
  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(
3398
+ } }, "Topic"), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3399
+ /* @__PURE__ */ import_react15.default.createElement(
3354
3400
  "button",
3355
3401
  {
3356
3402
  type: "button",
@@ -3373,7 +3419,7 @@ function CompassKey({ compact = false } = {}) {
3373
3419
  }
3374
3420
 
3375
3421
  // src/CategorySection.jsx
3376
- var import_react17 = __toESM(require("react"));
3422
+ var import_react16 = __toESM(require("react"));
3377
3423
  function CategorySection({
3378
3424
  title,
3379
3425
  infoTooltip,
@@ -3383,7 +3429,7 @@ function CategorySection({
3383
3429
  tier
3384
3430
  }) {
3385
3431
  var _a, _b;
3386
- const [showTooltip, setShowTooltip] = (0, import_react17.useState)(false);
3432
+ const [showTooltip, setShowTooltip] = (0, import_react16.useState)(false);
3387
3433
  const tierStyle = tier ? tierColors[tier] : null;
3388
3434
  const styles2 = {
3389
3435
  section: {
@@ -3451,7 +3497,7 @@ function CategorySection({
3451
3497
  gap: spacing[4]
3452
3498
  }
3453
3499
  };
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(
3500
+ 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
3501
  "button",
3456
3502
  {
3457
3503
  type: "button",
@@ -3463,8 +3509,8 @@ function CategorySection({
3463
3509
  "aria-label": `Info about ${title}`
3464
3510
  },
3465
3511
  "i",
3466
- showTooltip && /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3467
- ), websiteUrl && /* @__PURE__ */ import_react17.default.createElement(
3512
+ showTooltip && /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3513
+ ), websiteUrl && /* @__PURE__ */ import_react16.default.createElement(
3468
3514
  "a",
3469
3515
  {
3470
3516
  href: websiteUrl,
@@ -3473,7 +3519,7 @@ function CategorySection({
3473
3519
  style: styles2.externalLink,
3474
3520
  "aria-label": `Visit official website for ${title}`
3475
3521
  },
3476
- /* @__PURE__ */ import_react17.default.createElement(
3522
+ /* @__PURE__ */ import_react16.default.createElement(
3477
3523
  "svg",
3478
3524
  {
3479
3525
  viewBox: "0 0 24 24",
@@ -3481,7 +3527,7 @@ function CategorySection({
3481
3527
  xmlns: "http://www.w3.org/2000/svg",
3482
3528
  style: { width: "14px", height: "14px" }
3483
3529
  },
3484
- /* @__PURE__ */ import_react17.default.createElement(
3530
+ /* @__PURE__ */ import_react16.default.createElement(
3485
3531
  "path",
3486
3532
  {
3487
3533
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14",
@@ -3492,11 +3538,11 @@ function CategorySection({
3492
3538
  }
3493
3539
  )
3494
3540
  )
3495
- )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3541
+ )), /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3496
3542
  }
3497
3543
 
3498
3544
  // src/SubGroupSection.jsx
3499
- var import_react18 = __toESM(require("react"));
3545
+ var import_react17 = __toESM(require("react"));
3500
3546
  function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap, justifyContent }) {
3501
3547
  const styles2 = {
3502
3548
  section: {
@@ -3531,7 +3577,7 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3531
3577
  width: "100%"
3532
3578
  }
3533
3579
  };
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(
3580
+ 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
3581
  "a",
3536
3582
  {
3537
3583
  href: websiteUrl,
@@ -3539,12 +3585,12 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3539
3585
  rel: "noopener noreferrer",
3540
3586
  style: styles2.link
3541
3587
  },
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));
3588
+ /* @__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" }))
3589
+ )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3544
3590
  }
3545
3591
 
3546
3592
  // src/GovernmentBodySection.jsx
3547
- var import_react19 = __toESM(require("react"));
3593
+ var import_react18 = __toESM(require("react"));
3548
3594
  function GovernmentBodySection({
3549
3595
  title,
3550
3596
  websiteUrl,
@@ -3553,7 +3599,7 @@ function GovernmentBodySection({
3553
3599
  children
3554
3600
  }) {
3555
3601
  var _a;
3556
- const [expanded, setExpanded] = (0, import_react19.useState)(defaultExpanded);
3602
+ const [expanded, setExpanded] = (0, import_react18.useState)(defaultExpanded);
3557
3603
  const tierStyle = tier ? tierColors[tier] : null;
3558
3604
  const accentColor = (_a = tierStyle == null ? void 0 : tierStyle.accent) != null ? _a : colors.borderMedium;
3559
3605
  const styles2 = {
@@ -3593,7 +3639,7 @@ function GovernmentBodySection({
3593
3639
  display: expanded ? "block" : "none"
3594
3640
  }
3595
3641
  };
3596
- return /* @__PURE__ */ import_react19.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react19.default.createElement(
3642
+ return /* @__PURE__ */ import_react18.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react18.default.createElement(
3597
3643
  "div",
3598
3644
  {
3599
3645
  style: styles2.header,
@@ -3609,8 +3655,8 @@ function GovernmentBodySection({
3609
3655
  "aria-expanded": expanded,
3610
3656
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${title}`
3611
3657
  },
3612
- /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.title }, title),
3613
- websiteUrl && /* @__PURE__ */ import_react19.default.createElement(
3658
+ /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.title }, title),
3659
+ websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3614
3660
  "a",
3615
3661
  {
3616
3662
  href: websiteUrl,
@@ -3620,14 +3666,14 @@ function GovernmentBodySection({
3620
3666
  onClick: (e) => e.stopPropagation(),
3621
3667
  "aria-label": `Visit ${title} website`
3622
3668
  },
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" }))
3669
+ /* @__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
3670
  ),
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));
3671
+ /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3672
+ ), /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.content }, children));
3627
3673
  }
3628
3674
 
3629
3675
  // src/SocialLinks.jsx
3630
- var import_react20 = __toESM(require("react"));
3676
+ var import_react19 = __toESM(require("react"));
3631
3677
  var SOCIAL_PLATFORMS = [
3632
3678
  { test: /facebook\.com/i, platform: "facebook" },
3633
3679
  { test: /twitter\.com|x\.com/i, platform: "twitter" },
@@ -3698,7 +3744,7 @@ function SocialLinks({
3698
3744
  }
3699
3745
  };
3700
3746
  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(
3747
+ 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
3748
  "path",
3703
3749
  {
3704
3750
  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 +3754,7 @@ function SocialLinks({
3708
3754
  strokeLinejoin: "round"
3709
3755
  }
3710
3756
  )),
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(
3757
+ 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
3758
  "path",
3713
3759
  {
3714
3760
  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 +3764,8 @@ function SocialLinks({
3718
3764
  strokeLinejoin: "round"
3719
3765
  }
3720
3766
  )),
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(
3767
+ 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" })),
3768
+ 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
3769
  "path",
3724
3770
  {
3725
3771
  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 +3774,8 @@ function SocialLinks({
3728
3774
  strokeLinecap: "round",
3729
3775
  strokeLinejoin: "round"
3730
3776
  }
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" }))
3777
+ ), /* @__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" })),
3778
+ 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
3779
  };
3734
3780
  const links = [
3735
3781
  {
@@ -3755,7 +3801,7 @@ function SocialLinks({
3755
3801
  {
3756
3802
  href: website,
3757
3803
  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(
3804
+ 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
3805
  "path",
3760
3806
  {
3761
3807
  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 +3831,7 @@ function SocialLinks({
3785
3831
  if (links.length === 0) {
3786
3832
  return null;
3787
3833
  }
3788
- return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react20.default.createElement(
3834
+ return /* @__PURE__ */ import_react19.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react19.default.createElement(
3789
3835
  "a",
3790
3836
  {
3791
3837
  key: link.label,
@@ -3808,7 +3854,7 @@ function SocialLinks({
3808
3854
  }
3809
3855
 
3810
3856
  // src/IssueTags.jsx
3811
- var import_react21 = __toESM(require("react"));
3857
+ var import_react20 = __toESM(require("react"));
3812
3858
  function IssueTags({
3813
3859
  tags = [],
3814
3860
  selectedTags = [],
@@ -3851,9 +3897,9 @@ function IssueTags({
3851
3897
  onTagClick(tag.value);
3852
3898
  }
3853
3899
  };
3854
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3900
+ return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3855
3901
  const isSelected = selectedTags.includes(tag.value);
3856
- return /* @__PURE__ */ import_react21.default.createElement(
3902
+ return /* @__PURE__ */ import_react20.default.createElement(
3857
3903
  "span",
3858
3904
  {
3859
3905
  key: tag.value,
@@ -3882,7 +3928,7 @@ function IssueTags({
3882
3928
  }
3883
3929
 
3884
3930
  // src/CommitteeTable.jsx
3885
- var import_react22 = __toESM(require("react"));
3931
+ var import_react21 = __toESM(require("react"));
3886
3932
  var ROLE_ORDER = {
3887
3933
  "chair": 0,
3888
3934
  "co-chair": 1,
@@ -3909,7 +3955,7 @@ function CommitteeTable({
3909
3955
  maxVisible = 6,
3910
3956
  style = {}
3911
3957
  }) {
3912
- const [showAll, setShowAll] = (0, import_react22.useState)(false);
3958
+ const [showAll, setShowAll] = (0, import_react21.useState)(false);
3913
3959
  if (committees.length === 0) {
3914
3960
  return null;
3915
3961
  }
@@ -3971,7 +4017,7 @@ function CommitteeTable({
3971
4017
  cursor: "pointer"
3972
4018
  }
3973
4019
  };
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(
4020
+ 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
4021
  "a",
3976
4022
  {
3977
4023
  href: committee.url,
@@ -3986,7 +4032,7 @@ function CommitteeTable({
3986
4032
  }
3987
4033
  },
3988
4034
  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(
4035
+ ) : committee.name), /* @__PURE__ */ import_react21.default.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ import_react21.default.createElement(
3990
4036
  "button",
3991
4037
  {
3992
4038
  type: "button",
@@ -3994,7 +4040,7 @@ function CommitteeTable({
3994
4040
  onClick: () => setShowAll(!showAll)
3995
4041
  },
3996
4042
  showAll ? "Show less" : `Show all ${sorted.length} committees`,
3997
- /* @__PURE__ */ import_react22.default.createElement(
4043
+ /* @__PURE__ */ import_react21.default.createElement(
3998
4044
  "svg",
3999
4045
  {
4000
4046
  width: "14",
@@ -4007,16 +4053,16 @@ function CommitteeTable({
4007
4053
  strokeLinejoin: "round",
4008
4054
  style: { transform: showAll ? "rotate(180deg)" : "none", transition: "transform 0.2s" }
4009
4055
  },
4010
- /* @__PURE__ */ import_react22.default.createElement("polyline", { points: "6 9 12 15 18 9" })
4056
+ /* @__PURE__ */ import_react21.default.createElement("polyline", { points: "6 9 12 15 18 9" })
4011
4057
  )
4012
4058
  ));
4013
4059
  }
4014
4060
 
4015
4061
  // src/PoliticianProfile.jsx
4016
- var import_react25 = __toESM(require("react"));
4062
+ var import_react24 = __toESM(require("react"));
4017
4063
 
4018
4064
  // src/LegislativeInlineSummary.jsx
4019
- var import_react23 = __toESM(require("react"));
4065
+ var import_react22 = __toESM(require("react"));
4020
4066
  function normalizePosition(pos) {
4021
4067
  if (!pos) return "";
4022
4068
  return pos.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -4124,7 +4170,7 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4124
4170
  fontSize: fontSizes.sm,
4125
4171
  fontWeight: fontWeights.medium
4126
4172
  };
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(
4173
+ 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
4174
  "button",
4129
4175
  {
4130
4176
  onClick: () => {
@@ -4149,12 +4195,12 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4149
4195
  }
4150
4196
  },
4151
4197
  "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" }))
4198
+ /* @__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
4199
  )));
4154
4200
  }
4155
4201
 
4156
4202
  // src/JudicialScorecard.jsx
4157
- var import_react24 = __toESM(require("react"));
4203
+ var import_react23 = __toESM(require("react"));
4158
4204
 
4159
4205
  // src/judicialUtils.js
4160
4206
  function formatDate(dateStr) {
@@ -4272,7 +4318,7 @@ function JudicialScorecard({ judicialRecord, politicianId, onNavigateToRecord })
4272
4318
  onNavigateToRecord(`/politician/${politicianId}/judicial-record`);
4273
4319
  }
4274
4320
  };
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"));
4321
+ 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
4322
  }
4277
4323
 
4278
4324
  // src/PoliticianProfile.jsx
@@ -4423,13 +4469,13 @@ function formatAddress(addr) {
4423
4469
  if (cityStateZip) lines.push(cityStateZip);
4424
4470
  return lines;
4425
4471
  }
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" }));
4472
+ 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" }));
4473
+ 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" }));
4474
+ 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" }));
4475
+ 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" }));
4476
+ 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" }));
4477
+ 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" }));
4478
+ 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
4479
  function PoliticianProfile({
4434
4480
  politician = {},
4435
4481
  onBack,
@@ -4456,8 +4502,8 @@ function PoliticianProfile({
4456
4502
  return pol.photo_origin_url;
4457
4503
  })();
4458
4504
  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)(() => {
4505
+ const [imgError, setImgError] = (0, import_react24.useState)(false);
4506
+ (0, import_react24.useEffect)(() => {
4461
4507
  setImgError(false);
4462
4508
  }, [profileImageUrl]);
4463
4509
  const getSocialHandle = (type) => {
@@ -4757,7 +4803,7 @@ function PoliticianProfile({
4757
4803
  borderRadius: borderRadius.full
4758
4804
  }
4759
4805
  };
4760
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react25.default.createElement(
4806
+ return /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react24.default.createElement(
4761
4807
  "button",
4762
4808
  {
4763
4809
  type: "button",
@@ -4770,9 +4816,9 @@ function PoliticianProfile({
4770
4816
  e.currentTarget.style.textDecoration = "none";
4771
4817
  }
4772
4818
  },
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" })),
4819
+ /* @__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
4820
  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(
4821
+ ), /* @__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
4822
  "img",
4777
4823
  {
4778
4824
  src: profileImageUrl,
@@ -4780,7 +4826,7 @@ function PoliticianProfile({
4780
4826
  style: styles2.photo,
4781
4827
  onError: () => setImgError(true)
4782
4828
  }
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(
4829
+ ) : /* @__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
4830
  "a",
4785
4831
  {
4786
4832
  href: pol.web_form_url,
@@ -4794,9 +4840,9 @@ function PoliticianProfile({
4794
4840
  e.currentTarget.style.background = colors.evTeal;
4795
4841
  }
4796
4842
  },
4797
- /* @__PURE__ */ import_react25.default.createElement(ExternalLinkIcon, { size: 14 }),
4843
+ /* @__PURE__ */ import_react24.default.createElement(ExternalLinkIcon, { size: 14 }),
4798
4844
  "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(
4845
+ ))), 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
4846
  "a",
4801
4847
  {
4802
4848
  href: `tel:${phone}`,
@@ -4809,7 +4855,7 @@ function PoliticianProfile({
4809
4855
  }
4810
4856
  },
4811
4857
  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(
4858
+ )))))), 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
4859
  "a",
4814
4860
  {
4815
4861
  href: `mailto:${email}`,
@@ -4822,7 +4868,7 @@ function PoliticianProfile({
4822
4868
  }
4823
4869
  },
4824
4870
  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(
4871
+ )))))), 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
4872
  "a",
4827
4873
  {
4828
4874
  href: url,
@@ -4837,7 +4883,7 @@ function PoliticianProfile({
4837
4883
  }
4838
4884
  },
4839
4885
  extractDomain(url)
4840
- ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react25.default.createElement(
4886
+ ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react24.default.createElement(
4841
4887
  SocialLinks,
4842
4888
  {
4843
4889
  twitter,
@@ -4848,14 +4894,14 @@ function PoliticianProfile({
4848
4894
  size: "sm",
4849
4895
  style: { marginTop: allWebsites.length > 0 ? "8px" : 0 }
4850
4896
  }
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(
4897
+ )))), 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
4898
  JudicialScorecard,
4853
4899
  {
4854
4900
  judicialRecord,
4855
4901
  politicianId,
4856
4902
  onNavigateToRecord
4857
4903
  }
4858
- ) : /* @__PURE__ */ import_react25.default.createElement(
4904
+ ) : /* @__PURE__ */ import_react24.default.createElement(
4859
4905
  LegislativeInlineSummary,
4860
4906
  {
4861
4907
  summary: legislativeSummary,
@@ -4866,7 +4912,7 @@ function PoliticianProfile({
4866
4912
  }
4867
4913
 
4868
4914
  // src/LegislativeRecord.jsx
4869
- var import_react26 = __toESM(require("react"));
4915
+ var import_react25 = __toESM(require("react"));
4870
4916
  var DEFAULT_LIMIT = 25;
4871
4917
  function normalizeText(str) {
4872
4918
  if (!str) return "";
@@ -4946,7 +4992,7 @@ function getPositionBadge(position) {
4946
4992
  return { bg: colors.borderLight, text: colors.textSecondary };
4947
4993
  }
4948
4994
  function Badge({ label, bg, text }) {
4949
- return /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4995
+ return /* @__PURE__ */ import_react25.default.createElement("span", { style: {
4950
4996
  display: "inline-block",
4951
4997
  background: bg,
4952
4998
  color: text,
@@ -4959,18 +5005,18 @@ function Badge({ label, bg, text }) {
4959
5005
  } }, label);
4960
5006
  }
4961
5007
  function SectionHeader({ title, yearFilter, years, onYearChange }) {
4962
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5008
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
4963
5009
  display: "flex",
4964
5010
  alignItems: "center",
4965
5011
  justifyContent: "space-between",
4966
5012
  marginBottom: spacing[4]
4967
- } }, /* @__PURE__ */ import_react26.default.createElement("h2", { style: {
5013
+ } }, /* @__PURE__ */ import_react25.default.createElement("h2", { style: {
4968
5014
  fontFamily: fonts.primary,
4969
5015
  fontSize: fontSizes.xl,
4970
5016
  fontWeight: fontWeights.bold,
4971
5017
  color: colors.evTeal,
4972
5018
  margin: 0
4973
- } }, title), years && years.length > 0 && /* @__PURE__ */ import_react26.default.createElement(
5019
+ } }, title), years && years.length > 0 && /* @__PURE__ */ import_react25.default.createElement(
4974
5020
  "select",
4975
5021
  {
4976
5022
  value: yearFilter,
@@ -4986,13 +5032,13 @@ function SectionHeader({ title, yearFilter, years, onYearChange }) {
4986
5032
  cursor: "pointer"
4987
5033
  }
4988
5034
  },
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))
5035
+ /* @__PURE__ */ import_react25.default.createElement("option", { value: "All" }, "All years"),
5036
+ years.map((y) => /* @__PURE__ */ import_react25.default.createElement("option", { key: y, value: y }, y))
4991
5037
  ));
4992
5038
  }
4993
5039
  function ShowAllLink({ totalCount, visibleCount, onClick }) {
4994
5040
  if (totalCount <= visibleCount) return null;
4995
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react26.default.createElement(
5041
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react25.default.createElement(
4996
5042
  "button",
4997
5043
  {
4998
5044
  type: "button",
@@ -5020,7 +5066,7 @@ function ShowAllLink({ totalCount, visibleCount, onClick }) {
5020
5066
  ));
5021
5067
  }
5022
5068
  function EmptyState({ message }) {
5023
- return /* @__PURE__ */ import_react26.default.createElement("p", { style: {
5069
+ return /* @__PURE__ */ import_react25.default.createElement("p", { style: {
5024
5070
  fontFamily: fonts.primary,
5025
5071
  fontSize: fontSizes.sm,
5026
5072
  color: colors.textMuted,
@@ -5030,24 +5076,24 @@ function EmptyState({ message }) {
5030
5076
  } }, message);
5031
5077
  }
5032
5078
  function Spinner() {
5033
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5079
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5034
5080
  display: "flex",
5035
5081
  justifyContent: "center",
5036
5082
  alignItems: "center",
5037
5083
  padding: spacing[10]
5038
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5084
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5039
5085
  width: "40px",
5040
5086
  height: "40px",
5041
5087
  borderRadius: borderRadius.full,
5042
5088
  border: `3px solid ${colors.borderLight}`,
5043
5089
  borderTopColor: colors.evTeal,
5044
5090
  animation: "ev-spin 0.8s linear infinite"
5045
- } }), /* @__PURE__ */ import_react26.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5091
+ } }), /* @__PURE__ */ import_react25.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5046
5092
  }
5047
5093
  function CommitteesSection({ committees, leadership }) {
5048
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
5094
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5049
5095
  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: {
5096
+ 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
5097
  display: "inline-flex",
5052
5098
  alignItems: "center",
5053
5099
  gap: spacing[1],
@@ -5058,23 +5104,23 @@ function CommitteesSection({ committees, leadership }) {
5058
5104
  fontFamily: fonts.primary,
5059
5105
  fontSize: fontSizes.sm,
5060
5106
  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) => {
5107
+ } }, 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
5108
  const badge = getRoleBadge(c.role);
5063
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5109
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5064
5110
  display: "flex",
5065
5111
  alignItems: "center",
5066
5112
  justifyContent: "space-between",
5067
5113
  padding: `${spacing[3]} 0`,
5068
5114
  borderBottom: `1px solid ${colors.borderLight}`,
5069
5115
  gap: spacing[3]
5070
- } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5116
+ } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5071
5117
  fontFamily: fonts.primary,
5072
5118
  fontSize: fontSizes.sm,
5073
5119
  color: colors.textSecondary,
5074
5120
  flex: 1,
5075
5121
  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(
5122
+ } }, 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 }));
5123
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5078
5124
  ShowAllLink,
5079
5125
  {
5080
5126
  totalCount: committees.length,
@@ -5085,15 +5131,15 @@ function CommitteesSection({ committees, leadership }) {
5085
5131
  }
5086
5132
  function LegislationSection({ bills, isMobile }) {
5087
5133
  const years = getYears(bills, "introduced_at");
5088
- const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5089
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
5134
+ const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
5135
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5090
5136
  const handleYearChange = (y) => {
5091
5137
  setYearFilter(y);
5092
5138
  setShowAll(false);
5093
5139
  };
5094
5140
  const filtered = yearFilter === "All" ? bills : bills.filter((b) => extractYear(b.introduced_at) === yearFilter);
5095
5141
  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(
5142
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5097
5143
  SectionHeader,
5098
5144
  {
5099
5145
  title: "Sponsored Legislation",
@@ -5101,42 +5147,42 @@ function LegislationSection({ bills, isMobile }) {
5101
5147
  years,
5102
5148
  onYearChange: handleYearChange
5103
5149
  }
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) => {
5150
+ ), 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
5151
  const statusBadge = getStatusBadge(bill.status_label);
5106
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5152
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5107
5153
  display: "flex",
5108
5154
  flexDirection: isMobile ? "column" : "row",
5109
5155
  alignItems: isMobile ? "flex-start" : "center",
5110
5156
  gap: isMobile ? spacing[1] : spacing[3],
5111
5157
  padding: `${spacing[3]} 0`,
5112
5158
  borderBottom: `1px solid ${colors.borderLight}`
5113
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5159
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5114
5160
  fontFamily: fonts.primary,
5115
5161
  fontSize: fontSizes.xs,
5116
5162
  fontWeight: fontWeights.bold,
5117
5163
  color: colors.textSecondary,
5118
5164
  marginRight: spacing[2]
5119
- } }, bill.number), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5165
+ } }, bill.number), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5120
5166
  fontFamily: fonts.primary,
5121
5167
  fontSize: fontSizes.sm,
5122
5168
  color: colors.textSecondary
5123
- } }, bill.title)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5169
+ } }, bill.title)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5124
5170
  display: "flex",
5125
5171
  alignItems: "center",
5126
5172
  gap: spacing[2],
5127
5173
  flexShrink: 0,
5128
5174
  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: {
5175
+ } }, /* @__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
5176
  fontFamily: fonts.primary,
5131
5177
  fontSize: fontSizes.xs,
5132
5178
  color: colors.textMuted
5133
- } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5179
+ } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5134
5180
  fontFamily: fonts.primary,
5135
5181
  fontSize: fontSizes.xs,
5136
5182
  color: colors.textMuted,
5137
5183
  fontStyle: "italic"
5138
5184
  } }, bill.is_sponsor ? "Sponsored" : "Cosponsored")));
5139
- })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5185
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5140
5186
  ShowAllLink,
5141
5187
  {
5142
5188
  totalCount: filtered.length,
@@ -5147,15 +5193,15 @@ function LegislationSection({ bills, isMobile }) {
5147
5193
  }
5148
5194
  function VotingSection({ votes, isMobile }) {
5149
5195
  const years = getYears(votes, "vote_date");
5150
- const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5151
- const [showAll, setShowAll] = (0, import_react26.useState)(false);
5196
+ const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
5197
+ const [showAll, setShowAll] = (0, import_react25.useState)(false);
5152
5198
  const handleYearChange = (y) => {
5153
5199
  setYearFilter(y);
5154
5200
  setShowAll(false);
5155
5201
  };
5156
5202
  const filtered = yearFilter === "All" ? votes : votes.filter((v) => extractYear(v.vote_date) === yearFilter);
5157
5203
  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(
5204
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5159
5205
  SectionHeader,
5160
5206
  {
5161
5207
  title: "Voting Record",
@@ -5163,38 +5209,38 @@ function VotingSection({ votes, isMobile }) {
5163
5209
  years,
5164
5210
  onYearChange: handleYearChange
5165
5211
  }
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) => {
5212
+ ), 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
5213
  const positionBadge = getPositionBadge(vote.position);
5168
5214
  const normPosition = normalizeText(vote.position);
5169
5215
  const topic = vote.bill_title || vote.vote_question;
5170
5216
  const sourceUrl = vote.bill_url;
5171
- return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5217
+ return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5172
5218
  display: "flex",
5173
5219
  flexDirection: isMobile ? "column" : "row",
5174
5220
  alignItems: isMobile ? "flex-start" : "center",
5175
5221
  gap: isMobile ? spacing[1] : spacing[3],
5176
5222
  padding: `${spacing[3]} 0`,
5177
5223
  borderBottom: `1px solid ${colors.borderLight}`
5178
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5224
+ } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5179
5225
  fontFamily: fonts.primary,
5180
5226
  fontSize: fontSizes.sm,
5181
5227
  color: colors.textSecondary
5182
- } }, topic)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5228
+ } }, topic)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5183
5229
  display: "flex",
5184
5230
  alignItems: "center",
5185
5231
  gap: spacing[2],
5186
5232
  flexShrink: 0,
5187
5233
  flexWrap: "wrap"
5188
- } }, vote.vote_date && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5234
+ } }, vote.vote_date && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5189
5235
  fontFamily: fonts.primary,
5190
5236
  fontSize: fontSizes.xs,
5191
5237
  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: {
5238
+ } }, 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
5239
  fontFamily: fonts.primary,
5194
5240
  fontSize: fontSizes.xs,
5195
5241
  color: vote.result === "Passed" ? colors.success : colors.textMuted,
5196
5242
  fontWeight: fontWeights.medium
5197
- } }, vote.result), sourceUrl && /* @__PURE__ */ import_react26.default.createElement(
5243
+ } }, vote.result), sourceUrl && /* @__PURE__ */ import_react25.default.createElement(
5198
5244
  "a",
5199
5245
  {
5200
5246
  href: sourceUrl,
@@ -5215,7 +5261,7 @@ function VotingSection({ votes, isMobile }) {
5215
5261
  },
5216
5262
  "Source"
5217
5263
  )));
5218
- })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5264
+ })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5219
5265
  ShowAllLink,
5220
5266
  {
5221
5267
  totalCount: filtered.length,
@@ -5234,20 +5280,20 @@ function LegislativeRecord({
5234
5280
  }) {
5235
5281
  const isMobile = useMediaQuery("(max-width: 768px)");
5236
5282
  if (loading) {
5237
- return /* @__PURE__ */ import_react26.default.createElement(Spinner, null);
5283
+ return /* @__PURE__ */ import_react25.default.createElement(Spinner, null);
5238
5284
  }
5239
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react26.default.createElement("h1", { style: {
5285
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react25.default.createElement("h1", { style: {
5240
5286
  fontFamily: fonts.primary,
5241
5287
  fontSize: isMobile ? fontSizes["2xl"] : fontSizes["4xl"],
5242
5288
  fontWeight: fontWeights.bold,
5243
5289
  color: colors.evTeal,
5244
5290
  marginBottom: spacing[8],
5245
5291
  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 }));
5292
+ } }, "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
5293
  }
5248
5294
 
5249
5295
  // src/JudicialRecordDetail.jsx
5250
- var import_react27 = __toESM(require("react"));
5296
+ var import_react26 = __toESM(require("react"));
5251
5297
  var containerStyle = {
5252
5298
  fontFamily: "'Manrope', sans-serif",
5253
5299
  maxWidth: "800px"
@@ -5332,7 +5378,7 @@ var emptyStateStyle = {
5332
5378
  function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5333
5379
  var _a;
5334
5380
  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."));
5381
+ 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
5382
  }
5337
5383
  const {
5338
5384
  judge_detail: detail,
@@ -5341,13 +5387,13 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5341
5387
  disciplinary_records: disciplinary = []
5342
5388
  } = judicialRecord;
5343
5389
  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: {
5390
+ 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
5391
  borderLeft: "3px solid #fc8181",
5346
5392
  backgroundColor: "#fff5f5",
5347
5393
  borderRadius: "0 6px 6px 0",
5348
5394
  padding: "12px 16px",
5349
5395
  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(
5396
+ } }, /* @__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
5397
  "a",
5352
5398
  {
5353
5399
  href: d.source_url,
@@ -5360,7 +5406,7 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5360
5406
  }
5361
5407
 
5362
5408
  // src/AuthForm.jsx
5363
- var import_react28 = __toESM(require("react"));
5409
+ var import_react27 = __toESM(require("react"));
5364
5410
  function AuthForm({
5365
5411
  logoSrc = "/EVLogo.svg",
5366
5412
  appName = "Empowered Vote",
@@ -5371,11 +5417,11 @@ function AuthForm({
5371
5417
  error = null,
5372
5418
  submitting = false
5373
5419
  }) {
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);
5420
+ const [username, setUsername] = (0, import_react27.useState)("");
5421
+ const [password, setPassword] = (0, import_react27.useState)("");
5422
+ const [confirmPassword, setConfirmPassword] = (0, import_react27.useState)("");
5423
+ const [showPasswords, setShowPasswords] = (0, import_react27.useState)(false);
5424
+ const [passwordMismatch, setPasswordMismatch] = (0, import_react27.useState)(false);
5379
5425
  const isLogin = mode === "login";
5380
5426
  const handleSubmit = (e) => {
5381
5427
  e.preventDefault();
@@ -5387,7 +5433,7 @@ function AuthForm({
5387
5433
  setPasswordMismatch(false);
5388
5434
  onSubmit == null ? void 0 : onSubmit(username.trim(), password);
5389
5435
  };
5390
- const EyeOpen = () => /* @__PURE__ */ import_react28.default.createElement(
5436
+ const EyeOpen = () => /* @__PURE__ */ import_react27.default.createElement(
5391
5437
  "svg",
5392
5438
  {
5393
5439
  xmlns: "http://www.w3.org/2000/svg",
@@ -5397,7 +5443,7 @@ function AuthForm({
5397
5443
  stroke: "currentColor",
5398
5444
  style: { width: "20px", height: "20px" }
5399
5445
  },
5400
- /* @__PURE__ */ import_react28.default.createElement(
5446
+ /* @__PURE__ */ import_react27.default.createElement(
5401
5447
  "path",
5402
5448
  {
5403
5449
  strokeLinecap: "round",
@@ -5405,7 +5451,7 @@ function AuthForm({
5405
5451
  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
5452
  }
5407
5453
  ),
5408
- /* @__PURE__ */ import_react28.default.createElement(
5454
+ /* @__PURE__ */ import_react27.default.createElement(
5409
5455
  "path",
5410
5456
  {
5411
5457
  strokeLinecap: "round",
@@ -5414,7 +5460,7 @@ function AuthForm({
5414
5460
  }
5415
5461
  )
5416
5462
  );
5417
- const EyeClosed = () => /* @__PURE__ */ import_react28.default.createElement(
5463
+ const EyeClosed = () => /* @__PURE__ */ import_react27.default.createElement(
5418
5464
  "svg",
5419
5465
  {
5420
5466
  xmlns: "http://www.w3.org/2000/svg",
@@ -5424,7 +5470,7 @@ function AuthForm({
5424
5470
  stroke: "currentColor",
5425
5471
  style: { width: "20px", height: "20px" }
5426
5472
  },
5427
- /* @__PURE__ */ import_react28.default.createElement(
5473
+ /* @__PURE__ */ import_react27.default.createElement(
5428
5474
  "path",
5429
5475
  {
5430
5476
  strokeLinecap: "round",
@@ -5433,17 +5479,17 @@ function AuthForm({
5433
5479
  }
5434
5480
  )
5435
5481
  );
5436
- const PasswordToggle = () => /* @__PURE__ */ import_react28.default.createElement(
5482
+ const PasswordToggle = () => /* @__PURE__ */ import_react27.default.createElement(
5437
5483
  "button",
5438
5484
  {
5439
5485
  type: "button",
5440
5486
  onClick: () => setShowPasswords((prev) => !prev),
5441
5487
  style: styles.passwordToggle
5442
5488
  },
5443
- showPasswords ? /* @__PURE__ */ import_react28.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react28.default.createElement(EyeClosed, null)
5489
+ showPasswords ? /* @__PURE__ */ import_react27.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react27.default.createElement(EyeClosed, null)
5444
5490
  );
5445
5491
  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(
5492
+ 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
5493
  "input",
5448
5494
  {
5449
5495
  type: "text",
@@ -5460,7 +5506,7 @@ function AuthForm({
5460
5506
  },
5461
5507
  required: true
5462
5508
  }
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(
5509
+ )), /* @__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
5510
  "input",
5465
5511
  {
5466
5512
  type: showPasswords ? "text" : "password",
@@ -5476,7 +5522,7 @@ function AuthForm({
5476
5522
  },
5477
5523
  required: true
5478
5524
  }
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(
5525
+ ), /* @__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
5526
  "input",
5481
5527
  {
5482
5528
  type: showPasswords ? "text" : "password",
@@ -5492,7 +5538,7 @@ function AuthForm({
5492
5538
  },
5493
5539
  required: true
5494
5540
  }
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(
5541
+ ), /* @__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
5542
  "button",
5497
5543
  {
5498
5544
  type: "submit",
@@ -5510,7 +5556,7 @@ function AuthForm({
5510
5556
  }
5511
5557
  },
5512
5558
  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(
5559
+ ), 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
5560
  "button",
5515
5561
  {
5516
5562
  type: "button",
@@ -5683,9 +5729,9 @@ var styles = {
5683
5729
  };
5684
5730
 
5685
5731
  // src/TopicTierBadge.jsx
5686
- var import_react29 = __toESM(require("react"));
5732
+ var import_react28 = __toESM(require("react"));
5687
5733
  function LandmarkIcon({ size = 14 }) {
5688
- return /* @__PURE__ */ import_react29.default.createElement(
5734
+ return /* @__PURE__ */ import_react28.default.createElement(
5689
5735
  "svg",
5690
5736
  {
5691
5737
  width: size,
@@ -5699,16 +5745,16 @@ function LandmarkIcon({ size = 14 }) {
5699
5745
  xmlns: "http://www.w3.org/2000/svg",
5700
5746
  "aria-hidden": "true"
5701
5747
  },
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" })
5748
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18v-7" }),
5749
+ /* @__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" }),
5750
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M14 18v-7" }),
5751
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 18v-7" }),
5752
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M3 22h18" }),
5753
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 18v-7" })
5708
5754
  );
5709
5755
  }
5710
5756
  function Building2Icon({ size = 14 }) {
5711
- return /* @__PURE__ */ import_react29.default.createElement(
5757
+ return /* @__PURE__ */ import_react28.default.createElement(
5712
5758
  "svg",
5713
5759
  {
5714
5760
  width: size,
@@ -5722,17 +5768,17 @@ function Building2Icon({ size = 14 }) {
5722
5768
  xmlns: "http://www.w3.org/2000/svg",
5723
5769
  "aria-hidden": "true"
5724
5770
  },
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" })
5771
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5772
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5773
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5774
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 6h4" }),
5775
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 10h4" }),
5776
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 14h4" }),
5777
+ /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18h4" })
5732
5778
  );
5733
5779
  }
5734
5780
  function HomeIcon({ size = 14 }) {
5735
- return /* @__PURE__ */ import_react29.default.createElement(
5781
+ return /* @__PURE__ */ import_react28.default.createElement(
5736
5782
  "svg",
5737
5783
  {
5738
5784
  width: size,
@@ -5746,8 +5792,8 @@ function HomeIcon({ size = 14 }) {
5746
5792
  xmlns: "http://www.w3.org/2000/svg",
5747
5793
  "aria-hidden": "true"
5748
5794
  },
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" })
5795
+ /* @__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" }),
5796
+ /* @__PURE__ */ import_react28.default.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5751
5797
  );
5752
5798
  }
5753
5799
  var TIER_INFO = {
@@ -5807,7 +5853,7 @@ function TopicTierBadge({
5807
5853
  userSelect: "none"
5808
5854
  };
5809
5855
  };
5810
- return /* @__PURE__ */ import_react29.default.createElement(
5856
+ return /* @__PURE__ */ import_react28.default.createElement(
5811
5857
  "span",
5812
5858
  {
5813
5859
  className: "ev-topic-tier-badge",
@@ -5817,13 +5863,13 @@ function TopicTierBadge({
5817
5863
  },
5818
5864
  effectiveTiers.map((tier) => {
5819
5865
  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));
5866
+ 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
5867
  })
5822
5868
  );
5823
5869
  }
5824
5870
 
5825
5871
  // src/CompassCoverageCallout.jsx
5826
- var import_react30 = __toESM(require("react"));
5872
+ var import_react29 = __toESM(require("react"));
5827
5873
  var TIER_LABELS = {
5828
5874
  federal: "federal",
5829
5875
  state: "state",
@@ -5836,7 +5882,7 @@ function CompassCoverageCallout({
5836
5882
  compassUrl,
5837
5883
  onDismiss
5838
5884
  }) {
5839
- const [dismissed, setDismissed] = (0, import_react30.useState)(false);
5885
+ const [dismissed, setDismissed] = (0, import_react29.useState)(false);
5840
5886
  if (dismissed) return null;
5841
5887
  const tierLabel = TIER_LABELS[tier] || tier;
5842
5888
  const tierStyle = tierColors[tier] || tierColors.federal;
@@ -5887,15 +5933,15 @@ function CompassCoverageCallout({
5887
5933
  setDismissed(true);
5888
5934
  if (onDismiss) onDismiss();
5889
5935
  };
5890
- return /* @__PURE__ */ import_react30.default.createElement(
5936
+ return /* @__PURE__ */ import_react29.default.createElement(
5891
5937
  "div",
5892
5938
  {
5893
5939
  className: "ev-compass-coverage-callout",
5894
5940
  role: "status",
5895
5941
  style: containerStyle2
5896
5942
  },
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(
5943
+ /* @__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")),
5944
+ onDismiss !== void 0 && /* @__PURE__ */ import_react29.default.createElement(
5899
5945
  "button",
5900
5946
  {
5901
5947
  onClick: handleDismiss,
@@ -5908,7 +5954,7 @@ function CompassCoverageCallout({
5908
5954
  }
5909
5955
 
5910
5956
  // src/ExpandCompassNudge.jsx
5911
- var import_react31 = __toESM(require("react"));
5957
+ var import_react30 = __toESM(require("react"));
5912
5958
  function ExpandCompassNudge({
5913
5959
  politicianName,
5914
5960
  missingCount,
@@ -5955,7 +6001,7 @@ function ExpandCompassNudge({
5955
6001
  };
5956
6002
  const topicsLabel = missingCount === 1 ? "topic" : "topics";
5957
6003
  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"));
6004
+ 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
6005
  }
5960
6006
 
5961
6007
  // src/computeTierCoverage.js
@@ -5976,7 +6022,7 @@ function computeTierCoverage(topics) {
5976
6022
  }
5977
6023
 
5978
6024
  // src/useEvContextPromotion.js
5979
- var import_react32 = require("react");
6025
+ var import_react31 = require("react");
5980
6026
  function useEvContextPromotion({
5981
6027
  domain,
5982
6028
  isLoggedIn,
@@ -5985,23 +6031,23 @@ function useEvContextPromotion({
5985
6031
  apiWriter,
5986
6032
  enabled = true
5987
6033
  }) {
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);
6034
+ const [shouldPrompt, setShouldPrompt] = (0, import_react31.useState)(false);
6035
+ const [payload, setPayload] = (0, import_react31.useState)(null);
6036
+ const [status, setStatus] = (0, import_react31.useState)("idle");
6037
+ const [error, setError] = (0, import_react31.useState)(null);
6038
+ const apiDataRef = (0, import_react31.useRef)(apiData);
5993
6039
  apiDataRef.current = apiData;
5994
- const userIdRef = (0, import_react32.useRef)(userId);
6040
+ const userIdRef = (0, import_react31.useRef)(userId);
5995
6041
  userIdRef.current = userId;
5996
- const isLoggedInRef = (0, import_react32.useRef)(isLoggedIn);
6042
+ const isLoggedInRef = (0, import_react31.useRef)(isLoggedIn);
5997
6043
  isLoggedInRef.current = isLoggedIn;
5998
- const enabledRef = (0, import_react32.useRef)(enabled);
6044
+ const enabledRef = (0, import_react31.useRef)(enabled);
5999
6045
  enabledRef.current = enabled;
6000
- const domainRef = (0, import_react32.useRef)(domain);
6046
+ const domainRef = (0, import_react31.useRef)(domain);
6001
6047
  domainRef.current = domain;
6002
- const apiWriterRef = (0, import_react32.useRef)(apiWriter);
6048
+ const apiWriterRef = (0, import_react31.useRef)(apiWriter);
6003
6049
  apiWriterRef.current = apiWriter;
6004
- const detect = (0, import_react32.useCallback)(async () => {
6050
+ const detect = (0, import_react31.useCallback)(async () => {
6005
6051
  const _enabled = enabledRef.current;
6006
6052
  const _isLoggedIn = isLoggedInRef.current;
6007
6053
  const _userId = userIdRef.current;
@@ -6040,16 +6086,16 @@ function useEvContextPromotion({
6040
6086
  setPayload(null);
6041
6087
  }
6042
6088
  }, []);
6043
- (0, import_react32.useEffect)(() => {
6089
+ (0, import_react31.useEffect)(() => {
6044
6090
  detect();
6045
6091
  }, [detect, isLoggedIn, userId, apiData, enabled, domain]);
6046
- (0, import_react32.useEffect)(() => {
6092
+ (0, import_react31.useEffect)(() => {
6047
6093
  const unsub = evContext.subscribe(() => {
6048
6094
  detect();
6049
6095
  });
6050
6096
  return unsub;
6051
6097
  }, [detect]);
6052
- const promote = (0, import_react32.useCallback)(async () => {
6098
+ const promote = (0, import_react31.useCallback)(async () => {
6053
6099
  const _userId = userIdRef.current;
6054
6100
  const _domain = domainRef.current;
6055
6101
  const _writer = apiWriterRef.current;
@@ -6076,7 +6122,7 @@ function useEvContextPromotion({
6076
6122
  setError(err instanceof Error ? err : new Error(String(err)));
6077
6123
  }
6078
6124
  }, [payload]);
6079
- const dismiss = (0, import_react32.useCallback)(async () => {
6125
+ const dismiss = (0, import_react31.useCallback)(async () => {
6080
6126
  const _userId = userIdRef.current;
6081
6127
  const _domain = domainRef.current;
6082
6128
  if (!_userId) return;
@@ -6135,14 +6181,14 @@ function isGuestPopulated(domain, fullEvContext) {
6135
6181
  }
6136
6182
 
6137
6183
  // src/StanceAccordion.jsx
6138
- var import_react34 = __toESM(require("react"));
6184
+ var import_react33 = __toESM(require("react"));
6139
6185
 
6140
6186
  // src/Favicon.jsx
6141
- var import_react33 = __toESM(require("react"));
6187
+ var import_react32 = __toESM(require("react"));
6142
6188
  function Favicon({ url, size = 16 }) {
6143
6189
  try {
6144
6190
  const domain = new URL(url).hostname;
6145
- return /* @__PURE__ */ import_react33.default.createElement(
6191
+ return /* @__PURE__ */ import_react32.default.createElement(
6146
6192
  "img",
6147
6193
  {
6148
6194
  src: `https://www.google.com/s2/favicons?sz=${size}&domain=${domain}`,
@@ -6153,7 +6199,7 @@ function Favicon({ url, size = 16 }) {
6153
6199
  }
6154
6200
  );
6155
6201
  } catch {
6156
- return /* @__PURE__ */ import_react33.default.createElement(
6202
+ return /* @__PURE__ */ import_react32.default.createElement(
6157
6203
  "svg",
6158
6204
  {
6159
6205
  width: size,
@@ -6164,8 +6210,8 @@ function Favicon({ url, size = 16 }) {
6164
6210
  strokeWidth: "1.5",
6165
6211
  style: { verticalAlign: "middle", flexShrink: 0 }
6166
6212
  },
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" })
6213
+ /* @__PURE__ */ import_react32.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6214
+ /* @__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
6215
  );
6170
6216
  }
6171
6217
  }
@@ -6196,11 +6242,11 @@ function StanceAccordion({
6196
6242
  apiUrl = "https://api.empowered.vote"
6197
6243
  }) {
6198
6244
  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);
6245
+ const [expandedTopicId, setExpandedTopicId] = (0, import_react33.useState)(null);
6246
+ const [loadingId, setLoadingId] = (0, import_react33.useState)(null);
6247
+ const [showAll, setShowAll] = (0, import_react33.useState)(false);
6248
+ const contextCache = (0, import_react33.useRef)(/* @__PURE__ */ new Map());
6249
+ const quotesCache = (0, import_react33.useRef)(null);
6204
6250
  const polAnswerMap = {};
6205
6251
  if (polAnswers) {
6206
6252
  polAnswers.forEach((a) => {
@@ -6259,7 +6305,7 @@ function StanceAccordion({
6259
6305
  quotesCache.current = [];
6260
6306
  }
6261
6307
  }
6262
- const handleToggle = (0, import_react34.useCallback)(
6308
+ const handleToggle = (0, import_react33.useCallback)(
6263
6309
  async (topicId) => {
6264
6310
  if (expandedTopicId === topicId) {
6265
6311
  setExpandedTopicId(null);
@@ -6276,7 +6322,7 @@ function StanceAccordion({
6276
6322
  },
6277
6323
  [expandedTopicId, politicianId, apiUrl]
6278
6324
  );
6279
- (0, import_react34.useEffect)(() => {
6325
+ (0, import_react33.useEffect)(() => {
6280
6326
  if (initialExpandedTopicId && topics && topics.length > 0) {
6281
6327
  handleToggle(String(initialExpandedTopicId));
6282
6328
  }
@@ -6292,13 +6338,13 @@ function StanceAccordion({
6292
6338
  visibleTopics = [pinned, ...baseTopics.filter((t) => String(t.id) !== String(initialExpandedTopicId))];
6293
6339
  }
6294
6340
  }
6295
- return /* @__PURE__ */ import_react34.default.createElement(
6341
+ return /* @__PURE__ */ import_react33.default.createElement(
6296
6342
  "div",
6297
6343
  {
6298
6344
  className: "flex flex-col",
6299
6345
  style: { fontFamily: "'Manrope', sans-serif" }
6300
6346
  },
6301
- /* @__PURE__ */ import_react34.default.createElement(
6347
+ /* @__PURE__ */ import_react33.default.createElement(
6302
6348
  "h3",
6303
6349
  {
6304
6350
  className: "text-sm font-semibold text-neutral-400 uppercase tracking-wider mb-2",
@@ -6321,15 +6367,15 @@ function StanceAccordion({
6321
6367
  if (topic.topic_key) return q.issue === topic.topic_key;
6322
6368
  return topic.short_title && q.issue.toLowerCase() === topic.short_title.toLowerCase();
6323
6369
  }) : [];
6324
- return /* @__PURE__ */ import_react34.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react34.default.createElement(
6370
+ return /* @__PURE__ */ import_react33.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react33.default.createElement(
6325
6371
  "button",
6326
6372
  {
6327
6373
  type: "button",
6328
6374
  onClick: () => handleToggle(topicId),
6329
6375
  className: "w-full flex items-center justify-between py-3 px-2 text-left cursor-pointer hover:bg-neutral-50 transition-colors"
6330
6376
  },
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(
6377
+ /* @__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)),
6378
+ /* @__PURE__ */ import_react33.default.createElement(
6333
6379
  "svg",
6334
6380
  {
6335
6381
  width: "16",
@@ -6346,9 +6392,9 @@ function StanceAccordion({
6346
6392
  transition: "transform 0.2s ease"
6347
6393
  }
6348
6394
  },
6349
- /* @__PURE__ */ import_react34.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6395
+ /* @__PURE__ */ import_react33.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6350
6396
  )
6351
- ), /* @__PURE__ */ import_react34.default.createElement(
6397
+ ), /* @__PURE__ */ import_react33.default.createElement(
6352
6398
  "div",
6353
6399
  {
6354
6400
  style: {
@@ -6357,7 +6403,7 @@ function StanceAccordion({
6357
6403
  transition: "grid-template-rows 0.25s ease"
6358
6404
  }
6359
6405
  },
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(
6406
+ /* @__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
6407
  "div",
6362
6408
  {
6363
6409
  style: {
@@ -6369,14 +6415,14 @@ function StanceAccordion({
6369
6415
  animation: "ev-spin 0.8s linear infinite"
6370
6416
  }
6371
6417
  }
6372
- )), !isLoading && cached && /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react34.default.createElement(
6418
+ )), !isLoading && cached && /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react33.default.createElement(
6373
6419
  "p",
6374
6420
  {
6375
6421
  className: "text-sm text-neutral-700 mb-3",
6376
6422
  style: { whiteSpace: "pre-wrap", lineHeight: 1.6 }
6377
6423
  },
6378
6424
  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(
6425
+ ) : 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
6426
  "a",
6381
6427
  {
6382
6428
  href: src,
@@ -6384,9 +6430,9 @@ function StanceAccordion({
6384
6430
  rel: "noreferrer",
6385
6431
  className: "inline-flex items-center gap-1.5 hover:text-[#00657c] transition-colors"
6386
6432
  },
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(
6433
+ /* @__PURE__ */ import_react33.default.createElement(Favicon, { url: src }),
6434
+ /* @__PURE__ */ import_react33.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6435
+ ))))), topicQuotes.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { style: { marginTop: "12px" } }, /* @__PURE__ */ import_react33.default.createElement(
6390
6436
  "p",
6391
6437
  {
6392
6438
  style: {
@@ -6403,7 +6449,7 @@ function StanceAccordion({
6403
6449
  const verdict = verdictsByQuote ? verdictsByQuote[quote.id] : void 0;
6404
6450
  const borderColor = verdict === "agreed" ? "#0e7490" : verdict === "disagreed" ? "#b45309" : "#e2e8f0";
6405
6451
  const sourceName = quote.source_name || quote.sourceName;
6406
- return /* @__PURE__ */ import_react34.default.createElement(
6452
+ return /* @__PURE__ */ import_react33.default.createElement(
6407
6453
  "div",
6408
6454
  {
6409
6455
  key: quote.id,
@@ -6415,7 +6461,7 @@ function StanceAccordion({
6415
6461
  marginBottom: "8px"
6416
6462
  }
6417
6463
  },
6418
- /* @__PURE__ */ import_react34.default.createElement(
6464
+ /* @__PURE__ */ import_react33.default.createElement(
6419
6465
  "p",
6420
6466
  {
6421
6467
  style: {
@@ -6428,7 +6474,7 @@ function StanceAccordion({
6428
6474
  },
6429
6475
  quote.text
6430
6476
  ),
6431
- verdict === "agreed" && /* @__PURE__ */ import_react34.default.createElement(
6477
+ verdict === "agreed" && /* @__PURE__ */ import_react33.default.createElement(
6432
6478
  "span",
6433
6479
  {
6434
6480
  style: {
@@ -6445,10 +6491,10 @@ function StanceAccordion({
6445
6491
  flexShrink: 0
6446
6492
  }
6447
6493
  },
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" })),
6494
+ /* @__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
6495
  "Agreed"
6450
6496
  ),
6451
- verdict === "disagreed" && /* @__PURE__ */ import_react34.default.createElement(
6497
+ verdict === "disagreed" && /* @__PURE__ */ import_react33.default.createElement(
6452
6498
  "span",
6453
6499
  {
6454
6500
  style: {
@@ -6465,10 +6511,10 @@ function StanceAccordion({
6465
6511
  flexShrink: 0
6466
6512
  }
6467
6513
  },
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" })),
6514
+ /* @__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
6515
  "Disagreed"
6470
6516
  ),
6471
- sourceName && /* @__PURE__ */ import_react34.default.createElement(
6517
+ sourceName && /* @__PURE__ */ import_react33.default.createElement(
6472
6518
  "a",
6473
6519
  {
6474
6520
  href: quote.source_url || quote.sourceUrl,
@@ -6485,10 +6531,10 @@ function StanceAccordion({
6485
6531
  sourceName
6486
6532
  )
6487
6533
  );
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."))))
6534
+ })), !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
6535
  ));
6490
6536
  }),
6491
- hasToggle && /* @__PURE__ */ import_react34.default.createElement(
6537
+ hasToggle && /* @__PURE__ */ import_react33.default.createElement(
6492
6538
  "button",
6493
6539
  {
6494
6540
  type: "button",