Target · KB v2 mockup
Team overview dashboard. Team avatar/name header (editable for admins) + widget grid of sessions, members, recordings, bubbles, repos.
apps/web/app/(public)/team/[team_id]/page.tsx
Primary components
TeamAvatar apps/web/src/components/teams/TeamAvatar.tsxTeamHeaderEditable apps/web/src/components/teams/TeamHeaderEditable.tsxTeamSessionsSection apps/web/src/components/teams/TeamSessionsSection.tsxTeamPeopleSection apps/web/src/components/teams/TeamPeopleSection.tsxTeamBubblesSection apps/web/src/components/teams/TeamBubblesSection.tsx
States
- Member view
- Admin view — Inline-editable header + invite + manage controls.
- Public view — Read-only projection for non-members (if visibility = public).
- Public preview — Member toggles "preview as public"; PublicPreviewBar visible.
- Empty — Brand-new team with only the owner.
Variations
- Member vs admin vs public
- Public preview mode (member-only toggle)
- Visibility public vs private
Design notes
- Dashboard-widget pattern is unique to the team hub. Different from KB's tab-based detail page. Consider whether this is intentional design language (teams = home base; KB = focused workspace) or drift.
- Editable header (TeamHeaderEditable) is a high-value pattern — same inline-edit affordance should be in KB settings.
- PublicPreviewBar is unique to teams; consider lifting to a primitive if other surfaces gain public-preview modes.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-list.png and rebuild. See catalog/README.md §Screenshot requirement.
Dashboard of teams the user is in. Distinct from /settings/teams (which is the same data with different chrome).
apps/web/app/(public)/team/page.tsx
States
- Empty
- Member of 1+
- Pending invites
Design notes
- Duplication risk: /team and /settings/teams render largely the same data. One should be the canonical surface; the other should redirect.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-media.png and rebuild. See catalog/README.md §Screenshot requirement.
Filterable gallery of team recordings + photos.
apps/web/app/(public)/team/[team_id]/media/page.tsx
States
- Recordings tab
- Photos tab
- Filtered (date range)
- Filtered (speaker)
- Empty
Design notes
- Gallery-with-filters pattern. Reuse the canonical ListToolbar + filter-chips primitive.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-sessions.png and rebuild. See catalog/README.md §Screenshot requirement.
List of team work sessions (AI coworker sessions).
apps/web/app/(public)/team/[team_id]/sessions/page.tsx
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-context.png and rebuild. See catalog/README.md §Screenshot requirement.
Team knowledge base — context nodes (architectural decisions, conventions, etc.).
apps/web/app/(public)/team/[team_id]/context/page.tsx
Design notes
- Overlap with KB area — team context is effectively a team-scoped knowledge bubble. Consider whether this should redirect to the team's KB.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-settings-general.png and rebuild. See catalog/README.md §Screenshot requirement.
Team name, avatar, description, visibility toggle, invite code, danger zone.
apps/web/app/(public)/team/[team_id]/settings/page.tsx
Primary components
InviteCodeWidget apps/web/src/components/teams/InviteCodeWidget.tsx
States
- Default
- Saving
- Visibility toggle confirm — Switching to public surfaces a confirmation step.
Design notes
- Team settings use full-width pages, NOT a sidebar. Different from user /settings which uses SettingsLayout sidebar. Decide which pattern is canonical and converge.
- Visibility toggle deserves a stronger affordance — currently a Switch; consider a labeled toggle-group with explicit "Private · Public" segments.
Target · KB v2 mockup
Admin-level bubble management: transfer ownership, change visibility, delete, audit grants.
apps/web/app/(public)/team/[team_id]/settings/bubbles/page.tsx
Primary components
TransferOwnershipModal apps/web/src/components/teams/TransferOwnershipModal.tsxChangeVisibilityModal apps/web/src/components/teams/ChangeVisibilityModal.tsxDeleteBubbleModal apps/web/src/components/teams/DeleteBubbleModal.tsxAuditGrantsSheet apps/web/src/components/teams/AuditGrantsSheet.tsx
States
- List
- Transfer modal
- Visibility modal
- Delete confirm
- Audit sheet
Design notes
- Three separate modals (transfer, visibility, delete) plus a sheet (audit). Four overlay primitives in one page — opportunity to consolidate into a single contextual action panel.
- Audit grants surface should converge with /audit area patterns (currently nascent).
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-settings-channel-bubbles.png and rebuild. See catalog/README.md §Screenshot requirement.
Link / unlink Slack and Mattermost channels to KB channel bubbles.
apps/web/app/(public)/team/[team_id]/settings/channel-bubbles/page.tsx
Primary components
LinkedChannelRow apps/web/src/components/teams/LinkedChannelRow.tsxAvailableChannelRow apps/web/src/components/teams/AvailableChannelRow.tsx
States
- Linked channels list
- Available to link
- Linking in progress
- Empty (no integration connected)
Design notes
- Two parallel row types (Linked / Available) with different actions. Consider one row primitive with action-set as a slot.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-settings-integrations.png and rebuild. See catalog/README.md §Screenshot requirement.
Connect / manage Slack, Mattermost, GitHub integrations at team scope.
apps/web/app/(public)/team/[team_id]/settings/integrations/page.tsx
Primary components
ProviderCard apps/web/src/components/teams/ProviderCard.tsxProviderIcon apps/web/src/components/teams/ProviderIcon.tsx
States
- All disconnected — Each provider shows Connect.
- Mixed
- All connected — Per-provider workspace + channels CTA.
Variations
- Per-provider connected state
Design notes
- ProviderCard pattern is good — generic enough to be lifted into a shared IntegrationCard primitive used by user-settings OAuth too.
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-claim.png and rebuild. See catalog/README.md §Screenshot requirement.
Claim team via invite code as part of onboarding.
apps/web/app/(public)/team/[team_id]/claim/page.tsx
States
- Valid code
- Invalid code
- Claimed successfully
No screenshot yet
Screenshot missing — required. Drop a 1920×1080 PNG at apps/web/catalog-screenshots/console/team-join.png and rebuild. See catalog/README.md §Screenshot requirement.
Public join surface — invite link landing for new and existing users.
apps/web/app/(public)/join/[team_id]/page.tsx
States
- Unauthenticated
- Authenticated · not a member
- Already a member
- Link expired/revoked
Design notes
- Public-onboarding surface. Currently lives at /join/[team_id]; KB invite is at /kb/invite/[token]. Two different invite-acceptance shells — converge.