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
React
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 />)
- 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
any
| 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 | any | - | 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. |
Eksempel
Farger
Kort kommer i alle farger, og har to varianter.
React
const Variants = () => { const colorVariants = ['accent', 'brand1', 'brand2', 'brand3', 'neutral']; const variants = ['default', 'tinted']; return ( <> {variants.map((variant) => colorVariants.map((color) => ( <Card key={`${variant}-${color}`} data-variant={variant as 'default' | 'tinted'} data-color={color as CardProps['data-color']} > <Card.Block> <Paragraph> {variant}: {color} </Paragraph> </Card.Block> </Card> )), )} </> ); }; render(<Variants />)
Med inndeling
Bruk flere 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 Card.Block, må alt innhold ligge inni Card.Block - ikke plasseres direkte i Card.
React
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 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).
I dette eksempelet rendrer Card <a> inni heading-elementet.
Dette er nyttig når Card inneholder tekst eller media, og skal navigere til en annen side.
React
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 />)
2. Kort som er en lenke
Hele kortet kan bli en lenke ved å benytte asChild. Dette er nyttig når du ønsker at all tekst og innhold i Card blir lest opp av skjermlesere som én sammenhengende lenke.
I dette eksempelet rendrer Card som <a>.
React
const AsLink = () => { return ( <Card data-color='neutral' asChild> <a href='https://designsystemet.no' rel='noopener noreferrer'> <Heading>Link Card with asChild</Heading> <Paragraph> Most provide as with carried business are much better more the perfected designer. </Paragraph> </a> </Card> ); }; render(<AsLink />)
Horisontalt
Du kan endre mellom display: flex og display: grid for å legge Card.Block ved siden av hverandre:
React
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 />)
HTML
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
Card har to css klasser, men 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 |