Komponenter
Card
Card fremhever informasjon eller oppgaver som hører sammen. Komponenten finnes i to varianter og kan inneholde tekst, bilde, tekstfelt, knapper og lenker.
Bruk
HTML
Unable to parse html
const Preview = () => { return ( <Card style={{ maxWidth: '320px' }} data-color='neutral'> <Heading>Lykkeland Barneskole</Heading> <Paragraph> Lykkeland Barneskole er ein trygg og inkluderande nærskule der leik, læring og nysgjerrigheit går hand i hand. </Paragraph> <Paragraph data-size='sm'>Solslett kommune</Paragraph> </Card> ); }; render(<Preview />)
Card har to klassenavn du kan bruke.
ds-card: Hovedklassen som omfavner hele kortet.ds-card__block: Klassen som brukes for hver seksjon i kortet.
CSS variabler og data-attributter
Alle css variabler er knyttet til hovedklassen ds-card.
| Navn | Verdi |
|---|---|
| --dsc-card-background--active | var(--ds-color-surface-active) |
| --dsc-card-background--hover | var(--ds-color-surface-hover) |
| --dsc-card-background | var(--ds-color-surface-default) |
| --dsc-card-border-width | var(--ds-border-width-default) |
| --dsc-card-border-style | solid |
| --dsc-card-border-color | var(--ds-color-border-subtle) |
| --dsc-card-block-border-width | var(--dsc-card-border-width) |
| --dsc-card-block-border-style | var(--dsc-card-border-style) |
| --dsc-card-block-border-color | var(--dsc-card-border-color) |
| --dsc-card-color | var(--ds-color-text-default) |
| --dsc-card-content-margin-block | var(--ds-size-3) 0 |
| --dsc-card-padding | var(--ds-size-6) |
| --dsc-card-border-radius | var(--ds-border-radius-lg) |
| Navn | Verdi |
|---|---|
| data-variant | default, tinted |
| data-clickdelegatefor |
Eksempel
Med inndeling
Har du behov for inndeling i kortet, bruk ds-card__block hvis du vil dele opp kortet med skillelinjer eller legge til bilder eller video som går ut i kanten.
Merk at når du bruker ds-card__block, må alt innhold ligge i elementer med ds-card__block - ikke plasseres direkte i Card.
HTML
Unable to parse html
const Media = () => { return ( <Card data-color='neutral' style={{ maxWidth: '380px' }}> <Card.Block> <video controls preload='metadata' width='100%'> <source src='/videos/designsystemet/designsystemet-info.mp4' type='video/mp4' /> <track label='Norwegian' kind='subtitles' srcLang='nb' src='/videos/designsystemet/designsystemet-info-no.vtt' default /> <track label='English' kind='subtitles' srcLang='en' src='/videos/designsystemet/designsystemet-info-en.vtt' /> Your browser does not support the video tag. </video> </Card.Block> <Card.Block> <Heading>Om Designsystemet</Heading> <Paragraph> Videoen over gir en kort introduksjon til hva Designsystemet er, og hvordan det kan brukes i utviklingen av digitale tjenester. </Paragraph> </Card.Block> </Card> ); }; render(<Media />)
Lenkekort
Card kan brukes som navigasjonskort for å ta brukerne videre til en annen side.
Det er to ulike måter å gjøre dette på.
1. Kort som er en lenke
Hele kortet kan brukes som en lenke ved å bruke <a> som ytterst element. Dette er nyttig når du ønsker at all tekst og innhold i Card blir lest opp av skjermlesere som én sammenhengende lenke.
HTML
Unable to parse html
const AsLink = () => { return ( <Card data-color='neutral' asChild> <a href='https://designsystemet.no' rel='noopener noreferrer'> <Heading>Card as link</Heading> <Paragraph> Most provide as with carried business are much better more the perfected designer. </Paragraph> </a> </Card> ); }; render(<AsLink />)
2. Kort med lenkede elementer
Har du et kort med flere interaktive elementer, som lenker eller knapper, kan du bruke data-clickdelegatefor for å gjøre hele kortet klikkbart, samtidig som det beholder semantikken til de interaktive elementene.
Horisontalt
Du kan endre mellom display: flex og display: grid for å legge Card.Block ved siden av hverandre:
HTML
Unable to parse html
const AsGrid = () => { return ( <Card data-color='neutral' style={{ display: 'grid', gridTemplateColumns: '1fr 1fr' }} > <Card.Block> <Heading>Vandrefeber</Heading> </Card.Block> <Card.Block> <Paragraph> Symptomer kan være uro i kroppen, skjerpet årvåkenhet og en tendens til å stadig se seg over skulderen. Tilstanden går vanligvis over etter et godt måltid og et trygt sted å hvile. </Paragraph> </Card.Block> </Card> ); }; render(<AsGrid />)
React
Card
- variant
- Description
Change the background color of the card.
- Type
"default" | "tinted"- Default
default
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior.
- Type
boolean- Default
false
- children
- Description
Instances of `Card.Block`, `Divider` or other React nodes
- Type
ReactNode
| Name | Type | Default | Description |
|---|---|---|---|
| variant | "default" | "tinted" | default | Change the background color of the card. |
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. |
| children | ReactNode | - | Instances of `Card.Block`, `Divider` or other React nodes |
CardBlock
- asChild
- Description
Change the default rendered element for the one passed as a child, merging their props and behavior.
- Type
boolean- Default
false
| Name | Type | Default | Description |
|---|---|---|---|
| asChild | boolean | false | Change the default rendered element for the one passed as a child, merging their props and behavior. |
Kort med lenke i tittel
Dersom kortet skal lenke til en annen side, kan du legge en lenke i kortets tittel. Hele kortet blir da automatisk klikkbart, men skjermlesere får en bedre brukeropplevelse enn dersom hele kortet var en lenke (adrianroselli.com).
Når Card finner en <a> inni heading-elementet vil data-clickdelegatefor automatisk bli lagt til på kortet.
Dette er nyttig når Card inneholder tekst eller media, og skal navigere til en annen side.
Legg merke til at med tastaturnavigering omfavner fokus-ringen kun teksten i lenken, og ikke hele kortet. Dette er fordi lenkekort også kan inneholde flere klikkbare elementer (sekundærhandlinger), og samtidig er det mindre forvirrende for brukere av assisterende teknologi, som stemmestyring eller skjermlesere, at lenketeksten samsvarer med fokusområdet.
HTML
Unable to parse html
const WithLink = () => { return ( <Card data-color='neutral'> <Card.Block> <Heading> <Link href='https://designsystemet.no' target='_blank' rel='noopener noreferrer' > Myrkheim Museum </Link> </Heading> <Paragraph> Myrkheim Museum ligg i dalen mellom dei gamle fjelltoppane og viser utstillingar frå tida då dei fyrste reisefølgja kryssa landet. Her kan du utforske eldgamle kart, reiskapar frå dei store vandringane og forteljingar bevart av skogvaktarane. </Paragraph> <Paragraph data-size='sm'>Myrkheim Kulturvernråd</Paragraph> </Card.Block> </Card> ); }; render(<WithLink />)