What and why
Pixel Design System is the design system used for Aperia products, which are mainly focused on financial and data management systems. It consists of below parts:
- UI Design and UI Kit in Figma and Sketch.
- DSM Documentation for Behavior and Interaction.
- Storybook documentation.
- ReactJS components.
The goal is to enhance the consistency between designs through products and between design and implementation. Also, mitigate the time for implementing the user interface and have one source of truth for design and development documentation.
Design Foundation
I joined the team in the beginning and created the foundation for the design system including the color and typography system for visual language.
Color
Define a color palette and color using guide to use consistently within components and pages and meet the contrast for accessibility (WCAG).
![Post Content Image](/_next/image?url=https%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300110%2Fblock_94263611-c077-4cf4-ba18-407167b8e64f.png&w=3840&q=100)
![Post Content Image](/_next/image?url=https%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300111%2Fblock_97124d56-76b9-4cfd-be7f-768e7c1a3554.png&w=1920&q=100)
Typography
Define responsive typography styles (for design-tool UI kit and CSS utilities) for consistency between design and development
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300112%2Fblock_362caae7-f8ec-4533-a9e6-4410e3ef3509.png&w=1920&q=100)
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300112%2Fblock_bfdb36be-a1ca-45af-a621-79944674f6c9.png&w=1080&q=100)
h1, .h1 {
@include TextStyle(32, 48, -0.3);
@include Breakpoint('md') {
@include TextStyle(28, 40, -0.2);
}
}
h2, .h2 {
@include TextStyle(24, 36, -0.25);
@include Breakpoint('md') {
@include TextStyle(20, 32, -0.2);
}
}
h3, .h3 {
@include TextStyle(20, 32, -0.2);
@include Breakpoint('md') {
@include TextStyle(18, 28, -0.1);
}
}
Copywriting
I work with technical writers to document the voice and tone we should use in our products and some common-case recommended verbiage.
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300110%2Fblock_db0ab0b3-c956-474f-9d3a-8b8b95431cba.png&w=3840&q=100)
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300112%2Fblock_c061fbf2-247f-4d6f-89e3-42b60df9ea5a.png&w=3840&q=100)
Components
I define how components look and work, then set them up in Figma and Sketch. On the other hand, discuss with developers to unify component APIs to make them consistent with Figma Variants.
During this process, I make rapid prototypes in HTML/CSS/JS to explain complex concepts (like Design Tokens or Popover responsiveness) and sometimes help implement the React components.
Design Tokens concept
Documentation
In the main documentation, we document all UI specs and behaviors of components to make sure all members will understand and be on the same page.
In the Storybook documentation, we document the component APIs and list out some common use cases, what should developers notice, and what props to use in each case.
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300112%2Fblock_0bd6e924-b06a-494f-b8b9-42b813c19eed.png&w=3840&q=100)
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300114%2Fblock_9f273d58-1417-4eee-85f7-47f978888811.png&w=3840&q=100)
Component APIs
Component APIs are synced between design and source code. So we could speak the same language. Although there are some differences in type, such as action in Figma is boolean to turn on/off the action frame (support override to other components), meanwhile, the action prop in React components supports passing React Node.
![Post Content Image](/_next/image?url=http%3A%2F%2Fres.cloudinary.com%2Fauduongtuan%2Fimage%2Fupload%2Fv1719300111%2Fblock_38f83040-9969-40a0-a004-d56c06dc7bff.png&w=1080&q=100)
interface ToastProps {
type?: 'info' | 'warning' | 'sucess' | 'error';
action: React.ReactNode;
//...
}
Results
The design system has been used in several Aperia products, including Tapestrii and PCI. It has been proven to be effective in enhancing the consistency between designs and implementations. Also, it helps to reduce the time for implementing the user interface and have one source of truth for design and development documentation.
Note
Some private materials could not be shared publicly. You can contact me via hi@auduongtuan.com for more information.