Overgang til versjon 2

Versjon 2 av designsystemet har omstrukturert tokens for å gjøre det mulig å støtte lys og mørk visning, samt tilrettelegging for flere merkespesifikke temaer i fremtiden. Denne artikkelen viser hvilke tokens som er endret, og hvordan man oppgraderer til versjon 2.

Oppgradering til versjon 2

For de aller fleste skal det fungere å oppgradere alle pakkene til versjon 2.0.0, og deretter kjøre det automatiske migrasjonsscriptet for å gi nye navn til alle tokens. Hvis man konsumerer tokens i Typescript eller Javascript vil ikke migrasjonsscriptet gjøre noen endringer, så da må man manuelt oppdatere de tokenene man bruker til nye navn. Dette gjelder spesielt hvis man bruker fargetokens i Javascript/Typescript.

Migrasjonsscript

For å migrere tokens kan følgende script kjøres fra rotnivå i løsningen din:

npx migrate-aneo-tokens

Scriptet går gjennom alle .css, .scss, .js, .ts, og .tsx filer og leter etter gamle token-navn, og erstatter disse med nye navn. For å sjekke hvilke endringer som vil bli gjort kan man kjøre scriptet i dry-run modus først. Da vil scriptet skrive ut hvilke endringer som vil bli gjort, men uten å faktisk gjøre noen endringer. Kjøring i dry-run gjøres slik:

npx migrate-aneo-tokens --dry-run

Mørkt fargetema

Det nye tokensettet tilbyr tokens som virker både i mørk og lys modus. Mørk modus virker ved at vi bytter ut token-verdiene avhengig av fargetema brukeren vil ha. Aktivt fargetema styres ved hjelp av attributten data-color-scheme på DOM-noder. data-color-scheme kan ha verdiene light, dark, eller auto. Hvis man vil ha hele siden i mørk modus kan man sette data-color-scheme<html>-elementet på siden slik: <html data-color-scheme="dark">.

Man kan også overstyre fargetema i et spesifikt punkt lenger inn i DOM-nodetreet på siden ved å sette data-color-scheme. F.eks:

<div data-color-scheme="dark" style={{ display: "flex", flexDirection: "column", gap: "var(--layout-spacing-md)"}}>
  <div style={{ background: "var(--color-background-primary)", color: "var(--color-foreground-primary)", padding: "var(--layout-spacing-md)", border: "1px solid var(--color-foreground-primary)" }}>
    Innhold i mørk modus
  </div>
  <div data-color-scheme="light">
    <div style={{ background: "var(--color-background-primary)", color: "var(--color-foreground-primary)", padding: "var(--layout-spacing-md)", border: "1px solid var(--color-foreground-primary)" }}>
      Innhold i lys modus
    </div>
  </div>
</div>

På denne dokumentasjonssiden har det også kommet en fargevelger oppe i høyre hjørne, som du kan bruke for å se siden i mørk eller lys modus.

Gap-størrelser for <Grid /> og <Stack />

<Grid />, og <Stack />-komponentene har tidligere hatt en gap-prop som har vært et tall som korresponderer til en størrelse. Dette er endret slik at de nå oppgir en tokenverdi som gap. Nye mulige verdier for gap-prop-en for disse er 0 | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl".

Size-prop for <Spinner />

Spinner har fått endret size-prop'en til å korrespondere til token-navn. Nye mulige verdier er "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl".

Størrelse for <Accordion />

Accordion har fått en size-prop. Og har i tillegg fått endret stilene sine slik at den har padding som standard.

Eksempler

Kosmetiske endringer

I tillegg til mørkt fargetema og noen endrede farger, er også alle knapper endret til å ha full border-radius slik at de får en pilleform. Hvis du ønsker å beholde gammel border-radius anbefales det at du lager dine egne komponenter som wrapper designsystem-komponentene i din egen løsning. I tillegg til dette har <Callout />, <Card />, og <Tag /> fått border istedenfor fyll.

Eksempler

Endrede tokens

Her følger en liste av alle tokens som har fått nye navn i versjon 2.

SCSS Breakpoints

SCSS-variablene for breakpoints har fått nye navn

$layout-breakpoint-extra-small  => $layout-breakpoint-xs  
$layout-breakpoint-small        => $layout-breakpoint-sm  
$layout-breakpoint-medium       => $layout-breakpoint-md  
$layout-breakpoint-large        => $layout-breakpoint-lg  
$layout-breakpoint-extra-large  => $layout-breakpoint-xl

CSS Color tokens

color-border

--color-border-primary    => --color-foreground-primary  
--color-border-secondary  => --color-foreground-secondary  
--color-border-dimmed     => --color-foreground-dimmed  
--color-border-accent     => --color-foreground-accent  
--color-border-disabled   => --color-foreground-disabled  
--color-border-divider    => --color-alpha-10  
--color-border-focus      => --color-foreground-focus  
--color-border-error      => --color-foreground-error

color-background-hover

--color-background-hover-primary   => --color-background-primary-hover  
--color-background-hover-secondary => --color-background-secondary-hover  
--color-background-hover-dimmed    => --color-background-dimmed-hover  
--color-background-hover-accent    => --color-background-accent-hover

color-background-active

--color-background-active-primary   => --color-background-primary-active  
--color-background-active-secondary => --color-background-secondary  
--color-background-active-dimmed    => --color-background-dimmed-active  
--color-background-active-accent    => --color-background-accent

color-status

--color-status-positive-dimmed      => --color-background-primary  
--color-status-positive             => --color-foreground-positive  
--color-status-negative-dimmed      => --color-background-primary  
--color-status-negative             => --color-foreground-error  
--color-status-informative-dimmed   => --color-background-primary  
--color-status-informative          => --color-foreground-focus  
--color-status-waiting-dimmed       => --color-background-primary  
--color-status-waiting              => --color-foreground-primary

CSS Layout tokens

layout-size

--layout-size-extra-small  => --layout-size-xs  
--layout-size-small        => --layout-size-sm  
--layout-size-medium       => --layout-size-md  
--layout-size-large        => --layout-size-lg  
--layout-size-extra-large7 => --layout-size-7xl  
--layout-size-extra-large6 => --layout-size-6xl  
--layout-size-extra-large5 => --layout-size-5xl  
--layout-size-extra-large4 => --layout-size-4xl  
--layout-size-extra-large3 => --layout-size-3xl  
--layout-size-extra-large2 => --layout-size-2xl  
--layout-size-extra-large  => --layout-size-xl

layout-breakpoint

--layout-breakpoint-extra-small  => --layout-breakpoint-xs  
--layout-breakpoint-small        => --layout-breakpoint-sm  
--layout-breakpoint-medium       => --layout-breakpoint-md  
--layout-breakpoint-large        => --layout-breakpoint-lg  
--layout-breakpoint-extra-large  => --layout-breakpoint-xl

layout-spacing

--layout-spacing-extra-small  => --layout-spacing-xs  
--layout-spacing-small        => --layout-spacing-sm  
--layout-spacing-medium       => --layout-spacing-md  
--layout-spacing-large        => --layout-spacing-lg  
--layout-spacing-extra-large7 => --layout-spacing-7xl  
--layout-spacing-extra-large6 => --layout-spacing-6xl  
--layout-spacing-extra-large5 => --layout-spacing-5xl  
--layout-spacing-extra-large4 => --layout-spacing-4xl  
--layout-spacing-extra-large3 => --layout-spacing-3xl  
--layout-spacing-extra-large2 => --layout-spacing-2xl  
--layout-spacing-extra-large  => --layout-spacing-xl

layout-border-radius

--layout-border-radius-extra-small  => --layout-border-radius-xs  
--layout-border-radius-small        => --layout-border-radius-sm  
--layout-border-radius-medium       => --layout-border-radius-md  
--layout-border-radius-large        => --layout-border-radius-lg

layout-border-width

--layout-border-width-small         => --layout-border-width-sm  
--layout-border-width-medium        => --layout-border-width-md  
--layout-border-width-large         => --layout-border-width-lg  
--layout-border-width-extra-large   => --layout-border-width-xl

CSS Typography tokens

typography-line-height

--typography-line-height-extra-small  => --typography-line-height-xs
--typography-line-height-small        => --typography-line-height-sm
--typography-line-height-medium       => --typography-line-height-md
--typography-line-height-large        => --typography-line-height-lg
--typography-line-height-extra-large2 => --typography-line-height-2xl 
--typography-line-height-extra-large  => --typography-line-height-xl

typography-font-size

--typography-font-size-extra-small2  => --typography-font-size-2xs  
--typography-font-size-extra-small   => --typography-font-size-xs  
--typography-font-size-small         => --typography-font-size-sm  
--typography-font-size-medium        => --typography-font-size-md  
--typography-font-size-large         => --typography-font-size-lg  
--typography-font-size-extra-large8  => --typography-font-size-8xl  
--typography-font-size-extra-large7  => --typography-font-size-7xl  
--typography-font-size-extra-large6  => --typography-font-size-6xl  
--typography-font-size-extra-large5  => --typography-font-size-5xl  
--typography-font-size-extra-large4  => --typography-font-size-4xl  
--typography-font-size-extra-large3  => --typography-font-size-3xl  
--typography-font-size-extra-large2  => --typography-font-size-2xl  
--typography-font-size-extra-large   => --typography-font-size-xl

typography-paragraph-spacing

--typography-paragraph-spacing-extra-small  => --typography-paragraph-spacing-xs  
--typography-paragraph-spacing-small        => --typography-paragraph-spacing-sm  
--typography-paragraph-spacing-medium       => --typography-paragraph-spacing-md  
--typography-paragraph-spacing-large        => --typography-paragraph-spacing-lg

Typescript/Javascript

I Typescript/Javascript har tokenene fått tilsvarende nye navn. Her har også fargetokens blitt prefixet med Light og Dark for de tokenene som har separate verdier avhengig av fargetema.