Kort tittel
Kort tekst.
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
Designverdiene (tokens) som alt annet henter fra: farger, typografi, avstander, former, bevegelse og rutenettet.
Vanlig tekst ligger her. Mindre viktig tekst er litt svakere. Her er en lenke.
--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#FFFFFFB3Vanlig tekst ligger her. Mindre viktig tekst er litt svakere. Her er en lenke.
--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| Token | Lys | Mørk | Brukes til |
|---|---|---|---|
--color-bg | #FCFBF8 | #1F1C18 | Sidebakgrunn |
--color-bg-subtle | #F7F4EC | #171512 | Litt mørkere bakgrunn for seksjoner |
--color-surface | #FFFFFF | #26221D | Kort og flater som ligger på bakgrunnen |
--color-surface-raised | #FFFFFF | #2D2A26 | Menyer og dialoger som ligger øverst |
--color-text-primary | #26221D | #E8E3DA | Vanlig tekst og overskrifter |
--color-text-secondary | #514B43 | #A9A092 | Mindre viktig tekst |
--color-text-disabled | #A9A092 | #514B43 | Tekst på ting som ikke kan brukes |
--color-text-link | #26221D | #E8E3DA | Lenker: samme farge som vanlig tekst, med understrek |
--color-text-on-primary | #FFFFFF | #1F1C18 | Tekst på knapper i hovedfargen |
--color-text-on-veil | #1F1C18 | #FFFFFF | Tekst oppå fargesløret: mørk i lys modus (sløret er lyst), hvit i mørk modus |
--color-text-on-status | #514B43 | #D3C9B6 | Teksten 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 | #92B3E6 | Hovedfargen: knapper og viktige handlinger |
--color-primary-hover | #962816 | #F2BFB4 | Hovedfargen når musa er over |
--color-primary-pressed | #731F11 | #F7DDD6 | Hovedfargen når den trykkes |
--color-primary-subtle | #F7DDD6 | #2E1410 | Svak bakgrunn i hovedfargen, for eksempel valgt rad |
--color-accent | #E0432C | #E56A52 | Merkevarefargen. Bare til store flater og illustrasjoner, ikke tekst |
--color-icon | #26221D | #E8E3DA | Vanlige ikoner |
--color-icon-secondary | #514B43 | #A9A092 | Mindre viktige ikoner |
--color-border-subtle | #E9E0CD | #34302B | Pyntelinjer og skillelinjer |
--color-border-strong | #7D766C | #7D766C | Kanter på skjemafelt |
--color-border-focus | #2E7D4F | #84C9A0 | Fokusringen som viser hvor tastaturet er (grønn) |
--color-border-focus-halo | #FCFBF8 | #171512 | Den lyse (i mørk modus mørke) kanten rundt fokusringen, så ringen syns på alle bakgrunner, også mørke og fargede |
--color-border | #A9A092 | #514B43 | Grå kant på tagger |
--color-success-text | #23633E | #84C9A0 | Tekst for suksess |
--color-success-bg | #EEF7F1 | #10241A | Bakgrunn for suksessmeldinger |
--color-error-text | #8E1736 | #EE8FA6 | Tekst for feil |
--color-error-bg | #FCEFF2 | #2C0E14 | Bakgrunn for feilmeldinger |
--color-warning-text | #7A4F00 | #EDC062 | Tekst for advarsel |
--color-warning-bg | #FDF5E4 | #261A05 | Bakgrunn for advarsler |
--color-info-text | #244A87 | #92B3E6 | Tekst for informasjon |
--color-info-bg | #EEF3FB | #0F1B2E | Bakgrunn for informasjon |
--color-button-outline-border | #26221D | #E8E3DA | Kanten på hovedknappen |
--color-button-outline-text | #26221D | #E8E3DA | Teksten på hovedknappen |
--color-button-strong-bg | #26221D | #E8E3DA | Fyllet på den viktige (svarte) knappen |
--color-button-strong-hover | #3D3832 | #D3C9B6 | Den viktige knappen når musa er over |
--color-button-strong-text | #F7F4EC | #1F1C18 | Teksten på den viktige knappen |
--color-button-soft-bg | #F1EBDE | #2D2A26 | Grå knapp som åpner tekst (som hos Pentagram) |
--color-button-soft-hover | #E9E0CD | #34302B | Grå knapp når musa er over |
--color-button-soft-text | #26221D | #E8E3DA | Teksten på den grå knappen |
--color-grid-overlay-column | color-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-line | color-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 | #2B3FD6 | Det store blå strøket øverst til høyre |
--color-veil-bla-myk | #4256C8 | #4256C8 | Det loddrette blå strøket til venstre |
--color-veil-fiolett | #8A6FD1 | #8A6FD1 | |
--color-veil-fersken | #F3B08A | #4A74C9 | Det 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 | #FFFFFF | Stjernemønsteret i bakgrunnen på forsiden |
--color-pattern-faint | #F1EBDE | #FFFFFF | Det 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 | #171512 | Bakgrunn i bunnteksten |
--color-footer-text | #F7F4EC | #F7F4EC | Tekst i bunnteksten |
--color-footer-text-secondary | #A9A092 | #A9A092 | Mindre viktig tekst i bunnteksten |
--color-footer-border | #34302B | #34302B | Linjer i bunnteksten |
--color-status-info-flate | #FFFFFF00 | #92B3E6 | Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus. |
--color-status-info-ikon | #244A87 | #172B4A | Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus. |
--color-status-suksess-flate | #FFFFFF00 | #84C9A0 | Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus. |
--color-status-suksess-ikon | #23633E | #163A26 | Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus. |
--color-status-advarsel-flate | #FFFFFF00 | #EDC062 | Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus. |
--color-status-advarsel-ikon | #7A4F00 | #3D2A05 | Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus. |
--color-status-feil-flate | #FFFFFF00 | #EE8FA6 | Flaten bak meldingen. Gjennomsiktig i lys modus, så glasset synes. Lys statusfarge i mørk modus. |
--color-status-feil-ikon | #8E1736 | #4A1220 | Ikonet i meldingen. Mørkere utgave av statusfargen i mørk modus. |
--color-status-tekst | #26221D | #1F1C18 | Tittelen i meldingen |
--color-status-tekst-svak | #514B43 | #2D2A26 | Meldingsteksten under tittelen |
--color-status-kant | #FFFFFFB3 | #1F1C181F | Den tynne kanten rundt meldingen |
--color-status-knapp | #FFFFFFB3 | #FFFFFF73 | Knappen i meldingen («Ok!», «Prøv igjen») |
--color-orb-coreFargekula på forsiden: kjernen--color-orb-midFargekula: midten--color-orb-edgeFargekula: kanten--color-orb-extraFargekula: ekstra flekkRåverdiene. Komponentene bruker ikke disse direkte, men de semantiske fargene over.
0#FFFDF825#FCFBF850#FBF9F4100#F7F4EC150#F1EBDE175#E8E3DA200#E9E0CD300#D3C9B6400#A9A092500#7D766C600#514B43700#3D3832750#34302B800#2D2A26850#26221D900#1F1C18950#17151250#FDF1EE100#F7DDD6200#F2BFB4300#E99A8B400#E56A52500#E0432C600#B8331E700#962816800#731F11900#4A160D950#2E141050#EEF7F1100#D3ECDC300#84C9A0600#2E7D4F700#23633E900#163A26950#10241A50#FCEFF2100#F8D6DE300#EE8FA6600#B01E44700#8E1736900#4A1220950#2C0E1450#FDF5E4100#F9E6BC300#EDC062600#9A6400700#7A4F00900#3D2A05950#261A0550#EEF3FB100#D6E2F5300#92B3E6600#2F5DA8700#244A87900#172B4A950#0F1B2Eoransje#FF7A00gul#FFC300fiolett#8E6BFFrosa#FF4F8Bturkis#2FB8A6bla#4A74C9gull#E3A86Ckarmin#C9294Flilla#A77A92ultramarin#2B3FD6indigo#2E2F8Ffiolett-dyp#5B3FB8fersken#F3B08Arosa-lys#EBA0B0krem#F3E9CFlavendel#CDB9E3bla-myk#4256C8fiolett-lys#8A6FD1--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 · 12pxDesignsystem i kode
--font-size-small · 14pxDesignsystem i kode
--font-size-body · 16pxDesignsystem i kode
--font-size-lead · 18pxDesignsystem i kode
--font-size-h4 · 22pxDesignsystem i kode
--font-size-h3 · 28pxDesignsystem i kode
--font-size-h2 · 36pxDesignsystem i kode
--font-size-h1 · 48pxDesignsystem i kode
--font-size-display · 64pxDesignsystem i kode
--font-line-height-heading 1.05--font-line-height-snug 1.2--font-line-height-compact 1.25--font-line-height-body 1.45--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-caption20pxDen faste skalaen over brukes inni små ting, som knapper, felt og merkelapper. Der skal luften være lik på alle skjermer.
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å.
| Token | Mobil (360 px) | PC (1 240 px) | Brukes til | Nå |
|---|---|---|---|---|
--space-fluid-sm | 12px | 16px | Små mellomrom | |
--space-fluid-md | 16px | 24px | Mellomrom inne i kort | |
--space-fluid-lg | 24px | 32px | Mellom elementer | |
--space-fluid-xl | 32px | 48px | Mellom grupper | |
--space-fluid-2xl | 48px | 96px | Mellom seksjoner | |
--space-fluid-section | 64px | 128px | Store pauser, for eksempel over bunnteksten |
--radius-none0px--radius-sm4px--radius-md10px--radius-lg16px--radius-xl24px--radius-full9999px--border-width-thin1px--border-width-medium2px--border-width-thick3pxKantfarger: --color-border-subtle (pynt), --color-border-strong (skjemafelt), --color-border-focus (fokusring).
--shadow-smKort--shadow-mdMenyer--shadow-lgDialoger--shadow-pressedDen skarpe skyggen under en knapp som trykkes (3D-effekt)--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-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)--breakpoint-mobile fra 0px--breakpoint-tablet fra 768px--breakpoint-desktop fra 1200pxBibliotek: 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--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 trykkesHold musa over boksene for å se hvor lang tid hver varighet tar.
instant0msfast120msnormal200msslow320msslower600msletters1100msreveal800msfade700msimage1200msimage-scale1400msdrift-110000msdrift-212000msdrift-314000msswing3200msspin1400ms--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--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 96px4 kolonner på mobil, 8 på nettbrett og 12 på PC. Boksene under dekker ulikt antall kolonner.
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.
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.
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.
| Tastatur | Tab flytter hit. Enter og mellomrom trykker. Er knappen en lenke, brukes Enter. |
|---|---|
| Skjermleser | Leser teksten på knappen. Ikonet leses ikke. Laster knappen, får skjermleseren vite at den er opptatt (aria-busy). |
| Synlig | Minst 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. |
| Bevegelse | Blomsten står stille med redusert bevegelse eller Effekter: Av. |
| 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 |
<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 />| Variant | Standard | Hover | Fokus |
|---|---|---|---|
| Tekst (standard) | Se alle caser | Se alle caser | Se alle caser |
| Dempet | Se alle caser | Se alle caser | Se alle caser |
| Ekstern | LinkedIn (å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. | ||
| Variant | Standard | Hover | Fokus |
|---|---|---|---|
| Tekst (standard) | Se alle caser | Se alle caser | Se alle caser |
| Dempet | Se alle caser | Se alle caser | Se alle caser |
| Ekstern | LinkedIn (å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. | ||
| Tastatur | Tab flytter hit, Enter åpner. |
|---|---|
| Skjermleser | Leser lenketeksten. Lenker til andre nettsteder får den skjulte teksten «åpner i ny fane». |
| Synlig | Tekst 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. |
| 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 |
| Tekst | arver størrelse og font fra teksten rundt |
<Lenke tekst="Se alle caser" lenke="/#arbeid" />
<Lenke tekst="LinkedIn" lenke="https://www.linkedin.com/in/…" ekstern />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.
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.
Skriv en hel e-postadresse.
| Tastatur | Tab flytter inn i feltet. |
|---|---|
| Skjermleser | Etiketten 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. |
| Synlig | Etiketten 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. |
| 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 |
| Bredde | høyst --layout-measure |
<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." />Standard
Hover
Fokus
Avkrysset
Deaktivert
Standard
Hover
Fokus
Avkrysset
Deaktivert
| Tastatur | Tab flytter hit, mellomrom krysser av og fjerner krysset. |
|---|---|
| Skjermleser | En ekte avkrysningsboks. Teksten er etiketten, og hakemerket leses ikke. |
| Synlig | Hele 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. |
| Bevegelse | Ingen overgang med redusert bevegelse eller Effekter: Av. |
| 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 |
<Avkrysning tekst="Send meg en kopi" navn="kopi" />Suksess
Takk for meldingen!
Den er sendt, og jeg svarer innen to dager.
Feil
Meldingen ble ikke sendt
Rett opp feltene som er merket, og prøv igjen.
Advarsel
Bildet kom ikke fram
Resten av siden virker som vanlig.
Info
Godt å vite
Jeg svarer vanligvis innen to dager.
Laster
Sender meldingen …
Suksess
Takk for meldingen!
Den er sendt, og jeg svarer innen to dager.
Feil
Meldingen ble ikke sendt
Rett opp feltene som er merket, og prøv igjen.
Advarsel
Bildet kom ikke fram
Resten av siden virker som vanlig.
Info
Godt å vite
Jeg svarer vanligvis innen to dager.
Laster
Sender meldingen …
Meldingen ble ikke sendt
Rett opp feltene og prøv igjen.
| Skjermleser | Feil 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. |
|---|---|
| Skjermleser | Feil 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). |
| Synlig | Hver 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. |
| Bevegelse | Blomsten står stille med redusert bevegelse eller Effekter: Av. Glasset blir en tett flate med Effekter: Av. |
| 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) |
| Knapp | Knapp (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 |
<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>Med bildetekst

På flate, med tittel

Med bildetekst

På flate, med tittel


| Skjermleser | Leser alt-teksten. Bilder med tom alt-tekst er pynt og hoppes over. Bildeteksten står i figcaption. |
|---|---|
| Synlig | Lastes i riktig størrelse for skjermen, så det er skarpt uten å være tungt. |
| Husk | Skriv alt-tekst som sier hva bildet viser. Bruk tom alt-tekst bare når bildet er ren pynt. |
| 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 |
<Bilde src={bilde} alt="Kyllingen vokser opp."
tittel="Finn parkering" tekst="Ledige plasser i nærheten." flate />| Tastatur | Nettleserens egne knapper for avspilling. Rammen får grønn fokusring når du går inn med Tab. |
|---|---|
| Skjermleser | Videoen har et navn (tittel). |
| Synlig | Rammen får grønn fokusring med 4,9:1 i lys og 8,8:1 i mørk modus. |
| Bevegelse | Egen video starter ikke av seg selv. |
| Husk | Har videoen tale, trenger den teksting. |
| Flate og hjørner | --color-bg-subtle, --radius-md |
|---|---|
| Tekst under | --font-size-small, --color-text-secondary |
<Video youtube="DC1nPAtHhqk" tittel="Reklamefilmen Gårdsklekket"
tekst="Starter ikke av seg selv." />Prototype
Prototype
| Tastatur | Tab går inn i prototypen, og rammen får grønn fokusring. Under står en lenke som åpner prototypen i en ny fane. |
|---|---|
| Skjermleser | Rammen 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. |
| Overskrift | --font-family-display (kursiv), --font-size-fluid-h2 |
|---|---|
| Luft over og under | --space-fluid-2xl |
| «Prøv!»-merket | Form 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) |
<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." />

| Tastatur | Tab flytter til skissen. Piltastene ruller i den. |
|---|---|
| Skjermleser | Området har et navn som sier hva skissen viser og hvordan man ruller. Bildene inni er pynt og leses ikke. |
| 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 |
<Rulleskisse retning="sideveis" innhold={landskap} bredde={1.5}
alt="Illustrert kystlandskap med hus, fyr og båter" tittel="Sideveis" />| Tastatur | Pause-knappen under stopper og starter animasjonen. |
|---|---|
| Skjermleser | Leses som ett bilde med alt-tekst. Selve animasjonen leses ikke. |
| Bevegelse | Alltid en pauseknapp (WCAG 2.2.2). Med redusert bevegelse står den stille. Med Effekter: Av starter den på pause. |
| Husk | Skriv alt-tekst som sier hva som skjer i animasjonen. Den er påkrevd. |
| Pauseknapp | Knapp graa, ikonene player-pause og player-play (--icon-size-sm) |
|---|---|
| Tekst under | --font-size-small, --color-text-primary (tittel), --color-text-secondary, --space-sm |
<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." />





| Tastatur | Piltastene og Tab går fra bilde til bilde. Knappene Forrige og Neste virker også. |
|---|---|
| Skjermleser | Leses som en karusell, og hvert bilde som «2 av 6: tittel». Knappene har navn. |
| Bevegelse | Starter aldri av seg selv. Glir ikke med redusert bevegelse eller Effekter: Av. |
| 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 |
<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>Pil – lukket og åpen
Tekst som vises når raden åpnes.
Denne raden er åpen fra start.
Pil – lukket og åpen
Tekst som vises når raden åpnes.
Denne raden er åpen fra start.
| Tastatur | Tab flytter hit. Enter og mellomrom åpner og lukker. |
|---|---|
| Skjermleser | Sier om den er åpen eller lukket, fordi den bygger på details og summary i nettleseren. Ikonet leses ikke. |
| Bevegelse | Glir ikke opp og ned med redusert bevegelse eller Effekter: Av. |
| 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 |
| Pil | Ikon chevron-down (--icon-size-md), --motion-duration-normal |
| Hover | --state-hover-overlay |
<Utvid tittel="Brukertesting" variant="pil">
<p>Tekst som vises når raden åpnes.</p>
</Utvid>Kort i glass (standard) – standard, hover og fokus (på knappen)
Kort med tett flate (glass=false)
Ett system for tre verktøy.
Vakten samlet på én app.
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)
Kort i glass (standard) – standard, hover og fokus (på knappen)
Kort med tett flate (glass=false)
Ett system for tre verktøy.
Vakten samlet på én app.
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)
Vakten samlet på én app.
| Tastatur | Bare knappen i kortet tas med Tab, ikke kortet selv. |
|---|---|
| Skjermleser | Tittelen 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. |
| Synlig | Tekst 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. |
| 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 knapp | se 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) |
<Kort tittel="WorkBuddy" tekst="Vakten samlet på én app."
lenke="/case/workbuddy" knappetekst="Se casen" />Med skillelinje
Utvalgt arbeid
Her kommer innholdet, for eksempel casene.
Standard
Skissebok
Innhold
Tett, og undernivå (h3)
Om meg
Innhold
Med skillelinje
Utvalgt arbeid
Her kommer innholdet, for eksempel casene.
Standard
Skissebok
Innhold
Tett, og undernivå (h3)
Om meg
Innhold
| Skjermleser | Seksjonen er et område med navn fra tittelen, så den kan finnes i listen over områder. Overskriftsnivået kan endres (niva). |
|---|
| 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 |
| Bredde | følger rammen og rutenettet (--layout-max-width, --marg) |
<Seksjon id="arbeid" etikett="Utvalgt arbeid" lett="UX- &" tung="produkt design" skille>
…innholdet…
</Seksjon>| Tastatur | Alt nås med Tab. Esc lukker språkvalget, Visning og mobilmenyen, og tastaturet går tilbake til knappen. |
|---|---|
| Skjermleser | Hovedmenyen 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. |
| Synlig | Menytekst 8,3:1 i lys og 6,6:1 i mørk modus. |
| Brukervalg | Visning lar den besøkende velge lys eller mørk side, og slå av effekter. |
| 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 |
| Blomsten | se 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 |
| Bredde | følger rammen (--layout-max-width, --marg), så logoen står på linje med innholdet |
<Header aktiv="om-meg" />Standard
Hover på e-posten
Fokus på e-posten
Standard
Hover på e-posten
Fokus på e-posten
| Tastatur | Lenkene nås med Tab. |
|---|---|
| Skjermleser | Lenkene har tekst. Stjernemønsteret er pynt og leses ikke. |
| Synlig | Lik i lys og mørk modus. Stjernemønsteret kommer bare fram rundt musepila på PC. |
| 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 |
| Kolonner | sidens 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 |
| Skillelinje | se 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) |
<StorBunn lenker={[{ tekst: 'LinkedIn', lenke: 'https://www.linkedin.com/in/…' }]} />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.
src/patterns/Kontaktskjema.astro| 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. |
Feltene er tomme. Alle er merket «må fylles ut» med ord.
Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.
Etter at Send er trykket: feltene og knappen er låst, og en melding sier «Sender meldingen …».
Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.
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.
Lurer du på noe, eller vil du jobbe sammen? Skriv noen ord, så svarer jeg innen to dager.
Skjemaet byttes ut med en takk, med knappen «Ok!».
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.
src/patterns/Hero.astro| 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. |
Ingen bilde ennå: bare tekst og knapper. Heroen virker fullt ut uten bilde.
Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.
Bildet hentes: en svak, grå flate holder plassen, og en melding sier «Bildet lastes …».
Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.
Bildet lastes …
Bildet kom ikke fram: en advarsel sier at resten av siden virker, med knappen «Last på nytt». Tekst og knapper står som vanlig.
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.
Alt er på plass: tekst, knapper og bilde.
Jeg lager apper, nettsider og designsystemer i kode, fra første skisse til ferdig produkt.
src/patterns/Kortliste.astro| 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. |
Ingen prosjekter: mønsteret Tom tilstand forklarer hvorfor og viser veien videre.
Jeg jobber med nye case. I mellomtiden kan du se skissene mine.
Grå kort holder plassen, og en melding sier «Henter prosjektene …».
Henter prosjektene …
En feilmelding sier hva som skjedde, med knappen «Prøv igjen».
Prosjektene kunne ikke hentes
Sjekk at du er på nett, og prøv igjen.
Kortene vises i rutenettet.
src/patterns/TomTilstand.astro| 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). |
Det finnes ingenting ennå: et ikon, en kort forklaring og en vei videre.
Jeg jobber med nye case. I mellomtiden kan du se skissene mine.
Vi ser etter innhold: en melding sier «Ser etter innhold …».
Ser etter innhold …
Vi fikk ikke sjekket: en feilmelding med knappen «Prøv igjen».
Vi fikk ikke hentet innholdet
Sjekk at du er på nett, og prøv igjen.
Innholdet er kommet, så den tomme meldingen er borte og innholdet vises.
Nå er det kommet innhold, så den tomme meldingen er borte.
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.
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.
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.
Én viktig (mørk) knapp per skjerm.
Da ser den besøkende med en gang hva som er viktigst.
Skriv hva som skjer, for eksempel «Send melding».
Da vet man hva knappen gjør før man trykker.
Mer enn to knapper ved siden av hverandre. Flere valg blir lenker.
Mange like valg gjør det vanskelig å velge.
La lenketeksten si hvor man havner.
«Klikk her» sier ingenting, særlig ikke til en skjermleser.
Blomst på lenker i løpende tekst, bare understrek.
Blomsten forstyrrer lesingen.
Synlig etikett over hvert felt, og «må fylles ut» med ord.
Plassholdertekst forsvinner når man begynner å skrive.
Vis feil under feltet med NB-ikonet og en tekst som sier hvordan det rettes.
Farge alene ser ikke alle.
Bruk en statusmelding der det skjedde, for korte beskjeder som «Takk for meldingen!».
Den avbryter ikke, og står der man allerede ser.
Gi feil en knapp som «Prøv igjen».
Den besøkende må vite både hva som skjedde og hva hun kan gjøre.
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.
Meldinger som forsvinner av seg selv.
Noen leser saktere og rekker ikke å se dem.
Legg kortene i et rutenett, med bilde, tittel, kort tekst og én knapp.
Like kort gjør det lett å sammenligne.
Mer enn én handling per kort.
Da blir det uklart hva man skal trykke på.
La all bevegelse stå stille når «redusert bevegelse» er slått på.
Bevegelse kan gi noen svimmelhet og kvalme.
Bevegelse som fortsetter mens man leser. Tekst kan gli inn én gang, så står den stille.
Uro tar oppmerksomheten fra innholdet.
Forklar hvorfor det er tomt, og gi en vei videre.
En side uten vei videre føles som en blindvei.
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.
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.
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.
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.