@mattilsynet/design 3.2.9 → 3.3.1
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.
- package/mtds/ai/AGENTS.md +892 -0
- package/mtds/ai/alert.mdx +63 -0
- package/mtds/ai/alert.stories.tsx +128 -0
- package/mtds/ai/analytics.mdx +185 -0
- package/mtds/ai/app.mdx +60 -0
- package/mtds/ai/app.stories.tsx +897 -0
- package/mtds/ai/atlas.mdx +82 -0
- package/mtds/ai/atlas.stories.tsx +424 -0
- package/mtds/ai/avatar.mdx +45 -0
- package/mtds/ai/avatar.stories.tsx +109 -0
- package/mtds/ai/badge.mdx +70 -0
- package/mtds/ai/badge.stories.tsx +122 -0
- package/mtds/ai/breadcrumbs.mdx +36 -0
- package/mtds/ai/breadcrumbs.stories.tsx +158 -0
- package/mtds/ai/button.mdx +179 -0
- package/mtds/ai/button.stories.tsx +440 -0
- package/mtds/ai/card.mdx +51 -0
- package/mtds/ai/card.stories.tsx +469 -0
- package/mtds/ai/chart.mdx +67 -0
- package/mtds/ai/chart.stories.tsx +519 -0
- package/mtds/ai/chip.mdx +71 -0
- package/mtds/ai/chip.stories.tsx +211 -0
- package/mtds/ai/details.mdx +33 -0
- package/mtds/ai/details.stories.tsx +91 -0
- package/mtds/ai/dialog.mdx +38 -0
- package/mtds/ai/dialog.stories.tsx +373 -0
- package/mtds/ai/divider.mdx +19 -0
- package/mtds/ai/divider.stories.tsx +50 -0
- package/mtds/ai/errorsummary.mdx +26 -0
- package/mtds/ai/errorsummary.stories.tsx +137 -0
- package/mtds/ai/field.mdx +86 -0
- package/mtds/ai/field.stories.tsx +863 -0
- package/mtds/ai/fieldset.mdx +126 -0
- package/mtds/ai/fieldset.stories.tsx +298 -0
- package/mtds/ai/fileupload.mdx +16 -0
- package/mtds/ai/fileupload.stories.tsx +126 -0
- package/mtds/ai/helptext.mdx +24 -0
- package/mtds/ai/helptext.stories.tsx +106 -0
- package/mtds/ai/input.mdx +223 -0
- package/mtds/ai/input.stories.tsx +352 -0
- package/mtds/ai/law.mdx +115 -0
- package/mtds/ai/law.stories.tsx +168 -0
- package/mtds/ai/layout.mdx +145 -0
- package/mtds/ai/layout.stories.tsx +443 -0
- package/mtds/ai/link.mdx +45 -0
- package/mtds/ai/link.stories.tsx +44 -0
- package/mtds/ai/logo.mdx +86 -0
- package/mtds/ai/logo.stories.tsx +146 -0
- package/mtds/ai/pagination.mdx +136 -0
- package/mtds/ai/pagination.stories.tsx +404 -0
- package/mtds/ai/popover.mdx +86 -0
- package/mtds/ai/popover.stories.tsx +355 -0
- package/mtds/ai/print.mdx +96 -0
- package/mtds/ai/print.stories.tsx +839 -0
- package/mtds/ai/progress.mdx +41 -0
- package/mtds/ai/progress.stories.tsx +141 -0
- package/mtds/ai/skeleton.mdx +26 -0
- package/mtds/ai/skeleton.stories.tsx +131 -0
- package/mtds/ai/spinner.mdx +26 -0
- package/mtds/ai/spinner.stories.tsx +72 -0
- package/mtds/ai/steps.mdx +37 -0
- package/mtds/ai/steps.stories.tsx +568 -0
- package/mtds/ai/table.mdx +124 -0
- package/mtds/ai/table.stories.tsx +1715 -0
- package/mtds/ai/tabs.mdx +106 -0
- package/mtds/ai/tabs.stories.tsx +159 -0
- package/mtds/ai/tag.mdx +49 -0
- package/mtds/ai/tag.stories.tsx +111 -0
- package/mtds/ai/toast.mdx +67 -0
- package/mtds/ai/toast.stories.tsx +215 -0
- package/mtds/ai/togglegroup.mdx +75 -0
- package/mtds/ai/togglegroup.stories.tsx +96 -0
- package/mtds/ai/tooltip.mdx +32 -0
- package/mtds/ai/tooltip.stories.tsx +34 -0
- package/mtds/ai/typography.mdx +67 -0
- package/mtds/ai/typography.stories.tsx +798 -0
- package/mtds/ai/validation.mdx +19 -0
- package/mtds/ai/validation.stories.tsx +45 -0
- package/mtds/app/app-observer.js +1 -1
- package/mtds/app/app-toggle.js +10 -26
- package/mtds/app/app-toggle.js.map +1 -1
- package/mtds/app/app-toggle2.js +26 -10
- package/mtds/app/app-toggle2.js.map +1 -1
- package/mtds/app/app.js +1 -1
- package/mtds/atlas/atlas-element.js +1 -1
- package/mtds/chart/chart-lines.js +19 -19
- package/mtds/chart/chart-lines.js.map +1 -1
- package/mtds/chart/chart.css.js +16 -1
- package/mtds/chart/chart.css.js.map +1 -1
- package/mtds/chart/chart.stories.d.ts +1 -0
- package/mtds/index.iife.js +32 -17
- package/mtds/index.js +21 -20
- package/mtds/index.js.map +1 -1
- package/mtds/package.json.js +1 -1
- package/mtds/styles.css +1 -1
- package/mtds/table/table-observer.js +26 -15
- package/mtds/table/table-observer.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CalendarDotsIcon,
|
|
3
|
+
ClockIcon,
|
|
4
|
+
DownloadSimpleIcon,
|
|
5
|
+
HourglassHighIcon,
|
|
6
|
+
ListChecksIcon,
|
|
7
|
+
MapPinIcon,
|
|
8
|
+
PaperPlaneRightIcon,
|
|
9
|
+
SmileyMehIcon,
|
|
10
|
+
UploadSimpleIcon,
|
|
11
|
+
} from "@phosphor-icons/react";
|
|
12
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
13
|
+
import {
|
|
14
|
+
Card,
|
|
15
|
+
Flex,
|
|
16
|
+
Grid,
|
|
17
|
+
Group,
|
|
18
|
+
Heading,
|
|
19
|
+
Info,
|
|
20
|
+
Input,
|
|
21
|
+
Prose,
|
|
22
|
+
Tag,
|
|
23
|
+
} from "../react";
|
|
24
|
+
import styles from "../styles.module.css";
|
|
25
|
+
|
|
26
|
+
const meta = {
|
|
27
|
+
title: "Designsystem/Card og Group",
|
|
28
|
+
id: "designsystem-card",
|
|
29
|
+
parameters: {
|
|
30
|
+
layout: "fullscreen",
|
|
31
|
+
},
|
|
32
|
+
decorators: [
|
|
33
|
+
(Story) => (
|
|
34
|
+
<div
|
|
35
|
+
className={`${styles.body} ${styles.grid}`}
|
|
36
|
+
style={{ padding: "2em" }}
|
|
37
|
+
>
|
|
38
|
+
<style>
|
|
39
|
+
{
|
|
40
|
+
"html:not(:has(.sbdocs-content)) { background: var(--ds-color-background-default) }"
|
|
41
|
+
}
|
|
42
|
+
</style>
|
|
43
|
+
<Story />
|
|
44
|
+
</div>
|
|
45
|
+
),
|
|
46
|
+
],
|
|
47
|
+
} satisfies Meta;
|
|
48
|
+
|
|
49
|
+
export default meta;
|
|
50
|
+
type Story = StoryObj<typeof meta>;
|
|
51
|
+
|
|
52
|
+
const radius = ["sm", "md", "lg", "xl"] as const;
|
|
53
|
+
const paddings = [
|
|
54
|
+
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 26, 30,
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
export const Default: Story = {
|
|
58
|
+
render: () => <div className={styles.card}>Card</div>,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const React: Story = {
|
|
62
|
+
render: () => (
|
|
63
|
+
<>
|
|
64
|
+
<Card>Card</Card>
|
|
65
|
+
<Card href="#">Lenke</Card>
|
|
66
|
+
<Card as="button" onClick={() => alert("Click!")}>
|
|
67
|
+
Knapp
|
|
68
|
+
</Card>
|
|
69
|
+
<Group>
|
|
70
|
+
<Grid data-gap="1">
|
|
71
|
+
<Card>Card in group</Card>
|
|
72
|
+
<Card>Card in group</Card>
|
|
73
|
+
<Card>Card in group</Card>
|
|
74
|
+
</Grid>
|
|
75
|
+
</Group>
|
|
76
|
+
</>
|
|
77
|
+
),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export const Padding: Story = {
|
|
81
|
+
render: () => (
|
|
82
|
+
<Grid>
|
|
83
|
+
<strong>Padding:</strong>
|
|
84
|
+
{paddings.map((pad) => (
|
|
85
|
+
<div key={pad} className={styles.card} data-pad={pad}>
|
|
86
|
+
data-pad="{pad}"
|
|
87
|
+
</div>
|
|
88
|
+
))}
|
|
89
|
+
<strong>Fluid padding (try resizing screen):</strong>
|
|
90
|
+
{paddings.map((pad) => (
|
|
91
|
+
<div key={pad} className={styles.card} data-pad={`2-${pad}`}>
|
|
92
|
+
data-pad="2-{pad}"
|
|
93
|
+
</div>
|
|
94
|
+
))}
|
|
95
|
+
</Grid>
|
|
96
|
+
),
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
export const Radius: Story = {
|
|
100
|
+
render: () => (
|
|
101
|
+
<>
|
|
102
|
+
{radius.map((value) => (
|
|
103
|
+
<div key={value} className={styles.card} data-radius={value}>
|
|
104
|
+
data-radius="{value}"
|
|
105
|
+
</div>
|
|
106
|
+
))}
|
|
107
|
+
</>
|
|
108
|
+
),
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export const Interactive: Story = {
|
|
112
|
+
render: () => (
|
|
113
|
+
<>
|
|
114
|
+
<a href="#anchor" className={styles.card}>
|
|
115
|
+
As link
|
|
116
|
+
</a>
|
|
117
|
+
<button type="button" className={styles.card}>
|
|
118
|
+
As button
|
|
119
|
+
</button>
|
|
120
|
+
<div data-clickdelegatefor="my-link" className={styles.card}>
|
|
121
|
+
<div className={styles.prose}>
|
|
122
|
+
<a id="my-link" href="#anchor">
|
|
123
|
+
With data-clickdelegatefor targeting link
|
|
124
|
+
</a>
|
|
125
|
+
<button type="button" className={styles.button}>
|
|
126
|
+
Inner button with other function
|
|
127
|
+
</button>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</>
|
|
131
|
+
),
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export const Responsive: Story = {
|
|
135
|
+
render: () => (
|
|
136
|
+
<>
|
|
137
|
+
Grupperte eksempler:
|
|
138
|
+
<a href="#anchor" className={styles.card}>
|
|
139
|
+
<div className={styles.flex}>
|
|
140
|
+
<h2 data-size="md" data-self="250" data-fixed>
|
|
141
|
+
123456789
|
|
142
|
+
</h2>
|
|
143
|
+
<div className={styles.flex} data-self="500" data-items="100">
|
|
144
|
+
<div className={styles.grid} data-items="100">
|
|
145
|
+
<div className={styles.info}>
|
|
146
|
+
<CalendarDotsIcon />
|
|
147
|
+
<span>06.12.2024</span>
|
|
148
|
+
</div>
|
|
149
|
+
<div className={styles.info}>
|
|
150
|
+
<ClockIcon />
|
|
151
|
+
19:37
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<div className={styles.grid} data-items="100">
|
|
155
|
+
<div className={styles.info}>
|
|
156
|
+
<UploadSimpleIcon />
|
|
157
|
+
Groene Tuin
|
|
158
|
+
</div>
|
|
159
|
+
<div className={styles.info}>
|
|
160
|
+
<i>🇫🇷</i>
|
|
161
|
+
Frankrike
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
<div className={styles.grid} data-self="500" data-items="250">
|
|
165
|
+
<div className={styles.info}>
|
|
166
|
+
<DownloadSimpleIcon />
|
|
167
|
+
Blomquist Blomster AS
|
|
168
|
+
</div>
|
|
169
|
+
<div className={styles.info}>
|
|
170
|
+
<ListChecksIcon />
|
|
171
|
+
Daucus carota, Hydrangea paniculata, +4
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
</a>
|
|
177
|
+
<Card>
|
|
178
|
+
<Flex data-align="start">
|
|
179
|
+
<Info data-self="250" data-fixed>
|
|
180
|
+
<small>Opprettet 01.01.1970</small>
|
|
181
|
+
<Heading data-size="2xs">KY.KELLI.815.493.00</Heading>
|
|
182
|
+
</Info>
|
|
183
|
+
<Flex data-self="500">
|
|
184
|
+
<Flex data-self="500" data-align="start">
|
|
185
|
+
<Grid data-self="200">
|
|
186
|
+
<Info>
|
|
187
|
+
<PaperPlaneRightIcon />
|
|
188
|
+
Firmanavn AS
|
|
189
|
+
</Info>
|
|
190
|
+
<Info>
|
|
191
|
+
<i>🇳🇱</i> Nederland
|
|
192
|
+
</Info>
|
|
193
|
+
</Grid>
|
|
194
|
+
<Info data-self="300">
|
|
195
|
+
<DownloadSimpleIcon />
|
|
196
|
+
Bomsterlandet importerer bomster AS, Rogaland
|
|
197
|
+
</Info>
|
|
198
|
+
</Flex>
|
|
199
|
+
<Tag data-fixed data-color="info" data-icon="none">
|
|
200
|
+
Skal på tilsyn
|
|
201
|
+
</Tag>
|
|
202
|
+
</Flex>
|
|
203
|
+
</Flex>
|
|
204
|
+
</Card>
|
|
205
|
+
<div className={styles.card}>
|
|
206
|
+
<div className={styles.flex} data-align="center">
|
|
207
|
+
<h2 data-size="md" data-self="250" data-fixed>
|
|
208
|
+
Bambus
|
|
209
|
+
</h2>
|
|
210
|
+
<div
|
|
211
|
+
className={styles.flex}
|
|
212
|
+
data-self="500"
|
|
213
|
+
data-items="150"
|
|
214
|
+
data-align="center"
|
|
215
|
+
>
|
|
216
|
+
<div className={styles.grid} data-items="150">
|
|
217
|
+
<div className={styles.info}>
|
|
218
|
+
<MapPinIcon />
|
|
219
|
+
Grunerlokka, Oslo
|
|
220
|
+
</div>
|
|
221
|
+
<div className={styles.info}>
|
|
222
|
+
<ClockIcon />
|
|
223
|
+
12.00 - 22.00
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
<div className={styles.grid} data-items="150">
|
|
227
|
+
<div className={styles.info}>
|
|
228
|
+
<SmileyMehIcon />
|
|
229
|
+
06.01.2024
|
|
230
|
+
</div>
|
|
231
|
+
<div className={styles.info}>
|
|
232
|
+
<HourglassHighIcon />
|
|
233
|
+
107.02.2020
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
<button
|
|
237
|
+
type="button"
|
|
238
|
+
className={styles.button}
|
|
239
|
+
data-variant="secondary"
|
|
240
|
+
data-nowrap
|
|
241
|
+
data-fixed
|
|
242
|
+
data-arrow
|
|
243
|
+
>
|
|
244
|
+
Planlegg tur
|
|
245
|
+
</button>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
<div className={styles.card}>
|
|
250
|
+
<div className={styles.flex} data-align="center">
|
|
251
|
+
<h2 data-size="md" data-self="250" data-fixed>
|
|
252
|
+
Burgern
|
|
253
|
+
</h2>
|
|
254
|
+
<div
|
|
255
|
+
className={styles.flex}
|
|
256
|
+
data-self="500"
|
|
257
|
+
data-items="150"
|
|
258
|
+
data-align="center"
|
|
259
|
+
>
|
|
260
|
+
<div className={styles.grid} data-items="150">
|
|
261
|
+
<div className={styles.info}>
|
|
262
|
+
<MapPinIcon />
|
|
263
|
+
Sentrum, Oslo
|
|
264
|
+
</div>
|
|
265
|
+
<div className={styles.info}>
|
|
266
|
+
<ClockIcon />
|
|
267
|
+
14.00 - 22.00{" "}
|
|
268
|
+
<span
|
|
269
|
+
className={styles.tag}
|
|
270
|
+
data-size="sm"
|
|
271
|
+
data-color="info"
|
|
272
|
+
data-icon="none"
|
|
273
|
+
>
|
|
274
|
+
Kveld
|
|
275
|
+
</span>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
<div className={styles.grid} data-items="150">
|
|
279
|
+
<div className={styles.info}>
|
|
280
|
+
<SmileyMehIcon />
|
|
281
|
+
14.06.2022
|
|
282
|
+
</div>
|
|
283
|
+
<div className={styles.info}>
|
|
284
|
+
<HourglassHighIcon />
|
|
285
|
+
13.02.2023
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
<button
|
|
289
|
+
type="button"
|
|
290
|
+
className={styles.button}
|
|
291
|
+
data-variant="secondary"
|
|
292
|
+
data-nowrap
|
|
293
|
+
data-fixed
|
|
294
|
+
data-arrow
|
|
295
|
+
>
|
|
296
|
+
Planlegg tur
|
|
297
|
+
</button>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
<div className={styles.card}>
|
|
302
|
+
<div className={styles.flex} data-align="center">
|
|
303
|
+
<h2 data-size="md" data-self="250" data-fixed>
|
|
304
|
+
Den lekke tomat
|
|
305
|
+
</h2>
|
|
306
|
+
<div
|
|
307
|
+
className={styles.flex}
|
|
308
|
+
data-self="500"
|
|
309
|
+
data-items="150"
|
|
310
|
+
data-align="center"
|
|
311
|
+
>
|
|
312
|
+
<div className={styles.grid} data-items="150">
|
|
313
|
+
<div className={styles.info}>
|
|
314
|
+
<MapPinIcon />
|
|
315
|
+
Sagene, Oslo
|
|
316
|
+
</div>
|
|
317
|
+
<div className={styles.info}>
|
|
318
|
+
<ClockIcon />
|
|
319
|
+
11.00 - 22.00
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
<div className={styles.grid} data-items="150">
|
|
323
|
+
<div className={styles.info}>
|
|
324
|
+
<SmileyMehIcon />
|
|
325
|
+
08.01.2024
|
|
326
|
+
</div>
|
|
327
|
+
<div className={styles.info}>
|
|
328
|
+
<HourglassHighIcon />
|
|
329
|
+
23.03.2025
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
<button
|
|
333
|
+
type="button"
|
|
334
|
+
className={styles.button}
|
|
335
|
+
data-variant="secondary"
|
|
336
|
+
data-nowrap
|
|
337
|
+
data-fixed
|
|
338
|
+
data-arrow
|
|
339
|
+
>
|
|
340
|
+
Planlegg tur
|
|
341
|
+
</button>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
Ikke gruppert eksempel:
|
|
346
|
+
<div className={styles.card}>
|
|
347
|
+
<div className={styles.flex} data-items="150">
|
|
348
|
+
<h2 data-size="md">Ananasen</h2>
|
|
349
|
+
<div className={styles.info}>
|
|
350
|
+
<MapPinIcon />
|
|
351
|
+
Loren, Oslo
|
|
352
|
+
</div>
|
|
353
|
+
<div className={styles.info}>
|
|
354
|
+
<ClockIcon />
|
|
355
|
+
13.00 - 22.00
|
|
356
|
+
</div>
|
|
357
|
+
<div className={styles.info}>
|
|
358
|
+
<SmileyMehIcon />
|
|
359
|
+
06.01.2023
|
|
360
|
+
</div>
|
|
361
|
+
<div className={styles.info}>
|
|
362
|
+
<HourglassHighIcon />
|
|
363
|
+
07.04.2025
|
|
364
|
+
</div>
|
|
365
|
+
<button
|
|
366
|
+
type="button"
|
|
367
|
+
className={styles.button}
|
|
368
|
+
data-variant="secondary"
|
|
369
|
+
data-arrow
|
|
370
|
+
>
|
|
371
|
+
Planlegg tur
|
|
372
|
+
</button>
|
|
373
|
+
</div>
|
|
374
|
+
</div>
|
|
375
|
+
</>
|
|
376
|
+
),
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
// export const Expandable: Story = {
|
|
380
|
+
// render: () => (
|
|
381
|
+
// <u-details className={styles.card}>
|
|
382
|
+
// <u-summary className={styles.flex} data-align="center">
|
|
383
|
+
// <h2 data-size="md" data-self="250" data-fixed>
|
|
384
|
+
// 123456789
|
|
385
|
+
// </h2>
|
|
386
|
+
// <span className={styles.flex} data-self="500" data-items="100">
|
|
387
|
+
// <span className={styles.grid} data-items="100">
|
|
388
|
+
// <div className={styles.info}>
|
|
389
|
+
// <CalendarDotsIcon />
|
|
390
|
+
// 06.12.2024
|
|
391
|
+
// </span>
|
|
392
|
+
// <div className={styles.info}>
|
|
393
|
+
// <ClockIcon />
|
|
394
|
+
// 19:37
|
|
395
|
+
// </span>
|
|
396
|
+
// </span>
|
|
397
|
+
// <span className={styles.grid} data-items="100">
|
|
398
|
+
// <div className={styles.info}>
|
|
399
|
+
// <UploadSimpleIcon />
|
|
400
|
+
// Groene Tuin
|
|
401
|
+
// </span>
|
|
402
|
+
// <div className={styles.info}>
|
|
403
|
+
// <i>🇫🇷</i>
|
|
404
|
+
// Frankrike
|
|
405
|
+
// </span>
|
|
406
|
+
// </span>
|
|
407
|
+
// <span className={styles.grid} data-self="500" data-items="250">
|
|
408
|
+
// <div className={styles.info}>
|
|
409
|
+
// <DownloadSimpleIcon />
|
|
410
|
+
// Blomquist Blomster AS
|
|
411
|
+
// </span>
|
|
412
|
+
// <div className={styles.info}>
|
|
413
|
+
// <ListChecksIcon />
|
|
414
|
+
// Daucus carota, Hydrangea paniculata, +4
|
|
415
|
+
// </span>
|
|
416
|
+
// </span>
|
|
417
|
+
// </span>
|
|
418
|
+
// </u-summary>
|
|
419
|
+
// <div>Hei</div>
|
|
420
|
+
// </u-details>
|
|
421
|
+
// ),
|
|
422
|
+
// };
|
|
423
|
+
|
|
424
|
+
export const GroupStory: Story = {
|
|
425
|
+
name: "Group",
|
|
426
|
+
parameters: { showInOverview: true },
|
|
427
|
+
render: () => (
|
|
428
|
+
<div className={styles.group}>
|
|
429
|
+
<div className={styles.grid} data-gap="1">
|
|
430
|
+
<div className={styles.card}>Card</div>
|
|
431
|
+
<div className={styles.card}>Card</div>
|
|
432
|
+
<div className={styles.card}>Card</div>
|
|
433
|
+
</div>
|
|
434
|
+
</div>
|
|
435
|
+
),
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
export const WithInput: Story = {
|
|
439
|
+
render: () => (
|
|
440
|
+
<Grid data-items="400" data-fixed>
|
|
441
|
+
<Card as="label">
|
|
442
|
+
<Prose>
|
|
443
|
+
<Heading>
|
|
444
|
+
<Input type="radio" name="radio-card" />
|
|
445
|
+
Velg dette kortet
|
|
446
|
+
</Heading>
|
|
447
|
+
<p>
|
|
448
|
+
Quisque vitae nibh quis dui lobortis consectetur. Vivamus sed nisl
|
|
449
|
+
quis enim venenatis hendrerit eu vitae mauris. Praesent at commodo
|
|
450
|
+
libero.
|
|
451
|
+
</p>
|
|
452
|
+
</Prose>
|
|
453
|
+
</Card>
|
|
454
|
+
<Card as="label">
|
|
455
|
+
<Prose>
|
|
456
|
+
<Heading>
|
|
457
|
+
<Input type="radio" name="radio-card" />
|
|
458
|
+
Velg dette kortet
|
|
459
|
+
</Heading>
|
|
460
|
+
<p>
|
|
461
|
+
Quisque vitae nibh quis dui lobortis consectetur. Vivamus sed nisl
|
|
462
|
+
quis enim venenatis hendrerit eu vitae mauris. Praesent at commodo
|
|
463
|
+
libero.
|
|
464
|
+
</p>
|
|
465
|
+
</Prose>
|
|
466
|
+
</Card>
|
|
467
|
+
</Grid>
|
|
468
|
+
),
|
|
469
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Meta, Canvas } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import { CssVariables, JumpTo } from '../../.storybook/blocks';
|
|
3
|
+
import { Button, Grid } from '../react';
|
|
4
|
+
import * as stories from './chart.stories';
|
|
5
|
+
|
|
6
|
+
<Meta of={stories} />
|
|
7
|
+
|
|
8
|
+
# Chart
|
|
9
|
+
|
|
10
|
+
<JumpTo />
|
|
11
|
+
|
|
12
|
+
<Button style={{ marginBlock: '0 -1em' }} href="?path=/docs/identitet-infografikk--docs" data-variant="secondary" data-arrow>Se også Infografikk-generator</Button>
|
|
13
|
+
|
|
14
|
+
## Kode
|
|
15
|
+
- Bruk elementet `<mtds-chart>`
|
|
16
|
+
- Bruk `data-variant="column | column-stacked | bar | bar-stacked | line | area | doughnut"`
|
|
17
|
+
- Sett inn en tabell som inneholder:
|
|
18
|
+
- Første rad med grupperings-ledetekster
|
|
19
|
+
- Andre rad og utover med dataserier, hvor første kolonne er dataserie-tittel
|
|
20
|
+
- **Merk:** Bruk av `thead`, `tbody` eller `th` er valgfritt - radene parses uansett
|
|
21
|
+
- **React?** Du kan alternativt sende inn data som en array via `data`-prop
|
|
22
|
+
<Canvas of={stories.Default} />
|
|
23
|
+
|
|
24
|
+
## Stående stolpediagram
|
|
25
|
+
- Bruk `data-variant="column"` for stående søylediagram
|
|
26
|
+
- Bruk `data-variant="column-stacked"` for stablet gruppering
|
|
27
|
+
<Grid data-items="300"><Canvas sourceState='none' of={stories.Column} /><Canvas sourceState='none' of={stories.ColumnStacked} /></Grid>
|
|
28
|
+
|
|
29
|
+
## Liggende stolpediagram
|
|
30
|
+
- Bruk `data-variant="bar"` for liggende søylediagram
|
|
31
|
+
- Bruk `data-variant="bar-stacked"` for stablet gruppering
|
|
32
|
+
<Grid data-items="300"><Canvas sourceState='none' of={stories.Bar} /><Canvas sourceState='none' of={stories.BarStacked} /></Grid>
|
|
33
|
+
|
|
34
|
+
## Linjediagram
|
|
35
|
+
- Bruk `data-variant="line"` for linjediagram eller `data-variant="area"` for fylt linjediagram
|
|
36
|
+
<Grid data-items="300"><Canvas sourceState='none' of={stories.Line} /><Canvas sourceState='none' of={stories.Area} /></Grid>
|
|
37
|
+
|
|
38
|
+
## Kakediagram
|
|
39
|
+
- Bruk `data-variant="pie"` eller `data-variant="doughnut"` for Kakediagram
|
|
40
|
+
<Grid data-items="300"><Canvas sourceState='none' of={stories.Pie} /><Canvas sourceState='none' of={stories.Doughnut} /></Grid>
|
|
41
|
+
|
|
42
|
+
## Skjule elementer
|
|
43
|
+
- Bruk `data-legend="false"` for å skjule legend
|
|
44
|
+
- Bruk `data-dots="false"` for å skjule dotter i `data-variant="line | area"`
|
|
45
|
+
- Bruk `data-steps="false"` for å skjule steg-tekster
|
|
46
|
+
- Bruk `data-labels="false"` for å skjule grupperings-lekster
|
|
47
|
+
<Grid data-items="300"><Canvas sourceState='none' of={stories.WithLegendDisabled} /><Canvas sourceState='none' of={stories.WithDotsDisabled} /></Grid>
|
|
48
|
+
|
|
49
|
+
<CssVariables component='chart' />
|
|
50
|
+
|
|
51
|
+
Du kan med andre ord styre hvilket dataset som har hvilken farge, ved å f.eks gjøre:
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
/* Forskjellig farge for hver gruppe */
|
|
55
|
+
.my-chart {
|
|
56
|
+
--mtdsc-chart-color-1: var(--mtds-color-charts-chart-c);
|
|
57
|
+
--mtdsc-chart-color-2: var(--mtds-color-charts-chart-b);
|
|
58
|
+
--mtdsc-chart-color-3: var(--mtds-color-charts-chart-a);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Forskjellig farge for hver verdi i samme gruppe: */
|
|
62
|
+
.my-chart {
|
|
63
|
+
--mtdsc-chart-color-1-1: var(--mtds-color-charts-chart-c);
|
|
64
|
+
--mtdsc-chart-color-1-2: var(--mtds-color-charts-chart-b);
|
|
65
|
+
--mtdsc-chart-color-1-3: var(--mtds-color-charts-chart-a);
|
|
66
|
+
}
|
|
67
|
+
```
|