Skip to main content

CODITECT UI Component Kit: Master Index

Version: 1.0
Design System: Atomic Design Methodology
Philosophy: Test-Driven, Modular, Composable

Overview

This kit provides Lego-like building blocks for constructing CODITECT admin interfaces. Each component is:

  • Tested - With specs and validation rules
  • Documented - With usage examples and variants
  • Composable - Combines with other components
  • Accessible - WCAG AA compliant
  • Responsive - Mobile-first design

Atomic Design Hierarchy

Atoms (Basic building blocks)
├─ Molecules (Simple combinations)
│ ├─ Organisms (Complex UI sections)
│ │ └─ Templates (Page layouts)
│ │ └─ Pages (Real instances)

Component Inventory

Atoms (13 components)

Smallest UI elements - cannot be broken down further.

ComponentPurposeTest CountVariantsStatus
ButtonPrimary actions8primary, secondary, danger, ghost, icon✅ Ready
InputText entry12text, email, password, search, error✅ Ready
LabelForm labels4default, required, optional, error✅ Ready
BadgeStatus indicators6success, warning, error, info, count✅ Ready
AvatarUser representation5image, initials, icon, sizes✅ Ready
IconVisual symbols3sizes, colors, interactive✅ Ready
DotStatus indicator4green, yellow, red, gray✅ Ready
ProgressBarVisual progress5default, success, warning, error, indeterminate✅ Ready
CheckboxSelection control7default, checked, disabled, indeterminate✅ Ready
RadioSingle selection5default, selected, disabled✅ Ready
ToggleOn/off switch6off, on, disabled✅ Ready
SpinnerLoading indicator4small, medium, large, colors✅ Ready
DividerVisual separator3horizontal, vertical, text✅ Ready

Molecules (11 components)

Combinations of atoms serving a specific function.

ComponentAtoms UsedPurposeTest CountStatus
FormFieldLabel + Input + ErrorComplete form control10✅ Ready
SearchInputInput + Icon + ClearSearch functionality8✅ Ready
StatusIndicatorDot + LabelStatus display6✅ Ready
ProgressIndicatorProgressBar + Label + PercentProgress display7✅ Ready
AvatarGroupMultiple AvatarsTeam presence5✅ Ready
ButtonGroupMultiple ButtonsAction groups6✅ Ready
TagListMultiple BadgesTag management7✅ Ready
BreadcrumbLinks + DividersNavigation trail5✅ Ready
PaginationButtons + LabelsPage navigation9✅ Ready
EmptyStateIcon + Text + ButtonNo content state6✅ Ready
ToastIcon + Text + CloseNotification8✅ Ready

Organisms (9 components)

Complex UI sections combining multiple molecules.

ComponentPurposeMolecules UsedTest CountStatus
HeaderTop navigationSearchInput, AvatarGroup, ButtonGroup12✅ Ready
CardContent containerStatusIndicator, ButtonGroup, AvatarGroup15✅ Ready
ModalOverlay dialogHeader, FormField, ButtonGroup18✅ Ready
DataTableTabular dataPagination, ButtonGroup, StatusIndicator20✅ Ready
FormData collectionMultiple FormFields, ButtonGroup16✅ Ready
KanbanColumnProject statusMultiple Cards, ProgressIndicator14✅ Ready
SidebarSide navigationAvatarGroup, StatusIndicator, ButtonGroup10✅ Ready
UserMenuUser dropdownAvatar, ButtonGroup, Divider8✅ Ready
FilterPanelData filteringMultiple FormFields, ButtonGroup12✅ Ready

Templates (6 layouts)

Page structures without real content.

TemplateOrganisms UsedPurposeVariantsStatus
DashboardGridHeader + CardsEntity overview2, 3, 4 column✅ Ready
DetailViewHeader + Card + SidebarEntity detailWith/without sidebar✅ Ready
KanbanBoardHeader + KanbanColumnsProject management3, 4, 5 column✅ Ready
ListDetailHeader + DataTableBrowse entitiesWith/without filters✅ Ready
FormPageHeader + FormData entrySingle/multi-step✅ Ready
EmptyPageHeader + EmptyStateOnboardingVarious messages✅ Ready

Quick Start Guide

1. Install Dependencies (Copy/Paste)

# If using npm
npm install react react-dom

# If using yarn
yarn add react react-dom

2. Copy Design Tokens

/* Copy to your root CSS file */
@import url('./design-tokens.css');

3. Import Components

// Import atoms
import { Button, Input, Badge } from './components/atoms';

// Import molecules
import { FormField, StatusIndicator } from './components/molecules';

// Import organisms
import { Card, Modal, Header } from './components/organisms';

// Import H.P.008-TEMPLATES
import { DashboardGrid, DetailView } from './components/H.P.008-TEMPLATES';

4. Compose Your UI

// Example: Simple dashboard
<DashboardGrid>
<Card
title="Active Projects"
status={<StatusIndicator status="success" label="Healthy" />}
footer={
<ButtonGroup>
<Button variant="primary">View All</Button>
<Button variant="ghost">Settings</Button>
</ButtonGroup>
}
>
<ProgressIndicator value={75} label="Overall Progress" />
</Card>

{/* More cards... */}
</DashboardGrid>

Testing Philosophy

Test-Driven Specifications

Every component includes:

  1. Unit Tests - Component renders correctly
  2. Visual Tests - Appearance matches design
  3. Interaction Tests - User actions work
  4. Accessibility Tests - WCAG compliance
  5. Integration Tests - Works with other components

Example Test Structure

describe('Button', () => {
describe('Rendering', () => {
test('renders with text')
test('renders with icon')
test('renders in disabled state')
});

describe('Interactions', () => {
test('calls onClick when clicked')
test('does not call onClick when disabled')
test('shows hover state')
});

describe('Accessibility', () => {
test('has correct ARIA attributes')
test('is keyboard navigable')
test('meets color contrast requirements')
});

describe('Variants', () => {
test('renders primary variant')
test('renders secondary variant')
test('renders danger variant')
});
});

Component Composition Examples

Example 1: Login Form

<Form onSubmit={handleLogin}>
<FormField
label="Email"
type="email"
placeholder="you@company.com"
required
/>
<FormField
label="Password"
type="password"
required
/>
<ButtonGroup>
<Button variant="primary" type="submit">Sign In</Button>
<Button variant="ghost" onClick={handleForgot}>Forgot Password?</Button>
</ButtonGroup>
</Form>

Example 2: Project Card

<Card
title="Website Redesign"
subtitle={<StatusIndicator status="success" label="Active" />}
metadata={
<>
<AvatarGroup users={teamMembers} max={3} />
<Badge variant="info">8 tasks</Badge>
</>
}
footer={
<>
<ProgressIndicator value={65} />
<ButtonGroup>
<Button variant="ghost" icon="eye">View</Button>
<Button variant="ghost" icon="settings">Settings</Button>
</ButtonGroup>
</>
}
>
<p>Redesign company website with new brand guidelines...</p>
</Card>

Example 3: Data Table with Actions

<DataTable
columns={[
{ key: 'name', header: 'Name', sortable: true },
{ key: 'status', header: 'Status', render: (val) => <StatusIndicator status={val} /> },
{ key: 'progress', header: 'Progress', render: (val) => <ProgressBar value={val} /> },
{ key: 'actions', header: '', render: (row) => (
<ButtonGroup>
<Button variant="ghost" icon="edit" onClick={() => handleEdit(row)} />
<Button variant="ghost" icon="delete" onClick={() => handleDelete(row)} />
</ButtonGroup>
)}
]}
data={projects}
pagination={{
page: 1,
pageSize: 10,
total: 47
}}
/>

File Structure

components/
├── atoms/
│ ├── Button/
│ │ ├── Button.jsx
│ │ ├── Button.test.js
│ │ ├── Button.stories.jsx
│ │ └── README.md
│ ├── Input/
│ ├── Badge/
│ └── ...
├── molecules/
│ ├── FormField/
│ ├── SearchInput/
│ └── ...
├── organisms/
│ ├── Header/
│ ├── Card/
│ └── ...
├── H.P.008-TEMPLATES/
│ ├── DashboardGrid/
│ ├── DetailView/
│ └── ...
└── index.js (exports all components)

design-tokens/
├── colors.css
├── typography.css
├── spacing.css
└── index.css (imports all)

tests/
├── unit/
├── integration/
├── visual/
└── accessibility/

docs/
├── getting-started.md
├── design-principles.md
├── component-guide.md
└── composition-patterns.md

Next Steps

  1. Explore Atoms - Start with basic building blocks
  2. Learn Molecules - Understand common combinations
  3. Study Organisms - See complex patterns
  4. Use Templates - Build pages quickly
  5. Customize - Adapt to your brand

Each component includes:

  • Full implementation code
  • Comprehensive tests
  • Usage documentation
  • Composition examples
  • Accessibility notes

Start with the atoms - they're the foundation of everything else.