@mattilsynet/design 3.2.9 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/mtds/ai/AGENTS.md +892 -0
  2. package/mtds/ai/alert.mdx +63 -0
  3. package/mtds/ai/alert.stories.tsx +128 -0
  4. package/mtds/ai/analytics.mdx +185 -0
  5. package/mtds/ai/app.mdx +60 -0
  6. package/mtds/ai/app.stories.tsx +897 -0
  7. package/mtds/ai/atlas.mdx +82 -0
  8. package/mtds/ai/atlas.stories.tsx +424 -0
  9. package/mtds/ai/avatar.mdx +45 -0
  10. package/mtds/ai/avatar.stories.tsx +109 -0
  11. package/mtds/ai/badge.mdx +70 -0
  12. package/mtds/ai/badge.stories.tsx +122 -0
  13. package/mtds/ai/breadcrumbs.mdx +36 -0
  14. package/mtds/ai/breadcrumbs.stories.tsx +158 -0
  15. package/mtds/ai/button.mdx +179 -0
  16. package/mtds/ai/button.stories.tsx +440 -0
  17. package/mtds/ai/card.mdx +51 -0
  18. package/mtds/ai/card.stories.tsx +469 -0
  19. package/mtds/ai/chart.mdx +67 -0
  20. package/mtds/ai/chart.stories.tsx +519 -0
  21. package/mtds/ai/chip.mdx +71 -0
  22. package/mtds/ai/chip.stories.tsx +211 -0
  23. package/mtds/ai/details.mdx +33 -0
  24. package/mtds/ai/details.stories.tsx +91 -0
  25. package/mtds/ai/dialog.mdx +38 -0
  26. package/mtds/ai/dialog.stories.tsx +373 -0
  27. package/mtds/ai/divider.mdx +19 -0
  28. package/mtds/ai/divider.stories.tsx +50 -0
  29. package/mtds/ai/errorsummary.mdx +26 -0
  30. package/mtds/ai/errorsummary.stories.tsx +137 -0
  31. package/mtds/ai/field.mdx +86 -0
  32. package/mtds/ai/field.stories.tsx +863 -0
  33. package/mtds/ai/fieldset.mdx +126 -0
  34. package/mtds/ai/fieldset.stories.tsx +298 -0
  35. package/mtds/ai/fileupload.mdx +16 -0
  36. package/mtds/ai/fileupload.stories.tsx +126 -0
  37. package/mtds/ai/helptext.mdx +24 -0
  38. package/mtds/ai/helptext.stories.tsx +106 -0
  39. package/mtds/ai/input.mdx +223 -0
  40. package/mtds/ai/input.stories.tsx +352 -0
  41. package/mtds/ai/law.mdx +115 -0
  42. package/mtds/ai/law.stories.tsx +168 -0
  43. package/mtds/ai/layout.mdx +145 -0
  44. package/mtds/ai/layout.stories.tsx +443 -0
  45. package/mtds/ai/link.mdx +45 -0
  46. package/mtds/ai/link.stories.tsx +44 -0
  47. package/mtds/ai/logo.mdx +86 -0
  48. package/mtds/ai/logo.stories.tsx +146 -0
  49. package/mtds/ai/pagination.mdx +136 -0
  50. package/mtds/ai/pagination.stories.tsx +404 -0
  51. package/mtds/ai/popover.mdx +86 -0
  52. package/mtds/ai/popover.stories.tsx +355 -0
  53. package/mtds/ai/print.mdx +96 -0
  54. package/mtds/ai/print.stories.tsx +839 -0
  55. package/mtds/ai/progress.mdx +41 -0
  56. package/mtds/ai/progress.stories.tsx +141 -0
  57. package/mtds/ai/skeleton.mdx +26 -0
  58. package/mtds/ai/skeleton.stories.tsx +131 -0
  59. package/mtds/ai/spinner.mdx +26 -0
  60. package/mtds/ai/spinner.stories.tsx +72 -0
  61. package/mtds/ai/steps.mdx +37 -0
  62. package/mtds/ai/steps.stories.tsx +568 -0
  63. package/mtds/ai/table.mdx +124 -0
  64. package/mtds/ai/table.stories.tsx +1715 -0
  65. package/mtds/ai/tabs.mdx +106 -0
  66. package/mtds/ai/tabs.stories.tsx +159 -0
  67. package/mtds/ai/tag.mdx +49 -0
  68. package/mtds/ai/tag.stories.tsx +111 -0
  69. package/mtds/ai/toast.mdx +67 -0
  70. package/mtds/ai/toast.stories.tsx +215 -0
  71. package/mtds/ai/togglegroup.mdx +75 -0
  72. package/mtds/ai/togglegroup.stories.tsx +96 -0
  73. package/mtds/ai/tooltip.mdx +32 -0
  74. package/mtds/ai/tooltip.stories.tsx +34 -0
  75. package/mtds/ai/typography.mdx +67 -0
  76. package/mtds/ai/typography.stories.tsx +798 -0
  77. package/mtds/ai/validation.mdx +19 -0
  78. package/mtds/ai/validation.stories.tsx +45 -0
  79. package/mtds/atlas/atlas-element.js +1 -1
  80. package/mtds/chart/chart-lines.js +19 -19
  81. package/mtds/chart/chart-lines.js.map +1 -1
  82. package/mtds/chart/chart.css.js +16 -1
  83. package/mtds/chart/chart.css.js.map +1 -1
  84. package/mtds/chart/chart.stories.d.ts +1 -0
  85. package/mtds/index.iife.js +32 -17
  86. package/mtds/package.json.js +1 -1
  87. package/mtds/styles.css +1 -1
  88. package/mtds/table/table-observer.js +26 -15
  89. package/mtds/table/table-observer.js.map +1 -1
  90. package/package.json +4 -2
@@ -0,0 +1,106 @@
1
+ import { Meta, Canvas } from '@storybook/addon-docs/blocks';
2
+ import { Example, CssVariables } from '../../.storybook/blocks';
3
+ import * as stories from './tabs.stories';
4
+ import { Details } from '../react';
5
+ import { Flex } from '../react';
6
+ import styles from '../styles.module.css';
7
+ import { PencilSimpleIcon, ListMagnifyingGlassIcon, AddressBookTabsIcon, SquaresFourIcon } from '@phosphor-icons/react';
8
+
9
+ <Meta of={stories} />
10
+
11
+ # Tabs
12
+ >Tabs lar brukerne navigere mellom relaterte deler av innholdet, der én del vises om gangen. Dette er en effektiv måte å organisere og presentere relatert innhold på samme side.
13
+
14
+ ## Kode
15
+ - Legg klassen `tabs` på elementet `<ds-tabs>`
16
+ - Bruk `aria-selected="true"` på fanen du ønsker skal være åpen når siden lastes
17
+ - Bruk `aria-disabled="true"` på faner som ikke skal være klikkbare
18
+ - **React?** Bruk `<Tabs>`, `<Tabs.List>`, `<Tabs.Tab>` og , `<Tabs.Panel>`
19
+
20
+ <Details>
21
+ <Details.Summary>Hva er `ds-tabs`?</Details.Summary>
22
+
23
+ [ds-tabs](https://u-elements.github.io/u-elements/elements/ds-tabs) er en del av prosjektet [u-elements](https://u-elements.github.io/u-elements)
24
+ som sikrer universell utforming. Dette lastes automatisk når du bruker `@mattilsynet/design`.
25
+ Du kan også hente inn tilhørende HTMLElement interface ved behov:
26
+ ```
27
+ import {
28
+ UHTMLTabsElement,
29
+ UHTMLTabElement,
30
+ UHTMLTabListElement,
31
+ UHTMLTabPanelElement
32
+ } from '@mattilsynet/design'
33
+ ```
34
+ </Details>
35
+
36
+
37
+ <Canvas of={stories.Default} />
38
+
39
+ ## Skikk og bruk
40
+ <Flex data-items="350">
41
+
42
+ {/* Tekstmengde i Tabs */}
43
+ <Example data-color="success" text="Bruk korte beskrivende tekster i Tabs." zoom="80%">
44
+ <ds-tabs class={styles.tabs}>
45
+ <ds-tablist>
46
+ <ds-tab role="tab" aria-selected="true"> Oversikt </ds-tab>
47
+ <ds-tab> Detaljer</ds-tab>
48
+ <ds-tab> Kontakter </ds-tab>
49
+ </ds-tablist>
50
+ <ds-tabpanel> </ds-tabpanel>
51
+ <ds-tabpanel> </ds-tabpanel>
52
+ <ds-tabpanel> </ds-tabpanel>
53
+ </ds-tabs>
54
+ </Example>
55
+
56
+ <Example data-color="danger" text="Unngå lange tekster i Tabs. Tekst over flere linjer er ikke brukervennlig. Husk at Tabs være utfordrende å bruke på mobil" zoom="80%">
57
+ <ds-tabs class={styles.tabs}>
58
+ <ds-tablist>
59
+ <ds-tab role="tab" aria-selected="true"> Oversikt over nylige hendelser </ds-tab>
60
+ <ds-tab> Detaljer </ds-tab>
61
+ <ds-tab> Kontakter </ds-tab>
62
+ </ds-tablist>
63
+ <ds-tabpanel> </ds-tabpanel>
64
+ <ds-tabpanel> </ds-tabpanel>
65
+ <ds-tabpanel> </ds-tabpanel>
66
+ </ds-tabs>
67
+ </Example>
68
+
69
+ {/* Kun ikon i Tabs */}
70
+ <Example data-color="success" text="Tabs med bare ikoner bør kun brukes i ekspertløsninger. Bruk tooltip sammen med ikon." zoom="80%">
71
+ <ds-tabs class={styles.tabs}>
72
+ <ds-tablist>
73
+ <ds-tab role="tab" aria-selected="true" data-tooltip="Oversikt"><SquaresFourIcon/></ds-tab>
74
+ <ds-tab data-tooltip="Detaljer"><ListMagnifyingGlassIcon /></ds-tab>
75
+ <ds-tab data-tooltip="Kontakter"><AddressBookTabsIcon /></ds-tab>
76
+ </ds-tablist>
77
+ <ds-tabpanel> </ds-tabpanel>
78
+ <ds-tabpanel> </ds-tabpanel>
79
+ <ds-tabpanel> </ds-tabpanel>
80
+ </ds-tabs>
81
+ </Example>
82
+
83
+ <Example data-color="danger" text="Tabs med bare ikoner skal ha tooltip." zoom="80%">
84
+ <ds-tabs class={styles.tabs}>
85
+ <ds-tablist>
86
+ <ds-tab role="tab" aria-selected="true"><SquaresFourIcon /></ds-tab>
87
+ <ds-tab><ListMagnifyingGlassIcon /></ds-tab>
88
+ <ds-tab><AddressBookTabsIcon /></ds-tab>
89
+ </ds-tablist>
90
+ <ds-tabpanel> </ds-tabpanel>
91
+ <ds-tabpanel> </ds-tabpanel>
92
+ <ds-tabpanel> </ds-tabpanel>
93
+ </ds-tabs>
94
+ </Example>
95
+ </Flex>
96
+
97
+ ## Gjenbruke panel
98
+ - Bruk `aria-controls="panel-ID"` for å gjenbruke samme panel for flere faner
99
+ <Canvas of={stories.WithReusePanel} />
100
+
101
+ ## Størrelser
102
+ - Bruk `data-size="sm | md | lg"`
103
+
104
+ <Canvas of={stories.Sizes} />
105
+
106
+ <CssVariables component="tabs" />
@@ -0,0 +1,159 @@
1
+ import { PencilSimpleIcon } from "@phosphor-icons/react";
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+
4
+ import { Card, Tabs } from "../react";
5
+ import styles from "../styles.module.css";
6
+
7
+ const meta = {
8
+ title: "Designsystem/Tabs",
9
+ } satisfies Meta;
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ const decorators: Story["decorators"] = [
15
+ (Story) => (
16
+ <div className={`${styles.body} ${styles.grid}`} style={{ padding: "2em" }}>
17
+ <style>
18
+ {
19
+ "body:not(:has(.sbdocs-content)) { background: var(--ds-color-background-default) }"
20
+ }
21
+ </style>
22
+ <Story />
23
+ </div>
24
+ ),
25
+ ];
26
+
27
+ export const Default: Story = {
28
+ parameters: {
29
+ layout: "padded",
30
+ },
31
+ render: () => (
32
+ <ds-tabs class={styles.tabs}>
33
+ <ds-tablist>
34
+ <ds-tab aria-selected="true">Tab 1</ds-tab>
35
+ <ds-tab>Tab 2</ds-tab>
36
+ <ds-tab>
37
+ <PencilSimpleIcon />
38
+ Tab 3
39
+ </ds-tab>
40
+ <ds-tab>Tab with very long content</ds-tab>
41
+ <ds-tab>Tab with very long content</ds-tab>
42
+ <ds-tab>Tab with very long content</ds-tab>
43
+ </ds-tablist>
44
+ <ds-tabpanel>
45
+ Panel 1 with <a href="#none">link</a>
46
+ </ds-tabpanel>
47
+ <ds-tabpanel>
48
+ Panel 2 with <a href="#none">link</a>
49
+ </ds-tabpanel>
50
+ <ds-tabpanel>
51
+ Panel 3 with <a href="#none">link</a>
52
+ </ds-tabpanel>
53
+ </ds-tabs>
54
+ ),
55
+ };
56
+
57
+ export const React: Story = {
58
+ render: () => (
59
+ <Tabs>
60
+ <Tabs.List>
61
+ <Tabs.Tab aria-selected="true">Tab 1</Tabs.Tab>
62
+ <Tabs.Tab>Tab 2</Tabs.Tab>
63
+ <Tabs.Tab>Tab 3</Tabs.Tab>
64
+ </Tabs.List>
65
+ <Tabs.Panel>
66
+ Panel 1 with <a href="#none">link</a>
67
+ </Tabs.Panel>
68
+ <Tabs.Panel>
69
+ Panel 2 with <a href="#none">link</a>
70
+ </Tabs.Panel>
71
+ <Tabs.Panel>
72
+ Panel 3 with <a href="#none">link</a>
73
+ </Tabs.Panel>
74
+ </Tabs>
75
+ ),
76
+ };
77
+
78
+ export const Sizes: Story = {
79
+ render: () => (
80
+ <ds-tabs class={styles.tabs} data-size="sm">
81
+ <ds-tablist>
82
+ <ds-tab aria-selected="true">Tab 1</ds-tab>
83
+ <ds-tab>Tab 2</ds-tab>
84
+ <ds-tab>Tab 3</ds-tab>
85
+ </ds-tablist>
86
+ <ds-tabpanel>
87
+ Panel 1 with <a href="#none">link</a>
88
+ </ds-tabpanel>
89
+ <ds-tabpanel>
90
+ Panel 2 with <a href="#none">link</a>
91
+ </ds-tabpanel>
92
+ <ds-tabpanel>
93
+ Panel 3 with <a href="#none">link</a>
94
+ </ds-tabpanel>
95
+ </ds-tabs>
96
+ ),
97
+ };
98
+
99
+ export const WithReusePanel: Story = {
100
+ decorators,
101
+ render: () => (
102
+ <ds-tabs class={styles.tabs}>
103
+ <ds-tablist>
104
+ <ds-tab aria-controls="my-panel" aria-selected="true">
105
+ Tab 1
106
+ </ds-tab>
107
+ <ds-tab aria-controls="my-panel">Tab 2</ds-tab>
108
+ <ds-tab aria-controls="my-panel">Tab 3</ds-tab>
109
+ </ds-tablist>
110
+ <ds-tabpanel id="my-panel" className={styles.card}>
111
+ My panel is used for all tabs!
112
+ </ds-tabpanel>
113
+ </ds-tabs>
114
+ ),
115
+ };
116
+
117
+ export const WithCardPanels: Story = {
118
+ decorators,
119
+ render: () => (
120
+ <ds-tabs class={styles.tabs}>
121
+ <ds-tablist>
122
+ <ds-tab aria-selected="true">Tab 1</ds-tab>
123
+ <ds-tab>Tab 2</ds-tab>
124
+ <ds-tab>Tab 3</ds-tab>
125
+ </ds-tablist>
126
+ <ds-tabpanel className={styles.card}>
127
+ Panel 1 with <a href="#none">link</a>
128
+ </ds-tabpanel>
129
+ <ds-tabpanel className={styles.card}>
130
+ Panel 2 with <a href="#none">link</a>
131
+ </ds-tabpanel>
132
+ <ds-tabpanel className={styles.card}>
133
+ Panel 3 with <a href="#none">link</a>
134
+ </ds-tabpanel>
135
+ </ds-tabs>
136
+ ),
137
+ };
138
+
139
+ export const ReactWithCardPanels: Story = {
140
+ decorators,
141
+ render: () => (
142
+ <Tabs>
143
+ <Tabs.List>
144
+ <Tabs.Tab aria-selected="true">Tab 1</Tabs.Tab>
145
+ <Tabs.Tab>Tab 2</Tabs.Tab>
146
+ <Tabs.Tab>Tab 3</Tabs.Tab>
147
+ </Tabs.List>
148
+ <Card as={Tabs.Panel}>
149
+ Panel 1 with <a href="#none">link</a>
150
+ </Card>
151
+ <Card as={Tabs.Panel}>
152
+ Panel 2 with <a href="#none">link</a>
153
+ </Card>
154
+ <Card as={Tabs.Panel}>
155
+ Panel 3 with <a href="#none">link</a>
156
+ </Card>
157
+ </Tabs>
158
+ ),
159
+ };
@@ -0,0 +1,49 @@
1
+ import { Meta, Canvas } from '@storybook/addon-docs/blocks';
2
+ import { Example, CssVariables } from '../../.storybook/blocks';
3
+ import * as stories from './tag.stories';
4
+ import { Flex, Prose } from '../react';
5
+ import styles from '../styles.module.css';
6
+
7
+ <Meta of={stories} />
8
+
9
+ # Tag
10
+ >Tags er merkelapper som kan brukes til å kategorisere elementer eller kommunisere fremdrift, status eller prosess. Tags kan gi brukeren et raskere overblikk over innholdet. Bruk tags når innholdet har mange kategorier og det er hensiktsmessig å kunne skille mellom dem. Tags er statiske merkelapper; de kan ikke klikkes på.
11
+
12
+ ## Kode
13
+ - Bruk klassen `tag` på typisk `<span>`
14
+ <Canvas of={stories.Default} />
15
+
16
+ ## Skikk og bruk
17
+ <Flex data-items="350">
18
+ {/* Tekstmengde i tag: */}
19
+ <Example data-color="success" text="Bruk korte konsiste ord i tags" zoom="100%">
20
+ <span className={styles.tag} data-color="success">Hest</span>
21
+ </Example>
22
+
23
+ <Example data-color="danger" text="Unngå lange tekster i tags. Prøv å begrense til maks et par ord" zoom="100%">
24
+ <span className={styles.tag} data-color="danger">Araberhest - Equus caballus arabicus</span>
25
+ </Example>
26
+ </Flex>
27
+
28
+ ## Størrelser
29
+ - Bruk `data-size="sm | md | lg"`
30
+ - `sm` er standard størrelse
31
+ <Canvas of={stories.Sizes} />
32
+
33
+ ## Farger og ikon
34
+ - Bruk `data-color="neutral | info | success | warning | danger"`
35
+ - Ikon følger automatisk med farge, med mindre du legger inn `<svg>` eller `data-icon="none"`
36
+ <Canvas of={stories.WithIcon} />
37
+
38
+ ## Egenvalgt ikon
39
+ - Ikon forsvinner dersom du legger inn egen `<svg>` eller `data-icon="none"`
40
+ - [Ikon fra phosphoricons.com](https://phosphoricons.com/) kan legges før tekst
41
+ <Canvas of={stories.WithIconOverwrite} />
42
+
43
+ ## Tooltip
44
+ - Bruk `data-tooltip="Hjelpetekst"`
45
+ - Bruk `data-tooltip-position="top | right | bottom | left"` for å endre plassering
46
+ - Teksten blir også automatisk tilgjengelig for skjermlesere
47
+ <Canvas of={stories.WithTooltip} />
48
+
49
+ <CssVariables component="tag" />
@@ -0,0 +1,111 @@
1
+ import { ShrimpIcon } from "@phosphor-icons/react";
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import { Tag } from "../react";
4
+ import styles from "../styles.module.css";
5
+
6
+ const meta = {
7
+ title: "Designsystem/Tag",
8
+ decorators: [
9
+ (Story) => (
10
+ <span className={styles.flex}>
11
+ <Story />
12
+ </span>
13
+ ),
14
+ ],
15
+ } satisfies Meta;
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ export const Default: Story = {
21
+ render: () => (
22
+ <>
23
+ <span className={styles.tag} data-color="neutral">
24
+ Neutral
25
+ </span>
26
+ <span className={styles.tag} data-color="info">
27
+ Info
28
+ </span>
29
+ <span className={styles.tag} data-color="success">
30
+ Success
31
+ </span>
32
+ <span className={styles.tag} data-color="warning">
33
+ Warning
34
+ </span>
35
+ <span className={styles.tag} data-color="danger">
36
+ Danger
37
+ </span>
38
+ </>
39
+ ),
40
+ };
41
+
42
+ export const React: Story = {
43
+ render: () => (
44
+ <>
45
+ <Tag data-color="neutral">Neutral</Tag>
46
+ <Tag data-color="info">Info</Tag>
47
+ <Tag data-color="success">Success</Tag>
48
+ <Tag data-color="warning">Warning</Tag>
49
+ <Tag data-color="danger">Danger</Tag>
50
+ </>
51
+ ),
52
+ };
53
+
54
+ export const Sizes: Story = {
55
+ render: () => (
56
+ <>
57
+ <span className={styles.tag} data-size="sm">
58
+ Small
59
+ </span>
60
+ <span className={styles.tag} data-size="md">
61
+ Medium
62
+ </span>
63
+ <span className={styles.tag} data-size="lg">
64
+ Large
65
+ </span>
66
+ </>
67
+ ),
68
+ };
69
+
70
+ export const WithIcon: Story = {
71
+ render: () => (
72
+ <>
73
+ <span className={styles.tag} data-color="info">
74
+ Info
75
+ </span>
76
+ <span className={styles.tag} data-color="success">
77
+ Success
78
+ </span>
79
+ <span className={styles.tag} data-color="warning">
80
+ Warning
81
+ </span>
82
+ <span className={styles.tag} data-color="danger">
83
+ Danger
84
+ </span>
85
+ </>
86
+ ),
87
+ };
88
+
89
+ export const WithIconOverwrite: Story = {
90
+ render: () => (
91
+ <>
92
+ <span className={styles.tag} data-color="success">
93
+ <ShrimpIcon />
94
+ Reke
95
+ </span>
96
+ <span className={styles.tag} data-color="info" data-icon="none">
97
+ Alle felter må fylles ut
98
+ </span>
99
+ </>
100
+ ),
101
+ };
102
+
103
+ export const WithTooltip: Story = {
104
+ render: () => (
105
+ <>
106
+ <span className={styles.tag} data-tooltip="Ikke original" tabIndex={0}>
107
+ Bekreftet kopi
108
+ </span>
109
+ </>
110
+ ),
111
+ };
@@ -0,0 +1,67 @@
1
+ import { Meta, Canvas } from '@storybook/addon-docs/blocks';
2
+ import { Example, CssVariables } from '../../.storybook/blocks';
3
+ import { Alert, Flex } from '../react';
4
+ import styles from '../styles.module.css';
5
+ import * as stories from './toast.stories';
6
+
7
+ <Meta of={stories} />
8
+
9
+ # Toast
10
+
11
+ > Toasts gir korte oppdateringer om status.
12
+ De skal ikke forstyrre brukeropplevelsen og kan forsvinne automatisk
13
+ eller krysses ut.
14
+
15
+ <Alert data-color="warning">Unngå bruk av toast da dette kan skape tilgjengelighetsproblemer<br />[Lær mer om hvorfor og alternativer til toast &rarr;](https://primer.style/accessibility/patterns/accessible-notifications-and-messages/#toasts)</Alert>
16
+
17
+ ## Kode
18
+ - **Javascript:** Kall `toast(content: string, options)` fra `@mattilsynet/design`
19
+ - **React:** Kall `toast(content: React.ReactNode, options)` fra `@mattilsynet/design/react`
20
+ - **HTML:** Bruk klassen `toast` på `<dialog open data-timeout="milliseconds: | false">`
21
+ <Canvas of={stories.Default} />
22
+
23
+ ## Skikk og bruk
24
+ <Flex data-items="350">
25
+ {/* Viser toast med lange navn: */}
26
+ <Example data-color="success" data-variant="false" text="Bruk en kort, generisk og beskrivende setning i toast som bekrefter en handling." zoom="80%">
27
+ <div className={styles.alert} data-color="success">
28
+ Dokumentet er lagret
29
+ </div>
30
+ </Example>
31
+ <Example data-color="danger" data-variant="false" text="Unngå lange setninger og innhold som er viktig for brukeren. Husk at det er anbefalt at toasten forsvinner automatisk." zoom="80%">
32
+ <div className={styles.alert} data-color="success">
33
+ Helsesertifikat-til-Storbritannia123.pdf har blitt lastet ned på din datamaskin. Husk å signere dokumentet og send det til mottaker i løpet av en uke.
34
+ </div>
35
+ </Example>
36
+ </Flex>
37
+
38
+ ## Automatisk lukking
39
+ - Toast skjules automatisk etter 3000 millisekunder nedtelling
40
+ - Hvis brukeren holder musepekeren over toasten, pauses den automatiske nedtellingen
41
+ - Du kan endre antall millisekunder, eller sette `false` får å gjøre toasten permanent
42
+ - Bruk `toast(content, { timeout })` eller `data-timeout` i HTML for å endre timeout
43
+ <Canvas of={stories.WithNoTimeout} />
44
+
45
+ ## Programatisk oppdatering
46
+ - Funksjonen `toast()` returner en `id` som kan brukes for oppdateringer
47
+ - Bruk `toast(content, { id })` for å oppdatere en toast
48
+ <Canvas of={stories.WithUpdates} />
49
+
50
+ ## Lasting / Promise
51
+ - Funksjonen `toast.promise()` kan brukes for å vise lasting, suksess og feil
52
+ - Bruk `toast(promise, { loading, success, error })`
53
+ <Canvas of={stories.WithPromise} />
54
+
55
+ ## Lukkekryss
56
+ - Lukkekryss tegnes automatisk
57
+ - Bruk `toast(content, { closedby: 'none' })` eller `closedby="none"` i HTML for å skjule
58
+ - Bruk `command="close" commandfor="TOAST-ID"` en button inni for egendefinert lukke-knapp
59
+ <Canvas of={stories.WithCustomClose} />
60
+
61
+ ## Farger
62
+ - Støtter `main | info | success | warning | danger | neutral` (hvor `main` er default)
63
+ - Ikon følger automatisk med farge, med mindre du setter `toast(content, { icon: false })` eller `data-icon="false"`
64
+ - Bruk `toast.success`, `toast.danger`, `toast.info`, `toast.warning` eller `toast.neutral`, *eller* bruk `toast(content, { color })` eller `data-color` i HTML for å endre farge
65
+ <Canvas of={stories.Colors} />
66
+
67
+ <CssVariables component="toast" />