Neela Dock — launcher, panel shell and activity states
The built canon for Neela in the signed-in app, redrawn from components/neela/NeelaDock.tsx,
NeelaActivityMark.tsx, ui/NeelaAvatarDisc.tsx, ui/NeelaMark.tsx, the docked
mode of chat/ChatInterface.tsx, chat/NeelaBubbleRow.tsx and chat/surfaceConfig.ts.
Every colour is a tokens.css token, so the theme switch shows both themes of the same markup.
This replaces the earlier concept board (header avatar, ambient orb and pill launcher concepts), which the
shipped dock superseded.
Collapsed dock tab and phone launcher
On desktop Neela is not a floating button. With the dock closed it is a 40 px tab that runs the full height
of the viewport beside the page, with the small activity mark aligned to the page header and the word Neela set
vertically. On a phone the launcher is an outline pill fixed above the bottom navigation. Both carry the
accessible name Open Neela.
Sticky, full viewport height, 40 px wide. A file dragged onto the tab opens the dock and starts document intake.
44 px outline pill with the surface fill and --app-shadow, 16 px from the
right edge, above the bottom navigation.
Open dock beside the page
The dock is an aside labelled Neela that pushes the page instead of covering it. It opens at
380 px and resizes from its left edge between 320 and 600 px, by pointer drag or the arrow keys on the
focused grip. Escape collapses it back to the tab. From top to bottom: the header band, the scope row that says
what Neela sees, the exchange brief when an exchange is in scope, the conversation, and the ask bar.
Docked mode has no centred greeting disc: the greeting sits top-left and exchanger prompts render as a full-width list. Operator surfaces render their prompts as wrapping chips.
The header band is --neela-header-field: the brand teal band with a white title in light, a card-coloured
band in dark. Inside the dock the surface, line and muted-ink tokens are re-pointed at the
--neela-card family, so every card, chip and input reads as one material.
Header activity mark
One mark carries Neela's state; there is no separate status pill or hero orb. The mark sits on its avatar disc (mint in light, sapphire in dark, never on teal) and changes variant, ring and level bars with the activity. Reduced motion stops the orbit, the blink, the pulse and the scale.
Idle
Slow orbit and an occasional blink.
Listening
Action-colour ring with a soft pulse while the mic is open.
Thinking
Fast orbit, a third moon and narrowed eyes.
Speaking
Scale and five level bars follow the voice amplitude.
Done
Closed-eye smile and the check moon.
Full-height sheet
On a phone the same panel body opens in a full-height bottom sheet. The header leaves room on the right for the sheet's own close button, there is no collapse control or resize grip, and the attach control offers the camera or a file.
Neela
One dock, four signed-in surfaces
Every signed-in shell mounts the same dock through NeelaWorkspace. The header always reads Neela; the
surface changes the greeting, the starter prompts, the widest scope option and whether voice starts on.
| Surface | Greeting | Starter prompts | Widest scope | Voice at start |
|---|---|---|---|---|
| Exchanger | Ask about your deadlines, documents, or next step. | Start an exchange · What's my deadline? · Check my docs · Propose a property | Everything with you | On |
| QI Ops | Ask across the exchanges in your book. | Which exchanges have day 45 inside 10 days? · Which disbursements wait on a second officer? · What arrived since yesterday? | Your book | Off |
| QI Hub | Exchanges, deadlines, and document status. | Deadline exposure · Document status · Exchange progress | Your book | Off |
| Platform admin | Exchanges, KYC, countersignatures, and deadlines. | Rank by deadline · KYC pending · Doc backlog | Everything with you | Off |
Every surface also offers This page, and This exchange and This document once an exchange is open. The public
marketing site and the website embed widget use their own launchers (PublicChatLauncher and
surfaces/neela-embed-widget.html) and are out of scope for this page.