@navikt/ds-react 6.5.0 → 6.6.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 (153) hide show
  1. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  2. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  3. package/cjs/form/combobox/Input/Input.js +6 -1
  4. package/cjs/form/combobox/Input/Input.js.map +1 -1
  5. package/cjs/form/form-summary/FormSummary.d.ts +82 -0
  6. package/cjs/form/form-summary/FormSummary.js +81 -0
  7. package/cjs/form/form-summary/FormSummary.js.map +1 -0
  8. package/cjs/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  9. package/cjs/form/form-summary/FormSummaryAnswer.js +25 -0
  10. package/cjs/form/form-summary/FormSummaryAnswer.js.map +1 -0
  11. package/cjs/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  12. package/cjs/form/form-summary/FormSummaryAnswers.js +48 -0
  13. package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -0
  14. package/cjs/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  15. package/cjs/form/form-summary/FormSummaryEditLink.js +49 -0
  16. package/cjs/form/form-summary/FormSummaryEditLink.js.map +1 -0
  17. package/cjs/form/form-summary/FormSummaryHeader.d.ts +9 -0
  18. package/cjs/form/form-summary/FormSummaryHeader.js +48 -0
  19. package/cjs/form/form-summary/FormSummaryHeader.js.map +1 -0
  20. package/cjs/form/form-summary/FormSummaryHeading.d.ts +14 -0
  21. package/cjs/form/form-summary/FormSummaryHeading.js +31 -0
  22. package/cjs/form/form-summary/FormSummaryHeading.js.map +1 -0
  23. package/cjs/form/form-summary/FormSummaryLabel.d.ts +6 -0
  24. package/cjs/form/form-summary/FormSummaryLabel.js +45 -0
  25. package/cjs/form/form-summary/FormSummaryLabel.js.map +1 -0
  26. package/cjs/form/form-summary/FormSummaryValue.d.ts +6 -0
  27. package/cjs/form/form-summary/FormSummaryValue.js +49 -0
  28. package/cjs/form/form-summary/FormSummaryValue.js.map +1 -0
  29. package/cjs/form/form-summary/index.d.ts +8 -0
  30. package/cjs/form/form-summary/index.js +24 -0
  31. package/cjs/form/form-summary/index.js.map +1 -0
  32. package/cjs/index.d.ts +3 -2
  33. package/cjs/index.js +5 -3
  34. package/cjs/index.js.map +1 -1
  35. package/cjs/util/hooks/descendants/descendant.js +10 -1
  36. package/cjs/util/hooks/descendants/descendant.js.map +1 -1
  37. package/cjs/util/hooks/descendants/useDescendant.js +0 -5
  38. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  39. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  40. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  41. package/esm/form/combobox/Input/Input.js +6 -1
  42. package/esm/form/combobox/Input/Input.js.map +1 -1
  43. package/esm/form/form-summary/FormSummary.d.ts +82 -0
  44. package/esm/form/form-summary/FormSummary.js +52 -0
  45. package/esm/form/form-summary/FormSummary.js.map +1 -0
  46. package/esm/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  47. package/esm/form/form-summary/FormSummaryAnswer.js +19 -0
  48. package/esm/form/form-summary/FormSummaryAnswer.js.map +1 -0
  49. package/esm/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  50. package/esm/form/form-summary/FormSummaryAnswers.js +19 -0
  51. package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -0
  52. package/esm/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  53. package/esm/form/form-summary/FormSummaryEditLink.js +20 -0
  54. package/esm/form/form-summary/FormSummaryEditLink.js.map +1 -0
  55. package/esm/form/form-summary/FormSummaryHeader.d.ts +9 -0
  56. package/esm/form/form-summary/FormSummaryHeader.js +19 -0
  57. package/esm/form/form-summary/FormSummaryHeader.js.map +1 -0
  58. package/esm/form/form-summary/FormSummaryHeading.d.ts +14 -0
  59. package/esm/form/form-summary/FormSummaryHeading.js +5 -0
  60. package/esm/form/form-summary/FormSummaryHeading.js.map +1 -0
  61. package/esm/form/form-summary/FormSummaryLabel.d.ts +6 -0
  62. package/esm/form/form-summary/FormSummaryLabel.js +19 -0
  63. package/esm/form/form-summary/FormSummaryLabel.js.map +1 -0
  64. package/esm/form/form-summary/FormSummaryValue.d.ts +6 -0
  65. package/esm/form/form-summary/FormSummaryValue.js +20 -0
  66. package/esm/form/form-summary/FormSummaryValue.js.map +1 -0
  67. package/esm/form/form-summary/index.d.ts +8 -0
  68. package/esm/form/form-summary/index.js +10 -0
  69. package/esm/form/form-summary/index.js.map +1 -0
  70. package/esm/index.d.ts +3 -2
  71. package/esm/index.js +2 -1
  72. package/esm/index.js.map +1 -1
  73. package/esm/util/hooks/descendants/descendant.js +10 -1
  74. package/esm/util/hooks/descendants/descendant.js.map +1 -1
  75. package/esm/util/hooks/descendants/useDescendant.js +0 -5
  76. package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
  77. package/package.json +15 -4
  78. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -1
  79. package/src/form/combobox/Input/Input.tsx +5 -0
  80. package/src/form/form-summary/FormSummary.tsx +106 -0
  81. package/src/form/form-summary/FormSummaryAnswer.tsx +27 -0
  82. package/src/form/form-summary/FormSummaryAnswers.tsx +25 -0
  83. package/src/form/form-summary/FormSummaryEditLink.tsx +35 -0
  84. package/src/form/form-summary/FormSummaryHeader.tsx +25 -0
  85. package/src/form/form-summary/FormSummaryHeading.tsx +23 -0
  86. package/src/form/form-summary/FormSummaryLabel.tsx +17 -0
  87. package/src/form/form-summary/FormSummaryValue.tsx +24 -0
  88. package/src/form/form-summary/index.ts +30 -0
  89. package/src/index.ts +16 -15
  90. package/src/util/hooks/descendants/descendant.ts +15 -1
  91. package/src/util/hooks/descendants/useDescendant.tsx +0 -5
  92. package/src/accordion/accordion.stories.tsx +0 -286
  93. package/src/alert/alert.stories.tsx +0 -306
  94. package/src/button/button.stories.tsx +0 -185
  95. package/src/chat/chat.stories.tsx +0 -341
  96. package/src/chips/chips.stories.tsx +0 -260
  97. package/src/copybutton/copy-button.stories.tsx +0 -261
  98. package/src/date/datepicker/datepicker.stories.tsx +0 -614
  99. package/src/date/monthpicker/monthpicker.stories.tsx +0 -221
  100. package/src/dropdown/dropdown.stories.tsx +0 -124
  101. package/src/expansion-card/expansion-card.stories.tsx +0 -282
  102. package/src/form/checkbox/checkbox.stories.tsx +0 -281
  103. package/src/form/combobox/combobox.stories.tsx +0 -626
  104. package/src/form/confirmation-panel/confirmation-panel.stories.tsx +0 -128
  105. package/src/form/error-summary/error-summary.stories.tsx +0 -81
  106. package/src/form/fieldset/fieldset.stories.tsx +0 -157
  107. package/src/form/file-upload/file-upload-dropzone.stories.tsx +0 -123
  108. package/src/form/file-upload/file-upload-item.stories.tsx +0 -148
  109. package/src/form/file-upload/file-upload.stories.tsx +0 -248
  110. package/src/form/radio/radio.stories.tsx +0 -230
  111. package/src/form/search/search.stories.tsx +0 -238
  112. package/src/form/select/select.stories.tsx +0 -172
  113. package/src/form/switch/switch.stories.tsx +0 -171
  114. package/src/form/textarea/textarea.stories.tsx +0 -254
  115. package/src/form/textfield/text-field.stories.tsx +0 -143
  116. package/src/guide-panel/guidepanel.stories.tsx +0 -90
  117. package/src/help-text/help-text.stories.tsx +0 -91
  118. package/src/internal-header/header.stories.tsx +0 -229
  119. package/src/layout/bleed/Bleed.stories.tsx +0 -395
  120. package/src/layout/box/Box.stories.tsx +0 -380
  121. package/src/layout/grid/h-grid.stories.tsx +0 -122
  122. package/src/layout/page/Page.stories.tsx +0 -271
  123. package/src/layout/responsive/hide.stories.tsx +0 -80
  124. package/src/layout/responsive/show.stories.tsx +0 -80
  125. package/src/layout/sidemal-test/navno-sidemal.stories.tsx +0 -69
  126. package/src/layout/stack/stack.stories.tsx +0 -183
  127. package/src/link/stories/link.stories.tsx +0 -304
  128. package/src/link-panel/link-panel.stories.tsx +0 -59
  129. package/src/list/list.stories.tsx +0 -280
  130. package/src/loader/loader.stories.tsx +0 -82
  131. package/src/modal/modal.stories.tsx +0 -391
  132. package/src/pagination/pagination.stories.tsx +0 -110
  133. package/src/popover/popover.stories.tsx +0 -113
  134. package/src/portal/Portal.stories.tsx +0 -102
  135. package/src/read-more/readmore.stories.tsx +0 -91
  136. package/src/skeleton/skeleton.stories.tsx +0 -130
  137. package/src/stepper/stepper.stories.tsx +0 -200
  138. package/src/table/stories/table-1.stories.tsx +0 -292
  139. package/src/table/stories/table-2-expandable.stories.tsx +0 -298
  140. package/src/table/stories/table-3-async.stories.tsx +0 -179
  141. package/src/table/stories/tests/table.stories.tsx +0 -102
  142. package/src/tabs/Tabs.stories.tsx +0 -311
  143. package/src/tag/tag.stories.tsx +0 -126
  144. package/src/timeline/timeline.stories.tsx +0 -445
  145. package/src/toggle-group/ToggleGroup.stories.tsx +0 -198
  146. package/src/tooltip/tooltip.stories.tsx +0 -101
  147. package/src/typography/stories/bodylong.stories.tsx +0 -209
  148. package/src/typography/stories/bodyshort.stories.tsx +0 -208
  149. package/src/typography/stories/detail.stories.tsx +0 -115
  150. package/src/typography/stories/error-message.stories.tsx +0 -122
  151. package/src/typography/stories/heading.stories.tsx +0 -169
  152. package/src/typography/stories/label.stories.tsx +0 -131
  153. package/src/util/hooks/descendants/descendant.stories.tsx +0 -147
@@ -1,198 +0,0 @@
1
- import { Meta } from "@storybook/react";
2
- import React, { useState } from "react";
3
- import {
4
- EnvelopeClosedIcon,
5
- EnvelopeOpenIcon,
6
- InboxUpIcon,
7
- } from "@navikt/aksel-icons";
8
- import { VStack } from "../layout/stack";
9
- import ToggleGroup from "./ToggleGroup";
10
-
11
- const meta: Meta<typeof ToggleGroup> = {
12
- title: "ds-react/ToggleGroup",
13
- component: ToggleGroup,
14
- argTypes: {
15
- size: {
16
- options: ["medium", "small"],
17
- control: {
18
- type: "radio",
19
- },
20
- },
21
- variant: {
22
- options: ["action", "neutral"],
23
- control: { type: "radio" },
24
- },
25
- },
26
- parameters: {
27
- chromatic: { disable: true },
28
- },
29
- };
30
-
31
- export default meta;
32
-
33
- const Items = (icon?: boolean, both?: boolean) => (
34
- <>
35
- <ToggleGroup.Item value="ulest">
36
- {both ? (
37
- <>
38
- <EnvelopeClosedIcon /> Uleste
39
- </>
40
- ) : (
41
- <>{icon ? <EnvelopeClosedIcon /> : "Uleste"}</>
42
- )}
43
- </ToggleGroup.Item>
44
- <ToggleGroup.Item value="lest">
45
- {both ? (
46
- <>
47
- <EnvelopeOpenIcon /> Leste
48
- </>
49
- ) : (
50
- <>{icon ? <EnvelopeOpenIcon /> : "Leste"}</>
51
- )}
52
- </ToggleGroup.Item>
53
- <ToggleGroup.Item value="sendt">
54
- {both ? (
55
- <>
56
- <InboxUpIcon /> Sendt
57
- </>
58
- ) : (
59
- <>{icon ? <InboxUpIcon /> : "Sendt"}</>
60
- )}
61
- </ToggleGroup.Item>
62
- </>
63
- );
64
-
65
- export const Default = (props) => {
66
- const [activeValue, setActiveValue] = useState("ulest");
67
- return (
68
- <ToggleGroup
69
- size={props.size}
70
- variant={props.variant}
71
- value={activeValue}
72
- onChange={setActiveValue}
73
- label={props.label ? "Proident minim dolor pariatur." : undefined}
74
- >
75
- {Items(props.icon, props.text && props.icon)}
76
- </ToggleGroup>
77
- );
78
- };
79
-
80
- Default.args = {
81
- icon: true,
82
- text: true,
83
- label: false,
84
- };
85
-
86
- export const Compositions = () => {
87
- const [activeValue, setActiveValue] = useState("ulest");
88
-
89
- return (
90
- <VStack gap="6">
91
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
92
- {Items()}
93
- </ToggleGroup>
94
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
95
- {Items(true, true)}
96
- </ToggleGroup>
97
- <ToggleGroup value={activeValue} onChange={setActiveValue}>
98
- {Items(true)}
99
- </ToggleGroup>
100
- <ToggleGroup fill value={activeValue} onChange={setActiveValue}>
101
- {Items(true)}
102
- </ToggleGroup>
103
- </VStack>
104
- );
105
- };
106
-
107
- export const Variants = () => {
108
- const [activeValue, setActiveValue] = useState("ulest");
109
-
110
- return (
111
- <VStack gap="6">
112
- <ToggleGroup
113
- variant="action"
114
- value={activeValue}
115
- onChange={setActiveValue}
116
- >
117
- {Items(true, true)}
118
- </ToggleGroup>
119
- <ToggleGroup
120
- variant="neutral"
121
- value={activeValue}
122
- onChange={setActiveValue}
123
- >
124
- {Items(true, true)}
125
- </ToggleGroup>
126
- </VStack>
127
- );
128
- };
129
-
130
- export const Small = () => {
131
- const [activeValue, setActiveValue] = useState("ulest");
132
-
133
- return (
134
- <VStack gap="6">
135
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
136
- {Items()}
137
- </ToggleGroup>
138
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
139
- {Items(true, true)}
140
- </ToggleGroup>
141
- <ToggleGroup size="small" value={activeValue} onChange={setActiveValue}>
142
- {Items(true)}
143
- </ToggleGroup>
144
- </VStack>
145
- );
146
- };
147
-
148
- export const Chromatic = {
149
- render: () => (
150
- <VStack gap="6">
151
- <div>
152
- <h2>Text</h2>
153
- <ToggleGroup value="ulest" onChange={console.log}>
154
- {Items()}
155
- </ToggleGroup>
156
- </div>
157
- <div>
158
- <h2>Icon</h2>
159
- <ToggleGroup value="ulest" onChange={console.log}>
160
- {Items(true)}
161
- </ToggleGroup>
162
- </div>
163
- <div>
164
- <h2>Text + icon</h2>
165
- <ToggleGroup value="ulest" onChange={console.log}>
166
- {Items(true, true)}
167
- </ToggleGroup>
168
- </div>
169
- <div style={{ minWidth: 600 }}>
170
- <h2>Fill</h2>
171
- <ToggleGroup value="ulest" onChange={console.log} fill>
172
- {Items(true, true)}
173
- </ToggleGroup>
174
- </div>
175
- <div>
176
- <h2>Small</h2>
177
- <ToggleGroup value="ulest" onChange={console.log} size="small">
178
- {Items(true, true)}
179
- </ToggleGroup>
180
- </div>
181
- <div>
182
- <h2>Small + fill</h2>
183
- <ToggleGroup value="ulest" onChange={console.log} size="small" fill>
184
- {Items(true, true)}
185
- </ToggleGroup>
186
- </div>
187
- <div>
188
- <h2>Neutral</h2>
189
- <ToggleGroup value="ulest" onChange={console.log} variant="neutral">
190
- {Items(true, true)}
191
- </ToggleGroup>
192
- </div>
193
- </VStack>
194
- ),
195
- parameters: {
196
- chromatic: { disable: false },
197
- },
198
- };
@@ -1,101 +0,0 @@
1
- import { Meta } from "@storybook/react";
2
- import React from "react";
3
- import { Alert } from "../alert";
4
- import { Button } from "../button";
5
- import { Search } from "../form/search";
6
- import Tooltip from "./Tooltip";
7
-
8
- export default {
9
- title: "ds-react/Tooltip",
10
- component: Tooltip,
11
- parameters: {
12
- chromatic: { disable: true },
13
- },
14
- argTypes: {
15
- open: {
16
- control: {
17
- type: "boolean",
18
- },
19
- },
20
- offset: {
21
- control: {
22
- type: "number",
23
- },
24
- },
25
- placement: {
26
- control: {
27
- type: "radio",
28
- options: ["top", "right", "bottom", "left"],
29
- },
30
- },
31
- },
32
- } as Meta;
33
-
34
- export const Demo = () => (
35
- <div>
36
- <Tooltip content="Tooltip example" placement="top">
37
- <Alert variant="info">test</Alert>
38
- </Tooltip>
39
- <Tooltip content="Tooltip example" placement="top">
40
- <Search label="søk" />
41
- </Tooltip>
42
- <Tooltip content="Tooltip example" placement="top">
43
- <Button aria-describedby="test123">Tooltip</Button>
44
- </Tooltip>
45
- </div>
46
- );
47
-
48
- export const Default = {
49
- render: (props) => {
50
- return (
51
- <Tooltip
52
- content="Tooltip example"
53
- open={props?.open}
54
- keys={props?.keys ? ["Cmd", "K"] : undefined}
55
- placement={props?.placement}
56
- arrow={props?.arrow}
57
- delay={props?.delay}
58
- offset={props?.offset}
59
- >
60
- <Button aria-describedby="test123">Tooltip</Button>
61
- </Tooltip>
62
- );
63
- },
64
-
65
- args: {
66
- keys: false,
67
- arrow: true,
68
- delay: 150,
69
- },
70
- };
71
-
72
- export const Placement = () => {
73
- return (
74
- <div className="colgap">
75
- <Tooltip content="Tooltip example" open={true} placement="top">
76
- <div>Element</div>
77
- </Tooltip>
78
- <Tooltip content="Tooltip example" open={true} placement="right">
79
- <div>Element</div>
80
- </Tooltip>
81
- <Tooltip content="Tooltip example" open={true} placement="left">
82
- <div>Element</div>
83
- </Tooltip>
84
- <Tooltip content="Tooltip example" open={true} placement="bottom">
85
- <div>Element</div>
86
- </Tooltip>
87
- </div>
88
- );
89
- };
90
-
91
- export const Keys = () => {
92
- return (
93
- <Tooltip
94
- content="Tooltip example Laboris reprehenderit sit sunt nisi velit mollit esse excepteur. Consectetur ullamco quis laboris enim nulla amet proident proident deserunt laborum. Aliqua adipisicing ipsum nisi ipsum nisi pariatur tempor amet aute labore laboris eiusmod adipisicing eu. Et cillum ipsum voluptate ea irure aliquip laboris mollit in. Voluptate tempor do voluptate reprehenderit ea dolor velit ullamco et magna enim ut sit. Pariatur culpa nulla consectetur voluptate id Lorem incididunt magna aliqua sunt ut Lorem. Laborum est quis aute enim et fugiat aute."
95
- open={true}
96
- keys={["CMD", "K"]}
97
- >
98
- <div>Element</div>
99
- </Tooltip>
100
- );
101
- };
@@ -1,209 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { expect, within } from "@storybook/test";
3
- import React from "react";
4
- import { VStack } from "../../layout/stack";
5
- import BodyLong from "../BodyLong";
6
-
7
- const meta: Meta<typeof BodyLong> = {
8
- title: "ds-react/Typography/BodyLong",
9
- component: BodyLong,
10
- decorators: [(story) => <div style={{ maxWidth: "700px" }}>{story()}</div>],
11
- parameters: {
12
- chromatic: { disable: true },
13
- },
14
- };
15
- export default meta;
16
-
17
- type Story = StoryObj<typeof BodyLong>;
18
-
19
- const lorem =
20
- "Hvis du ikke bor sammen med begge foreldrene dine, kan du ha rett til barnebidrag fra en eller begge foreldre mens du fullfører videregående skole eller tilsvarende.";
21
-
22
- export const Controls: Story = {
23
- args: {
24
- spacing: false,
25
- children: lorem,
26
-
27
- truncate: false,
28
- visuallyHidden: false,
29
- },
30
- argTypes: {
31
- size: {
32
- control: "radio",
33
- options: ["large", "medium", "small"],
34
- },
35
- weight: {
36
- control: "radio",
37
- options: ["regular", "semibold"],
38
- },
39
- align: {
40
- control: "radio",
41
- options: ["start", "center", "end"],
42
- },
43
- textColor: {
44
- control: "radio",
45
- options: ["default", "subtle"],
46
- },
47
- },
48
- };
49
-
50
- export const SizeLarge: Story = {
51
- render: () => (
52
- <VStack gap="4">
53
- <BodyLong size="large">{lorem}</BodyLong>
54
- <BodyLong size="large" weight="semibold">
55
- {lorem}
56
- </BodyLong>
57
- <BodyLong size="large" truncate>
58
- {lorem}
59
- </BodyLong>
60
- </VStack>
61
- ),
62
- };
63
-
64
- export const SizeMedium: Story = {
65
- render: () => (
66
- <VStack gap="2">
67
- <BodyLong size="medium">{lorem}</BodyLong>
68
- <BodyLong size="medium" weight="semibold">
69
- {lorem}
70
- </BodyLong>
71
- <BodyLong size="medium" truncate>
72
- {lorem}
73
- </BodyLong>
74
- </VStack>
75
- ),
76
- };
77
-
78
- export const SizeSmall: Story = {
79
- render: () => (
80
- <VStack gap="2">
81
- <BodyLong size="small">{lorem}</BodyLong>
82
- <BodyLong size="small" weight="semibold">
83
- {lorem}
84
- </BodyLong>
85
- <BodyLong size="small" truncate>
86
- {lorem}
87
- </BodyLong>
88
- </VStack>
89
- ),
90
- };
91
-
92
- export const SpacingLarge: Story = {
93
- render: () => (
94
- <div>
95
- <BodyLong size="large" spacing>
96
- {lorem}
97
- </BodyLong>
98
- <BodyLong size="large" spacing>
99
- {lorem}
100
- </BodyLong>
101
- </div>
102
- ),
103
- };
104
-
105
- export const SpacingMedium: Story = {
106
- render: () => (
107
- <div>
108
- <BodyLong size="medium" spacing>
109
- {lorem}
110
- </BodyLong>
111
- <BodyLong size="medium" spacing>
112
- {lorem}
113
- </BodyLong>
114
- </div>
115
- ),
116
- };
117
-
118
- export const SpacingSmall: Story = {
119
- render: () => (
120
- <div>
121
- <BodyLong size="small" spacing>
122
- {lorem}
123
- </BodyLong>
124
- <BodyLong size="small" spacing>
125
- {lorem}
126
- </BodyLong>
127
- </div>
128
- ),
129
- };
130
-
131
- export const Colors: Story = {
132
- render: () => (
133
- <VStack gap="2">
134
- <BodyLong textColor="default">{lorem}</BodyLong>
135
- <BodyLong textColor="subtle">{lorem}</BodyLong>
136
- </VStack>
137
- ),
138
- };
139
-
140
- export const Align: Story = {
141
- render: () => (
142
- <VStack gap="2">
143
- <BodyLong align="start">{lorem}</BodyLong>
144
- <BodyLong align="center">{lorem}</BodyLong>
145
- <BodyLong align="end">{lorem}</BodyLong>
146
- </VStack>
147
- ),
148
- };
149
-
150
- export const OverrideTag: Story = {
151
- render: () => (
152
- <div>
153
- <BodyLong spacing>default bodylong</BodyLong>
154
- <BodyLong as="legend">legend bodylong</BodyLong>
155
- </div>
156
- ),
157
- play: async ({ canvasElement }) => {
158
- const canvas = within(canvasElement);
159
-
160
- const defaultBodyLong = canvas.getByText("default bodylong");
161
- const legendBodyLong = canvas.getByText("legend bodylong");
162
-
163
- expect(defaultBodyLong.tagName).toEqual("P");
164
- expect(legendBodyLong.tagName).toEqual("LEGEND");
165
- },
166
- };
167
-
168
- export const Chromatic: Story = {
169
- render: (...props) => (
170
- <div>
171
- <div>
172
- <h2>Large</h2>
173
- <h3>Size</h3>
174
- {SizeLarge.render?.(...props)}
175
- <h3>Spacing</h3>
176
- {SpacingLarge.render?.(...props)}
177
- </div>
178
- <div>
179
- <h2>Medium</h2>
180
- <h3>Size</h3>
181
- {SizeMedium.render?.(...props)}
182
- <h3>Spacing</h3>
183
- {SpacingMedium.render?.(...props)}
184
- </div>
185
- <div>
186
- <h2>Small</h2>
187
- <h3>Size</h3>
188
- {SizeSmall.render?.(...props)}
189
- <h3>Spacing</h3>
190
- {SpacingSmall.render?.(...props)}
191
- </div>
192
- <div>
193
- <h2>Colors</h2>
194
- {Colors.render?.(...props)}
195
- </div>
196
- <div>
197
- <h2>Align</h2>
198
- {Align.render?.(...props)}
199
- </div>
200
- <div>
201
- <h2>Override Tag</h2>
202
- {OverrideTag.render?.(...props)}
203
- </div>
204
- </div>
205
- ),
206
- parameters: {
207
- chromatic: { disable: false },
208
- },
209
- };
@@ -1,208 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/react";
2
- import { expect, within } from "@storybook/test";
3
- import React from "react";
4
- import { VStack } from "../../layout/stack";
5
- import { BodyShort } from "../BodyShort";
6
-
7
- const meta: Meta<typeof BodyShort> = {
8
- title: "ds-react/Typography/BodyShort",
9
- component: BodyShort,
10
- decorators: [(story) => <div style={{ maxWidth: "250px" }}>{story()}</div>],
11
- parameters: {
12
- chromatic: { disable: true },
13
- },
14
- };
15
- export default meta;
16
-
17
- type Story = StoryObj<typeof BodyShort>;
18
-
19
- const lorem = "Du må gjøre en filtrering for å se brukere i listen.";
20
-
21
- export const Controls: Story = {
22
- args: {
23
- spacing: false,
24
- children: lorem,
25
-
26
- truncate: false,
27
- visuallyHidden: false,
28
- },
29
- argTypes: {
30
- size: {
31
- control: "radio",
32
- options: ["large", "medium", "small"],
33
- },
34
- weight: {
35
- control: "radio",
36
- options: ["regular", "semibold"],
37
- },
38
- align: {
39
- control: "radio",
40
- options: ["start", "center", "end"],
41
- },
42
- textColor: {
43
- control: "radio",
44
- options: ["default", "subtle"],
45
- },
46
- },
47
- };
48
-
49
- export const SizeLarge: Story = {
50
- render: () => (
51
- <VStack gap="2">
52
- <BodyShort size="large">{lorem}</BodyShort>
53
- <BodyShort size="large" weight="semibold">
54
- {lorem}
55
- </BodyShort>
56
- <BodyShort size="large" truncate>
57
- {lorem}
58
- </BodyShort>
59
- </VStack>
60
- ),
61
- };
62
-
63
- export const SizeMedium: Story = {
64
- render: () => (
65
- <VStack gap="2">
66
- <BodyShort size="medium">{lorem}</BodyShort>
67
- <BodyShort size="medium" weight="semibold">
68
- {lorem}
69
- </BodyShort>
70
- <BodyShort size="medium" truncate>
71
- {lorem}
72
- </BodyShort>
73
- </VStack>
74
- ),
75
- };
76
-
77
- export const SizeSmall: Story = {
78
- render: () => (
79
- <VStack gap="2">
80
- <BodyShort size="small">{lorem}</BodyShort>
81
- <BodyShort size="small" weight="semibold">
82
- {lorem}
83
- </BodyShort>
84
- <BodyShort size="small" truncate>
85
- {lorem}
86
- </BodyShort>
87
- </VStack>
88
- ),
89
- };
90
-
91
- export const SpacingLarge: Story = {
92
- render: () => (
93
- <div>
94
- <BodyShort size="large" spacing>
95
- {lorem}
96
- </BodyShort>
97
- <BodyShort size="large" spacing>
98
- {lorem}
99
- </BodyShort>
100
- </div>
101
- ),
102
- };
103
-
104
- export const SpacingMedium: Story = {
105
- render: () => (
106
- <div>
107
- <BodyShort size="medium" spacing>
108
- {lorem}
109
- </BodyShort>
110
- <BodyShort size="medium" spacing>
111
- {lorem}
112
- </BodyShort>
113
- </div>
114
- ),
115
- };
116
-
117
- export const SpacingSmall: Story = {
118
- render: () => (
119
- <div>
120
- <BodyShort size="small" spacing>
121
- {lorem}
122
- </BodyShort>
123
- <BodyShort size="small" spacing>
124
- {lorem}
125
- </BodyShort>
126
- </div>
127
- ),
128
- };
129
-
130
- export const Colors: Story = {
131
- render: () => (
132
- <VStack gap="2">
133
- <BodyShort textColor="default">{lorem}</BodyShort>
134
- <BodyShort textColor="subtle">{lorem}</BodyShort>
135
- </VStack>
136
- ),
137
- };
138
-
139
- export const Align: Story = {
140
- render: () => (
141
- <VStack gap="2">
142
- <BodyShort align="start">{lorem}</BodyShort>
143
- <BodyShort align="center">{lorem}</BodyShort>
144
- <BodyShort align="end">{lorem}</BodyShort>
145
- </VStack>
146
- ),
147
- };
148
-
149
- export const OverrideTag: Story = {
150
- render: () => (
151
- <div>
152
- <BodyShort spacing>default bodyshort</BodyShort>
153
- <BodyShort as="legend">legend bodyshort</BodyShort>
154
- </div>
155
- ),
156
- play: async ({ canvasElement }) => {
157
- const canvas = within(canvasElement);
158
-
159
- const defaultBodyShort = canvas.getByText("default bodyshort");
160
- const legendBodyShort = canvas.getByText("legend bodyshort");
161
-
162
- expect(defaultBodyShort.tagName).toEqual("P");
163
- expect(legendBodyShort.tagName).toEqual("LEGEND");
164
- },
165
- };
166
-
167
- export const Chromatic: Story = {
168
- render: (...props) => (
169
- <div>
170
- <div>
171
- <h2>Large</h2>
172
- <h3>Size</h3>
173
- {SizeLarge.render?.(...props)}
174
- <h3>Spacing</h3>
175
- {SpacingLarge.render?.(...props)}
176
- </div>
177
- <div>
178
- <h2>Medium</h2>
179
- <h3>Size</h3>
180
- {SizeMedium.render?.(...props)}
181
- <h3>Spacing</h3>
182
- {SpacingMedium.render?.(...props)}
183
- </div>
184
- <div>
185
- <h2>Small</h2>
186
- <h3>Size</h3>
187
- {SizeSmall.render?.(...props)}
188
- <h3>Spacing</h3>
189
- {SpacingSmall.render?.(...props)}
190
- </div>
191
- <div>
192
- <h2>Colors</h2>
193
- {Colors.render?.(...props)}
194
- </div>
195
- <div>
196
- <h2>Align</h2>
197
- {Align.render?.(...props)}
198
- </div>
199
- <div>
200
- <h2>Override Tag</h2>
201
- {OverrideTag.render?.(...props)}
202
- </div>
203
- </div>
204
- ),
205
- parameters: {
206
- chromatic: { disable: false },
207
- },
208
- };