Migreringsguide
Fra 0.2 til 0.3
Versjon 0.3 oppdaterer avhengighetene. Den eneste brytende endringen gjelder Calendar.
Bytt utgåtte props på Calendar
Calendar bruker nå react-day-picker 10, som har fjernet props som var markert som utgått. TypeScript sier fra hvis du bruker noen av dem:
| Før | Nå |
|---|---|
fromMonth/toMonth | startMonth/endMonth |
fromYear/toYear | startMonth={new Date(år, 0)}/endMonth={new Date(år, 11)} |
fromDate/toDate | hidden={{ before: … }}/hidden={{ after: … }} |
initialFocus | autoFocus |
Fra 0.1 til 0.2
Versjon 0.2 gjør det mulig å endre hele uttrykket med et tema – farger, typografi, form, tetthet, skygger og bevegelse. Temaet er delt i merkevare og fargevariant, og lys/mørk modus har fått sitt eget attributt.
Ingenting krasjer hvis du ikke migrerer, men flere av endringene gir stille visuelle feil. Gå gjennom stegene under.
Nye krav
Fargene bruker CSS-funksjonen light-dark(). Den krever Chrome/Edge 123, Safari 17.5 eller Firefox 120 (fra mai 2024) eller nyere. I eldre nettlesere vises ingen farger fra designsystemet.
1. Importer fontene
Fontene ligger ikke lenger i styles.css, slik at hver merkevare kan levere sine egne. Uten importen faller all tekst tilbake til systemfonten.
@import "tailwindcss";
@import "@kilden/designsystem/styles.css";
@import "@kilden/designsystem/fonts/bekk.css"; /* ny */2. Bytt tema-attributtene
data-theme har fått merkevaren som prefiks, og lys/mørk settes med data-color-scheme:
| Før | Nå |
|---|---|
data-theme="ild" | data-brand="bekk" data-theme="bekk-ild" |
data-theme="vann" | data-brand="bekk" data-theme="bekk-vann" |
data-theme="jord" | data-brand="bekk" data-theme="bekk-jord" |
data-theme="luft" | data-brand="bekk" data-theme="bekk-luft" |
data-theme="vann-light" | data-brand="bekk" data-theme="bekk-vann" data-color-scheme="light" |
data-theme="vann-dark" | data-brand="bekk" data-theme="bekk-vann" data-color-scheme="dark" |
De gamle verdiene treffer ingen regler lenger. Uten migrering får siden standardtemaet bekk-ild, og Vann, Jord og Luft blir stille til Ild. -light og -dark ignoreres, så fargene følger operativsystemet.
Bruker du ThemeSwitcher eller applyThemeToDocument(), settes de nye attributtene automatisk. Husk også attributtene du setter i server-rendret HTML og i inline-skript i <head>.
3. Sjekk egen CSS og egne temaer
- Selektorer på gamle attributter, som
[data-theme="ild-dark"] .noe, treffer ikke lenger. Bruk[data-theme="bekk-ild"]og[data-color-scheme="dark"], eller enda bedre: CSS-variablene, som allerede følger temaet. font-expandedheter nåfont-action. Klassenfont-expandedfinnes ikke lenger, og gir vanlig font.- Temaer fra den gamle temabyggeren (
:root { … }og.dark { … }) virker i lys modus, men mørk modus virker bare hvis appen selv setter.dark. Lag temaet på nytt i temabyggeren, som nå eksporterer et komplett tema fordata-brand. Se Lag ditt eget tema.
4. Sjekk visuelle endringer
IngressogActionTextfår riktig størrelse (32 og 14 px på desktop, 24 og 12 px på mobil) også utendata-size. Tidligere var størrelses-tokenene udefinerte utendata-size, så tekstene arvet størrelsen fra omgivelsene og ble ofte for små. Utendata-sizebrukes nå desktop-størrelsene.Calendarhar 12 px tekst i stedet for 12,8 px.text-body,text-leadingogtext-actionsetter nå linjehøyde 1,5. Det er det samme som de arvet fra før i de fleste tilfeller.
Alle andre komponenter ser ut som før.
Dette trenger du ikke gjøre noe med
- CSS-variablene har samme navn og verdi som før. Det er bare kommet nye i tillegg (se
@kilden/design-tokens/contract.json). - Tailwind-klassene i appen din (
p-4,rounded-md,font-medium,text-sm,shadow-lg…) gir samme resultat for Bekk.p-4,rounded-*ogfont-*følger nå merkevarens tokens. - Komponent-API-ene er uendret.
Nytt i denne versjonen
- Egne merkevarer med
data-brand: se Lag ditt eget tema. - Token-klasser for typografi, skygger og bevegelse:
text-caption,text-small,text-title,text-heading-sm/-md/-lg,font-display,font-action,shadow-subtle,shadow-floating,shadow-overlay,duration-fast/-default/-slow/-slowerogease-standard/-enter/-exit. Bruk dem i stedet for Tailwinds standardskala når noe skal følge merkevaren. data-themealene gir hele merkevaren, og attributtene kan settes på elementer lenger ned i treet.
Fra 0.0.x til 0.1.0
Denne guiden gjelder deg som oppgraderer fra @kilden/designsystem 0.0.x til 0.1.0. Versjon 0.1.0 gjør designsystemet klart for produksjon, og inneholder noen endringer som krever at du gjør små justeringer i prosjektet ditt.
Se endringsloggen for en fullstendig liste over endringer.
Nye krav
| Avhengighet | Før | Nå |
|---|---|---|
| React | 18 eller 19 | 19 |
| Tailwind CSS | Ikke påkrevd | v4 (≥ 4.1) |
Har du ikke Tailwind CSS v4 fra før, følg Tailwinds installasjonsguide først.
1. Flytt CSS-importen inn i Tailwind-CSS-en
@kilden/designsystem/styles.css er ikke lenger ferdig kompilert CSS, men et Tailwind v4-oppsett. Appen din genererer nå bare klassene som faktisk brukes, i stedet for å laste ca. 140 KB med alle klassene – og du slipper dobbel preflight.
Før – importert fra JavaScript:
// app/layout.tsx eller app/root.tsx
import "@kilden/designsystem/styles.css";Nå – importert fra CSS-filen der du importerer Tailwind:
/* app.css / globals.css */
@import "tailwindcss";
@import "@kilden/designsystem/styles.css";Fjern importen fra layout.tsx/root.tsx. Har du egne @theme-variabler for Kilden-fargene (f.eks. --color-on-page), kan du fjerne dem – alle semantiske farger, fonter og tekststørrelser er nå registrert i Tailwind-temaet.
2. Fjern bruk av styles
Eksporten styles (CSS-in-JS-objekter) er fjernet. Bruk Tailwind-klasser eller CSS-variablene fra design tokens i stedet:
// Før
<button style={styles.button.primary}>Send</button>
// Nå
<Button>Send</Button>
// eller
<button className="bg-dominant-base-default text-dominant-base-contrast-default">
Send
</button>3. Sjekk visuelle endringer
Ingen av disse krever kodeendringer, men de kan påvirke utseendet:
- Skjemafelt (
Input,Textarea,Select,Combobox,DateInput,TimePicker,DatePicker) har felles boksstil.Inputhadde tidligere understrek. DatePickerfyller nå hele bredden i stedet for å være 280 px. Legg tilclassName="w-[280px]"hvis du vil beholde den gamle bredden.Labeler like stor som feltets innebygde label (text-base). Det gjelder også labels forCheckbox,SwitchogRadioGroup.FormMessagevises med en rød prikk og nøytral tekst, som feilmeldingen iInput.- Overskrifter og titler bruker
font-medium, siden GT America bare lastes i vektene 300–500. - Fokusmarkering er lik i alle komponenter, og fungerer i mørke temaer og høykontrastmodus.
4. Sjekk endret oppførsel
ButtonmedisLoadingutenloadingTextviser nå children ved siden av spinneren, slik at knappen beholder sitt tilgjengelige navn. Tidligere ble children skjult.Comboboxnullstiller ikke lenger valgt verdi når den åpnes og lukkes uten endring.TimePickersetter barearia-label="Klokkeslett"når feltet mangler label.AlertTitlerendres somdivi stedet forh5. Trenger du en overskrift, bruk f.eks.<AlertTitle as="h3">.DatePickersetter ikke lengeraria-requiredpå trigger-knappen (det er ikke tillatt på knapper). Påkrevd vises i labelen.ThemeSwitchersetter fortsattdata-themepå<html>som standard. Styrer appen temaet selv, kan du slå det av medapplyToDocument={false}.
5. Valgfritt: forenkle skjemaene dine
FormField kobler nå Label, skjemaelement, FormDescription og FormMessage automatisk. Manuelle id/htmlFor/aria-describedby fungerer fortsatt, men kan fjernes:
// Før
<FormField>
<Label htmlFor="name">Navn</Label>
<Input id="name" aria-invalid="true" aria-describedby="name-error" />
<FormMessage id="name-error">Navn er påkrevd.</FormMessage>
</FormField>
// Nå
<FormField>
<Label>Navn</Label>
<Input />
<FormMessage>Navn er påkrevd.</FormMessage>
</FormField>Textarea, Combobox, DateInput, TimePicker og DatePicker har også fått label- og error-props på samme måte som Input.