Design System component creation: methods and rationale

Design System component creation: methods and rationale

When I started working at NOTHS, they were transitioning from Sketch to Figma, and I took the lead on making this happen. As part of my work on the company’s Design System, I designed a scalable, flexible component library that supported multiple screen sizes, user interactions, and implementation needs. Below is a summary of the various methods I used to create components, along with the rationale and benefits for each approach.

When I started working at NOTHS, they were transitioning from Sketch to Figma, and I took the lead on making this happen. As part of my work on the company’s Design System, I designed a scalable, flexible component library that supported multiple screen sizes, user interactions, and implementation needs. Below is a summary of the various methods I used to create components, along with the rationale and benefits for each approach.

Multiple size variants for different breakpoints

What: Created four size-specific variants of components to address distinct screen sizes (mobile, tablet, small desktop, large desktop), where responsive component design alone wasn’t sufficient.

Why: Ensured visual clarity and usability across devices, especially when layouts changed significantly between breakpoints. Allowed us to quickly create multiple templates with very little manual work.

Single variant with responsive constraints

What: Designed components using auto layout and min/max width constraints, allowing a single variant to adapt fluidly to different container sizes.

Why: Reduced component duplication, increased Figma loading speed, and ensured consistency while supporting responsive behaviour. Plus, it aligned components accurately with how they're built in code.

Local variables for layout and typography

What: Defined local variables for breakpoints, content widths, dynamic spacing, and typography scales, aligning design tokens with the grid and responsive behaviour.

Why: Enabled consistent layout logic, improved design scalability across screen sizes, and supported a systemised approach to responsive design.

Nested and slot-based components for reusability

What: Built components using nested instances, such as shared buttons, icons, and more. Wherever relevant, components were using instance swaps or flexible layout containers within components to allow custom content while maintaining structure.

Why: Allowed updates to propagate system-wide and reinforced consistency across UI elements. Increased flexibility for designers without sacrificing layout rules or design standards.

Get in touch

Let's connect! I’m open to both permanent roles and project-based collaborations.

Get in touch

Let's connect! I’m open to both permanent roles and project-based collaborations.

Get in touch

Let's connect! I’m open to both permanent roles and project-based collaborations.

Create a free website with Framer, the website builder loved by startups, designers and agencies.