-
Notifications
You must be signed in to change notification settings - Fork 1
feat(nve-layout): layoutkomponenter #907
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
900fb21
b69efe9
513d6eb
d8da1da
8353ce3
1d223a9
63f5c36
47bb92b
a85c13f
aae4c2f
a6a0076
d839bdb
85da30c
71f2bc3
8da9853
c9819ac
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| <PageHeader title="Layout-komponenter" imagePath="developer" pageLevel=1></PageHeader> | ||
|
|
||
| Layout-komponentene er strukturelle byggeklosser basert på prinsippene fra [Every Layout](https://every-layout.dev/). | ||
| De håndterer plassering og fordeling av innhold uten å binde seg til visuell stil og kan kombineres fritt for å bygge opp sider og seksjoner. | ||
|
|
||
| ## Hvorfor bruke dem? | ||
|
|
||
| Du slipper å skrive egen CSS for vanlige oppsett, og avstander hentes fra designsystemets tokens. Det gir konsistente sider, raskere utvikling og mindre vedlikehold når designet endres. | ||
|
|
||
| ## Når skal du bruke layout-komponenter? | ||
|
|
||
| Bruk layout-komponentene når du vil: | ||
|
|
||
| - Stable elementer vertikalt med konsistent mellomrom (`nve-stack`) | ||
| - Gruppere elementer horisontalt med automatisk linjebryting (`nve-cluster`) | ||
| - Lage et responsivt rutenett (`nve-grid`) | ||
| - Gi et element definert padding og bakgrunn (`nve-box`) | ||
|
|
||
| ## Prinsipper | ||
|
|
||
| Layout-komponentene har ingen farger, fonter eller annen visuell stil, de styrer kun struktur og plassering. De er ment å kombineres, og bryr seg ikke om hva som ligger inni dem. | ||
|
|
||
| ## Eksempel på bruk | ||
|
|
||
| Layout-komponentene er laget for å kombineres. Et kontaktskjema er et typisk eksempel som bruker alle fire: `nve-box` gir kortet ramme og padding, `nve-stack` stabler feltene vertikalt, `nve-grid` legger fornavn og etternavn ved siden av hverandre og bryter til en kolonne på smale skjermer. `nve-cluster` plasserer knappene nederst. | ||
|
|
||
| <CodeExamplePreview> | ||
|
|
||
| ```html | ||
| <nve-box padding="large" background="--color-neutrals-background-canvas"> | ||
| <nve-stack> | ||
| <nve-heading level="3">Kontakt oss</nve-heading> | ||
| <p>Fyll ut skjemaet, så tar vi kontakt så raskt vi kan.</p> | ||
| <nve-grid gap="small" min="220px"> | ||
| <nve-input label="Fornavn"></nve-input> | ||
| <nve-input label="Etternavn"></nve-input> | ||
| </nve-grid> | ||
| <nve-input label="E-post" type="email"></nve-input> | ||
| <nve-textarea label="Melding"></nve-textarea> | ||
| <nve-cluster gap="small" justify="flex-end"> | ||
| <nve-button variant="ghost">Avbryt</nve-button> | ||
| <nve-button variant="primary">Send</nve-button> | ||
| </nve-cluster> | ||
| </nve-stack> | ||
| </nve-box> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| <img src="../assets/images/layout-visualisering.png" width="690" alt="Visualisering av layoutkomponentene (Grid, Stack, Cluster og Box) i Designsystemet."> | ||
|
|
||
| ## Felles spacing-props | ||
|
|
||
| Alle layout-komponenter arver `padding`, `margin`, `padding-block`, `padding-inline`, `margin-block` og `margin-inline` fra en basis layoutklasse. Verdiene er låst til spacing-tokenene i designsystemet. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,108 @@ | ||
| # nve-box | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. en ting jeg savner på siden til hver layout-komponent, er at det står at den importeres fra |
||
|
|
||
| `nve-box` pakker innhold i en boks med konsistent padding. | ||
|
|
||
| I de aller fleste tilfeller skal du bruke `padding`. `padding` er knyttet direkte til spacing-tokenene i designsystemet og sikrer at paddingen er konsistent på tvers av sider og komponenter. | ||
|
|
||
| ## Padding | ||
|
|
||
| `padding` setter padding rundt innholdet ved bruk av et spacing-token. Hvis `padding` ikke er satt, brukes `medium` som standard. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. jeg tror vi kanskje bør skrive litt mer om hvilke verdier som faktisk kan brukes her. det står bare |
||
|
|
||
| <CodeExamplePreview containerGridTemplateColumns="repeat(3, 1fr)" containerItemsAlign="start"> | ||
|
|
||
| ```html | ||
| <nve-box padding="small" background="--color-neutrals-background-canvas"> | ||
| <div style="padding: 0.75rem; background: var(--color-neutrals-background-secondary)"></div> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-canvas"> | ||
| <div style="padding: 0.75rem; background: var(--color-neutrals-background-secondary)"></div> | ||
| </nve-box> | ||
| <nve-box padding="large" background="--color-neutrals-background-canvas"> | ||
| <div style="padding: 0.75rem; background: var(--color-neutrals-background-secondary)"></div> | ||
| </nve-box> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| ## Bakgrunn | ||
|
|
||
| `background` setter en tokenbasert bakgrunnsfarge på boksen. Gyldige verdier kommer fra neutrals background-tokensene. | ||
|
|
||
| <CodeExamplePreview containerGridTemplateColumns="repeat(3, 1fr)" containerItemsAlign="start"> | ||
|
|
||
| ```html | ||
| <nve-box background="--color-neutrals-background-canvas"> | ||
| <nve-paragraph>canvas</nve-paragraph> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-primary"> | ||
| <nve-paragraph>primary</nve-paragraph> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-primary-contrast"> | ||
| <nve-paragraph>primary-contrast</nve-paragraph> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-secondary"> | ||
| <nve-paragraph>secondary</nve-paragraph> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-secondary-dim"> | ||
| <nve-paragraph style="color: var(--color-neutrals-foreground-inverted)">secondary-dim</nve-paragraph> | ||
| </nve-box> | ||
| <nve-box background="--color-neutrals-background-tertiary-dim"> | ||
| <nve-paragraph style="color: var(--color-neutrals-foreground-inverted)">tertiary-dim</nve-paragraph> | ||
| </nve-box> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| ## Nøsting | ||
|
|
||
| Bokser kan nøstes for å bygge opp et hierarki av padding. | ||
|
|
||
| <CodeExamplePreview> | ||
|
|
||
| ```html | ||
| <nve-box padding="large" background="--color-neutrals-background-canvas"> | ||
| <nve-box padding="small" background="--color-neutrals-background-secondary"> | ||
| <div style="padding: 0.75rem; background: var(--color-neutrals-background-canvas)"></div> | ||
| </nve-box> | ||
| </nve-box> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| ## Eksempel på bruk | ||
|
|
||
| En boks med konsistent padding rundt en tekst. | ||
|
|
||
| <CodeExamplePreview> | ||
|
|
||
| ```html | ||
| <nve-box background="--color-neutrals-background-secondary"> | ||
| <nve-paragraph>Innhold med jevn padding rundt.</nve-paragraph> | ||
| </nve-box> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| Samme innhold uten `nve-box` hvor teksten ligger helt inntil kanten. | ||
|
|
||
| <CodeExamplePreview> | ||
|
|
||
| ```html | ||
| <div style="background: var(--color-neutrals-background-secondary)"> | ||
| <nve-paragraph>Innhold med null padding rundt.</nve-paragraph> | ||
| </div> | ||
| ``` | ||
|
|
||
| </CodeExamplePreview> | ||
|
|
||
| ## Egenskaper | ||
|
|
||
| | Egenskap | Type | Standard | Beskrivelse | | ||
| | ---------------- | --------------- | -------- | ---------------------------------------------------------------------------------------- | | ||
| | `background` | `BoxBackground` | — | Tokenbasert bakgrunnsfarge. Gyldige verdier er `--color-neutrals-background-*`-tokenene. | | ||
| | `padding` | `SpacingToken` | `medium` | Tokenbasert padding på alle sider. Visuell standard er `medium` via CSS. | | ||
| | `padding-block` | `SpacingToken` | — | Overstyrer `padding` i blokk-retning (topp/bunn). | | ||
| | `padding-inline` | `SpacingToken` | — | Overstyrer `padding` i inline-retning (venstre/høyre). | | ||
| | `margin` | `SpacingToken` | — | Tokenbasert margin på alle sider. | | ||
| | `margin-block` | `SpacingToken` | — | Overstyrer `margin` i blokk-retning (topp/bunn). | | ||
| | `margin-inline` | `SpacingToken` | — | Overstyrer `margin` i inline-retning (venstre/høyre). | | ||
Uh oh!
There was an error while loading. Please reload this page.