Introduction: A UI Kit is the foundation of any scalable and consistent design system, serving as a single source of truth for both designers and developers. Built using the Atomic Design Methodology, the UI Kit is hierarchically structured—starting from atoms and molecules, progressing to organisms, and culminating in templates and pages. This approach promotes clarity, consistency, and efficiency throughout the design and development process.
Getting Started with the UI Kit Template: To jumpstart the design process, a pre-defined UI Kit template is available. This template provides a structured starting point that includes foundational design tokens (e.g., colors, typography, spacing), pre-built pages for components,organisms, templates, and pages. By adopting this template, teams can align quickly, reduce setup time, and focus on crafting scalable, high-quality designs.
Why Start with a Checklist? Beginning with a checklist ensures that no critical components are overlooked and aligns the design process with the specific needs of the project, whether it's for a corporate website, an e-commerce platform, or a SaaS product. A well-structured checklist promotes consistency, improves collaboration, and serves as a reference point throughout the project lifecycle. This methodical approach saves time, reduces rework, and ensures that the UI Kit evolves alongside the project’s requirements.
1. Define the Foundation (Atoms)
Identify the smallest design elements like colors, typography, icons, and spacing, and create variables in Figma for them.
1.1 Colours
Once you've established a cohesive color palette and created its tints and shades, the next step is to organize and define these colors as variables in Figma. This ensures consistency and simplifies handoffs to developers. Below are some best practices to follow when setting up your color variables.
Naming Convention: Use lowercase letters for all variable names for consistency. Separate words with a hyphen ("-") to improve readability and avoid errors during implementation.
Grouping Colours: Organize colors into folders (e.g., "red," "blue," "grey") to keep tints and shades logically structured. Each folder includes variations such as red-100, red-200, ... red-900 to represent tints and shades.
Alias for Default Color: Always create an alias (e.g., red-default) for the primary or default shade of a color. This alias simplifies development by letting developers quickly identify and use the standard color.
1.2 Typography
After defining your typography styles—such as font families, weights, and sizes—it's essential to organize them into variables in Figma. Creating typography variables ensures consistency across your designs, simplifies updates, and facilitates a smooth handoff to developers. Below are some guidelines to follow when establishing typography variables in your design system.
Naming Convention and Categorization: Use lowercase letters and hyphens ("-") to separate words for consistent and readable variable names. Organize typography variables into clear folders to maintain structure and consistency. Use font-family to define font families for headings and body/base text. For font-weight, use numeric variables instead of strings (e.g., 400, 500, 600) to align with industry standards. Under font-size, create variables for headings (e.g., h1, h1-mobile, h2, h2-mobile) and body text (e.g., xs, sm, md, base, lg, xl, 2xl, etc.) to ensure flexibility across different screen sizes and contexts.
Grouping and Categorization: Organize typography variables into clear folders like font-family (define font families for headings and body/base text), font-weight using number variable instead of string variable (e.g., 400, 500, 600), font-size for headings (e.g., h1, h1-mobile, h2, h2-mobile) and body (e.g., xs, sm, md, base, lg, xl, 2xl,...)
1.3 Spacing
Spacing variables are crucial for maintaining consistent layouts and margins across your design system. They standardize gaps, padding, and margins to create a balanced visual hierarchy.
Naming Convention: Arrange variables in ascending order of size, with values typically following a 4px scale system (e.g., 0, 4, 8, 12, 16, 20, etc.) to cover diverse layout requirements. Define values using intuitive names, such as:
none for 0 spacing.
Small to large sizes: 3xs, 2xs, xs, sm, md, lg, xl, 2xl, 3xl.
Descriptive names for extra-large scales: huge, x-huge, 2x-huge, etc.
Organize spacing variables under a "spacing" folder for clear structure and accessibility. Use lowercase letters with hyphens ("-") for multi-word names, and adopt a scalable naming system to ensure clarity and consistency.
1.4 Radius
Radius variables are used to define corner rounding for UI elements like buttons, cards, and modals, ensuring consistent curvature across the design system.
Naming Convention: Group radius variables into a "radius" folder for organization, using clear and simple naming conventions. Names should reflect their purpose and value, such as:
none for 0 (sharp edges).
Size-based names: 2xs, xs, sm, md, lg, xl, 2xl, 3xl, 4xl.
full for a completely circular radius (9999px).
Order the variables logically from smallest to largest, with values starting from subtle rounding (e.g., 2px, 4px) to prominent rounding (e.g., 16px, 20px) and complete circles.
2. Combine Atoms into Molecules
What to Do: Build components like buttons, input fields, cards, and form controls by combining atoms. Apply variables (colors, typography, spacing) to ensure consistency. Keep states (hover, focus, disabled) in mind.
How to Document: Add descriptions to each molecule in Figma using the annotation feature (e.g., "Primary Button with hover and active states"). Group components logically in the Figma library (e.g., Buttons → Primary, Secondary).
3. Assemble Organisms
At this stage, organisms are assembled by combining multiple molecules and atoms into larger, functional components. These organisms typically represent reusable sections of the UI, such as headers, footers, or cards, and include all their interactive states (e.g., default, hover, dropdowns).
What to Do: Build organisms by combining molecules and atoms into modular, reusable components that define key UI sections. Ensure each organism is consistent, adaptable, and serves a clear purpose. Create variants for different states (e.g., hover, focus, expanded) and include mobile-specific versions by adapting spacing, typography, and layout to smaller screen sizes.
How to Document: Organize organisms into component sets with clear, descriptive names for each variant (e.g., default, hover, expanded, mobile). Add annotations to describe the structure, tokens used, and how each variant behaves, particularly for mobile adjustments. Include examples of the organism within both desktop and mobile templates or layouts to demonstrate adaptability. Use prototyping tools to simulate interactions and responsive behaviors, ensuring developers understand how to implement them effectively.
4. Temaplates and Pages
Templates and pages represent the final stages of the design process, where organisms are arranged into cohesive layouts. Templates define the structure and layout for different screens (e.g., landing pages, product pages) without real content, while pages apply real data and content to those templates to create finalized designs.
What to Do: Use templates to arrange organisms into reusable layouts that reflect the structure of the UI for specific screen types. Focus on defining consistent grids, spacing, and alignment to ensure scalability. Once templates are finalized, create pages by populating them with real content, such as images, text, and data. For responsive designs, ensure that both templates and pages adjust seamlessly across screen sizes, and include mobile-specific versions where necessary.
A UI Kit is not a static resource; it grows and evolves as your project scales. Regular updates ensure that your designs remain consistent, relevant, and adaptable to new requirements. As designs evolve through client feedback and iteration, some components or layouts may need to be updated. Keeping the UI Kit aligned with these changes ensures everyone on the team has access to the latest design elements. Here’s how to make sure updates are clear and consistent for everybody:
1. Assign a Clear UI Kit Owner
At the start of every project, ensure there’s a designated main designer responsible for maintaining and updating the UI Kit. This person is the point of contact for any component or layout changes.
Coordinate Changes After "Ready for Dev"
Once a design is marked "Ready for Dev," any further changes should be coordinated with the UI Kit owner. If updates arise due to client feedback or design iteration, reach out to the UI Kit owner to make the necessary adjustments in the file.
Announce Updates in Slack
Once the UI Kit has been updated, notify the team in the relevant Slack channel. Tag both designers and developers on the project, and include a brief summary of the changes and why they were made.
Example:
“@DesignTeam @DevTeam: Updates have been made to the UI Kit based on Client X's feedback from September 4th. Please adjust any instances of the design/build accordingly. [List of changes]”
Provide Additional Context for Major Updates
For significant changes, consider scheduling a quick huddle or meeting to discuss the client or design updates. Ensure transparency by sharing a summary in the project’s Slack channel. This way, everyone stays informed and aligned on all updates!
Following these practices helps ensure everyone is in sync and using the latest designs, keeping our work accurate and aligned. Thank you for helping maintain consistency across the project!