AgentSkillsCN

aksel-designsystem

Aksel 是 Navs 的设计系统。当您需要使用 @navikt/ds-react 中的 Aksel 组件构建 UI、以 @navikt/ds-tokens 中的设计令牌进行样式化、运用布局原语,或遵循 Navs 的通用设计准则与最佳实践时,请使用此技能。该技能将帮助您掌握正确的组件选择、属性配置、无障碍设计以及各类模式。

SKILL.md
--- frontmatter
name: aksel-designsystem
description: >
  Aksel er Navs designsystem. Bruk denne skillen når du skal bygge UI med Aksel-komponenter
  fra @navikt/ds-react, style med design tokens fra @navikt/ds-tokens, bruke layout primitives,
  eller følge Navs retningslinjer for universell utforming og god praksis.
  Skillen gir deg kunnskap om riktig komponentvalg, props, tilgjengelighet og mønstre.

Aksel — Navs designsystem

Du er en ekspert på Aksel, Navs designsystem for produktutvikling. Aksel består av React-komponenter, design tokens, ikoner, layout primitives og retningslinjer for universell utforming.

Pakker

PakkeBeskrivelse
@navikt/ds-reactReact-komponenter (tree-shakable)
@navikt/ds-cssCSS, fonter, resets, tokens som CSS-variabler
@navikt/ds-tokensDesign tokens
@navikt/ds-tailwindTailwind CSS-konfigurasjon
@navikt/aksel-icons800+ ikoner (stroke og fill)
@navikt/aksel-stylelintStylelint-konfigurasjon

Viktige prinsipper

  1. Bruk alltid Aksel-komponenter fremfor å lage egne. Sjekk komponentbiblioteket først.
  2. Bruk design tokens for farger, spacing, typografi — aldri hardkodede verdier.
  3. Universell utforming er påkrevd. Alle løsninger skal oppfylle WCAG 2.1 AA.
  4. Unngå disabled state — det er dårlig UX. Bruk readOnly eller vis/skjul feltet.
  5. Ikke bruk placeholder-tekst i skjemafelt — bruk label og description.
  6. Alle skjemafelt skal ha label — skjul visuelt med hideLabel om nødvendig, men behold for skjermlesere.

Referansefiler

For detaljert informasjon, se filene i docs/-mappen:

  • docs/components.md — Komplett referanse for alle komponenter med props, varianter og retningslinjer
  • docs/tokens-and-styling.md — Design tokens, fargesystem, spacing, typografi og Tailwind
  • docs/best-practices.md — God praksis for universell utforming, skjemavalidering og tilgjengelighet
  • docs/getting-started.md — Installasjon, oppsett, fontlasting og versjonering

Komponentvalg — hurtigreferanse

Skjemaelementer

  • Kort tekst/tallTextField
  • Lang tekstTextarea
  • Velg ett alternativ (få valg)RadioGroup + Radio
  • Velg ett alternativ (mange valg)Select eller Combobox
  • Velg flere alternativerCheckboxGroup + Checkbox
  • DatoDatePicker
  • SøkefeltSearch
  • Bekreftelse (on/off)Switch

Feedback og meldinger

  • Viktig systemmelding (hele siden)GlobalAlert
  • Melding i kontekstLocalAlert
  • Liten inline-meldingInlineMessage
  • Info-kortInfoCard
  • FeiloppsummeringErrorSummary
  • HjelpHelpText
  • Fremgang i skjemaFormProgress

Navigasjon og struktur

  • KnapperButton (primary/secondary/tertiary)
  • LenkerLink
  • FanerTabs
  • TrekkspillAccordion
  • MenyActionMenu
  • StegStepper
  • PagineringPagination
  • TidslinjeTimeline

Visning av data

  • TabellTable
  • TagsTag
  • Kort med mer infoExpansionCard
  • Dialog/modalDialog
  • TooltipTooltip
  • KopieringCopyButton
  • LastingSkeleton

Typografi

  • OverskrifterHeading (med level og size)
  • BrødtekstBodyLong
  • Kort tekstBodyShort
  • LabelLabel
  • DetailDetail

Layout (Primitives)

  • SidelayoutPage
  • Horisontal flexboxHStack
  • Vertikal flexboxVStack
  • GridHGrid
  • Boks med stylingBox
  • Vis/skjul responsivtShow / Hide
  • Negativ marginBleed

Farger — data-color

Bruk data-color attributtet for semantiske farger på komponenter:

VerdiBruk
accentStandard interaktive elementer
neutralNøytrale elementer uten bestemt budskap
successPositiv interaksjon eller budskap
warningAdvarsel
dangerDestruktiv handling eller feil
infoInformasjon
brand-magentaPrimær brand-farge (sparsommelig)
brand-beigeSekundær brand-farge (sparsommelig)
brand-blueTertiær brand-farge
meta-limeMetadata
meta-purpleMetadata

Anbefaling: Bruk primært accent, neutral og danger. Brand- og meta-farger brukes sparsommelig.

Spacing tokens

Bruk alltid spacing tokens, aldri hardkodede pikselverdier:

TokenVerdi
space-00
space-10.0625rem (1px)
space-20.125rem (2px)
space-40.25rem (4px)
space-60.375rem (6px)
space-80.5rem (8px)
space-120.75rem (12px)
space-161rem (16px)
space-201.25rem (20px)
space-241.5rem (24px)
space-322rem (32px)
space-402.5rem (40px)
space-483rem (48px)
space-644rem (64px)
space-805rem (80px)
space-966rem (96px)
space-1288rem (128px)

Brekkpunkter (ResponsiveProp)

Layout primitives støtter responsive props basert på brekkpunkter:

tsx
<HStack gap={{ xs: "space-8", md: "space-16", xl: "space-24" }}>
  ...
</HStack>
BrekkpunktVerdi
xs0px
sm480px
md768px
lg1024px
xl1280px
2xl1440px

Kodeeksempler

Grunnleggende skjema

tsx
import { Button, TextField, RadioGroup, Radio, ErrorSummary } from "@navikt/ds-react";

function MyForm() {
  return (
    <form>
      <TextField label="Fornavn" />
      <TextField label="Etternavn" />
      <RadioGroup legend="Kjønn">
        <Radio value="mann">Mann</Radio>
        <Radio value="kvinne">Kvinne</Radio>
      </RadioGroup>
      <Button type="submit">Send inn</Button>
    </form>
  );
}

Layout med primitives

tsx
import { Page, VStack, HStack, Box, Heading, BodyLong } from "@navikt/ds-react";

function MyPage() {
  return (
    <Page>
      <Page.Block width="xl" gutters>
        <VStack gap="space-24">
          <Heading level="1" size="xlarge">Min side</Heading>
          <HStack gap="space-16">
            <Box padding="space-16" background="bg-subtle" borderRadius="large">
              <BodyLong>Innhold</BodyLong>
            </Box>
          </HStack>
        </VStack>
      </Page.Block>
    </Page>
  );
}

Lenker til dokumentasjon