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
`NavRail` is a controlled component driving `activeView` (`'chat' | 'activity'`). When `activity` is active, `ChatList` is swapped for `ActivityList` and `ChatView` renders the chat the selected activity event points at (with that event's source message highlighted).
54
+
51
55
`ChatView` can render up to two right-hand rails alongside the main canvas:
52
56
-**SessionsRail** — list of past agent sessions for the active agent chat (agent chats only)
53
57
-**AgentsRail** — agents in the current conversation + per-agent private chat thread
54
-
-**ChannelThreadRail** — a channel post's replies thread (channel chats only; opens when a reply indicator is clicked)
58
+
-**ChannelThreadRail** — a channel post's replies thread (channel chats only; opens when a reply indicator is clicked, or when an Activity event points at a channel reply)
55
59
56
60
### State lives in `App.jsx`
57
61
58
62
Hoisted so rails and the canvas stay in sync:
59
63
64
+
-`activeView` — `'chat' | 'activity'`, driven by NavRail
60
65
-`activeChatId` — which chat is open
61
66
-`readChatIds` (`Set`) — chats the user has visited; dismisses `bold` + unread-dot in `ChatList`
62
67
-`sessions` — per-agent list of past sessions (starts from `data/sessions.js`, augmented at runtime)
63
68
-`dynamicSessionMessages` — messages for sessions created during the prototype session
64
-
-`navIntent` — one-shot signal to open a specific session when cross-navigating between chats
69
+
-`activityEvents` / `activeActivityId` — notification feed state backing the Activity view
70
+
-`navIntent` — one-shot signal used when cross-navigating between chats. Shape: `{ chatId, sessionId?, channelThreadPostId?, highlightMessageId? }`. ChatView consumes it on the next render to open the sessions rail, auto-open a channel thread, or scroll + flash a specific message
65
71
66
72
`ChatView` owns local state for compose input, which rail is open, per-chat ephemeral flags, scripted/demo flow progress, etc. When `activeChatId` changes, the chat-level state is reset via the render-phase state-adjustment pattern (not a `useEffect`).
67
73
@@ -76,6 +82,7 @@ All mocks live in `src/data/` and are re-exported by `src/data.js` (the barrel).
76
82
-`sessions.js` — `agentSessions`, the initial per-agent session lists
77
83
-`sessionMessages.js` — message history keyed by session id
78
84
-`promptSuggestions.js` — the 2×3 grid of prompt cards shown in the empty state for a new agent session, keyed by agent contact id
85
+
-`activityEvents.js` — `activityEvents`, the chronological notification feed (reactions, replies, mentions) referenced by contact/message/post ids
79
86
80
87
### Contact types
81
88
@@ -95,6 +102,7 @@ Channels are additionally grouped into teams via the `teams` export. Each team h
95
102
-`src/components/common/` — shared primitives meant for reuse across surfaces (`Avatar`, `LinkCard`, `IconButton`, `Icon` library, `PrivateDisclaimer`). Add a new reusable primitive here; don't inline SVGs or hand-roll a button when a common one fits.
96
103
-`src/components/` — feature components for the current surface:
97
104
-`TitleBar`, `NavRail`, `ChatList` — chrome
105
+
-`ActivityList` — left pane when the bell icon is selected; chronological feed of reactions/replies/mentions that target the current user. Clicking an event routes `ChatView` to the source chat (and opens a channel thread or flashes an anchor message when relevant)
98
106
-`ChatView` — the main canvas router; delegates to `ChatHeader`, `Compose`, and the rails
99
107
-`ChatHeader`, `Compose` — split out from `ChatView` to keep it focused on state + routing
100
108
-`MessageRow` — one message bubble (reactions, thread reply badge, link cards, Adaptive Cards)
Copy file name to clipboardExpand all lines: DESIGN_GUIDE.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -106,8 +106,10 @@ Before adding an icon inline, check `src/components/common/Icon.jsx` — the sha
106
106
107
107
### App Bar (Nav Rail) Icons
108
108
109
+
- **Size:** 24×24 SVG inside a 28×28 wrap (larger than Teams' typical 20px — the icons read more clearly at this size and the prototype skews the detail up slightly)
109
110
- **Inactive state:** Outlined icons, `#666666`
110
-
- **Active state:** Filled icons, Teams purple (`#5B5FC7`); same color drives the 3px left-edge active indicator and an 8% tinted background fill (`rgba(91, 95, 199, 0.08)`)
111
+
- **Active state:** Filled icons, Teams purple (`#5B5FC7`); same color drives a 3px left-edge active indicator spanning the **full height of the nav-item row** (flush top to bottom, not capped) and an 8% tinted background fill (`rgba(91, 95, 199, 0.08)`)
112
+
- **Clickable surfaces:** `chat` and `activity` toggle the left pane (ChatList ↔ ActivityList). Others are decorative for now.
0 commit comments