This component no longer exists. It was in ondo-ui’s manifest when we first indexed it and is not there now — the registry served its inventory on 2026-08-09 and this item was not on it. The install command below will fail. It is kept here because a tutorial somewhere still tells people to run it.
message-scroller
ondo-ui/message-scrollerRemovedComponent
A scroll container for conversational UIs that keeps new messages pinned to the bottom, with a scroll-to-bottom button.
Install it
npx shadcn@latest add https://ui.ondo.dou.so/r/message-scroller.jsonSource
1"use client"23import * as React from "react"4import {5 MessageScroller as MessageScrollerPrimitive,6 useMessageScroller,7 useMessageScrollerScrollable,8 useMessageScrollerVisibility,9} from "@shadcn/react/message-scroller"1011import { cn } from "@/lib/utils"12import { Button } from "@/components/ui/button"13import { IconArrowDown } from "@tabler/icons-react"1415function MessageScrollerProvider(16 props: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>17) {18 return <MessageScrollerPrimitive.Provider {...props} />19}2021function MessageScroller({22 className,23 ...props24}: React.ComponentProps<typeof MessageScrollerPrimitive.Root>) {25 return (26 <MessageScrollerPrimitive.Root27 data-slot="message-scroller"28 className={cn(29 "group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",30 className31 )}32 {...props}33 />34 )35}3637function MessageScrollerViewport({38 className,39 ...props40}: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>) {41 return (42 <MessageScrollerPrimitive.Viewport43 data-slot="message-scroller-viewport"44 className={cn(45 "size-full min-h-0 min-w-0 scroll-fade-b scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent",46 className47 )}48 {...props}49 />50 )51}5253function MessageScrollerContent({54 className,55 ...props56}: React.ComponentProps<typeof MessageScrollerPrimitive.Content>) {57 return (58 <MessageScrollerPrimitive.Content59 data-slot="message-scroller-content"60 className={cn("flex h-max min-h-full flex-col gap-8", className)}61 {...props}62 />63 )64}6566function MessageScrollerItem({67 className,68 scrollAnchor = false,69 ...props70}: React.ComponentProps<typeof MessageScrollerPrimitive.Item>) {71 return (72 <MessageScrollerPrimitive.Item73 data-slot="message-scroller-item"74 scrollAnchor={scrollAnchor}75 className={cn(76 "min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",77 className78 )}79 {...props}80 />81 )82}8384function MessageScrollerButton({85 direction = "end",86 className,87 children,88 render,89 variant = "secondary",90 size = "icon-sm",91 ...props92}: React.ComponentProps<typeof MessageScrollerPrimitive.Button> &93 Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {94 return (95// … truncated
What it pulls in
npm packages
Other registry items
