Component Library

622 component files (.tsx, excluding tests and stories, as of 2026-06) across frontend/src/components/. Base layer is Shadcn/ui + Radix UI primitives in components/ui/, with domain-specific feature components in dedicated subdirectories.

UI Primitives (components/ui/)

65 base components, 63 of them with co-located CSF3 stories (as of 2026-06). Storybook is mandatory for all new additions (CSF3, tags: ['autodocs']). Story tests run via Vitest with MSW mocking (PR#1966); a Storybook build gate runs in CI (PR#1958).

CategoryComponents
Primitivesbutton, card, badge, label, checkbox, toggle, toggle-group, switch
Overlaysdialog, alert-dialog, sheet, popover, hover-card, tooltip, dropdown-menu
Formsinput, textarea, select, searchable-select, multi-select, radio-group, date-picker-field, timestamp-picker, calendar, markdown-editor, form-stepper
Data Tablesdata-table, compact-data-table, document-table, file-table, file-upload-table, editable-cell
Layoutaccordion, tabs, tab-bar, collapsible, separator, panel-separator, resizable-panel, scroll-area
Feedbacktoast/toaster, progress, skeleton, banner-message, alert, status-pill
Dashboardkpi-card, kpi-strip, phase-stepper
Customaction-chip-selector, bulk-edit-toolbar, color-coded-card, avatar-stack, hubspot-link, toolbar-search-input, EnvironmentBanner

Feature Component Directories

File counts include co-located .ts service modules, exclude tests/stories (as of 2026-06):

DirectoryFilesFeatureRelated Page
workflow/178Workflow v4: internal board (kanban orders tab), package detail, scope-change badges/drawer, contractor + deal-import modules (PR#1942)Workflows
billing/78Billing: invoices, service catalog, sevDesk payment syncInvoices
document-obtaining/62Document collection workflowsDocument Obtaining
form-builder/34Dynamic form editor/rendererForm Builder
admin/31Admin settings UIsAdmin Dashboard
files/28File upload, preview, managementFiles
portal/27Customer-facing portal UIPortal
building-technology/25Building technology managementBuildings
building-components-redesign/16Building component managementBuilding Components
invoices/15Invoice creation and listingInvoices
team/14Team/department management
sidebar/10App navigation sidebar (redesigned with topnav/, PR#1567 saga)Routing
feedback/9Feedback collection UIFeedback System
quotes/, pdf/, document-review/8 eachQuotes, PDF templates, document reviewQuotes, PDF Templates, Document Review
topnav/, audit-log/, buildings/7 eachTop navigation bar, activity tracking, building listsAudit Logs
shared/5Cross-domain reusable components

Component Decomposition Rule

Files exceeding 600 lines must be split per Component Decomposition:

ModuleContains
fooService.tsPure functions, constants, types (zero React)
useFooState.tsState, queries, mutations, handlers
FooSection.tsxPresentational (props + useTranslation)
Foo.tsxOrchestrator (calls hook, composes sections)

Styling

  • TailwindCSS 4 utility classes
  • Brand colors: Primary #91C832, Secondary #007C57, Gray-50 #F9FAFB
  • Shadcn/ui theming via CSS variables
  • Lock exact versions for UI dependencies (no ^ or ~)