Hopp til hovedinnhold

Hva leter du etter?

Prøv å søke etter…

Komponenter

Button

Button lèt brukarane utføre handlingar.

Trykk Enter for å redigere
Unable to parse html
const Preview = () => {
  return <Button>Min knapp</Button>;
};

render(<Preview />)

Bruk

Klassenavnet ds-button blir satt på <button>.

Det er tre data-attributtar du kan bruke for tilpasning:

  • data-icon - legg på dersom knappen kun har ikon.
  • data-variant - set variant på knappen (primary, secondary, tertiary).
  • data-fullwidth - legg på dersom knappen skal vere full bredde.

CSS variablar og data-attributtar

Størrelsar styrast med data-size og fargar med data-color. Komponenten vil arve næraste forelder med desse satt.

Data-attributter
NavnVerdi
data-fullwidth
data-icon
data-variantsecondary, tertiary
CSS-variabler
NavnVerdi
--dsc-button-backgroundvar(--ds-color-base-default)
--dsc-button-background--activevar(--ds-color-base-active)
--dsc-button-background--hovervar(--ds-color-base-hover)
--dsc-button-border-colortransparent
--dsc-button-border-radiusvar(--ds-border-radius-default)
--dsc-button-border-stylesolid
--dsc-button-border-widthvar(--ds-border-width-default)
--dsc-button-colorvar(--ds-color-base-contrast-default)
--dsc-button-color--activevar(--dsc-button-color--hover)
--dsc-button-color--hovervar(--dsc-button-color)
--dsc-button-gapvar(--ds-size-2)
--dsc-button-paddingvar(--ds-size-2) var(--ds-size-4)
--dsc-button-sizevar(--ds-size-12)

Eksempel

Varianter

data-variant brukast for å endre utsjånad på knappen.

Ikon

Dersom du kun har ikon i knappen kan du sette data-icon="true" for å få den firkanta. Har du anna innhald, som tekst, vil knappen automatisk få luft rundt ikonet.

Knappar som lastar

Dersom du skal ha ein knapp som lastar må du sjølv legge til laste-indikator og aria-busy="true".

Merk: aria-busy hindrar ikkje at knappen utløyser interaksjonar. Den påverkar berre utsjånad og tilgjengelegheit, ikkje funksjonaliteten. Dersom knappen ikkje skal kunne utføre handlingar, må du sjølv legge inn logikk som hindrar at callback-funksjonen blir køyrd.

Knappar som er deaktivert

Så godt det lar seg gjerde burde ein unngå deaktiverte knappar. Dersom du har ein <button>, kan du deaktivere med attributten disabled. Dersom du har ein <a>, kan du deaktivere med attributten aria-disabled="true". Merk: aria-disabled hindrar ikkje at knappen utløyser interaksjonar. Den påverkar berre utsjånad og tilgjengelegheit, ikkje funksjonaliteten. Dersom knappen ikkje skal kunne utføre handlingar, må du sjølv legge inn logikk som hindrar at callback-funksjonen blir køyrd.

React

I React legg me også på type="button" som standard, for å unngå uventa submit i skjema.

Button

variant
Description

Specify which variant to use

Type
"primary" | "secondary" | "tertiary"
Default
'primary'
icon
Description

Toggle icon only styling, pass icon as children When combined with loading, the loading-icon will be shown instead of the icon.

Type
boolean
Default
false
loading
Description

Toggle loading state. Pass an element if you want to display a custom loader.

Type
ReactNode
Default
false
asChild
Description

Change the default rendered element for the one passed as a child, merging their props and behavior.

Type
boolean
Default
false
type
Description

Specify the type of button. Unset when `asChild` is true

Type
"button" | "submit" | "reset"
Default
'button'
NameTypeDefaultDescription
variant"primary" | "secondary" | "tertiary"'primary'

Specify which variant to use

iconbooleanfalse

Toggle icon only styling, pass icon as children When combined with loading, the loading-icon will be shown instead of the icon.

loadingReactNodefalse

Toggle loading state. Pass an element if you want to display a custom loader.

asChildbooleanfalse

Change the default rendered element for the one passed as a child, merging their props and behavior.

type"button" | "submit" | "reset"'button'

Specify the type of button. Unset when `asChild` is true

Ekstra logikk for knappar som lastar

I React brukar me loading={true} for å vise at knappen lastar noko. Her kan du også sende inn din eigen loading-komponent dersom vår Spinner ikkje passar.

I eksempelet over blir aria-busy="true" sett automatisk når loading={true}. Dette er den anbefalte måten å vise at ein knapp lastar på.

Knapp som lenkje

Lenker kan få utsjånad som ein knapp, men vurder først om det er betre å bruke Link-komponenten. For å endre knappen til ei lenkje brukast asChild. Les meir om komposisjon i Designsystemet.

Rediger denne siden på github.com (åpnes i ny fane)