Skip to main content

Design System

A design system is a collection of reusable components, guided by clear standards, that can be assembled together to build any number of applications.

Dyte's UI Kit uses Atomic design as a principle to bring logic and structure to individual screens. Read this blog post to get a complete overview of how we're using design tokens and atomic design principles to create a multi-brand, multi-device Design System.

Let's look at how you can customize your UI with Dyte's UI Kit.

Dyte provides the provideDyteDesignSystem() utility to programmatically configure the design system of UI Kit components with a few lines of code.

Read on to learn more about each token in detail.

Design Tokensโ€‹

UI Kit uses design tokens for it's design system.

Design tokens are the design related values which are used to maintain a design system, which provides flexibility in customizing the overall design of a system with values such as: typography, spacing, colors etc.

These design tokens are stored and shared among components with the help of CSS variables.

Typographyโ€‹

--dyte-font-family: Inter;

You can tweak the font family used in your UI Kit components easily with this token.

You can edit this value in two ways with the provideDyteDesignSystem utility.

Usageโ€‹

const designTokens = {
fontFamily: 'Custom Font';
// or
googleFont: 'A Google Font';
}

Set either of these values in your design tokens.

  1. With fontFamily ๐Ÿชก - Use a custom font family, you'll have to load the font manually.
  2. With googleFont โœจ - Use a google font, the font is loaded automatically.

Colorsโ€‹

--dyte-colors-brand-500: 33 96 253;
--dyte-colors-background-1000: 8 8 8;
/* ... rest of the shades */

CSS Variables are set in the format: R G B.

Here are all the color tokens, along with their default values.

Brand
300
#497CFD
400
#356EFD
500
#2160FD
600
#0D51FD
700
#0246FD
Background
1000
#080808
900
#1A1A1A
800
#1E1E1E
700
#2C2C2C
600
#3C3C3C
Text
1000
rgb(255 255 255)
900
rgb(255 255 255 / 0.88)
800
rgb(255 255 255 / 0.76)
700
rgb(255 255 255 / 0.64)
600
rgb(255 255 255 / 0.52)
Text On Brand
1000
rgb(255 255 255)
900
rgb(255 255 255 / 0.88)
800
rgb(255 255 255 / 0.76)
700
rgb(255 255 255 / 0.64)
600
rgb(255 255 255 / 0.52)
Singular Colors
video-bg
#181818
success
#83D017
warning
#FFCD07
danger
#FF2D2D

Usageโ€‹

info

Note the exception of text and text-on-brand colors, you only specify a single color even though there are the following shades: 1000 - 600.

This is because the provideDyteDesignSystem() utility sets the color you pass to text-1000 and calculates lighter shades and sets them as well.

Only pass objects for brand and background colors.

A set of commonly used background shades are available by default with the theme property.

Theme values are: light, dark, darkest.

Edit color tokens like this. Only the colors you specify will be set.

const designTokens = {
theme: 'darkest',
colors: {
brand: { 500: '#0D51FD' },
background: { 1000: '#080808' },
text: '#ffffff',
'text-on-primary': '#ffffff',
'video-bg': '#181818',
},
};

Spacingโ€‹

--dyte-space-1: 4px;
/* ... rest of the spacing scale */

The spacing scale is used for setting width, height, margins, paddings, positions etc. throughout the components.

  • The default value for the spacing scale base is 4px.
  • Rest of the values are calculated with this base, set to --dyte-space-1.
  • Current spacing scale ranges from 0 to 96.

Usageโ€‹

Set the base of the spacing scale with spacingBase property.

const designTokens = {
spacingBase: 4, // value in px
};

Border Width & Border Radiusโ€‹

Border Width and Border Radius properties can also be customized with design tokens!

Token NameValues
borderWidthnone, thin, fat
borderRadiussharp, rounded, extra-rounded, circular

Usageโ€‹

const designTokens = {
borderWidth: 'thin',
borderRadius: 'rounded',
};