iTwinUI variables v1 migration guide - iTwin/iTwinUI GitHub Wiki

Semi-Automated Migration Tool 🤖

To help with the migration, we also provide a semi-automated migration tool that scans your project repo for old code and recommends replacements.

Download options:


This guide will help you migrate from the old Sass variables (previously in @itwin/itwinui-css v0) to the new CSS variables (@itwin/itwinui-variables v1 or v2).

Sass variables (in the format $iui-variable-name) have been replaced with CSS variables (in the format --iui-variable-name). Many of the variable names have been changed to better communicate their use. Additionally, some variables have been removed entirely, some new variables have been added, and some variables have significantly changed their usage and don't have one-to-one counterparts. Variables not mentioned have not changed names and only need to be converted from SASS to CSS.

You can see the changes made to iTwinUI-CSS recently at the iTwinUI-CSS v1 migration guide. You can see the changes made to iTwinUI-react recently for v2 at the iTwinUI-react v2 migration guide.

Notes for migrating:

  • There is no need to explicitly import @itwin/itwinui-variables in every file that uses the variables. CSS variables only need to be included once per page, and this is done automatically by @itwin/itwinui-react, so in most cases you will be able to reference the variables directly. If you were previously importing Sass variables, you can remove that import now.
    - @import '@itwin/itwinui-css/scss/variables';
    
    // ⚠️ Caution! Don't do this in every file or it will cause unnecessary duplication.
    @import '@itwin/itwinui-variables';
    
  • The primary color has been split into accent & informational. You must decide which makes the most sense:
    • Use accent when you want to use the brand color.
    • Use informational when you need to designate the status of informational.
  • If SASS variables were being mathematically manipulated, their CSS counterparts will need to be surrounded by calc(...) to operate correctly. See more here.
  • CSS variables need to be surrounded by var(...) to work. See more here.
  • To combine a color with opacity, use the HSL variables like below. See more here.
    background-color: hsl( var(--iui-color-accent-hsl) / var(--iui-opacity-6) );
    

Theming

Background colors

Before After
$iui-color-background-1 --iui-color-background
$iui-color-background-1-overlay --iui-color-background-hover
$iui-color-background-2 --iui-color-background-backdrop
$iui-color-background-disabled --iui-color-background-disabled
$iui-color-background-primary --iui-color-background-accent or --iui-color-background-informational
$iui-color-background-primary-overlay --iui-color-background-accent-hover or --iui-color-background-informational-hover
$iui-color-background-positive --iui-color-background-positive
$iui-color-background-positive-overlay --iui-color-background-positive-hover
$iui-color-background-warning --iui-color-background-warning
$iui-color-background-warning-overlay --iui-color-background-warning-hover
$iui-color-background-negative --iui-color-background-negative
$iui-color-background-negative-overlay --iui-color-background-negative-hover

New background colors

  • --iui-color-background-backdrop-hover: hover state for $iui-color-background-backdrop.
  • --iui-color-background-zebra: zebra striping for table rows, color is halfway between --iui-color-background & --iui-color-background-backdrop.
  • --iui-color-background-accent-muted: a muted color of --iui-color-background-accent that --iui-color-text can safely be placed on.
  • --iui-color-background-informational-muted: a muted color of --iui-color-background-informational that --iui-color-text can safely be placed on.
  • --iui-color-background-positive-muted: a muted color of --iui-color-background-positive that --iui-color-text can safely be placed on.
  • --iui-color-background-warning-muted: a muted color of --iui-color-background-warning that --iui-color-text can safely be placed on.
  • --iui-color-background-negative-muted: a muted color of --iui-color-background-negative that --iui-color-text can safely be placed on.
  • --iui-color-background-transparent-hover: used by borderless buttons for hover.

Removed background colors

  • $iui-color-background-3: if you're using these as backgrounds, you should consider changing to use --iui-color-background.
  • $iui-color-background-4: if you're using these as backgrounds, you should consider changing to use --iui-color-background.
  • $iui-color-background-5: if you're using these as backgrounds, you should consider changing to use --iui-color-background.

Border colors

Before After
$iui-color-background-4 --iui-color-border-subtle
$iui-color-background-5 --iui-color-border
$iui-color-background-border --iui-color-border
$iui-color-foreground-primary --iui-color-border-accent or --iui-color-border-informational
$iui-color-foreground-positive --iui-color-border-positive
$iui-color-foreground-warning --iui-color-border-warning
$iui-color-foreground-negative --iui-color-border-negative

New border colors

  • --iui-color-border-foreground: for input elements.
  • --iui-color-border-foreground-hover: for input elements when hovered.
  • --iui-color-border-disabled: for input elements when disabled.

Text colors

Before After
$iui-text-color --iui-color-text
$iui-text-color-muted --iui-color-text-muted
$iui-text-color-placeholder --iui-color-text-disabled
$iui-color-foreground-primary --iui-color-text-accent or --iui-color-text-informational
$iui-color-foreground-primary-overlay --iui-color-text-accent-hover or --iui-color-text-informational-hover
$iui-color-foreground-positive --iui-color-text-positive
$iui-color-foreground-positive-overlay --iui-color-text-positive-hover
$iui-color-foreground-warning --iui-color-text-warning
$iui-color-foreground-warning-overlay --iui-color-text-warning-hover
$iui-color-foreground-negative --iui-color-text-negative
$iui-color-foreground-negative-overlay --iui-color-text-negative-hover

New text colors

  • --iui-color-text-hover: for --iui-color-text when hovered.

Icon colors

Before After
$iui-icons-color --iui-color-icon-muted
$iui-icons-color-actionable --iui-color-icon
$iui-icons-color-actionable-hover --iui-color-icon-hover
$iui-icons-color-actionable-disabled --iui-color-icon-disabled
$iui-icons-color-primary --iui-color-icon-accent or --iui-color-icon-informational
$iui-icons-color-positive --iui-color-icon-positive
$iui-icons-color-warning --iui-color-icon-warning
$iui-icons-color-negative --iui-color-icon-negative

New icon colors

  • --iui-color-icon-muted-hover: for --iui-color-icon-muted when hovered.

Foreground colors

Before After
$iui-color-foreground-accessory --iui-color-white

Removed foreground colors

  • $iui-color-foreground-body-invert: no direct counterpart.

RGBA / HSL colors

Before After
$iui-color-foreground-body-rgb --iui-color-foreground-hsl
$iui-color-foreground-primary-rgb --iui-color-accent-hsl or --iui-color-informational-hsl
$iui-color-foreground-positive-rgb --iui-color-positive-hsl
$iui-color-foreground-warning-rgb --iui-color-warning-hsl
$iui-color-foreground-negative-rgb --iui-color-negative-hsl

New RGBA / HSL colors

  • --iui-color-background-hsl: for when you need to use --iui-color-background with opacity.

Non-theming

Colors

Before After
$iui-color-background-skyblue --iui-color-background-skyblue
$iui-color-background-celery --iui-color-background-celery
$iui-color-background-froly --iui-color-background-froly
$iui-color-background-steelblue --iui-color-background-steelblue
$iui-color-background-sunglow --iui-color-background-sunglow
$iui-color-background-seabuckthorn --iui-color-background-seabuckthorn
$iui-color-background-montecarlo --iui-color-background-montecarlo
$iui-color-background-poloblue --iui-color-background-poloblue
$iui-color-background-bouquet --iui-color-background-bouquet
$iui-color-background-ash --iui-color-background-ash
$iui-color-background-oak --iui-color-background-oak

Removed colors

  • $iui-color-dataviz-skyblue: please hardcode hsl(204 77% 67%).
  • $iui-color-dataviz-celery: please hardcode hsl(72 51% 56%).
  • $iui-color-dataviz-froly: please hardcode hsl(2 90% 70%).
  • $iui-color-dataviz-steelblue: please hardcode hsl(200 41% 46%).
  • $iui-color-dataviz-sunglow: please hardcode hsl(42 100% 60%).
  • $iui-color-dataviz-seabuckthorn: please hardcode hsl(29 92% 61%).
  • $iui-color-dataviz-montecarlo: please hardcode hsl(176 43% 62%).
  • $iui-color-dataviz-poloblue: please hardcode hsl(211 44% 67%).
  • $iui-color-dataviz-bouquet: please hardcode hsl(305 19% 55%).
  • $iui-color-dataviz-ash: please hardcode hsl(42 15% 75%).
  • $iui-color-dataviz-oak: please hardcode hsl(27 32% 49%).
  • $iui-color-system-red: please hardcode red.
  • $iui-color-system-burgundi: please hardcode maroon.
  • $iui-color-system-orange: please hardcode orange.
  • $iui-color-system-yellow: please hardcode yellow.
  • $iui-color-system-green: please hardcode limegreen.
  • $iui-color-system-cyan: please hardcode deepskyblue.
  • $iui-color-system-blue: please hardcode blue.
  • $iui-color-system-magenta: please hardcode mediumorchid.
  • $iui-color-system-turquoise: please hardcode aquamarine.
  • $iui-color-system-gray: please hardcode darkgray.

Elevation / Shadow

Before After
$iui-elevation-0 --iui-shadow-0
$iui-elevation-2 --iui-shadow-1
$iui-elevation-4 --iui-shadow-2
$iui-elevation-8 --iui-shadow-3
$iui-elevation-16 --iui-shadow-4
$iui-elevation-24 --iui-shadow-5

Speed / Duration

Before After
$iui-speed-instant --iui-duration-0
$iui-speed-fast --iui-duration-1
$iui-speed --iui-duration-2
$iui-speed-slow --iui-duration-3

Sizes

Before After
$iui-xxs --iui-size-3xs
$iui-xs --iui-size-2xs
$iui-s --iui-size-xs
$iui-sm --iui-size-s
$iui-m --iui-size-m
$iui-l --iui-size-l
$iui-xl --iui-size-xl
$iui-xxl --iui-size-2xl
$iui-3xl --iui-size-3xl

Border radius

Before After
$iui-border-radius --iui-border-radius-1
$iui-border-radius-round --iui-border-radius-round

Component specific

Before After
$iui-component-height --iui-component-height
$iui-component-height-small --iui-component-height-small
$iui-component-height-large --iui-component-height-large
$iui-component-padding-horizontal --iui-size-s

Removed component specific

  • $iui-component-offset: no direct counterpart.
  • $iui-component-padding-vertical-small: no direct counterpart.
  • $iui-component-padding-vertical-large: no direct counterpart.

Blur

Removed blur

  • $iui-blur-filter: no direct counterpart, please hardcode the previous value of blur(5px).

Font families

Before After
$iui-font-family --iui-font-sans
$iui-monospace --iui-font-mono

Removed font families

  • $iui-sans: was used as part of $iui-font-family, please use --iui-font-sans.
  • $iui-sans-fallback: no direct counterpart.
  • $iui-font-loaded-class: no direct counterpart.

Font sizes

Before After
$iui-font-size-small --iui-font-size-0
$iui-font-size --iui-font-size-1
$iui-font-size-leading --iui-font-size-2
$iui-font-size-subheading --iui-font-size-3
$iui-font-size-title --iui-font-size-4
$iui-font-size-headline --iui-font-size-5

Font weights

Before After
$iui-font-weight-light --iui-font-weight-light
$iui-font-weight-normal --iui-font-weight-normal
$iui-font-weight-semibold --iui-font-weight-semibold
$iui-font-weight-bold --iui-font-weight-bold

Font cap sizes

Removed font cap sizes

  • $iui-cap-size: no direct counterpart.
  • $iui-cap-size-small: no direct counterpart.
  • $iui-cap-size-leading: no direct counterpart.
  • $iui-cap-size-subheading: no direct counterpart.
  • $iui-cap-size-title: no direct counterpart.
  • $iui-cap-size-headline: no direct counterpart.

Line height

Removed line height

  • $iui-baseline: the closest variable is --iui-size-s.
  • $iui-line-height: the closest variable is --iui-size-l.