component · collaboration

TuxCommentThread

Peer-review / editorial-comment threads. Sister to TuxReactionBar — that's light-touch acknowledgement; this is the heavyweight thread surface for actual dialog. Each thread groups a root comment plus replies, has an open / resolved status, and supports @mention tokens. The component is a stateless renderer over a v-modeled array; mutations emit semantic events so the host owns persistence.

flagship · paper-page sidebar

Open + resolved threads

Hover a comment you authored to surface edit / delete. Use ⌘↵ in the reply box to send. Resolved threads collapse behind a toggle by default — toggle off below to see the row.

Methods §2 · sample selection

  1. Amelia Reyes · TTI · Mobility1d ago

    The 36-month follow-up window covers the construction-phase shift in 2024 — should we add a sensitivity analysis that excludes those quarters? @darius what did the safety team end up doing for the I-35 paper?

  2. Darius Patel · TTI · Safety18h ago

    We ran it both ways and the headline coefficient was within 4%. Worth a footnote either way; I can pull the numbers if you want them.

  3. You · TTI · Editorial12m ago

    Footnote sounds right. @amelia can you draft 2-3 sentences and I'll fold it into the proofs pass?

Figure 3

  1. Mariana Vega · TTI · Roadways6h ago

    The y-axis label is cut off in the print PDF — confirmed on letter + a4. Easy fix.

<tux-comment-thread
  v-model="threads"
  :authors="authors"
  :current-user="me"
  @comment:add="onAdd"
  @comment:edit="onEdit"
  @comment:delete="onDelete"
  @thread:resolve="onResolve"
  @thread:reopen="onReopen"
/>

density · sidebar

Compact in a narrow rail

size="sm" shrinks avatars and tightens padding; the container-query fallback kicks in below ~22rem regardless of the prop, so the thread also adapts gracefully when dropped into a narrow slot.

Methods §2 · sample selection

  1. Amelia Reyes · TTI · Mobility1d ago

    The 36-month follow-up window covers the construction-phase shift in 2024 — should we add a sensitivity analysis that excludes those quarters? @darius what did the safety team end up doing for the I-35 paper?

  2. Darius Patel · TTI · Safety18h ago

    We ran it both ways and the headline coefficient was within 4%. Worth a footnote either way; I can pull the numbers if you want them.

  3. You · TTI · Editorial12m ago

    Footnote sounds right. @amelia can you draft 2-3 sentences and I'll fold it into the proofs pass?

Figure 3

  1. Mariana Vega · TTI · Roadways6h ago

    The y-axis label is cut off in the print PDF — confirmed on letter + a4. Easy fix.

Abstract · plain-language summary

Resolved by Jordan Kim · 2d ago
  1. Jordan Kim · TTI · MovementLab3d ago

    Reading-grade is 14.2 on the current draft — target was 10. I rewrote para 2; lmk what you think.

  2. Amelia Reyes · TTI · Mobility2d ago

    Lands at 9.8 now. Shipping.

<tux-comment-thread
  v-model="threads"
  :authors="authors"
  :current-user="me"
  size="sm"
  :hide-resolved="false"
/>

data shape

What the host owns

The component renders; the host persists. Wire @comment:add / @comment:edit / @comment:delete / @thread:resolve / @thread:reopen to a Pinia store, Yjs doc, or REST endpoint — whatever the consumer surface uses.

types.tsts
interface CommentAuthor {
  id: string;
  name: string;
  affiliation?: string;
  avatar?: string;        // URL; initials fallback when absent
}

interface Comment {
  id: string;
  authorId: string;
  createdAt: string;      // ISO 8601
  editedAt?: string;
  body: string;           // @mentions auto-detected on render
}

interface CommentThread {
  id: string;
  anchor?: string;        // e.g. "Methods §2"
  status: "open" | "resolved";
  resolvedBy?: string;
  resolvedAt?: string;
  comments: Comment[];
}

composes-with

Where it lives

  • Paper page — right-rail aside on /examples/paper-page, anchored on the editorial-research cluster (TuxAbstract, TuxFigureCaption, TuxFootnote).
  • Reports — drop into the #aside slot of TuxReportWebFrame for an open review pass.
  • Inside a slideover — wrap in TuxSlideover for an "open comments" panel launched from a markdown editor toolbar button.