shadcn.io is not affiliated with official shadcn/ui
Scheduled Messages Chat Block for Solid
A messenger thread whose send is a split button with a Send later list for tonight, tomorrow or a picked time, a Scheduled band of waiting messages with dates and Send now and Cancel, and nothing sent by a timer.
Installation
Overview
Send a message later and see what is waiting with this scheduled messages chat for Solid with Ark UI. A hairline frame with a plus mark on each corner holds a window of fixed height for Latertalk, a messenger with send later: the top bar names Odette, who is on a night shift, and the log is a day label and a run of Message and Bubble rows. The composer's send is a Button Group: the Send icon, the one colored control as a Shine Button, and an outline chevron that opens a Popover titled Send later with Tonight 20:00, Tomorrow 09:00 and a native select of 30-minute times for tomorrow. A scheduled message leaves the field for a Scheduled band above the composer, a held-height region of rows with a clock, the text clamped to one line, a date worked out from a fixed day, and Send now and Cancel buttons. Send now moves a row into the log with the next typed time, and Cancel puts its text back in the field. The frame is ruled by Guides. It's for a messenger, a support inbox or any thread where timing matters.
FAQ
What stays in the page, and how do I make it real?
Everything, and nothing sends by itself: there is no timer, and the band says "Nothing sends by itself" and the status line "Nothing is sent later in this demo." To wire it for real, post { text, sendAt } to your server from the schedule function, list the pending ones in the band from a query, and let the server send at sendAt; Send now and Cancel become two API calls.
Where do the dates come from?
From a typed day (AS_OF, Monday 12 October 2026) and a typed time. A row holds a day offset and a time, and one pure function prints "Tue 13 Oct, 09:00" from them with fixed weekday and month names, so the text is the same on every visit and for every locale. Replace AS_OF with the real date and the offsets with timestamps.
How does the Send later list work?
The chevron next to Send opens a small list: two ready times and a select with 30-minute steps for tomorrow with its own Schedule button. Each choice needs text in the field, and if the field is empty the status line asks for a message first and the list stays open. Choosing closes it and returns focus to the field.
What happens to the text when I cancel?
It returns to the field. If the field already holds a draft, the cancelled text is added on a new line under it, so nothing you typed is lost. Focus goes to the field, and after Send now it goes to the next row in the band.
Is it usable with a keyboard and a screen reader?
The band is a labelled region with a list; every button names its action and the date is a real time element. The chevron is called Send later and the list opens with Enter or Space and closes with Escape. Each result is spoken once through the polite status line.