@norges-domstoler/dds-components 10.0.2 → 10.1.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.
Files changed (65) hide show
  1. package/README.md +3 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js +292 -1
  3. package/dist/cjs/components/Stack/Stack.d.ts +37 -0
  4. package/dist/cjs/components/Stack/Stack.stories.d.ts +10 -0
  5. package/dist/cjs/components/Stack/Stack.tokens.d.ts +20 -0
  6. package/dist/cjs/components/Stack/index.d.ts +1 -0
  7. package/dist/cjs/components/Table/Cell.d.ts +5 -0
  8. package/dist/cjs/components/Table/Row.d.ts +3 -20
  9. package/dist/cjs/components/Table/Table.d.ts +2 -14
  10. package/dist/cjs/components/Table/Table.stories.d.ts +4 -4
  11. package/dist/cjs/components/Table/Table.styles.d.ts +10 -0
  12. package/dist/cjs/components/Table/Table.tokens.d.ts +5 -0
  13. package/dist/cjs/components/Table/Table.types.d.ts +37 -0
  14. package/dist/cjs/components/Table/collapsible/CollapsibleRow.d.ts +6 -0
  15. package/dist/cjs/components/Table/collapsible/CollapsibleTable.d.ts +9 -0
  16. package/dist/cjs/components/Table/collapsible/CollapsibleTable.stories.d.ts +48 -0
  17. package/dist/cjs/components/Table/collapsible/Table.context.d.ts +9 -0
  18. package/dist/cjs/components/Table/index.d.ts +11 -3
  19. package/dist/cjs/index.d.ts +3 -0
  20. package/dist/cjs/index.js +2077 -792
  21. package/dist/components/DescriptionList/DescriptionList.js +1 -1
  22. package/dist/components/FileUploader/ErrorList.js +28 -0
  23. package/dist/components/FileUploader/File.js +69 -0
  24. package/dist/components/FileUploader/FileUploader.js +153 -0
  25. package/dist/components/FileUploader/FileUploader.tokens.js +31 -0
  26. package/dist/components/FileUploader/fileUploaderReducer.js +35 -0
  27. package/dist/components/FileUploader/useFileUploader.js +202 -0
  28. package/dist/components/FileUploader/utils.js +32 -0
  29. package/dist/components/FormGenerator/FormGenerator.js +239 -0
  30. package/dist/components/FormGenerator/FormGenerator.styles.js +39 -0
  31. package/dist/components/FormGenerator/FormGenerator.tokens.js +21 -0
  32. package/dist/components/ProgressTracker/ProgressTracker.tokens.js +0 -1
  33. package/dist/components/Search/SearchSuggestions.js +1 -1
  34. package/dist/components/SkipToContent/SkipToContent.js +1 -1
  35. package/dist/components/Stack/Stack.d.ts +37 -0
  36. package/dist/components/Stack/Stack.js +46 -0
  37. package/dist/components/Stack/Stack.stories.d.ts +10 -0
  38. package/dist/components/Stack/Stack.tokens.d.ts +20 -0
  39. package/dist/components/Stack/Stack.tokens.js +26 -0
  40. package/dist/components/Stack/index.d.ts +1 -0
  41. package/dist/components/Table/Cell.d.ts +5 -0
  42. package/dist/components/Table/Cell.js +13 -4
  43. package/dist/components/Table/Row.d.ts +3 -20
  44. package/dist/components/Table/Row.js +1 -25
  45. package/dist/components/Table/Table.d.ts +2 -14
  46. package/dist/components/Table/Table.js +1 -1
  47. package/dist/components/Table/Table.stories.d.ts +4 -4
  48. package/dist/components/Table/Table.styles.d.ts +10 -0
  49. package/dist/components/Table/Table.styles.js +28 -0
  50. package/dist/components/Table/Table.tokens.d.ts +5 -0
  51. package/dist/components/Table/Table.tokens.js +10 -2
  52. package/dist/components/Table/Table.types.d.ts +37 -0
  53. package/dist/components/Table/collapsible/CollapsibleRow.d.ts +6 -0
  54. package/dist/components/Table/collapsible/CollapsibleRow.js +157 -0
  55. package/dist/components/Table/collapsible/CollapsibleTable.d.ts +9 -0
  56. package/dist/components/Table/collapsible/CollapsibleTable.js +42 -0
  57. package/dist/components/Table/collapsible/CollapsibleTable.stories.d.ts +48 -0
  58. package/dist/components/Table/collapsible/Table.context.d.ts +9 -0
  59. package/dist/components/Table/collapsible/Table.context.js +11 -0
  60. package/dist/components/Table/index.d.ts +11 -3
  61. package/dist/components/Table/index.js +5 -1
  62. package/dist/components/Tooltip/Tooltip.styles.js +1 -1
  63. package/dist/index.d.ts +3 -0
  64. package/dist/index.js +4 -1
  65. package/package.json +2 -2
@@ -0,0 +1,239 @@
1
+ import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { jsx, Fragment } from 'react/jsx-runtime';
3
+ import { useState, createElement } from 'react';
4
+ import { Button } from '../Button/Button.js';
5
+ import { Card } from '../Card/Card.js';
6
+ import '../Card/CardAccordion/CardAccordion.js';
7
+ import '../Card/CardAccordion/CardAccordionHeader.js';
8
+ import '../Card/CardAccordion/CardAccordionBody.js';
9
+ import { Checkbox } from '../Checkbox/Checkbox.js';
10
+ import { CheckboxGroup } from '../Checkbox/CheckboxGroup.js';
11
+ import { Datepicker } from '../Datepicker/Datepicker.js';
12
+ import { Divider } from '../Divider/Divider.js';
13
+ import { GlobalMessage } from '../GlobalMessage/GlobalMessage.js';
14
+ import { InputMessage } from '../InputMessage/InputMessage.js';
15
+ import { List } from '../List/List.js';
16
+ import { ListItem } from '../List/ListItem.js';
17
+ import { LocalMessage } from '../LocalMessage/LocalMessage.js';
18
+ import { RadioButton } from '../RadioButton/RadioButton.js';
19
+ import { RadioButtonGroup } from '../RadioButton/RadioButtonGroup.js';
20
+ import { Select } from '../Select/Select.js';
21
+ import { Spinner } from '../Spinner/Spinner.js';
22
+ import { TextInput } from '../TextInput/TextInput.js';
23
+ import { ToggleButton } from '../ToggleButton/ToggleButton.js';
24
+ import { ToggleButtonGroup } from '../ToggleButton/ToggleButtonGroup.js';
25
+ import { Typography } from '../Typography/Typography/Typography.js';
26
+ import { Label } from '../Typography/Label/Label.js';
27
+ import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
28
+ import { Heading } from '../Typography/Heading/Heading.js';
29
+ import { Link } from '../Typography/Link/Link.js';
30
+ import 'tslib';
31
+ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.js';
32
+ import { Grid } from '../Grid/Grid.js';
33
+ import { GridChild } from '../Grid/GridChild.js';
34
+ import { useScreenSize, ScreenSize } from '../../hooks/useScreenSize.js';
35
+ import { ButtonRow, FormGeneratorFlexContainer, SubContainer } from './FormGenerator.styles.js';
36
+ import { formGeneratorTokens } from './FormGenerator.tokens.js';
37
+
38
+ var FormGenerator = function FormGenerator(props) {
39
+ var _props$fields = props.fields,
40
+ fields = _props$fields === void 0 ? [] : _props$fields,
41
+ stateOnChange = props.stateOnChange;
42
+ var _useState = useState({}),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ myState = _useState2[0],
45
+ setState = _useState2[1];
46
+ var fieldOnChange = function fieldOnChange(event) {
47
+ var _event$target = event.target,
48
+ id = _event$target.id,
49
+ name = _event$target.name,
50
+ value = _event$target.value,
51
+ checked = _event$target.checked;
52
+ var newState = Object.assign(Object.assign({}, myState), _defineProperty({}, name || id, event.target.type === 'checkbox' ? checked : value));
53
+ setState(newState);
54
+ stateOnChange(newState);
55
+ };
56
+ var isMultiValue = function isMultiValue(obj) {
57
+ return (obj === null || obj === void 0 ? void 0 : obj.values) !== undefined;
58
+ };
59
+ var selectOnChange = function selectOnChange(chosen, name) {
60
+ var value = null;
61
+ if (isMultiValue(chosen)) {
62
+ value = Array.isArray(chosen) ? chosen === null || chosen === void 0 ? void 0 : chosen.map(function (test) {
63
+ return test.value;
64
+ }) : null;
65
+ } else {
66
+ value = (chosen === null || chosen === void 0 ? void 0 : chosen.value) || null;
67
+ }
68
+ var newState = Object.assign(Object.assign({}, myState), _defineProperty({}, name, value));
69
+ setState(newState);
70
+ stateOnChange(newState);
71
+ };
72
+ var GetComponent = function GetComponent(field, index) {
73
+ switch (field.component) {
74
+ case 'Button':
75
+ return /*#__PURE__*/createElement(Button, Object.assign({}, field.props, {
76
+ key: index
77
+ }));
78
+ case 'Card':
79
+ return /*#__PURE__*/createElement(Card, Object.assign({}, field.props, {
80
+ key: index
81
+ }), field.innerHTML);
82
+ case 'Checkbox':
83
+ return /*#__PURE__*/createElement(Checkbox, Object.assign({}, field.props, {
84
+ key: index,
85
+ onChange: fieldOnChange
86
+ }));
87
+ case 'CheckboxGroup':
88
+ return /*#__PURE__*/createElement(CheckboxGroup, Object.assign({}, field.props, {
89
+ key: index
90
+ }), field.children.map(function (child, childIndex) {
91
+ return !child.hide && GetComponent(child, childIndex);
92
+ }));
93
+ case 'Datepicker':
94
+ return /*#__PURE__*/createElement(Datepicker, Object.assign({}, field.props, {
95
+ key: index,
96
+ onChange: fieldOnChange
97
+ }));
98
+ case 'Divider':
99
+ return /*#__PURE__*/createElement(Divider, Object.assign({}, field.props, {
100
+ key: index
101
+ }));
102
+ case 'GlobalMessage':
103
+ return /*#__PURE__*/createElement(GlobalMessage, Object.assign({}, field.props, {
104
+ key: index
105
+ }), field.innerHTML);
106
+ case 'Heading':
107
+ return /*#__PURE__*/createElement(Heading, Object.assign({}, field.props, {
108
+ key: index
109
+ }), field.innerHTML);
110
+ case 'InputMessage':
111
+ return /*#__PURE__*/createElement(InputMessage, Object.assign({}, field.props, {
112
+ key: index
113
+ }));
114
+ case 'Label':
115
+ return /*#__PURE__*/createElement(Label, Object.assign({}, field.props, {
116
+ key: index
117
+ }), field.innerHTML);
118
+ case 'Link':
119
+ return /*#__PURE__*/createElement(Link, Object.assign({}, field.props, {
120
+ key: index
121
+ }), field.innerHTML);
122
+ case 'List':
123
+ return /*#__PURE__*/createElement(List, Object.assign({}, field.props, {
124
+ key: index
125
+ }), field.children.map(function (child, childIndex) {
126
+ return !child.hide && GetComponent(child, childIndex);
127
+ }));
128
+ case 'ListItem':
129
+ return /*#__PURE__*/createElement(ListItem, Object.assign({}, field.props, {
130
+ key: index
131
+ }), field.innerHTML);
132
+ case 'LocalMessage':
133
+ return /*#__PURE__*/createElement(LocalMessage, Object.assign({}, field.props, {
134
+ key: index
135
+ }), field.innerHTML);
136
+ case 'Paragraph':
137
+ return /*#__PURE__*/createElement(Paragraph, Object.assign({}, field.props, {
138
+ key: index
139
+ }), field.innerHTML);
140
+ case 'RadioButton':
141
+ return /*#__PURE__*/createElement(RadioButton, Object.assign({}, field.props, {
142
+ key: index,
143
+ onChange: fieldOnChange
144
+ }));
145
+ case 'RadioButtonGroup':
146
+ field.props.direction = screenSize > ScreenSize.XSmall ? 'row' : 'column';
147
+ return /*#__PURE__*/createElement(RadioButtonGroup, Object.assign({}, field.props, {
148
+ key: index
149
+ }), field.children.map(function (child, childIndex) {
150
+ return !child.hide && GetComponent(child, childIndex);
151
+ }));
152
+ case 'Select':
153
+ return /*#__PURE__*/createElement(Select, Object.assign({}, field.props, {
154
+ key: index,
155
+ onChange: function onChange(option) {
156
+ return selectOnChange(option, field.name);
157
+ }
158
+ }));
159
+ case 'Spinner':
160
+ return /*#__PURE__*/createElement(Spinner, Object.assign({}, field.props, {
161
+ key: index
162
+ }));
163
+ case 'TextInput':
164
+ return /*#__PURE__*/createElement(TextInput, Object.assign({}, field.props, {
165
+ key: index,
166
+ onChange: fieldOnChange
167
+ }));
168
+ case 'ToggleButton':
169
+ return /*#__PURE__*/createElement(ToggleButton, Object.assign({}, field.props, {
170
+ key: index,
171
+ onChange: fieldOnChange
172
+ }));
173
+ case 'ToggleButtonGroup':
174
+ return /*#__PURE__*/createElement(ToggleButtonGroup, Object.assign({}, field.props, {
175
+ key: index
176
+ }), field.children.map(function (child, childIndex) {
177
+ return !child.hide && GetComponent(child, childIndex);
178
+ }));
179
+ case 'Typography':
180
+ return /*#__PURE__*/createElement(Typography, Object.assign({}, field.props, {
181
+ key: index
182
+ }), field.innerHTML);
183
+ case 'VisuallyHidden':
184
+ return /*#__PURE__*/createElement(VisuallyHidden, Object.assign({}, field.props, {
185
+ key: index
186
+ }), field.innerHTML);
187
+ default:
188
+ return jsx(Fragment, {});
189
+ }
190
+ };
191
+ var isFormGeneratorRow = function isFormGeneratorRow(obj) {
192
+ return obj.rowType !== undefined;
193
+ };
194
+ var screenSize = useScreenSize();
195
+ return jsx(Grid, Object.assign({
196
+ as: "form",
197
+ rowGap: formGeneratorTokens.rowGaps
198
+ }, {
199
+ children: fields.map(function (obj, index) {
200
+ if (isFormGeneratorRow(obj)) {
201
+ if (obj.rowType === 'button') {
202
+ return jsx(ButtonRow, Object.assign({
203
+ columnsOccupied: "all"
204
+ }, {
205
+ children: jsx(FormGeneratorFlexContainer, Object.assign({
206
+ screenSize: screenSize
207
+ }, {
208
+ children: obj.fields.map(function (field, groupedIndex) {
209
+ return !field.hide && GetComponent(field, groupedIndex);
210
+ })
211
+ }))
212
+ }));
213
+ } else {
214
+ return jsx(GridChild, Object.assign({
215
+ columnsOccupied: "all"
216
+ }, {
217
+ children: jsx(SubContainer, Object.assign({
218
+ screenSize: screenSize,
219
+ length: obj.fields.length,
220
+ breakpoint: obj.breakpoint
221
+ }, {
222
+ children: obj.fields.map(function (field, groupedIndex) {
223
+ return !field.hide && GetComponent(field, groupedIndex);
224
+ })
225
+ }))
226
+ }));
227
+ }
228
+ } else {
229
+ return !obj.hide && jsx(GridChild, Object.assign({
230
+ columnsOccupied: "all"
231
+ }, {
232
+ children: GetComponent(obj, index)
233
+ }));
234
+ }
235
+ })
236
+ }));
237
+ };
238
+
239
+ export { FormGenerator };
@@ -0,0 +1,39 @@
1
+ import styled, { css } from 'styled-components';
2
+ import { ScreenSize } from '../../hooks/useScreenSize.js';
3
+ import '../Grid/Grid.js';
4
+ import { GridChild } from '../Grid/GridChild.js';
5
+ import { getLiteralScreenSize } from '../Grid/Grid.utils.js';
6
+ import { formGeneratorTokens } from './FormGenerator.tokens.js';
7
+
8
+ var FormGeneratorFlexContainer = styled.div.withConfig({
9
+ displayName: "FormGeneratorstyles__FormGeneratorFlexContainer",
10
+ componentId: "sc-1jlspa9-0"
11
+ })(["", ""], function (_ref) {
12
+ var screenSize = _ref.screenSize;
13
+ return css(["display:flex;flex-wrap:wrap;gap:", ";"], formGeneratorTokens.columnGaps[screenSize]);
14
+ });
15
+ var SubContainer = styled.div.withConfig({
16
+ displayName: "FormGeneratorstyles__SubContainer",
17
+ componentId: "sc-1jlspa9-1"
18
+ })(["", " ", " ", ""], function (_ref2) {
19
+ var screenSize = _ref2.screenSize,
20
+ length = _ref2.length;
21
+ return length === 2 ? css(["display:grid;"]) : css(["display:flex;flex-wrap:wrap;gap:", ";"], formGeneratorTokens.columnGaps[screenSize]);
22
+ }, function (_ref3) {
23
+ var screenSize = _ref3.screenSize,
24
+ length = _ref3.length,
25
+ _ref3$breakpoint = _ref3.breakpoint,
26
+ breakpoint = _ref3$breakpoint === void 0 ? ScreenSize.XSmall : _ref3$breakpoint;
27
+ return length === 2 ? screenSize > breakpoint ? css(["grid-auto-flow:column;grid-template-columns:min-content auto;column-gap:", ";"], formGeneratorTokens.columnGaps[screenSize]) : css(["grid-auto-flow:row;row-gap:", ";"], formGeneratorTokens.rowGaps[getLiteralScreenSize(screenSize)]) : "";
28
+ }, function (_ref4) {
29
+ var screenSize = _ref4.screenSize,
30
+ length = _ref4.length,
31
+ breakpoint = _ref4.breakpoint;
32
+ return length === 3 ? breakpoint !== undefined && screenSize >= breakpoint ? css(["flex-direction:row;"]) : css(["flex-direction:column;"]) : "";
33
+ });
34
+ var ButtonRow = styled(GridChild).withConfig({
35
+ displayName: "FormGeneratorstyles__ButtonRow",
36
+ componentId: "sc-1jlspa9-2"
37
+ })(["margin-top:", ";"], formGeneratorTokens.buttonRow.marginTop);
38
+
39
+ export { ButtonRow, FormGeneratorFlexContainer, SubContainer };
@@ -0,0 +1,21 @@
1
+ import { defineProperty as _defineProperty } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
3
+ import { ScreenSize } from '../../hooks/useScreenSize.js';
4
+
5
+ var _columnGaps;
6
+ var Spacing = ddsBaseTokens.spacing;
7
+ var formGeneratorTokens = {
8
+ columnGaps: (_columnGaps = {}, _defineProperty(_columnGaps, ScreenSize.XSmall, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Small, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Medium, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.Large, Spacing.SizesDdsSpacingLocalX1), _defineProperty(_columnGaps, ScreenSize.XLarge, Spacing.SizesDdsSpacingLocalX15), _columnGaps),
9
+ rowGaps: {
10
+ xs: Spacing.SizesDdsSpacingLocalX1,
11
+ sm: Spacing.SizesDdsSpacingLocalX1,
12
+ md: Spacing.SizesDdsSpacingLocalX1,
13
+ lg: Spacing.SizesDdsSpacingLocalX1,
14
+ xl: Spacing.SizesDdsSpacingLocalX15
15
+ },
16
+ buttonRow: {
17
+ marginTop: Spacing.SizesDdsSpacingLocalX1
18
+ }
19
+ };
20
+
21
+ export { formGeneratorTokens };
@@ -2,7 +2,6 @@ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
2
 
3
3
  var colors = ddsBaseTokens.colors,
4
4
  spacing = ddsBaseTokens.spacing;
5
- ddsBaseTokens.font;
6
5
  var typographyTypes = {
7
6
  number: 'bodySans01',
8
7
  label: 'bodySans03'
@@ -38,7 +38,7 @@ var suggestionsContainer = searchTokens.suggestionsContainer,
38
38
  var SuggestionsContainer = styled(Paper).withConfig({
39
39
  displayName: "SearchSuggestions__SuggestionsContainer",
40
40
  componentId: "sc-nlwf4s-0"
41
- })(["", ";position:absolute;top:100%;width:100%;max-height:300px;margin-top:", ";border:", ";box-shadow:", ";z-index:100;overflow-y:scroll;", " ", ""], function (_ref) {
41
+ })(["", ";position:absolute;top:100%;width:100%;max-height:300px;margin-top:", ";border:", ";box-shadow:", ";z-index:80;overflow-y:scroll;", " ", ""], function (_ref) {
42
42
  var isHidden = _ref.isHidden;
43
43
  return visibilityTransition(!isHidden);
44
44
  }, suggestionsContainer.marginTop, suggestionsContainer.border, suggestionsContainer.boxShadow, scrollbarStyling.firefox, scrollbarStyling.webkit);
@@ -16,7 +16,7 @@ var wrapper = skipToContentTokens.wrapper,
16
16
  var Wrapper = styled.div.withConfig({
17
17
  displayName: "SkipToContent__Wrapper",
18
18
  componentId: "sc-57o1qv-0"
19
- })(["box-sizing:border-box;position:absolute;top:", ";text-align:center;overflow:hidden;clip:rect(1px,1px,1px,1px);height:1px;width:1px;white-space:nowrap;background-color:", ";padding:", ";opacity:0;@media (prefers-reduced-motion:no-preference){transition:opacity 0.2s;}&:focus-within{clip:auto;height:auto;overflow:auto;width:100%;z-index:200;opacity:1;}"], function (_ref) {
19
+ })(["box-sizing:border-box;position:absolute;top:", ";text-align:center;overflow:hidden;clip:rect(1px,1px,1px,1px);height:1px;width:1px;white-space:nowrap;background-color:", ";padding:", ";opacity:0;@media (prefers-reduced-motion:no-preference){transition:opacity 0.2s;}&:focus-within{clip:auto;height:auto;overflow:auto;width:100%;z-index:250;opacity:1;}"], function (_ref) {
20
20
  var top = _ref.top;
21
21
  return top;
22
22
  }, wrapper.backgroundColor, wrapper.padding);
@@ -0,0 +1,37 @@
1
+ import { stackTokens } from './Stack.tokens';
2
+ import { BaseComponentPropsWithChildren } from '../../types';
3
+ declare type Align = 'stretch' | 'center' | 'flex-start' | 'flex-end';
4
+ declare type Justify = 'flex-start' | 'flex-end' | 'space-between' | 'space-around';
5
+ export interface StackStyleProps {
6
+ /**
7
+ * Hvilken retning elementene skal plasseres i.
8
+ */
9
+ direction: 'horizontal' | 'vertical';
10
+ /**
11
+ * CSS `align-items`.
12
+ * @default 'center'
13
+ */
14
+ align?: Align;
15
+ /**
16
+ * CSS `justify-content`.
17
+ * @default 'flex-start'
18
+ */
19
+ justify?: Justify;
20
+ /**
21
+ * Hvilken spacing token som skal brukes som CSS `gap`.
22
+ * @default 0
23
+ */
24
+ gap?: keyof typeof stackTokens.gap | 0;
25
+ }
26
+ export declare type StackProps = BaseComponentPropsWithChildren<HTMLDivElement, Omit<StackStyleProps, 'direction'>>;
27
+ export declare const HStack: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & Omit<StackStyleProps, "direction"> & {
28
+ children?: import("react").ReactNode;
29
+ } & {
30
+ htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
31
+ } & import("react").RefAttributes<HTMLDivElement>>;
32
+ export declare const VStack: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "className" | "id"> & Omit<StackStyleProps, "direction"> & {
33
+ children?: import("react").ReactNode;
34
+ } & {
35
+ htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
36
+ } & import("react").RefAttributes<HTMLDivElement>>;
37
+ export {};
@@ -0,0 +1,46 @@
1
+ import { __rest } from 'tslib';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import styled from 'styled-components';
5
+ import { stackTokens } from './Stack.tokens.js';
6
+ import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
7
+
8
+ var Stack = styled.div.withConfig({
9
+ displayName: "Stack",
10
+ componentId: "sc-1a1z9ks-0"
11
+ })(["display:flex;flex-direction:", ";align-items:", ";justify-content:", ";gap:", ";"], function (_ref) {
12
+ var direction = _ref.direction;
13
+ return direction === 'horizontal' ? 'row' : 'column';
14
+ }, function (props) {
15
+ return props.align;
16
+ }, function (props) {
17
+ return props.justify;
18
+ }, function (props) {
19
+ return props.gap === undefined || props.gap === 0 ? '0' : stackTokens.gap[props.gap];
20
+ });
21
+ Stack.defaultProps = {
22
+ align: 'center',
23
+ justify: 'flex-start'
24
+ };
25
+ var HStack = /*#__PURE__*/forwardRef(function (_a, ref) {
26
+ var id = _a.id,
27
+ className = _a.className,
28
+ htmlProps = _a.htmlProps,
29
+ rest = __rest(_a, ["id", "className", "htmlProps"]);
30
+ return jsx(Stack, Object.assign({
31
+ direction: "horizontal",
32
+ ref: ref
33
+ }, getBaseHTMLProps(id, className, htmlProps, rest)));
34
+ });
35
+ var VStack = /*#__PURE__*/forwardRef(function (_a, ref) {
36
+ var id = _a.id,
37
+ className = _a.className,
38
+ htmlProps = _a.htmlProps,
39
+ rest = __rest(_a, ["id", "className", "htmlProps"]);
40
+ return jsx(Stack, Object.assign({
41
+ direction: "vertical",
42
+ ref: ref
43
+ }, getBaseHTMLProps(id, className, htmlProps, rest)));
44
+ });
45
+
46
+ export { HStack, VStack };
@@ -0,0 +1,10 @@
1
+ import { ComponentMeta } from '@storybook/react';
2
+ import { StackProps } from './Stack';
3
+ declare const _default: ComponentMeta<import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & Omit<import("./Stack").StackStyleProps, "direction"> & {
4
+ children?: import("react").ReactNode;
5
+ } & {
6
+ htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
7
+ } & import("react").RefAttributes<HTMLDivElement>>>;
8
+ export default _default;
9
+ export declare const VStackOverview: (args: StackProps) => JSX.Element;
10
+ export declare const HStackOverview: (args: StackProps) => JSX.Element;
@@ -0,0 +1,20 @@
1
+ export declare const stackTokens: {
2
+ gap: {
3
+ 'local-x0.125': string;
4
+ 'local-x0.25': string;
5
+ 'local-x0.5': string;
6
+ 'local-x0.75': string;
7
+ 'local-x1': string;
8
+ 'local-x1.5': string;
9
+ 'local-x2': string;
10
+ 'local-x2.5': string;
11
+ 'local-x3': string;
12
+ 'layout-x1': string;
13
+ 'layout-x1.5': string;
14
+ 'layout-x2': string;
15
+ 'layout-x3': string;
16
+ 'layout-x4': string;
17
+ 'layout-x6': string;
18
+ 'layout-x10': string;
19
+ };
20
+ };
@@ -0,0 +1,26 @@
1
+ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
+
3
+ var spacing = ddsBaseTokens.spacing;
4
+ var gapTokens = {
5
+ 'local-x0.125': spacing.SizesDdsSpacingLocalX0125,
6
+ 'local-x0.25': spacing.SizesDdsSpacingLocalX025,
7
+ 'local-x0.5': spacing.SizesDdsSpacingLocalX05,
8
+ 'local-x0.75': spacing.SizesDdsSpacingLocalX075,
9
+ 'local-x1': spacing.SizesDdsSpacingLocalX1,
10
+ 'local-x1.5': spacing.SizesDdsSpacingLocalX15,
11
+ 'local-x2': spacing.SizesDdsSpacingLocalX2,
12
+ 'local-x2.5': spacing.SizesDdsSpacingLocalX25,
13
+ 'local-x3': spacing.SizesDdsSpacingLocalX3,
14
+ 'layout-x1': spacing.SizesDdsSpacingLayoutX1,
15
+ 'layout-x1.5': spacing.SizesDdsSpacingLayoutX15,
16
+ 'layout-x2': spacing.SizesDdsSpacingLayoutX2,
17
+ 'layout-x3': spacing.SizesDdsSpacingLayoutX3,
18
+ 'layout-x4': spacing.SizesDdsSpacingLayoutX4,
19
+ 'layout-x6': spacing.SizesDdsSpacingLayoutX6,
20
+ 'layout-x10': spacing.SizesDdsSpacingLayoutX10
21
+ };
22
+ var stackTokens = {
23
+ gap: gapTokens
24
+ };
25
+
26
+ export { stackTokens };
@@ -0,0 +1 @@
1
+ export * from './Stack';
@@ -1,10 +1,15 @@
1
1
  import { ThHTMLAttributes, TdHTMLAttributes } from 'react';
2
2
  export declare type TableCellType = 'data' | 'head';
3
3
  export declare type TableCellLayout = 'left' | 'right' | 'center' | 'text and icon';
4
+ export declare type CollapsibleProps = {
5
+ isCollapsibleChild?: boolean;
6
+ };
4
7
  export declare type TableCellProps = {
5
8
  /**Type celle. Returnerer enten `<td>` eller `<th>`. */
6
9
  type?: TableCellType;
7
10
  /**Layout av innholdet i cellen. 'tekst and icon' legger `gap` mellom barna og andre barnet i cellen. */
8
11
  layout?: TableCellLayout;
12
+ /** Props ved bruk av `<CollapsibleRow>`. **OBS!** settes automatisk av forelder. */
13
+ collapsibleProps?: CollapsibleProps;
9
14
  } & (TdHTMLAttributes<HTMLTableCellElement> | ThHTMLAttributes<HTMLTableCellElement>);
10
15
  export declare const Cell: import("react").ForwardRefExoticComponent<TableCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
@@ -2,10 +2,14 @@ import { __rest } from 'tslib';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
  import styled, { css } from 'styled-components';
5
+ import '../DescriptionList/DescriptionList.js';
6
+ import '../DescriptionList/DescriptionListTerm.js';
7
+ import { DescriptionListDesc } from '../DescriptionList/DescriptionListDesc.js';
8
+ import '../DescriptionList/DescriptionListGroup.js';
5
9
  import { tableTokens } from './Table.tokens.js';
6
10
 
7
11
  var cell = tableTokens.cell;
8
- var layoutStyle = function layoutStyle(layout) {
12
+ var getLayoutStyle = function getLayoutStyle(layout) {
9
13
  switch (layout) {
10
14
  case 'center':
11
15
  return css(["justify-content:center;"]);
@@ -30,7 +34,7 @@ var InnerCell = styled.div.withConfig({
30
34
  componentId: "sc-ghfpfs-1"
31
35
  })(["display:flex;align-items:center;", ""], function (_ref2) {
32
36
  var layout = _ref2.layout;
33
- return layoutStyle(layout);
37
+ return getLayoutStyle(layout);
34
38
  });
35
39
  var getTableCellType = function getTableCellType(type) {
36
40
  switch (type) {
@@ -47,8 +51,11 @@ var Cell = /*#__PURE__*/forwardRef(function (_a, ref) {
47
51
  type = _a$type === void 0 ? 'data' : _a$type,
48
52
  _a$layout = _a.layout,
49
53
  layout = _a$layout === void 0 ? 'left' : _a$layout,
50
- rest = __rest(_a, ["children", "type", "layout"]);
54
+ collapsibleProps = _a.collapsibleProps,
55
+ rest = __rest(_a, ["children", "type", "layout", "collapsibleProps"]);
51
56
  var as = getTableCellType(type);
57
+ var _ref3 = collapsibleProps || {},
58
+ isCollapsibleChild = _ref3.isCollapsibleChild;
52
59
  var cellProps = Object.assign({
53
60
  as: as,
54
61
  type: type
@@ -56,7 +63,9 @@ var Cell = /*#__PURE__*/forwardRef(function (_a, ref) {
56
63
  var innerCellProps = {
57
64
  layout: layout
58
65
  };
59
- return jsx(StyledCell, Object.assign({
66
+ return isCollapsibleChild ? jsx(DescriptionListDesc, {
67
+ children: children
68
+ }) : jsx(StyledCell, Object.assign({
60
69
  ref: ref
61
70
  }, cellProps, {
62
71
  children: jsx(InnerCell, Object.assign({}, innerCellProps, {
@@ -1,23 +1,6 @@
1
- import { HTMLAttributes } from 'react';
2
- export declare type TableRowType = 'body' | 'head';
3
- export declare type RowMode = 'normal' | 'sum';
4
- export declare type TableRowProps = {
5
- /**Spesifiserer om raden skal brukes i `<head>` eller `<body>`-seksjonen. */
6
- type?: TableRowType;
7
- /**Custom modus for rader som har ytterligere semantisk betydning (f.eks. summeringsrad), definerer kun styling. Ved bruk av sum må `<Cell>` med tall i høyrestilles vha layout prop. */
8
- mode?: RowMode;
9
- /**Spesifiserer om raden har blitt valgt/markert. */
10
- selected?: boolean;
11
- /**Spesifiserer om raden skal ha hover styling. Brukes hovedsakelig på klikkbare rader. */
12
- hoverable?: boolean;
13
- } & HTMLAttributes<HTMLTableRowElement>;
14
1
  export declare const Row: import("react").ForwardRefExoticComponent<{
15
- /**Spesifiserer om raden skal brukes i `<head>` eller `<body>`-seksjonen. */
16
- type?: TableRowType | undefined;
17
- /**Custom modus for rader som har ytterligere semantisk betydning (f.eks. summeringsrad), definerer kun styling. Ved bruk av sum må `<Cell>` med tall i høyrestilles vha layout prop. */
18
- mode?: RowMode | undefined;
19
- /**Spesifiserer om raden har blitt valgt/markert. */
2
+ type?: import("./Table.types").TableRowType | undefined;
3
+ mode?: import("./Table.types").RowMode | undefined;
20
4
  selected?: boolean | undefined;
21
- /**Spesifiserer om raden skal ha hover styling. Brukes hovedsakelig på klikkbare rader. */
22
5
  hoverable?: boolean | undefined;
23
- } & HTMLAttributes<HTMLTableRowElement> & import("react").RefAttributes<HTMLTableRowElement>>;
6
+ } & import("react").HTMLAttributes<HTMLTableRowElement> & import("react").RefAttributes<HTMLTableRowElement>>;
@@ -1,32 +1,8 @@
1
1
  import { __rest } from 'tslib';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
- import styled, { css } from 'styled-components';
5
- import { focusVisibleInset } from '../../helpers/styling/focusVisible.js';
6
- import '../../helpers/styling/hover.js';
7
- import '../../helpers/styling/focus.js';
8
- import '../../helpers/styling/danger.js';
9
- import '../../helpers/styling/selection.js';
10
- import { getFontStyling, defaultTypographyType } from '../Typography/Typography.utils.js';
11
- import { tableTokens } from './Table.tokens.js';
4
+ import { StyledRow } from './Table.styles.js';
12
5
 
13
- var row = tableTokens.row;
14
- var bodyStyles = function bodyStyles(mode, selected) {
15
- return css(["", " ", ""], mode === 'sum' && css(["font-weight:600;border-top:", ";border-bottom:", ";background-color:", ";"], row.body.mode.sum.borderTop, row.body.mode.sum.borderBottom, row.body.mode.sum.backgroundColor), selected && css(["background-color:", ";"], row.body.selected.backgroundColor));
16
- };
17
- var StyledRow = styled.tr.withConfig({
18
- displayName: "Row__StyledRow",
19
- componentId: "sc-15vvjkk-0"
20
- })(["@media (prefers-reduced-motion:no-preference){transition:background-color 0.2s,border-color 0.2s,box-shadow 0.2s;}", " ", " ", ""], getFontStyling(defaultTypographyType, true), function (_ref) {
21
- var type = _ref.type;
22
- return type === 'head' && css(["font-weight:600;text-align:left;"]);
23
- }, function (_ref2) {
24
- var type = _ref2.type,
25
- mode = _ref2.mode,
26
- selected = _ref2.selected,
27
- hoverable = _ref2.hoverable;
28
- return type === 'body' && css(["&:nth-of-type(even){background-color:", ";", "}&:nth-of-type(odd){background-color:", ";", "}", " &:focus-visible,&.focus-visible{", "}"], row.body.even.backgroundColor, bodyStyles(mode, selected), row.body.odd.backgroundColor, bodyStyles(mode, selected), hoverable && css(["&:hover{background-color:", ";}"], row.body.hover.backgroundColor), focusVisibleInset);
29
- });
30
6
  var Row = /*#__PURE__*/forwardRef(function (_a, ref) {
31
7
  var _a$type = _a.type,
32
8
  type = _a$type === void 0 ? 'body' : _a$type,
@@ -1,18 +1,6 @@
1
- import { HTMLAttributes } from 'react';
2
- export declare type TableDensity = 'normal' | 'compact';
3
- export declare type TableProps = {
4
- /**Spesifiserer hvor romslige cellene i tabellen skal være. */
5
- density?: TableDensity;
6
- /**Spesifiserer om cellene i `<Head>` skal bli sticky ved scrolling. */
7
- stickyHeader?: boolean;
8
- /**Legger skillelinjer mellom radene. */
9
- withDividers?: boolean;
10
- } & HTMLAttributes<HTMLTableElement>;
1
+ import { TableDensity } from './Table.types';
11
2
  export declare const Table: import("react").ForwardRefExoticComponent<{
12
- /**Spesifiserer hvor romslige cellene i tabellen skal være. */
13
3
  density?: TableDensity | undefined;
14
- /**Spesifiserer om cellene i `<Head>` skal bli sticky ved scrolling. */
15
4
  stickyHeader?: boolean | undefined;
16
- /**Legger skillelinjer mellom radene. */
17
5
  withDividers?: boolean | undefined;
18
- } & HTMLAttributes<HTMLTableElement> & import("react").RefAttributes<HTMLTableElement>>;
6
+ } & import("react").HTMLAttributes<HTMLTableElement> & import("react").RefAttributes<HTMLTableElement>>;
@@ -22,7 +22,7 @@ var StyledTable = styled.table.withConfig({
22
22
  return css(["td,th{padding:", ";}"], cell.density[density].padding);
23
23
  }, function (_ref2) {
24
24
  var stickyHeader = _ref2.stickyHeader;
25
- return stickyHeader && css(["tr[type='head']{th[type='head']{position:sticky;top:0;}}"]);
25
+ return stickyHeader && css(["tr[type='head']{th[type='head']{position:sticky;top:0;z-index:50;}}"]);
26
26
  }, function (_ref3) {
27
27
  var withDividers = _ref3.withDividers;
28
28
  return withDividers && css(["tr[type='body']{border-bottom:", ";}"], row.body.withDividers.borderBottom);