From 487993aa26a5a3a88e39f7e1b7a88317f1c96bf6 Mon Sep 17 00:00:00 2001 From: galuis116 Date: Thu, 16 Jul 2026 05:37:02 -0400 Subject: [PATCH] docs(ui): audit ui-kit for existing chat-adjacent UI primitives (#6244) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Research-only groundwork for #6230's eventual chat interface: an inventory of what apps/loopover-ui and packages/loopover-ui-kit already have that a future chat surface could reuse against the four primitives it will need (message list, composer, streaming renderer, typing indicator). - Reusable as-is: state-views.tsx's loading/empty/error scaffolding, scroll-area.tsx, avatar.tsx, and the raw textarea/input/button primitives. - Close but needs adaptation: audit-feed.tsx (filtered live-data list, but table-rendered, not bubble-rendered), command-palette.tsx (the only text-input + filtered-list combo, but click-to-navigate, no Enter-to-submit), animated-terminal.tsx (interval-driven typewriter reveal over static scenes, the closest streaming-text precedent). - Entirely absent: a submit-on-Enter composer, any real streaming consumer (grepped for EventSource/ReadableStream/text/event-stream across apps/loopover-ui/src — the one hit is a comment explaining why analytics-proxy.ts deliberately avoids a streaming body), a chat-bubble/message-list component, and an inline typing indicator. No functional code changes accompany this doc, per the issue's own scope ("do not build anything new"). Closes #6244 --- .../src/chat-ui-primitives-audit.md | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 apps/loopover-ui/src/chat-ui-primitives-audit.md diff --git a/apps/loopover-ui/src/chat-ui-primitives-audit.md b/apps/loopover-ui/src/chat-ui-primitives-audit.md new file mode 100644 index 0000000000..1340b67bda --- /dev/null +++ b/apps/loopover-ui/src/chat-ui-primitives-audit.md @@ -0,0 +1,85 @@ +# Chat-adjacent UI primitives audit (#6244) + +Part of #6230 (chat interface spec — scope/backend/placement still open there). This is groundwork +only, per the issue's own scope: an inventory of what `apps/loopover-ui/src/components/**` and +`packages/loopover-ui-kit/src/components/**` already have that a future chat surface could reuse, +against the four primitives #6230 will eventually need. No code changes accompany this doc. + +## What exists and is reusable as-is + +- **Loading / empty / error scaffolding** — `apps/loopover-ui/src/components/site/state-views.tsx` + exports `LoadingState`, `EmptyState`, `ErrorState`, and the composing `StateBoundary`, plus a bare + `Spinner` (a `Loader2` icon with `animate-spin`, disabled under `motion-reduce`). These are already + the app-wide convention for "is this panel loading/empty/erroring" and would drop straight into a + chat panel's outer shell with no adaptation — see the note below on why `Spinner` is not itself a + typing indicator. +- **Composer building blocks** — `packages/loopover-ui-kit/src/components/textarea.tsx` (a plain + `forwardRef` wrapper around `