Hopp til innholdet

Stilguide

Hele designsystemet på ett sted. Alt du ser her er bygget av de samme designverdiene og komponentene som resten av nettsiden, så stilguiden er alltid oppdatert. Publiseres automatisk fra GitHub.

Versjon 1.13.0 · Oppdatert

Innhold i stilguiden

Fundament

Designverdiene (tokens) som alt annet henter fra: farger, typografi, avstander, former, bevegelse og rutenettet.

Lys og mørk modus

Lys modus

Et kort på en flate

Vanlig tekst ligger her. Mindre viktig tekst er litt svakere. Her er en lenke.

En valgt rad
Lagret
Noe gikk galt. Prøv igjen.
Husk å lagre før du går.
Du kan endre dette senere.
UX-designAnimasjonMerkevareIllustrasjonProdukteier
Meny eller dialog (ligger øverst)
  • --color-bg#FCFBF8
  • --color-bg-subtle#F7F4EC
  • --color-surface#FFFFFF
  • --color-surface-raised#FFFFFF
  • --color-text-primary#26221D
  • --color-text-secondary#514B43
  • --color-text-disabled#A9A092
  • --color-text-link#26221D
  • --color-text-on-primary#FFFFFF
  • --color-text-on-veil#1F1C18
  • --color-text-on-status#514B43
  • --color-primary#2F5DA8
  • --color-primary-hover#962816
  • --color-primary-pressed#731F11
  • --color-primary-subtle#F7DDD6
  • --color-accent#E0432C
  • --color-icon#26221D
  • --color-icon-secondary#514B43
  • --color-border-subtle#E9E0CD
  • --color-border-strong#7D766C
  • --color-border-focus#2E7D4F
  • --color-border-focus-halo#FCFBF8
  • --color-border#A9A092
  • --color-success-text#23633E
  • --color-success-bg#EEF7F1
  • --color-error-text#8E1736
  • --color-error-bg#FCEFF2
  • --color-warning-text#7A4F00
  • --color-warning-bg#FDF5E4
  • --color-info-text#244A87
  • --color-info-bg#EEF3FB
  • --color-button-outline-border#26221D
  • --color-button-outline-text#26221D
  • --color-button-strong-bg#26221D
  • --color-button-strong-hover#3D3832
  • --color-button-strong-text#F7F4EC
  • --color-button-soft-bg#F1EBDE
  • --color-button-soft-hover#E9E0CD
  • --color-button-soft-text#26221D
  • --color-grid-overlay-columncolor-mix(in srgb, {semantic.color.accent} 12%, transparent)
  • --color-grid-overlay-linecolor-mix(in srgb, {semantic.color.accent} 35%, transparent)
  • --color-glass-wash-a#A77A92
  • --color-glass-wash-b#E3A86C
  • --color-glass-wash-c#C9294F
  • --color-veil-bla#2B3FD6
  • --color-veil-bla-myk#4256C8
  • --color-veil-fiolett#8A6FD1
  • --color-veil-fersken#F3B08A
  • --color-veil-rosa#EBA0B0
  • --color-veil-krem#F3E9CF
  • --color-veil-lavendel#CDB9E3
  • --color-pattern#FFFFFF
  • --color-pattern-faint#F1EBDE
  • --color-footer-bg#171512
  • --color-footer-text#F7F4EC
  • --color-footer-text-secondary#A9A092
  • --color-footer-border#34302B
  • --color-status-info-flate#FFFFFF00
  • --color-status-info-ikon#244A87
  • --color-status-suksess-flate#FFFFFF00
  • --color-status-suksess-ikon#23633E
  • --color-status-advarsel-flate#FFFFFF00
  • --color-status-advarsel-ikon#7A4F00
  • --color-status-feil-flate#FFFFFF00
  • --color-status-feil-ikon#8E1736
  • --color-status-tekst#26221D
  • --color-status-tekst-svak#514B43
  • --color-status-kant#FFFFFFB3
  • --color-status-knapp#FFFFFFB3

Mørk modus

Et kort på en flate

Vanlig tekst ligger her. Mindre viktig tekst er litt svakere. Her er en lenke.

En valgt rad
Lagret
Noe gikk galt. Prøv igjen.
Husk å lagre før du går.
Du kan endre dette senere.
UX-designAnimasjonMerkevareIllustrasjonProdukteier
Meny eller dialog (ligger øverst)
  • --color-bg#1F1C18
  • --color-bg-subtle#171512
  • --color-surface#26221D
  • --color-surface-raised#2D2A26
  • --color-text-primary#E8E3DA
  • --color-text-secondary#A9A092
  • --color-text-disabled#514B43
  • --color-text-link#E8E3DA
  • --color-text-on-primary#1F1C18
  • --color-text-on-veil#FFFFFF
  • --color-text-on-status#D3C9B6
  • --color-primary#92B3E6
  • --color-primary-hover#F2BFB4
  • --color-primary-pressed#F7DDD6
  • --color-primary-subtle#2E1410
  • --color-accent#E56A52
  • --color-icon#E8E3DA
  • --color-icon-secondary#A9A092
  • --color-border-subtle#34302B
  • --color-border-strong#7D766C
  • --color-border-focus#84C9A0
  • --color-border-focus-halo#171512
  • --color-border#514B43
  • --color-success-text#84C9A0
  • --color-success-bg#10241A
  • --color-error-text#EE8FA6
  • --color-error-bg#2C0E14
  • --color-warning-text#EDC062
  • --color-warning-bg#261A05
  • --color-info-text#92B3E6
  • --color-info-bg#0F1B2E
  • --color-button-outline-border#E8E3DA
  • --color-button-outline-text#E8E3DA
  • --color-button-strong-bg#E8E3DA
  • --color-button-strong-hover#D3C9B6
  • --color-button-strong-text#1F1C18
  • --color-button-soft-bg#2D2A26
  • --color-button-soft-hover#34302B
  • --color-button-soft-text#E8E3DA
  • --color-grid-overlay-columncolor-mix(in srgb, {semantic.color.accent} 12%, transparent)
  • --color-grid-overlay-linecolor-mix(in srgb, {semantic.color.accent} 35%, transparent)
  • --color-glass-wash-a#A77A92
  • --color-glass-wash-b#E3A86C
  • --color-glass-wash-c#C9294F
  • --color-veil-bla#2B3FD6
  • --color-veil-bla-myk#4256C8
  • --color-veil-fiolett#8A6FD1
  • --color-veil-fersken#4A74C9
  • --color-veil-rosa#EBA0B0
  • --color-veil-krem#F3E9CF
  • --color-veil-lavendel#CDB9E3
  • --color-pattern#FFFFFF
  • --color-pattern-faint#FFFFFF
  • --color-footer-bg#171512
  • --color-footer-text#F7F4EC
  • --color-footer-text-secondary#A9A092
  • --color-footer-border#34302B
  • --color-status-info-flate#92B3E6
  • --color-status-info-ikon#172B4A
  • --color-status-suksess-flate#84C9A0
  • --color-status-suksess-ikon#163A26
  • --color-status-advarsel-flate#EDC062
  • --color-status-advarsel-ikon#3D2A05
  • --color-status-feil-flate#EE8FA6
  • --color-status-feil-ikon#4A1220
  • --color-status-tekst#1F1C18
  • --color-status-tekst-svak#2D2A26
  • --color-status-kant#1F1C181F
  • --color-status-knapp#FFFFFF73

Hva fargene brukes til

TokenLysMørkBrukes til
--color-bg#FCFBF8#1F1C18Sidebakgrunn
--color-bg-subtle#F7F4EC#171512Litt mørkere bakgrunn for seksjoner
--color-surface#FFFFFF#26221DKort og flater som ligger på bakgrunnen
--color-surface-raised#FFFFFF#2D2A26Menyer og dialoger som ligger øverst
--color-text-primary#26221D#E8E3DAVanlig tekst og overskrifter
--color-text-secondary#514B43#A9A092Mindre viktig tekst
--color-text-disabled#A9A092#514B43Tekst på ting som ikke kan brukes
--color-text-link#26221D#E8E3DALenker: samme farge som vanlig tekst, med understrek
--color-text-on-primary#FFFFFF#1F1C18Tekst på knapper i hovedfargen
--color-text-on-veil#1F1C18#FFFFFFTekst oppå fargesløret: mørk i lys modus (sløret er lyst), hvit i mørk modus
--color-text-on-status#514B43#D3C9B6Teksten under tittelen i en statusmelding (litt svakere enn tittelen). Lysere i mørk modus enn vanlig svak tekst, så kontrasten holder mot det fargede glasset.
--color-primary#2F5DA8#92B3E6Hovedfargen: knapper og viktige handlinger
--color-primary-hover#962816#F2BFB4Hovedfargen når musa er over
--color-primary-pressed#731F11#F7DDD6Hovedfargen når den trykkes
--color-primary-subtle#F7DDD6#2E1410Svak bakgrunn i hovedfargen, for eksempel valgt rad
--color-accent#E0432C#E56A52Merkevarefargen. Bare til store flater og illustrasjoner, ikke tekst
--color-icon#26221D#E8E3DAVanlige ikoner
--color-icon-secondary#514B43#A9A092Mindre viktige ikoner
--color-border-subtle#E9E0CD#34302BPyntelinjer og skillelinjer
--color-border-strong#7D766C#7D766CKanter på skjemafelt
--color-border-focus#2E7D4F#84C9A0Fokusringen som viser hvor tastaturet er (grønn)
--color-border-focus-halo#FCFBF8#171512Den lyse (i mørk modus mørke) kanten rundt fokusringen, så ringen syns på alle bakgrunner, også mørke og fargede
--color-border#A9A092#514B43Grå kant på tagger
--color-success-text#23633E#84C9A0Tekst for suksess
--color-success-bg#EEF7F1#10241ABakgrunn for suksessmeldinger
--color-error-text#8E1736#EE8FA6Tekst for feil
--color-error-bg#FCEFF2#2C0E14Bakgrunn for feilmeldinger
--color-warning-text#7A4F00#EDC062Tekst for advarsel
--color-warning-bg#FDF5E4#261A05Bakgrunn for advarsler
--color-info-text#244A87#92B3E6Tekst for informasjon
--color-info-bg#EEF3FB#0F1B2EBakgrunn for informasjon
--color-button-outline-border#26221D#E8E3DAKanten på hovedknappen
--color-button-outline-text#26221D#E8E3DATeksten på hovedknappen
--color-button-strong-bg#26221D#E8E3DAFyllet på den viktige (svarte) knappen
--color-button-strong-hover#3D3832#D3C9B6Den viktige knappen når musa er over
--color-button-strong-text#F7F4EC#1F1C18Teksten på den viktige knappen
--color-button-soft-bg#F1EBDE#2D2A26Grå knapp som åpner tekst (som hos Pentagram)
--color-button-soft-hover#E9E0CD#34302BGrå knapp når musa er over
--color-button-soft-text#26221D#E8E3DATeksten på den grå knappen
--color-grid-overlay-columncolor-mix(in srgb, {semantic.color.accent} 12%, transparent)color-mix(in srgb, {semantic.color.accent} 12%, transparent)Fargen på kolonnene når rutenettet vises
--color-grid-overlay-linecolor-mix(in srgb, {semantic.color.accent} 35%, transparent)color-mix(in srgb, {semantic.color.accent} 35%, transparent)Kantene på kolonnene når rutenettet vises
--color-glass-wash-a#A77A92#A77A92
--color-glass-wash-b#E3A86C#E3A86C
--color-glass-wash-c#C9294F#C9294F
--color-veil-bla#2B3FD6#2B3FD6Det store blå strøket øverst til høyre
--color-veil-bla-myk#4256C8#4256C8Det loddrette blå strøket til venstre
--color-veil-fiolett#8A6FD1#8A6FD1
--color-veil-fersken#F3B08A#4A74C9Det oransje strøket. I mørk modus blått, så røyken på forsiden holder seg kjølig i mørket
--color-veil-rosa#EBA0B0#EBA0B0
--color-veil-krem#F3E9CF#F3E9CF
--color-veil-lavendel#CDB9E3#CDB9E3
--color-pattern#FFFFFF#FFFFFFStjernemønsteret i bakgrunnen på forsiden
--color-pattern-faint#F1EBDE#FFFFFFDet faste stjernemønsteret øverst på casesidene: samme beige som knappen «Les om prosjektet» på lys skjerm, hvitt (svakt) på mørk
--color-footer-bg#171512#171512Bakgrunn i bunnteksten
--color-footer-text#F7F4EC#F7F4ECTekst i bunnteksten
--color-footer-text-secondary#A9A092#A9A092Mindre viktig tekst i bunnteksten
--color-footer-border#34302B#34302BLinjer i bunnteksten
--color-status-info-flate#FFFFFF00#92B3E6Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus.
--color-status-info-ikon#244A87#172B4AIkonet i meldingen. Mørkere utgave av statusfargen i mørk modus.
--color-status-suksess-flate#FFFFFF00#84C9A0Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus.
--color-status-suksess-ikon#23633E#163A26Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus.
--color-status-advarsel-flate#FFFFFF00#EDC062Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus.
--color-status-advarsel-ikon#7A4F00#3D2A05Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus.
--color-status-feil-flate#FFFFFF00#EE8FA6Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus.
--color-status-feil-ikon#8E1736#4A1220Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus.
--color-status-tekst#26221D#1F1C18Tittelen i meldingen
--color-status-tekst-svak#514B43#2D2A26Meldingsteksten under tittelen
--color-status-kant#FFFFFFB3#1F1C181FDen tynne kanten rundt meldingen
--color-status-knapp#FFFFFFB3#FFFFFF73Knappen i meldingen («Ok!», «Prøv igjen»)

Fargekula

  • --color-orb-coreFargekula på forsiden: kjernen
  • --color-orb-midFargekula: midten
  • --color-orb-edgeFargekula: kanten
  • --color-orb-extraFargekula: ekstra flekk

Basisfarger

Råverdiene. Komponentene bruker ikke disse direkte, men de semantiske fargene over.

neutral

  • 0#FFFDF8
  • 25#FCFBF8
  • 50#FBF9F4
  • 100#F7F4EC
  • 150#F1EBDE
  • 175#E8E3DA
  • 200#E9E0CD
  • 300#D3C9B6
  • 400#A9A092
  • 500#7D766C
  • 600#514B43
  • 700#3D3832
  • 750#34302B
  • 800#2D2A26
  • 850#26221D
  • 900#1F1C18
  • 950#171512

red

  • 50#FDF1EE
  • 100#F7DDD6
  • 200#F2BFB4
  • 300#E99A8B
  • 400#E56A52
  • 500#E0432C
  • 600#B8331E
  • 700#962816
  • 800#731F11
  • 900#4A160D
  • 950#2E1410

green

  • 50#EEF7F1
  • 100#D3ECDC
  • 300#84C9A0
  • 600#2E7D4F
  • 700#23633E
  • 900#163A26
  • 950#10241A

crimson

  • 50#FCEFF2
  • 100#F8D6DE
  • 300#EE8FA6
  • 600#B01E44
  • 700#8E1736
  • 900#4A1220
  • 950#2C0E14

amber

  • 50#FDF5E4
  • 100#F9E6BC
  • 300#EDC062
  • 600#9A6400
  • 700#7A4F00
  • 900#3D2A05
  • 950#261A05

blue

  • 50#EEF3FB
  • 100#D6E2F5
  • 300#92B3E6
  • 600#2F5DA8
  • 700#244A87
  • 900#172B4A
  • 950#0F1B2E

glow

  • oransje#FF7A00
  • gul#FFC300
  • fiolett#8E6BFF
  • rosa#FF4F8B
  • turkis#2FB8A6
  • bla#4A74C9
  • gull#E3A86C
  • karmin#C9294F
  • lilla#A77A92
  • ultramarin#2B3FD6
  • indigo#2E2F8F
  • fiolett-dyp#5B3FB8
  • fersken#F3B08A
  • rosa-lys#EBA0B0
  • krem#F3E9CF
  • lavendel#CDB9E3
  • bla-myk#4256C8
  • fiolett-lys#8A6FD1

Typografi

  • --font-family-body Hanken Grotesk Brødtekst, lenker, knapper og skjemafelt
  • --font-family-heading Hanken Grotesk Mindre overskrifter: h3 og h4
  • --font-family-display kulturista-web Store overskrifter: h1, h2 og seksjonstitler, og det store navnet øverst på forsiden og i bunnen av siden (Kulturista Medium Italic)
--font-size-caption · 12px

Designsystem i kode

--font-size-small · 14px

Designsystem i kode

--font-size-body · 16px

Designsystem i kode

--font-size-lead · 18px

Designsystem i kode

--font-size-h4 · 22px

Designsystem i kode

--font-size-h3 · 28px

Designsystem i kode

--font-size-h2 · 36px

Designsystem i kode

--font-size-h1 · 48px

Designsystem i kode

--font-size-display · 64px

Designsystem i kode

Vekter

light 300body 400strong 500heading 400display 400thin 200

Linjehøyde

  • --font-line-height-heading 1.05
  • --font-line-height-snug 1.2
  • --font-line-height-compact 1.25
  • --font-line-height-body 1.45

Avstander

  • --space-3xs2px
  • --space-2xs4px
  • --space-xs8px
  • --space-sm12px
  • --space-md16px
  • --space-lg24px
  • --space-xl32px
  • --space-2xl48px
  • --space-3xl64px
  • --space-4xl96px
  • --space-5xl128px
  • --space-divider40px
  • --space-caption20px

Den faste skalaen over brukes inni små ting, som knapper, felt og merkelapper. Der skal luften være lik på alle skjermer.

Avstander som vokser med skjermen

Luft rundt innhold og mellom grupper og seksjoner vokser jevnt fra mobil til PC. Da får en komponent riktig luft på alle skjermer med én token, uten egne regler for hver skjerm. Stripen viser verdien på skjermen du har nå.

TokenMobil (360 px)PC (1 240 px)Brukes tilNå
--space-fluid-sm12px16pxSmå mellomrom
--space-fluid-md16px24pxMellomrom inne i kort
--space-fluid-lg24px32pxMellom elementer
--space-fluid-xl32px48pxMellom grupper
--space-fluid-2xl48px96pxMellom seksjoner
--space-fluid-section64px128pxStore pauser, for eksempel over bunnteksten

Hjørneradius

--radius-none0px
--radius-sm4px
--radius-md10px
--radius-lg16px
--radius-xl24px
--radius-full9999px

Kantlinjer

--border-width-thin1px
--border-width-medium2px
--border-width-thick3px

Kantfarger: --color-border-subtle (pynt), --color-border-strong (skjemafelt), --color-border-focus (fokusring).

Dybde

--shadow-smKort
--shadow-mdMenyer
--shadow-lgDialoger
--shadow-pressedDen skarpe skyggen under en knapp som trykkes (3D-effekt)

Hva ligger over hva

  • --z-behind -1
  • --z-base 0
  • --z-raised 1
  • --z-sticky 100
  • --z-dropdown 200
  • --z-overlay 300
  • --z-dialog 400
  • --z-toast 500

Layout og rutenett

123456789101112
  • --layout-max-width 1240px
  • --layout-columns-mobile 4
  • --layout-columns-tablet 8
  • --layout-columns-desktop 12
  • --layout-margin-mobile 16px
  • --layout-margin-tablet 32px
  • --layout-margin-desktop 48px
  • --layout-margin-fluid clamp({semantic.layout.margin.mobile}, 0.182rem + 3.636vw, {semantic.layout.margin.desktop})
  • --layout-gutter-mobile 16px
  • --layout-gutter-tablet 24px
  • --layout-gutter-desktop 32px
  • --layout-gutter-fluid clamp({semantic.layout.gutter.mobile}, 0.591rem + 1.818vw, {semantic.layout.gutter.desktop})
  • --layout-grid-item-min-sm 200px
  • --layout-grid-item-min-md 280px
  • --layout-grid-item-min-lg 360px
  • --layout-container-sm 400px
  • --layout-container-md 640px
  • --layout-container-lg 900px
  • --layout-measure 65ch
  • --layout-measure-short 34ch
  • --layout-label-column 10.5rem
  • --layout-measure-heading 12ch
  • --layout-hero-min-height min(80vh, 52rem)

Skjermstørrelser

  • --breakpoint-mobile fra 0px
  • --breakpoint-tablet fra 768px
  • --breakpoint-desktop fra 1200px

Ikoner

Bibliotek: Tabler Icons (tabler.io/icons)

--icon-size-sm--icon-size-md--icon-size-lg--icon-size-xlfylt
  • --icon-size-sm 16px
  • --icon-size-md 20px
  • --icon-size-lg 24px
  • --icon-size-xl 32px
  • --icon-size-inline 0.8em
  • --icon-size-inline-top 0.7em
  • --icon-stroke-thin 1.5
  • --icon-stroke 2

Tilstander

VanligMusa overTrykketValgtDeaktivert
  • --state-hover-overlay #26221D0F Legges over noe når musa er over
  • --state-pressed-overlay #26221D1F Legges over noe når det trykkes
  • --state-selected-bg #F7DDD6 Bakgrunn for noe som er valgt
  • --state-disabled-opacity 0.4 Hvor gjennomsiktig noe som ikke kan brukes er
  • --state-focus-ring-width 3px
  • --state-focus-ring-offset 2px
  • --state-focus-halo-width 2px Hvor bred den kontrasterende kanten rundt fokusringen er
  • --state-press-lift 4px Hvor mye en knapp løftes når den trykkes

Bevegelse

Hold musa over boksene for å se hvor lang tid hver varighet tar.

instant0ms
fast120ms
normal200ms
slow320ms
slower600ms
letters1100ms
reveal800ms
fade700ms
image1200ms
image-scale1400ms
drift-110000ms
drift-212000ms
drift-314000ms
swing3200ms
spin1400ms
  • --motion-duration-instant 0ms
  • --motion-duration-fast 120ms Små ting: hover, farger
  • --motion-duration-normal 200ms Åpne og lukke
  • --motion-duration-slow 320ms Store flater som glir inn
  • --motion-duration-slower 600ms
  • --motion-duration-ambient 26000ms Fargekula på forsiden
  • --motion-duration-letters 1100ms Den store tittelen som glir inn bokstav for bokstav
  • --motion-duration-reveal 800ms Tekst og titler som toner inn og glir opp
  • --motion-duration-fade 700ms Tagger og små ting som toner inn
  • --motion-duration-image 1200ms Bilder som åpner seg
  • --motion-duration-image-scale 1400ms Bilder som krymper på plass
  • --motion-duration-drift-1 10000ms Bakgrunnsgløden, flekk 1
  • --motion-duration-drift-2 12000ms Bakgrunnsgløden, flekk 2
  • --motion-duration-drift-3 14000ms Bakgrunnsgløden, flekk 3
  • --motion-duration-swing 3200ms Låsen på låste caser: én sving fra side til side og tilbake. Står stille når «redusert bevegelse» er slått på.
  • --motion-duration-spin 1400ms Én runde for blomsten mens noe laster: står stille litt, snur seg en kvart runde, står stille igjen. Står helt stille når «redusert bevegelse» er slått på.
  • --motion-easing-standard 0.2, 0, 0, 1
  • --motion-easing-enter 0, 0, 0, 1 Ting som kommer inn
  • --motion-easing-exit 0.3, 0, 1, 1 Ting som forsvinner
  • --motion-easing-reveal 0.16, 1, 0.3, 1 Rask start, myk slutt – for titler og bilder
  • --motion-easing-soft 0.215, 0.61, 0.355, 1 Myk – for tekst og tagger

Tetthet

Romslig (standard)

Kompakt

  • --density-compact-control-height 32px
  • --density-compact-control-padding-x 12px
  • --density-compact-stack-gap 8px
  • --density-compact-section-gap 48px
  • --density-comfortable-control-height 44px
  • --density-comfortable-control-padding-x 24px
  • --density-comfortable-stack-gap 16px
  • --density-comfortable-section-gap 96px

Rutenettet i bruk

1. Sidens kolonner

4 kolonner på mobil, 8 på nettbrett og 12 på PC. Boksene under dekker ulikt antall kolonner.

Hele bredden
8 kolonner
4 kolonner
6 kolonner
6 kolonner
4
4
4
8 kolonner, midt på (slik teksten står i et case)

2. Flytende rutenett med kort

Kortene legger seg i så mange kolonner som får plass. Titler, tekster og knapper står på linje selv om teksten er ulikt lang.

En mye lengre tittel som går over flere linjer

Litt tekst.

Tittel

En lengre tekst som tar mer plass, for å vise at knappen likevel står på samme høyde som i nabokortene.

3. Små ting i flytende rutenett

4. Tilpasser seg plassen, ikke skjermen

Samme byggekloss i to ulike bredder. Den brede legger bildet ved siden av teksten, den smale legger det over.

Jeg har mye plass, så bildet står ved siden av meg.

Jeg har lite plass, så bildet står over meg.

Komponenter

Byggeklossene, i alle varianter og tilstander, i lys og mørk modus. Under hver komponent står spesifikasjonen: når den brukes, varianter, tilstander og designverdier.

Modus
Tetthet

Knapp

Lys modus

Knapp i lys modus: varianter og tilstander
VariantStandardHoverFokusTrykketDeaktivert
Viktig (primær)
Hoved (sekundær)
Grå (åpner tekst)
Med ikonLes merLes mer
Laster

Mørk modus

Knapp i mørk modus: varianter og tilstander
VariantStandardHoverFokusTrykketDeaktivert
Viktig (primær)
Hoved (sekundær)
Grå (åpner tekst)
Med ikonLes merLes mer
Laster

Spesifikasjon

Anatomi
  1. Beholder – pillen med fyll eller kant
  2. Tekst – sier hva som skjer
  3. Ikon – valgfritt, etter teksten
Brukes når
For handlinger og viktige lenker: sende, åpne mer tekst, gå videre til noe. Bruk én viktig knapp per område, og hovedknappen til resten. Vanlige lenker i tekst bruker Lenke i stedet.
Varianter
  • Viktig (primær) – svart fylt pille. Det aller viktigste på siden, for eksempel «Send meg en e-post».
  • Hoved (sekundær) – pille med kant og uten fyll. Standard for de fleste knapper.
  • Grå – grå og kantete, ligger til høyre. Åpner og lukker tekst, for eksempel «Les om prosjektet» og «Mer om meg».
  • Med ikon – alle variantene kan ha et ikon etter teksten (Tabler-ikon i samme farge som teksten).
  • Lenke eller knapp – element="a" når den går til en annen side, element="button" når den gjør noe på siden.
Tilstander
standard, hover (musa over), fokus (tastatur), trykket (løftes med skarp skygge, 3D), laster (blomsten snur seg, teksten sier hva som skjer, for eksempel «Sender …»; kan ikke trykkes), deaktivert
Tilgjengelighet
TastaturTab flytter hit. Enter og mellomrom trykker. Er knappen en lenke, brukes Enter.
SkjermleserLeser teksten på knappen. Ikonet leses ikke. Laster knappen, får skjermleseren vite at den er opptatt (aria-busy).
SynligMinst 44 px høy. Tekst mot flate: Hoved 15,3:1 i lys og 13,3:1 i mørk modus, Viktig 14,4:1 og 13,3:1, Grå 13,3:1 og 11,2:1. Grønn fokusring i to lag, 3 px, med 4,9:1 i lys og 8,8:1 i mørk modus mot bakgrunnen.
BevegelseBlomsten står stille med redusert bevegelse eller Effekter: Av.
Tokens
Høyde--control-height (44 px, 32 px kompakt)
Luft på sidene--control-padding-x
Mellomrom tekst og ikon--space-xs
Hjørner--radius-full (pille), --radius-sm (grå)
Kant--border-width-medium
Tekst--font-size-small, --font-weight-heading, --font-family-body
Farge, viktig--color-button-strong-bg, -text, -hover
Farge, hoved--color-button-outline-border, -text, --state-hover-overlay
Farge, grå--color-button-soft-bg, -text, -hover
Trykket--state-press-lift, --shadow-pressed
Fokus--state-focus-ring-width, --state-focus-ring-offset, --color-border-focus
Deaktivert--state-disabled-opacity
Overgang--motion-duration-fast, --motion-easing-standard
Kode
<Knapp tekst="Se casen" lenke="/case/workbuddy" variant="viktig">
  <Ikon navn="arrow-right" storrelse="sm" />
</Knapp>
<Knapp tekst="Mer om meg" element="button" variant="graa" />
<Knapp tekst="Sender …" element="button" variant="viktig" laster />

Lenke

Lys modus

Lenke i lys modus: varianter og tilstander
VariantStandardHoverFokus
Tekst (standard)Se alle caserSe alle caserSe alle caser
DempetSe alle caserSe alle caserSe alle caser
EksternLinkedIn (åpner i ny fane)LinkedIn (åpner i ny fane)LinkedIn (åpner i ny fane)
I tekst

Les mer om hvordan jeg jobber på Om meg-siden.

Mørk modus

Lenke i mørk modus: varianter og tilstander
VariantStandardHoverFokus
Tekst (standard)Se alle caserSe alle caserSe alle caser
DempetSe alle caserSe alle caserSe alle caser
EksternLinkedIn (åpner i ny fane)LinkedIn (åpner i ny fane)LinkedIn (åpner i ny fane)
I tekst

Les mer om hvordan jeg jobber på Om meg-siden.

Spesifikasjon

Brukes når
For å gå til en annen side eller et annet sted, når det ikke er en handling. Er det en handling (sende, åpne, lukke), brukes Knapp. Lenketeksten skal si hvor man havner, ikke «klikk her».
Varianter
  • Tekst (standard) – understreket, samme farge som teksten. I løpende tekst, e-post og fakta i casene.
  • Dempet – svakere farge uten understrek, blir mørk når musa er over. I menyen og nederst i bunnteksten.
  • Ekstern – lenker til andre nettsteder (LinkedIn, Instagram, kunder). Åpner i ny fane, og skjermlesere hører «åpner i ny fane».
  • I løpende tekst – lenker inne i et avsnitt, et sitat, en bildetekst eller fakta får bare understreken, ikke blomsten, så teksten ikke forstyrres. Klassen med-blomst gir blomsten tilbake der den passer (som e-posten i bunnteksten).
Tilstander
standard, hover (blomsten snurrer inn foran lenker som står for seg selv; i løpende tekst bare understrek; dempet blir mørk), fokus (tastatur: fokusring og blomst), deaktivert finnes ikke for lenker – en lenke som ikke virker, skal fjernes
Tilgjengelighet
TastaturTab flytter hit, Enter åpner.
SkjermleserLeser lenketeksten. Lenker til andre nettsteder får den skjulte teksten «åpner i ny fane».
SynligTekst 15,3:1 i lys og 13,3:1 i mørk modus. Vanlige lenker har understrek. Den dempede lenken står bare i menyer, der det er tydelig at alt er lenker. Grønn fokusring med 4,9:1 i lys og 8,8:1 i mørk modus.
Tokens
Farge--color-text-link (tekst), --color-text-secondary og --color-text-primary (dempet)
Understrek--font-underline-offset, --border-width-thin
Blomsten--icon-size-inline, --space-xs, /former/blomst.svg
Blomsten kommer inn--motion-enter-scale, --motion-enter-rotate, --motion-duration-normal, --motion-duration-slow, --motion-easing-standard
Fargeovergang--motion-duration-fast, --motion-easing-standard
Fokus--state-focus-ring-width, --state-focus-ring-offset, --color-border-focus
Tekstarver størrelse og font fra teksten rundt
Kode
<Lenke tekst="Se alle caser" lenke="/#arbeid" />
<Lenke tekst="LinkedIn" lenke="https://www.linkedin.com/in/…" ekstern />

Skjemafelt

Lys modus

Standard

Hover

Fokus

Med hjelpetekst og påkrevd

Jeg svarer innen to dager.

Feil

Skriv en hel e-postadresse, for eksempel navn@firma.no.

Deaktivert

Tekstområde

Fortell kort hva du trenger hjelp til.

Mørk modus

Standard

Hover

Fokus

Med hjelpetekst og påkrevd

Jeg svarer innen to dager.

Feil

Skriv en hel e-postadresse, for eksempel navn@firma.no.

Deaktivert

Tekstområde

Fortell kort hva du trenger hjelp til.

Spesifikasjon

Anatomi

Skriv en hel e-postadresse.

  1. Etikett – sier hva som skal fylles inn
  2. Påkrevd – med ord, ikke bare stjerne
  3. Felt – der man skriver
  4. Feilmelding – NB-ikon og hvordan det rettes
Brukes når
Når besøkende skal skrive noe til deg, for eksempel i et kontaktskjema. Brukes i mønsteret Kontaktskjema. Ett felt per opplysning, med en etikett som sier hva som skal fylles inn.
Varianter
  • Tekstfelt – én linje: navn, e-post (type="email") og telefon (type="tel").
  • Tekstområde – flere linjer (type="textarea"), for eksempel en melding. Kan gjøres høyere av den som skriver.
  • Med hjelpetekst – kort forklaring under etiketten. Leses opp sammen med feltet.
  • Påkrevd – står med ord («må fylles ut»), ikke bare med en stjerne.
Tilstander
standard, hover (tydeligere kant), fokus (grønn ring i to lag), feil (rød kant, NB-ikonet og melding som leses opp), deaktivert
Tilgjengelighet
TastaturTab flytter inn i feltet.
SkjermleserEtiketten er koblet til feltet. Hjelpetekst og feilmelding leses opp sammen med feltet (aria-describedby), og feltet merkes som ugyldig ved feil. «Må fylles ut» står med ord.
SynligEtiketten står alltid over feltet. Kanten har 4,5:1 i lys og 3,5:1 i mørk modus. Feil vises med ikon og tekst, ikke bare rød farge. Grønn fokusring med 4,9:1 i lys og 8,8:1 i mørk modus.
Tokens
Høyde--control-height
Luft inni--space-xs (oppe/nede), --space-sm (sidene)
Hjørner--radius-md
Kant--border-width-thin, --color-border-strong; hover: --color-text-primary
Flate og tekst--color-surface, --color-text-primary, --color-text-secondary (plassholder og hjelp)
Etikett--font-size-small, --font-weight-strong
Mellomrom--space-2xs
Feil--color-error-text, --border-width-medium, ikon alert-circle
Fokus--state-focus-ring-width, --state-focus-ring-offset, --state-focus-halo-width, --color-border-focus, --color-border-focus-halo
Deaktivert--state-disabled-opacity, --color-bg-subtle
Breddehøyst --layout-measure
Kode
<Skjemafelt etikett="E-post" navn="epost" type="email"
  autofullfor="email" pakrevd
  feil="Skriv en e-postadresse, for eksempel navn@firma.no." />
<Skjemafelt etikett="Melding" navn="melding" type="textarea"
  hjelp="Fortell kort hva du trenger hjelp til." />

Avkrysning

Lys modus

Standard

Hover

Fokus

Avkrysset

Deaktivert

Mørk modus

Standard

Hover

Fokus

Avkrysset

Deaktivert

Spesifikasjon

Anatomi
  1. Boks – med hake når den er valgt
  2. Tekst – hele teksten kan klikkes
Brukes når
Når noe kan krysses av som gjort eller valgt, for eksempel oppgaver i en liste. Hele raden kan trykkes på. Er det et valg som skjer med en gang (som å slå noe av og på), passer en knapp bedre.
Varianter
  • Med tekst – boksen til venstre og teksten til høyre. Teksten sier hva som krysses av.
  • Avkrysset – mørk boks med hake; teksten blir grå, så man ser at den er ferdig. Den strekes ikke over, så den er lett å lese.
Tilstander
standard, hover (svak flate bak raden), fokus (grønn ring i to lag rundt boksen), avkrysset, deaktivert
Tilgjengelighet
TastaturTab flytter hit, mellomrom krysser av og fjerner krysset.
SkjermleserEn ekte avkrysningsboks. Teksten er etiketten, og hakemerket leses ikke.
SynligHele raden kan klikkes, ikke bare boksen. Kanten på boksen har 4,5:1 i lys og 3,5:1 i mørk modus mot kortflaten. Grønn fokusring med 5,0:1 i lys og 8,2:1 i mørk modus.
BevegelseIngen overgang med redusert bevegelse eller Effekter: Av.
Tokens
Boks--icon-size-lg, --border-width-medium, --color-border-strong, --radius-sm, --color-surface
Avkrysset--color-button-strong-bg (fyll), --color-button-strong-text (hake), --color-text-secondary (tekst)
Rad--control-height, --space-sm, --radius-md, --state-hover-overlay
Fokus--state-focus-ring-width, --state-focus-ring-offset, --state-focus-halo-width, --color-border-focus, --color-border-focus-halo
Deaktivert--state-disabled-opacity
Kode
<Avkrysning tekst="Send meg en kopi" navn="kopi" />

Statusmelding

Lys modus

Suksess

Takk for meldingen!

Den er sendt, og jeg svarer innen to dager.

Feil

Advarsel

Bildet kom ikke fram

Resten av siden virker som vanlig.

Info

Godt å vite

Jeg svarer vanligvis innen to dager.

Laster

Sender meldingen …

Mørk modus

Suksess

Takk for meldingen!

Den er sendt, og jeg svarer innen to dager.

Feil

Advarsel

Bildet kom ikke fram

Resten av siden virker som vanlig.

Info

Godt å vite

Jeg svarer vanligvis innen to dager.

Laster

Sender meldingen …

Spesifikasjon

Anatomi
  1. Ikon – viser typen, ikke bare farge
  2. Tittel – hva som skjedde
  3. Melding – kort forklaring
  4. Handling – hva man kan gjøre
Brukes når
Når den besøkende må få vite hvordan noe gikk: at en melding er sendt, at noe gikk galt, at noe laster, eller noe som er nyttig å vite. Står der det skjedde, for eksempel øverst i skjemaet. Brukes i alle mønstrene.
Varianter
  • Suksess – noe er gjort, for eksempel «Takk for meldingen!». Ikon: gnisten (spark).
  • Feil – noe gikk galt og må rettes. Ikon: stjerne med utropstegn (NB). Leses opp med en gang av skjermlesere.
  • Advarsel – noe er ikke helt som det skal, men resten virker. Ikon: NB, i gul.
  • Info – nyttig å vite. Ikon: gnisten, i blått.
  • Laster – noe er på vei. Blomsten står stille litt, snur seg en kvart runde fremover, står stille igjen og så videre (står stille med «redusert bevegelse»).
  • Med tittel – kort første linje i litt tykkere skrift; teksten under blir litt svakere.
  • Med knapp – handling="Ok!" legger en liten grå knapp til høyre, for eksempel «Ok!», «Prøv igjen» eller «Last på nytt». Er det en lenke, gis den med lenke="…".
Tilstander
standard (meldingen er ikke noe man trykker på, så den har ikke hover eller deaktivert), fokus (bare når et skjema flytter tastaturet til feilmeldingen: grønn ring)
Tilgjengelighet
SkjermleserFeil leses opp med en gang (role="alert"). De andre leses når skjermleseren er ledig (role="status"). Med id kan skjemaet flytte tastaturet hit etter en feil.
SkjermleserFeil leses opp med en gang (role «alert»). De andre leses når skjermleseren er ledig (role «status»). Mens den laster, er den merket som opptatt (aria-busy).
SynligHver variant har eget ikon og tekst, så fargen er aldri alene. Feiltekst 9,0:1 og suksesstekst 7,2:1 i lys modus, minst 6,9:1 i mørk.
BevegelseBlomsten står stille med redusert bevegelse eller Effekter: Av. Glasset blir en tett flate med Effekter: Av.
Tokens
Glass--glass-bg, --glass-blur, --glass-saturate, --glass-border, --glass-shadow; uten gjennomsiktighet: --color-surface
Statusfarge--color-success-text, --color-error-text, --color-warning-text, --color-info-text: i ikonet og som svak tone i glasset (--glass-status-tint)
Tekst--color-text-primary (tittel), --color-text-on-status (teksten under en tittel)
KnappKnapp (grå), her med --radius-md, --glass-button-bg og --glass-border
Luft og hjørner--space-sm (over, under og til venstre), --space-md (til høyre), --space-sm (mellom ikon, tekst og knapp), --radius-lg
Tekst--font-size-body, --font-line-height-body, --font-weight-strong (tittel), --layout-measure (maks bredde)
Ikon--icon-size-xl (midt på i høyden); blomsten: --icon-size-lg; blomsten som laster: --motion-duration-spin, --motion-spin-step, --motion-easing-standard
Fokus--state-focus-ring-width, --state-focus-ring-offset, --color-border-focus
Kode
<Statusmelding variant="suksess" tittel="Takk for meldingen!">
  Jeg svarer deg innen to dager.
</Statusmelding>
<Statusmelding variant="feil" handling="Prøv igjen">Meldingen ble ikke sendt.</Statusmelding>

Bilde

Lys modus

Med bildetekst

Illustrasjon av en kylling som vokser opp.
Kyllingen vokser opp.

På flate, med tittel

Skjermbilde av s'Park: Finn parkering.
Finn parkeringLedige plasser i nærheten.

Mørk modus

Med bildetekst

Illustrasjon av en kylling som vokser opp.
Kyllingen vokser opp.

På flate, med tittel

Skjermbilde av s'Park: Finn parkering.
Finn parkeringLedige plasser i nærheten.

Spesifikasjon

Anatomi
Skjermbilde av s'Park: Finn parkering.
Finn parkeringLedige plasser i nærheten.
  1. Bilde – med alt-tekst
  2. Tittel – valgfri
  3. Bildetekst – valgfri
Brukes når
Alle ekte bilder i casene. Astro lager bildet i flere størrelser og i nyere formater, så det laster raskt på mobil og er skarpt på store skjermer. Hvert bilde må ha en alternativ tekst som sier hva det viser.
Varianter
  • Vanlig – bildet over hele bredden av kolonnen, med runde hjørner.
  • På flate – bildet midt på en rolig flate med luft rundt. Brukes til skjermbilder med gjennomsiktig bakgrunn, som telefoner.
  • Med bildetekst – valgfri tittel (mørk) og tekst (grå) under bildet.
Tilstander
lastes når det kommer nær skjermen, det første bildet øverst lastes med en gang (viktig)
Tilgjengelighet
SkjermleserLeser alt-teksten. Bilder med tom alt-tekst er pynt og hoppes over. Bildeteksten står i figcaption.
SynligLastes i riktig størrelse for skjermen, så det er skarpt uten å være tungt.
HuskSkriv alt-tekst som sier hva bildet viser. Bruk tom alt-tekst bare når bildet er ren pynt.
Tokens
Hjørner--radius-md
Flate--color-bg-subtle, --space-fluid-lg
Bildetekst--font-size-small, --color-text-primary og --font-weight-strong (tittel), --color-text-secondary (tekst), --space-sm
Kode
<Bilde src={bilde} alt="Kyllingen vokser opp."
  tittel="Finn parkering" tekst="Ledige plasser i nærheten." flate />

Video

Lys modus

YouTube-film, starter ikke av seg selv.

Mørk modus

YouTube-film, starter ikke av seg selv.

Spesifikasjon

Brukes når
Filmer og animasjoner i casene, enten fra YouTube eller som egen videofil. Starter aldri av seg selv, og har alltid kontroller.
Varianter
  • YouTube – vises fra youtube-nocookie.com, som ikke setter sporingskaker før filmen spilles.
  • Egen videofil – mp4 lagt i mappen public, med valgfritt bilde før start.
Tilstander
før start, spiller (nettleserens egne kontroller)
Tilgjengelighet
TastaturNettleserens egne knapper for avspilling. Rammen får grønn fokusring når du går inn med Tab.
SkjermleserVideoen har et navn (tittel).
SynligRammen får grønn fokusring med 4,9:1 i lys og 8,8:1 i mørk modus.
BevegelseEgen video starter ikke av seg selv.
HuskHar videoen tale, trenger den teksting.
Tokens
Flate og hjørner--color-bg-subtle, --radius-md
Tekst under--font-size-small, --color-text-secondary
Kode
<Video youtube="DC1nPAtHhqk" tittel="Reklamefilmen Gårdsklekket"
  tekst="Starter ikke av seg selv." />

Prototype

Lys modus

Prototype

Prøv selv: velg en plass og dra i skiven.Åpne prototypen i en ny fane (åpner i ny fane)

Mørk modus

Prototype

Prøv selv: velg en plass og dra i skiven.Åpne prototypen i en ny fane (åpner i ny fane)

Spesifikasjon

Brukes når
Klikkbare prototyper midt i et case. Prototypen er en egen side i public/prototyper og vises i en ramme rett på bakgrunnen. Under står alltid en lenke som åpner den i en ny fane, for dem som vil se den større eller ikke kommer til i rammen.
Varianter
  • Telefon – standard 390 × 844 piksler. Blir mindre på smale skjermer, men beholder formen.
  • Skjerm – gi bredde og høyde for prototyper laget for PC.
Tilstander
lastes når den kommer nær skjermen, kan brukes med mus, trykk og tastatur inne i rammen, «Prøv!»-merket ved siden av, etter at man har trykket på P-knappen i caset (lukkes med krysset, Esc eller et trykk i prototypen)
Tilgjengelighet
TastaturTab går inn i prototypen, og rammen får grønn fokusring. Under står en lenke som åpner prototypen i en ny fane.
SkjermleserRammen har en tittel som sier hva prototypen er. Lukk-knappen på «Prøv!» har et navn.
Bevegelse«Prøv!» står stille med redusert bevegelse eller Effekter: Av.
Tokens
Overskrift--font-family-display (kursiv), --font-size-fluid-h2
Luft over og under--space-fluid-2xl
«Prøv!»-merketForm merke, --space-5xl (mobil --space-4xl), --color-text-primary (form), --color-bg (tekst), --font-size-fluid-h3
Tekst og lenke under--font-size-small, --color-text-secondary, --layout-measure-short, se Lenke
Avstand til teksten under (midt under prototypen)--space-caption (20 px)
Kode
<Prototype src="/prototyper/spark/index.html"
  tittel="Klikkbar prototype av s'Park" bredde={388} hoyde={808}
  tekst="Prøv selv: velg en plass og dra i skiven." />

Rulleskisse

Lys modus

SideveisIllustrasjon av Marie Lyshol.Rull sideveis for å se hele skissen.

Mørk modus

SideveisIllustrasjon av Marie Lyshol.Rull sideveis for å se hele skissen.

Spesifikasjon

Brukes når
Store skisser (for eksempel fra Figma) som er for brede eller for høye til å vises i ett stykke. Man ruller i skissen slik som i appen, mens toppen, menyen og knappene står fast. Rammen kan rulles med mus, finger og tastatur.
Varianter
  • Gjennomsiktig – uten hvit flate og kant, for bilder med luft mellom skjermene. Luften viser flaten bak.
  • Sideveis – en bred tabell. Toppen, bunnen og menyen til venstre står fast. bredde sier hvor mange skjermbredder raden er.
  • Nedover – en lang side. Toppen står fast øverst og knappene nederst. forhold gir formen på rammen (standard 2 / 1). fastMeny lar menyen stå fast under toppen.
Tilstander
i ro, ruller, fokus (etter Tab, så piltastene ruller)
Tilgjengelighet
TastaturTab flytter til skissen. Piltastene ruller i den.
SkjermleserOmrådet har et navn som sier hva skissen viser og hvordan man ruller. Bildene inni er pynt og leses ikke.
Tokens
Kant og hjørner--border-width-thin, --color-border-subtle, --radius-md
Bakgrunn--color-surface
Fokus--state-focus-ring-width, --color-border-focus, --color-border-focus-halo
Tekst under--font-size-small, --color-text-primary (tittel), --color-text-secondary
Kode
<Rulleskisse retning="sideveis" innhold={landskap} bredde={1.5}
  alt="Illustrert kystlandskap med hus, fyr og båter" tittel="Sideveis" />

Animasjon

Lys modus

SkivenSpiller av seg selv, med pauseknapp.

Mørk modus

SkivenSpiller av seg selv, med pauseknapp.

Spesifikasjon

Brukes når
Vise hvordan noe brukes, for eksempel en telefon der noen scroller, trykker og skriver. Animasjonen er en egen side i public/animasjoner og vises i en ramme. Den går stille i loop mens den er synlig.
Varianter
  • Telefon – standard 640 × 1344 (formen på et telefonbilde). Gi bredde og høyde for andre former.
  • Med plakat – et stillbilde vises med en gang, til en tung animasjon er lastet.
Tilstander
spiller, pause (knappen viser «Spill av»), redusert bevegelse: står stille på skjermbildet, uten knapp
Tilgjengelighet
TastaturPause-knappen under stopper og starter animasjonen.
SkjermleserLeses som ett bilde med alt-tekst. Selve animasjonen leses ikke.
BevegelseAlltid en pauseknapp (WCAG 2.2.2). Med redusert bevegelse står den stille. Med Effekter: Av starter den på pause.
HuskSkriv alt-tekst som sier hva som skjer i animasjonen. Den er påkrevd.
Tokens
PauseknappKnapp graa, ikonene player-pause og player-play (--icon-size-sm)
Tekst under--font-size-small, --color-text-primary (tittel), --color-text-secondary, --space-sm
Kode
<Animasjon src="/animasjoner/workbuddy/index.html?vis=4"
  alt="Man drar rundt skiven for å sette antall"
  tittel="Skiven" tekst="Spiller av seg selv, med pauseknapp." />

Karusell

Lys modus

Skiven fra WorkBuddy
Skiven
Hold for å snakke fra WorkBuddy
Hold for å snakke
Teamet på skiftet fra WorkBuddy
Teamet på skiftet

Mørk modus

Skiven fra WorkBuddy
Skiven
Hold for å snakke fra WorkBuddy
Hold for å snakke
Teamet på skiftet fra WorkBuddy
Teamet på skiftet

Spesifikasjon

Brukes når
Mange bilder i en rad man blar sideveis i, i stil med Material 3, for eksempel komponenter fra en app eller formater av et banner. Hvert bilde står i en flis med runde hjørner på en rolig flate; flisene er like høye og like brede som bildet sitt, så ingenting beskjæres. Fliser som står delvis utenfor kanten beholder de runde hjørnene, og bildet inni glir litt. Tittelen på bildet blir etiketten under flisen.
Varianter
  • Standard – flisene er like høye (--layout-container-sm, høyst 60 % av skjermhøyden) og høyst 85 % av bredden.
  • Vis alle – knappen under karusellen viser alle bildene under hverandre, så ingen må bla sideveis (krav fra Material 3).
Tilstander
hvile, hover: svak tone på flisen, fokus: grønn ring rundt flisen, og bildet rulles fram, dra med mus, sveip på mobil og styreflate, raden glir med slow out til neste bilde (tastatur og museslipp), knappene Forrige og Neste under karusellen, av ved første og siste bilde, Tab eller piltastene går fra bilde til bilde; hvert bilde leses opp som «2 av 6: tittel», redusert bevegelse: bildene glir ikke inni flisene, uten JavaScript: en vanlig rad man kan rulle sideveis i
Tilgjengelighet
TastaturPiltastene og Tab går fra bilde til bilde. Knappene Forrige og Neste virker også.
SkjermleserLeses som en karusell, og hvert bilde som «2 av 6: tittel». Knappene har navn.
BevegelseStarter aldri av seg selv. Glir ikke med redusert bevegelse eller Effekter: Av.
Tokens
Flis--color-bg-subtle, --radius-xl, --space-lg (luft rundt bildet)
Høyde og bredde--layout-container-sm
Mellomrom--space-xs mellom flisene, --space-md over knappen
Hover og fokus--state-hover-overlay, --state-focus-ring-width, --color-border-focus
Glidning (slow out)--motion-duration-reveal, --motion-easing-reveal
Kode
<Karusell tittel="Elementer fra WorkBuddy">
  <Bilde src={skive} storrelser="360px" alt="Skiven" tittel="Skiven" />
  <Bilde src={tale} storrelser="360px" alt="Hold for å snakke" tittel="Hold for å snakke" />
</Karusell>

Utvid

Lys modus

Pil – lukket og åpen

Brukertesting

Tekst som vises når raden åpnes.

Neste steg

Denne raden er åpen fra start.

Mørk modus

Pil – lukket og åpen

Brukertesting

Tekst som vises når raden åpnes.

Neste steg

Denne raden er åpen fra start.

Spesifikasjon

Brukes når
Ekstra tekst som ikke alle trenger å lese, for eksempel planen for brukertesting i tekstboksen i en case. Bygget på nettleserens egen «details», så den virker med tastatur, skjermleser og uten skript.
Varianter
  • Knapp – rund knapp med tynn kant og stjerne, som «Les om prosjektet». Følger med når du ruller. Standard.
  • Rad – bred rad med linje over og stor tittel, innholdet i høyre halvdel. Til hele sidebredden, som på Om meg.
  • Pil – smal rad med tittel og pil som peker ned, og linje over og under. Til ekstra tekst inni en tekstboks.
Tilstander
lukket: pila peker ned, åpen: pila snur seg og peker opp, hover: svak tone på raden, fokus: grønn ring rundt raden, redusert bevegelse: pila snur uten bevegelse, og innholdet åpner seg uten glidning
Tilgjengelighet
TastaturTab flytter hit. Enter og mellomrom åpner og lukker.
SkjermleserSier om den er åpen eller lukket, fordi den bygger på details og summary i nettleseren. Ikonet leses ikke.
BevegelseGlir ikke opp og ned med redusert bevegelse eller Effekter: Av.
Tokens
Linje over og under (pil)--border-width-thin, --color-border-subtle
Tittel (pil)--font-size-fluid-lead, --font-weight-strong, --color-text-primary
Høyde og luft (pil)--control-height, --space-xs, --space-fluid-md under innholdet
PilIkon chevron-down (--icon-size-md), --motion-duration-normal
Hover--state-hover-overlay
Kode
<Utvid tittel="Brukertesting" variant="pil">
  <p>Tekst som vises når raden åpnes.</p>
</Utvid>

Kort

Lys modus

Kort i glass (standard) – standard, hover og fokus (på knappen)

Designsystem i kode

Ett system for tre verktøy.

WorkBuddy

Vakten samlet på én app, for de som jobber i butikk.

Et tredje prosjekt med en lengre tittel

Kort tekst.

Kort med tett flate (glass=false)

Designsystem i kode

Ett system for tre verktøy.

WorkBuddy

Vakten samlet på én app.

Et tredje prosjekt

Kort tekst.

Case-rad i glass (standard) – med fargesløret bak, som på forsiden. Standard, hover og fokus (på tittelen)

Case-rad med tett flate (glass=false)

Mørk modus

Kort i glass (standard) – standard, hover og fokus (på knappen)

Designsystem i kode

Ett system for tre verktøy.

WorkBuddy

Vakten samlet på én app, for de som jobber i butikk.

Et tredje prosjekt med en lengre tittel

Kort tekst.

Kort med tett flate (glass=false)

Designsystem i kode

Ett system for tre verktøy.

WorkBuddy

Vakten samlet på én app.

Et tredje prosjekt

Kort tekst.

Case-rad i glass (standard) – med fargesløret bak, som på forsiden. Standard, hover og fokus (på tittelen)

Case-rad med tett flate (glass=false)

Spesifikasjon

Anatomi

WorkBuddy

Vakten samlet på én app.

  1. Bilde
  2. Tittel
  3. Tekst – én eller to linjer
  4. Knapp – går til casen
Brukes når
For å vise noe man kan klikke seg videre til: et case, et prosjekt, en artikkel. Hele innholdet står samlet på en flate. Bruk Case-rad på forsiden (ett case om gangen), og vanlig kort når flere står ved siden av hverandre.
Varianter
  • Kort (glass, standard) – bilde, tittel, tekst og knapp på en glassflate, som Case-rad. Flere kort i et rutenett får tittel, tekst og knapp på samme høyde (subgrid). Tilpasser seg plassen det får.
  • Kort med tett flate – glass={false}: hvit flate med myk skygge, for steder uten farge bak.
  • Kort med bilde og dato (blogg) – src og alt gir et ekte bilde i stedet for plassholderen, beskåret til formen i forhold (standard 4 / 3). dato viser datoen under tittelen, for eksempel «8. november 2026». bareNorsk={true} brukes for blogginnlegg: tittel, tekst og bilde slås ikke opp i den engelske ordboka.
  • Case-rad (glass, standard) – stort bilde til venstre, tagger og tittel til høyre, over hele bredden, på en matt, delvis gjennomsiktig glassflate med korn. Trenger farge bak seg (fargesløret). Teksten legger seg under bildet når det er lite plass. Tittelen er lenken. Blir tett flate hvis nettleseren ikke støtter glass, eller brukeren har bedt om mindre gjennomsiktighet.
  • Case-rad med tett flate – glass={false}: hvit flate, for steder uten farge bak.
Tilstander
standard, hover (knappen / tittelen: tykkere understrek og blomsten), fokus (grønn ring i to lag på lenken eller knappen), deaktivert finnes ikke – et kort uten innhold skal ikke vises
Tilgjengelighet
TastaturBare knappen i kortet tas med Tab, ikke kortet selv.
SkjermleserTittelen er en overskrift (h3), så kortene kan finnes i overskriftslisten. Datoen står i et time-element med datoen i tall (datetime), så den kan leses riktig. Med bareNorsk får tittel og tekst lang="no", så de leses på norsk også når siden står på engelsk.
SynligTekst 8,6:1 i lys og 6,1:1 i mørk modus. Med Effekter: Av blir glasset en tett flate med en svak linje rundt.
Tokens
Flate--color-surface (kort og case-rad), --glass-bg, --glass-border, --glass-blur, --glass-saturate, --glass-shadow, --glass-noise, --glass-noise-opacity (glass)
Hjørner--radius-lg (kortet), --radius-md (bildet)
Skygge--glass-shadow (glass), --shadow-sm (tett kort)
Luft inni--space-fluid-md, --space-fluid-sm, --space-xs
Mellomrom--space-fluid-sm (kort), --space-fluid-lg og --space-fluid-md (case-rad), --layout-gutter-fluid (mellom kort)
Tittel--font-size-lead / --font-size-fluid-h3, --font-weight-display
Tekst--font-size-small / --font-size-body, --color-text-secondary
Lenke og knappse Lenke og Knapp; tykkere understrek ved hover: --border-width-medium
Bredde--layout-grid-item-min-md (kort), --layout-container-sm og -md (når innholdet bytter oppsett)
Kode
<Kort tittel="WorkBuddy" tekst="Vakten samlet på én app."
  lenke="/case/workbuddy" knappetekst="Se casen" />

Seksjon

Lys modus

Med skillelinje

Utvalgt arbeid

UX- & produkt design

Her kommer innholdet, for eksempel casene.

Standard

Skissebok

Tegninger & ideer

Innhold

Tett, og undernivå (h3)

Om meg

Erfaring og utdanning

Innhold

Mørk modus

Med skillelinje

Utvalgt arbeid

UX- & produkt design

Her kommer innholdet, for eksempel casene.

Standard

Skissebok

Tegninger & ideer

Innhold

Tett, og undernivå (h3)

Om meg

Erfaring og utdanning

Innhold

Spesifikasjon

Brukes når
For hvert større område på en side som har en egen tittel, for eksempel «Utvalgt arbeid» på forsiden. Gir lik luft og samme oppbygging overalt, og gjør at skjermlesere kan hoppe mellom områdene.
Varianter
  • Standard – liten etikett med store bokstaver, stor tittel i Kulturista Medium Italic (én tykkelse) og innholdet under.
  • Med skillelinje – skille={true}: stjerna med strek over seksjonen. Brukes mellom toppen og «Utvalgt arbeid».
  • Tett – tett={true}: mindre luft mellom tittel og innhold, for korte områder.
  • Undernivå – niva="h3" for en seksjon inni en annen seksjon, så overskriftene kommer i riktig rekkefølge. Ser lik ut – samme store tittel i Kulturista.
Tilstander
ingen – seksjonen er ikke noe man trykker på. Lenker og knapper inni har sine egne tilstander.
Tilgjengelighet
SkjermleserSeksjonen er et område med navn fra tittelen, så den kan finnes i listen over områder. Overskriftsnivået kan endres (niva).
Tokens
Luft mellom tittel og innhold--space-fluid-xl (standard), --space-fluid-md (tett)
Luft mellom ting i innholdet--space-fluid-2xl
Etikett--font-size-small, --font-weight-body, --font-letter-spacing-eyebrow
Tittel--font-size-fluid-h1, --font-family-display (Kulturista, kursiv), --font-weight-display – én tykkelse, også når den er h3
Mellom etikett og tittel--space-fluid-sm
Skillelinje--space-3xl (stjerna), --border-width-thin (streken), --color-text-primary
Breddefølger rammen og rutenettet (--layout-max-width, --marg)
Kode
<Seksjon id="arbeid" etikett="Utvalgt arbeid" lett="UX- &" tung="produkt design" skille>
  …innholdet…
</Seksjon>

Lys modus

Standard (Arbeid er siden du er på)

Hover på et menypunkt (Om meg)

Fokus på et menypunkt (Skissebok)

Fokus på Visning

Visning åpen

Utseende
Effekter

Språkvalget åpent (NO/EN)

Mobil, med fokus på burgeren

Mørk modus

Standard (Arbeid er siden du er på)

Hover på et menypunkt (Om meg)

Fokus på et menypunkt (Skissebok)

Fokus på Visning

Visning åpen

Utseende
Effekter

Språkvalget åpent (NO/EN)

Mobil, med fokus på burgeren

Spesifikasjon

Brukes når
Øverst på alle sider. Den ligger i sidelayouten (Side.astro), så du trenger aldri å legge den inn selv.
Varianter
  • PC og nettbrett – ML-logoen til venstre (lenke til forsiden), menyen Arbeid, Om meg, Skissebok, Kontakt, språkknappen NO/EN og Visning (tre prikker) til høyre.
  • Mobil (under 768 px) – logoen, NO/EN, Visning og en burger. Burgeren åpner menyen over hele skjermen med store menypunkter. Lukkes med kryss, Esc eller ved å velge et punkt.
  • Språkknappen – liten grå tekst «NO ⌄» (eller «EN ⌄»). Den åpner et lite valg med Norsk og English. Valget huskes i nettleseren, så siden holder seg på samme språk på alle sider. Den engelske teksten står i src/i18n/en.json. Lukkes med Esc, ved å trykke utenfor eller ved å velge.
  • Visning – de tre prikkene åpner to valg. Utseende: Lys, Mørk eller Som maskinen. Effekter: Som maskinen eller Av. Av stopper all animasjon, gjør glasset til en tett flate og fjerner fargesløret på alle sider (WCAG 2.2.2). Valgene huskes i nettleseren. Lukkes med Esc eller ved å trykke utenfor.
  • Aktivt menypunkt – siden du er på står mørk, de andre grå. Skjermlesere får vite hvilken side det er (aria-current).
Tilstander
standard, hover (menypunktet blir mørkt og blomsten snurrer inn; Visning blir mørk), fokus (grønn ring i to lag og blomst), aktiv side, mobilmenyen åpen
Tilgjengelighet
TastaturAlt nås med Tab. Esc lukker språkvalget, Visning og mobilmenyen, og tastaturet går tilbake til knappen.
SkjermleserHovedmenyen har navn, og siden du er på er merket (aria-current). Knappene sier om valget er åpent. Mobilmenyen er et dialogvindu som holder tastaturet inne.
SynligMenytekst 8,3:1 i lys og 6,6:1 i mørk modus.
BrukervalgVisning lar den besøkende velge lys eller mørk side, og slå av effekter.
Tokens
Luft over og under--space-fluid-md
Mellom menypunktene--space-fluid-xl
Menytekst--font-size-body (16 px), --color-text-secondary; aktiv og hover: --color-text-primary
Logo--logo-height, --color-text-primary
Sol/måne og burger--control-height (trykkflate 44 px), --icon-size-lg, --color-text-secondary / --color-text-primary
Språkknappen--font-size-small, --color-text-secondary / --color-text-primary, --control-height, --space-2xs, --icon-size-sm
Språkvalget--color-surface-raised, --color-border-subtle, --border-width-thin, --radius-md, --radius-sm, --shadow-md, --z-dropdown, --state-hover-overlay
Blomstense Lenke (--icon-size-inline, --motion-enter-*)
Mobilmenyen--color-bg, --font-size-fluid-h1, --font-line-height-heading, --space-fluid-xl, --motion-duration-normal
Fokus--state-focus-ring-width, --state-focus-ring-offset, --state-focus-halo-width, --color-border-focus, --color-border-focus-halo
Breddefølger rammen (--layout-max-width, --marg), så logoen står på linje med innholdet
Kode
<Header aktiv="om-meg" />

Lys modus (bunnteksten er mørk i begge)

Standard

Hover på e-posten

Fokus på e-posten

Mørk modus (bunnteksten er mørk i begge)

Standard

Hover på e-posten

Fokus på e-posten

Spesifikasjon

Brukes når
Nederst på alle sider (StorBunn i koden). Den ligger i sidelayouten, så du trenger aldri å legge den inn selv. Menypunktet «Kontakt» hopper hit.
Varianter
  • Stor (standard) – mørk flate med «Kontakt meg» og e-post, stjerna med strek, «Om meg» med en kort tekst, navnet ditt over hele bredden (Kulturista, store bokstaver) og © med året nederst. Lik i lys og mørk modus.
  • Stjernemønsteret – usynlig rutenett med formene dine bak, som kommer fram rundt musepila på PC.
  • Bare lokalt – Tokens, Stilguide og Rutenett står nederst bare mens du jobber på din egen maskin.
Tilstander
standard, hover (blomsten snurrer inn foran e-posten), fokus (grønn ring i to lag, med lys kant så den syns på det mørke)
Tilgjengelighet
TastaturLenkene nås med Tab.
SkjermleserLenkene har tekst. Stjernemønsteret er pynt og leses ikke.
SynligLik i lys og mørk modus. Stjernemønsteret kommer bare fram rundt musepila på PC.
Tokens
Flate og tekst--color-footer-bg, --color-footer-text, --color-footer-text-secondary
Luft--space-fluid-section (over), --space-fluid-xl og --space-fluid-lg (inni), --space-fluid-md og --space-fluid-lg rundt navnet
Kolonnersidens rutenett: 4 + 8 på nettbrett, 6 + 6 på PC
Tekst--font-size-body overalt, med --font-line-height-body (kontakt og om meg) og --font-line-height-compact (nederst)
Navnet--font-family-display, --font-weight-display, --font-letter-spacing-display, størrelse regnet ut fra --layout-max-width og --marg
Skillelinjese Seksjon
Stjernemønsteret--veil-pattern-opacity-footer, --veil-pattern-stroke, --veil-pattern-spot, --color-pattern
Fokus--color-border-focus og --color-border-focus-halo (kontrast 3,6:1 direkte mot det mørke, 4,9:1 mot kanten)
Kode
<StorBunn lenker={[{ tekst: 'LinkedIn', lenke: 'https://www.linkedin.com/in/…' }]} />

Mønstre

Faste måter å sette sammen komponentene på for typiske oppgaver. Hvert mønster starter med hva den besøkende vil få gjort, viser hvilke komponenter det består av og hvordan delene ligger i rutenettet, og hvordan det ser ut når det er tomt, laster, går galt og er ferdig. Mønstrene ligger i src/patterns.

Kontaktskjema

Mål
Den besøkende vil sende meg en melding og vite sikkert at den kom fram.
Komponenter
  • Skjemafelt (navn, e-post og melding)
  • Knapp (viktig: «Send melding»)
  • Statusmelding (sender, feil, og takk med «Ok!»)
Fil
src/patterns/Kontaktskjema.astro
Slik ligger delene i rutenettet
Mobil (4 kolonner)Nettbrett (8 kolonner)PC (12 kolonner)
Alt under hverandre over alle 4 kolonnene: tittel og tekst, så feltene, så knappen.Tittel og tekst over hele bredden (8 kolonner). Skjemaet under, på 6 av 8 kolonner. Navn og e-post ved siden av hverandre.Tittel og tekst i kolonne 1–5, skjemaet i kolonne 7–12. Navn og e-post ved siden av hverandre, meldingen under over hele skjemaet.

Tom

Feltene er tomme. Alle er merket «må fylles ut» med ord.

Send meg en melding

Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.

Laster

Etter at Send er trykket: feltene og knappen er låst, og en melding sier «Sender meldingen …».

Send meg en melding

Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.

Sender meldingen …

Feil

En feilmelding øverst sier hva som gikk galt, og hvert felt med feil får rød kant, ikon og en tekst som forklarer hvordan det rettes.

Send meg en melding

Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.

Skriv e-posten slik: navn@eksempel.no

Skriv en melding før du sender

Ferdig

Skjemaet byttes ut med en takk, med knappen «Ok!».

Send meg en melding

Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.

Takk for meldingen!

Den er sendt, og jeg svarer innen to dager.

Hero med overskrift og handling

Mål
Den besøkende vil forstå med en gang hva siden handler om, og vite hva hun kan gjøre videre.
Komponenter
  • Taggmerke (fagområder)
  • Knapp (viktig: hovedhandlingen)
  • Lenke (den andre handlingen)
  • Plassholder (bildet)
  • Statusmelding (når bildet laster eller ikke kom)
Fil
src/patterns/Hero.astro
Slik ligger delene i rutenettet
Mobil (4 kolonner)Nettbrett (8 kolonner)PC (12 kolonner)
Tagger, tittel, tekst og knapper under hverandre over 4 kolonner, og bildet under.Teksten over hele bredden (8 kolonner), og bildet under, også over hele bredden.Teksten i kolonne 1–7 og bildet i kolonne 8–12, ved siden av hverandre. Uten bilde får teksten kolonne 1–10.

Tom

Ingen bilde ennå: bare tekst og knapper. Heroen virker fullt ut uten bilde.

  • UX design
  • Designsystem
  • Illustrasjon
Design som er lett å bruke for alle

Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.

Laster

Bildet hentes: en svak, grå flate holder plassen, og en melding sier «Bildet lastes …».

  • UX design
  • Designsystem
  • Illustrasjon
Design som er lett å bruke for alle

Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.

Bildet lastes …

Feil

Bildet kom ikke fram: en advarsel sier at resten av siden virker, med knappen «Last på nytt». Tekst og knapper står som vanlig.

  • UX design
  • Designsystem
  • Illustrasjon
Design som er lett å bruke for alle

Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.

Bildet kom ikke fram

Resten av siden virker som vanlig.

Ferdig

Alt er på plass: tekst, knapper og bilde.

  • UX design
  • Designsystem
  • Illustrasjon
Design som er lett å bruke for alle

Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.

Liste med kort

Mål
Den besøkende vil se arbeidet mitt samlet, og velge ett prosjekt å lese mer om.
Komponenter
  • Rutenett (flytende, med kort)
  • Kort
  • Plassholder (grå kort mens listen laster)
  • Statusmelding (laster, og feil med «Prøv igjen»)
  • Mønsteret Tom tilstand (når listen er tom)
Fil
src/patterns/Kortliste.astro
Slik ligger delene i rutenettet
Mobil (4 kolonner)Nettbrett (8 kolonner)PC (12 kolonner)
Tittelen over, og kortene under hverandre: 1 kort i bredden.2 kort i bredden. Det flytende rutenettet bestemmer selv ut fra plassen.3 kort i bredden. Titler, tekster og knapper står på samme høyde på tvers av kortene.

Tom

Ingen prosjekter: mønsteret Tom tilstand forklarer hvorfor og viser veien videre.

Utvalgt arbeid
Ingen prosjekter her ennå

Jeg jobber med nye case. I mellomtiden kan du se skissene mine.

Laster

Grå kort holder plassen, og en melding sier «Henter prosjektene …».

Utvalgt arbeid

Henter prosjektene …

Feil

En feilmelding sier hva som skjedde, med knappen «Prøv igjen».

Utvalgt arbeid

Ferdig

Kortene vises i rutenettet.

Utvalgt arbeid
  • Designsystem i kode

    Ett system for farger, skrift og komponenter, bygget i kode.

  • WorkBuddy

    En app som samler vakten for butikkansatte på ett sted.

  • Turstien

    Illustrasjoner og komponenter til en app for fjellturer.

Tom tilstand

Mål
Den besøkende vil forstå hvorfor det er tomt her, og hva hun kan gjøre i stedet.
Komponenter
  • Ikon (et rolig bilde på at det er tomt)
  • Knapp (hoved: veien videre)
  • Lenke (et annet valg)
  • Statusmelding (laster, og feil med «Prøv igjen»)
  • Kort (når innholdet er kommet)
Fil
src/patterns/TomTilstand.astro
Slik ligger delene i rutenettet
Mobil (4 kolonner)Nettbrett (8 kolonner)PC (12 kolonner)
Midtstilt over alle 4 kolonnene. Ikon, tittel, tekst og knapper under hverandre.Midt på, i kolonne 2–7 (6 av 8).Midt på, i kolonne 4–9 (6 av 12).

Tom

Det finnes ingenting ennå: et ikon, en kort forklaring og en vei videre.

Ingen prosjekter her ennå

Jeg jobber med nye case. I mellomtiden kan du se skissene mine.

Laster

Vi ser etter innhold: en melding sier «Ser etter innhold …».

Ser etter innhold …

Feil

Vi fikk ikke sjekket: en feilmelding med knappen «Prøv igjen».

Ferdig

Innholdet er kommet, så den tomme meldingen er borte og innholdet vises.

Det første prosjektet

Nå er det kommet innhold, så den tomme meldingen er borte.

Retningslinjer

Reglene og prinsippene for designet, språket og hvordan systemet endres, med en kort grunn til hver. De hentes rett fra CLAUDE.md, så de er alltid de samme som Claude følger.

Husregler

  • Bruk komponentene i src/components før du lager noe nytt.

    Da ser alt likt ut, og en endring ett sted gjelder overalt.

  • Alle farger, avstander og skrifter kommer fra tokens. Tokens endres bare i src/tokens/tokens.json, aldri direkte i tokens.css.

    tokens.css lages på nytt fra tokens.json, så endringer der blir borte.

  • Alle sider bygges i sidelayouten og rutenettet, aldri med egne bredder, marger eller kolonner.

    Da starter innholdet på samme linje på alle sider og tilpasser seg alle skjermer.

  • Mangler en komponent: spør meg før du lager en ny, og legg den i src/components.

    Så systemet ikke fylles med nesten like varianter.

  • Alt skal følge WCAG 2.2 AA.

    Siden skal kunne brukes av alle, også med tastatur, skjermleser og nedsatt syn.

  • Siden følger innstillingene på maskinen: redusert bevegelse, mer kontrast og høy kontrast i Windows. Nye komponenter som bare har skygge eller glass som kant, skal få en synlig kant i høy kontrast.

    Den besøkende har allerede valgt det som passer for henne.

  • Ny komponent skal ha en del om tilgjengelighet i stilguiden: tastatur, skjermleser, kontrast og bevegelse.

    Da ser alle hvordan komponenten virker for dem som ikke bruker mus eller ser dårlig, før den tas i bruk.

Designprinsipper

  • Tydelig før smart. Den besøkende skal forstå med en gang hva ting er og hva hun kan gjøre.

    Lekne detaljer hjelper bare når det grunnleggende er klart.

  • Arbeidet får plassen. Casene og bildene står i sentrum, og designet rundt er rolig.

    Det er arbeidet de besøkende kommer for å se.

  • Rolig, med små overraskelser. Mest luft og stillhet, med små øyeblikk som blomsten og mønsteret som kommer fram.

    Overraskelser virker best når det ikke er mange av dem.

  • Mitt eget uttrykk, for alle. Formene mine, Kulturista og illustrasjonene gir personlighet, men aldri på bekostning av tilgjengelighet.

    Personlighet som ikke alle kan bruke, er ikke godt design.

Gjør og ikke gjør

Knapp

  • Gjør

    Én viktig (mørk) knapp per skjerm.

    Da ser den besøkende med en gang hva som er viktigst.

  • Gjør

    Skriv hva som skjer, for eksempel «Send melding».

    Da vet man hva knappen gjør før man trykker.

  • Ikke

    Mer enn to knapper ved siden av hverandre. Flere valg blir lenker.

    Mange like valg gjør det vanskelig å velge.

Lenke

  • Gjør

    La lenketeksten si hvor man havner.

    «Klikk her» sier ingenting, særlig ikke til en skjermleser.

  • Ikke

    Blomst på lenker i løpende tekst, bare understrek.

    Blomsten forstyrrer lesingen.

Skjemafelt

  • Gjør

    Synlig etikett over hvert felt, og «må fylles ut» med ord.

    Plassholdertekst forsvinner når man begynner å skrive.

  • Gjør

    Vis feil under feltet med NB-ikonet og en tekst som sier hvordan det rettes.

    Farge alene ser ikke alle.

Statusmelding, dialog og varsel

  • Gjør

    Bruk en statusmelding der det skjedde, for korte beskjeder som «Takk for meldingen!».

    Den avbryter ikke, og står der man allerede ser.

  • Gjør

    Gi feil en knapp som «Prøv igjen».

    Den besøkende må vite både hva som skjedde og hva hun kan gjøre.

  • Ikke

    Dialogboks (et vindu over siden), bortsett fra når noe må velges før man går videre, som mobilmenyen.

    Dialoger avbryter og er vanskelige med tastatur og skjermleser.

  • Ikke

    Meldinger som forsvinner av seg selv.

    Noen leser saktere og rekker ikke å se dem.

Kort og liste med kort

  • Gjør

    Legg kortene i et rutenett, med bilde, tittel, kort tekst og én knapp.

    Like kort gjør det lett å sammenligne.

  • Ikke

    Mer enn én handling per kort.

    Da blir det uklart hva man skal trykke på.

Bevegelse

  • Gjør

    La all bevegelse stå stille når «redusert bevegelse» er slått på.

    Bevegelse kan gi noen svimmelhet og kvalme.

  • Ikke

    Bevegelse som fortsetter mens man leser. Tekst kan gli inn én gang, så står den stille.

    Uro tar oppmerksomheten fra innholdet.

Tom tilstand og 404

  • Gjør

    Forklar hvorfor det er tomt, og gi en vei videre.

    En side uten vei videre føles som en blindvei.

Innhold og språk

  • Skriv i jeg-form. «Jeg designet …», ikke «Marie designet …» eller «vi».

    Det er min portefølje, og jeg snakker direkte til den som leser.

  • Kort og konkret. Én tanke per setning, og det viktigste først.

    De fleste skumleser og stopper etter første linje.

  • Vanlige ord. Forklar fagord første gang, eller bruk et enklere ord.

    Ikke alle som leser er designere.

  • Knapper sier hva som skjer. Bruk et verb: «Send melding», «Se casen», «Prøv igjen».

    Da vet man hva som skjer før man trykker.

  • Feilmeldinger sier hvordan det rettes. «Skriv en hel e-postadresse, for eksempel navn@firma.no», ikke «Ugyldig verdi».

    Den besøkende skal kunne fikse det selv.

  • Alt-tekst sier hva bildet viser og hvorfor det er der. Pynt får tom alt-tekst (alt="").

    Skjermlesere leser alt-teksten høyt, og pynt er bare støy.

  • Norsk først, engelsk ved siden av. All tekst finnes på norsk, og engelsk ligger i en.json. Fagnavn som «UX» og «prototype» skrives som i bransjen.

    Siden skal kunne leses av norske og internasjonale arbeidsgivere.

  • Dato og tall på norsk måte. «27. oktober 2026», «1 240 px», «3,5».

    Da ser det riktig og ryddig ut for norske lesere.

Bærekraft

  • Grønt som standard. Systemet følger Web Sustainability Guidelines (WSG), som gjør for miljø det WCAG gjør for tilgjengelighet.

    Bærekraft er lettest når den er bygget inn fra starten, ikke lagt til etterpå.

  • Bruk det som finnes. Bygg med komponentene og tokens før du lager noe nytt.

    Gjenbruk gir mindre kode å laste ned og mindre å vedlikeholde.

  • Fonter på egen side. Bare vektene som brukes, og bare tegnene norsk trenger.

    Færre filer og ingen forespørsler til Google.

  • Bilder gjennom Bilde-komponenten. Den lager AVIF og WebP i riktig størrelse og laster bildet først når det vises.

    Bilder er det tyngste på de fleste sider.

  • Video bare når bevegelsen er poenget. Komprimer videoen, og bruk et stillbilde når bevegelsen ikke forklarer noe.

    Video er mye data, særlig på mobil.

  • Effekter med måte. Glass, glød og animasjon brukes bare der de viser noe. Animasjon og fargesløret slås av når brukeren har valgt redusert bevegelse på maskinen eller mobilen. Velger man Effekter: Av under Visning i toppen, slås også glasset av.

    Effekter bruker strøm, særlig på eldre mobiler.

  • Enkle veier. Tydelig meny og tydelig tekst, så folk finner fram uten å klikke rundt.

    Færre sidevisninger gir mindre data.

  • Rydd. Fjern komponenter, bilder og kode som ikke brukes.

    Det som ikke finnes, trenger ikke lastes eller vedlikeholdes.

Styring

  • Tokens endres bare i tokens.json. Kjør npm run tokens etterpå, og sjekk kontrasten i lys og mørk modus.

    Da følger hele siden med, og ingen farge blir uleselig.

  • Ny komponent: spør Marie først, bygg den av eksisterende tokens, legg den i src/components og vis den i stilguiden med alle tilstander og spesifikasjon, også tilgjengelighet: tastatur, skjermleser, kontrast og bevegelse.

    Så systemet ikke fylles med nesten like varianter.

  • Endring som kan ødelegge noe (fjerne en variant, gi en token nytt navn): sjekk alle sider som bruker den før endringen lagres.

    Én endring i systemet gjelder overalt.

  • Ny versjon: legg en linje øverst i src/data/endringslogg.json og samme nummer i package.json. Første tall når noe slutter å virke som før, andre tall for noe nytt, tredje tall for rettelser.

    Da kan alle se hva som er endret og når.

  • Etter endringer i tokens, komponenter eller regler: kjør npm run skill, så Claude får den nye versjonen av designet.

    Ellers bygger Claude med gammelt design utenfor prosjektet.

  • Marie godkjenner. Claude foreslår og bygger, men Marie bestemmer hva som blir en del av systemet.

    Designsystemet er mitt, og det skal se ut som meg.

Endringslogg

Hva som er nytt i hver versjon av designsystemet. Nummeret følger vanlig praksis: første tall når noe slutter å virke som før, andre tall for noe nytt, tredje tall for rettelser.

  1. Versjon 1.13.0

    Ny
    • Blogg: ny forside på /blogg med alle innleggene som kort, nyeste først, og en tom tilstand før det finnes innlegg.
    • Ny mal for blogginnlegg (InnleggMal): tittel, ingress, dato, hovedbilde og teksten i en rolig lesespalte.
    • Innleggene skrives som tekstfiler i src/content/blogg. Utkast vises bare på din egen maskin.
    • Kort: kan nå vise et ekte bilde (src og alt) og en dato. bareNorsk brukes for tekst som bare finnes på norsk.
    • Menyen har fått punktet Blogg.
    • Engelsk: innleggene finnes bare på norsk og står ikke i den engelske ordboka. Velger man English, vises en linje om det, og datoene skrives på engelsk.
  2. Versjon 1.12.1

    Rettet
    • Avkrysning: teksten strekes ikke lenger over når den er krysset av. Den blir grå, som i kurssystemet, og er lettere å lese.
  3. Versjon 1.12.0

    Ny
    • Mer kontrast: når maskinen er satt til økt kontrast, blir svak tekst like mørk som vanlig tekst, svake linjer blir tydelige, og glass og slør blir tette flater.
    • Høy kontrast i Windows: kort og case-rader får en synlig kant, fargesløret skjules, og fokusringen bruker systemets farge.
  4. Versjon 1.11.1

    Forbedret
    • Tilgjengelighet i stilguiden: kontrast i både lys og mørk modus for knapp, lenke, skjemafelt, video og avkrysning, og fokusringen målt mot bakgrunnen.
    • Nye rader: «Husk» for bilde og animasjon (alt-tekst), og «Skjermleser» for statusmelding.
    • Ny husregel: ny komponent skal ha en del om tilgjengelighet i stilguiden.
    • All tekst om tilgjengelighet står også på engelsk.
  5. Versjon 1.11.0

    Ny
    • Hver komponent i stilguiden har fått en del om tilgjengelighet: hvordan den brukes med tastatur og skjermleser, kontrast og fokus, og hva som skjer med bevegelse.
    • Kontrasttallene er regnet ut fra tokens i både lys og mørk modus.
  6. Versjon 1.10.1

    Rettet
    • Effekter: Av i lys modus: kortene og case-radene får en svak grå linje rundt, som i mørk modus.
  7. Versjon 1.10.0

    Endret
    • Under Visning heter valget nå Effekter i stedet for Bevegelse.
    • Effekter: Av slår også av glasset. Glasset blir en tett flate, og fargesløret og kornet forsvinner.
  8. Versjon 1.9.1

    Rettet
    • Visning-knappen i toppen bruker nå tre prikker (Tabler: dots) i stedet for glidebrytere.
  9. Versjon 1.9.0

    Ny
    • Header: sol og måne er byttet ut med Visning (glidebrytere). Der velger man Utseende (Lys, Mørk eller Som maskinen) og Bevegelse (Som maskinen eller Av).
    • Bevegelse: Av stopper all animasjon, fargesløret og animasjonene i casene på alle sider. Da kan alt som beveger seg av seg selv stoppes på siden (WCAG 2.2.2).
    • Språkknappen NO/EN står fortsatt synlig i toppen.
  10. Versjon 1.8.0

    Ny
    • Ny retningslinje «Bærekraft»: hvordan systemet følger Web Sustainability Guidelines, med fonter, bilder, video, effekter og opprydding.
  11. Versjon 1.7.0

    Endret
    • Hanken Grotesk ligger nå på nettsiden selv og hentes ikke lenger fra Google Fonts. Det gir færre forespørsler til andre servere og ingen deling av besøk med Google.
    • Bare vektene som brukes, lastes: 400, 500 og 700, og bare tegnene for latin og latin-ext.
    • Komponentene BakgrunnsGlod og Fargekule er fjernet, fordi ingen side brukte dem.
  12. Versjon 1.6.0

    Ny
    • Stilguiden viser avstandene som vokser med skjermen, med verdi på mobil og PC og hva hver brukes til.
    • Ny forklaring på når den faste skalaen brukes, og når avstandene som vokser brukes.
  13. Versjon 1.5.0

    Ny
    • Utvid har fått varianten «pil»: en smal rad med tittel og pil, til ekstra tekst inni tekstboksen i casene.
    • Utvid vises i stilguiden med alle varianter og tilstander.
  14. Versjon 1.4.0

    Ny
    • Knapp har fått tilstanden «laster», med blomsten som snur seg.
    • Ny retningslinje «Innhold og språk»: tone, knappetekst, feilmeldinger, alt-tekst, dato og tall.
    • Ny retningslinje «Styring»: hvordan tokens, komponenter og versjoner endres og godkjennes.
  15. Versjon 1.3.0

    Ny
    • Anatomi: nummererte deler på Knapp, Skjemafelt, Avkrysning, Statusmelding, Kort og Bilde.
    • Kode å kopiere under hver komponent, med kopier-knapp.
    • Versjonsnummer og endringslogg i stilguiden.
  16. Versjon 1.2.0

    Endret
    • Fargeslør: ny variant «levende» som følger musa, med egen versjon for mørk modus.
    • Stjernemønsteret er tatt ut av forsiden, casene og bunnteksten.
    • Token --color-veil-fersken får blå verdi i mørk modus.
  17. Versjon 1.1.0

    Forbedret
    • Automatisk tilgjengelighetssjekk (alt-tekst og overskriftsnivåer) etter hver bygging.
    • Karusell i Material 3-stil med tastatur, «Vis alle» og Forrige/Neste.
    • Ny komponent Utvid. Klikkflater på 44 px i stilguidens meny.
    • Nye tokens --motion-duration-reveal og --motion-easing-reveal.
  18. Versjon 1.0.0

    Lansert
    • Designsystemet publiseres på marielyshol.no, automatisk fra GitHub.
    • Nye komponenter: Bilde, Video, Prototype, Rulleskisse, Animasjon og Avkrysning.
    • Retningslinjer (husregler, designprinsipper, gjør og ikke gjør) hentes fra CLAUDE.md.
    • Designet pakket som skillen portfolio-skill.
    • Hovedfargen --color-primary er blå. Nye tokens --space-divider og --space-caption.
  19. Versjon 0.2.0

    Ny
    • Komponenter: Knapp, Lenke, Skjemafelt, Kort, Case-rad, Seksjon, Header, Footer og Statusmelding.
    • Fokusring i to lag, så den syns på alle bakgrunner.
    • Mønstre: kontaktskjema, hero, liste med kort og tom tilstand.
    • Levende stilguide på /stilguide.
  20. Versjon 0.1.0

    Første versjon
    • Tokens i DTCG-format med lys og mørk modus og kontrastsjekk.
    • Sidelayout og flytende rutenett med 4, 8 og 12 kolonner.