@navikt/ds-react 0.19.8 → 0.19.11

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 (50) hide show
  1. package/_docs.json +20 -1
  2. package/cjs/form/Textarea.js +12 -4
  3. package/cjs/form/error-summary/ErrorSummary.js +4 -2
  4. package/cjs/loader/Loader.js +2 -2
  5. package/esm/form/Textarea.d.ts +4 -0
  6. package/esm/form/Textarea.js +12 -4
  7. package/esm/form/Textarea.js.map +1 -1
  8. package/esm/form/error-summary/ErrorSummary.js +4 -2
  9. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  10. package/esm/loader/Loader.d.ts +1 -1
  11. package/esm/loader/Loader.js +2 -2
  12. package/esm/loader/Loader.js.map +1 -1
  13. package/package.json +2 -2
  14. package/src/alert/alert.stories.tsx +9 -1
  15. package/src/form/Textarea.tsx +17 -2
  16. package/src/form/error-summary/ErrorSummary.tsx +9 -3
  17. package/src/form/stories/textarea.stories.tsx +10 -0
  18. package/src/guide-panel/guidepanel.stories.tsx +51 -0
  19. package/src/help-text/help-text.stories.tsx +53 -18
  20. package/src/link/link.stories.tsx +77 -0
  21. package/src/link-panel/link-panel.stories.tsx +57 -0
  22. package/src/loader/Loader.tsx +8 -4
  23. package/src/loader/loader.stories.tsx +79 -0
  24. package/src/modal/modal.stories.tsx +71 -38
  25. package/src/panel/{stories/panel.stories.tsx → panel.stories.tsx} +27 -5
  26. package/src/popover/popover.stories.tsx +126 -0
  27. package/src/table/stories/table-async.stories.tsx +1 -1
  28. package/src/table/stories/table-expandable.stories.tsx +89 -62
  29. package/src/table/stories/table.stories.tsx +73 -83
  30. package/src/tag/tag.stories.tsx +45 -0
  31. package/src/toggle-group/ToggleGroup.stories.tsx +63 -81
  32. package/src/typography/heading.stories.tsx +75 -0
  33. package/src/typography/typography.stories.tsx +184 -111
  34. package/src/guide-panel/stories/example.css +0 -13
  35. package/src/guide-panel/stories/guidepanel.stories.mdx +0 -81
  36. package/src/guide-panel/stories/guidepanel.stories.tsx +0 -68
  37. package/src/link/stories/link.stories.mdx +0 -26
  38. package/src/link/stories/link.stories.tsx +0 -53
  39. package/src/link-panel/stories/illustration.tsx +0 -125
  40. package/src/link-panel/stories/link-panel.stories.mdx +0 -110
  41. package/src/link-panel/stories/link-panel.stories.tsx +0 -51
  42. package/src/loader/stories/loader.stories.mdx +0 -65
  43. package/src/loader/stories/loader.stories.tsx +0 -69
  44. package/src/panel/stories/panel.stories.mdx +0 -42
  45. package/src/popover/stories/popover.stories.mdx +0 -23
  46. package/src/popover/stories/popover.stories.tsx +0 -56
  47. package/src/table/stories/table-hot.stories.tsx +0 -376
  48. package/src/table/stories/table.stories.mdx +0 -112
  49. package/src/tag/stories/tag.stories.mdx +0 -56
  50. package/src/tag/stories/tag.stories.tsx +0 -32
@@ -3,85 +3,82 @@ import { Table } from "../";
3
3
  import { Alert, Button, Checkbox, Link } from "../..";
4
4
 
5
5
  export default {
6
- title: "ds-react/table",
6
+ title: "ds-react/Table",
7
7
  component: Table,
8
8
  };
9
9
 
10
- export const All = () => {
11
- const TableComponent = (props) => (
12
- <Table {...props}>
13
- <Table.Header>
14
- <Table.Row>
15
- {props.button && <Table.HeaderCell>Action</Table.HeaderCell>}
16
- <Table.HeaderCell>ID</Table.HeaderCell>
17
- <Table.HeaderCell>Fornavn</Table.HeaderCell>
18
- <Table.HeaderCell>Etternavn</Table.HeaderCell>
19
- <Table.HeaderCell>Rolle</Table.HeaderCell>
20
- </Table.Row>
21
- </Table.Header>
22
- <Table.Body>
23
- <Table.Row>
24
- {props.button && (
25
- <Table.DataCell
26
- style={{
27
- paddingTop: 6,
28
- paddingBottom: 6,
29
- }}
30
- >
31
- <Button size="xsmall">Click me!</Button>
32
- </Table.DataCell>
33
- )}
34
- <Table.HeaderCell>1</Table.HeaderCell>
35
- <Table.DataCell>Jean-Luc</Table.DataCell>
36
- <Table.DataCell>Picard</Table.DataCell>
37
- <Table.DataCell>Kaptein</Table.DataCell>
38
- </Table.Row>
39
- <Table.Row>
40
- {props.button && (
41
- <Table.DataCell
42
- style={{
43
- paddingTop: 6,
44
- paddingBottom: 6,
45
- }}
46
- >
47
- <Button size="xsmall">Click me!</Button>
48
- </Table.DataCell>
49
- )}
50
- <Table.HeaderCell>2</Table.HeaderCell>
51
- <Table.DataCell>William</Table.DataCell>
52
- <Table.DataCell>Riker</Table.DataCell>
53
- <Table.DataCell>Kommandør</Table.DataCell>
54
- </Table.Row>
55
- <Table.Row>
56
- {props.button && (
57
- <Table.DataCell
58
- style={{
59
- paddingTop: 6,
60
- paddingBottom: 6,
61
- }}
62
- >
63
- <Button size="xsmall">Click me!</Button>
64
- </Table.DataCell>
65
- )}
66
- <Table.HeaderCell>3</Table.HeaderCell>
67
- <Table.DataCell>Geordi</Table.DataCell>
68
- <Table.DataCell>La Forge</Table.DataCell>
69
- <Table.DataCell>Sjefsingeniør</Table.DataCell>
70
- </Table.Row>
71
- </Table.Body>
72
- </Table>
73
- );
10
+ const TableComponent = (props) => (
11
+ <Table {...props}>
12
+ <Table.Header>
13
+ <Table.Row>
14
+ {props.button && <Table.HeaderCell>Action</Table.HeaderCell>}
15
+ <Table.HeaderCell>ID</Table.HeaderCell>
16
+ <Table.HeaderCell>Fornavn</Table.HeaderCell>
17
+ <Table.HeaderCell>Etternavn</Table.HeaderCell>
18
+ <Table.HeaderCell>Rolle</Table.HeaderCell>
19
+ </Table.Row>
20
+ </Table.Header>
21
+ <Table.Body>
22
+ <Table.Row>
23
+ {props.button && (
24
+ <Table.DataCell
25
+ style={{
26
+ paddingTop: 6,
27
+ paddingBottom: 6,
28
+ }}
29
+ >
30
+ <Button size="xsmall">Click me!</Button>
31
+ </Table.DataCell>
32
+ )}
33
+ <Table.HeaderCell>1</Table.HeaderCell>
34
+ <Table.DataCell>Jean-Luc</Table.DataCell>
35
+ <Table.DataCell>Picard</Table.DataCell>
36
+ <Table.DataCell>Kaptein</Table.DataCell>
37
+ </Table.Row>
38
+ <Table.Row>
39
+ {props.button && (
40
+ <Table.DataCell
41
+ style={{
42
+ paddingTop: 6,
43
+ paddingBottom: 6,
44
+ }}
45
+ >
46
+ <Button size="xsmall">Click me!</Button>
47
+ </Table.DataCell>
48
+ )}
49
+ <Table.HeaderCell>2</Table.HeaderCell>
50
+ <Table.DataCell>William</Table.DataCell>
51
+ <Table.DataCell>Riker</Table.DataCell>
52
+ <Table.DataCell>Kommandør</Table.DataCell>
53
+ </Table.Row>
54
+ <Table.Row>
55
+ {props.button && (
56
+ <Table.DataCell
57
+ style={{
58
+ paddingTop: 6,
59
+ paddingBottom: 6,
60
+ }}
61
+ >
62
+ <Button size="xsmall">Click me!</Button>
63
+ </Table.DataCell>
64
+ )}
65
+ <Table.HeaderCell>3</Table.HeaderCell>
66
+ <Table.DataCell>Geordi</Table.DataCell>
67
+ <Table.DataCell>La Forge</Table.DataCell>
68
+ <Table.DataCell>Sjefsingeniør</Table.DataCell>
69
+ </Table.Row>
70
+ </Table.Body>
71
+ </Table>
72
+ );
73
+
74
+ export const Default = () => <TableComponent />;
75
+ export const Zebra = () => <TableComponent zebraStripes />;
76
+ export const Small = () => <TableComponent size="small" />;
77
+ export const Buttons = () => <TableComponent size="small" button />;
78
+
79
+ export const WithDivs = () => {
74
80
  return (
75
81
  <>
76
- <h1>Table</h1>
77
- <TableComponent />
78
- <h2>Zebra</h2>
79
- <TableComponent zebraStripes />
80
- <h2>Small Table</h2>
81
- <TableComponent size="small" />
82
- <h2>Small Table with buttons</h2>
83
- <TableComponent size="small" button />
84
- <h2>Table with divs</h2>
85
82
  <Alert variant="warning">
86
83
  Obs! Hvis man skal bygge tabeller uten å bruke vanlig {"<tabell> "}
87
84
  -markup er det svært viktig at man supplerer elementene med{" "}
@@ -147,15 +144,8 @@ export const All = () => {
147
144
  );
148
145
  };
149
146
 
150
- export const Selection = () => (
151
- <>
152
- <h1>Selection</h1>
153
- <h2>Medium</h2>
154
- <SelectionTable />
155
- <h2>Small</h2>
156
- <SelectionTable size="small" />
157
- </>
158
- );
147
+ export const Selection = () => <SelectionTable />;
148
+ export const SelectionSmall = () => <SelectionTable size="small" />;
159
149
 
160
150
  const SelectionTable = ({ size = "medium" }: { size?: "small" | "medium" }) => {
161
151
  const useToggleList = (initialState) => {
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import { Tag } from ".";
3
+
4
+ export default {
5
+ title: "ds-react/Tag",
6
+ component: Tag,
7
+ argTypes: {
8
+ variant: {
9
+ defaultValue: "info",
10
+ control: {
11
+ type: "radio",
12
+ options: ["error", "warning", "info", "success"],
13
+ },
14
+ },
15
+ },
16
+ };
17
+
18
+ const variants: Array<"error" | "warning" | "info" | "success"> = [
19
+ "error",
20
+ "warning",
21
+ "info",
22
+ "success",
23
+ ];
24
+
25
+ export const Default = (props) => (
26
+ <Tag variant={props.variant} size={props.size}>
27
+ {props.children}
28
+ </Tag>
29
+ );
30
+
31
+ Default.args = {
32
+ children: "Id elit esse",
33
+ };
34
+
35
+ export const Small = () => {
36
+ return (
37
+ <div className="rowgap">
38
+ {variants.map((variant, i) => (
39
+ <Tag key={variant} variant={variant} size="small">
40
+ {new Array(i + 1).fill("Id elit esse")}
41
+ </Tag>
42
+ ))}
43
+ </div>
44
+ );
45
+ };
@@ -1,122 +1,104 @@
1
+ import { Email, EmailOpened, Send } from "@navikt/ds-icons";
2
+ import { Meta } from "@storybook/react/types-6-0";
1
3
  import React, { useState } from "react";
2
- import { Attachment, Hamburger, Star, System } from "@navikt/ds-icons";
3
4
  import { ToggleGroup } from "../index";
4
- import { Meta } from "@storybook/react/types-6-0";
5
5
  export default {
6
- title: "ds-react/toggle-group",
6
+ title: "ds-react/ToggleGroup",
7
7
  component: ToggleGroup,
8
- parameters: {
9
- chromatic: { disable: true },
8
+ argTypes: {
9
+ size: {
10
+ control: {
11
+ type: "radio",
12
+ options: ["medium", "small"],
13
+ },
14
+ },
10
15
  },
11
16
  } as Meta;
12
17
 
13
18
  const Items = (icon?: boolean, both?: boolean) => (
14
19
  <>
15
- <ToggleGroup.Item value="first">
20
+ <ToggleGroup.Item value="ulest">
16
21
  {both ? (
17
22
  <>
18
- <Hamburger /> First
23
+ <Email /> Uleste
19
24
  </>
20
25
  ) : (
21
- <>{icon ? <Hamburger /> : "First"}</>
26
+ <>{icon ? <Email /> : "Uleste"}</>
22
27
  )}
23
28
  </ToggleGroup.Item>
24
- <ToggleGroup.Item value="second">
29
+ <ToggleGroup.Item value="lest">
25
30
  {both ? (
26
31
  <>
27
- <Star /> Second more txt
32
+ <EmailOpened /> Leste
28
33
  </>
29
34
  ) : (
30
- <>{icon ? <Star /> : "Second more txt"}</>
35
+ <>{icon ? <EmailOpened /> : "Leste"}</>
31
36
  )}
32
37
  </ToggleGroup.Item>
33
- <ToggleGroup.Item value="third">
38
+ <ToggleGroup.Item value="sendt">
34
39
  {both ? (
35
40
  <>
36
- <Attachment /> Thrid
41
+ <Send /> Sendte
37
42
  </>
38
43
  ) : (
39
- <>{icon ? <Attachment /> : "Third"}</>
40
- )}
41
- </ToggleGroup.Item>
42
- <ToggleGroup.Item value="fourth">
43
- {both ? (
44
- <>
45
- <System /> Fourth
46
- </>
47
- ) : (
48
- <>{icon ? <System /> : "Fourth"}</>
44
+ <>{icon ? <Send /> : "Sendte"}</>
49
45
  )}
50
46
  </ToggleGroup.Item>
51
47
  </>
52
48
  );
53
49
 
54
- export const UUDemo = () => {
50
+ export const Default = (props) => {
55
51
  const [activeValue, setActiveValue] = useState("ulest");
56
52
  return (
57
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
58
- <ToggleGroup.Item value="ulest">Ulest</ToggleGroup.Item>
59
- <ToggleGroup.Item value="lest">Leste</ToggleGroup.Item>
60
- <ToggleGroup.Item value="sendt">Sendte</ToggleGroup.Item>
53
+ <ToggleGroup
54
+ size={props?.size}
55
+ value={activeValue}
56
+ onChange={setActiveValue}
57
+ label={props.label ? "Proident minim dolor pariatur." : undefined}
58
+ >
59
+ {Items(!!props?.icon, !!props?.text && props.icon)}
61
60
  </ToggleGroup>
62
61
  );
63
62
  };
64
63
 
65
- export const All = () => {
66
- const [activeValue, setActiveValue] = useState("first");
64
+ Default.args = {
65
+ icon: true,
66
+ text: true,
67
+ label: false,
68
+ };
69
+
70
+ export const Compositions = () => {
71
+ const [activeValue, setActiveValue] = useState("ulest");
72
+
73
+ return (
74
+ <div className="colgap">
75
+ <ToggleGroup value={activeValue} onChange={setActiveValue}>
76
+ {Items()}
77
+ </ToggleGroup>
78
+ <ToggleGroup value={activeValue} onChange={setActiveValue}>
79
+ {Items(true, true)}
80
+ </ToggleGroup>
81
+ <ToggleGroup value={activeValue} onChange={setActiveValue}>
82
+ {Items(true)}
83
+ </ToggleGroup>
84
+ </div>
85
+ );
86
+ };
87
+
88
+ export const Small = () => {
89
+ const [activeValue, setActiveValue] = useState("ulest");
67
90
 
68
91
  return (
69
- <div>
70
- <h2>ToggleGroup</h2>
71
- <h3>{activeValue}</h3>
72
- <div style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
73
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
74
- {Items()}
75
- </ToggleGroup>
76
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
77
- {Items(true)}
78
- </ToggleGroup>
79
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
80
- {Items(true, true)}
81
- </ToggleGroup>
82
- </div>
83
- <h2>ToggleGroup Small</h2>
84
- <h3>{activeValue}</h3>
85
- <div style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
86
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
87
- {Items()}
88
- </ToggleGroup>
89
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
90
- {Items(true)}
91
- </ToggleGroup>
92
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
93
- {Items(true, true)}
94
- </ToggleGroup>
95
- </div>
96
- <h2>ToggleGroup label</h2>
97
- <div style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
98
- <ToggleGroup
99
- label="Label msg"
100
- value={activeValue}
101
- onChange={setActiveValue}
102
- >
103
- {Items()}
104
- </ToggleGroup>
105
- <ToggleGroup
106
- label="Label msg"
107
- value={activeValue}
108
- onChange={setActiveValue}
109
- aria-describedby="demo-id"
110
- >
111
- {Items()}
112
- </ToggleGroup>
113
- </div>
114
- <div style={{ display: "flex", flexDirection: "column", gap: "0.5rem" }}>
115
- <h2>Uncontrolled</h2>
116
- <ToggleGroup onChange={setActiveValue} defaultValue="second">
117
- {Items()}
118
- </ToggleGroup>
119
- </div>
92
+ <div className="colgap">
93
+ <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
94
+ {Items()}
95
+ </ToggleGroup>
96
+ <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
97
+ {Items(true, true)}
98
+ </ToggleGroup>
99
+ <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
100
+ {Items(true)}
101
+ </ToggleGroup>
120
102
  </div>
121
103
  );
122
104
  };
@@ -0,0 +1,75 @@
1
+ import { Meta } from "@storybook/react";
2
+ import React from "react";
3
+ import { Heading } from "..";
4
+
5
+ export default {
6
+ title: "ds-react/Typography/Heading",
7
+ component: Heading,
8
+ argTypes: {
9
+ size: {
10
+ defaultValue: "large",
11
+ control: {
12
+ type: "radio",
13
+ options: ["xlarge", "large", "medium", "small", "xsmall"],
14
+ },
15
+ },
16
+ level: {
17
+ defaultValue: "1",
18
+ control: {
19
+ type: "radio",
20
+ options: ["1", "2", "3", "4", "5", "6"],
21
+ },
22
+ },
23
+ },
24
+ } as Meta;
25
+
26
+ const lorem = "Veniam consequat cillum";
27
+
28
+ export const Default = (props) => <Heading {...props}>{lorem}</Heading>;
29
+
30
+ Default.args = {
31
+ spacing: false,
32
+ };
33
+
34
+ export const Sizes = () => (
35
+ <div className="colgap">
36
+ <Heading level="1" size="xlarge">
37
+ {lorem}
38
+ </Heading>
39
+ <Heading level="2" size="large">
40
+ {lorem}
41
+ </Heading>
42
+ <Heading level="3" size="medium">
43
+ {lorem}
44
+ </Heading>
45
+ <Heading level="4" size="small">
46
+ {lorem}
47
+ </Heading>
48
+ <Heading level="5" size="xsmall">
49
+ {lorem}
50
+ </Heading>
51
+ </div>
52
+ );
53
+
54
+ export const Spacing = () => (
55
+ <div>
56
+ <Heading level="1" size="xlarge" spacing>
57
+ {lorem}
58
+ </Heading>
59
+ <Heading level="2" size="large" spacing>
60
+ {lorem}
61
+ </Heading>
62
+ <Heading level="3" size="medium" spacing>
63
+ {lorem}
64
+ </Heading>
65
+ <Heading level="4" size="small" spacing>
66
+ {lorem}
67
+ </Heading>
68
+ <Heading level="5" size="xsmall" spacing>
69
+ {lorem}
70
+ </Heading>
71
+ <Heading level="5" size="xsmall">
72
+ {lorem}
73
+ </Heading>
74
+ </div>
75
+ );