UX Standards — 14: Component Quick Reference
Purpose: Master lookup table — given any UI element, find the component, file path, and spec doc.
Parent rules: See 00-OVERVIEW-AND-CSS-RULES.md first.
Layout Components
| UI Element | Component | File Path | Spec Doc |
|---|---|---|---|
| Full page shell (Orchestrate) | DashboardLayoutClient | orchestrate-frontend/src/app/(dashboard)/dashboard-layout-client.tsx | 01 |
| Full page shell (Accelerate) | DashboardLayout | modules/fax-automation/app/web-fax-dashboard/components/dashboard-layout.tsx | 01 |
| Sticky header | Header | orchestrate-frontend/packages/shared/components/layouts/header.tsx | 02 |
| App sidebar (Orchestrate) | AppSidebar | orchestrate-frontend/packages/shared/components/layouts/app-sidebar.tsx | 03 |
| Sidebar nav groups | NavGroup | orchestrate-frontend/packages/shared/components/layouts/sidebar-nav.tsx | 03 |
| Sidebar user card | SidebarUser | orchestrate-frontend/packages/shared/components/layouts/sidebar-user.tsx | 03 |
| Footer | Footer | orchestrate-frontend/packages/shared/components/layouts/footer.tsx | 13 |
| Page title map | pageTitleMap | orchestrate-frontend/packages/shared/components/layouts/page-titles.ts | 04 |
| Page title override | usePageTitleOverride | orchestrate-frontend/src/components/layouts/page-title-override-context.tsx | 04 |
Page Structure Components
| UI Element | Component | File Path | Spec Doc |
|---|---|---|---|
| Universal list page shell | DocTypeListPage | orchestrate-frontend/src/components/doctype-list-page.tsx | 01, 06, 07, 08 |
| State-based tabs | TabbedPageLayout | orchestrate-frontend/src/components/tabbed-page-layout.tsx | 05 |
| Route-based tabs | RouteTabbedLayout | orchestrate-frontend/src/components/route-tabbed-layout.tsx | 05 |
| Stats summary cards | StatCard (inside DocTypeListPage) | orchestrate-frontend/src/components/doctype-list-page.tsx | 06 |
Data Table Components
| UI Element | Component | File Path | Spec Doc |
|---|---|---|---|
| Table with sorting + DnD | DataTableSortable | components/data-table/data-table-sortable.tsx | 07 |
| Toolbar above table | DataTableToolbar | components/data-table/data-table-toolbar.tsx | 08 |
| Column header + filter popup | DataTableColumnHeader | components/data-table/data-table-column-header.tsx | 09 |
| Column visibility/reorder | DataTableColumnSelector | components/data-table/data-table-column-selector.tsx | 09 |
| Pagination footer | DataTablePagination | components/data-table/data-table-pagination.tsx | 07, 08 |
| Toolbar icon button | DataTableIconButton | components/data-table/data-table-icon-button.tsx | 08 |
| Advanced filter builder | DataTableFilterBuilder | components/data-table/data-table-filter-builder.tsx | 09 |
| Resizable record detail | ResizableDialog | components/data-table/resizable-dialog.tsx | 12 |
Modal and Overlay Components
| UI Element | shadcn Component | Import Path | Spec Doc |
|---|---|---|---|
| Standard modal | Dialog | @/components/ui/dialog | 11 |
| Blocking confirmation | AlertDialog | @/components/ui/alert-dialog | 11 |
| Slide-over panel | Sheet | @/components/ui/sheet | 12 |
| Dropdown menu | DropdownMenu | @/components/ui/dropdown-menu | 09 |
| Popover | Popover | @/components/ui/popover | — |
| Tooltip | Tooltip | @/components/ui/tooltip | 08 |
| Import wizard | ImportDialog | @/components/import-dialog/import-dialog.tsx | 10 |
| Persistent popup | openPersistentPopup() | @/lib/popup/persistent-popup | 12, 13 |
Header Right Zone Components
| UI Element | Component | Import Path | Spec Doc |
|---|---|---|---|
| Anna AI button | AnnaButton | @/components/anna/anna-button | 02 |
| Command search | CommandSearchButton | @/components/search/command-search-button | 02 |
| Notification bell | NotificationBell | (built into layout) | 02 |
| Help / helpdesk | HelpdeskButton | @/components/helpdesk/helpdesk-button | 02 |
| Language selector | LanguageSelector | @/components/language-selector | 02 |
| Dark mode toggle | ThemeToggle | @/components/theme-toggle | 02 |
| User avatar / menu | UserMenu | @/components/user-menu | 02 |
Form Components (shadcn)
| UI Element | Component | Import Path |
|---|---|---|
| Text input | Input | @/components/ui/input |
| Textarea | Textarea | @/components/ui/textarea |
| Select dropdown | Select | @/components/ui/select |
| Checkbox | Checkbox | @/components/ui/checkbox |
| Radio group | RadioGroup | @/components/ui/radio-group |
| Switch/toggle | Switch | @/components/ui/switch |
| Form label | Label | @/components/ui/label |
| Form wrapper | Form (RHF integration) | @/components/ui/form |
| Date picker | Calendar + Popover | @/components/ui/calendar |
Display Components (shadcn)
| UI Element | Component | Import Path |
|---|---|---|
| Status badge / pill | Badge | @/components/ui/badge |
| Card container | Card | @/components/ui/card |
| Separator / divider | Separator | @/components/ui/separator |
| User avatar | Avatar | @/components/ui/avatar |
| Loading skeleton | Skeleton | @/components/ui/skeleton |
| Alert banner | Alert | @/components/ui/alert |
| Progress bar | Progress | @/components/ui/progress |
| Tabs (inline) | Tabs | @/components/ui/tabs |
| Collapsible section | Collapsible | @/components/ui/collapsible |
| Hover card | HoverCard | @/components/ui/hover-card |
Common CSS Patterns Quick Reference
Status Badge Pattern
// Active / Success (green)
<Badge className="bg-primary/10 border border-primary/20 text-primary">Active</Badge>
// Inactive / Neutral (gray)
<Badge className="bg-muted border border-border text-muted-foreground">Inactive</Badge>
// Error / Failed (red)
<Badge className="bg-destructive/10 border border-destructive/20 text-destructive">Error</Badge>
// Pending (gray + pulse)
<Badge className="bg-muted border border-border text-muted-foreground animate-pulse">Pending</Badge>
Icon Button Standard (Header)
<Button variant="ghost" size="icon" className="h-9 w-9" aria-label="Description">
<IconName className="h-4 w-4" />
</Button>
Icon Button Standard (Toolbar)
<Button variant="ghost" size="icon" className="h-8 w-8" aria-label="Description">
<IconName className="h-4 w-4" />
</Button>
Nav Item Active/Inactive
// Active
"px-3 py-2 rounded-lg flex items-center gap-2 bg-primary text-primary-foreground font-medium"
// Inactive
"px-3 py-2 rounded-lg flex items-center gap-2 text-muted-foreground hover:bg-muted transition-colors"
Card Container
<div className="rounded-lg border bg-card p-4">
Section Header Label
<p className="px-3 text-xs font-semibold text-muted-foreground mb-2">SECTION NAME</p>
Form Field Group
<div className="space-y-2">
<Label htmlFor="field">Field Label</Label>
<Input id="field" ... />
{error && <p className="text-xs text-destructive">{error.message}</p>}
</div>
Key Measurements Quick Reference
| Element | Size |
|---|---|
| Header height | h-16 (64px) |
| Footer height | h-12 (48px) |
| Sidebar width | w-64 (256px) |
| Content padding | p-6 (24px) |
| Header icon button | h-9 w-9 (36px) |
| Toolbar icon button | h-8 w-8 (32px) |
| Header icon | h-4 w-4 (16px) |
| Nav icon | h-4 w-4 (16px) |
| Stat card icon | h-5 w-5 (20px) |
| Empty state icon | h-12 w-12 (48px) |
| Loading spinner | h-8 w-8 (32px) |
| Search input | h-8 w-48 lg:w-64 |
| Page input | h-8 w-12 |
| User avatar | h-8 w-8 (32px) |
| App icon (sidebar) | h-10 w-10 (40px) |
| Notification badge | min-w-[16px] h-4 |
| Table row (compact) | h-8 (32px) |
| Table row (default) | h-10 (40px) |
| Table row (large) | h-14 (56px) |
Icon Reference Quick Map
| Action | Icon | Import |
|---|---|---|
| Add / Create | Plus | lucide-react |
| Edit | Pencil | lucide-react |
| Delete | Trash2 | lucide-react |
| View | Eye | lucide-react |
| Copy | Copy | lucide-react |
| Duplicate | Files | lucide-react |
| Bulk Edit | SquarePen | lucide-react |
| Refresh | RefreshCw | lucide-react |
| Import | Upload | lucide-react |
| Export | Download | lucide-react |
| Filter | Filter | lucide-react |
| Clear Filter | FilterX | lucide-react |
| Sort | ChevronsUpDown | lucide-react |
| Sort Asc | ArrowUp | lucide-react |
| Sort Desc | ArrowDown | lucide-react |
| Search | Search | lucide-react |
| Close / Clear | X | lucide-react |
| More actions | MoreHorizontal | lucide-react |
| Notification | Bell | lucide-react |
| Settings | Settings | lucide-react |
| Help | HelpCircle | lucide-react |
| User | User | lucide-react |
| Mobile menu | Menu | lucide-react |
| Attachment | Paperclip | lucide-react |
| Download file | FileDown | lucide-react |
Mail | lucide-react | |
| Pin | Pin | lucide-react |
| Unpin | PinOff | lucide-react |
| Column density | Rows3 | lucide-react |
| Chevron right | ChevronRight | lucide-react |
| Chevron left | ChevronLeft | lucide-react |
| First page | ChevronsLeft | lucide-react |
| Last page | ChevronsRight | lucide-react |
| Drag handle | GripVertical | lucide-react |
| Hide column | EyeOff | lucide-react |
File Path Structure
Orchestrate Frontend
orchestrate-frontend/
├── src/
│ ├── app/
│ │ └── (dashboard)/
│ │ ├── dashboard-layout-client.tsx ← Layout shell
│ │ └── master-data/
│ │ └── product-setup/page.tsx ← Example page
│ ├── components/
│ │ ├── doctype-list-page.tsx ← Universal list page shell
│ │ ├── tabbed-page-layout.tsx ← State-based tabs
│ │ ├── route-tabbed-layout.tsx ← Route-based tabs
│ │ └── import-dialog/
│ │ └── import-dialog.tsx ← Import wizard
│ └── components/ui/ ← shadcn components
└── packages/
└── shared/
└── components/
└── layouts/
├── header.tsx ← Sticky header
├── app-sidebar.tsx ← Orchestrate sidebar
├── sidebar-nav.tsx ← Nav group items
├── sidebar-user.tsx ← User card
├── footer.tsx ← Footer
└── page-titles.ts ← Title registry
Accelerate Modules
modules/
├── fax-automation/
│ └── app/web-fax-dashboard/
│ ├── components/
│ │ └── dashboard-layout.tsx ← Fax module layout
│ └── app/
│ └── (dashboard)/
│ └── [page]/page.tsx
└── referral-automation/
└── web-outreach-dashboard/
├── components/
│ └── data-table/ ← All UDT components live here
│ ├── data-table-sortable.tsx
│ ├── data-table-toolbar.tsx
│ ├── data-table-column-header.tsx
│ ├── data-table-column-selector.tsx
│ ├── data-table-pagination.tsx
│ ├── data-table-icon-button.tsx
│ ├── data-table-filter-builder.tsx
│ └── summary-widgets.tsx
└── layout.tsx
Document Index
| # | File | Covers |
|---|---|---|
| 00 | 00-OVERVIEW-AND-CSS-RULES.md | Tech stack, CSS variables, foundational rules |
| 01 | 01-LAYOUT-SHELL.md | Page shell, zones, spacing, mobile behavior |
| 02 | 02-HEADER.md | Header: three zones, icons, page title |
| 03 | 03-SIDEBAR-NAVIGATION.md | Sidebar: nav groups, items, collapse, user card |
| 04 | 04-PAGE-TITLE-AND-SUBTITLE.md | Title/subtitle, pageTitleMap, override context |
| 05 | 05-TAB-NAVIGATION.md | State-based vs route-based tabs, active styles |
| 06 | 06-STATS-SUMMARY-CARDS.md | Stat cards: layout, variants, grid rules |
| 07 | 07-UNIVERSAL-DATA-TABLE.md | UDT: columns, density, selection, pinning |
| 08 | 08-UDT-TOOLBAR.md | Toolbar buttons, order, search, pagination |
| 09 | 09-COLUMN-FILTER-POPUP.md | Column header dropdown: sort, filter, hide |
| 10 | 10-IMPORT-WIZARD-MODAL.md | 6-step import wizard: each step spec |
| 11 | 11-MODALS-AND-DIALOGS.md | Dialog sizes, CTAs, form dialogs, alerts |
| 12 | 12-POPOUT-AND-SLIDE-OVER-WINDOWS.md | Persistent popups, Sheet slide-overs |
| 13 | 13-FOOTER.md | Footer spec, height, content, policy links |
| 14 | 14-COMPONENT-QUICK-REFERENCE.md | This file — master lookup table |