Skip to main content

InteractiveIcon

InteractiveIcon er en klikkbar ikon-flate — en kompakt knapp som bare viser et ikon. Den gir tydelig visuell tilbakemelding ved pekehvil, trykk og fokus, med en fargetone som kan styres av en status.

Egnet til

  • Kompakte handlinger der et ikon er nok til å forklare hva som skjer (rediger, slett, lukk)
  • Verktøylinjer og rader der plassen er knapp
  • Handlinger som gjentas mange ganger og der etablerte ikoner er godt forstått

Uegnet til

  • Primære handlinger i en visning — bruk en knapp med tekst
  • Handlinger der ikonet alene er tvetydig — bruk en knapp med synlig tekst
  • Navigasjon til en ny side uten at noe utføres — bruk en lenke

Kom i gang

En InteractiveIcon må alltid ha en tilgjengelig label som beskriver handlingen.

Result
Loading...
Kode
Live Editor
<InteractiveIcon name="rediger" aria-label="Rediger" />

Eksempler

Statuser

status styrer fargetonen som vises ved pekehvil og trykk. default bruker en nøytral farge; info, success, warning og danger gir hver sin status-farge. Fargen er kun en visuell forsterkning — handlingen må fremgå av aria-label.

Result
Loading...
Kode
Live Editor
<>
  <InteractiveIcon name="hjem" aria-label="Standard" />
  <InteractiveIcon name="info" aria-label="Info" status="info" />
  <InteractiveIcon name="hake" aria-label="Suksess" status="success" />
  <InteractiveIcon name="utropstegn" aria-label="Advarsel" status="warning" />
  <InteractiveIcon name="slett" aria-label="Slett" status="danger" />
</>

Størrelser

size følger ikonets størrelsesskala (sm, md, lg, xl). Klikkflaten holder seg minst 44×44 px uansett ikonstørrelse.

Result
Loading...
Kode
Live Editor
<>
  <InteractiveIcon name="rediger" aria-label="Liten" size="sm" />
  <InteractiveIcon name="rediger" aria-label="Medium" />
  <InteractiveIcon name="rediger" aria-label="Stor" size="lg" />
  <InteractiveIcon name="rediger" aria-label="Ekstra stor" size="xl" />
</>

Med tooltip

Tooltip kan brukes for å gi ekstra kontekst til handlingen, spesielt når ikonets betydning ikke er åpenbar. For velkjente ikoner i en tydelig kontekst, som «Lukk» i en modal, er tooltip vanligvis ikke nødvendig. Komponenten skal alltid ha et tilgjengelig navn for skjermlesere — aria-label er påkrevd uavhengig av om det finnes en tooltip.

Result
Loading...
Kode
Live Editor
<InteractiveIcon name="rediger" aria-label="Rediger" data-tooltip="Rediger profil" />

Tooltip-teksten er ren tekst og må, som aria-label, sendes inn på brukerens språk (i18n).

Ikonknapp uten aria-label

En knapp med bare ikon og ingen aria-label er usynlig for skjermlesere. Brukeren hører bare "knapp" — ingen beskrivelse av hva den gjør.

Universell utforming

Hva du selv må sørge for

  • aria-label er påkrevd — beskriv handlingen, ikke ikonet: aria-label="Slett melding", ikke aria-label="Søppelkasse-ikon". Det finnes ingen hardkodet fallback; send inn riktig tekst for brukerens språk.
  • Ikke stol på farge alenestatus-fargen vises bare ved pekehvil/trykk og eksponeres ikke for skjermlesere. Har status betydning, må det fremgå av aria-label eller konteksten rundt.
  • Bekreft destruktive handlinger — når status="danger" brukes for sletting eller andre irreversible handlinger, bør handlingen kreve en ekstra bekreftelse.

Hva komponenten gjør automatisk

  • Native <button> — gir tastaturstøtte (Enter/Space), fokuserbarhet og rolle uten ekstra ARIA.
  • type="button" settes som standard så knappen ikke sender inn skjema utilsiktet.
  • Ikonet er aria-hidden — knappens navn kommer utelukkende fra aria-label, så skjermlesere annonserer ikke ikonet to ganger.
  • Klikkflate ≥ 44×44 px via min-width/min-height — godt over WCAG-minstekravet på 24×24 px.
  • Fokusindikator via :focus-visible — synlig for tastaturbrukere, ikke for mus. Samme fokusstil uavhengig av status.

Tastaturnavigasjon

TastHandling
TabFlytter fokus til knappen
Shift+TabFlytter fokus til forrige fokuserbare element
EnterAktiverer knappen
SpaceAktiverer knappen

Skjermleser

  • Ved fokus: "[aria-label], knapp"
  • Status-variant: ingen ekstra annonsering — status-fargen er kun visuell. Konteksten rundt knappen må forklare betydningen.

WCAG-kriterier

Sist gjennomgått: 2026-06-26 — alle 56 WCAG 2.2-kriterier vurdert

WCAG-kriterier4 ditt ansvar · 11 håndtert · 44 ikke relevant · 0 ikke på plass
Ditt ansvar (4)
KriteriumNivåHva du må gjøre
4.1.2 Navn, rolle, verdiASett aria-label som beskriver handlingen. InteractiveIcon har bare et ikon og ingen synlig tekst. Uten aria-label er knappen meningsløs for skjermlesere. Labelen skal beskrive handlingen, ikke ikonet: aria-label="Rediger profil", ikke aria-label="Blyant-ikon". aria-label er påkrevd og har ingen hardkodet fallback — konsumenten må sende inn riktig tekst for brukerens språk (bokmål, nynorsk, engelsk).
2.4.6 Overskrifter og ledeteksterAASett aria-label som beskriver handlingen. InteractiveIcon har bare et ikon og ingen synlig tekst. Uten aria-label er knappen meningsløs for skjermlesere. Labelen skal beskrive handlingen, ikke ikonet: aria-label="Rediger profil", ikke aria-label="Blyant-ikon". aria-label er påkrevd og har ingen hardkodet fallback — konsumenten må sende inn riktig tekst for brukerens språk (bokmål, nynorsk, engelsk).
1.4.1 Bruk av fargeAIkke bruk farge alene til å formidle status. status-fargen (info/success/warning/danger) er kun en visuell forsterkning som vises ved hover/pressed. Den eksponeres ikke semantisk for skjermlesere. Hvis status har betydning for handlingen, må det også fremgå av aria-label eller kontekst rundt knappen.
3.3.4 Forhindring av feil (juridisk, økonomisk, data)AABekreft destruktive handlinger. Når status="danger" brukes for handlinger som sletter eller endrer data permanent, bør handlingen kreve en ekstra bekreftelse (f.eks. en modal). Ikke stol på at fargen alene kommuniserer alvorlighetsgraden.
Håndtert av komponenten (11)
KriteriumNivåHva komponenten gjør
1.3.1 Informasjon og relasjonerANative <button>-element med implisitt rolle=button. aria-label gir tilgjengelig navn.
1.4.1 Bruk av fargeAStatus-farge er kun visuell forsterkning ved hover/pressed — handlingen kommuniseres via aria-label, ikke farge alene.
1.4.10 OmflytAAKnappen har fast 44×44 px klikkflate og reflower korrekt ned til 320 px viewport.
1.4.11 Kontrast for ikke-tekstlig innholdAAFokusindikator via :focus-visible oppfyller 3:1 kontrastkrav mot bakgrunnen.
2.1.1 TastaturANative <button> aktiveres med Enter og Space. Fullt opererbart med tastatur.
2.1.2 Ingen tastaturfelleAFokus kan navigeres ut med Tab og Shift+Tab — ingen tastaturfelle.
2.4.3 FokusrekkefølgeAFølger naturlig tab-rekkefølge i DOM.
2.4.7 Synlig fokusAATydelig fokusindikator via :focus-visible med --ix-outline-default.
2.5.8 Målstørrelse (minimum)AAmin-width og min-height på 44 px gir klikkflate godt over minstekravet på 24×24 px.
3.2.1 Ved fokusAFokus trigger ingen kontekstendring.
4.1.2 Navn, rolle, verdiANative <button> med implisitt rolle=button. Tilgjengelig navn fra påkrevd aria-label. Ikonet er aria-hidden og bidrar ikke til navnet.
Ikke relevant (44)
KriteriumNivåHvorfor ikke relevant
1.1.1 Ikke-tekstlig innholdAIkonet er dekorativt og skjules med aria-hidden — knappens navn kommer fra aria-label.
1.2.1 Bare lyd og bare video (forhåndsinnspilt)AIngen medieelementer.
1.2.2 Teksting (forhåndsinnspilt)AIngen medieelementer.
1.2.3 Synstolking eller mediealternativ (forhåndsinnspilt)AIngen medieelementer.
1.2.4 Teksting (direkte)AAIngen medieelementer.
1.2.5 Synstolking (forhåndsinnspilt)AAIngen medieelementer.
1.3.2 Meningsfull rekkefølgeAEnkeltstående knapp uten lese-rekkefølge-avhengig innhold.
1.3.3 Sensoriske egenskaperAKnappen formidler ikke instruksjoner — den utfører en handling.
1.3.4 VisningsretningAAIngen fast orientering — tilpasser seg visningsretning.
1.3.5 Identifiser formål med inndataAAIkke et skjemafelt som ber om personlig informasjon.
1.4.2 Styring av lydAIngen lydelementer.
1.4.3 Kontrast (minimum)AAIkonet er en ensfarget glyf på transparent/lys bakgrunn; konsumenten styrer ikonfarge via context. Ingen tekst i komponenten.
1.4.4 Endre tekststørrelseAASkalerer med ikonstørrelsen; ingen tekst som kan klippes ved zoom.
1.4.5 Bilder av tekstAAIngen bilder av tekst.
1.4.12 TekstavstandAA
1.4.13 Innhold ved hover eller fokusAA
2.1.4 TastatursnarveierAIngen egendefinerte tastatursnarveier.
2.2.1 Justerbar hastighetAIngen tidsbegrensede funksjoner.
2.2.2 Pause, stopp, skjulAIngen animasjon eller automatisk oppdatering.
2.3.1 Terskelverdi på tre glimtAIngen blinkende eller glimtende innhold.
2.4.1 Hoppe over blokkerASidekrav — gjelder ikke enkeltkomponenter.
2.4.2 SidetitlerASidekrav — gjelder ikke enkeltkomponenter.
2.4.4 Formål med lenke (i kontekst)A
2.4.5 Flere måterAASidekrav — gjelder ikke enkeltkomponenter.
2.4.6 Overskrifter og ledeteksterAA
2.4.11 Fokus ikke skjult (minimum)AAIngen sticky/overlappende elementer som kan skjule fokus.
2.5.1 PekerbevegelserAIngen drag-and-drop eller sveipebevegelser.
2.5.2 Avbryt pekerANative button-element — nettleseren håndterer pekerinteraksjon.
2.5.4 BevegelsesaktiveringAIngen bevegelsesbasert interaksjon.
2.5.6 Samtidige inndatamekanismerA
2.5.7 DrabevegelserAIngen drag-and-drop.
3.1.1 Språk på sidenASidekrav — gjelder ikke enkeltkomponenter.
3.1.2 Språk på deler av innholdAAKomponenten setter ikke lang-attributt — innhold er på sidespråket.
3.2.2 Ved inndataAKnappen trigger ingen automatisk kontekstendring ved fokus.
3.2.3 Konsistent navigasjonAASidekrav — gjelder ikke enkeltkomponenter.
3.2.4 Konsistent identifikasjonAASystemkrav — gjelder konsistens på tvers av sider, ikke enkeltkomponenter.
3.2.6 Konsistent hjelpASidekrav — gjelder plassering av hjelpefunksjon på tvers av sider.
3.3.1 Identifikasjon av feilA
3.3.2 Ledetekster eller instruksjonerA
3.3.3 Forslag ved feilAA
3.3.4 Forhindring av feil (juridisk, økonomisk, data)AAFlytkrav — gjelder bekreftelse/reversering av transaksjoner, ikke enkeltfelter.
3.3.7 Redundant oppføringAFlytkrav — gjelder at brukeren ikke skal gjenta informasjon i en prosess.
3.3.8 Tilgjengelig autentisering (minimum)AAIkke en autentiseringskomponent.
4.1.3 StatusmeldingerAAKnappen genererer ingen statusmeldinger selv.

Props / API

PropTypeStandardBeskrivelse
nameIconNameIkonet som vises. Påkrevd
aria-labelstringTilgjengelig navn som beskriver handlingen. Påkrevd, og må oversettes (i18n)
status'default' | 'info' | 'success' | 'warning' | 'danger''default'Fargetema for pekehvil og trykk
size'sm' | 'md' | 'lg' | 'xl''md'Størrelse på ikonet

I tillegg støttes alle standard HTML-knapp-attributter (onClick, onFocus, disabled, type, form, name, value, tabIndex osv.) og settes direkte på <button>-elementet.

Tilpasning med CSS

Trenger du ix-interactive-icon-stylingen på HTML du setter sammen selv — uten React-komponenten — kan du bruke klassen direkte på et <button>-element som wrapper et <ix-icon>.

Tilgjengelige klasser og attributter

Element/tilstandSelektor / attributt
Knapp.ix-interactive-icon
Statusdata-status="info" / "success" / "warning" / "danger"
Pekehvil-fargeintern variabel --ii-interactive-icon-fill-hover
Trykk-fargeintern variabel --ii-interactive-icon-fill-active

Variablene med --ii--prefiks er interne implementasjonsdetaljer og er ikke en del av det offentlige API-et.

Eksempel: ren HTML

<button type="button" class="ix-interactive-icon" aria-label="Rediger">
<ix-icon name="rediger" aria-hidden="true" class="ix-icon"></ix-icon>
</button>

<button type="button" class="ix-interactive-icon" data-status="danger" aria-label="Slett">
<ix-icon name="slett" aria-hidden="true" class="ix-icon"></ix-icon>
</button>

Relatert

  • Button — knapp med synlig tekst for primære og sekundære handlinger
  • Icon — ikonet som vises inni InteractiveIcon
  • Tooltip — gi ekstra kontekst til handlingen ved pekehvil/fokus
  • Farger — fargetokens for status-variantene