Daikin

Daikin

Creating and refining the Daikin Hero Cloud Design System

Creating and refining the Daikin Hero Cloud Design System

Label

Label

Label

Label

Label

Label

Label

components
variables
grids
icons
typescale
colors

Label

Label

Label

Label

Label

Label

Label

components
variables
grids
icons
typescale
colors

Label

Label

Label

Label

Label

Label

Label

components

variables

grids

icons

typescale

colors

Label

Label

Label

Label

Label

Label

Label

components

variables

grids

icons

typescale

colors

ROLE

Lead Designer
Lead Designer

CLIENT

Daikin
Daikin

SKILLS

Variables, Components, UI Design, Figma
Variables, Components, UI Design, Figma

SKILLS

Variables, Components, UI Design, Figma
The Problem
The Problem

While working on the Daikin Hero Cloud features team I started documenting components and pattens our team was establishing into a design library.

However, while I was a long time user of Sketch, Daikin was my first project using Figma. I still had a learning curve of the tool and also creating designs systems, especially as a team of one.

Fast forward to 2 years later, our design system was expanding and needed to be cleaned up and refined to help our team move even faster.

While working on the Daikin Hero Cloud features team I started documenting components and pattens our team was establishing into a design library.

However, while I was a long time user of Sketch, Daikin was my first project using Figma. I still had a learning curve of the tool and also creating designs systems, especially as a team of one.

Fast forward to 2 years later, our design system was expanding and needed to be cleaned up and refined to help our team move even faster.

The Goal
The Goal

While there was a lot that was worked on, these were the main goals and improvements we wanted to accomplish:

While there was a lot that was worked on, these were the main goals and improvements we wanted to accomplish:

✧ Refactor components to use frames and auto layout, not groups

✧ Refactor components to use frames and auto layout, not groups

✧ Establish color, spacing, and border radius variables

✧ Establish color, spacing, and border radius variables

✧ Improve structure and semantics for component variants

✧ Improve structure and semantics for component variants

✧ Create themes with color variables for light and dark mode

✧ Create themes with color variables for light and dark mode

✧ Improve scaling of components to help speed up responsive designs

✧ Improve scaling of components to help speed up responsive designs

✧ Refactor components to help create and edit tables more easily

✧ Refactor components to help create and edit tables more easily

✧ Easily toggle nested component properties on/off

✧ Easily toggle nested component properties on/off

Our Team
Our Team

Initially it was one other designer and myself who kicked off the project. We later gained two other designers to help execute our goals.

Initially it was one other designer and myself who kicked off the project. We later gained two other designers to help execute our goals.

My Role
My Role

After two years on the features team, maintaining the design system independently, I took the lead on creating its V2. My deep understanding of design patterns and team pain points made me well-equipped to drive the improvement efforts.

After two years on the features team, maintaining the design system independently, I took the lead on creating its V2. My deep understanding of design patterns and team pain points made me well-equipped to drive the improvement efforts.

Brainstorm
Brainstorm

Since I was going to lead this efforts and I took some time to brainstorm what would be the best approach. The following is what I came up with:

Since I was going to lead this efforts and I took some time to brainstorm what would be the best approach. The following is what I came up with:

01

01

Just like any design project that needs improvements I knew I needed to reach out to our users, our designers on our features team, to gain feedback and discover their pain points.

Just like any design project that needs improvements I knew I needed to reach out to our users, our designers on our features team, to gain feedback and discover their pain points.

Interview Users

Interview Users

Gain Feedback

Gain Feedback

Discover

Pain Points

Discover

Pain Points

02

02

Since our team focused on features, design system questions often got lost in our Slack channel. To improve organization and ensure feedback wasn’t overlooked, I created a dedicated Slack channel for all design system communication as we began refining it.

Since our team focused on features, design system questions often got lost in our Slack channel. To improve organization and ensure feedback wasn’t overlooked, I created a dedicated Slack channel for all design system communication as we began refining it.

#daikin-hero-cloud

#daikin-hero-cloud-design-system

#daikin-hero-cloud-

design-system

03

03

I also did an audit of our current design system and came up with pain points I was seeing as a user and also as someone who was much more knowledgeable in Figma than when she first created the v1 of the design system.

I also did an audit of our current design system and came up with pain points I was seeing as a user and also as someone who was much more knowledgeable in Figma than when she first created the v1 of the design system.

🔍

👩‍💻

📝

Pain Points
Pain Points

After communicating with our features team and gaining feedback these were the pain points I was hearing and noticed within my own audit of the current library:

After communicating with our features team and gaining feedback these were the pain points I was hearing and noticed within my own audit of the current library:

✧ A wish for responsive templates with populated components to easily and quickly create designs

✧ A wish for responsive templates with populated components to easily and quickly create designs

✧ Easily create light and dark mode variations of designs due to the clients request to have both included for all screens with hand off

✧ Easily create light and dark mode variations of designs due to the clients request to have both included for all screens with hand off

✧ Easily toggle between variants and their nested properties

✧ Easily toggle between variants and their nested properties

✧ Make more components scale and responsive to help with hand off of responsive design

✧ Make more components scale and responsive to help with hand off of responsive design

✧ Create variables for colors and spacing due to their recent release at the time and to help speed workflow and improve design consistency

✧ Create variables for colors and spacing due to their recent release at the time and to help speed workflow and improve design consistency

Research
Research

While our team was familiar with using design systems and creating components we wanted to research best practices and investigate what other design system teams had done to help improve and organize their design system.

Furthermore, Figma variables had only just come out at the time and we wanted to take some time to research and how to best implement them.

These are some of the following systems I looked into:

While our team was familiar with using design systems and creating components we wanted to research best practices and investigate what other design system teams had done to help improve and organize their design system.

Furthermore, Figma variables had only just come out at the time and we wanted to take some time to research and how to best implement them.

These are some of the following systems I looked into:

Learnings
Learnings

✧ Our file navigation was similar to many of the file above; we made minor tweaks there

✧ Our file navigation was similar to many of the file above; we made minor tweaks there

✧ Include a dedicated changelog page in Figma to easily track publishes and changes

✧ Include a dedicated changelog page in Figma to easily track publishes and changes

✧ Variant naming and organization structure along with organizations of properties of variants

✧ Variant naming and organization structure along with organizations of properties of variants

Laying the groundwork

Laying the groundwork

In order to create components for a design system you need to have the following defined: colors, typography, spacing, and icons.

I decided our first steps would be to create:

In order to create components for a design system you need to have the following defined: colors, typography, spacing, and icons.

I decided our first steps would be to create:

✧ Create and define a color system

○ Define primitive colors

○ Create primitive color variables

✧ Create and define a color system

○ Define primitive colors

○ Create primitive color variables

✧ Create semantic color variables

✧ Create semantic color variables

✧ Create light/dark mode themes

✧ Create light/dark mode themes

✧ Audit typography to use 4px system and create new font styles

✧ Audit typography to use 4px system and create new font styles

✧ Create spacing variables

✧ Create spacing variables

Library File Creation and Structure
Library File Creation and Structure

Our design system was currently only being used by our team and it was unclear if it would be used outside our team in the future.

At this point in time we decided to keep all of our components in one library file rather than individuals library files for each component type.

Our design system was currently only being used by our team and it was unclear if it would be used outside our team in the future.

At this point in time we decided to keep all of our components in one library file rather than individuals library files for each component type.

Color system
Color system

Figma had just released their beta version of variables a few months prior. In our research we learned that many design teams were creating color ramps and creating a set of primitive colors and then applying those primitives to their semantic colors.

We looked into creating color ramps of each color we were already using however we had a few things against us:

Figma had just released their beta version of variables a few months prior. In our research we learned that many design teams were creating color ramps and creating a set of primitive colors and then applying those primitives to their semantic colors.

We looked into creating color ramps of each color we were already using however we had a few things against us:

✧ Limited time/deadlines

✧ Limited time/deadlines

✧ Auditing all of our colors and replacing ones that were closest in the color ramps

✧ Auditing all of our colors and replacing ones that were closest in the color ramps

✧ Clients approval

✧ Clients approval

With this in mind we decided to make primitives and color ramps with existing colors even if it wasn’t a full spectrum of each individual color.

This helped us save time and didn’t have to worry about client feedback about colors changing. We decided in the future when we have time we would revisit true color ramps.

With this in mind we decided to make primitives and color ramps with existing colors even if it wasn’t a full spectrum of each individual color.

This helped us save time and didn’t have to worry about client feedback about colors changing. We decided in the future when we have time we would revisit true color ramps.

Primitive Variables
Primitive Variables

We created a separate collection in our local variables for our primitives. These would be our hex color value variables that we could then link to global and component specific variables.

We created a separate collection in our local variables for our primitives. These would be our hex color value variables that we could then link to global and component specific variables.

Primitive Color Variables
Global Semantic Variables
Global Semantic Variables

After defining our primitive variables we then set up our global semantic color variables which referenced the primitive variables.

This includes defining color variables for design elements with colors that are frequently used, such as:

After defining our primitive variables we then set up our global semantic color variables which referenced the primitive variables.

This includes defining color variables for design elements with colors that are frequently used, such as:

✧ Text color

✧ Text color

✧ Surface colors

✧ Surface colors

✧ Success/Error state colors

✧ Success/Error state colors

✧ Alert colors

✧ Alert colors

✧ Action colors (active, hover, pressed, disabled)

✧ Action colors (active, hover, pressed, disabled)

Setting up these global color variables allows us to change commonly used colors easily throughout the app if needed, since we linked them in the component specific variables we created next.

Setting up these global color variables allows us to change commonly used colors easily throughout the app if needed, since we linked them in the component specific variables we created next.

Component Specific Variables
Component Specific Variables

With our global semantic variables set up, we could start creating component specific variables and link them to the global ones.

Once again allowing us to edit colors in the future easily if needed.

With our global semantic variables set up, we could start creating component specific variables and link them to the global ones.

Once again allowing us to edit colors in the future easily if needed.

Spacing, Border Width, Radius Variables
Spacing, Border Width, Radius Variables

We created spacing, border width, and radius variables in order to improve consistency of these design elements throughout the app.

We created spacing, border width, and radius variables in order to improve consistency of these design elements throughout the app.

Typography & Font Styles
Typography & Font Styles

Our previous type scale had been using odd numbers. We decided to adjust it to be even numbers to match our spacing of 4px increments.

Our features team had also expressed how they wanted more definition between font sizes and font weights. With this in mind we created more hierarchy creating display, heading, and paragraph font styles with multiple font weights.

Our previous type scale had been using odd numbers. We decided to adjust it to be even numbers to match our spacing of 4px increments.

Our features team had also expressed how they wanted more definition between font sizes and font weights. With this in mind we created more hierarchy creating display, heading, and paragraph font styles with multiple font weights.

Before
After
Before
After
Before
After
Creating Components
Creating Components

With all of our variables and font styles in place, it was time to start building components!

While creating our components we utilized our font styles, spacing variables, and color variables and applied them as needed.

We also added variants and properties to each component as needed and surfaced the properties into the parent layer of the component.

Below are a few examples of the updates we made:

With all of our variables and font styles in place, it was time to start building components!

While creating our components we utilized our font styles, spacing variables, and color variables and applied them as needed.

We also added variants and properties to each component as needed and surfaced the properties into the parent layer of the component.

Below are a few examples of the updates we made:

❖ Buttons
❖ Buttons
Before

In the first version of the library I had been creating different components and variants for each button type. This created a lot of components and was messy.

Before

In the first version of the library I had been creating different components and variants for each button type. This created a lot of components and was messy.

Before

In the first version of the library I had been creating different components and variants for each button type. This created a lot of components and was messy.

After

In the second version we created one button component that had many different variants where you could alternate between primary, secondary, and tertiary buttons and swap for different states and styles easily.

After

In the second version we created one button component that had many different variants where you could alternate between primary, secondary, and tertiary buttons and swap for different states and styles easily.

After

In the second version we created one button component that had many different variants where you could alternate between primary, secondary, and tertiary buttons and swap for different states and styles easily.

❖ Tables
❖ Tables
Before

Previously I had been creating components for rows of each individual table we had throughout the app and included variants of the rows.

Before

Previously I had been creating components for rows of each individual table we had throughout the app and included variants of the rows.

Before

Previously I had been creating components for rows of each individual table we had throughout the app and included variants of the rows.

After

Now instead of having row components for each specific table we decided to make components of each cell type used in all the tables. We then used frames and auto layout to combine cells to make rows for our tables.

After

Now instead of having row components for each specific table we decided to make components of each cell type used in all the tables. We then used frames and auto layout to combine cells to make rows for our tables.

After

Now instead of having row components for each specific table we decided to make components of each cell type used in all the tables. We then used frames and auto layout to combine cells to make rows for our tables.

❖ Cards
❖ Cards
Before

Many components, including cards, were only using groups rather than frames and auto layout.

Before

Many components, including cards, were only using groups rather than frames and auto layout.

Before

Many components, including cards, were only using groups rather than frames and auto layout.

After

Now any card components were updated to use frames and auto layout to help scale and easily build them.

After

Now any card components were updated to use frames and auto layout to help scale and easily build them.

After

Now any card components were updated to use frames and auto layout to help scale and easily build them.

Dark Mode Variables
Dark Mode Variables

Our team prioritized light mode since that is what designers worked in. As a last step after all components were created I added the color variables for dark mode as a second theme. After this we could easily swap artboards between light and dark mode.

Our team prioritized light mode since that is what designers worked in. As a last step after all components were created I added the color variables for dark mode as a second theme. After this we could easily swap artboards between light and dark mode.

Template Creation
Template Creation

Our features team requested responsive templates of commonly used components to help speed up work flow when starting new features.

A few of the templates we created were:

Our features team requested responsive templates of commonly used components to help speed up work flow when starting new features.

A few of the templates we created were:

✧ A blank page with header, navigation, page title, and footer components

✧ A blank page with header, navigation, page title, and footer components

✧ Same as above with tabs components

✧ Same as above with tabs components

✧ A table template with the table header components and auto layout rows with component cells

✧ A table template with the table header components and auto layout rows with component cells

Results
Results

✧ Our features team usage of component increased; making collaboration easier and faster 🤝

✧ Our features team usage of component increased; making collaboration easier and faster 🤝

✧ Positive feedback from features team stating the improvements to library helped speed up work flow and was easy to use 🎉

✧ Positive feedback from features team stating the improvements to library helped speed up work flow and was easy to use 🎉

✧ Our features team continued increased interest and engagement with developing and improving the library 💬

✧ Our features team continued increased interest and engagement with developing and improving the library 💬

Reflection & Next Steps
Reflection & Next Steps

✧ Due to time constraints we were unable to make true color ramps. If we have time in the future I think it would be a great addition to help with organization and creation of new colors.

✧ Due to time constraints we were unable to make true color ramps. If we have time in the future I think it would be a great addition to help with organization and creation of new colors.

✧ Create more interactive components to help speed up prototype creation work flow.

✧ Create more interactive components to help speed up prototype creation work flow.

✧ Currently the library has minimal documentation. As the team expands and adds new designers it is nice to have more thorough documentation for commonly asked questions we received on Slack.

✧ Currently the library has minimal documentation. As the team expands and adds new designers it is nice to have more thorough documentation for commonly asked questions we received on Slack.

courtney ariel
© 2025
courtney ariel
© 2025
courtney ariel
© 2025