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

Meny

  • God praksis
  • Grunnleggende
  • Ikoner
  • Komponenter
  • Mønster & Maler
  • Blogg
  • grunnleggende
      • Hva er Aksel?
      • Kom i gang med kodepakkene
      • Kom i gang med Figma
      • Har du innspill til Aksel?
      • Versjonering i Figma
      • Logo
      • Design tokens
      • Farger
      • Brekkpunkter
      • Typografi
      • Endringslogg
      • Migrering
      • CSS import
      • Kommandolinje
      • Stylelint
      • Tailwind
      • Layout primitives
      • Nextjs
      • OverridableComponent

Layout primitives

Oppdatert 9. mai 2025Stabil

Innhold på siden

  • Komponenter
    • Page
    • HGrid
    • Stack
    • Box
    • Show/Hide
    • Bleed
  • ResponsiveProp
  • AsChild
  • BasePrimitive
    • BasePrimitiveType

Primitives gjør det enklere å bygge layout som følger de samme konseptene og brekkpunktene, uten å måtte skrive noe egen CSS. Dette gjør det lettere å bygge responsive løsninger som fungerer likt på tvers av ulike apper.

Komponenter

Page

Page lar deg bygge opp top-level layout for appen din. Dette inkluderer plassering av footer, maksbredde og sentrering av innhold. Enkle layouts, men også de fleste ekspertsystemer, vil kunne bruke komponenten som startpunkt.

HGrid

HGrid brukes til å organisere innhold i kolonner. Den har et scopet API for CSS grid layout med støtte for responsivitet basert på brekkpunktene våre. Vi støtter bare horisontal layout med grid-template-columns.

Stack

Brukes for å organisere innhold i én dimensjon. Den har et scopet API for CSS flexbox med støtte for responsivitet basert på brekkpunktene våre.

  • HStack: Horisontal layout med flex-direction: row
  • VStack: Vertikal layout med flex-direction: column

Box

Box brukes primært som byggestein for andre komponenter, med støtte for background, border, borderRadius og shadow.

Show/Hide

Show og Hide lar deg vise eller skjule elementer på ulike skjermbredder. De tilbyr et API der innhold blir satt til display: none basert på brekkpunktene våre.

Bleed

Bleed lar deg legge til negativ horisontal og vertikal margin på innhold.

ResponsiveProp

En av grunnpilarene til våre layout primitives er typen ResponsiveProp. Typen gjør det mulig å sette prop-verdien basert på brekkpunkt. Dette lar deg eksempelvis endre gap basert på skjermbredde:

AsChild

Alle primitives unntatt Page støtter også asChild-API-et. Det kan brukes til å slå sammen DOM-noder. Klasser, stiler og event-handlers slås da sammen. Dette kan være nyttig for å forenkle DOM-en, men gjør det også mulig å løse noe layout enklere. For at dette skal fungere må child kunne ta inn className og style som props.

BasePrimitive

Komponentene HGrid, Box, HStack, VStack og Stack arver fra en base-type som har de mest brukte størrelses- og posisjons-attributtene i CSS. I props som har med avstander å gjøre, må du bruke verdier basert på tokens fra Aksel. F.eks. padding="4" gir --a-spacing-4 som tilsvarer 1rem.

BasePrimitiveType

padding?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

paddingInline?

  • Type:
    ResponsiveProp<SpacingScale | "0 0" | "0 05" | "0 1" | "0 1-alt" | "0 2" | "0 3" | "0 4" | "0 5" | "0 6" | "0 7" | "0 8" | "0 9" | "0 10" | "0 11" | "0 12" | "0 14" | "0 16" | ... 1831 more ... | "space-128 space-128">
  • Description:
  • Example:

paddingBlock?

  • Type:
    ResponsiveProp<SpacingScale | "0 0" | "0 05" | "0 1" | "0 1-alt" | "0 2" | "0 3" | "0 4" | "0 5" | "0 6" | "0 7" | "0 8" | "0 9" | "0 10" | "0 11" | "0 12" | "0 14" | "0 16" | ... 1831 more ... | "space-128 space-128">
  • Description:
  • Example:

margin?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

marginInline?

  • Type:
    ResponsiveProp<SpacingScale | "0 0" | "0 05" | "0 1" | "0 1-alt" | "0 2" | "0 3" | "0 4" | "0 5" | "0 6" | "0 7" | "0 8" | "0 9" | "0 10" | "0 11" | "0 12" | "0 14" | "0 16" | ... 1918 more ... | "space-128 auto">
  • Description:
  • Example:

marginBlock?

  • Type:
    ResponsiveProp<SpacingScale | "0 0" | "0 05" | "0 1" | "0 1-alt" | "0 2" | "0 3" | "0 4" | "0 5" | "0 6" | "0 7" | "0 8" | "0 9" | "0 10" | "0 11" | "0 12" | "0 14" | "0 16" | ... 1918 more ... | "space-128 auto">
  • Description:
  • Example:

width?

  • Type:
    ResponsiveProp<string>
  • Description:

minWidth?

  • Type:
    ResponsiveProp<string>
  • Description:

maxWidth?

  • Type:
    ResponsiveProp<string>
  • Description:

height?

  • Type:
    ResponsiveProp<string>
  • Description:

minHeight?

  • Type:
    ResponsiveProp<string>
  • Description:

maxHeight?

  • Type:
    ResponsiveProp<string>
  • Description:

position?

  • Type:
    ResponsiveProp<"static" | "relative" | "absolute" | "fixed" | "sticky">
  • Description:

inset?

  • Type:
    ResponsiveProp<SpacingScale | "0 0" | "0 05" | "0 1" | "0 1-alt" | "0 2" | "0 3" | "0 4" | "0 5" | "0 6" | "0 7" | "0 8" | "0 9" | "0 10" | "0 11" | "0 12" | "0 14" | "0 16" | ... 1831 more ... | "space-128 space-128">
  • Description:
  • Example:

top?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

right?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

bottom?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

left?

  • Type:
    ResponsiveProp<SpacingScale>
  • Description:
  • Example:

overflow?

  • Type:
    ResponsiveProp<"auto" | "visible" | "hidden" | "clip" | "scroll">
  • Description:

overflowX?

  • Type:
    ResponsiveProp<"auto" | "visible" | "hidden" | "clip" | "scroll">
  • Description:

overflowY?

  • Type:
    ResponsiveProp<"auto" | "visible" | "hidden" | "clip" | "scroll">
  • Description:

flexBasis?

  • Type:
    ResponsiveProp<string>
  • Description:

flexShrink?

  • Type:
    ResponsiveProp<string>
  • Description:

flexGrow?

  • Type:
    ResponsiveProp<string>
  • Description:

gridColumn?

  • Type:
    ResponsiveProp<string>
  • Description:

© 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