You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -132,7 +132,7 @@ A component appearing here doesn't mean it's actively used in the default repo
132
132
| Component | What it is | Props | Notes |
133
133
|-----------|------------|-------|-------|
134
134
|`Avatar`| Person / agent / group / channel avatar. Circle for people/agents/groups, rounded-square for channels. Renders an image if `contact.avatar` is set, else an agent logo (via `shared/agentLogos.jsx`) for agents, else `contact.initials` over `contact.color`. |`contact`, `size = 36`, `hideStatus = false`| Status dot auto-draws when `contact.status` is set and auto-scales (~28% of avatar). Pass `hideStatus` to suppress it (e.g. inside `TypingIndicator`). Contacts with `logoInset: true` render the image at 60% inside the avatar with a 1px `#E0E0E0` border — use for edge-to-edge logo PNGs that would otherwise clip (e.g. Figma). See `DESIGN_GUIDE.md` for established sizes per surface. |
135
-
|`LinkCard`| Rich external-link card used inside message bubbles — icon tile + title/subtitle. Today supports Jira and GitHub icon treatments. |`link: { source, title, subtitle, url }`|`source: 'jira' \| 'github'`. Extend the icon set inside the component when a new source is needed. |
135
+
|`LinkCard`| Rich external-link card used inside message bubbles — icon tile + title/subtitle. |`link: { source, title, subtitle, url }`|`source: 'jira' \| 'github' \| 'figma'`. Figma renders the multi-color Figma logo on a dark tile. Extend the icon set inside the component when a new source is needed. |
136
136
|`IconButton`| Accessible icon-only button: consistent reset, hover state, required `aria-label`. |`label`, `active?`, `className?`, `children`, plus any native `<button>` props | Use this instead of hand-rolling a `<button>` with an SVG — callers still add their own className for size/color. |
137
137
|`PrivateDisclaimer`| Lock icon + "Only you can see this conversation" strip. |`text?` (override the default copy) | Used inside private message bubbles and above the agents-rail chat thread. |
138
138
|`TypingIndicator`| Canonical "X is typing" UI — avatar + 3 bouncing dots. **Whenever a task says "typing indicator", it means this.**|`contact`, `avatarSize = 32`, `dotSize = 5`, `className?`| Component owns only the avatar + dots visual; positioning is the caller's job. Main canvas: floats above `Compose` with the avatar's bottom ~10% tucked behind the compose box top edge (see `.chat-compose-area` / `.chat-compose-typing` in `ChatView.css`). Agents rail: in-flow above the rail compose. Add new surface-specific CSS rather than forking the component. |
Copy file name to clipboardExpand all lines: DESIGN_GUIDE.md
+38-8Lines changed: 38 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -161,22 +161,52 @@ New-session empty state for an agent chat: centered 72px avatar + agent name + s
161
161
162
162
**Agents send rich, interactive content via the [Adaptive Cards framework](https://adaptivecards.microsoft.com/)** — the format the Teams team recommends for agent-authoredcontent. When the user asks you to have an agent send content (status summaries, ticket details, action prompts, etc.), reach for an adaptive card rather than freeform text when the content is structured.
163
163
164
-
In the prototype's message model, adaptive cards attach to a message via `message.cards` — an array of card objects. The minimal shape rendered today:
164
+
In the prototype's message model, adaptive cards attach to a message via `message.cards` — an array of card objects. The renderer (in `MessageRow.jsx`) currently supports:
165
165
166
166
```js
167
167
{
168
-
accentColor: '#CA5010', // leftbordercolor
169
-
title: 'Keep users logged in when switching between agents',
actions: ['View in Jira'], // rendered as inline link-style buttons
194
+
195
+
// Subtle metadata strip with a top divider — good for "Generated by..." lines.
196
+
footer: 'Generated by Cowork · Mon 9:11 AM',
197
+
198
+
// Link-style action buttons.
199
+
actions: ['Open in Word', 'Show citations'],
176
200
}
177
201
```
178
202
179
-
Real Adaptive Cards support richer elements (images, input fields, action sets, containers). Extend the renderer in `MessageRow.jsx` and the CSS in `ChatView.css` (`.adaptive-card` and `.card-*`) as the prototype needs them — match the [official Adaptive Cards samples](https://adaptivecards.microsoft.com/) for visual fidelity.
203
+
Schema rules:
204
+
- **Office-app icon tiles** (`iconType: 'word' | 'excel' | 'powerpoint' | 'outlook' | 'teams'`) render a 32px rounded-square tile with the brand color and capital letter — use them for **artifact cards** so generated deliverables read as M365 outputs at a glance. Pair with `accentColor` matching the brand color (`#2B579A` Word, `#217346` Excel, `#B7472A` PowerPoint, `#0078D4` Outlook, `#5B5FC7` Teams).
205
+
- **Plan cards** should use `iconType: 'teams'`, `badge: { text: 'Awaiting approval', tone: 'amber' }`, and `steps` with all `status: 'pending'`. Use `actions: ['Approve & run', 'Edit plan']` (or similar) so the plan reads as a checkpoint.
206
+
- **Artifact cards** (a deliverable Cowork produced) should use the matching Office `iconType`, a `subtitle` describing what the artifact is, optionally a `badge: { text: 'Ready', tone: 'green' }`, and a `footer: 'Generated by Cowork · <time>'`.
207
+
- **Daily/recurring outputs** (digests, summaries, reports) should use `sections` with one heading per theme — preserves the "scannable, themed" reading pattern users expect from agent reports.
208
+
209
+
Real Adaptive Cards support richer elements still (images, input fields, action sets, containers, choice sets). Extend the renderer in `MessageRow.jsx` and the CSS in `ChatView.css` (`.adaptive-card`, `.card-*`) as the prototype needs them — match the [official Adaptive Cards samples](https://adaptivecards.microsoft.com/) and the [design best-practices guide](https://adaptivecards.microsoft.com/?topic=design-best-practices) for visual fidelity.
0 commit comments