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 `