← All @molecule/* packages · App templates

@molecule/app-forum-thread-row-react

Feature · forum-thread-row · App (browser) · v1.0.1 · Apache-2.0

Discussion / forum thread row with vote score, reply count, pin/lock badges, tags

npm install @molecule/app-forum-thread-row-react

npm · Source on GitHub

How it works

@molecule/app-forum-thread-row-react is a ready-made forum-thread-row feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.

import { ForumThreadRow } from '@molecule/app-forum-thread-row-react'

const thread = { id: 't1', title: 'How do I reset my password?' }

<ForumThreadRow
  title={thread.title}
  excerpt="I tried the forgot-password link but never received an email."
  voteScore={42}
  replyCount={7}
  viewCount={320}
  author="alice"
  createdAt="2 hours ago"
  onClick={() => console.log('open thread', thread.id)}
/>

Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react

Reference

Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit src/index.ts JSDoc, not this file.

Forum / discussion-board thread row — title, optional excerpt, vote score, reply/view counts, pin/lock badges, author, timestamp, and an optional voteControls slot for inline up/down buttons.

Quick Start

import { ForumThreadRow } from '@molecule/app-forum-thread-row-react'

const thread = { id: 't1', title: 'How do I reset my password?' }

<ForumThreadRow
  title={thread.title}
  excerpt="I tried the forgot-password link but never received an email."
  voteScore={42}
  replyCount={7}
  viewCount={320}
  author="alice"
  createdAt="2 hours ago"
  onClick={() => console.log('open thread', thread.id)}
/>

Type

feature

Installation

npm install @molecule/app-forum-thread-row-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react

API

Interfaces

ForumThreadRowProps

Props for {@link ForumThreadRow}.

interface ForumThreadRowProps {
  title: ReactNode
  /** Optional snippet of the OP body. */
  excerpt?: ReactNode
  /** Aggregate vote score / upvotes. */
  voteScore?: number
  /** Reply count. */
  replyCount?: number
  /** View count. */
  viewCount?: number
  /** Optional pinned indicator. */
  pinned?: boolean
  /** Optional locked indicator. */
  locked?: boolean
  /** Author display. */
  author?: ReactNode
  /** Created-at display (relative or absolute). */
  createdAt?: ReactNode
  /** Tag chips. */
  tags?: ReactNode
  /** Right-side voting controls slot. */
  voteControls?: ReactNode
  /** Click handler. */
  onClick?: () => void
  /** Extra classes. */
  className?: string
}

Functions

ForumThreadRow(props)

Forum / discussion-board thread row. Shows the title, optional excerpt, vote score + reply/view counts, pin/lock badges, author, and timestamp. Pass voteControls to render up/down buttons inline.

function ForumThreadRow({
  title,
  excerpt,
  voteScore,
  replyCount,
  viewCount,
  pinned,
  locked,
  author,
  createdAt,
  tags,
  voteControls,
  onClick,
  className,
}: ForumThreadRowProps): ReactNode
  • props — Component props (see {@link ForumThreadRowProps}).

Injection Notes

Requirements

Peer dependencies:

  • @molecule/app-react ^1.0.1
  • @molecule/app-ui ^1.0.1
  • @molecule/app-ui-react ^1.0.1
  • react ^18.0.0 || ^19.0.0

Runtime Dependencies

  • @molecule/app-react

  • @molecule/app-ui

  • @molecule/app-ui-react

  • react

  • Styling routes through getClassMap() — a ClassMap bond (e.g. @molecule/app-ui-tailwind) must be wired or rendering throws.

  • KNOWN GAP: the counter labels ("votes", "replies", "views") and the pin/lock aria-labels are hardcoded English (there is no companion locale bond yet). For localized apps, pass pre-formatted content via tags / voteControls or wrap the row until the package routes text through t().

  • The row has no data-mol-id support yet; add your own wrapper attribute if AI-agent/e2e selectors need to target it.