Hopp til innhold
Aksel
  • God praksis
  • Grunnleggende
  • Ikoner
  • Komponenter
  • Mønster & Maler
  • Bloggen

Meny

  • God praksis
  • Grunnleggende
  • Ikoner
  • Komponenter
  • Mønster & Maler
  • Blogg
  • komponenter
      • Page
      • HGrid
      • HStack
      • VStack
      • Box
      • Hide
      • Show
      • Bleed
      • Eksperimenter 🧪
      • Accordion
      • ActionMenuBeta
      • Alert
      • Button
      • Chat
      • Checkbox
      • Chips
      • ComboboxBeta
      • ConfirmationPanel
      • CopyButton
      • DatePicker
      • Dropdown
      • ErrorSummary
      • ExpansionCard
      • FileUpload
      • FormProgressNy
      • FormSummaryNy
      • GuidePanel
      • HelpText
      • InternalHeader
      • Link
      • List
      • Loader
      • Modal
      • MonthPicker
      • Navpoleonskake
      • Pagination
      • Popover
      • ProgressBar
      • Provider
      • Radio
      • ReadMore
      • Search
      • Select
      • Skeleton
      • Stepper
      • Switch
      • Table
      • Tabs
      • Tag
      • Textarea
      • TextField
      • Timeline
      • ToggleGroup
      • Tooltip
      • Typography
      • LinkPanelAvviklet
      • PanelAvviklet

Button

Oppdatert 30. april 2025Stabil
GithubYarn FigmaEndringslogg

Innhold på siden

  • Intro
  • Eksempler
  • Varianter
    • Fremhevingsnivåer
    • Fargevarianter
    • Loader
    • Størrelser
    • Disabled
  • Retningslinjer
    • Tekst på knapp
    • Ikonknapp
    • Antall handlinger
    • Varianter i gruppe
  • Tilgjengelighet
  • Props
    • Button
  • Tokens

Intro

Button lar brukeren utføre en handling.

Egnet til:

  • Innsending av skjema
  • Beregning av resultater
  • Handlinger

Har du innspill til komponenten?

Send forslag

Eksempler

SandboxSandbox
Åpne eksempel i nytt vindu

OverridableComponent lar deg endre hvilken html-tag komponenten rendres med. For vanlige lenker kan dette være en '<a>'-tag, men for f.eks React Router eller Remix kan det være en '<Link>'-komponent.

Vi fraråder bruk av disabled state da elementet blir gjemt fra hjelpeteknologier og ofte vil være vanskelig å oppfatte visuelt.

Varianter

Fremhevingsnivåer

Primary

Denne knappen skal brukes til hovedhandlingen i en seksjon/kontekst, det vil si den handlingen som skal ha mest oppmerksomhet (f.eks. "Lagre" eller "Send søknad").

Secondary

Denne varianten kan brukes til handlinger som ikke er hovedhandlinger, ofte i tillegg til en primary-knapp.

Tertiary

Denne brukes til nedtonede handlinger. Om den brukes alene må den ha med et ikon, ellers er det vanskelig å se at det er en knapp.

Fargevarianter

Action (standard)

Disse knappene brukes til handlinger som skal ha oppmerksomhet og er en del av den planlagte flyten i løsningen.

Neutral

Disse knappene kan du bruke til handlinger som ikke trenger så mye oppmerksomhet.

Danger

Denne knappen skal brukes til destruktive handlinger som ikke kan omgjøres, for eksempel "Slett".

Loader

Loaderen kommuniserer at handlingen tar tid. Annet knappeinnhold som tekst eller ikon forsvinner når loaderen vises. Om ventetiden er mer enn få sekunder bør en ekstra tekst forklare situasjonen til brukeren.

Størrelser

Knappene har dynamisk bredde men fast høyde, det som skiller medium og small er høyden og tekststørrelsen. Small er laget spesielt for interne flater.

Størrelsen xsmall er tilgjengelig for bruk i tabeller eller interne løsninger. Den bør brukes sparsomt da klikkflaten kan være problematisk, spesielt på mobil.

Disabled

Generelt fraråder vi bruk av disabled state fordi det er en dårlig måte å kommunisere med brukerne på. Disabled state bør være siste utvei. Les mer om hvorfor deaktiverte tilstander er problematiske på Aksel.

tipsTips

Hvis du mot formodning må bruke en disablet knapp, sørg for at alle brukerne dine både opplever og forstår at knappen eksisterer, at den er deaktivert, og hvorfor. Bruk gjerne støttetekst som alltid er synlig når knappen er deaktivert.

Retningslinjer

Tekst på knapp

Gjeldende anbefaling for å gjøre en knapp godt lesbar er å bruke stor forbokstav og små bokstaver på resten av ordene (sentence case).

GjørKnappetekst skrevet med sentence case
Sentence case gjør det lett å lese teksten på knappen
UnngåKnappetekster med blandede skrivemåter
Det blir rotete om man blander skrivemåter

Ikonknapp

Knapper med kun ikon er forbeholdt løsninger for ekspertbrukere fordi handlingen ikke beskrives med tekst. Unntak kan gjøres for godt kjente ikoner, som lukk og slett. Husk at knappen må ha en tilgjengelig tekst, for eksempel Tooltip, title eller aria-label.

tipsTips

Tooltip forklarer handlingen og viser tastatursnarveier.

Antall handlinger

En knapp skal ha en kort og konsis beskrivelse av handlingen den utfører.

Gjør2 knapper med korte tekster, send inn og lagre
Knapper skal gjøre én handling og ha kort og god tekst.
UnngåEn knapp som gjør 2 ting med lang tekst som kuttes med ellipsis
Lange tekster og flere handlinger på samme knapp bør unngås.

Varianter i gruppe

En gruppe med knapper må bruke samme fargevariant.

GjørGrupperte knapper med samme fargevariant
Bruk samme farge på knappene i en gruppe.
UnngåGrupperte knapper som blander fargevarianter
Det er forvirrende og ser rart ut om man blander farger på knapper i en gruppe.

Tilgjengelighet

Hvis du overstyrer tilgjengelig navn, for eksempel med aria-label, må den synlige teksten kommer først i denne. Dette gjør det lettere for folk som bruker stemmestyring å aktivere knappen.

Hvis du bruker ikon i tillegg til tekst, skal ikonet ha aria-hidden så det ikke legges til i tilgjengelig navn.

Props

Button

as?

  • Type:
    React.ElementType
  • Description:

children?

  • Type:
    ReactNode
  • Description:

variant?

  • Type:
    "primary" | "primary-neutral" | "secondary" | "secondary-neutral" | "tertiary" | "tertiary-neutral" | "danger"
  • Default:
    primary
  • Description:

size?

  • Type:
    "medium" | "small" | "xsmall"
  • Default:
    medium
  • Description:

disabled?

  • Type:
    boolean
  • Description:

loading?

  • Type:
    boolean
  • Default:
    false
  • Description:

icon?

  • Type:
    ReactNode
  • Description:

iconPosition?

  • Type:
    "left" | "right"
  • Default:
    left
  • Description:

className?

  • Type:
    string

ref?

  • Type:
    LegacyRef<HTMLButtonElement>
  • Description:

Tokens

TokenFallback
--ac-button-border-radius--a-border-radius-medium
--ac-button-padding--a-spacing-3 --a-spacing-5
--ac-button-padding-small--a-spacing-1 --a-spacing-3
--ac-button-padding-xsmall--a-spacing-05 --a-spacing-2
--ac-button-padding-icon-only--a-spacing-3
--ac-button-padding-icon-only-small--a-spacing-1
--ac-button-padding-icon-only-xsmall--a-spacing-05
--ac-button-primary-bg--a-surface-action
--ac-button-primary-text--a-text-on-action
--ac-button-primary-hover-bg--a-surface-action-hover
--ac-button-primary-active-bg--a-surface-action-active
--ac-button-primary-focus-border--a-surface-default
--ac-button-secondary-text--a-text-action
--ac-button-secondary-bg--a-surface-transparent
--ac-button-secondary-border--a-border-action
--ac-button-secondary-hover-text--a-text-action-on-action-subtle
--ac-button-secondary-hover-bg--a-surface-action-subtle-hover
--ac-button-secondary-hover-border--a-border-action-hover
--ac-button-secondary-focus-border--a-border-action
--ac-button-secondary-active-text--a-text-on-action
--ac-button-secondary-active-bg--a-surface-action-active
--ac-button-secondary-active-focus-border--a-surface-default
--ac-button-tertiary-text--a-text-action
--ac-button-tertiary-bg--a-surface-transparent
--ac-button-tertiary-hover-text--a-text-action-on-action-subtle
--ac-button-tertiary-hover-bg--a-surface-action-subtle-hover
--ac-button-tertiary-focus-border--a-border-action
--ac-button-tertiary-active-text--a-text-on-action
--ac-button-tertiary-active-bg--a-surface-action-active
--ac-button-tertiary-active-hover-bg--a-surface-action-active
--ac-button-danger-bg--a-surface-danger
--ac-button-danger-text--a-text-on-danger
--ac-button-danger-hover-bg--a-surface-danger-hover
--ac-button-danger-active-bg--a-surface-danger-active
--ac-button-loader-strokecurrentColor
--ac-button-primary-loader-stroke-bgrgb(255 255 255 / 0.3)
--ac-button-primary-neutral-bg--a-surface-neutral
--ac-button-primary-neutral-text--a-text-on-neutral
--ac-button-primary-neutral-hover-bg--a-surface-neutral-hover
--ac-button-primary-neutral-active-bg--a-surface-neutral-active
--ac-button-primary-neutral-focus-border--a-surface-default
--ac-button-secondary-neutral-text--a-text-default
--ac-button-secondary-neutral-bg--a-surface-transparent
--ac-button-secondary-neutral-border--a-border-strong
--ac-button-secondary-neutral-hover-bg--a-surface-neutral-subtle-hover
--ac-button-secondary-neutral-focus-border--a-border-stron
--ac-button-secondary-neutral-active-text--a-text-on-neutral
--ac-button-secondary-neutral-active-bg--a-surface-neutral-active
--ac-button-secondary-neutral-active-focus-border--a-surface-default
--ac-button-tertiary-neutral-text--a-text-default
--ac-button-tertiary-neutral-hover-text--a-text-default
--ac-button-tertiary-neutral-hover-bg--a-surface-neutral-subtle-hover
--ac-button-tertiary-neutral-focus-border--a-border-stron
--ac-button-tertiary-neutral-active-text--a-text-on-neutral
--ac-button-tertiary-neutral-active-bg--a-surface-neutral-active
--ac-button-tertiary-neutral-active-hover-bg--a-surface-neutral-active
Hva er dette?

Komponent-tokens gir deg muligheten til å sette opp theming eller justere styling uten å måtte overskrive css-klasser. Les gjennom guiden vår eller utforsk alle design tokens.

Relaterte komponenter

  • Tooltip thumbnail
    Tooltip

© 2025 Nav

Arbeids- og velferdsetaten

Snarveier

  • Skriv for Aksel
  • Prinsipper for brukeropplevelse
  • Security Playbook
  • Etterlevelse

Om nettstedet

  • Hva er Aksel?
  • Personvernerklæring
  • Tilgjengelighetserklæring

Finn oss

  • Figma
  • Github
  • Slack