83 lines
5.0 KiB
Markdown
83 lines
5.0 KiB
Markdown
# UI Surface Map
|
|
|
|
This file maps stable UI IDs to the source files an agent should inspect before changing a surface.
|
|
|
|
Machine-readable map: `docs/ui-inventory/surfaces.json`.
|
|
|
|
## Shell Surfaces
|
|
|
|
| UI ID | Source | Purpose |
|
|
| --- | --- | --- |
|
|
| `ui.surface.shell.header` | `apps/web/app/components/layouts/sidebars/shadcn/ShadcnSidebarLayout.tsx` | Authenticated shell header. |
|
|
| `ui.surface.shell.breadcrumb` | `apps/web/app/components/layouts/sidebars/shadcn/ShadcnSidebarLayout.tsx` | Header breadcrumb container. |
|
|
| `ui.surface.shell.breadcrumb.current` | `apps/web/app/components/layouts/sidebars/shadcn/ShadcnSidebarLayout.tsx` | Current page title. |
|
|
| `ui.surface.shell.navActions` | `apps/web/app/components/layouts/sidebars/shadcn/nav-actions.tsx` | Header right action area. |
|
|
| `ui.surface.shell.main` | `apps/web/app/components/layouts/sidebars/shadcn/ShadcnSidebarLayout.tsx` | Authenticated page content. |
|
|
|
|
## Sidebar Surfaces
|
|
|
|
| UI ID | Source | Purpose |
|
|
| --- | --- | --- |
|
|
| `ui.surface.app.sidebar` | `apps/web/app/components/layouts/sidebars/shadcn/app-sidebar.tsx`, `apps/web/app/application/sidebar/AppSidebar.tsx` | Tenant app sidebar. |
|
|
| `ui.surface.admin.sidebar` | `apps/web/app/components/layouts/sidebars/shadcn/app-sidebar.tsx`, `apps/web/app/application/sidebar/AdminSidebar.tsx` | Admin sidebar. |
|
|
| `ui.surface.docs.sidebar` | `apps/web/app/components/layouts/sidebars/shadcn/app-sidebar.tsx`, `apps/web/app/application/sidebar/DocsSidebar.ts` | Docs sidebar. |
|
|
|
|
## Header Actions
|
|
|
|
| UI ID | Source | Purpose |
|
|
| --- | --- | --- |
|
|
| `ui.action.shell.sidebarTrigger` | `ShadcnSidebarLayout.tsx`, `apps/web/app/components/ui/sidebar.tsx` | Open/collapse sidebar. |
|
|
| `ui.action.shell.search` | `nav-actions.tsx`, `SearchButton.tsx` | Open command palette/search. |
|
|
| `ui.action.shell.aiAssistant` | `nav-actions.tsx` | Open AI assistant. |
|
|
| `ui.action.shell.notifications` | `nav-actions.tsx` | Notifications. |
|
|
| `ui.action.shell.onboarding` | `nav-actions.tsx` | Onboarding. |
|
|
| `ui.action.shell.feedback` | `nav-actions.tsx` | Feedback dialog. |
|
|
| `ui.action.shell.chatSupport` | `nav-actions.tsx` | External support chat. |
|
|
| `ui.action.shell.more` | `nav-actions.tsx` | More menu. |
|
|
| `ui.action.shell.profile` | `ProfileButton.tsx`, `nav-actions.tsx` | Profile action. |
|
|
| `ui.action.shell.subscription` | `nav-actions.tsx` | Subscription action. |
|
|
| `ui.action.shell.signOut` | `nav-actions.tsx` | Sign out. |
|
|
|
|
## Core Nav IDs
|
|
|
|
| UI ID | Source | Purpose |
|
|
| --- | --- | --- |
|
|
| `ui.nav.app.dashboard` | `AppSidebar.tsx` | Tenant dashboard. |
|
|
| `ui.nav.app.settings` | `AppSidebar.tsx` | Tenant settings. |
|
|
| `ui.nav.app.switchToAdmin` | `AppSidebar.tsx` | Tenant-to-admin switch. |
|
|
| `ui.nav.admin.dashboard` | `AdminSidebar.tsx` | Admin dashboard. |
|
|
| `ui.nav.admin.accounts` | `AdminSidebar.tsx` | Accounts and users. |
|
|
| `ui.nav.admin.analytics` | `AdminSidebar.tsx` | Analytics. |
|
|
| `ui.nav.admin.entities` | `AdminSidebar.tsx` | Entity builder/runtime. |
|
|
| `ui.nav.admin.workflows` | `AdminSidebar.tsx` | Workflow plugin candidate. |
|
|
| `ui.nav.admin.api` | `AdminSidebar.tsx` | API key area. |
|
|
| `ui.nav.admin.events` | `AdminSidebar.tsx` | Events. |
|
|
| `ui.nav.admin.auditTrails` | `AdminSidebar.tsx` | Audit trails. |
|
|
| `ui.nav.admin.notifications` | `AdminSidebar.tsx` | Notifications. |
|
|
| `ui.nav.admin.featureFlags` | `AdminSidebar.tsx` | Feature flags. |
|
|
| `ui.nav.admin.navigation` | `AdminSidebar.tsx` | Navigation configuration. |
|
|
| `ui.nav.admin.portals` | `AdminSidebar.tsx` | Portals plugin candidate. |
|
|
| `ui.nav.admin.prompts` | `AdminSidebar.tsx` | Prompt builder plugin candidate. |
|
|
| `ui.nav.admin.emailMarketing` | `AdminSidebar.tsx` | Email marketing plugin candidate. |
|
|
| `ui.nav.admin.knowledgeBase` | `AdminSidebar.tsx` | Knowledge base plugin candidate. |
|
|
| `ui.nav.admin.helpDesk` | `AdminSidebar.tsx` | Help desk plugin candidate. |
|
|
| `ui.nav.admin.onboarding` | `AdminSidebar.tsx` | Onboarding. |
|
|
| `ui.nav.admin.metrics` | `AdminSidebar.tsx` | Metrics. |
|
|
| `ui.nav.admin.settings` | `AdminSidebar.tsx` | Admin settings. |
|
|
| `ui.nav.admin.switchToApp` | `AdminSidebar.tsx` | Admin-to-app switch. |
|
|
| `ui.nav.docs.introduction` | `DocsSidebar.ts` | Docs introduction. |
|
|
|
|
## Dynamic Patterns
|
|
|
|
| Pattern | Source | Notes |
|
|
| --- | --- | --- |
|
|
| `ui.nav.app.entity.{entityName}` | `AppSidebar.tsx` | Tenant entity nav entries. |
|
|
| `ui.nav.app.entityGroup.{groupSlug}` | `AppSidebar.tsx` | Tenant entity group nav entries. |
|
|
| `ui.nav.app.entityGroup.{groupSlug}.entity.{entityName}` | `AppSidebar.tsx` | Nested entity group entries. |
|
|
| `ui.nav.app.section.{sectionName}` | `AppSidebar.tsx` | Tenant sidebar sections. |
|
|
| `ui.nav.docs.route.{routeSlug}` | `DocsSidebar.ts` | Docs route entries. |
|
|
|
|
## Agent Guidance
|
|
|
|
When a prompt says "header right", "search", "sidebar", or "settings nav", resolve it to a UI ID first, then inspect the mapped source file. If no stable UI ID exists for a new surface, add it to `apps/web/app/application/ui/uiRegistry.ts`, render it as `data-ui-id`, update `surfaces.json`, and add a DOM test.
|