Skip to main content

Design System

Read this blog post to know more: https://dyte.io/blog/new-dyte-video-sdk-design-system/

provideDyteDesignSystem() utility

This is a very handy utility to configure the design system of UI Kit components programmatically, with very lines of code.

<div id="app"></div>

<script>
provideDyteDesignSystem(document.getElementById('app'), {
googleFont: 'Lobster',
// sets light background colors
theme: 'light',
colors: {
danger: '#ffac00',
brand: {
300: '#00FFE1',
400: '#00FFFF',
500: '#00E1D4',
600: '#007B74',
700: '#00655F',
},
text: '#071428',
'text-on-brand': '#ffffff',
'video-bg': '#E5E7EB',
},
borderRadius: 'extra-rounded',
});
</script>

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',
};