paneltir 0.11.0 → 0.12.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
@@ -1,8 +1,8 @@
1
1
  // src/version.ts
2
- var PANELTIR_VERSION = "0.11.0";
3
- var PANELTIR_FINGERPRINT = "sha256:2739462e763939de1d1aeb8ab97779149c2ddb0ec2d2fb45644c4c45ef9dc9fa";
4
- var PANELTIR_FILE_COUNT = 163;
5
- var PANELTIR_TEMPLATE_HASH = "sha256:034ba27266408af4f2ba5793d9cefbe448b168570d6a0b87dfe698dfe639feb1";
2
+ var PANELTIR_VERSION = "0.12.0";
3
+ var PANELTIR_FINGERPRINT = "sha256:ea981bdb1de721f4d2afd279244a7298b025773fb4a5abf8ffa33868c0d73f7d";
4
+ var PANELTIR_FILE_COUNT = 166;
5
+ var PANELTIR_TEMPLATE_HASH = "sha256:c0c1a1678d860212ff82d55c7e7c0ee3eaf8be623621cadbb6ca5bf51b31e2ba";
6
6
  var paneltirBuild = {
7
7
  version: PANELTIR_VERSION,
8
8
  fingerprint: PANELTIR_FINGERPRINT,
@@ -182,10 +182,25 @@ var paperForm = {
182
182
  labelTracking: "1.2px",
183
183
  density: 1.1
184
184
  };
185
+ var warRoomForm = {
186
+ shape: "warRoom",
187
+ radiusPanel: "2px",
188
+ radiusCard: "0px",
189
+ radiusControl: "2px",
190
+ radiusSquare: "0px",
191
+ radiusPill: "2px",
192
+ borderWidth: "1px",
193
+ fontSize: "13.5px",
194
+ labelTracking: "1.6px",
195
+ // The only form that tightens rather than loosens. A war room is judged on
196
+ // how much of the board is on the screen at once.
197
+ density: 0.82
198
+ };
185
199
  var THEME_FORMS = {
186
200
  panel: panelForm,
187
201
  ledger: ledgerForm,
188
- paper: paperForm
202
+ paper: paperForm,
203
+ warRoom: warRoomForm
189
204
  };
190
205
  var THEME_PRESETS = {
191
206
  midnight: midnightTheme,
@@ -244,30 +259,61 @@ function HealthPillRow({ children }) {
244
259
  return /* @__PURE__ */ jsx5("div", { className: "pt-health-row", children });
245
260
  }
246
261
 
262
+ // src/components/Situation/SituationRow.tsx
263
+ import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
264
+ function SituationRow({
265
+ blockingLabel,
266
+ blocking,
267
+ clearLabel,
268
+ statusLabel,
269
+ status
270
+ }) {
271
+ const total = blocking.reduce((sum, item) => sum + item.count, 0);
272
+ return /* @__PURE__ */ jsxs5("div", { className: "pt-situation", children: [
273
+ /* @__PURE__ */ jsxs5("section", { className: "pt-situation__half pt-situation__half--blocking", children: [
274
+ /* @__PURE__ */ jsx6("p", { className: "pt-eyebrow", children: blockingLabel }),
275
+ total === 0 ? /* @__PURE__ */ jsx6("p", { className: "pt-situation__clear", children: clearLabel }) : /* @__PURE__ */ jsx6("div", { className: "pt-situation__items", children: blocking.map((item) => {
276
+ const tone = item.count === 0 ? "clear" : item.tone ?? "attention";
277
+ const className = `pt-situation__item pt-situation__item--${tone}`;
278
+ const body = /* @__PURE__ */ jsxs5(Fragment2, { children: [
279
+ /* @__PURE__ */ jsx6("span", { className: "pt-situation__count", children: item.count }),
280
+ /* @__PURE__ */ jsx6("span", { className: "pt-situation__label", children: item.label }),
281
+ item.hint ? /* @__PURE__ */ jsx6("span", { className: "pt-situation__hint", children: item.hint }) : null
282
+ ] });
283
+ return item.onClick ? /* @__PURE__ */ jsx6("button", { type: "button", className, onClick: item.onClick, children: body }, item.id) : /* @__PURE__ */ jsx6("div", { className, children: body }, item.id);
284
+ }) })
285
+ ] }),
286
+ status ? /* @__PURE__ */ jsxs5("section", { className: "pt-situation__half pt-situation__half--status", children: [
287
+ /* @__PURE__ */ jsx6("p", { className: "pt-eyebrow", children: statusLabel }),
288
+ status
289
+ ] }) : null
290
+ ] });
291
+ }
292
+
247
293
  // src/components/FilterChips/FilterChip.tsx
248
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
294
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
249
295
  function FilterChip({ label, count, active, onClick }) {
250
- return /* @__PURE__ */ jsxs5("button", { type: "button", className: `pt-filter-chip${active ? " is-active" : ""}`, "aria-pressed": active, onClick, children: [
296
+ return /* @__PURE__ */ jsxs6("button", { type: "button", className: `pt-filter-chip${active ? " is-active" : ""}`, "aria-pressed": active, onClick, children: [
251
297
  label,
252
- typeof count === "number" && /* @__PURE__ */ jsx6("span", { className: "pt-filter-chip__count", children: count })
298
+ typeof count === "number" && /* @__PURE__ */ jsx7("span", { className: "pt-filter-chip__count", children: count })
253
299
  ] });
254
300
  }
255
301
  function FilterChipRow({ children }) {
256
- return /* @__PURE__ */ jsx6("div", { className: "pt-filter-row", children });
302
+ return /* @__PURE__ */ jsx7("div", { className: "pt-filter-row", children });
257
303
  }
258
304
 
259
305
  // src/components/Board/Board.tsx
260
306
  import { useRef as useRef3 } from "react";
261
307
 
262
308
  // src/components/Board/Column.tsx
263
- import { Fragment as Fragment2 } from "react";
309
+ import { Fragment as Fragment3 } from "react";
264
310
 
265
311
  // src/components/Board/BoardDndContext.tsx
266
312
  import { createContext as createContext2, useContext as useContext2 } from "react";
267
- import { jsx as jsx7 } from "react/jsx-runtime";
313
+ import { jsx as jsx8 } from "react/jsx-runtime";
268
314
  var BoardDndContext = createContext2(null);
269
315
  function BoardDndProvider({ value, children }) {
270
- return /* @__PURE__ */ jsx7(BoardDndContext.Provider, { value, children });
316
+ return /* @__PURE__ */ jsx8(BoardDndContext.Provider, { value, children });
271
317
  }
272
318
  function useBoardDnDContext() {
273
319
  const ctx = useContext2(BoardDndContext);
@@ -278,16 +324,16 @@ function useBoardDnDContext() {
278
324
  }
279
325
 
280
326
  // src/components/Board/Column.tsx
281
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
327
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
282
328
  function Column({ column, renderCard, onAddCard }) {
283
329
  const dnd = useBoardDnDContext();
284
- return /* @__PURE__ */ jsxs6("div", { className: "pt-column", children: [
285
- /* @__PURE__ */ jsxs6("div", { className: "pt-column__header", children: [
286
- /* @__PURE__ */ jsx8("span", { className: "pt-column__title", title: column.hint, children: column.title }),
287
- /* @__PURE__ */ jsx8("span", { className: "pt-column__count", children: column.cards.length }),
288
- column.hint && /* @__PURE__ */ jsx8("span", { className: "pt-sr-only", children: column.hint }),
289
- /* @__PURE__ */ jsx8("span", { className: "pt-column__spacer" }),
290
- onAddCard && /* @__PURE__ */ jsx8(
330
+ return /* @__PURE__ */ jsxs7("div", { className: "pt-column", children: [
331
+ /* @__PURE__ */ jsxs7("div", { className: "pt-column__header", children: [
332
+ /* @__PURE__ */ jsx9("span", { className: "pt-column__title", title: column.hint, children: column.title }),
333
+ /* @__PURE__ */ jsx9("span", { className: "pt-column__count", children: column.cards.length }),
334
+ column.hint && /* @__PURE__ */ jsx9("span", { className: "pt-sr-only", children: column.hint }),
335
+ /* @__PURE__ */ jsx9("span", { className: "pt-column__spacer" }),
336
+ onAddCard && /* @__PURE__ */ jsx9(
291
337
  "button",
292
338
  {
293
339
  type: "button",
@@ -298,16 +344,16 @@ function Column({ column, renderCard, onAddCard }) {
298
344
  }
299
345
  )
300
346
  ] }),
301
- /* @__PURE__ */ jsxs6("div", { className: "pt-column__list", "data-pt-column-list": column.id, children: [
347
+ /* @__PURE__ */ jsxs7("div", { className: "pt-column__list", "data-pt-column-list": column.id, children: [
302
348
  column.cards.map((card, index) => {
303
349
  const showBefore = dnd.isDragging && dnd.dropTarget?.columnId === column.id && dnd.dropTarget.index === index;
304
- return /* @__PURE__ */ jsxs6(Fragment2, { children: [
305
- showBefore && /* @__PURE__ */ jsx8("div", { className: "pt-card-placeholder" }),
350
+ return /* @__PURE__ */ jsxs7(Fragment3, { children: [
351
+ showBefore && /* @__PURE__ */ jsx9("div", { className: "pt-card-placeholder" }),
306
352
  renderCard(card, index, column.id)
307
353
  ] }, card.id);
308
354
  }),
309
- dnd.isDragging && dnd.dropTarget?.columnId === column.id && dnd.dropTarget.index === column.cards.length && /* @__PURE__ */ jsx8("div", { className: "pt-card-placeholder" }),
310
- column.footer ? /* @__PURE__ */ jsx8("div", { className: "pt-column__footer", children: column.footer }) : null
355
+ dnd.isDragging && dnd.dropTarget?.columnId === column.id && dnd.dropTarget.index === column.cards.length && /* @__PURE__ */ jsx9("div", { className: "pt-card-placeholder" }),
356
+ column.footer ? /* @__PURE__ */ jsx9("div", { className: "pt-column__footer", children: column.footer }) : null
311
357
  ] })
312
358
  ] });
313
359
  }
@@ -490,22 +536,22 @@ function useBoardDnD({ columns, onMove, scrollContainerRef }) {
490
536
  }
491
537
 
492
538
  // src/components/Board/Board.tsx
493
- import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
539
+ import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
494
540
  function Board({ columns, renderCard, onMove, onAddCard }) {
495
541
  const scrollRef = useRef3(null);
496
542
  const dnd = useBoardDnD({ columns, onMove, scrollContainerRef: scrollRef });
497
- return /* @__PURE__ */ jsxs7(BoardDndProvider, { value: dnd, children: [
498
- /* @__PURE__ */ jsx9("div", { ref: scrollRef, className: `pt-board${dnd.isDragging ? " pt-board--dragging" : ""}`, children: columns.map((column) => /* @__PURE__ */ jsx9(Column, { column, renderCard, onAddCard }, column.id)) }),
499
- /* @__PURE__ */ jsx9("div", { className: "pt-board__clone-layer", ref: dnd.cloneLayerRef })
543
+ return /* @__PURE__ */ jsxs8(BoardDndProvider, { value: dnd, children: [
544
+ /* @__PURE__ */ jsx10("div", { ref: scrollRef, className: `pt-board${dnd.isDragging ? " pt-board--dragging" : ""}`, children: columns.map((column) => /* @__PURE__ */ jsx10(Column, { column, renderCard, onAddCard }, column.id)) }),
545
+ /* @__PURE__ */ jsx10("div", { className: "pt-board__clone-layer", ref: dnd.cloneLayerRef })
500
546
  ] });
501
547
  }
502
548
 
503
549
  // src/components/Board/Card.tsx
504
- import { jsx as jsx10, jsxs as jsxs8 } from "react/jsx-runtime";
550
+ import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
505
551
  function Card({ cardId, columnId, index, title, priorityColor, tags, progress, children, onClick }) {
506
552
  const dnd = useBoardDnDContext();
507
553
  const isDraggedSource = dnd.drag?.cardId === cardId;
508
- return /* @__PURE__ */ jsxs8(
554
+ return /* @__PURE__ */ jsxs9(
509
555
  "div",
510
556
  {
511
557
  className: `pt-card${isDraggedSource ? " pt-card--dragging-source" : ""}`,
@@ -514,8 +560,8 @@ function Card({ cardId, columnId, index, title, priorityColor, tags, progress, c
514
560
  style: priorityColor ? { "--pt-card-stripe": priorityColor } : void 0,
515
561
  onClick,
516
562
  children: [
517
- /* @__PURE__ */ jsxs8("div", { className: "pt-card__row", children: [
518
- /* @__PURE__ */ jsx10(
563
+ /* @__PURE__ */ jsxs9("div", { className: "pt-card__row", children: [
564
+ /* @__PURE__ */ jsx11(
519
565
  "button",
520
566
  {
521
567
  type: "button",
@@ -525,10 +571,10 @@ function Card({ cardId, columnId, index, title, priorityColor, tags, progress, c
525
571
  children: "\u283F"
526
572
  }
527
573
  ),
528
- /* @__PURE__ */ jsx10("div", { className: "pt-card__title", children: title })
574
+ /* @__PURE__ */ jsx11("div", { className: "pt-card__title", children: title })
529
575
  ] }),
530
- tags && tags.length > 0 && /* @__PURE__ */ jsx10("div", { className: "pt-card__tags", children: tags.map((tag, i) => /* @__PURE__ */ jsx10("span", { className: `pt-tag pt-tag--${tag.tone ?? "neutral"}${tag.emphasize ? " pt-tag--emphasize" : ""}`, children: tag.label }, i)) }),
531
- progress && /* @__PURE__ */ jsxs8("div", { className: `pt-card__progress${progress.done >= progress.total ? " is-complete" : ""}`, children: [
576
+ tags && tags.length > 0 && /* @__PURE__ */ jsx11("div", { className: "pt-card__tags", children: tags.map((tag, i) => /* @__PURE__ */ jsx11("span", { className: `pt-tag pt-tag--${tag.tone ?? "neutral"}${tag.emphasize ? " pt-tag--emphasize" : ""}`, children: tag.label }, i)) }),
577
+ progress && /* @__PURE__ */ jsxs9("div", { className: `pt-card__progress${progress.done >= progress.total ? " is-complete" : ""}`, children: [
532
578
  progress.done,
533
579
  "/",
534
580
  progress.total
@@ -563,7 +609,7 @@ function moveCardInColumns(columns, move) {
563
609
 
564
610
  // src/components/DetailSheet/DetailSheet.tsx
565
611
  import { useEffect as useEffect3 } from "react";
566
- import { jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
612
+ import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
567
613
  function DetailSheet({ open, onClose, children, ariaLabel }) {
568
614
  useEffect3(() => {
569
615
  if (!open) return;
@@ -574,16 +620,16 @@ function DetailSheet({ open, onClose, children, ariaLabel }) {
574
620
  return () => window.removeEventListener("keydown", handleKey);
575
621
  }, [open, onClose]);
576
622
  if (!open) return null;
577
- return /* @__PURE__ */ jsx11("div", { className: "pt-sheet-backdrop", onClick: onClose, children: /* @__PURE__ */ jsxs9("div", { className: "pt-sheet", role: "dialog", "aria-modal": "true", "aria-label": ariaLabel, onClick: (e) => e.stopPropagation(), children: [
578
- /* @__PURE__ */ jsx11("div", { className: "pt-sheet__handle" }),
623
+ return /* @__PURE__ */ jsx12("div", { className: "pt-sheet-backdrop", onClick: onClose, children: /* @__PURE__ */ jsxs10("div", { className: "pt-sheet", role: "dialog", "aria-modal": "true", "aria-label": ariaLabel, onClick: (e) => e.stopPropagation(), children: [
624
+ /* @__PURE__ */ jsx12("div", { className: "pt-sheet__handle" }),
579
625
  children
580
626
  ] }) });
581
627
  }
582
628
  function DetailSection({ title, subtitle, children }) {
583
- return /* @__PURE__ */ jsxs9("section", { className: "pt-detail-section", children: [
584
- /* @__PURE__ */ jsxs9("h3", { className: "pt-detail-section__title", children: [
629
+ return /* @__PURE__ */ jsxs10("section", { className: "pt-detail-section", children: [
630
+ /* @__PURE__ */ jsxs10("h3", { className: "pt-detail-section__title", children: [
585
631
  title,
586
- subtitle && /* @__PURE__ */ jsxs9("span", { className: "pt-detail-section__subtitle", children: [
632
+ subtitle && /* @__PURE__ */ jsxs10("span", { className: "pt-detail-section__subtitle", children: [
587
633
  " \u2014 ",
588
634
  subtitle
589
635
  ] })
@@ -594,7 +640,7 @@ function DetailSection({ title, subtitle, children }) {
594
640
 
595
641
  // src/components/Guide/Guide.tsx
596
642
  import { useCallback as useCallback2, useEffect as useEffect4, useState as useState2 } from "react";
597
- import { jsx as jsx12, jsxs as jsxs10 } from "react/jsx-runtime";
643
+ import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
598
644
  import { createElement } from "react";
599
645
  var STORE_PREFIX = "pt-guide:";
600
646
  function readDismissed(key) {
@@ -648,19 +694,19 @@ function GuideNote({
648
694
  dismiss();
649
695
  onDismissed?.();
650
696
  };
651
- return /* @__PURE__ */ jsxs10("aside", { className: "pt-guide", role: "note", children: [
652
- /* @__PURE__ */ jsxs10("div", { className: "pt-guide__head", children: [
653
- /* @__PURE__ */ jsx12("p", { className: "pt-guide__title", children: title }),
654
- step && /* @__PURE__ */ jsxs10("span", { className: "pt-guide__step", "aria-label": `Step ${step.index} of ${step.total}`, children: [
697
+ return /* @__PURE__ */ jsxs11("aside", { className: "pt-guide", role: "note", children: [
698
+ /* @__PURE__ */ jsxs11("div", { className: "pt-guide__head", children: [
699
+ /* @__PURE__ */ jsx13("p", { className: "pt-guide__title", children: title }),
700
+ step && /* @__PURE__ */ jsxs11("span", { className: "pt-guide__step", "aria-label": `Step ${step.index} of ${step.total}`, children: [
655
701
  step.index,
656
702
  "/",
657
703
  step.total
658
704
  ] })
659
705
  ] }),
660
- /* @__PURE__ */ jsx12("div", { className: "pt-guide__body", children }),
661
- /* @__PURE__ */ jsxs10("div", { className: "pt-guide__actions", children: [
662
- action && /* @__PURE__ */ jsx12("button", { type: "button", className: "pt-guide__do", onClick: action.onClick, children: action.label }),
663
- /* @__PURE__ */ jsx12("button", { type: "button", className: "pt-guide__dismiss", onClick: close, children: dismissLabel })
706
+ /* @__PURE__ */ jsx13("div", { className: "pt-guide__body", children }),
707
+ /* @__PURE__ */ jsxs11("div", { className: "pt-guide__actions", children: [
708
+ action && /* @__PURE__ */ jsx13("button", { type: "button", className: "pt-guide__do", onClick: action.onClick, children: action.label }),
709
+ /* @__PURE__ */ jsx13("button", { type: "button", className: "pt-guide__dismiss", onClick: close, children: dismissLabel })
664
710
  ] })
665
711
  ] });
666
712
  }
@@ -694,7 +740,7 @@ function GuideTour({ notes, dismissed, onDismiss }) {
694
740
 
695
741
  // src/components/Notifications/Notifications.tsx
696
742
  import { useCallback as useCallback3, useEffect as useEffect5, useMemo as useMemo2, useRef as useRef4, useState as useState3 } from "react";
697
- import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
743
+ import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
698
744
  var STORE_KEY = "pt-seen";
699
745
  function readSeen() {
700
746
  try {
@@ -760,8 +806,8 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
760
806
  );
761
807
  if (!seen) return null;
762
808
  const count = unread.length;
763
- return /* @__PURE__ */ jsxs11("div", { className: "pt-bell", ref: root, children: [
764
- /* @__PURE__ */ jsxs11(
809
+ return /* @__PURE__ */ jsxs12("div", { className: "pt-bell", ref: root, children: [
810
+ /* @__PURE__ */ jsxs12(
765
811
  "button",
766
812
  {
767
813
  type: "button",
@@ -771,8 +817,8 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
771
817
  title: count ? `${text2.title} \u2014 ${text2.unread(count)}` : text2.title,
772
818
  onClick: () => setOpen((v) => !v),
773
819
  children: [
774
- /* @__PURE__ */ jsx13("span", { className: "pt-bell__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxs11("svg", { viewBox: "0 0 16 16", width: "15", height: "15", children: [
775
- /* @__PURE__ */ jsx13(
820
+ /* @__PURE__ */ jsx14("span", { className: "pt-bell__icon", "aria-hidden": "true", children: /* @__PURE__ */ jsxs12("svg", { viewBox: "0 0 16 16", width: "15", height: "15", children: [
821
+ /* @__PURE__ */ jsx14(
776
822
  "path",
777
823
  {
778
824
  d: "M8 1.6a3.6 3.6 0 0 0-3.6 3.6v2.3L3.1 10.2h9.8l-1.3-2.7V5.2A3.6 3.6 0 0 0 8 1.6Z",
@@ -782,17 +828,17 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
782
828
  strokeLinejoin: "round"
783
829
  }
784
830
  ),
785
- /* @__PURE__ */ jsx13("path", { d: "M6.5 12a1.5 1.5 0 0 0 3 0", fill: "none", stroke: "currentColor", strokeWidth: "1.3" })
831
+ /* @__PURE__ */ jsx14("path", { d: "M6.5 12a1.5 1.5 0 0 0 3 0", fill: "none", stroke: "currentColor", strokeWidth: "1.3" })
786
832
  ] }) }),
787
- /* @__PURE__ */ jsx13("span", { className: "pt-sr-only", children: count ? text2.unread(count) : text2.title }),
788
- count > 0 && /* @__PURE__ */ jsx13("span", { className: "pt-bell__count", "aria-hidden": "true", children: count > 99 ? "99+" : count })
833
+ /* @__PURE__ */ jsx14("span", { className: "pt-sr-only", children: count ? text2.unread(count) : text2.title }),
834
+ count > 0 && /* @__PURE__ */ jsx14("span", { className: "pt-bell__count", "aria-hidden": "true", children: count > 99 ? "99+" : count })
789
835
  ]
790
836
  }
791
837
  ),
792
- open && /* @__PURE__ */ jsxs11("div", { className: "pt-bell__panel", role: "dialog", "aria-label": text2.title, children: [
793
- /* @__PURE__ */ jsxs11("div", { className: "pt-bell__head", children: [
794
- /* @__PURE__ */ jsx13("p", { className: "pt-bell__title", children: text2.title }),
795
- count > 0 && /* @__PURE__ */ jsx13(
838
+ open && /* @__PURE__ */ jsxs12("div", { className: "pt-bell__panel", role: "dialog", "aria-label": text2.title, children: [
839
+ /* @__PURE__ */ jsxs12("div", { className: "pt-bell__head", children: [
840
+ /* @__PURE__ */ jsx14("p", { className: "pt-bell__title", children: text2.title }),
841
+ count > 0 && /* @__PURE__ */ jsx14(
796
842
  "button",
797
843
  {
798
844
  type: "button",
@@ -802,7 +848,7 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
802
848
  }
803
849
  )
804
850
  ] }),
805
- count === 0 ? /* @__PURE__ */ jsx13("p", { className: "pt-bell__empty", children: text2.empty }) : /* @__PURE__ */ jsx13("ul", { className: "pt-bell__list", children: unread.map((item) => /* @__PURE__ */ jsx13("li", { children: /* @__PURE__ */ jsxs11(
851
+ count === 0 ? /* @__PURE__ */ jsx14("p", { className: "pt-bell__empty", children: text2.empty }) : /* @__PURE__ */ jsx14("ul", { className: "pt-bell__list", children: unread.map((item) => /* @__PURE__ */ jsx14("li", { children: /* @__PURE__ */ jsxs12(
806
852
  "button",
807
853
  {
808
854
  type: "button",
@@ -813,11 +859,11 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
813
859
  if (item.onOpen) setOpen(false);
814
860
  },
815
861
  children: [
816
- /* @__PURE__ */ jsx13("span", { className: "pt-bell__mark", "aria-hidden": "true" }),
817
- /* @__PURE__ */ jsxs11("span", { className: "pt-bell__body", children: [
818
- /* @__PURE__ */ jsx13("span", { className: "pt-bell__item-title", children: item.title }),
819
- item.detail && /* @__PURE__ */ jsx13("span", { className: "pt-bell__detail", children: item.detail }),
820
- item.at && /* @__PURE__ */ jsx13("span", { className: "pt-bell__at", children: item.at })
862
+ /* @__PURE__ */ jsx14("span", { className: "pt-bell__mark", "aria-hidden": "true" }),
863
+ /* @__PURE__ */ jsxs12("span", { className: "pt-bell__body", children: [
864
+ /* @__PURE__ */ jsx14("span", { className: "pt-bell__item-title", children: item.title }),
865
+ item.detail && /* @__PURE__ */ jsx14("span", { className: "pt-bell__detail", children: item.detail }),
866
+ item.at && /* @__PURE__ */ jsx14("span", { className: "pt-bell__at", children: item.at })
821
867
  ] })
822
868
  ]
823
869
  }
@@ -828,7 +874,7 @@ function NotificationBell({ notifications, labels, seen: given, onSeen }) {
828
874
 
829
875
  // src/components/CopyBlock/CopyBlock.tsx
830
876
  import { useCallback as useCallback4, useEffect as useEffect6, useRef as useRef5, useState as useState4 } from "react";
831
- import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
877
+ import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
832
878
  var DEFAULT_LABELS2 = {
833
879
  copy: "Copy",
834
880
  copied: "Copied",
@@ -869,21 +915,21 @@ function CopyBlock({ text: text2, label, note, labels }) {
869
915
  }
870
916
  if (select()) announce("selected");
871
917
  }, [announce, select, text2]);
872
- return /* @__PURE__ */ jsxs12("div", { className: "pt-copy", children: [
873
- /* @__PURE__ */ jsxs12("div", { className: "pt-copy__head", children: [
874
- /* @__PURE__ */ jsxs12("div", { className: "pt-copy__meta", children: [
875
- label && /* @__PURE__ */ jsx14("p", { className: "pt-copy__label", children: label }),
876
- note && /* @__PURE__ */ jsx14("p", { className: "pt-copy__note", children: note })
918
+ return /* @__PURE__ */ jsxs13("div", { className: "pt-copy", children: [
919
+ /* @__PURE__ */ jsxs13("div", { className: "pt-copy__head", children: [
920
+ /* @__PURE__ */ jsxs13("div", { className: "pt-copy__meta", children: [
921
+ label && /* @__PURE__ */ jsx15("p", { className: "pt-copy__label", children: label }),
922
+ note && /* @__PURE__ */ jsx15("p", { className: "pt-copy__note", children: note })
877
923
  ] }),
878
- /* @__PURE__ */ jsx14("button", { type: "button", className: "pt-copy__button", onClick: copy, children: result === "copied" ? words.copied : result === "selected" ? words.selected : words.copy })
924
+ /* @__PURE__ */ jsx15("button", { type: "button", className: "pt-copy__button", onClick: copy, children: result === "copied" ? words.copied : result === "selected" ? words.selected : words.copy })
879
925
  ] }),
880
- /* @__PURE__ */ jsx14("div", { className: "pt-copy__body", children: /* @__PURE__ */ jsx14("pre", { className: "pt-copy__text", ref: pre, children: text2 }) }),
881
- /* @__PURE__ */ jsx14("p", { className: "pt-sr-only", role: "status", children: result === "copied" ? words.copied : result === "selected" ? words.selected : "" })
926
+ /* @__PURE__ */ jsx15("div", { className: "pt-copy__body", children: /* @__PURE__ */ jsx15("pre", { className: "pt-copy__text", ref: pre, children: text2 }) }),
927
+ /* @__PURE__ */ jsx15("p", { className: "pt-sr-only", role: "status", children: result === "copied" ? words.copied : result === "selected" ? words.selected : "" })
882
928
  ] });
883
929
  }
884
930
 
885
931
  // src/components/Setup/SetupGuide.tsx
886
- import { jsx as jsx15, jsxs as jsxs13 } from "react/jsx-runtime";
932
+ import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
887
933
  var DEFAULT_LABELS3 = {
888
934
  ok: "in place",
889
935
  missing: "not set",
@@ -894,23 +940,23 @@ function SetupGuide({ requirements, readyMessage, labels }) {
894
940
  const text2 = { ...DEFAULT_LABELS3, ...labels };
895
941
  const missing = requirements.filter((r) => r.status === "missing");
896
942
  const allOk = requirements.length > 0 && missing.length === 0;
897
- return /* @__PURE__ */ jsxs13("div", { className: "pt-setup", children: [
898
- /* @__PURE__ */ jsx15("ul", { className: "pt-setup__list", children: requirements.map((requirement) => /* @__PURE__ */ jsxs13("li", { className: `pt-setup__item is-${requirement.status}`, children: [
899
- /* @__PURE__ */ jsx15("span", { className: "pt-setup__mark", "aria-hidden": "true" }),
900
- /* @__PURE__ */ jsxs13("div", { className: "pt-setup__main", children: [
901
- /* @__PURE__ */ jsxs13("p", { className: "pt-setup__label", children: [
943
+ return /* @__PURE__ */ jsxs14("div", { className: "pt-setup", children: [
944
+ /* @__PURE__ */ jsx16("ul", { className: "pt-setup__list", children: requirements.map((requirement) => /* @__PURE__ */ jsxs14("li", { className: `pt-setup__item is-${requirement.status}`, children: [
945
+ /* @__PURE__ */ jsx16("span", { className: "pt-setup__mark", "aria-hidden": "true" }),
946
+ /* @__PURE__ */ jsxs14("div", { className: "pt-setup__main", children: [
947
+ /* @__PURE__ */ jsxs14("p", { className: "pt-setup__label", children: [
902
948
  requirement.label,
903
- /* @__PURE__ */ jsx15("span", { className: "pt-setup__state", children: text2[requirement.status] })
949
+ /* @__PURE__ */ jsx16("span", { className: "pt-setup__state", children: text2[requirement.status] })
904
950
  ] }),
905
- requirement.variable && /* @__PURE__ */ jsx15("p", { className: "pt-setup__var", children: requirement.variable }),
906
- requirement.enables && /* @__PURE__ */ jsx15("p", { className: "pt-setup__enables", children: requirement.enables }),
907
- requirement.status !== "ok" && requirement.fix && /* @__PURE__ */ jsxs13("div", { className: "pt-setup__fix", children: [
908
- /* @__PURE__ */ jsx15("p", { className: "pt-setup__fix-title", children: text2.whatToDo }),
951
+ requirement.variable && /* @__PURE__ */ jsx16("p", { className: "pt-setup__var", children: requirement.variable }),
952
+ requirement.enables && /* @__PURE__ */ jsx16("p", { className: "pt-setup__enables", children: requirement.enables }),
953
+ requirement.status !== "ok" && requirement.fix && /* @__PURE__ */ jsxs14("div", { className: "pt-setup__fix", children: [
954
+ /* @__PURE__ */ jsx16("p", { className: "pt-setup__fix-title", children: text2.whatToDo }),
909
955
  requirement.fix
910
956
  ] })
911
957
  ] })
912
958
  ] }, requirement.id)) }),
913
- allOk && readyMessage && /* @__PURE__ */ jsx15("p", { className: "pt-setup__ready", children: readyMessage })
959
+ allOk && readyMessage && /* @__PURE__ */ jsx16("p", { className: "pt-setup__ready", children: readyMessage })
914
960
  ] });
915
961
  }
916
962
 
@@ -941,7 +987,7 @@ function isFirstRun(board) {
941
987
  }
942
988
 
943
989
  // src/components/Setup/SetupWizard.tsx
944
- import { jsx as jsx16, jsxs as jsxs14 } from "react/jsx-runtime";
990
+ import { jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
945
991
  function SetupWizard({ requirements, labels, onCheck, onClose }) {
946
992
  const step = wizardStep(requirements);
947
993
  const [checking, setChecking] = useState5(false);
@@ -964,37 +1010,37 @@ function SetupWizard({ requirements, labels, onCheck, onClose }) {
964
1010
  } catch {
965
1011
  }
966
1012
  }
967
- return /* @__PURE__ */ jsxs14("section", { className: "pt-wizard", "aria-labelledby": "pt-wizard-title", children: [
968
- /* @__PURE__ */ jsxs14("header", { className: "pt-wizard__head", children: [
969
- /* @__PURE__ */ jsx16("h2", { className: "pt-h2", id: "pt-wizard-title", children: labels.title }),
970
- step.current && /* @__PURE__ */ jsx16("p", { className: "pt-wizard__progress", children: labels.progress(step.index, step.total) })
1013
+ return /* @__PURE__ */ jsxs15("section", { className: "pt-wizard", "aria-labelledby": "pt-wizard-title", children: [
1014
+ /* @__PURE__ */ jsxs15("header", { className: "pt-wizard__head", children: [
1015
+ /* @__PURE__ */ jsx17("h2", { className: "pt-h2", id: "pt-wizard-title", children: labels.title }),
1016
+ step.current && /* @__PURE__ */ jsx17("p", { className: "pt-wizard__progress", children: labels.progress(step.index, step.total) })
971
1017
  ] }),
972
- step.current ? /* @__PURE__ */ jsxs14("div", { className: "pt-wizard__step", children: [
973
- /* @__PURE__ */ jsx16("p", { className: "pt-wizard__now", children: labels.nowDo }),
974
- /* @__PURE__ */ jsx16("h3", { className: "pt-wizard__label", children: step.current.label }),
975
- step.current.variable && /* @__PURE__ */ jsx16("p", { className: "pt-wizard__var", children: step.current.variable }),
976
- step.current.enables && /* @__PURE__ */ jsx16("p", { className: "pt-wizard__enables", children: step.current.enables }),
977
- step.current.fix && /* @__PURE__ */ jsx16("div", { className: "pt-wizard__fix", children: step.current.fix }),
978
- /* @__PURE__ */ jsxs14("div", { className: "pt-wizard__actions", children: [
979
- /* @__PURE__ */ jsx16("button", { type: "button", className: "pt-btn pt-btn--primary", onClick: check, disabled: checking, children: checking ? labels.checking : labels.check }),
980
- checked && !checking && /* @__PURE__ */ jsx16("p", { className: "pt-wizard__said", children: step.unknown ? labels.cannotTell : labels.stillMissing })
1018
+ step.current ? /* @__PURE__ */ jsxs15("div", { className: "pt-wizard__step", children: [
1019
+ /* @__PURE__ */ jsx17("p", { className: "pt-wizard__now", children: labels.nowDo }),
1020
+ /* @__PURE__ */ jsx17("h3", { className: "pt-wizard__label", children: step.current.label }),
1021
+ step.current.variable && /* @__PURE__ */ jsx17("p", { className: "pt-wizard__var", children: step.current.variable }),
1022
+ step.current.enables && /* @__PURE__ */ jsx17("p", { className: "pt-wizard__enables", children: step.current.enables }),
1023
+ step.current.fix && /* @__PURE__ */ jsx17("div", { className: "pt-wizard__fix", children: step.current.fix }),
1024
+ /* @__PURE__ */ jsxs15("div", { className: "pt-wizard__actions", children: [
1025
+ /* @__PURE__ */ jsx17("button", { type: "button", className: "pt-btn pt-btn--primary", onClick: check, disabled: checking, children: checking ? labels.checking : labels.check }),
1026
+ checked && !checking && /* @__PURE__ */ jsx17("p", { className: "pt-wizard__said", children: step.unknown ? labels.cannotTell : labels.stillMissing })
981
1027
  ] })
982
- ] }) : /* @__PURE__ */ jsxs14("div", { className: "pt-wizard__step pt-wizard__step--done", children: [
983
- /* @__PURE__ */ jsx16("h3", { className: "pt-wizard__label", children: labels.readyTitle }),
984
- /* @__PURE__ */ jsx16("p", { className: "pt-wizard__enables", children: labels.readyBody }),
985
- /* @__PURE__ */ jsx16("ol", { className: "pt-wizard__verify", children: labels.verify.map((line) => /* @__PURE__ */ jsx16("li", { children: line }, line)) })
1028
+ ] }) : /* @__PURE__ */ jsxs15("div", { className: "pt-wizard__step pt-wizard__step--done", children: [
1029
+ /* @__PURE__ */ jsx17("h3", { className: "pt-wizard__label", children: labels.readyTitle }),
1030
+ /* @__PURE__ */ jsx17("p", { className: "pt-wizard__enables", children: labels.readyBody }),
1031
+ /* @__PURE__ */ jsx17("ol", { className: "pt-wizard__verify", children: labels.verify.map((line) => /* @__PURE__ */ jsx17("li", { children: line }, line)) })
986
1032
  ] }),
987
- step.done.length > 0 && /* @__PURE__ */ jsxs14("div", { className: "pt-wizard__done", children: [
988
- /* @__PURE__ */ jsx16("p", { className: "pt-wizard__done-title", children: labels.doneTitle }),
989
- /* @__PURE__ */ jsx16("ul", { children: step.done.map((requirement) => /* @__PURE__ */ jsx16("li", { children: requirement.label }, requirement.id)) })
1033
+ step.done.length > 0 && /* @__PURE__ */ jsxs15("div", { className: "pt-wizard__done", children: [
1034
+ /* @__PURE__ */ jsx17("p", { className: "pt-wizard__done-title", children: labels.doneTitle }),
1035
+ /* @__PURE__ */ jsx17("ul", { children: step.done.map((requirement) => /* @__PURE__ */ jsx17("li", { children: requirement.label }, requirement.id)) })
990
1036
  ] }),
991
- /* @__PURE__ */ jsxs14("div", { className: "pt-wizard__stuck", children: [
992
- /* @__PURE__ */ jsx16("p", { className: "pt-wizard__done-title", children: labels.stuckTitle }),
993
- /* @__PURE__ */ jsx16("p", { className: "pt-wizard__enables", children: labels.stuckBody }),
994
- /* @__PURE__ */ jsx16("pre", { className: "pt-wizard__prompt", children: labels.stuckPrompt }),
995
- /* @__PURE__ */ jsx16("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: copyPrompt, children: copied ? labels.copied : labels.copy })
1037
+ /* @__PURE__ */ jsxs15("div", { className: "pt-wizard__stuck", children: [
1038
+ /* @__PURE__ */ jsx17("p", { className: "pt-wizard__done-title", children: labels.stuckTitle }),
1039
+ /* @__PURE__ */ jsx17("p", { className: "pt-wizard__enables", children: labels.stuckBody }),
1040
+ /* @__PURE__ */ jsx17("pre", { className: "pt-wizard__prompt", children: labels.stuckPrompt }),
1041
+ /* @__PURE__ */ jsx17("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: copyPrompt, children: copied ? labels.copied : labels.copy })
996
1042
  ] }),
997
- onClose && /* @__PURE__ */ jsx16("div", { className: "pt-wizard__actions", children: /* @__PURE__ */ jsx16("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onClose, children: labels.close }) })
1043
+ onClose && /* @__PURE__ */ jsx17("div", { className: "pt-wizard__actions", children: /* @__PURE__ */ jsx17("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onClose, children: labels.close }) })
998
1044
  ] });
999
1045
  }
1000
1046
 
@@ -1592,12 +1638,19 @@ var UI = {
1592
1638
  filterForClaude: "For Claude",
1593
1639
  filterYours: "Waiting on you",
1594
1640
  filterHighRisk: "High risk",
1641
+ situationBlocking: "What is waiting on you",
1642
+ situationClear: "Nothing is waiting on you. Every open card is either being worked or is Claude\u2019s to pick up.",
1643
+ situationStatus: "System",
1644
+ situationYoursHint: "Yours to finish \u2014 Claude will not touch these",
1645
+ situationDecisionsHint: "Questions nobody has answered yet",
1646
+ situationOrdersHint: "Asked for \u2014 waiting on Claude",
1595
1647
  statOpen: "Open",
1596
1648
  statOrders: "Orders",
1597
1649
  statYours: "For you",
1598
1650
  statDecisions: "Decisions",
1599
1651
  statHighRisk: "High risk",
1600
1652
  statDone: "Done",
1653
+ statArchived: "Archived",
1601
1654
  theme: "Theme",
1602
1655
  themeSubtitle: "the only thing that changes between projects",
1603
1656
  themeNote: "The structure does not move: only the palette handed to the theme provider changes.",
@@ -1628,9 +1681,10 @@ var UI = {
1628
1681
  needTokenEnables: "Lets Save commit the board back to the repository. Without it everything else works and Save fails.",
1629
1682
  needRepo: "The repository to write to",
1630
1683
  needRepoEnables: "Which repository the board is committed to. There is no default on purpose: writing to the wrong one is worse than not writing.",
1631
- archivedOne: "archived \u2014 finished over a week ago",
1632
- archivedMany: "archived \u2014 finished over a week ago",
1633
- archivedHide: "Hide them again",
1684
+ archiveTitle: "Archive",
1685
+ archiveHeading: "Finished, and out of the way",
1686
+ archiveIntro: "Cards that reached Done over a week ago. They are still on the board file and nothing has been deleted \u2014 they are simply no longer in the way of the work that is not finished.",
1687
+ archiveFinished: (date) => `Finished ${date}`,
1634
1688
  needGate: "The gate this project copied",
1635
1689
  needGateEnables: "The sign-in, the session and the write-back are files this project owns, copied once and never updated with the library. When one of them is older than the package, the panel does not look misconfigured \u2014 it looks broken.",
1636
1690
  fixGate: "The gate is older than the installed kit. See what changed before replacing anything:",
@@ -1919,12 +1973,19 @@ var UI = {
1919
1973
  filterForClaude: "Para Claude",
1920
1974
  filterYours: "Depende de ti",
1921
1975
  filterHighRisk: "Riesgo alto",
1976
+ situationBlocking: "Lo que te bloquea a ti",
1977
+ situationClear: "Nada espera por ti. Cada tarjeta abierta o est\xE1 en marcha o le toca a Claude.",
1978
+ situationStatus: "Sistema",
1979
+ situationYoursHint: "Tuyas para terminar: Claude no las toca",
1980
+ situationDecisionsHint: "Preguntas que nadie ha contestado todav\xEDa",
1981
+ situationOrdersHint: "Pedidas: esperando a Claude",
1922
1982
  statOpen: "Abiertas",
1923
1983
  statOrders: "\xD3rdenes",
1924
1984
  statYours: "Para ti",
1925
1985
  statDecisions: "Decisiones",
1926
1986
  statHighRisk: "Riesgo alto",
1927
1987
  statDone: "Hecho",
1988
+ statArchived: "Archivadas",
1928
1989
  theme: "Tema",
1929
1990
  themeSubtitle: "lo \xFAnico que cambia entre proyectos",
1930
1991
  themeNote: "La estructura no se mueve: cambia solo la paleta que recibe el proveedor de tema.",
@@ -1955,9 +2016,10 @@ var UI = {
1955
2016
  needTokenEnables: "Permite que Guardar confirme el tablero en el repositorio. Sin \xE9l todo lo dem\xE1s funciona y Guardar falla.",
1956
2017
  needRepo: "El repositorio donde escribir",
1957
2018
  needRepoEnables: "En qu\xE9 repositorio se confirma el tablero. No hay valor por defecto a prop\xF3sito: escribir en el equivocado es peor que no escribir.",
1958
- archivedOne: "archivada \u2014 terminada hace m\xE1s de una semana",
1959
- archivedMany: "archivadas \u2014 terminadas hace m\xE1s de una semana",
1960
- archivedHide: "Volver a esconderlas",
2019
+ archiveTitle: "Archivo",
2020
+ archiveHeading: "Terminadas, y fuera de en medio",
2021
+ archiveIntro: "Tarjetas que llegaron a Hecho hace m\xE1s de una semana. Siguen en el archivo del tablero y no se ha borrado nada: simplemente ya no estorban al trabajo que no est\xE1 terminado.",
2022
+ archiveFinished: (date) => `Terminada el ${date}`,
1961
2023
  needGate: "La puerta que copi\xF3 este proyecto",
1962
2024
  needGateEnables: "El acceso, la sesi\xF3n y la escritura de vuelta son archivos de este proyecto, copiados una vez y que no se actualizan con la librer\xEDa. Cuando uno se queda m\xE1s viejo que el paquete, el panel no parece mal configurado: parece roto.",
1963
2025
  fixGate: "La puerta es m\xE1s vieja que el kit instalado. Mira qu\xE9 cambi\xF3 antes de reemplazar nada:",
@@ -2178,7 +2240,7 @@ var UI = {
2178
2240
  };
2179
2241
 
2180
2242
  // src/panel/AnalysisView.tsx
2181
- import { Fragment as Fragment3, jsx as jsx17, jsxs as jsxs15 } from "react/jsx-runtime";
2243
+ import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
2182
2244
  var SUGGESTION_STATUSES = ["new", "doing", "done", "dismissed"];
2183
2245
  function MetricTile({ metric, lang, ui }) {
2184
2246
  const { latest, delta, against } = trendOf(metric);
@@ -2187,23 +2249,23 @@ function MetricTile({ metric, lang, ui }) {
2187
2249
  const height = 34;
2188
2250
  const path = points.map((point) => `${(point.x * width).toFixed(1)},${(point.y * (height - 6) + 3).toFixed(1)}`);
2189
2251
  const last = points[points.length - 1];
2190
- return /* @__PURE__ */ jsxs15("article", { className: "pt-metric", children: [
2191
- /* @__PURE__ */ jsx17("p", { className: "pt-metric__label", children: text(metric.label, lang) }),
2192
- /* @__PURE__ */ jsxs15("p", { className: "pt-metric__value", children: [
2252
+ return /* @__PURE__ */ jsxs16("article", { className: "pt-metric", children: [
2253
+ /* @__PURE__ */ jsx18("p", { className: "pt-metric__label", children: text(metric.label, lang) }),
2254
+ /* @__PURE__ */ jsxs16("p", { className: "pt-metric__value", children: [
2193
2255
  latest ? latest.value : "\u2014",
2194
- /* @__PURE__ */ jsx17("span", { className: "pt-metric__unit", children: metric.unit })
2256
+ /* @__PURE__ */ jsx18("span", { className: "pt-metric__unit", children: metric.unit })
2195
2257
  ] }),
2196
- delta !== null && /* @__PURE__ */ jsxs15("p", { className: `pt-metric__delta${against ? " is-against" : " is-with"}`, children: [
2258
+ delta !== null && /* @__PURE__ */ jsxs16("p", { className: `pt-metric__delta${against ? " is-against" : " is-with"}`, children: [
2197
2259
  delta > 0 ? "\u25B2" : delta < 0 ? "\u25BC" : "\u25A0",
2198
2260
  " ",
2199
2261
  delta > 0 ? "+" : "",
2200
2262
  delta,
2201
- /* @__PURE__ */ jsxs15("span", { className: "pt-metric__since", children: [
2263
+ /* @__PURE__ */ jsxs16("span", { className: "pt-metric__since", children: [
2202
2264
  " \xB7 ",
2203
2265
  against ? ui.metricAgainst : ui.metricWith
2204
2266
  ] })
2205
2267
  ] }),
2206
- points.length > 1 && /* @__PURE__ */ jsxs15(
2268
+ points.length > 1 && /* @__PURE__ */ jsxs16(
2207
2269
  "svg",
2208
2270
  {
2209
2271
  className: "pt-metric__spark",
@@ -2213,12 +2275,12 @@ function MetricTile({ metric, lang, ui }) {
2213
2275
  role: "img",
2214
2276
  "aria-label": `${text(metric.label, lang)}: ${metric.readings.map((r) => `${r.date} ${r.value}`).join(", ")}`,
2215
2277
  children: [
2216
- /* @__PURE__ */ jsx17("polyline", { points: path.join(" "), fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinejoin: "round" }),
2217
- last && /* @__PURE__ */ jsx17("circle", { cx: last.x * width, cy: last.y * (height - 6) + 3, r: "3.5", className: "pt-metric__point" })
2278
+ /* @__PURE__ */ jsx18("polyline", { points: path.join(" "), fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinejoin: "round" }),
2279
+ last && /* @__PURE__ */ jsx18("circle", { cx: last.x * width, cy: last.y * (height - 6) + 3, r: "3.5", className: "pt-metric__point" })
2218
2280
  ]
2219
2281
  }
2220
2282
  ),
2221
- latest?.note && /* @__PURE__ */ jsx17("p", { className: "pt-metric__note", children: text(latest.note, lang) })
2283
+ latest?.note && /* @__PURE__ */ jsx18("p", { className: "pt-metric__note", children: text(latest.note, lang) })
2222
2284
  ] });
2223
2285
  }
2224
2286
  function ChoiceCard({
@@ -2229,11 +2291,11 @@ function ChoiceCard({
2229
2291
  onDecide
2230
2292
  }) {
2231
2293
  const answered = choice.options.find((option) => option.id === choice.value);
2232
- return /* @__PURE__ */ jsxs15("article", { className: `pt-choice${answered ? " is-decided" : ""}`, children: [
2233
- /* @__PURE__ */ jsx17("p", { className: "pt-choice__state", children: answered ? ui.choiceDecidedAt(choice.decidedAt ?? "") : ui.choiceOpen }),
2234
- /* @__PURE__ */ jsx17("p", { className: "pt-choice__question", children: text(choice.question, lang) }),
2235
- choice.why && /* @__PURE__ */ jsx17("p", { className: "pt-choice__why", children: text(choice.why, lang) }),
2236
- /* @__PURE__ */ jsx17("div", { className: "pt-panel-row pt-choice__options", children: choice.options.map((option) => /* @__PURE__ */ jsx17(
2294
+ return /* @__PURE__ */ jsxs16("article", { className: `pt-choice${answered ? " is-decided" : ""}`, children: [
2295
+ /* @__PURE__ */ jsx18("p", { className: "pt-choice__state", children: answered ? ui.choiceDecidedAt(choice.decidedAt ?? "") : ui.choiceOpen }),
2296
+ /* @__PURE__ */ jsx18("p", { className: "pt-choice__question", children: text(choice.question, lang) }),
2297
+ choice.why && /* @__PURE__ */ jsx18("p", { className: "pt-choice__why", children: text(choice.why, lang) }),
2298
+ /* @__PURE__ */ jsx18("div", { className: "pt-panel-row pt-choice__options", children: choice.options.map((option) => /* @__PURE__ */ jsx18(
2237
2299
  FilterChip,
2238
2300
  {
2239
2301
  label: text(option.label, lang),
@@ -2242,8 +2304,8 @@ function ChoiceCard({
2242
2304
  },
2243
2305
  option.id
2244
2306
  )) }),
2245
- answered?.detail && /* @__PURE__ */ jsx17("p", { className: "pt-choice__detail", children: text(answered.detail, lang) }),
2246
- answered && /* @__PURE__ */ jsx17(
2307
+ answered?.detail && /* @__PURE__ */ jsx18("p", { className: "pt-choice__detail", children: text(answered.detail, lang) }),
2308
+ answered && /* @__PURE__ */ jsx18(
2247
2309
  "button",
2248
2310
  {
2249
2311
  type: "button",
@@ -2262,10 +2324,10 @@ function Choices({
2262
2324
  onDecide
2263
2325
  }) {
2264
2326
  const choices = analysis.choices?.[section] ?? [];
2265
- return /* @__PURE__ */ jsxs15("section", { children: [
2266
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.choicesTitle }),
2267
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.choicesIntro }),
2268
- choices.length === 0 ? /* @__PURE__ */ jsx17("p", { className: "pt-analysis__empty", children: ui.choicesNone }) : /* @__PURE__ */ jsx17("div", { className: "pt-choice-grid", children: choices.map((choice) => /* @__PURE__ */ jsx17(
2327
+ return /* @__PURE__ */ jsxs16("section", { children: [
2328
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.choicesTitle }),
2329
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.choicesIntro }),
2330
+ choices.length === 0 ? /* @__PURE__ */ jsx18("p", { className: "pt-analysis__empty", children: ui.choicesNone }) : /* @__PURE__ */ jsx18("div", { className: "pt-choice-grid", children: choices.map((choice) => /* @__PURE__ */ jsx18(
2269
2331
  ChoiceCard,
2270
2332
  {
2271
2333
  section,
@@ -2299,17 +2361,17 @@ function AnalysisView({
2299
2361
  const total = answers.length + open.length;
2300
2362
  const here = analysis.choices?.[section] ?? [];
2301
2363
  const answeredHere = here.filter((choice) => choice.options.some((option) => option.id === choice.value)).length;
2302
- return /* @__PURE__ */ jsxs15("div", { className: "pt-panel-page pt-panel-section pt-analysis", children: [
2303
- /* @__PURE__ */ jsxs15("section", { children: [
2304
- /* @__PURE__ */ jsx17("p", { className: "pt-eyebrow", children: ui.analysisEyebrow }),
2305
- /* @__PURE__ */ jsx17("h2", { className: "pt-h2", children: ui.analysisSections[section] }),
2306
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.analysisSectionHints[section] }),
2307
- onRequestReport && /* @__PURE__ */ jsx17("p", { className: "pt-panel-row", children: /* @__PURE__ */ jsx17("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => onRequestReport(section), children: ui.analysisRedo }) }),
2308
- /* @__PURE__ */ jsx17("nav", { className: "pt-analysis__nav", "aria-label": ui.analysis, children: ANALYSIS_SECTIONS.map((id) => {
2364
+ return /* @__PURE__ */ jsxs16("div", { className: "pt-panel-page pt-panel-section pt-analysis", children: [
2365
+ /* @__PURE__ */ jsxs16("section", { children: [
2366
+ /* @__PURE__ */ jsx18("p", { className: "pt-eyebrow", children: ui.analysisEyebrow }),
2367
+ /* @__PURE__ */ jsx18("h2", { className: "pt-h2", children: ui.analysisSections[section] }),
2368
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.analysisSectionHints[section] }),
2369
+ onRequestReport && /* @__PURE__ */ jsx18("p", { className: "pt-panel-row", children: /* @__PURE__ */ jsx18("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => onRequestReport(section), children: ui.analysisRedo }) }),
2370
+ /* @__PURE__ */ jsx18("nav", { className: "pt-analysis__nav", "aria-label": ui.analysis, children: ANALYSIS_SECTIONS.map((id) => {
2309
2371
  const count = (analysis.choices?.[id] ?? []).filter(
2310
2372
  (choice) => !choice.options.some((option) => option.id === choice.value)
2311
2373
  ).length;
2312
- return /* @__PURE__ */ jsxs15(
2374
+ return /* @__PURE__ */ jsxs16(
2313
2375
  "button",
2314
2376
  {
2315
2377
  type: "button",
@@ -2318,110 +2380,110 @@ function AnalysisView({
2318
2380
  onClick: () => setSection(id),
2319
2381
  children: [
2320
2382
  ui.analysisSections[id],
2321
- count > 0 && /* @__PURE__ */ jsx17("span", { className: "pt-analysis__open", "aria-hidden": "true", children: count })
2383
+ count > 0 && /* @__PURE__ */ jsx18("span", { className: "pt-analysis__open", "aria-hidden": "true", children: count })
2322
2384
  ]
2323
2385
  },
2324
2386
  id
2325
2387
  );
2326
2388
  }) }),
2327
- here.length > 0 && /* @__PURE__ */ jsxs15("p", { className: "pt-analysis__stage", children: [
2389
+ here.length > 0 && /* @__PURE__ */ jsxs16("p", { className: "pt-analysis__stage", children: [
2328
2390
  ui.analysisAnswered(answeredHere, here.length),
2329
- answeredHere === here.length && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2391
+ answeredHere === here.length && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2330
2392
  " \xB7 ",
2331
2393
  ui.analysisAllDecided
2332
2394
  ] })
2333
2395
  ] })
2334
2396
  ] }),
2335
- section === "board" && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2336
- /* @__PURE__ */ jsxs15("section", { children: [
2337
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.boardFactsTitle }),
2338
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.boardFactsIntro }),
2339
- /* @__PURE__ */ jsx17("div", { className: "pt-fact-grid", children: [
2397
+ section === "board" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2398
+ /* @__PURE__ */ jsxs16("section", { children: [
2399
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.boardFactsTitle }),
2400
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.boardFactsIntro }),
2401
+ /* @__PURE__ */ jsx18("div", { className: "pt-fact-grid", children: [
2340
2402
  [ui.factOpen, String(facts.open)],
2341
2403
  [ui.factWaiting, String(facts.waitingOnOwner)],
2342
2404
  [ui.factOrders, String(facts.orders)],
2343
2405
  [ui.factHighRisk, String(facts.highRisk)]
2344
- ].map(([label, value]) => /* @__PURE__ */ jsxs15("article", { className: "pt-fact", children: [
2345
- /* @__PURE__ */ jsx17("p", { className: "pt-fact__label", children: label }),
2346
- /* @__PURE__ */ jsx17("p", { className: "pt-fact__value", children: value })
2406
+ ].map(([label, value]) => /* @__PURE__ */ jsxs16("article", { className: "pt-fact", children: [
2407
+ /* @__PURE__ */ jsx18("p", { className: "pt-fact__label", children: label }),
2408
+ /* @__PURE__ */ jsx18("p", { className: "pt-fact__value", children: value })
2347
2409
  ] }, label)) }),
2348
- /* @__PURE__ */ jsx17("h4", { className: "pt-analysis__minor", children: ui.factColumnsTitle }),
2349
- /* @__PURE__ */ jsx17("ul", { className: "pt-analysis__list", children: facts.byColumn.map((column) => /* @__PURE__ */ jsxs15("li", { className: "pt-analysis__goal", children: [
2350
- /* @__PURE__ */ jsx17("span", { children: t(column.title) }),
2351
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: column.count })
2410
+ /* @__PURE__ */ jsx18("h4", { className: "pt-analysis__minor", children: ui.factColumnsTitle }),
2411
+ /* @__PURE__ */ jsx18("ul", { className: "pt-analysis__list", children: facts.byColumn.map((column) => /* @__PURE__ */ jsxs16("li", { className: "pt-analysis__goal", children: [
2412
+ /* @__PURE__ */ jsx18("span", { children: t(column.title) }),
2413
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: column.count })
2352
2414
  ] }, column.id)) }),
2353
- facts.oldestOpen && facts.oldestOpenDays !== null && /* @__PURE__ */ jsxs15("p", { className: "pt-analysis__stage", children: [
2415
+ facts.oldestOpen && facts.oldestOpenDays !== null && /* @__PURE__ */ jsxs16("p", { className: "pt-analysis__stage", children: [
2354
2416
  ui.factOldest,
2355
2417
  ": ",
2356
- /* @__PURE__ */ jsx17("strong", { children: ui.factDays(facts.oldestOpenDays) }),
2418
+ /* @__PURE__ */ jsx18("strong", { children: ui.factDays(facts.oldestOpenDays) }),
2357
2419
  " \xB7 ",
2358
2420
  t(facts.oldestOpen.title)
2359
2421
  ] })
2360
2422
  ] }),
2361
- /* @__PURE__ */ jsxs15("section", { children: [
2362
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.factClaimedTitle }),
2363
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.factClaimedIntro }),
2364
- facts.claimed.length === 0 ? /* @__PURE__ */ jsx17("p", { className: "pt-analysis__empty", children: ui.factClaimedNone }) : /* @__PURE__ */ jsx17("ul", { className: "pt-analysis__list", children: facts.claimed.map((card) => /* @__PURE__ */ jsxs15("li", { className: "pt-analysis__goal", children: [
2365
- /* @__PURE__ */ jsx17("button", { type: "button", className: "pt-analysis__link", onClick: () => onOpenCard?.(card.id), children: t(card.title) || ui.untitled }),
2366
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: ui.neverStarted })
2423
+ /* @__PURE__ */ jsxs16("section", { children: [
2424
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.factClaimedTitle }),
2425
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.factClaimedIntro }),
2426
+ facts.claimed.length === 0 ? /* @__PURE__ */ jsx18("p", { className: "pt-analysis__empty", children: ui.factClaimedNone }) : /* @__PURE__ */ jsx18("ul", { className: "pt-analysis__list", children: facts.claimed.map((card) => /* @__PURE__ */ jsxs16("li", { className: "pt-analysis__goal", children: [
2427
+ /* @__PURE__ */ jsx18("button", { type: "button", className: "pt-analysis__link", onClick: () => onOpenCard?.(card.id), children: t(card.title) || ui.untitled }),
2428
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: ui.neverStarted })
2367
2429
  ] }, card.id)) })
2368
2430
  ] })
2369
2431
  ] }),
2370
- section === "project" && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2371
- /* @__PURE__ */ jsxs15("section", { children: [
2372
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.briefTitle }),
2373
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: t(analysis.brief) }),
2374
- /* @__PURE__ */ jsxs15("p", { className: "pt-analysis__stage", children: [
2432
+ section === "project" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2433
+ /* @__PURE__ */ jsxs16("section", { children: [
2434
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.briefTitle }),
2435
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: t(analysis.brief) }),
2436
+ /* @__PURE__ */ jsxs16("p", { className: "pt-analysis__stage", children: [
2375
2437
  ui.stage,
2376
2438
  ": ",
2377
- /* @__PURE__ */ jsx17("strong", { children: analysis.stage })
2439
+ /* @__PURE__ */ jsx18("strong", { children: analysis.stage })
2378
2440
  ] })
2379
2441
  ] }),
2380
- /* @__PURE__ */ jsxs15("section", { className: "pt-analysis__split", children: [
2381
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2382
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.goalsTitle }),
2383
- /* @__PURE__ */ jsx17("ul", { className: "pt-analysis__list", children: analysis.goals.map((goal) => /* @__PURE__ */ jsxs15("li", { className: `pt-analysis__goal is-${goal.weight}`, children: [
2384
- /* @__PURE__ */ jsx17("span", { children: t(goal.label) }),
2385
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: ui.weights[goal.weight] })
2442
+ /* @__PURE__ */ jsxs16("section", { className: "pt-analysis__split", children: [
2443
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2444
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.goalsTitle }),
2445
+ /* @__PURE__ */ jsx18("ul", { className: "pt-analysis__list", children: analysis.goals.map((goal) => /* @__PURE__ */ jsxs16("li", { className: `pt-analysis__goal is-${goal.weight}`, children: [
2446
+ /* @__PURE__ */ jsx18("span", { children: t(goal.label) }),
2447
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: ui.weights[goal.weight] })
2386
2448
  ] }, goal.id)) })
2387
2449
  ] }),
2388
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2389
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.constraintsTitle }),
2390
- /* @__PURE__ */ jsx17("ul", { className: "pt-analysis__list", children: analysis.constraints.map((constraint) => /* @__PURE__ */ jsxs15("li", { className: `pt-analysis__goal${constraint.on ? "" : " is-off"}`, children: [
2391
- /* @__PURE__ */ jsx17("span", { children: t(constraint.label) }),
2392
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: constraint.on ? ui.constraintOn : ui.constraintOff })
2450
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2451
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.constraintsTitle }),
2452
+ /* @__PURE__ */ jsx18("ul", { className: "pt-analysis__list", children: analysis.constraints.map((constraint) => /* @__PURE__ */ jsxs16("li", { className: `pt-analysis__goal${constraint.on ? "" : " is-off"}`, children: [
2453
+ /* @__PURE__ */ jsx18("span", { children: t(constraint.label) }),
2454
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: constraint.on ? ui.constraintOn : ui.constraintOff })
2393
2455
  ] }, constraint.id)) })
2394
2456
  ] })
2395
2457
  ] }),
2396
- /* @__PURE__ */ jsxs15("section", { children: [
2397
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.metricsTitle }),
2398
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.metricsIntro }),
2399
- /* @__PURE__ */ jsx17("div", { className: "pt-metric-grid", children: analysis.metrics.map((metric) => /* @__PURE__ */ jsx17(MetricTile, { metric, lang, ui }, metric.id)) })
2458
+ /* @__PURE__ */ jsxs16("section", { children: [
2459
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.metricsTitle }),
2460
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.metricsIntro }),
2461
+ /* @__PURE__ */ jsx18("div", { className: "pt-metric-grid", children: analysis.metrics.map((metric) => /* @__PURE__ */ jsx18(MetricTile, { metric, lang, ui }, metric.id)) })
2400
2462
  ] })
2401
2463
  ] }),
2402
- section === "strategy" && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2403
- /* @__PURE__ */ jsxs15("section", { children: [
2404
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.strategiesTitle }),
2405
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: analysis.chosen ? ui.strategyChosenHint : ui.strategyOpenHint }),
2406
- /* @__PURE__ */ jsx17("div", { className: "pt-strategy-grid", children: analysis.strategies.map((strategy) => {
2464
+ section === "strategy" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2465
+ /* @__PURE__ */ jsxs16("section", { children: [
2466
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.strategiesTitle }),
2467
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: analysis.chosen ? ui.strategyChosenHint : ui.strategyOpenHint }),
2468
+ /* @__PURE__ */ jsx18("div", { className: "pt-strategy-grid", children: analysis.strategies.map((strategy) => {
2407
2469
  const chosen = analysis.chosen === strategy.id;
2408
- return /* @__PURE__ */ jsxs15("article", { className: `pt-strategy pt-hud${chosen ? " is-chosen" : ""}`, children: [
2409
- /* @__PURE__ */ jsx17("h4", { className: "pt-strategy__title", children: t(strategy.title) }),
2410
- /* @__PURE__ */ jsx17("p", { className: "pt-panel-text", children: t(strategy.thesis) }),
2411
- /* @__PURE__ */ jsx17("dl", { className: "pt-strategy__meters", children: [
2470
+ return /* @__PURE__ */ jsxs16("article", { className: `pt-strategy pt-hud${chosen ? " is-chosen" : ""}`, children: [
2471
+ /* @__PURE__ */ jsx18("h4", { className: "pt-strategy__title", children: t(strategy.title) }),
2472
+ /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: t(strategy.thesis) }),
2473
+ /* @__PURE__ */ jsx18("dl", { className: "pt-strategy__meters", children: [
2412
2474
  [ui.effort, strategy.effort],
2413
2475
  [ui.riskShort, strategy.risk],
2414
2476
  [ui.upside, strategy.upside]
2415
- ].map(([label, value]) => /* @__PURE__ */ jsxs15("div", { children: [
2416
- /* @__PURE__ */ jsx17("dt", { children: label }),
2417
- /* @__PURE__ */ jsxs15("dd", { children: [
2418
- /* @__PURE__ */ jsx17("span", { className: "pt-strategy__track", children: /* @__PURE__ */ jsx17("span", { className: "pt-strategy__fill", style: { width: `${value * 10}%` } }) }),
2419
- /* @__PURE__ */ jsx17("b", { children: value })
2477
+ ].map(([label, value]) => /* @__PURE__ */ jsxs16("div", { children: [
2478
+ /* @__PURE__ */ jsx18("dt", { children: label }),
2479
+ /* @__PURE__ */ jsxs16("dd", { children: [
2480
+ /* @__PURE__ */ jsx18("span", { className: "pt-strategy__track", children: /* @__PURE__ */ jsx18("span", { className: "pt-strategy__fill", style: { width: `${value * 10}%` } }) }),
2481
+ /* @__PURE__ */ jsx18("b", { children: value })
2420
2482
  ] })
2421
2483
  ] }, label)) }),
2422
- /* @__PURE__ */ jsx17("p", { className: "pt-strategy__horizon", children: t(strategy.horizon) }),
2423
- /* @__PURE__ */ jsx17("ul", { className: "pt-cap__list", children: strategy.moves.map((move) => /* @__PURE__ */ jsx17("li", { children: t(move) }, t(move))) }),
2424
- /* @__PURE__ */ jsx17(
2484
+ /* @__PURE__ */ jsx18("p", { className: "pt-strategy__horizon", children: t(strategy.horizon) }),
2485
+ /* @__PURE__ */ jsx18("ul", { className: "pt-cap__list", children: strategy.moves.map((move) => /* @__PURE__ */ jsx18("li", { children: t(move) }, t(move))) }),
2486
+ /* @__PURE__ */ jsx18(
2425
2487
  FilterChip,
2426
2488
  {
2427
2489
  label: chosen ? ui.strategyChosen : ui.strategyChoose,
@@ -2432,19 +2494,19 @@ function AnalysisView({
2432
2494
  ] }, strategy.id);
2433
2495
  }) })
2434
2496
  ] }),
2435
- /* @__PURE__ */ jsxs15("section", { children: [
2436
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.suggestionsTitle }),
2437
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.suggestionsIntro }),
2438
- /* @__PURE__ */ jsx17("ul", { className: "pt-analysis__suggestions", children: analysis.suggestions.map((suggestion) => /* @__PURE__ */ jsxs15("li", { className: `pt-suggestion pt-hud is-${suggestion.severity}`, children: [
2439
- /* @__PURE__ */ jsxs15("p", { className: "pt-suggestion__meta", children: [
2497
+ /* @__PURE__ */ jsxs16("section", { children: [
2498
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.suggestionsTitle }),
2499
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.suggestionsIntro }),
2500
+ /* @__PURE__ */ jsx18("ul", { className: "pt-analysis__suggestions", children: analysis.suggestions.map((suggestion) => /* @__PURE__ */ jsxs16("li", { className: `pt-suggestion pt-hud is-${suggestion.severity}`, children: [
2501
+ /* @__PURE__ */ jsxs16("p", { className: "pt-suggestion__meta", children: [
2440
2502
  suggestion.area,
2441
2503
  " \xB7 ",
2442
2504
  ui.severities[suggestion.severity],
2443
2505
  " \xB7 ",
2444
2506
  suggestion.date
2445
2507
  ] }),
2446
- /* @__PURE__ */ jsx17("p", { className: "pt-panel-text", children: t(suggestion.text) }),
2447
- /* @__PURE__ */ jsx17("div", { className: "pt-panel-row", children: SUGGESTION_STATUSES.map((status) => /* @__PURE__ */ jsx17(
2508
+ /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: t(suggestion.text) }),
2509
+ /* @__PURE__ */ jsx18("div", { className: "pt-panel-row", children: SUGGESTION_STATUSES.map((status) => /* @__PURE__ */ jsx18(
2448
2510
  FilterChip,
2449
2511
  {
2450
2512
  label: ui.suggestionStatuses[status],
@@ -2456,67 +2518,67 @@ function AnalysisView({
2456
2518
  ] }, suggestion.id)) })
2457
2519
  ] })
2458
2520
  ] }),
2459
- section === "market" && /* @__PURE__ */ jsx17("section", { children: analysis.market ? /* @__PURE__ */ jsxs15(Fragment3, { children: [
2460
- /* @__PURE__ */ jsxs15("div", { className: "pt-analysis__split", children: [
2461
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2462
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.audienceTitle }),
2463
- /* @__PURE__ */ jsx17("p", { className: "pt-panel-text", children: t(analysis.market.audience) })
2521
+ section === "market" && /* @__PURE__ */ jsx18("section", { children: analysis.market ? /* @__PURE__ */ jsxs16(Fragment4, { children: [
2522
+ /* @__PURE__ */ jsxs16("div", { className: "pt-analysis__split", children: [
2523
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2524
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.audienceTitle }),
2525
+ /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: t(analysis.market.audience) })
2464
2526
  ] }),
2465
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2466
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.positioningTitle }),
2467
- /* @__PURE__ */ jsx17("p", { className: "pt-panel-text", children: t(analysis.market.positioning) })
2527
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2528
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.positioningTitle }),
2529
+ /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: t(analysis.market.positioning) })
2468
2530
  ] })
2469
2531
  ] }),
2470
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.competitorsTitle }),
2471
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.marketIntro }),
2472
- /* @__PURE__ */ jsx17("div", { className: "pt-rival-grid", children: analysis.market.competitors.map((rival) => /* @__PURE__ */ jsxs15("article", { className: "pt-rival pt-hud", children: [
2473
- /* @__PURE__ */ jsx17("h4", { className: "pt-rival__name", children: rival.name }),
2474
- /* @__PURE__ */ jsxs15("p", { className: "pt-rival__line", children: [
2475
- /* @__PURE__ */ jsx17("span", { className: "pt-rival__tag", children: ui.competitorStrength }),
2532
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.competitorsTitle }),
2533
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.marketIntro }),
2534
+ /* @__PURE__ */ jsx18("div", { className: "pt-rival-grid", children: analysis.market.competitors.map((rival) => /* @__PURE__ */ jsxs16("article", { className: "pt-rival pt-hud", children: [
2535
+ /* @__PURE__ */ jsx18("h4", { className: "pt-rival__name", children: rival.name }),
2536
+ /* @__PURE__ */ jsxs16("p", { className: "pt-rival__line", children: [
2537
+ /* @__PURE__ */ jsx18("span", { className: "pt-rival__tag", children: ui.competitorStrength }),
2476
2538
  t(rival.strength)
2477
2539
  ] }),
2478
- /* @__PURE__ */ jsxs15("p", { className: "pt-rival__line is-gap", children: [
2479
- /* @__PURE__ */ jsx17("span", { className: "pt-rival__tag", children: ui.competitorGap }),
2540
+ /* @__PURE__ */ jsxs16("p", { className: "pt-rival__line is-gap", children: [
2541
+ /* @__PURE__ */ jsx18("span", { className: "pt-rival__tag", children: ui.competitorGap }),
2480
2542
  t(rival.gap)
2481
2543
  ] })
2482
2544
  ] }, rival.id)) }),
2483
- analysis.market.pricing && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2484
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.pricingTitle }),
2485
- /* @__PURE__ */ jsx17("p", { className: "pt-panel-text", children: t(analysis.market.pricing) })
2545
+ analysis.market.pricing && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2546
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.pricingTitle }),
2547
+ /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: t(analysis.market.pricing) })
2486
2548
  ] }),
2487
- analysis.market.notes && analysis.market.notes.length > 0 && /* @__PURE__ */ jsxs15(Fragment3, { children: [
2488
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.marketNotesTitle }),
2489
- /* @__PURE__ */ jsx17("ul", { className: "pt-cap__list", children: analysis.market.notes.map((note) => /* @__PURE__ */ jsx17("li", { children: t(note) }, t(note))) })
2549
+ analysis.market.notes && analysis.market.notes.length > 0 && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2550
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title pt-analysis__minor", children: ui.marketNotesTitle }),
2551
+ /* @__PURE__ */ jsx18("ul", { className: "pt-cap__list", children: analysis.market.notes.map((note) => /* @__PURE__ */ jsx18("li", { children: t(note) }, t(note))) })
2490
2552
  ] })
2491
- ] }) : /* @__PURE__ */ jsx17("p", { className: "pt-analysis__empty", children: ui.marketEmpty }) }),
2492
- /* @__PURE__ */ jsx17(Choices, { section, analysis, lang, ui, onDecide }),
2493
- total > 0 && /* @__PURE__ */ jsxs15("section", { className: "pt-analysis__split", children: [
2494
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2495
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.claudeReadsTitle }),
2496
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.claudeReadsIntro }),
2497
- /* @__PURE__ */ jsxs15("ul", { className: "pt-analysis__list", children: [
2498
- answers.map(({ section: from, choice, option }) => /* @__PURE__ */ jsxs15("li", { className: "pt-analysis__goal is-primary", children: [
2499
- /* @__PURE__ */ jsxs15("span", { children: [
2500
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__from", children: ui.analysisSections[from] }),
2553
+ ] }) : /* @__PURE__ */ jsx18("p", { className: "pt-analysis__empty", children: ui.marketEmpty }) }),
2554
+ /* @__PURE__ */ jsx18(Choices, { section, analysis, lang, ui, onDecide }),
2555
+ total > 0 && /* @__PURE__ */ jsxs16("section", { className: "pt-analysis__split", children: [
2556
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2557
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.claudeReadsTitle }),
2558
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.claudeReadsIntro }),
2559
+ /* @__PURE__ */ jsxs16("ul", { className: "pt-analysis__list", children: [
2560
+ answers.map(({ section: from, choice, option }) => /* @__PURE__ */ jsxs16("li", { className: "pt-analysis__goal is-primary", children: [
2561
+ /* @__PURE__ */ jsxs16("span", { children: [
2562
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__from", children: ui.analysisSections[from] }),
2501
2563
  t(choice.question)
2502
2564
  ] }),
2503
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: t(option.label) })
2565
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: t(option.label) })
2504
2566
  ] }, choice.id)),
2505
- answers.length === 0 && /* @__PURE__ */ jsx17("li", { className: "pt-analysis__goal is-off", children: ui.choicesNone })
2567
+ answers.length === 0 && /* @__PURE__ */ jsx18("li", { className: "pt-analysis__goal is-off", children: ui.choicesNone })
2506
2568
  ] })
2507
2569
  ] }),
2508
- /* @__PURE__ */ jsxs15("div", { className: "pt-cap pt-hud", children: [
2509
- /* @__PURE__ */ jsx17("h3", { className: "pt-cap__title", children: ui.claudeOpenTitle }),
2510
- /* @__PURE__ */ jsx17("p", { className: "pt-sub", children: ui.claudeOpenIntro }),
2511
- /* @__PURE__ */ jsxs15("ul", { className: "pt-analysis__list", children: [
2512
- open.map(({ section: from, choice }) => /* @__PURE__ */ jsxs15("li", { className: "pt-analysis__goal", children: [
2513
- /* @__PURE__ */ jsxs15("button", { type: "button", className: "pt-analysis__link", onClick: () => setSection(from), children: [
2514
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__from", children: ui.analysisSections[from] }),
2570
+ /* @__PURE__ */ jsxs16("div", { className: "pt-cap pt-hud", children: [
2571
+ /* @__PURE__ */ jsx18("h3", { className: "pt-cap__title", children: ui.claudeOpenTitle }),
2572
+ /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.claudeOpenIntro }),
2573
+ /* @__PURE__ */ jsxs16("ul", { className: "pt-analysis__list", children: [
2574
+ open.map(({ section: from, choice }) => /* @__PURE__ */ jsxs16("li", { className: "pt-analysis__goal", children: [
2575
+ /* @__PURE__ */ jsxs16("button", { type: "button", className: "pt-analysis__link", onClick: () => setSection(from), children: [
2576
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__from", children: ui.analysisSections[from] }),
2515
2577
  t(choice.question)
2516
2578
  ] }),
2517
- /* @__PURE__ */ jsx17("span", { className: "pt-analysis__weight", children: ui.choiceOpen })
2579
+ /* @__PURE__ */ jsx18("span", { className: "pt-analysis__weight", children: ui.choiceOpen })
2518
2580
  ] }, choice.id)),
2519
- open.length === 0 && /* @__PURE__ */ jsx17("li", { className: "pt-analysis__goal is-off", children: ui.analysisAllDecided })
2581
+ open.length === 0 && /* @__PURE__ */ jsx18("li", { className: "pt-analysis__goal is-off", children: ui.analysisAllDecided })
2520
2582
  ] })
2521
2583
  ] })
2522
2584
  ] })
@@ -2567,39 +2629,39 @@ function ageInWords(seconds, lang) {
2567
2629
  }
2568
2630
 
2569
2631
  // src/panel/MarketplaceView.tsx
2570
- import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs16 } from "react/jsx-runtime";
2632
+ import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
2571
2633
  function ToolRow({
2572
2634
  tool,
2573
2635
  lang,
2574
2636
  ui,
2575
2637
  onInstall
2576
2638
  }) {
2577
- return /* @__PURE__ */ jsxs16("article", { className: `pt-tool${tool.state ? ` is-${tool.state}` : " is-command"}`, children: [
2578
- /* @__PURE__ */ jsxs16("div", { className: "pt-tool__head", children: [
2579
- /* @__PURE__ */ jsx18("h3", { className: "pt-tool__name", children: tool.name }),
2580
- /* @__PURE__ */ jsx18("span", { className: "pt-tool__state", children: tool.state ? ui.installStates[tool.state] : ui.toolCommandOnly })
2639
+ return /* @__PURE__ */ jsxs17("article", { className: `pt-tool${tool.state ? ` is-${tool.state}` : " is-command"}`, children: [
2640
+ /* @__PURE__ */ jsxs17("div", { className: "pt-tool__head", children: [
2641
+ /* @__PURE__ */ jsx19("h3", { className: "pt-tool__name", children: tool.name }),
2642
+ /* @__PURE__ */ jsx19("span", { className: "pt-tool__state", children: tool.state ? ui.installStates[tool.state] : ui.toolCommandOnly })
2581
2643
  ] }),
2582
- tool.summary && /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: tool.summary }),
2583
- /* @__PURE__ */ jsxs16("p", { className: "pt-tool__meta", children: [
2584
- /* @__PURE__ */ jsx18("span", { className: "pt-tool__id", children: tool.id }),
2585
- tool.claudePlugin && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2644
+ tool.summary && /* @__PURE__ */ jsx19("p", { className: "pt-panel-text", children: tool.summary }),
2645
+ /* @__PURE__ */ jsxs17("p", { className: "pt-tool__meta", children: [
2646
+ /* @__PURE__ */ jsx19("span", { className: "pt-tool__id", children: tool.id }),
2647
+ tool.claudePlugin && /* @__PURE__ */ jsxs17(Fragment5, { children: [
2586
2648
  " \xB7 ",
2587
- tool.version ? /* @__PURE__ */ jsxs16("span", { className: "pt-tool__version", children: [
2649
+ tool.version ? /* @__PURE__ */ jsxs17("span", { className: "pt-tool__version", children: [
2588
2650
  "v",
2589
2651
  tool.version
2590
2652
  ] }) : (
2591
2653
  // Never a version we made up. A blank here is the plugin's own
2592
2654
  // manifest failing to answer, and it says so on hover.
2593
- /* @__PURE__ */ jsx18("span", { className: "pt-tool__version is-unknown", title: tool.versionError ?? void 0, children: ui.versionUnknown })
2655
+ /* @__PURE__ */ jsx19("span", { className: "pt-tool__version is-unknown", title: tool.versionError ?? void 0, children: ui.versionUnknown })
2594
2656
  )
2595
2657
  ] }),
2596
- tool.repo && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2658
+ tool.repo && /* @__PURE__ */ jsxs17(Fragment5, { children: [
2597
2659
  " \xB7 ",
2598
- /* @__PURE__ */ jsx18("a", { className: "pt-tool__repo", href: `https://github.com/${tool.repo}`, target: "_blank", rel: "noreferrer", children: tool.repo })
2660
+ /* @__PURE__ */ jsx19("a", { className: "pt-tool__repo", href: `https://github.com/${tool.repo}`, target: "_blank", rel: "noreferrer", children: tool.repo })
2599
2661
  ] })
2600
2662
  ] }),
2601
- tool.tags.length > 0 && /* @__PURE__ */ jsx18("p", { className: "pt-tool__tags", children: tool.tags.map((tag) => /* @__PURE__ */ jsx18("span", { className: "pt-tool__tag", children: tag }, tag)) }),
2602
- !tool.claudePlugin && tool.standaloneCommand && /* @__PURE__ */ jsx18(
2663
+ tool.tags.length > 0 && /* @__PURE__ */ jsx19("p", { className: "pt-tool__tags", children: tool.tags.map((tag) => /* @__PURE__ */ jsx19("span", { className: "pt-tool__tag", children: tag }, tag)) }),
2664
+ !tool.claudePlugin && tool.standaloneCommand && /* @__PURE__ */ jsx19(
2603
2665
  CopyBlock,
2604
2666
  {
2605
2667
  text: tool.standaloneCommand,
@@ -2607,11 +2669,11 @@ function ToolRow({
2607
2669
  labels: { copy: ui.copy, copied: ui.copied, selected: ui.copySelected }
2608
2670
  }
2609
2671
  ),
2610
- /* @__PURE__ */ jsxs16("div", { className: "pt-panel-row pt-tool__actions", children: [
2611
- /* @__PURE__ */ jsx18("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => onInstall(tool), children: tool.claudePlugin ? ui.install : ui.howToRun }),
2612
- tool.homepage && /* @__PURE__ */ jsx18("a", { className: "pt-btn pt-btn--sm", href: tool.homepage, target: "_blank", rel: "noreferrer", children: ui.learnMore })
2672
+ /* @__PURE__ */ jsxs17("div", { className: "pt-panel-row pt-tool__actions", children: [
2673
+ /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => onInstall(tool), children: tool.claudePlugin ? ui.install : ui.howToRun }),
2674
+ tool.homepage && /* @__PURE__ */ jsx19("a", { className: "pt-btn pt-btn--sm", href: tool.homepage, target: "_blank", rel: "noreferrer", children: ui.learnMore })
2613
2675
  ] }),
2614
- tool.state === "misconfigured" && /* @__PURE__ */ jsx18("p", { className: "pt-warn", children: ui.stateMisconfiguredWhy })
2676
+ tool.state === "misconfigured" && /* @__PURE__ */ jsx19("p", { className: "pt-warn", children: ui.stateMisconfiguredWhy })
2615
2677
  ] });
2616
2678
  }
2617
2679
  function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
@@ -2633,39 +2695,39 @@ function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
2633
2695
  }),
2634
2696
  [tools]
2635
2697
  );
2636
- return /* @__PURE__ */ jsxs16("div", { className: "pt-panel-page pt-panel-section pt-marketplace", children: [
2637
- /* @__PURE__ */ jsxs16("section", { children: [
2638
- /* @__PURE__ */ jsx18("p", { className: "pt-eyebrow", children: report?.marketplace.name ?? ui.marketplaceEyebrow }),
2639
- /* @__PURE__ */ jsx18("h2", { className: "pt-h2", children: ui.marketplaceTitle }),
2640
- /* @__PURE__ */ jsx18("p", { className: "pt-sub", children: ui.marketplaceIntro }),
2641
- /* @__PURE__ */ jsxs16("div", { className: "pt-panel-row pt-marketplace__status", children: [
2642
- onRefresh && /* @__PURE__ */ jsx18("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onRefresh, disabled: loading, children: loading ? ui.refreshing : ui.refresh }),
2643
- report && onRefresh && /* @__PURE__ */ jsx18("span", { className: "pt-marketplace__age", children: ui.readAt(ageInWords(report.ageSeconds, lang)) })
2698
+ return /* @__PURE__ */ jsxs17("div", { className: "pt-panel-page pt-panel-section pt-marketplace", children: [
2699
+ /* @__PURE__ */ jsxs17("section", { children: [
2700
+ /* @__PURE__ */ jsx19("p", { className: "pt-eyebrow", children: report?.marketplace.name ?? ui.marketplaceEyebrow }),
2701
+ /* @__PURE__ */ jsx19("h2", { className: "pt-h2", children: ui.marketplaceTitle }),
2702
+ /* @__PURE__ */ jsx19("p", { className: "pt-sub", children: ui.marketplaceIntro }),
2703
+ /* @__PURE__ */ jsxs17("div", { className: "pt-panel-row pt-marketplace__status", children: [
2704
+ onRefresh && /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onRefresh, disabled: loading, children: loading ? ui.refreshing : ui.refresh }),
2705
+ report && onRefresh && /* @__PURE__ */ jsx19("span", { className: "pt-marketplace__age", children: ui.readAt(ageInWords(report.ageSeconds, lang)) })
2644
2706
  ] }),
2645
- report?.stale && !report.unavailable && /* @__PURE__ */ jsx18("p", { className: "pt-warn", children: ui.catalogueStale(ageInWords(report.ageSeconds, lang)) }),
2646
- report?.unavailable && /* @__PURE__ */ jsx18("p", { className: "pt-warn", children: ui.catalogueUnavailable }),
2647
- failure && /* @__PURE__ */ jsx18("p", { className: "pt-warn", children: ui.catalogueFailed })
2707
+ report?.stale && !report.unavailable && /* @__PURE__ */ jsx19("p", { className: "pt-warn", children: ui.catalogueStale(ageInWords(report.ageSeconds, lang)) }),
2708
+ report?.unavailable && /* @__PURE__ */ jsx19("p", { className: "pt-warn", children: ui.catalogueUnavailable }),
2709
+ failure && /* @__PURE__ */ jsx19("p", { className: "pt-warn", children: ui.catalogueFailed })
2648
2710
  ] }),
2649
- report && /* @__PURE__ */ jsxs16("section", { children: [
2650
- /* @__PURE__ */ jsxs16("p", { className: "pt-marketplace__project", children: [
2711
+ report && /* @__PURE__ */ jsxs17("section", { children: [
2712
+ /* @__PURE__ */ jsxs17("p", { className: "pt-marketplace__project", children: [
2651
2713
  ui.stateFrom(report.project.repo, SETTINGS_PATH),
2652
- report.project.settingsStatus === "absent" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2714
+ report.project.settingsStatus === "absent" && /* @__PURE__ */ jsxs17(Fragment5, { children: [
2653
2715
  " \xB7 ",
2654
2716
  ui.settingsAbsent
2655
2717
  ] }),
2656
- report.project.settingsStatus === "unreadable" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2718
+ report.project.settingsStatus === "unreadable" && /* @__PURE__ */ jsxs17(Fragment5, { children: [
2657
2719
  " \xB7 ",
2658
2720
  ui.settingsUnreadable
2659
2721
  ] }),
2660
- report.project.settingsStatus === "unparseable" && /* @__PURE__ */ jsxs16(Fragment4, { children: [
2722
+ report.project.settingsStatus === "unparseable" && /* @__PURE__ */ jsxs17(Fragment5, { children: [
2661
2723
  " \xB7 ",
2662
2724
  ui.settingsUnparseable
2663
2725
  ] })
2664
2726
  ] }),
2665
- report.project.detail && /* @__PURE__ */ jsx18("p", { className: "pt-marketplace__detail", children: report.project.detail }),
2666
- /* @__PURE__ */ jsxs16("div", { className: "pt-panel-row pt-marketplace__filters", children: [
2667
- /* @__PURE__ */ jsx18(FilterChip, { label: ui.all, count: counts.all, active: filter === "all", onClick: () => setFilter("all") }),
2668
- /* @__PURE__ */ jsx18(
2727
+ report.project.detail && /* @__PURE__ */ jsx19("p", { className: "pt-marketplace__detail", children: report.project.detail }),
2728
+ /* @__PURE__ */ jsxs17("div", { className: "pt-panel-row pt-marketplace__filters", children: [
2729
+ /* @__PURE__ */ jsx19(FilterChip, { label: ui.all, count: counts.all, active: filter === "all", onClick: () => setFilter("all") }),
2730
+ /* @__PURE__ */ jsx19(
2669
2731
  FilterChip,
2670
2732
  {
2671
2733
  label: ui.filterPlugins,
@@ -2674,7 +2736,7 @@ function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
2674
2736
  onClick: () => setFilter("plugins")
2675
2737
  }
2676
2738
  ),
2677
- /* @__PURE__ */ jsx18(
2739
+ /* @__PURE__ */ jsx19(
2678
2740
  FilterChip,
2679
2741
  {
2680
2742
  label: ui.filterActive,
@@ -2683,7 +2745,7 @@ function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
2683
2745
  onClick: () => setFilter("active")
2684
2746
  }
2685
2747
  ),
2686
- /* @__PURE__ */ jsx18(
2748
+ /* @__PURE__ */ jsx19(
2687
2749
  FilterChip,
2688
2750
  {
2689
2751
  label: ui.filterStandalone,
@@ -2693,12 +2755,12 @@ function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
2693
2755
  }
2694
2756
  )
2695
2757
  ] }),
2696
- loading && tools.length === 0 ? /* @__PURE__ */ jsx18("p", { className: "pt-analysis__empty", children: ui.catalogueLoading }) : shown.length === 0 ? /* @__PURE__ */ jsx18("p", { className: "pt-analysis__empty", children: ui.catalogueEmpty }) : /* @__PURE__ */ jsx18("div", { className: "pt-tool-grid", children: shown.map((tool) => /* @__PURE__ */ jsx18(ToolRow, { tool, lang, ui, onInstall: setOpen }, tool.id)) })
2758
+ loading && tools.length === 0 ? /* @__PURE__ */ jsx19("p", { className: "pt-analysis__empty", children: ui.catalogueLoading }) : shown.length === 0 ? /* @__PURE__ */ jsx19("p", { className: "pt-analysis__empty", children: ui.catalogueEmpty }) : /* @__PURE__ */ jsx19("div", { className: "pt-tool-grid", children: shown.map((tool) => /* @__PURE__ */ jsx19(ToolRow, { tool, lang, ui, onInstall: setOpen }, tool.id)) })
2697
2759
  ] }),
2698
- open && /* @__PURE__ */ jsxs16(DetailSheet, { open: true, onClose: () => setOpen(null), ariaLabel: `${ui.installTitle} \u2014 ${open.name}`, children: [
2699
- /* @__PURE__ */ jsx18("p", { className: "pt-eyebrow", children: ui.installTitle }),
2700
- /* @__PURE__ */ jsx18("h2", { className: "pt-h2", children: open.name }),
2701
- /* @__PURE__ */ jsx18(
2760
+ open && /* @__PURE__ */ jsxs17(DetailSheet, { open: true, onClose: () => setOpen(null), ariaLabel: `${ui.installTitle} \u2014 ${open.name}`, children: [
2761
+ /* @__PURE__ */ jsx19("p", { className: "pt-eyebrow", children: ui.installTitle }),
2762
+ /* @__PURE__ */ jsx19("h2", { className: "pt-h2", children: open.name }),
2763
+ /* @__PURE__ */ jsx19(
2702
2764
  InstallSheet,
2703
2765
  {
2704
2766
  tool: open,
@@ -2707,7 +2769,7 @@ function MarketplaceView({ report, loading, failure, lang, ui, onRefresh }) {
2707
2769
  registered: report?.project.marketplaceRegistered ?? false
2708
2770
  }
2709
2771
  ),
2710
- /* @__PURE__ */ jsx18("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => setOpen(null), children: ui.close })
2772
+ /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: () => setOpen(null), children: ui.close })
2711
2773
  ] })
2712
2774
  ] });
2713
2775
  }
@@ -2718,9 +2780,9 @@ function InstallSheet({
2718
2780
  registered
2719
2781
  }) {
2720
2782
  const copy = { copy: ui.copy, copied: ui.copied, selected: ui.copySelected };
2721
- return /* @__PURE__ */ jsxs16(Fragment4, { children: [
2722
- tool.claudePlugin ? /* @__PURE__ */ jsxs16(Fragment4, { children: [
2723
- /* @__PURE__ */ jsx18(DetailSection, { title: ui.installRepoTitle, subtitle: ui.installRepoHint, children: /* @__PURE__ */ jsx18(
2783
+ return /* @__PURE__ */ jsxs17(Fragment5, { children: [
2784
+ tool.claudePlugin ? /* @__PURE__ */ jsxs17(Fragment5, { children: [
2785
+ /* @__PURE__ */ jsx19(DetailSection, { title: ui.installRepoTitle, subtitle: ui.installRepoHint, children: /* @__PURE__ */ jsx19(
2724
2786
  CopyBlock,
2725
2787
  {
2726
2788
  text: repositorySnippet(tool.id, marketplace),
@@ -2729,16 +2791,16 @@ function InstallSheet({
2729
2791
  labels: copy
2730
2792
  }
2731
2793
  ) }),
2732
- /* @__PURE__ */ jsx18(DetailSection, { title: ui.installCliTitle, subtitle: ui.installCliHint, children: /* @__PURE__ */ jsx18(CopyBlock, { text: commandSnippet(tool.id, marketplace), labels: copy }) })
2733
- ] }) : /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: ui.installNoPlugin }),
2734
- tool.standaloneCommand ? /* @__PURE__ */ jsx18(DetailSection, { title: ui.installStandaloneTitle, subtitle: ui.installStandaloneHint, children: /* @__PURE__ */ jsx18(CopyBlock, { text: tool.standaloneCommand, labels: copy }) }) : /* @__PURE__ */ jsx18(DetailSection, { title: ui.installStandaloneTitle, children: /* @__PURE__ */ jsx18("p", { className: "pt-panel-text", children: ui.installNoStandalone }) }),
2735
- /* @__PURE__ */ jsx18("p", { className: "pt-marketplace__source", children: ui.marketplaceSource(marketplace.url) })
2794
+ /* @__PURE__ */ jsx19(DetailSection, { title: ui.installCliTitle, subtitle: ui.installCliHint, children: /* @__PURE__ */ jsx19(CopyBlock, { text: commandSnippet(tool.id, marketplace), labels: copy }) })
2795
+ ] }) : /* @__PURE__ */ jsx19("p", { className: "pt-panel-text", children: ui.installNoPlugin }),
2796
+ tool.standaloneCommand ? /* @__PURE__ */ jsx19(DetailSection, { title: ui.installStandaloneTitle, subtitle: ui.installStandaloneHint, children: /* @__PURE__ */ jsx19(CopyBlock, { text: tool.standaloneCommand, labels: copy }) }) : /* @__PURE__ */ jsx19(DetailSection, { title: ui.installStandaloneTitle, children: /* @__PURE__ */ jsx19("p", { className: "pt-panel-text", children: ui.installNoStandalone }) }),
2797
+ /* @__PURE__ */ jsx19("p", { className: "pt-marketplace__source", children: ui.marketplaceSource(marketplace.url) })
2736
2798
  ] });
2737
2799
  }
2738
2800
 
2739
2801
  // src/panel/CardSheet.tsx
2740
2802
  import { useState as useState9 } from "react";
2741
- import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
2803
+ import { jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
2742
2804
  var LEVEL_LABEL = (ui) => ({
2743
2805
  high: ui.levelHigh,
2744
2806
  medium: ui.levelMedium,
@@ -2765,9 +2827,9 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2765
2827
  });
2766
2828
  setNote("");
2767
2829
  }
2768
- return /* @__PURE__ */ jsxs17(DetailSheet, { open: true, onClose, ariaLabel: ui.cardDetail, children: [
2769
- /* @__PURE__ */ jsxs17(DetailSection, { title: ui.title, children: [
2770
- /* @__PURE__ */ jsx19(
2830
+ return /* @__PURE__ */ jsxs18(DetailSheet, { open: true, onClose, ariaLabel: ui.cardDetail, children: [
2831
+ /* @__PURE__ */ jsxs18(DetailSection, { title: ui.title, children: [
2832
+ /* @__PURE__ */ jsx20(
2771
2833
  "input",
2772
2834
  {
2773
2835
  className: "pt-input",
@@ -2776,9 +2838,9 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2776
2838
  onChange: (event) => patch({ title: writeText(lang, event.target.value) })
2777
2839
  }
2778
2840
  ),
2779
- untranslated(card.title) && /* @__PURE__ */ jsx19("span", { className: "pt-flag", children: ui.untranslatedBadge })
2841
+ untranslated(card.title) && /* @__PURE__ */ jsx20("span", { className: "pt-flag", children: ui.untranslatedBadge })
2780
2842
  ] }),
2781
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.detail, children: /* @__PURE__ */ jsx19(
2843
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.detail, children: /* @__PURE__ */ jsx20(
2782
2844
  "textarea",
2783
2845
  {
2784
2846
  className: "pt-textarea",
@@ -2788,7 +2850,7 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2788
2850
  onChange: (event) => patch({ body: writeText(lang, event.target.value) })
2789
2851
  }
2790
2852
  ) }),
2791
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.areaLabel, children: /* @__PURE__ */ jsx19("div", { className: "pt-panel-row", children: state.areas.map((area) => /* @__PURE__ */ jsx19(
2853
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.areaLabel, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: state.areas.map((area) => /* @__PURE__ */ jsx20(
2792
2854
  FilterChip,
2793
2855
  {
2794
2856
  label: text(area.label, lang),
@@ -2797,7 +2859,7 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2797
2859
  },
2798
2860
  area.id
2799
2861
  )) }) }),
2800
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.priority, children: /* @__PURE__ */ jsx19("div", { className: "pt-panel-row", children: LEVELS.map((level) => /* @__PURE__ */ jsx19(
2862
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.priority, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: LEVELS.map((level) => /* @__PURE__ */ jsx20(
2801
2863
  FilterChip,
2802
2864
  {
2803
2865
  label: levelLabel[level],
@@ -2806,7 +2868,7 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2806
2868
  },
2807
2869
  level
2808
2870
  )) }) }),
2809
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.risk, subtitle: ui.riskHint, children: /* @__PURE__ */ jsx19("div", { className: "pt-panel-row", children: LEVELS.map((level) => /* @__PURE__ */ jsx19(
2871
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.risk, subtitle: ui.riskHint, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: LEVELS.map((level) => /* @__PURE__ */ jsx20(
2810
2872
  FilterChip,
2811
2873
  {
2812
2874
  label: levelLabel[level],
@@ -2815,7 +2877,7 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2815
2877
  },
2816
2878
  level
2817
2879
  )) }) }),
2818
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.dependsOn, children: /* @__PURE__ */ jsx19("div", { className: "pt-panel-row", children: OWNERS.map((owner) => /* @__PURE__ */ jsx19(
2880
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.dependsOn, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: OWNERS.map((owner) => /* @__PURE__ */ jsx20(
2819
2881
  FilterChip,
2820
2882
  {
2821
2883
  label: ownerLabel[owner],
@@ -2824,14 +2886,14 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2824
2886
  },
2825
2887
  owner
2826
2888
  )) }) }),
2827
- /* @__PURE__ */ jsx19(DetailSection, { title: ui.orderTitle, children: /* @__PURE__ */ jsxs17("div", { className: "pt-panel-row", children: [
2828
- /* @__PURE__ */ jsx19(FilterChip, { label: `\u26A1 ${ui.orderOn}`, active: card.order, onClick: () => patch({ order: true }) }),
2829
- /* @__PURE__ */ jsx19(FilterChip, { label: ui.orderOff, active: !card.order, onClick: () => patch({ order: false }) })
2889
+ /* @__PURE__ */ jsx20(DetailSection, { title: ui.orderTitle, children: /* @__PURE__ */ jsxs18("div", { className: "pt-panel-row", children: [
2890
+ /* @__PURE__ */ jsx20(FilterChip, { label: `\u26A1 ${ui.orderOn}`, active: card.order, onClick: () => patch({ order: true }) }),
2891
+ /* @__PURE__ */ jsx20(FilterChip, { label: ui.orderOff, active: !card.order, onClick: () => patch({ order: false }) })
2830
2892
  ] }) }),
2831
- /* @__PURE__ */ jsxs17(DetailSection, { title: ui.intentTitle, subtitle: ui.intentHint, children: [
2832
- /* @__PURE__ */ jsxs17("div", { className: "pt-panel-row", children: [
2833
- /* @__PURE__ */ jsx19(FilterChip, { label: ui.intentNone, active: card.intent === null, onClick: () => patch({ intent: null }) }),
2834
- INTENTS.map((intent) => /* @__PURE__ */ jsx19(
2893
+ /* @__PURE__ */ jsxs18(DetailSection, { title: ui.intentTitle, subtitle: ui.intentHint, children: [
2894
+ /* @__PURE__ */ jsxs18("div", { className: "pt-panel-row", children: [
2895
+ /* @__PURE__ */ jsx20(FilterChip, { label: ui.intentNone, active: card.intent === null, onClick: () => patch({ intent: null }) }),
2896
+ INTENTS.map((intent) => /* @__PURE__ */ jsx20(
2835
2897
  FilterChip,
2836
2898
  {
2837
2899
  label: INTENT_COPY[intent].label[lang],
@@ -2841,12 +2903,12 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2841
2903
  intent
2842
2904
  ))
2843
2905
  ] }),
2844
- card.intent && /* @__PURE__ */ jsx19("p", { className: "pt-panel-text pt-meaning", children: INTENT_COPY[card.intent].meaning[lang] })
2906
+ card.intent && /* @__PURE__ */ jsx20("p", { className: "pt-panel-text pt-meaning", children: INTENT_COPY[card.intent].meaning[lang] })
2845
2907
  ] }),
2846
- /* @__PURE__ */ jsxs17(DetailSection, { title: ui.checklist, children: [
2847
- card.checks.length > 0 && /* @__PURE__ */ jsx19("ul", { className: "pt-checks", children: card.checks.map((check) => /* @__PURE__ */ jsxs17("li", { children: [
2848
- /* @__PURE__ */ jsxs17("label", { children: [
2849
- /* @__PURE__ */ jsx19(
2908
+ /* @__PURE__ */ jsxs18(DetailSection, { title: ui.checklist, children: [
2909
+ card.checks.length > 0 && /* @__PURE__ */ jsx20("ul", { className: "pt-checks", children: card.checks.map((check) => /* @__PURE__ */ jsxs18("li", { children: [
2910
+ /* @__PURE__ */ jsxs18("label", { children: [
2911
+ /* @__PURE__ */ jsx20(
2850
2912
  "input",
2851
2913
  {
2852
2914
  type: "checkbox",
@@ -2858,9 +2920,9 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2858
2920
  })
2859
2921
  }
2860
2922
  ),
2861
- /* @__PURE__ */ jsx19("span", { className: check.done ? "is-done" : void 0, children: text(check.text, lang) })
2923
+ /* @__PURE__ */ jsx20("span", { className: check.done ? "is-done" : void 0, children: text(check.text, lang) })
2862
2924
  ] }),
2863
- /* @__PURE__ */ jsx19(
2925
+ /* @__PURE__ */ jsx20(
2864
2926
  "button",
2865
2927
  {
2866
2928
  type: "button",
@@ -2871,8 +2933,8 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2871
2933
  }
2872
2934
  )
2873
2935
  ] }, check.id)) }),
2874
- /* @__PURE__ */ jsxs17("div", { className: "pt-compose", children: [
2875
- /* @__PURE__ */ jsx19(
2936
+ /* @__PURE__ */ jsxs18("div", { className: "pt-compose", children: [
2937
+ /* @__PURE__ */ jsx20(
2876
2938
  "input",
2877
2939
  {
2878
2940
  className: "pt-input",
@@ -2887,19 +2949,19 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2887
2949
  }
2888
2950
  }
2889
2951
  ),
2890
- /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm pt-btn--primary", onClick: addStep, children: ui.addStep })
2952
+ /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn pt-btn--sm pt-btn--primary", onClick: addStep, children: ui.addStep })
2891
2953
  ] })
2892
2954
  ] }),
2893
- /* @__PURE__ */ jsxs17(DetailSection, { title: ui.notes, children: [
2894
- card.notes.map((entry) => /* @__PURE__ */ jsxs17("div", { className: "pt-note", children: [
2895
- /* @__PURE__ */ jsxs17("p", { className: "pt-note__meta", children: [
2955
+ /* @__PURE__ */ jsxs18(DetailSection, { title: ui.notes, children: [
2956
+ card.notes.map((entry) => /* @__PURE__ */ jsxs18("div", { className: "pt-note", children: [
2957
+ /* @__PURE__ */ jsxs18("p", { className: "pt-note__meta", children: [
2896
2958
  entry.by === "claude" ? "Claude" : ui.ownerYou,
2897
2959
  " \xB7 ",
2898
2960
  entry.date
2899
2961
  ] }),
2900
- /* @__PURE__ */ jsx19("p", { className: "pt-panel-text", children: text(entry.text, lang) })
2962
+ /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: text(entry.text, lang) })
2901
2963
  ] }, entry.id)),
2902
- /* @__PURE__ */ jsx19(
2964
+ /* @__PURE__ */ jsx20(
2903
2965
  "textarea",
2904
2966
  {
2905
2967
  className: "pt-textarea",
@@ -2909,10 +2971,10 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2909
2971
  onChange: (event) => setNote(event.target.value)
2910
2972
  }
2911
2973
  ),
2912
- /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm pt-btn--primary", onClick: addNote, children: ui.leaveNote })
2974
+ /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn pt-btn--sm pt-btn--primary", onClick: addNote, children: ui.leaveNote })
2913
2975
  ] }),
2914
- /* @__PURE__ */ jsxs17(DetailSection, { title: ui.columnTitle, children: [
2915
- /* @__PURE__ */ jsx19("div", { className: "pt-panel-row", children: state.columns.map((column) => /* @__PURE__ */ jsx19(
2976
+ /* @__PURE__ */ jsxs18(DetailSection, { title: ui.columnTitle, children: [
2977
+ /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: state.columns.map((column) => /* @__PURE__ */ jsx20(
2916
2978
  FilterChip,
2917
2979
  {
2918
2980
  label: text(column.title, lang),
@@ -2923,16 +2985,16 @@ function CardSheet({ card, state, lang, ui, onChange, onDelete, onClose }) {
2923
2985
  },
2924
2986
  column.id
2925
2987
  )) }),
2926
- (card.startedAt || card.completedAt) && /* @__PURE__ */ jsxs17("p", { className: "pt-panel-text pt-stamps", children: [
2988
+ (card.startedAt || card.completedAt) && /* @__PURE__ */ jsxs18("p", { className: "pt-panel-text pt-stamps", children: [
2927
2989
  card.startedAt && `${ui.started}: ${card.startedAt}`,
2928
2990
  card.startedAt && card.completedAt && " \xB7 ",
2929
2991
  card.completedAt && `${ui.completed}: ${card.completedAt}`
2930
2992
  ] }),
2931
- claimedWithoutStarting(card) && /* @__PURE__ */ jsx19("p", { className: "pt-warn", children: ui.neverStarted })
2993
+ claimedWithoutStarting(card) && /* @__PURE__ */ jsx20("p", { className: "pt-warn", children: ui.neverStarted })
2932
2994
  ] }),
2933
- /* @__PURE__ */ jsxs17("div", { className: "pt-sheet-actions", children: [
2934
- /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onClose, children: ui.close }),
2935
- /* @__PURE__ */ jsx19("button", { type: "button", className: "pt-btn pt-btn--sm pt-danger", onClick: () => onDelete(card.id), children: ui.deleteCard })
2995
+ /* @__PURE__ */ jsxs18("div", { className: "pt-sheet-actions", children: [
2996
+ /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: onClose, children: ui.close }),
2997
+ /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn pt-btn--sm pt-danger", onClick: () => onDelete(card.id), children: ui.deleteCard })
2936
2998
  ] })
2937
2999
  ] });
2938
3000
  }
@@ -2965,7 +3027,7 @@ function resolveTheme(saved, stored, themes, hasImported, fallback) {
2965
3027
  }
2966
3028
 
2967
3029
  // src/panel/PanelApp.tsx
2968
- import { Fragment as Fragment5, jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
3030
+ import { Fragment as Fragment6, jsx as jsx21, jsxs as jsxs19 } from "react/jsx-runtime";
2969
3031
  var IMPORTED = "imported";
2970
3032
  var WIZARD_KEY = "paneltir:setup-done";
2971
3033
  var THEME_KEY = "paneltir:theme";
@@ -3051,7 +3113,6 @@ function PanelApp({
3051
3113
  );
3052
3114
  const [state, setState] = useState10(initialState);
3053
3115
  const [filter, setFilter] = useState10("all");
3054
- const [showArchived, setShowArchived] = useState10(() => /* @__PURE__ */ new Set());
3055
3116
  const [openCardId, setOpenCardId] = useState10(null);
3056
3117
  const [settingsOpen, setSettingsOpen] = useState10(false);
3057
3118
  const [update, setUpdate] = useState10(null);
@@ -3095,11 +3156,11 @@ function PanelApp({
3095
3156
  status: state_("GH_TOKEN"),
3096
3157
  variable: "GH_TOKEN",
3097
3158
  enables: ui.needTokenEnables,
3098
- fix: /* @__PURE__ */ jsxs18("ol", { children: [
3099
- /* @__PURE__ */ jsx20("li", { children: ui.fixTokenCreate }),
3100
- /* @__PURE__ */ jsx20("li", { children: ui.fixTokenScope }),
3101
- /* @__PURE__ */ jsx20("li", { children: ui.fixTokenPaste }),
3102
- /* @__PURE__ */ jsx20("li", { children: ui.fixTokenRedeploy })
3159
+ fix: /* @__PURE__ */ jsxs19("ol", { children: [
3160
+ /* @__PURE__ */ jsx21("li", { children: ui.fixTokenCreate }),
3161
+ /* @__PURE__ */ jsx21("li", { children: ui.fixTokenScope }),
3162
+ /* @__PURE__ */ jsx21("li", { children: ui.fixTokenPaste }),
3163
+ /* @__PURE__ */ jsx21("li", { children: ui.fixTokenRedeploy })
3103
3164
  ] })
3104
3165
  },
3105
3166
  {
@@ -3108,7 +3169,7 @@ function PanelApp({
3108
3169
  status: state_("PANEL_REPO"),
3109
3170
  variable: "PANEL_REPO",
3110
3171
  enables: ui.needRepoEnables,
3111
- fix: /* @__PURE__ */ jsx20("p", { children: ui.fixRepo })
3172
+ fix: /* @__PURE__ */ jsx21("p", { children: ui.fixRepo })
3112
3173
  },
3113
3174
  // The gate is the only requirement here that is not an environment
3114
3175
  // variable: it is files this project owns, and the only one whose
@@ -3135,12 +3196,12 @@ function PanelApp({
3135
3196
  label: ui.needGate,
3136
3197
  status: gateReading.verdict === "current" ? "ok" : gateReading.verdict === "behind" ? "missing" : "unknown",
3137
3198
  enables: ui.needGateEnables,
3138
- fix: /* @__PURE__ */ jsxs18(Fragment5, { children: [
3139
- /* @__PURE__ */ jsxs18("p", { children: [
3199
+ fix: /* @__PURE__ */ jsxs19(Fragment6, { children: [
3200
+ /* @__PURE__ */ jsxs19("p", { children: [
3140
3201
  ui.fixGate,
3141
3202
  gateReading.copiedFrom ? ` (v${gateReading.copiedFrom} \u2192 v${gateReading.installed})` : ""
3142
3203
  ] }),
3143
- /* @__PURE__ */ jsx20("pre", { className: "pt-copy__pre", children: "npx paneltir doctor" })
3204
+ /* @__PURE__ */ jsx21("pre", { className: "pt-copy__pre", children: "npx paneltir doctor" })
3144
3205
  ] })
3145
3206
  }]
3146
3207
  ];
@@ -3174,32 +3235,24 @@ function PanelApp({
3174
3235
  [filter]
3175
3236
  );
3176
3237
  const visibleCards = useMemo5(() => state.cards.filter(matches), [state.cards, matches]);
3238
+ const archivedCards = useMemo5(
3239
+ () => state.cards.filter((card) => isArchived(card, doneColumns)),
3240
+ [state.cards, doneColumns]
3241
+ );
3242
+ const archivedIds = useMemo5(() => new Set(archivedCards.map((card) => card.id)), [archivedCards]);
3243
+ const hasRecord = Boolean(showHistory) || archivedCards.length > 0;
3244
+ const openChoices = useMemo5(
3245
+ () => state.analysis ? undecided(state.analysis).length : 0,
3246
+ [state.analysis]
3247
+ );
3177
3248
  const boardColumns = useMemo5(
3178
- () => state.columns.map((column) => {
3179
- const mine = visibleCards.filter((card) => card.column === column.id);
3180
- const archived = mine.filter((card) => isArchived(card, doneColumns));
3181
- const showing = showArchived.has(column.id) ? mine : mine.filter((card) => !archived.includes(card));
3182
- return {
3183
- id: column.id,
3184
- title: t(column.title),
3185
- hint: column.hint ? t(column.hint) : void 0,
3186
- cards: showing,
3187
- footer: archived.length ? /* @__PURE__ */ jsx20(
3188
- "button",
3189
- {
3190
- type: "button",
3191
- onClick: () => setShowArchived((current) => {
3192
- const next = new Set(current);
3193
- if (next.has(column.id)) next.delete(column.id);
3194
- else next.add(column.id);
3195
- return next;
3196
- }),
3197
- children: showArchived.has(column.id) ? ui.archivedHide : `${archived.length} ${archived.length === 1 ? ui.archivedOne : ui.archivedMany}`
3198
- }
3199
- ) : void 0
3200
- };
3201
- }),
3202
- [state.columns, visibleCards, doneColumns, showArchived, t, ui]
3249
+ () => state.columns.map((column) => ({
3250
+ id: column.id,
3251
+ title: t(column.title),
3252
+ hint: column.hint ? t(column.hint) : void 0,
3253
+ cards: visibleCards.filter((card) => card.column === column.id && !archivedIds.has(card.id))
3254
+ })),
3255
+ [state.columns, visibleCards, archivedIds, t]
3203
3256
  );
3204
3257
  const notifications = useMemo5(() => {
3205
3258
  const items = [];
@@ -3569,21 +3622,21 @@ function PanelApp({
3569
3622
  state.updatedAt,
3570
3623
  save.status === "saved" ? ui.savedAt(save.at) : dirty ? ui.unsaved : ""
3571
3624
  ].filter(Boolean).join(" \xB7 ");
3572
- return /* @__PURE__ */ jsxs18(DashboardThemeProvider, { tokens: theme, form, className, children: [
3625
+ return /* @__PURE__ */ jsxs19(DashboardThemeProvider, { tokens: theme, form, className, children: [
3573
3626
  typeof decoration === "function" ? decoration(themeName) : decoration,
3574
- /* @__PURE__ */ jsx20(
3627
+ /* @__PURE__ */ jsx21(
3575
3628
  DashboardHeader,
3576
3629
  {
3577
3630
  wordmark: (
3578
3631
  /* A board belongs to a project, so its name is what goes here. A
3579
3632
  caller with a mark of its own passes `brand`; drawing one here
3580
3633
  would be the kit deciding what somebody else's panel is called. */
3581
- brand ?? /* @__PURE__ */ jsx20("span", { className: "pt-panel-brand", children: state.project })
3634
+ brand ?? /* @__PURE__ */ jsx21("span", { className: "pt-panel-brand", children: state.project })
3582
3635
  ),
3583
3636
  status,
3584
- controls: /* @__PURE__ */ jsxs18(Fragment5, { children: [
3585
- (initialState.analysis || hasMarketplace || showHistory) && /* @__PURE__ */ jsxs18("span", { className: "pt-views", children: [
3586
- /* @__PURE__ */ jsx20(
3637
+ controls: /* @__PURE__ */ jsxs19(Fragment6, { children: [
3638
+ (initialState.analysis || hasMarketplace || hasRecord) && /* @__PURE__ */ jsxs19("span", { className: "pt-views", children: [
3639
+ /* @__PURE__ */ jsx21(
3587
3640
  "button",
3588
3641
  {
3589
3642
  type: "button",
@@ -3593,7 +3646,7 @@ function PanelApp({
3593
3646
  children: ui.board
3594
3647
  }
3595
3648
  ),
3596
- initialState.analysis && /* @__PURE__ */ jsx20(
3649
+ initialState.analysis && /* @__PURE__ */ jsx21(
3597
3650
  "button",
3598
3651
  {
3599
3652
  type: "button",
@@ -3603,7 +3656,7 @@ function PanelApp({
3603
3656
  children: ui.analysis
3604
3657
  }
3605
3658
  ),
3606
- hasMarketplace && /* @__PURE__ */ jsx20(
3659
+ hasMarketplace && /* @__PURE__ */ jsx21(
3607
3660
  "button",
3608
3661
  {
3609
3662
  type: "button",
@@ -3613,18 +3666,18 @@ function PanelApp({
3613
3666
  children: ui.marketplace
3614
3667
  }
3615
3668
  ),
3616
- showHistory && /* @__PURE__ */ jsx20(
3669
+ hasRecord && /* @__PURE__ */ jsx21(
3617
3670
  "button",
3618
3671
  {
3619
3672
  type: "button",
3620
3673
  className: `pt-lang${view === "history" ? " is-on" : ""}`,
3621
3674
  "aria-pressed": view === "history",
3622
3675
  onClick: () => setView("history"),
3623
- children: ui.history
3676
+ children: showHistory ? ui.history : ui.archiveTitle
3624
3677
  }
3625
3678
  )
3626
3679
  ] }),
3627
- showLanguage && LANGS.map((code) => /* @__PURE__ */ jsx20(
3680
+ showLanguage && LANGS.map((code) => /* @__PURE__ */ jsx21(
3628
3681
  "button",
3629
3682
  {
3630
3683
  type: "button",
@@ -3635,7 +3688,7 @@ function PanelApp({
3635
3688
  },
3636
3689
  code
3637
3690
  )),
3638
- /* @__PURE__ */ jsx20(
3691
+ /* @__PURE__ */ jsx21(
3639
3692
  NotificationBell,
3640
3693
  {
3641
3694
  notifications,
@@ -3649,8 +3702,8 @@ function PanelApp({
3649
3702
  }
3650
3703
  }
3651
3704
  ),
3652
- saveEndpoint && /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-lang", onClick: () => setHelpOpen(true), children: ui.help }),
3653
- saveEndpoint && (dirty || save.status === "saving") && /* @__PURE__ */ jsx20(
3705
+ saveEndpoint && /* @__PURE__ */ jsx21("button", { type: "button", className: "pt-lang", onClick: () => setHelpOpen(true), children: ui.help }),
3706
+ saveEndpoint && (dirty || save.status === "saving") && /* @__PURE__ */ jsx21(
3654
3707
  "button",
3655
3708
  {
3656
3709
  type: "button",
@@ -3665,7 +3718,7 @@ function PanelApp({
3665
3718
  onLinkClick: () => setSettingsOpen(true)
3666
3719
  }
3667
3720
  ),
3668
- state.notice && /* @__PURE__ */ jsx20(
3721
+ state.notice && /* @__PURE__ */ jsx21(
3669
3722
  AlertBanner,
3670
3723
  {
3671
3724
  visible: noticeVisible,
@@ -3674,8 +3727,8 @@ function PanelApp({
3674
3727
  onAction: () => setNoticeVisible(false)
3675
3728
  }
3676
3729
  ),
3677
- save.status === "error" && /* @__PURE__ */ jsx20(AlertBanner, { visible: true, message: `${ui.saveFailed}: ${save.message}` }),
3678
- saveEndpoint && setup && !setup.ready && !setup.unknown && !wizardOpen && /* @__PURE__ */ jsx20(
3730
+ save.status === "error" && /* @__PURE__ */ jsx21(AlertBanner, { visible: true, message: `${ui.saveFailed}: ${save.message}` }),
3731
+ saveEndpoint && setup && !setup.ready && !setup.unknown && !wizardOpen && /* @__PURE__ */ jsx21(
3679
3732
  AlertBanner,
3680
3733
  {
3681
3734
  visible: true,
@@ -3684,7 +3737,7 @@ function PanelApp({
3684
3737
  onAction: () => setWizardOpen(true)
3685
3738
  }
3686
3739
  ),
3687
- view === "board" && !saveEndpoint && /* @__PURE__ */ jsx20(
3740
+ view === "board" && !saveEndpoint && /* @__PURE__ */ jsx21(
3688
3741
  GuideTour,
3689
3742
  {
3690
3743
  dismissed: state.preferences?.guideDismissed,
@@ -3693,32 +3746,32 @@ function PanelApp({
3693
3746
  {
3694
3747
  id: "demo-welcome",
3695
3748
  title: ui.demoTourWelcomeTitle,
3696
- children: /* @__PURE__ */ jsx20("p", { children: ui.demoTourWelcomeBody }),
3749
+ children: /* @__PURE__ */ jsx21("p", { children: ui.demoTourWelcomeBody }),
3697
3750
  dismissLabel: ui.gotIt
3698
3751
  },
3699
3752
  {
3700
3753
  id: "demo-board",
3701
3754
  title: ui.demoTourBoardTitle,
3702
- children: /* @__PURE__ */ jsx20("p", { children: ui.demoTourBoardBody }),
3755
+ children: /* @__PURE__ */ jsx21("p", { children: ui.demoTourBoardBody }),
3703
3756
  dismissLabel: ui.gotIt
3704
3757
  },
3705
3758
  {
3706
3759
  id: "demo-theme",
3707
3760
  title: ui.demoTourThemeTitle,
3708
- children: /* @__PURE__ */ jsx20("p", { children: ui.demoTourThemeBody }),
3761
+ children: /* @__PURE__ */ jsx21("p", { children: ui.demoTourThemeBody }),
3709
3762
  dismissLabel: ui.gotIt,
3710
3763
  action: { label: ui.settings, onClick: () => setSettingsOpen(true) }
3711
3764
  },
3712
3765
  {
3713
3766
  id: "demo-keep",
3714
3767
  title: ui.demoTourKeepTitle,
3715
- children: /* @__PURE__ */ jsx20("p", { children: ui.demoTourKeepBody }),
3768
+ children: /* @__PURE__ */ jsx21("p", { children: ui.demoTourKeepBody }),
3716
3769
  dismissLabel: ui.gotIt
3717
3770
  }
3718
3771
  ]
3719
3772
  }
3720
3773
  ),
3721
- view === "board" && saveEndpoint && /* @__PURE__ */ jsx20(
3774
+ view === "board" && saveEndpoint && /* @__PURE__ */ jsx21(
3722
3775
  GuideTour,
3723
3776
  {
3724
3777
  dismissed: state.preferences?.guideDismissed,
@@ -3727,38 +3780,38 @@ function PanelApp({
3727
3780
  {
3728
3781
  id: "welcome",
3729
3782
  title: ui.tourWelcomeTitle,
3730
- children: /* @__PURE__ */ jsx20("p", { children: ui.tourWelcomeBody }),
3783
+ children: /* @__PURE__ */ jsx21("p", { children: ui.tourWelcomeBody }),
3731
3784
  dismissLabel: ui.gotIt
3732
3785
  },
3733
3786
  {
3734
3787
  id: "board",
3735
3788
  title: ui.tourBoardTitle,
3736
- children: /* @__PURE__ */ jsx20("p", { children: ui.tourBoardBody }),
3789
+ children: /* @__PURE__ */ jsx21("p", { children: ui.tourBoardBody }),
3737
3790
  dismissLabel: ui.gotIt
3738
3791
  },
3739
3792
  {
3740
3793
  id: "orders",
3741
3794
  title: ui.tourOrdersTitle,
3742
- children: /* @__PURE__ */ jsx20("p", { children: ui.tourOrdersBody }),
3795
+ children: /* @__PURE__ */ jsx21("p", { children: ui.tourOrdersBody }),
3743
3796
  dismissLabel: ui.gotIt
3744
3797
  },
3745
3798
  {
3746
3799
  id: "save",
3747
3800
  title: ui.tourSaveTitle,
3748
- children: /* @__PURE__ */ jsx20("p", { children: ui.tourSaveBody }),
3801
+ children: /* @__PURE__ */ jsx21("p", { children: ui.tourSaveBody }),
3749
3802
  dismissLabel: ui.gotIt
3750
3803
  },
3751
3804
  {
3752
3805
  id: "theme",
3753
3806
  title: ui.tourThemeTitle,
3754
- children: /* @__PURE__ */ jsx20("p", { children: ui.tourThemeBody }),
3807
+ children: /* @__PURE__ */ jsx21("p", { children: ui.tourThemeBody }),
3755
3808
  dismissLabel: ui.gotIt,
3756
3809
  action: { label: ui.settings, onClick: () => setSettingsOpen(true) }
3757
3810
  }
3758
3811
  ]
3759
3812
  }
3760
3813
  ),
3761
- view === "marketplace" && hasMarketplace && /* @__PURE__ */ jsx20(
3814
+ view === "marketplace" && hasMarketplace && /* @__PURE__ */ jsx21(
3762
3815
  MarketplaceView,
3763
3816
  {
3764
3817
  report: market,
@@ -3769,7 +3822,7 @@ function PanelApp({
3769
3822
  onRefresh: marketplaceEndpoint ? () => loadMarketplace(true) : void 0
3770
3823
  }
3771
3824
  ),
3772
- view === "analysis" && state.analysis && /* @__PURE__ */ jsx20(
3825
+ view === "analysis" && state.analysis && /* @__PURE__ */ jsx21(
3773
3826
  AnalysisView,
3774
3827
  {
3775
3828
  onRequestReport: saveEndpoint ? requestReport : void 0,
@@ -3785,20 +3838,52 @@ function PanelApp({
3785
3838
  onOpenCard: setOpenCardId
3786
3839
  }
3787
3840
  ),
3788
- view === "board" && /* @__PURE__ */ jsxs18(Fragment5, { children: [
3789
- /* @__PURE__ */ jsxs18("div", { className: "pt-panel-page", children: [
3790
- /* @__PURE__ */ jsxs18(StatTileGrid, { children: [
3791
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statOpen, value: counts.open, isZero: counts.open === 0 }),
3792
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statOrders, value: counts.orders, tone: "warning", isZero: counts.orders === 0 }),
3793
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statYours, value: counts.yours, tone: "danger", isZero: counts.yours === 0 }),
3794
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statDecisions, value: counts.decisions, tone: "warning", isZero: counts.decisions === 0 }),
3795
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statHighRisk, value: counts.highRisk, tone: "danger", isZero: counts.highRisk === 0 }),
3796
- /* @__PURE__ */ jsx20(StatTile, { label: ui.statDone, value: counts.done, tone: "success", isZero: counts.done === 0 })
3841
+ view === "board" && /* @__PURE__ */ jsxs19(Fragment6, { children: [
3842
+ /* @__PURE__ */ jsxs19("div", { className: "pt-panel-page", children: [
3843
+ /* @__PURE__ */ jsx21(
3844
+ SituationRow,
3845
+ {
3846
+ blockingLabel: ui.situationBlocking,
3847
+ clearLabel: ui.situationClear,
3848
+ statusLabel: ui.situationStatus,
3849
+ blocking: [
3850
+ {
3851
+ id: "yours",
3852
+ label: ui.statYours,
3853
+ hint: ui.situationYoursHint,
3854
+ count: counts.yours,
3855
+ tone: "alarm",
3856
+ onClick: () => setFilter("yours")
3857
+ },
3858
+ {
3859
+ id: "decisions",
3860
+ label: ui.statDecisions,
3861
+ hint: ui.situationDecisionsHint,
3862
+ count: openChoices,
3863
+ tone: "alarm",
3864
+ onClick: initialState.analysis ? () => setView("analysis") : void 0
3865
+ },
3866
+ {
3867
+ id: "orders",
3868
+ label: ui.statOrders,
3869
+ hint: ui.situationOrdersHint,
3870
+ count: counts.orders,
3871
+ tone: "attention",
3872
+ onClick: () => setFilter("orders")
3873
+ }
3874
+ ],
3875
+ status: state.health.length > 0 ? /* @__PURE__ */ jsx21(HealthPillRow, { children: state.health.map((pill) => /* @__PURE__ */ jsx21(HealthPill, { label: t(pill.label), value: t(pill.value), status: pill.status }, t(pill.label))) }) : void 0
3876
+ }
3877
+ ),
3878
+ /* @__PURE__ */ jsxs19(StatTileGrid, { children: [
3879
+ /* @__PURE__ */ jsx21(StatTile, { label: ui.statOpen, value: counts.open, isZero: counts.open === 0 }),
3880
+ /* @__PURE__ */ jsx21(StatTile, { label: ui.statHighRisk, value: counts.highRisk, tone: "danger", isZero: counts.highRisk === 0 }),
3881
+ /* @__PURE__ */ jsx21(StatTile, { label: ui.statDone, value: counts.done, tone: "success", isZero: counts.done === 0 }),
3882
+ archivedCards.length > 0 && /* @__PURE__ */ jsx21(StatTile, { label: ui.statArchived, value: archivedCards.length, isZero: true })
3797
3883
  ] }),
3798
- /* @__PURE__ */ jsx20(HealthPillRow, { children: state.health.map((pill) => /* @__PURE__ */ jsx20(HealthPill, { label: t(pill.label), value: t(pill.value), status: pill.status }, t(pill.label))) }),
3799
- /* @__PURE__ */ jsxs18(FilterChipRow, { children: [
3800
- /* @__PURE__ */ jsx20(FilterChip, { label: ui.all, count: state.cards.length, active: filter === "all", onClick: () => setFilter("all") }),
3801
- /* @__PURE__ */ jsx20(
3884
+ /* @__PURE__ */ jsxs19(FilterChipRow, { children: [
3885
+ /* @__PURE__ */ jsx21(FilterChip, { label: ui.all, count: state.cards.length, active: filter === "all", onClick: () => setFilter("all") }),
3886
+ /* @__PURE__ */ jsx21(
3802
3887
  FilterChip,
3803
3888
  {
3804
3889
  label: `\u26A1 ${ui.filterForClaude}`,
@@ -3807,7 +3892,7 @@ function PanelApp({
3807
3892
  onClick: () => setFilter("orders")
3808
3893
  }
3809
3894
  ),
3810
- /* @__PURE__ */ jsx20(
3895
+ /* @__PURE__ */ jsx21(
3811
3896
  FilterChip,
3812
3897
  {
3813
3898
  label: ui.filterYours,
@@ -3816,7 +3901,7 @@ function PanelApp({
3816
3901
  onClick: () => setFilter("yours")
3817
3902
  }
3818
3903
  ),
3819
- /* @__PURE__ */ jsx20(
3904
+ /* @__PURE__ */ jsx21(
3820
3905
  FilterChip,
3821
3906
  {
3822
3907
  label: ui.filterHighRisk,
@@ -3825,7 +3910,7 @@ function PanelApp({
3825
3910
  onClick: () => setFilter("risk")
3826
3911
  }
3827
3912
  ),
3828
- state.areas.map((area) => /* @__PURE__ */ jsx20(
3913
+ state.areas.map((area) => /* @__PURE__ */ jsx21(
3829
3914
  FilterChip,
3830
3915
  {
3831
3916
  label: t(area.label),
@@ -3837,13 +3922,13 @@ function PanelApp({
3837
3922
  ))
3838
3923
  ] })
3839
3924
  ] }),
3840
- /* @__PURE__ */ jsx20(
3925
+ /* @__PURE__ */ jsx21(
3841
3926
  Board,
3842
3927
  {
3843
3928
  columns: boardColumns,
3844
3929
  onMove: moveCard,
3845
3930
  onAddCard: addCard,
3846
- renderCard: (card, index, columnId) => /* @__PURE__ */ jsx20(
3931
+ renderCard: (card, index, columnId) => /* @__PURE__ */ jsx21(
3847
3932
  Card,
3848
3933
  {
3849
3934
  cardId: card.id,
@@ -3860,51 +3945,72 @@ function PanelApp({
3860
3945
  }
3861
3946
  ),
3862
3947
  extras,
3863
- capabilities && capabilities.length > 0 && /* @__PURE__ */ jsxs18("section", { className: "pt-panel-page pt-panel-section", id: "functions", children: [
3864
- /* @__PURE__ */ jsxs18("div", { children: [
3865
- /* @__PURE__ */ jsx20("p", { className: "pt-eyebrow", children: ui.functionsEyebrow }),
3866
- /* @__PURE__ */ jsx20("h2", { className: "pt-h2", children: ui.functionsTitle }),
3867
- /* @__PURE__ */ jsx20("p", { className: "pt-sub", children: ui.functionsIntro })
3948
+ capabilities && capabilities.length > 0 && /* @__PURE__ */ jsxs19("section", { className: "pt-panel-page pt-panel-section", id: "functions", children: [
3949
+ /* @__PURE__ */ jsxs19("div", { children: [
3950
+ /* @__PURE__ */ jsx21("p", { className: "pt-eyebrow", children: ui.functionsEyebrow }),
3951
+ /* @__PURE__ */ jsx21("h2", { className: "pt-h2", children: ui.functionsTitle }),
3952
+ /* @__PURE__ */ jsx21("p", { className: "pt-sub", children: ui.functionsIntro })
3868
3953
  ] }),
3869
- /* @__PURE__ */ jsx20("div", { className: "pt-cap-list", children: capabilities.map((capability) => /* @__PURE__ */ jsxs18("article", { className: "pt-cap pt-hud", children: [
3870
- /* @__PURE__ */ jsx20("h3", { className: "pt-cap__title", children: t(capability.title) }),
3871
- /* @__PURE__ */ jsx20("p", { className: "pt-cap__summary", children: t(capability.summary) }),
3872
- /* @__PURE__ */ jsx20("ul", { className: "pt-cap__list", children: capability.points.map((point) => /* @__PURE__ */ jsx20("li", { children: t(point) }, t(point))) }),
3873
- capability.code && /* @__PURE__ */ jsxs18("div", { className: "pt-cap__code", children: [
3874
- /* @__PURE__ */ jsx20("p", { className: "pt-cap__caption", children: t(capability.code.caption) }),
3875
- /* @__PURE__ */ jsx20("pre", { children: /* @__PURE__ */ jsx20("code", { children: capability.code.body }) })
3954
+ /* @__PURE__ */ jsx21("div", { className: "pt-cap-list", children: capabilities.map((capability) => /* @__PURE__ */ jsxs19("article", { className: "pt-cap pt-hud", children: [
3955
+ /* @__PURE__ */ jsx21("h3", { className: "pt-cap__title", children: t(capability.title) }),
3956
+ /* @__PURE__ */ jsx21("p", { className: "pt-cap__summary", children: t(capability.summary) }),
3957
+ /* @__PURE__ */ jsx21("ul", { className: "pt-cap__list", children: capability.points.map((point) => /* @__PURE__ */ jsx21("li", { children: t(point) }, t(point))) }),
3958
+ capability.code && /* @__PURE__ */ jsxs19("div", { className: "pt-cap__code", children: [
3959
+ /* @__PURE__ */ jsx21("p", { className: "pt-cap__caption", children: t(capability.code.caption) }),
3960
+ /* @__PURE__ */ jsx21("pre", { children: /* @__PURE__ */ jsx21("code", { children: capability.code.body }) })
3876
3961
  ] })
3877
3962
  ] }, capability.id)) })
3878
3963
  ] })
3879
3964
  ] }),
3880
- view === "history" && showHistory && /* @__PURE__ */ jsxs18("section", { className: "pt-panel-page pt-panel-section", id: "revisions", children: [
3881
- /* @__PURE__ */ jsxs18("div", { children: [
3882
- /* @__PURE__ */ jsx20("p", { className: "pt-eyebrow", children: ui.historyEyebrow }),
3883
- /* @__PURE__ */ jsx20("h2", { className: "pt-h2", children: ui.historyTitle }),
3884
- /* @__PURE__ */ jsx20("p", { className: "pt-sub", children: ui.historyIntro })
3885
- ] }),
3886
- state.runs.length === 0 ? /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.historyEmpty }) : /* @__PURE__ */ jsx20("ol", { className: "pt-runs", children: [...state.runs].reverse().map((run) => /* @__PURE__ */ jsxs18("li", { className: "pt-run pt-hud", children: [
3887
- /* @__PURE__ */ jsxs18("p", { className: "pt-run__meta", children: [
3888
- run.date,
3889
- " \xB7 ",
3890
- run.by === "claude" ? "Claude" : ui.ownerYou,
3891
- run.fingerprint ? ` \xB7 ${run.fingerprint.replace("sha256:", "").slice(0, 12)}` : ""
3965
+ view === "history" && hasRecord && /* @__PURE__ */ jsxs19("section", { className: "pt-panel-page pt-panel-section", id: "revisions", children: [
3966
+ showHistory && /* @__PURE__ */ jsxs19(Fragment6, { children: [
3967
+ /* @__PURE__ */ jsxs19("div", { children: [
3968
+ /* @__PURE__ */ jsx21("p", { className: "pt-eyebrow", children: ui.historyEyebrow }),
3969
+ /* @__PURE__ */ jsx21("h2", { className: "pt-h2", children: ui.historyTitle }),
3970
+ /* @__PURE__ */ jsx21("p", { className: "pt-sub", children: ui.historyIntro })
3892
3971
  ] }),
3893
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: t(run.summary) }),
3894
- run.cards.length > 0 && /* @__PURE__ */ jsxs18("p", { className: "pt-run__cards", children: [
3895
- /* @__PURE__ */ jsxs18("span", { children: [
3896
- ui.historyTouched,
3897
- ":"
3972
+ state.runs.length === 0 ? /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.historyEmpty }) : /* @__PURE__ */ jsx21("ol", { className: "pt-runs", children: [...state.runs].reverse().map((run) => /* @__PURE__ */ jsxs19("li", { className: "pt-run pt-hud", children: [
3973
+ /* @__PURE__ */ jsxs19("p", { className: "pt-run__meta", children: [
3974
+ run.date,
3975
+ " \xB7 ",
3976
+ run.by === "claude" ? "Claude" : ui.ownerYou,
3977
+ run.fingerprint ? ` \xB7 ${run.fingerprint.replace("sha256:", "").slice(0, 12)}` : ""
3898
3978
  ] }),
3899
- " ",
3900
- run.cards.map((id) => {
3901
- const card = state.cards.find((candidate) => candidate.id === id);
3902
- return card ? t(card.title) || ui.untitled : id;
3903
- }).join(" \xB7 ")
3904
- ] })
3905
- ] }, run.id)) })
3979
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: t(run.summary) }),
3980
+ run.cards.length > 0 && /* @__PURE__ */ jsxs19("p", { className: "pt-run__cards", children: [
3981
+ /* @__PURE__ */ jsxs19("span", { children: [
3982
+ ui.historyTouched,
3983
+ ":"
3984
+ ] }),
3985
+ " ",
3986
+ run.cards.map((id) => {
3987
+ const card = state.cards.find((candidate) => candidate.id === id);
3988
+ return card ? t(card.title) || ui.untitled : id;
3989
+ }).join(" \xB7 ")
3990
+ ] })
3991
+ ] }, run.id)) })
3992
+ ] }),
3993
+ archivedCards.length > 0 && /* @__PURE__ */ jsxs19(Fragment6, { children: [
3994
+ /* @__PURE__ */ jsxs19("div", { children: [
3995
+ /* @__PURE__ */ jsx21("p", { className: "pt-eyebrow", children: ui.archiveTitle }),
3996
+ /* @__PURE__ */ jsx21("h2", { className: "pt-h2", children: ui.archiveHeading }),
3997
+ /* @__PURE__ */ jsx21("p", { className: "pt-sub", children: ui.archiveIntro })
3998
+ ] }),
3999
+ /* @__PURE__ */ jsx21("ol", { className: "pt-archive", children: archivedCards.slice().sort((a, b) => (b.completedAt ?? "").localeCompare(a.completedAt ?? "")).map((card) => /* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsxs19(
4000
+ "button",
4001
+ {
4002
+ type: "button",
4003
+ className: "pt-archive__row",
4004
+ onClick: () => setOpenCardId(card.id),
4005
+ children: [
4006
+ /* @__PURE__ */ jsx21("span", { className: "pt-archive__title", children: t(card.title) || ui.untitled }),
4007
+ /* @__PURE__ */ jsx21("span", { className: "pt-archive__meta", children: card.completedAt ? ui.archiveFinished(card.completedAt) : "" })
4008
+ ]
4009
+ }
4010
+ ) }, card.id)) })
4011
+ ] })
3906
4012
  ] }),
3907
- /* @__PURE__ */ jsx20(
4013
+ /* @__PURE__ */ jsx21(
3908
4014
  CardSheet,
3909
4015
  {
3910
4016
  card: openCard,
@@ -3916,7 +4022,7 @@ function PanelApp({
3916
4022
  onClose: () => setOpenCardId(null)
3917
4023
  }
3918
4024
  ),
3919
- /* @__PURE__ */ jsx20(
4025
+ /* @__PURE__ */ jsx21(
3920
4026
  DetailSheet,
3921
4027
  {
3922
4028
  open: wizardOpen,
@@ -3925,7 +4031,7 @@ function PanelApp({
3925
4031
  setWizardOpen(false);
3926
4032
  },
3927
4033
  ariaLabel: ui.wizardTitle,
3928
- children: /* @__PURE__ */ jsx20(
4034
+ children: /* @__PURE__ */ jsx21(
3929
4035
  SetupWizard,
3930
4036
  {
3931
4037
  requirements,
@@ -3957,9 +4063,9 @@ function PanelApp({
3957
4063
  )
3958
4064
  }
3959
4065
  ),
3960
- /* @__PURE__ */ jsxs18(DetailSheet, { open: helpOpen, onClose: () => setHelpOpen(false), ariaLabel: ui.helpTitle, children: [
3961
- /* @__PURE__ */ jsx20(DetailSection, { title: ui.helpTitle, children: !setup ? /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.setupChecking }) : /* @__PURE__ */ jsxs18(Fragment5, { children: [
3962
- /* @__PURE__ */ jsx20(
4066
+ /* @__PURE__ */ jsxs19(DetailSheet, { open: helpOpen, onClose: () => setHelpOpen(false), ariaLabel: ui.helpTitle, children: [
4067
+ /* @__PURE__ */ jsx21(DetailSection, { title: ui.helpTitle, children: !setup ? /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.setupChecking }) : /* @__PURE__ */ jsxs19(Fragment6, { children: [
4068
+ /* @__PURE__ */ jsx21(
3963
4069
  SetupGuide,
3964
4070
  {
3965
4071
  requirements,
@@ -3972,8 +4078,8 @@ function PanelApp({
3972
4078
  }
3973
4079
  }
3974
4080
  ),
3975
- setup.repo && /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 12 }, children: ui.setupWriteTarget(setup.repo, setup.branch, setup.file) }),
3976
- !setup.ready && /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", style: { marginTop: 12 }, children: /* @__PURE__ */ jsx20(
4081
+ setup.repo && /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 12 }, children: ui.setupWriteTarget(setup.repo, setup.branch, setup.file) }),
4082
+ !setup.ready && /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", style: { marginTop: 12 }, children: /* @__PURE__ */ jsx21(
3977
4083
  "button",
3978
4084
  {
3979
4085
  type: "button",
@@ -3986,7 +4092,7 @@ function PanelApp({
3986
4092
  }
3987
4093
  ) })
3988
4094
  ] }) }),
3989
- /* @__PURE__ */ jsx20(DetailSection, { title: ui.guideSection, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx20(
4095
+ /* @__PURE__ */ jsx21(DetailSection, { title: ui.guideSection, children: /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx21(
3990
4096
  "button",
3991
4097
  {
3992
4098
  type: "button",
@@ -4004,24 +4110,24 @@ function PanelApp({
4004
4110
  }
4005
4111
  ) }) })
4006
4112
  ] }),
4007
- update?.behind && /* @__PURE__ */ jsxs18(
4113
+ update?.behind && /* @__PURE__ */ jsxs19(
4008
4114
  DetailSheet,
4009
4115
  {
4010
4116
  open: releaseOpen,
4011
4117
  onClose: () => setReleaseOpen(false),
4012
4118
  ariaLabel: ui.releaseTitle(update.latest),
4013
4119
  children: [
4014
- /* @__PURE__ */ jsxs18("div", { children: [
4015
- /* @__PURE__ */ jsx20("p", { className: "pt-eyebrow", children: releaseShape(update.notes) ? ui.releaseShape[releaseShape(update.notes)] : "" }),
4016
- /* @__PURE__ */ jsx20("h2", { className: "pt-h2", children: ui.releaseTitle(update.latest) }),
4017
- update.notes?.date && /* @__PURE__ */ jsx20("p", { className: "pt-sub", children: ui.releaseDate(update.notes.date) })
4120
+ /* @__PURE__ */ jsxs19("div", { children: [
4121
+ /* @__PURE__ */ jsx21("p", { className: "pt-eyebrow", children: releaseShape(update.notes) ? ui.releaseShape[releaseShape(update.notes)] : "" }),
4122
+ /* @__PURE__ */ jsx21("h2", { className: "pt-h2", children: ui.releaseTitle(update.latest) }),
4123
+ update.notes?.date && /* @__PURE__ */ jsx21("p", { className: "pt-sub", children: ui.releaseDate(update.notes.date) })
4018
4124
  ] }),
4019
- update.notes ? /* @__PURE__ */ jsx20("ul", { className: "pt-runs", children: update.notes.entries.map((item, index) => /* @__PURE__ */ jsxs18("li", { className: "pt-run pt-hud", children: [
4020
- /* @__PURE__ */ jsx20("p", { className: "pt-run__meta", children: ui.releaseKind[item.kind] }),
4021
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: item.text[lang] })
4022
- ] }, index)) }) : /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.releaseNone }),
4023
- /* @__PURE__ */ jsxs18("div", { className: "pt-panel-row", style: { marginTop: 16 }, children: [
4024
- /* @__PURE__ */ jsx20(
4125
+ update.notes ? /* @__PURE__ */ jsx21("ul", { className: "pt-runs", children: update.notes.entries.map((item, index) => /* @__PURE__ */ jsxs19("li", { className: "pt-run pt-hud", children: [
4126
+ /* @__PURE__ */ jsx21("p", { className: "pt-run__meta", children: ui.releaseKind[item.kind] }),
4127
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: item.text[lang] })
4128
+ ] }, index)) }) : /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.releaseNone }),
4129
+ /* @__PURE__ */ jsxs19("div", { className: "pt-panel-row", style: { marginTop: 16 }, children: [
4130
+ /* @__PURE__ */ jsx21(
4025
4131
  "button",
4026
4132
  {
4027
4133
  type: "button",
@@ -4033,14 +4139,14 @@ function PanelApp({
4033
4139
  children: ui.updateCreateCard
4034
4140
  }
4035
4141
  ),
4036
- /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn", onClick: () => setReleaseOpen(false), children: ui.releaseClose })
4142
+ /* @__PURE__ */ jsx21("button", { type: "button", className: "pt-btn", onClick: () => setReleaseOpen(false), children: ui.releaseClose })
4037
4143
  ] })
4038
4144
  ]
4039
4145
  }
4040
4146
  ),
4041
- /* @__PURE__ */ jsxs18(DetailSheet, { open: settingsOpen, onClose: () => setSettingsOpen(false), ariaLabel: ui.panelSettings, children: [
4042
- saveEndpoint ? /* @__PURE__ */ jsxs18(DetailSection, { title: ui.saveSection, subtitle: ui.saveSubtitle, children: [
4043
- /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx20(
4147
+ /* @__PURE__ */ jsxs19(DetailSheet, { open: settingsOpen, onClose: () => setSettingsOpen(false), ariaLabel: ui.panelSettings, children: [
4148
+ saveEndpoint ? /* @__PURE__ */ jsxs19(DetailSection, { title: ui.saveSection, subtitle: ui.saveSubtitle, children: [
4149
+ /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx21(
4044
4150
  "button",
4045
4151
  {
4046
4152
  type: "button",
@@ -4050,15 +4156,15 @@ function PanelApp({
4050
4156
  children: save.status === "saving" ? ui.saving : ui.save
4051
4157
  }
4052
4158
  ) }),
4053
- /* @__PURE__ */ jsxs18("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: [
4159
+ /* @__PURE__ */ jsxs19("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: [
4054
4160
  save.status === "error" ? `${ui.saveFailed}: ${save.message}` : save.status === "saved" ? ui.savedWithCommit : dirty ? ui.saveHelp : ui.upToDate,
4055
- save.status === "saved" && save.url && /* @__PURE__ */ jsxs18(Fragment5, { children: [
4161
+ save.status === "saved" && save.url && /* @__PURE__ */ jsxs19(Fragment6, { children: [
4056
4162
  " ",
4057
- /* @__PURE__ */ jsx20("a", { href: save.url, children: "commit" })
4163
+ /* @__PURE__ */ jsx21("a", { href: save.url, children: "commit" })
4058
4164
  ] })
4059
4165
  ] })
4060
- ] }) : /* @__PURE__ */ jsx20(DetailSection, { title: ui.saveSection, subtitle: ui.saveSubtitle, children: /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.demoNotice }) }),
4061
- showLanguage && /* @__PURE__ */ jsx20(DetailSection, { title: ui.language, subtitle: ui.languageSubtitle, children: /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: LANGS.map((code) => /* @__PURE__ */ jsx20(
4166
+ ] }) : /* @__PURE__ */ jsx21(DetailSection, { title: ui.saveSection, subtitle: ui.saveSubtitle, children: /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.demoNotice }) }),
4167
+ showLanguage && /* @__PURE__ */ jsx21(DetailSection, { title: ui.language, subtitle: ui.languageSubtitle, children: /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", children: LANGS.map((code) => /* @__PURE__ */ jsx21(
4062
4168
  FilterChip,
4063
4169
  {
4064
4170
  label: LANG_LABELS[code],
@@ -4067,9 +4173,9 @@ function PanelApp({
4067
4173
  },
4068
4174
  code
4069
4175
  )) }) }),
4070
- /* @__PURE__ */ jsxs18(DetailSection, { title: ui.theme, subtitle: ui.themeSubtitle, children: [
4071
- /* @__PURE__ */ jsxs18("div", { className: "pt-panel-row", children: [
4072
- Object.entries(themes).map(([name, entry]) => /* @__PURE__ */ jsx20(
4176
+ /* @__PURE__ */ jsxs19(DetailSection, { title: ui.theme, subtitle: ui.themeSubtitle, children: [
4177
+ /* @__PURE__ */ jsxs19("div", { className: "pt-panel-row", children: [
4178
+ Object.entries(themes).map(([name, entry]) => /* @__PURE__ */ jsx21(
4073
4179
  FilterChip,
4074
4180
  {
4075
4181
  label: entry.label,
@@ -4078,7 +4184,7 @@ function PanelApp({
4078
4184
  },
4079
4185
  name
4080
4186
  )),
4081
- state.importedTheme && /* @__PURE__ */ jsx20(
4187
+ state.importedTheme && /* @__PURE__ */ jsx21(
4082
4188
  FilterChip,
4083
4189
  {
4084
4190
  label: t(state.importedTheme.label),
@@ -4087,21 +4193,21 @@ function PanelApp({
4087
4193
  }
4088
4194
  )
4089
4195
  ] }),
4090
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: themeName === IMPORTED ? t(imported?.from.reasoning) : [chosen.note, ui.themeNote].filter(Boolean).join(". ") }),
4091
- state.importedTheme && /* @__PURE__ */ jsxs18("div", { className: "pt-cap pt-hud", style: { marginTop: 14 }, children: [
4092
- /* @__PURE__ */ jsx20("h3", { className: "pt-cap__title", children: ui.importedTheme }),
4093
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.importedFrom(state.importedTheme.importedAt, state.importedTheme.from.files.join(", ")) }),
4094
- state.importedTheme.from.colours.length > 0 && /* @__PURE__ */ jsx20("p", { className: "pt-tool__tags", children: state.importedTheme.from.colours.map((colour) => /* @__PURE__ */ jsx20("span", { className: "pt-tool__tag", children: colour }, colour)) }),
4095
- state.importedTheme.refreshRequested ? /* @__PURE__ */ jsx20("p", { className: "pt-warn", children: ui.importedRefreshAsked(state.importedTheme.refreshRequested) }) : /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", style: { marginTop: 10 }, children: /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: requestThemeRefresh, children: ui.importedRefresh }) }),
4096
- /* @__PURE__ */ jsx20("p", { className: "pt-marketplace__detail", children: ui.importedRefreshHow })
4196
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: themeName === IMPORTED ? t(imported?.from.reasoning) : [chosen.note, ui.themeNote].filter(Boolean).join(". ") }),
4197
+ state.importedTheme && /* @__PURE__ */ jsxs19("div", { className: "pt-cap pt-hud", style: { marginTop: 14 }, children: [
4198
+ /* @__PURE__ */ jsx21("h3", { className: "pt-cap__title", children: ui.importedTheme }),
4199
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.importedFrom(state.importedTheme.importedAt, state.importedTheme.from.files.join(", ")) }),
4200
+ state.importedTheme.from.colours.length > 0 && /* @__PURE__ */ jsx21("p", { className: "pt-tool__tags", children: state.importedTheme.from.colours.map((colour) => /* @__PURE__ */ jsx21("span", { className: "pt-tool__tag", children: colour }, colour)) }),
4201
+ state.importedTheme.refreshRequested ? /* @__PURE__ */ jsx21("p", { className: "pt-warn", children: ui.importedRefreshAsked(state.importedTheme.refreshRequested) }) : /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", style: { marginTop: 10 }, children: /* @__PURE__ */ jsx21("button", { type: "button", className: "pt-btn pt-btn--sm", onClick: requestThemeRefresh, children: ui.importedRefresh }) }),
4202
+ /* @__PURE__ */ jsx21("p", { className: "pt-marketplace__detail", children: ui.importedRefreshHow })
4097
4203
  ] })
4098
4204
  ] }),
4099
- checkForUpdates && fingerprint?.version && /* @__PURE__ */ jsxs18(DetailSection, { title: ui.updateTitle, subtitle: ui.updateSubtitle, children: [
4100
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: ui.updateCurrent(fingerprint.version) }),
4101
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: !update ? ui.updateUnknown : update.behind ? ui.updateAvailable(update.latest) : ui.updateUpToDate }),
4102
- update?.behind && (state.cards.some((card) => card.id === updateCardId(update.latest)) ? /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: ui.updateCardExists }) : /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", style: { marginTop: 12 }, children: /* @__PURE__ */ jsx20("button", { type: "button", className: "pt-btn", onClick: addUpdateCard, children: ui.updateCreateCard }) })),
4103
- /* @__PURE__ */ jsxs18("label", { className: "pt-panel-row", style: { marginTop: 12 }, children: [
4104
- /* @__PURE__ */ jsx20(
4205
+ checkForUpdates && fingerprint?.version && /* @__PURE__ */ jsxs19(DetailSection, { title: ui.updateTitle, subtitle: ui.updateSubtitle, children: [
4206
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: ui.updateCurrent(fingerprint.version) }),
4207
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: !update ? ui.updateUnknown : update.behind ? ui.updateAvailable(update.latest) : ui.updateUpToDate }),
4208
+ update?.behind && (state.cards.some((card) => card.id === updateCardId(update.latest)) ? /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: ui.updateCardExists }) : /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", style: { marginTop: 12 }, children: /* @__PURE__ */ jsx21("button", { type: "button", className: "pt-btn", onClick: addUpdateCard, children: ui.updateCreateCard }) })),
4209
+ /* @__PURE__ */ jsxs19("label", { className: "pt-panel-row", style: { marginTop: 12 }, children: [
4210
+ /* @__PURE__ */ jsx21(
4105
4211
  "input",
4106
4212
  {
4107
4213
  type: "checkbox",
@@ -4109,16 +4215,16 @@ function PanelApp({
4109
4215
  onChange: (event) => setPreference("updateAsOrder", event.target.checked)
4110
4216
  }
4111
4217
  ),
4112
- /* @__PURE__ */ jsx20("span", { className: "pt-panel-text", children: ui.updateAsOrder })
4218
+ /* @__PURE__ */ jsx21("span", { className: "pt-panel-text", children: ui.updateAsOrder })
4113
4219
  ] }),
4114
- /* @__PURE__ */ jsx20("p", { className: "pt-marketplace__detail", children: ui.updateAsOrderHow })
4220
+ /* @__PURE__ */ jsx21("p", { className: "pt-marketplace__detail", children: ui.updateAsOrderHow })
4115
4221
  ] }),
4116
- fingerprint && /* @__PURE__ */ jsxs18(DetailSection, { title: ui.fingerprint, subtitle: ui.fingerprintSubtitle, children: [
4117
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-mono", children: fingerprint.hash }),
4118
- /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: ui.trackedFiles(fingerprint.fileCount, fingerprint.version) })
4222
+ fingerprint && /* @__PURE__ */ jsxs19(DetailSection, { title: ui.fingerprint, subtitle: ui.fingerprintSubtitle, children: [
4223
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-mono", children: fingerprint.hash }),
4224
+ /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 8 }, children: ui.trackedFiles(fingerprint.fileCount, fingerprint.version) })
4119
4225
  ] }),
4120
- saveEndpoint && /* @__PURE__ */ jsxs18(DetailSection, { title: ui.session, subtitle: ui.sessionSubtitle, children: [
4121
- /* @__PURE__ */ jsx20("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx20(
4226
+ saveEndpoint && /* @__PURE__ */ jsxs19(DetailSection, { title: ui.session, subtitle: ui.sessionSubtitle, children: [
4227
+ /* @__PURE__ */ jsx21("div", { className: "pt-panel-row", children: /* @__PURE__ */ jsx21(
4122
4228
  "button",
4123
4229
  {
4124
4230
  type: "button",
@@ -4128,11 +4234,11 @@ function PanelApp({
4128
4234
  children: signOut === "working" ? ui.signingOut : ui.signOut
4129
4235
  }
4130
4236
  ) }),
4131
- signOut === "failed" && /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: ui.signOutFailed })
4237
+ signOut === "failed" && /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", style: { marginTop: 10 }, children: ui.signOutFailed })
4132
4238
  ] }),
4133
- links && links.length > 0 && /* @__PURE__ */ jsx20(DetailSection, { title: ui.links, children: /* @__PURE__ */ jsx20("p", { className: "pt-panel-text", children: links.map((link, index) => /* @__PURE__ */ jsxs18(React13.Fragment, { children: [
4239
+ links && links.length > 0 && /* @__PURE__ */ jsx21(DetailSection, { title: ui.links, children: /* @__PURE__ */ jsx21("p", { className: "pt-panel-text", children: links.map((link, index) => /* @__PURE__ */ jsxs19(React13.Fragment, { children: [
4134
4240
  index > 0 && " \xB7 ",
4135
- /* @__PURE__ */ jsx20("a", { href: link.href, children: link.label })
4241
+ /* @__PURE__ */ jsx21("a", { href: link.href, children: link.label })
4136
4242
  ] }, link.href)) }) })
4137
4243
  ] }),
4138
4244
  footer
@@ -4338,6 +4444,7 @@ export {
4338
4444
  PanelApp,
4339
4445
  SetupGuide,
4340
4446
  SetupWizard,
4447
+ SituationRow,
4341
4448
  StatTile,
4342
4449
  StatTileGrid,
4343
4450
  THEME_FORMS,
@@ -4385,6 +4492,7 @@ export {
4385
4492
  useGuideNote,
4386
4493
  useMediaQuery,
4387
4494
  validateBoard,
4495
+ warRoomForm,
4388
4496
  wizardStep,
4389
4497
  writeText
4390
4498
  };