Skip to main content

Component framework

Accessibility features

The design system includes built-in accessibility features:

  • Focus indicators for keyboard navigation
  • High contrast mode support
  • Reduced motion support
  • Screen reader utilities
Accessibility Examples
Screen Reader Support
Focus Management

Enter the unique patient identifier

<!-- Screen reader only content -->
<button class="btn btn-primary">
Delete
<span class="sr-only">medical image from patient record</span>
</button>

<!-- Focus management -->
<div class="medical-form">
<label for="patientId" class="form-label form-required">Patient ID</label>
<input
type="text"
id="patientId"
class="form-control focus-ring"
aria-describedby="patientIdHelp"
required
>
<div id="patientIdHelp" class="text-secondary text-small">
Enter the 8-digit patient identifier
</div>
</div>

Badges and status indicators

Badge and Status Examples
DefaultNormalReviewProcessingArchived
Patient Status Dashboard
John DoeActive2 Pending
<span class="badge">Default</span>
<span class="badge badge-success">Normal</span>
<span class="badge badge-warning">Review</span>
<span class="badge badge-info">Processing</span>
<span class="badge badge-secondary">Archived</span>

<!-- In context -->
<div class="patient-status">
Study Status: <span class="badge badge-success">Completed</span>
</div>

Buttons

Primary buttons

Primary Button Variants
<!-- Primary button -->
<button class="btn btn-primary">Start Analysis</button>
<button class="primary-button">Save Report</button>

<!-- Secondary button -->
<button class="btn btn-secondary">Cancel</button>
<button class="secondary-button">Reset</button>

<!-- Button states -->
<button class="btn btn-primary" disabled>Processing...</button>

Button variants

Button States and Variants
<button class="btn btn-success">Save Changes</button>
<button class="btn btn-warning">Review Required</button>
<button class="btn btn-danger">Delete Image</button>

<!-- Icon button -->
<button class="btn-icon" title="Settings">
<svg class="icon">...</svg>
</button>

Cards and containers

Basic cards

Card Component Example

Patient Information

John Doe

Patient ID: PT001234

Last scan: March 15, 2024

<div class="card">
<div class="card-header">
<h6>Patient Information</h6>
</div>
<div class="card-body">
<p><strong>Name:</strong> John Doe</p>
<p><strong>DOB:</strong> 1980-05-15</p>
<p><strong>ID:</strong> PT001234</p>
</div>
<div class="card-footer">
<button class="btn btn-primary">View Details</button>
</div>
</div>

Box containers

Box Container Component

Scan Parameters

1024x1024

Enhanced

<div class="box-container">
<div class="box-container-title">
Medical Images
</div>
<div class="box-container-content">
<div class="image-grid">
<!-- Image thumbnails here -->
</div>
</div>
</div>

Component states and interactions

Interactive States and Validation
Interactive States
Focus States
Validation States
Valid email address
This field is required
<!-- Interactive states -->
<button class="btn btn-primary state-hover">Hover effect</button>
<button class="btn btn-primary active">Active state</button>
<button class="btn btn-primary disabled">Disabled state</button>

<!-- Focus states -->
<input type="text" class="form-control focus-ring" placeholder="Focused input">

<!-- Validation states -->
<div class="form-group">
<input type="email" class="form-control is-valid" value="doctor@hospital.com">
<div class="text-success text-small">Valid email format</div>
</div>

<div class="form-group">
<input type="text" class="form-control is-invalid" placeholder="Required field">
<div class="text-danger text-small">This field is required</div>
</div>

Form elements

Input fields

Form Input Examples
Valid email format
This field cannot be empty
<div class="form-group">
<label class="form-label">Patient ID</label>
<input type="text" class="form-control" placeholder="Enter patient ID">
</div>

<div class="form-group">
<label class="form-label form-required">Study Date</label>
<input type="date" class="form-control form-control-sm">
</div>

<!-- Validation states -->
<input type="email" class="form-control is-valid" value="patient@example.com">
<input type="text" class="form-control is-invalid" placeholder="Required field">

Switch controls

Toggle Switch Controls
<div class="form-group">
<label>Enable Auto-Analysis</label>
<div class="switch-line checked" onclick="toggleSwitch(this)"></div>
</div>

<script>
function toggleSwitch(element) {
element.classList.toggle('checked');
}
</script>

Icons and visual elements

Icons, Spinners, and Visual Effects
Icon Sizes
🏥🔍📊
Loading Spinner
Processing medical scan...
Shadows
Enhanced card with shadow
Subtle shadow panel
<!-- Icon sizes -->
<svg class="icon"><!-- SVG content --></svg>
<svg class="icon icon-inline"><!-- Inline icon --></svg>
<svg class="icon icon-large"><!-- Large icon --></svg>

<!-- Loading spinner -->
<div class="d-flex align-center">
<div class="spinner-circle"></div>
<span class="ml-sm">Processing medical images...</span>
</div>

<!-- Shadows -->
<div class="card drop-shadow">Enhanced card with shadow</div>
<div class="medical-panel shadow-light">Subtle shadow panel</div>

Layout utilities

Display utilities

Layout and Grid Examples
Medical Dashboard
Total Patients

1,247

Pending Reviews

23

Completed Today

156

This content is only visible on tablet and larger screens

<div class="d-flex justify-between align-center">
<h3>Patient Report</h3>
<button class="btn btn-primary">Export PDF</button>
</div>

<div class="d-grid grid-cols-3 custom-grid-large">
<div class="card">Scan 1</div>
<div class="card">Scan 2</div>
<div class="card">Scan 3</div>
</div>

<!-- Responsive display -->
<div class="d-none d-tablet-block">Tablet and up only</div>
<div class="d-desktop-flex">Desktop flex layout</div>

Spacing utilities

Spacing and Form Layout
Patient Registration Form
<!-- Padding -->
<div class="p-lg">Large padding all sides</div>
<div class="px-md py-sm">Medium horizontal, small vertical</div>

<!-- Margins -->
<div class="mb-lg">Large bottom margin</div>
<div class="mx-auto">Centered with auto margins</div>

<!-- Medical form example -->
<form class="p-md">
<div class="form-group mb-md">
<label class="form-label mb-sm">Patient ID</label>
<input type="text" class="form-control">
</div>

<div class="form-group mb-lg">
<label class="form-label mb-sm">Study Notes</label>
<textarea class="form-control"></textarea>
</div>

<button class="btn btn-primary">Save Study</button>
</form>

Modals

Modal Dialog Component
<div class="modal-overlay" style="display: none;" id="imageModal">
<div class="modal-container">
<div class="modal-header">
<h4>Medical Image Viewer</h4>
<button class="btn-icon" onclick="closeModal()">×</button>
</div>
<div class="modal-body">
<img src="medical-scan.jpg" alt="Medical scan" style="width: 100%;">
<div class="image-metadata mt-md">
<p><strong>Study Date:</strong> 2024-08-18</p>
<p><strong>Modality:</strong> CT Scan</p>
<p><strong>Body Part:</strong> Chest</p>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal()">Close</button>
<button class="btn btn-primary">Download DICOM</button>
</div>
</div>
</div>

<script>
function closeModal() {
document.getElementById('imageModal').style.display = 'none';
}
</script>
Navigation Component
<nav class="app-bar">
<div class="nav-brand">
<h4>Acuitas Medical Platform</h4>
</div>
<div class="nav">
<a href="#" class="nav-link">Dashboard</a>
<a href="#" class="nav-link">Patients</a>
<a href="#" class="nav-link">Studies</a>
<a href="#" class="nav-link">Reports</a>
</div>
<div class="nav-actions">
<button class="btn btn-secondary">Settings</button>
<button class="btn btn-primary">New Study</button>
</div>
</nav>

Responsive design

The design system includes responsive utilities and breakpoints optimised for medical applications:

  • Tablet: 768px and up
  • Desktop: 1735px and up
  • Large Desktop: 1900px and up
Responsive Layout Examples
Mobile View

Single column layout

Tablet+ View

Two column layout

<!-- Responsive grid -->
<div class="d-grid grid-cols-1 grid-cols-sm-2 custom-grid-medium">
<div class="card">Mobile: 1 column, Tablet: 2 columns</div>
<div class="card">Adapts to screen size</div>
</div>

<!-- Responsive display -->
<div class="medical-toolbar">
<button class="btn btn-primary">Always visible</button>
<button class="btn btn-secondary d-none d-tablet-block">Tablet+</button>
<button class="btn btn-secondary d-none d-desktop-block">Desktop+</button>
</div>

Typography

Headings

The design system provides styled headings with consistent spacing and color.

Main Page Title (H1)

Section Title (H2)

Subsection Title (H3)

Component Title (H4)

Small Title (H5)
Micro Title (H6)
<h1>Main Page Title</h1>
<h2>Section Title</h2>
<h3>Subsection Title</h3>
<h4>Component Title</h4>
<h5>Small Title</h5>
<h6>Micro Title</h6>

Text utilities

Primary text color

Secondary text color

Small text size

Left aligned text

Center aligned text

Right aligned text

Success message

Warning message

Error message

<p class="text-primary">Primary text color</p>
<p class="text-secondary">Secondary text color</p>
<p class="text-small">Small text size</p>

<!-- Alignment -->
<p class="text-left">Left aligned text</p>
<p class="text-center">Center aligned text</p>
<p class="text-right">Right aligned text</p>

<!-- Color utilities -->
<p class="text-success">Success message</p>
<p class="text-warning">Warning message</p>
<p class="text-danger">Error message</p>