A chat UI has more states than it looks: a reply streaming in, a tool running, a tool waiting for you, a tool that failed, links the reply used. Vercel's AI Elements already worked these out, as open-source React components. We don't use React, but we can borrow the structure: which parts a message has, what a tool card shows in each state. Then rebuild them as Remix components with our one stylesheet.
AI Elements is Apache-2.0, Copyright 2023 Vercel, Inc. Borrowing is allowed, with a condition: keep the notice, and say what you changed.