May 12, 2020
In her post, Kat Allen shares with us some good practices about naming design system components. One of the first subjects I worked on at Accor Hotel was reflecting on and auditing all existing components, in order to implement a clear and transverse nomenclature for the different products.
Communication between the different members of a project is the key to long-term success, with the design-system being the central and common element to everyone. Design, development, management, marketing… 👨🎨👩💻👩💼👨💼 We can speak the same language, understand each other, and we can all focus on user experience, making sure to have a consistent design all around.
Ensuring that a common language is in place is therefore essential. A shared nomenclature between designers, product owners and developers is the starting point, so the same components, design tokens and features names can be used. This issue is all the more relevant when you have to maintain several products with different teams, such as web, Android, and iOS teams. Native component names are not always similar between the different platforms. Alignment work is therefore necessary to move forwards in the same direction.
These are precisely the challenges we had to face within the design-system team at Accor Hotel. Here are some good practices drawn from our reflections, research, and readings. They include some tips from the article by Kat Allen which I recommend you to read (additional resources are listed at the bottom of the page):
We then started to audit our existing system, compare and clean all our different platforms’ components, as well as confront this with the developers and grow aware of existing disparities. Our discussions enabled us to identify major rules that define the basis of our nomenclature:
These rules apply to our entire system. The only differences between design and development teams are the separators. We advocate following development conventions for each platform, which are not the same for the Web, Android or iOS. The important thing is to be assured to speak the same language. It doesn't really matter if compound words are separated by hyphens, periods, or a camelCase notation. As such, we opted for the use of hyphens on the design side, which corresponds to the classic CSS notation.
It’s important to understand how things work on the technical side and how components are developed, to find a common philosophy upon which our nomenclature can be built. We therefore came up wih this proposal:
element-name / variation / modifier(s) / state(s) / breakpoint
Examples:
button/primary/inverse/default
button/secondary/large -- icon-right/hover/L
Brief explanation of this structure:
We realise how important it is to work together from the design phase, in order to clear up certain technical aspects that our components will then follow. This greatly facilitates the organisation and breakdown of the different cases that we are required to design, in addition to ensuring consistency across all products.
Additional resources:
UI Designer & Creative Developer
Want to tell me about your web project? Contact me at bonjour@kevinbizien.com and we can start talking soon!