Material Thinking
Apply Material Design 3 and M3 Expressive principles to create accessible, consistent, and engaging user interfaces.
Overview
This skill provides comprehensive guidance for implementing Material Design 3 (M3) and M3 Expressive across all platforms. Material Design 3 is Google's open-source design system that provides UX guidance, reusable components, and design tools for creating beautiful, accessible interfaces.
Key capabilities:
- Design new products with M3 principles
- Review existing designs for M3 compliance
- Generate design tokens (colors, typography, shapes)
- Apply M3 Expressive for engaging, emotionally resonant UIs
- Select appropriate components for specific use cases
- Ensure accessibility and responsive design
Core Resources
This skill includes four comprehensive reference documents. Read these as needed during your work:
1. Foundations (references/foundations.md)
Read when working with:
- Accessibility requirements
- Layout and responsive design (window size classes, canonical layouts)
- Interaction patterns (states, gestures, selection)
- Content design and UX writing
- Design tokens and adaptive design
2. Styles (references/styles.md)
Read when working with:
- Color systems (dynamic color, color roles, tonal palettes)
- Typography (type scale, fonts)
- Elevation and depth
- Shapes and corner radius
- Icons (Material Symbols)
- Motion and transitions
3. Components (references/components.md)
Read when selecting or implementing:
- Action components (buttons, FAB, segmented buttons)
- Selection and input (checkbox, radio, switch, text fields, chips)
- Navigation (nav bar, drawer, rail, app bars, tabs)
- Containment and layout (cards, lists, carousel, sheets)
- Communication (dialogs, snackbar, badges, progress, tooltips, menus)
4. M3 Expressive (references/m3-expressive.md)
Read when creating more engaging experiences:
- Expressive motion tactics
- Shape morphing
- Dynamic animations
- Brand expression
- Balancing expressiveness with usability
Workflows
Workflow 1: Designing a New Interface
When designing a new product or feature with Material 3:
-
Define layout structure
- Read
references/foundations.md → Layout section
- Determine window size classes (compact/medium/expanded)
- Choose canonical layout if applicable (list-detail, feed, supporting pane)
-
Select components
- Read
references/components.md
- Use Component Selection Guide to choose appropriate components
- Review specific component guidelines for usage and specs
-
Establish visual style
- Read
references/styles.md
- Define color scheme (dynamic or static)
- Set typography scale
- Choose shape scale (corner radius values)
- Plan motion and transitions
-
Apply M3 Expressive (optional)
- Read
references/m3-expressive.md
- Identify key moments for expressive design
- Apply emphasized easing and extended durations
- Consider shape morphing for transitions
- Follow 80/20 rule (80% standard, 20% expressive)
-
Validate accessibility
- Read
references/foundations.md → Accessibility section
- Check color contrast (WCAG compliance)
- Verify touch targets (minimum 48×48dp)
- Ensure keyboard navigation and screen reader support
Workflow 2: Reviewing Existing Designs
When reviewing designs for Material 3 compliance:
-
Component compliance
- Read
references/components.md for relevant components
- Check if components follow M3 specifications
- Verify proper component usage (e.g., not using filled buttons excessively)
- Validate component states (enabled, hover, focus, pressed, disabled)
-
Visual consistency
- Read
references/styles.md
- Verify color roles are used correctly
- Check typography matches type scale
- Validate elevation levels
- Review shape consistency (corner radius)
-
Accessibility audit
- Read
references/foundations.md → Accessibility section
- Test color contrast ratios
- Check touch target sizes
- Verify text resizing support
- Review focus indicators
-
Interaction patterns
- Read
references/foundations.md → Interaction section
- Verify state layers are present
- Check gesture support for mobile
- Validate selection patterns
Workflow 3: Generating Design Tokens
When creating design tokens for a new theme:
-
Color tokens
- Read
references/styles.md → Color section
- Choose color scheme type (dynamic or static)
- Define source color(s)
- Generate tonal palette (13 tones per key color)
- Map color roles (primary, secondary, tertiary, surface, error)
- Create light and dark theme variants
-
Typography tokens
- Read
references/styles.md → Typography section
- Select font family
- Define type scale (display, headline, title, body, label × small/medium/large)
- Set letter spacing and line height
-
Shape tokens
- Read
references/styles.md → Shape section
- Define corner radius scale (none, extra-small, small, medium, large, extra-large)
- Map shapes to component categories
-
Motion tokens
- Read
references/styles.md → Motion section
- Define duration values (short, medium, long)
- Set easing curves (emphasized, standard)
- For M3 Expressive, read
references/m3-expressive.md → Expressive Motion
Workflow 4: Implementing M3 Expressive
When adding expressive elements to enhance engagement:
-
Identify key moments
- Onboarding flows
- Primary user actions (FAB, main CTAs)
- Screen transitions
- Success/completion states
-
Apply expressive tactics
- Read
references/m3-expressive.md → Design Tactics
- Use emphasized easing for important transitions
- Extend animation durations (400-700ms)
- Add exaggerated scale changes
- Implement layered/staggered animations
- Consider shape morphing
-
Balance with usability
- Follow 80/20 rule (most interactions remain standard)
- Respect
prefers-reduced-motion
- Avoid excessive motion in productivity contexts
- Test on lower-end devices
Quick Reference
When to Read Each Reference
| Your Question | Read This |
|---|
| "What components should I use for navigation?" | references/components.md → Navigation Components |
| "How do I create a color scheme?" | references/styles.md → Color |
| "What are the responsive breakpoints?" | references/foundations.md → Layout → Window Size Classes |
| "How do I make my design more engaging?" | references/m3-expressive.md |
| "What's the correct button hierarchy?" | references/components.md → Action Components → Buttons |
| "How do I ensure accessibility?" | references/foundations.md → Accessibility |
| "What motion timing should I use?" | references/styles.md → Motion |
| "How do I implement shape morphing?" | references/m3-expressive.md → Shape and Form |
Component Quick Selector
Actions:
- Primary screen action → FAB or Filled Button
- Secondary action → Tonal/Outlined Button
- Tertiary action → Text Button
- Compact action → Icon Button
- Toggle options (2-5) → Segmented Button
Input:
- Single choice → Radio Button
- Multiple choices → Checkbox
- On/Off toggle → Switch
- Text input → Text Field
- Date/time → Date/Time Picker
- Range value → Slider
- Tags → Input Chips
Navigation:
- Compact screens (<600dp) → Navigation Bar
- Medium screens (600-840dp) → Navigation Rail
- Large screens (>840dp) → Navigation Drawer
- Secondary nav → Tabs or Top App Bar
Communication:
- Important decision → Dialog
- Quick feedback → Snackbar
- Notification count → Badge
- Loading status → Progress Indicator
- Contextual help → Tooltip
- Action list → Menu
Design Token Defaults
Color (Light Theme):
- Primary: tone 40
- On-primary: tone 100 (white)
- Primary container: tone 90
- Surface: tone 98
Typography:
- Display Large: 57sp
- Headline Large: 32sp
- Title Large: 22sp
- Body Large: 16sp
- Label Large: 14sp
Shape:
- Extra Small: 4dp (chips, checkboxes)
- Small: 8dp (small buttons)
- Medium: 12dp (cards, standard buttons)
- Large: 16dp (FAB)
- Extra Large: 28dp (dialogs, sheets)
Elevation:
- Level 0: 0dp (standard surface)
- Level 1: 1dp (cards)
- Level 2: 3dp (search bars)
- Level 3: 6dp (FAB)
- Level 5: 12dp (modals, dialogs)
Best Practices
General Principles
- Consistency: Use design tokens consistently across the product
- Hierarchy: Establish clear visual hierarchy through size, color, and spacing
- Accessibility: Always meet WCAG 2.1 Level AA standards (minimum)
- Responsiveness: Design for all window size classes
- Platform conventions: Respect platform-specific patterns when appropriate
Common Mistakes to Avoid
- Too many filled buttons: Use only one filled button per screen for primary action
- Ignoring window size classes: Design must adapt to different screen sizes
- Poor color contrast: Always validate contrast ratios
- Inconsistent spacing: Use 4dp grid system throughout
- Overusing M3 Expressive: Keep 80% standard, 20% expressive
- Small touch targets: Minimum 48×48dp for all interactive elements
- Unclear component states: All components must show hover, focus, pressed states
Platform-Specific Notes
Flutter:
Android (Jetpack Compose):
Web:
Platform-agnostic:
- Export design tokens from Material Theme Builder
- Apply M3 principles manually to any framework
Tools and Resources
Material Theme Builder
Web-based tool for creating M3 color schemes and design tokens:
Material Symbols
Variable icon font with 2,500+ icons:
Official Documentation
Summary
This skill enables comprehensive Material Design 3 implementation:
- Read references as needed: Don't try to memorize everything—reference files exist to be consulted during work
- Follow workflows: Use structured workflows for common tasks (designing, reviewing, generating tokens)
- Start with foundations: Layout, accessibility, and interaction patterns form the base
- Build with components: Use the 38 documented M3 components appropriately
- Apply styles consistently: Color, typography, shape, elevation, icons, motion
- Enhance with M3 Expressive: Add engaging, emotionally resonant elements where appropriate
- Validate accessibility: Always check contrast, touch targets, and keyboard navigation
Material Design 3 is a complete design system—this skill helps you apply it effectively across all contexts.