Skip to content

Commit 6ae7cc4

Browse files
Barsnesmrosvik
andauthored
docs(Loaders): write documentation and guidelines (#2302)
resolves #1487 --------- Co-authored-by: Marianne Røsvik <marianne.rosvik@digdir.no>
1 parent 1afa5c5 commit 6ae7cc4

19 files changed

+67
-16
lines changed

packages/react/src/components/Button/Button.stories.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import {
1515
import type { Meta, ReactRenderer, StoryFn, StoryObj } from '@storybook/react';
1616
import type { PartialStoryFn } from '@storybook/types';
1717

18-
import { Spinner } from '../Spinner';
19-
import { Tooltip } from '../Tooltip';
18+
import { Spinner, Tooltip } from '../';
2019

2120
import { Button } from './';
2221

packages/react/src/components/Button/Button.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { Slot, Slottable } from '@radix-ui/react-slot';
22
import cl from 'clsx/lite';
33
import { forwardRef } from 'react';
44
import type { ButtonHTMLAttributes } from 'react';
5-
import { Spinner } from '../Spinner';
6-
import { Paragraph } from '../Typography';
5+
import { Paragraph, Spinner } from '../';
76

87
export type ButtonProps = {
98
/**

packages/react/src/components/form/Combobox/Combobox.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { InputHTMLAttributes, ReactNode } from 'react';
66

77
import type { PortalProps } from '../../../types/Portal';
88
import { omit, useDebounceCallback } from '../../../utilities';
9-
import { Spinner } from '../../Spinner';
9+
import { Spinner } from '../../loaders/Spinner';
1010
import type { FormFieldProps } from '../useFormField';
1111
import { useFormField } from '../useFormField';
1212

packages/react/src/components/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ export * from './Button';
33
export * from './Badge';
44
export * from './Breadcrumbs';
55
export * from './HelpText';
6-
export * from './Spinner';
6+
export * from './loaders/Spinner';
7+
export * from './loaders/Skeleton';
78
export * from './Link';
89
export * from './List';
910
export * from './Typography/';
@@ -28,7 +29,6 @@ export * from './Divider';
2829
export * from './Modal';
2930
export * from './DropdownMenu';
3031
export * from './form/Search';
31-
export * from './Skeleton';
3232
export * from './Card';
3333
export * from './form/Combobox';
3434
export * from './Table';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { Meta, Primary, Controls, Canvas } from '@storybook/blocks';
2+
3+
import * as SkeletonStories from './Skeleton/Skeleton.stories';
4+
import * as SpinnerStories from './Spinner/Spinner.stories';
5+
6+
<Meta title="Komponenter/Loaders" />
7+
8+
# Loaders
9+
10+
`Loaders` viser brukeren at systemet jobber.
11+
Vi bruker dem når handlinger eller prosesser tar lenger tid, og brukeren må vente i mer enn 1 sekund.
12+
13+
I Designsystemet har vi to typer `Loaders`: `Spinner` og `Skeleton`. Disse har ulike bruksområder og skal brukes i henhold til lastingen som foregår.
14+
15+
<br/>
16+
17+
18+
19+
## Spinner
20+
21+
`Spinner` brukes når vi venter på at en handling skal fullføres. Dette kan være når vi venter på at et skjema skal sendes inn.
22+
23+
<Canvas of={SpinnerStories.Preview} />
24+
25+
## Skeleton
26+
27+
`Skeleton` brukes når vi venter på at store deler av en side skal lastes inn. Den skal vise brukeren at det er innhold som kommer, og hvordan det vil se ut.
28+
29+
Det er ulike varianter av `Skeleton` som kan brukes avhengig av hva som lastes inn.
30+
Du skal prøve å gjenskape innholdet som vil bli lastet inn.
31+
32+
<Canvas of={SkeletonStories.UsageExample} />
33+
34+
## Retningslinjer for `Loaders`
35+
36+
<br />
37+
38+
**Passer til å**
39+
- laste innhold på siden
40+
- fortelle brukeren at en handling midlertidig har stoppet applikasjonen
41+
- fortelle brukeren når lasting vil ta mer enn 1 sekund
42+
- fortelle brukeren at data blir lagret eller oppdatert
43+
44+
<br />
45+
46+
**Passer ikke**
47+
- når en lasting tar mindre enn 1 sekund

packages/react/src/components/Skeleton/Circle/Circle.tsx packages/react/src/components/loaders/Skeleton/Circle/Circle.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import cl from 'clsx/lite';
22
import type { HTMLAttributes } from 'react';
33

4-
import { useSynchronizedAnimation } from '../../../utilities';
4+
import { useSynchronizedAnimation } from '../../../../utilities';
55

66
export type CircleProps = {
77
/** The width of the component */

packages/react/src/components/Skeleton/Rectangle/Rectangle.tsx packages/react/src/components/loaders/Skeleton/Rectangle/Rectangle.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import cl from 'clsx/lite';
22
import type { HTMLAttributes } from 'react';
33

4-
import { useSynchronizedAnimation } from '../../../utilities';
4+
import { useSynchronizedAnimation } from '../../../../utilities';
55

66
export type RectangleProps = {
77
/** The width of the component */

packages/react/src/components/Skeleton/Skeleton.stories.tsx packages/react/src/components/loaders/Skeleton/Skeleton.stories.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { Meta, StoryFn, StoryObj } from '@storybook/react';
22

3-
import { Button } from '../Button';
4-
import { Heading, Paragraph } from '../Typography';
3+
import { Button, Heading, Paragraph } from '../../';
54

65
import { Skeleton } from '.';
76

packages/react/src/components/Skeleton/Text/Text.tsx packages/react/src/components/loaders/Skeleton/Text/Text.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import cl from 'clsx/lite';
22
import type { HTMLAttributes } from 'react';
33

4-
import { useSynchronizedAnimation } from '../../../utilities';
4+
import { useSynchronizedAnimation } from '../../../../utilities';
55

66
export type TextProps = {
77
/** The width of the component */

packages/react/src/components/Spinner/Spinner.mdx packages/react/src/components/loaders/Spinner/Spinner.mdx

+10-3
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,23 @@ import * as SpinnerStories from './Spinner.stories';
66

77
# Spinner
88

9+
`Spinner` brukes for å indikere at en handling pågår. Dette kan være når vi venter på at et skjema skal sendes inn.
10+
911
<Primary />
1012
<Controls />
1113

12-
Når brukeren har `prefers-reduced-motion` satt til `reduce` vil spinneren ha en animasjon på 6 sekunder.
13-
Animasjonen er ikke dekorativ, og vi skrur den derfor ikke av.
14-
1514
## Størrelser
1615

16+
Du kan justere størrelsen på `Spinner` etter hvor den skal plasseres.
17+
Størrelsen vil være mindre i knapper, men større dersom den er ved et skjemafelt.
18+
1719
<Canvas of={SpinnerStories.Sizes} />
1820

1921
## Varianter
2022

2123
<Canvas of={SpinnerStories.Variants} />
24+
25+
## Tilgjengelighet
26+
27+
Når brukeren har `prefers-reduced-motion` satt til `reduce` vil spinneren ha en animasjon på 6 sekunder.
28+
Animasjonen er ikke dekorativ, og vi skrur den derfor ikke av.

packages/react/src/components/Spinner/Spinner.tsx packages/react/src/components/loaders/Spinner/Spinner.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import cl from 'clsx/lite';
22
import type * as React from 'react';
33

4-
import { useSynchronizedAnimation } from '../../utilities';
4+
import { useSynchronizedAnimation } from '../../../utilities';
55

66
export type SpinnerProps = {
77
/** Spinner title */

0 commit comments

Comments
 (0)