Documents
thread-list-item
thread-list-item
Type
External
Status
Published
Created
Mar 17, 2026
Updated
Mar 17, 2026

A single thread item within a thread list.

Anatomy#

import { ThreadListItemPrimitive } from "@assistant-ui/react";

const ThreadListItem = () => (
  <ThreadListItemPrimitive.Root>
    <ThreadListItemPrimitive.Trigger>
      <ThreadListItemPrimitive.Title />
    </ThreadListItemPrimitive.Trigger>
    <ThreadListItemPrimitive.Archive />
    <ThreadListItemPrimitive.Unarchive />
    <ThreadListItemPrimitive.Delete />
  </ThreadListItemPrimitive.Root>
);

API Reference#

Root#

Contains all parts of the thread list item.

This primitive renders a <div> element unless asChild is set. It automatically adds data-active="true" and aria-current="true" attributes when the thread is the currently active thread.

<ParametersTable
type="ThreadListItemPrimitiveRootProps"
parameters={[
{
name: "asChild",
},
]}
/>

Trigger#

A button that switches to the thread when clicked.

This primitive renders a <button> element unless asChild is set.

<ParametersTable
type="ThreadListItemPrimitiveTriggerProps"
parameters={[
{
name: "asChild",
},
]}
/>

Title#

Displays the title of the thread.

This primitive renders as a React Fragment with no wrapper DOM element. It outputs the thread's title text directly, or the fallback content if no title is available.

<ParametersTable
type="ThreadListItemPrimitiveTitleProps"
parameters={[
{
name: "fallback",
type: "ReactNode",
description: "Content to display when the thread has no title.",
},
]}
/>

Archive#

A button to archive the thread. Only shown for non-archived threads.

This primitive renders a <button> element unless asChild is set.

<ParametersTable
type="ThreadListItemPrimitiveArchiveProps"
parameters={[
{
name: "asChild",
},
]}
/>

Unarchive#

A button to unarchive the thread. Only shown for archived threads.

This primitive renders a <button> element unless asChild is set.

<ParametersTable
type="ThreadListItemPrimitiveUnarchiveProps"
parameters={[
{
name: "asChild",
},
]}
/>

Delete#

A button to permanently delete the thread.

This primitive renders a <button> element unless asChild is set.

<ParametersTable
type="ThreadListItemPrimitiveDeleteProps"
parameters={[
{
name: "asChild",
},
]}
/>

Examples#

Basic Thread List Item#

const MyThreadListItem = () => {
  return (
    <ThreadListItemPrimitive.Root className="thread-item">
      <ThreadListItemPrimitive.Trigger className="thread-trigger">
        <ThreadListItemPrimitive.Title />
      </ThreadListItemPrimitive.Trigger>
      <div className="thread-actions">
        <ThreadListItemPrimitive.Archive>
          Archive
        </ThreadListItemPrimitive.Archive>
        <ThreadListItemPrimitive.Delete>
          Delete
        </ThreadListItemPrimitive.Delete>
      </div>
    </ThreadListItemPrimitive.Root>
  );
};

Archived Thread List Item#

const ArchivedThreadListItem = () => {
  return (
    <ThreadListItemPrimitive.Root className="archived-thread-item">
      <ThreadListItemPrimitive.Trigger>
        <ThreadListItemPrimitive.Title />
      </ThreadListItemPrimitive.Trigger>
      <ThreadListItemPrimitive.Unarchive>
        Restore
      </ThreadListItemPrimitive.Unarchive>
      <ThreadListItemPrimitive.Delete>
        Delete Permanently
      </ThreadListItemPrimitive.Delete>
    </ThreadListItemPrimitive.Root>
  );
};