ThingList Design System
A comprehensive guide to the visual language, components, and patterns that power ThingList.app—your personal inventory and asset management platform.
🎨 Consistent Design
A unified visual language across all touchpoints ensures users feel at home throughout the application.
♿ Accessible First
WCAG 2.1 AA compliant with careful attention to color contrast, keyboard navigation, and screen reader support.
📱 Responsive
Designed to work beautifully across devices from mobile phones to large desktop displays.
Design Foundation
Core design tokens that define the ThingList visual system.
Color System
Our color palette is designed for clarity, accessibility, and emotion. All color combinations meet WCAG AA standards for contrast.
Primary Colors
#2E8B57
Main brand color, primary actions
4.5:1 on white
#1F593A
Hover states, emphasis
7.2:1 on white
#EDF7F0
Backgrounds, subtle highlights
1.05:1 on white
Accent Colors
#DAA520
Secondary actions, highlights
4.8:1 on white
#B8860B
Accent hover states
6.1:1 on white
#FFF8E1
Accent backgrounds
1.02:1 on white
Neutral Colors
#2D3B32
Headings, primary text
11.8:1 on white
#333333
Body text
12.6:1 on white
#666666
Secondary text, placeholders
5.7:1 on white
#F8FAF5
Page backgrounds
1.04:1 on white
#E9ECE7
Borders, dividers
1.1:1 on white
#C5CDC3
Input borders
1.4:1 on white
Semantic Colors
#4CAF50
Success messages, confirmations
4.6:1 on white
#FF9800
Warnings, cautions
3.2:1 on white
#E74C3C
Errors, destructive actions
4.5:1 on white
Spacing System
Consistent spacing creates rhythm and hierarchy. Our 4px base unit scales predictably.
4px / 0.25rem
Tight spacing
8px / 0.5rem
Default gap
16px / 1rem
Standard spacing
24px / 1.5rem
Component spacing
32px / 2rem
Section spacing
48px / 3rem
Large sections
64px / 4rem
Major sections
Border Radius
4px
8px
12px
16px
9999px
Elevation & Shadows
0 1px 2px rgba(0,0,0,0.05)
0 4px 6px rgba(0,0,0,0.07)
0 10px 15px rgba(0,0,0,0.1)
0 20px 25px rgba(0,0,0,0.15)
Typography
Clear, accessible typography that scales beautifully across devices.
Font Family
Primary typeface for all UI elements and body text. Optimized for screens with excellent legibility.
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
Type Scale
Our type scale provides clear visual hierarchy and maintains readability at all sizes.
Heading 1
2.5rem (40px)
Line height: 1.2 (48px)
700 (Bold)
Letter spacing: -0.02em
Heading 2
2rem (32px)
Line height: 1.25 (40px)
700 (Bold)
Letter spacing: -0.01em
Heading 3
1.5rem (24px)
Line height: 1.33 (32px)
600 (Semibold)
Letter spacing: -0.01em
Heading 4
1.25rem (20px)
Line height: 1.4 (28px)
600 (Semibold)
Letter spacing: 0
Heading 5
1.125rem (18px)
Line height: 1.44 (26px)
600 (Semibold)
Letter spacing: 0
Heading 6
1rem (16px)
Line height: 1.5 (24px)
600 (Semibold)
Letter spacing: 0
This is a lead paragraph that introduces important content with slightly larger text for emphasis and readability.
1.125rem (18px)
Line height: 1.67 (30px)
400 (Regular)
Letter spacing: 0
This is standard body text. The quick brown fox jumps over the lazy dog. It demonstrates the default paragraph styling used throughout the application for optimal readability.
1rem (16px)
Line height: 1.5 (24px)
400 (Regular)
Letter spacing: 0
This is small text used for metadata, captions, and supplementary information that requires less visual prominence.
0.875rem (14px)
Line height: 1.43 (20px)
400 (Regular)
Letter spacing: 0
This is tiny text for legal notices, fine print, and minimal UI elements.
0.75rem (12px)
Line height: 1.33 (16px)
400 (Regular)
Letter spacing: 0.01em
Text Styles
Bold text is used for emphasis and important information.
Italic text is used for subtle emphasis or to denote titles.
Text links are underlined on hover for clarity.
Code text is used for technical references and values.
Muted text appears less prominent for secondary information.
Responsive Typography
Font sizes scale down on smaller screens to maintain readability while conserving space.
| Element | Desktop (≥768px) | Mobile (<768px) |
|---|---|---|
| H1 | 40px / 2.5rem | 32px / 2rem |
| H2 | 32px / 2rem | 28px / 1.75rem |
| H3 | 24px / 1.5rem | 22px / 1.375rem |
| Lead | 18px / 1.125rem | 17px / 1.0625rem |
| Body | 16px / 1rem | 16px / 1rem |
Components
Reusable UI components with consistent styling and behavior.
Buttons
Buttons communicate actions and guide users through workflows. All buttons meet minimum 44×44px touch target size.
Button Variants
Button Sizes
Button States
<button class="btn btn-primary">Primary Button</button>
<button class="btn btn-accent btn-lg">Large Accent Button</button>
<button class="btn btn-outline" disabled>Disabled</button>
Form Elements
Accessible form controls with clear labels, helpful placeholders, and proper error states.
Text Inputs
Textareas
Select Dropdowns
Checkboxes & Radios
Alerts & Messages
Contextual feedback messages for user actions with appropriate icons and colors.
Cards
Content containers that group related information.
Feature Card
Cards provide a flexible container for grouping related content and actions.
Inventory Management
Track all your belongings with photos, receipts, and detailed information.
Smart Reminders
Never miss warranty expirations or maintenance schedules again.
Badges
Small labels for status indicators and counts.
Tags
Removable labels for categories and filters.
Loading States
Accessibility Guidelines
ThingList is committed to WCAG 2.1 AA compliance and inclusive design.
🎨 Color Contrast
- All text meets 4.5:1 contrast ratio (AA)
- Large text (18px+) meets 3:1 ratio
- UI components meet 3:1 against backgrounds
- Never rely on color alone for information
⌨️ Keyboard Navigation
- All interactive elements are keyboard accessible
- Clear focus indicators on all controls
- Logical tab order throughout pages
- Skip links for main content navigation
📱 Touch Targets
- Minimum 44×44px touch target size
- Adequate spacing between interactive elements
- Buttons and links clearly distinguishable
- Sufficient padding for comfortable tapping
🔊 Screen Readers
- Semantic HTML with proper headings
- ARIA labels for complex interactions
- Alt text for all meaningful images
- Form labels properly associated with inputs
📝 Content Structure
- Clear heading hierarchy (H1 → H6)
- Descriptive link text (no "click here")
- Proper list markup for grouped content
- Landmark regions for page sections
⚡ Focus Management
- Visible focus indicators (3px outline)
- Focus trapped in modals/dialogs
- Focus returned after closing overlays
- Skip navigation for keyboard users
Focus States Example
All interactive elements show clear focus indicators when navigated with keyboard.
ARIA Live Regions
Dynamic content updates are announced to screen readers.
<div role="alert" aria-live="assertive">Error message</div>
<div role="status" aria-live="polite">Success notification</div>
<button aria-label="Close dialog">×</button>