Skip to main content

Responsive

Basic example

Stitches allows for an object to be passed on to an entry from the variants object that exist on a component. This object can take an optional initial variant. The rest of the keys are CSS conditions and you can pass on a defined condition by specifying the key, or a custom condition.

import { Text } from '@streamelements/frontend-ui';

<Text.Body variant={{ '@initial': 'body', min1024: 'caption' }}>
I change from caption to body at defined condition of minimum 1024px window width
</Text.Body>

I change from caption to body at defined condition of minimum 1024px window width

Resize the browser below 1024px to see the text get smaller.

Custom conditions

You can set custom conditions by providing a key to the variant object:

import { Text } from '@streamelements/frontend-ui';

<Text.Body variant={{
'@initial': 'body',
'@media (min-width: 1392px)': 'caption'
}}>
I change my variant value at a weird size of 1392px
</Text.Body>

I change my variant value at a weird size of 1392px

CSS className variants

When generating a className with the css function exposed from the library you can still add variants, and you can still call those variants based on a condition.

If you've got the following styles:

import { css } from '@streamelements/frontend-ui';

const customColor = css({
variants: {
paint: {
primary: {
color: '$textPrimaryMain'
},
accent: {
color: '$textSuccess'
}
}
}
});

When you call the returned function, pass an object to it:

<Text.Body className={customColor({
paint: {
'@initial': 'primary',
'@min1024': 'accent'
}
})}>
I change my color when I'm displayed on Full HD window size
</Text.Body>

I change my color when I'm displayed on Full HD window size

Conditions

The UI library comes with several common breakpoints:

  • @min480: @media (min-width: 480px)
  • @max480: @media (max-width: 480px)
  • @min768: @media (min-width: 768px)
  • @max768: @media (max-width: 768px)
  • @min1024: @media (min-width: 1024px)
  • @max1024: @media (max-width: 1024px)
  • @minFullHD: @media (min-width: 1920px)
  • @maxFullHD: @media (max-width: 1920px)
  • @min1440: @media (min-width: 1440px)
  • @max1440: @media (max-width: 1440px)
  • @minQHD: @media (min-width: 2560px)
  • @maxQHD: @media (max-width: 2560px)
  • @min4K: @media (min-width: 3840px)
  • @max4K: @media (max-width: 3840px)

If you need to diverge from these, take a look at how to use custom conditions.