Faber UI
Components

Message Scroller

A scrollable message container with auto-scroll and a jump button.

MessageScroller is a scrollable container for chat-style message lists. It auto-scrolls to the latest message and shows a floating button to jump back to the start or end.

Installation

Terminal
pnpm dlx shadcn@latest add https://faber-ui.vercel.app/r/message-scroller.json

Usage

typescript
"use client";

import {
  MessageScroller,
  MessageScrollerButton,
  MessageScrollerContent,
  MessageScrollerItem,
  MessageScrollerProvider,
  MessageScrollerViewport,
} from "@/components/ui/message-scroller";

export default function Example() {
  return (
    <MessageScrollerProvider>
      <MessageScroller className="h-[300px]">
        <MessageScrollerViewport>
          <MessageScrollerContent>
            <MessageScrollerItem>First message</MessageScrollerItem>
            <MessageScrollerItem>Second message</MessageScrollerItem>
            <MessageScrollerItem>Third message</MessageScrollerItem>
          </MessageScrollerContent>
        </MessageScrollerViewport>
        <MessageScrollerButton />
      </MessageScroller>
    </MessageScrollerProvider>
  );
}

Examples

Default

First message
Second message
Third message
Fourth message
Fifth message

API

Each part forwards every prop of what it is built on, including className and render where Base UI supports it. The props column lists only what Faber UI adds on top.

PartBuilt onProps
MessageScrollerProviderMessageScroller.Provider@shadcn/react/message-scroller—
MessageScrollerdata-slot="message-scroller"MessageScroller.Root@shadcn/react/message-scroller—
MessageScrollerViewportdata-slot="message-scroller-viewport"MessageScroller.Viewport@shadcn/react/message-scroller—
MessageScrollerContentdata-slot="message-scroller-content"MessageScroller.Content@shadcn/react/message-scroller—
MessageScrollerItemdata-slot="message-scroller-item"MessageScroller.Item@shadcn/react/message-scroller—
MessageScrollerButtondata-slot="message-scroller-button"MessageScroller.Button@shadcn/react/message-scroller
  • variant? = "secondary"React.ComponentProps<typeof Button>["variant"]
  • size? = "icon-sm"React.ComponentProps<typeof Button>["size"]
useMessageScrollerHook—
useMessageScrollerScrollableHook—
useMessageScrollerVisibilityHook—

Changelog

  1. v0.3.0Transitions using transition-control now animate, Drawer and Sheet use the drawer curve, the Sidebar collapse eases instead of moving linearly, and MessageScroller exits faster than it enters.patch
Full MessageScroller history

Last updated on

On this page