@norges-domstoler/dds-components 7.1.0 → 8.0.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 (160) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  3. package/dist/cjs/components/Button/Button.stories.d.ts +1 -1
  4. package/dist/cjs/components/Checkbox/Checkbox.stories.d.ts +1 -1
  5. package/dist/cjs/components/Chip/Chip.stories.d.ts +1 -1
  6. package/dist/cjs/components/DescriptionList/DescriptionList.stories.d.ts +1 -1
  7. package/dist/cjs/components/Divider/Divider.stories.d.ts +1 -1
  8. package/dist/cjs/components/Drawer/Drawer.stories.d.ts +1 -1
  9. package/dist/cjs/components/GlobalMessage/GlobalMessage.stories.d.ts +1 -1
  10. package/dist/cjs/components/InputMessage/InputMessage.stories.d.ts +1 -1
  11. package/dist/cjs/components/List/List.stories.d.ts +1 -1
  12. package/dist/cjs/components/LocalMessage/LocalMessage.stories.d.ts +1 -1
  13. package/dist/cjs/components/Modal/Modal.stories.d.ts +1 -1
  14. package/dist/cjs/components/OverflowMenu/OverflowMenu.stories.d.ts +1 -1
  15. package/dist/cjs/components/Pagination/Pagination.stories.d.ts +1 -1
  16. package/dist/cjs/components/Popover/Popover.d.ts +12 -4
  17. package/dist/cjs/components/Popover/Popover.stories.d.ts +4 -2
  18. package/dist/cjs/components/Popover/Popover.tokens.d.ts +11 -8
  19. package/dist/cjs/components/ProgressTracker/ProgressTracker.context.d.ts +6 -0
  20. package/dist/cjs/components/ProgressTracker/ProgressTracker.d.ts +12 -0
  21. package/dist/cjs/components/ProgressTracker/ProgressTracker.stories.d.ts +40 -0
  22. package/dist/cjs/components/ProgressTracker/ProgressTracker.tokens.d.ts +69 -0
  23. package/dist/cjs/components/ProgressTracker/ProgressTrackerItem.d.ts +24 -0
  24. package/dist/cjs/components/ProgressTracker/index.d.ts +1 -0
  25. package/dist/cjs/components/RadioButton/RadioButton.stories.d.ts +1 -1
  26. package/dist/cjs/components/RadioButton/RadioButtonGroup.stories.d.ts +1 -1
  27. package/dist/cjs/components/Search/Search.d.ts +2 -2
  28. package/dist/cjs/components/Search/Search.stories.d.ts +7 -1
  29. package/dist/cjs/components/Search/Search.tokens.d.ts +4 -1
  30. package/dist/cjs/components/SkipToContent/SkipToContent.stories.d.ts +1 -1
  31. package/dist/cjs/components/Table/Cell.d.ts +1 -1
  32. package/dist/cjs/components/Table/Table.d.ts +4 -0
  33. package/dist/cjs/components/Table/Table.stories.d.ts +7 -0
  34. package/dist/cjs/components/Table/Table.tokens.d.ts +72 -0
  35. package/dist/cjs/components/Tag/Tag.stories.d.ts +1 -1
  36. package/dist/cjs/components/ToggleButton/ToggleButton.stories.d.ts +1 -1
  37. package/dist/cjs/components/Tooltip/Tooltip.stories.d.ts +1 -1
  38. package/dist/cjs/components/Typography/Caption/Caption.stories.d.ts +1 -1
  39. package/dist/cjs/components/Typography/Heading/Heading.stories.d.ts +1 -1
  40. package/dist/cjs/components/Typography/Label/Label.stories.d.ts +1 -1
  41. package/dist/cjs/components/Typography/Legend/Legend.stories.d.ts +1 -1
  42. package/dist/cjs/components/Typography/Link/Link.stories.d.ts +1 -1
  43. package/dist/cjs/components/Typography/Paragraph/Paragraph.stories.d.ts +1 -1
  44. package/dist/cjs/helpers/Paper/Paper.d.ts +8 -1
  45. package/dist/cjs/helpers/Paper/Paper.tokens.d.ts +5 -2
  46. package/dist/cjs/hooks/index.d.ts +1 -0
  47. package/dist/cjs/hooks/useFocusTrap.d.ts +1 -1
  48. package/dist/cjs/hooks/useReturnFocusOnBlur.d.ts +31 -0
  49. package/dist/cjs/index.d.ts +1 -1
  50. package/dist/cjs/index.js +1224 -1060
  51. package/dist/cjs/utils/getFocusableElements.d.ts +2 -0
  52. package/dist/cjs/utils/index.d.ts +1 -0
  53. package/dist/components/Breadcrumbs/Breadcrumbs.stories.d.ts +1 -1
  54. package/dist/components/Button/Button.stories.d.ts +1 -1
  55. package/dist/components/Button/Button.styles.js +1 -1
  56. package/dist/components/Card/CardAccordion/CardAccordionHeader.js +1 -1
  57. package/dist/components/Checkbox/Checkbox.stories.d.ts +1 -1
  58. package/dist/components/Chip/Chip.stories.d.ts +1 -1
  59. package/dist/components/DescriptionList/DescriptionList.stories.d.ts +1 -1
  60. package/dist/components/Divider/Divider.stories.d.ts +1 -1
  61. package/dist/components/Drawer/Drawer.js +3 -0
  62. package/dist/components/Drawer/Drawer.stories.d.ts +1 -1
  63. package/dist/components/GlobalMessage/GlobalMessage.stories.d.ts +1 -1
  64. package/dist/components/Grid/Grid.context.js +1 -0
  65. package/dist/components/Grid/Grid.js +1 -0
  66. package/dist/components/Grid/Grid.tokens.js +1 -0
  67. package/dist/components/Grid/Grid.utils.js +1 -0
  68. package/dist/components/InputMessage/InputMessage.stories.d.ts +1 -1
  69. package/dist/components/List/List.stories.d.ts +1 -1
  70. package/dist/components/LocalMessage/LocalMessage.stories.d.ts +1 -1
  71. package/dist/components/Modal/Modal.js +1 -0
  72. package/dist/components/Modal/Modal.stories.d.ts +1 -1
  73. package/dist/components/OverflowMenu/OverflowMenu.js +1 -0
  74. package/dist/components/OverflowMenu/OverflowMenu.stories.d.ts +1 -1
  75. package/dist/components/OverflowMenu/OverflowMenuItem.js +2 -1
  76. package/dist/components/Pagination/Pagination.stories.d.ts +1 -1
  77. package/dist/components/Popover/Popover.d.ts +12 -4
  78. package/dist/components/Popover/Popover.js +47 -22
  79. package/dist/components/Popover/Popover.stories.d.ts +4 -2
  80. package/dist/components/Popover/Popover.tokens.d.ts +11 -8
  81. package/dist/components/Popover/Popover.tokens.js +17 -28
  82. package/dist/components/Popover/PopoverGroup.js +9 -20
  83. package/dist/components/ProgressTracker/ProgressTracker.context.d.ts +6 -0
  84. package/dist/components/ProgressTracker/ProgressTracker.context.js +10 -0
  85. package/dist/components/ProgressTracker/ProgressTracker.d.ts +12 -0
  86. package/dist/components/ProgressTracker/ProgressTracker.js +93 -0
  87. package/dist/components/ProgressTracker/ProgressTracker.stories.d.ts +40 -0
  88. package/dist/components/ProgressTracker/ProgressTracker.tokens.d.ts +69 -0
  89. package/dist/components/ProgressTracker/ProgressTracker.tokens.js +80 -0
  90. package/dist/components/ProgressTracker/ProgressTrackerItem.d.ts +24 -0
  91. package/dist/components/ProgressTracker/ProgressTrackerItem.js +168 -0
  92. package/dist/components/ProgressTracker/index.d.ts +1 -0
  93. package/dist/components/RadioButton/RadioButton.stories.d.ts +1 -1
  94. package/dist/components/RadioButton/RadioButtonGroup.stories.d.ts +1 -1
  95. package/dist/components/Search/Search.d.ts +2 -2
  96. package/dist/components/Search/Search.js +36 -28
  97. package/dist/components/Search/Search.stories.d.ts +7 -1
  98. package/dist/components/Search/Search.tokens.d.ts +4 -1
  99. package/dist/components/Search/Search.tokens.js +6 -2
  100. package/dist/components/SkipToContent/SkipToContent.stories.d.ts +1 -1
  101. package/dist/components/Table/Cell.d.ts +1 -1
  102. package/dist/components/Table/Cell.js +6 -4
  103. package/dist/components/Table/Row.js +12 -5
  104. package/dist/components/Table/SortCell.js +8 -11
  105. package/dist/components/Table/Table.d.ts +4 -0
  106. package/dist/components/Table/Table.js +8 -3
  107. package/dist/components/Table/Table.stories.d.ts +7 -0
  108. package/dist/components/Table/Table.tokens.d.ts +72 -0
  109. package/dist/components/Table/Table.tokens.js +69 -0
  110. package/dist/components/Tabs/Tab.js +2 -1
  111. package/dist/components/Tabs/TabList.js +1 -0
  112. package/dist/components/Tabs/TabPanels.js +1 -0
  113. package/dist/components/Tag/Tag.stories.d.ts +1 -1
  114. package/dist/components/ToggleButton/ToggleButton.stories.d.ts +1 -1
  115. package/dist/components/Tooltip/Tooltip.js +2 -2
  116. package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -1
  117. package/dist/components/Typography/Caption/Caption.stories.d.ts +1 -1
  118. package/dist/components/Typography/Heading/Heading.stories.d.ts +1 -1
  119. package/dist/components/Typography/Label/Label.stories.d.ts +1 -1
  120. package/dist/components/Typography/Legend/Legend.stories.d.ts +1 -1
  121. package/dist/components/Typography/Link/Link.stories.d.ts +1 -1
  122. package/dist/components/Typography/Paragraph/Paragraph.stories.d.ts +1 -1
  123. package/dist/components/Typography/Typography/Typography.js +1 -1
  124. package/dist/helpers/Paper/Paper.d.ts +8 -1
  125. package/dist/helpers/Paper/Paper.js +38 -2
  126. package/dist/helpers/Paper/Paper.tokens.d.ts +5 -2
  127. package/dist/helpers/Paper/Paper.tokens.js +8 -10
  128. package/dist/hooks/index.d.ts +1 -0
  129. package/dist/hooks/useFocusTrap.d.ts +1 -1
  130. package/dist/hooks/useFocusTrap.js +4 -2
  131. package/dist/hooks/useReturnFocusOnBlur.d.ts +31 -0
  132. package/dist/hooks/useReturnFocusOnBlur.js +65 -0
  133. package/dist/index.d.ts +1 -1
  134. package/dist/index.js +2 -2
  135. package/dist/utils/getFocusableElements.d.ts +2 -0
  136. package/dist/utils/getFocusableElements.js +5 -0
  137. package/dist/utils/index.d.ts +1 -0
  138. package/package.json +1 -1
  139. package/dist/cjs/components/Stepper/Step.d.ts +0 -20
  140. package/dist/cjs/components/Stepper/Stepper.context.d.ts +0 -6
  141. package/dist/cjs/components/Stepper/Stepper.d.ts +0 -11
  142. package/dist/cjs/components/Stepper/Stepper.stories.d.ts +0 -25
  143. package/dist/cjs/components/Stepper/Stepper.tokens.d.ts +0 -39
  144. package/dist/cjs/components/Stepper/index.d.ts +0 -2
  145. package/dist/cjs/components/Table/Cell.tokens.d.ts +0 -31
  146. package/dist/cjs/components/Table/Row.tokens.d.ts +0 -32
  147. package/dist/components/Stepper/Step.d.ts +0 -20
  148. package/dist/components/Stepper/Step.js +0 -118
  149. package/dist/components/Stepper/Stepper.context.d.ts +0 -6
  150. package/dist/components/Stepper/Stepper.context.js +0 -10
  151. package/dist/components/Stepper/Stepper.d.ts +0 -11
  152. package/dist/components/Stepper/Stepper.js +0 -66
  153. package/dist/components/Stepper/Stepper.stories.d.ts +0 -25
  154. package/dist/components/Stepper/Stepper.tokens.d.ts +0 -39
  155. package/dist/components/Stepper/Stepper.tokens.js +0 -49
  156. package/dist/components/Stepper/index.d.ts +0 -2
  157. package/dist/components/Table/Cell.tokens.d.ts +0 -31
  158. package/dist/components/Table/Cell.tokens.js +0 -60
  159. package/dist/components/Table/Row.tokens.d.ts +0 -32
  160. package/dist/components/Table/Row.tokens.js +0 -73
@@ -0,0 +1,6 @@
1
+ declare type ProgressTrackerContextType = {
2
+ activeStep: number;
3
+ };
4
+ export declare const ProgressTrackerContext: import("react").Context<ProgressTrackerContextType>;
5
+ export declare const useProgressTrackerContext: () => ProgressTrackerContextType;
6
+ export {};
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ var ProgressTrackerContext = /*#__PURE__*/createContext({
4
+ activeStep: 0
5
+ });
6
+ var useProgressTrackerContext = function useProgressTrackerContext() {
7
+ return useContext(ProgressTrackerContext);
8
+ };
9
+
10
+ export { ProgressTrackerContext, useProgressTrackerContext };
@@ -0,0 +1,12 @@
1
+ import { ForwardRefExoticComponent } from 'react';
2
+ import { BaseComponentPropsWithChildren } from '../../types';
3
+ import { ProgressTrackerItem } from './ProgressTrackerItem';
4
+ declare type ProgressTrackerProps = BaseComponentPropsWithChildren<HTMLDivElement, {
5
+ /** Indeksen til det aktive steget. */
6
+ activeStep?: number;
7
+ }>;
8
+ declare type ProgressTrackerComponent = ForwardRefExoticComponent<ProgressTrackerProps> & {
9
+ Item: typeof ProgressTrackerItem;
10
+ };
11
+ export declare const ProgressTracker: ProgressTrackerComponent;
12
+ export {};
@@ -0,0 +1,93 @@
1
+ import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { __rest } from 'tslib';
3
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
+ import { forwardRef, useState, useEffect, useMemo, Children, isValidElement, cloneElement, Fragment } from 'react';
5
+ import styled from 'styled-components';
6
+ import { getBaseHTMLProps } from '../../types/BaseComponentProps.js';
7
+ import { ProgressTrackerContext } from './ProgressTracker.context.js';
8
+ import { progressTrackerTokens } from './ProgressTracker.tokens.js';
9
+ import { ProgressTrackerItem } from './ProgressTrackerItem.js';
10
+
11
+ var ItemsWrapper = styled.ol.withConfig({
12
+ displayName: "ProgressTracker__ItemsWrapper",
13
+ componentId: "sc-v5htnb-0"
14
+ })(["display:flex;flex-direction:column;align-items:flex-start;gap:", ";margin:0;padding:0;"], progressTrackerTokens.itemsWrapper.gap);
15
+ var ProgressTrackerConnector = styled.div.withConfig({
16
+ displayName: "ProgressTracker__ProgressTrackerConnector",
17
+ componentId: "sc-v5htnb-1"
18
+ })(["margin-left:calc( (", " / 2) - (", " / 2) );height:", ";border-right:", " solid ", ";"], progressTrackerTokens.itemNumber.size, progressTrackerTokens.connector.width, progressTrackerTokens.connector.height, progressTrackerTokens.connector.width, progressTrackerTokens.connector.color);
19
+ var ProgressTracker = function () {
20
+ var Res = /*#__PURE__*/forwardRef(function (props, ref) {
21
+ var id = props.id,
22
+ _props$activeStep = props.activeStep,
23
+ activeStep = _props$activeStep === void 0 ? 0 : _props$activeStep,
24
+ children = props.children,
25
+ className = props.className,
26
+ htmlProps = props.htmlProps,
27
+ rest = __rest(props, ["id", "activeStep", "children", "className", "htmlProps"]);
28
+
29
+ var _useState = useState(activeStep),
30
+ _useState2 = _slicedToArray(_useState, 2),
31
+ thisActiveStep = _useState2[0],
32
+ setActiveStep = _useState2[1];
33
+
34
+ useEffect(function () {
35
+ if (activeStep !== undefined && activeStep != thisActiveStep) {
36
+ setActiveStep(activeStep);
37
+ }
38
+ }, [activeStep, thisActiveStep]);
39
+ var containerProps = Object.assign(Object.assign({}, getBaseHTMLProps(id, className, htmlProps, rest)), {
40
+ ref: ref
41
+ });
42
+ var steps = useMemo(function () {
43
+ var validChildren = removeInvalidChildren(children);
44
+ var itemsWithIndex = passIndexPropToProgressTrackerItem(validChildren);
45
+ var itemsWithConnectorsBetween = intersperseItemsWithConnector(itemsWithIndex);
46
+ return itemsWithConnectorsBetween;
47
+ }, [children]);
48
+ return jsx(ProgressTrackerContext.Provider, Object.assign({
49
+ value: {
50
+ activeStep: thisActiveStep
51
+ }
52
+ }, {
53
+ children: jsx("div", Object.assign({
54
+ role: "group",
55
+ "aria-label": "progress"
56
+ }, containerProps, {
57
+ children: jsx(ItemsWrapper, {
58
+ children: steps
59
+ })
60
+ }))
61
+ }));
62
+ });
63
+ Res.Item = ProgressTrackerItem;
64
+ return Res;
65
+ }();
66
+
67
+ var removeInvalidChildren = function removeInvalidChildren(children) {
68
+ return Children.toArray(children).filter(isValidElement);
69
+ };
70
+
71
+ var passIndexPropToProgressTrackerItem = function passIndexPropToProgressTrackerItem(children) {
72
+ return Children.map(children, function (item, index) {
73
+ return /*#__PURE__*/cloneElement(item, Object.assign(Object.assign({}, item.props), {
74
+ index: index
75
+ }));
76
+ });
77
+ };
78
+
79
+ var intersperseItemsWithConnector = function intersperseItemsWithConnector(children) {
80
+ return Children.map(children, function (child, index) {
81
+ if (index === 0) {
82
+ return child;
83
+ }
84
+
85
+ return jsxs(Fragment, {
86
+ children: [jsx(ProgressTrackerConnector, {
87
+ "aria-hidden": true
88
+ }), child]
89
+ }, index);
90
+ });
91
+ };
92
+
93
+ export { ProgressTracker };
@@ -0,0 +1,40 @@
1
+ declare const _default: {
2
+ title: string;
3
+ component: import("react").ForwardRefExoticComponent<Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
4
+ activeStep?: number | undefined;
5
+ } & {
6
+ children?: import("react").ReactNode;
7
+ } & {
8
+ htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
9
+ }> & {
10
+ Item: (props: ({
11
+ onClick: (index: number) => void;
12
+ } & Pick<import("react").HTMLAttributes<HTMLButtonElement>, "id" | "className"> & {
13
+ active?: boolean | undefined;
14
+ completed?: boolean | undefined;
15
+ disabled?: boolean | undefined;
16
+ icon?: import("../../icons/utils").SvgIcon | undefined;
17
+ index?: number | undefined;
18
+ } & {
19
+ children?: import("react").ReactNode;
20
+ } & {
21
+ htmlProps?: import("react").HTMLAttributes<HTMLButtonElement> | undefined;
22
+ }) | ({
23
+ onClick?: undefined;
24
+ } & Pick<import("react").HTMLAttributes<HTMLDivElement>, "id" | "className"> & {
25
+ active?: boolean | undefined;
26
+ completed?: boolean | undefined;
27
+ disabled?: boolean | undefined;
28
+ icon?: import("../../icons/utils").SvgIcon | undefined;
29
+ index?: number | undefined;
30
+ } & {
31
+ children?: import("react").ReactNode;
32
+ } & {
33
+ htmlProps?: import("react").HTMLAttributes<HTMLDivElement> | undefined;
34
+ })) => JSX.Element;
35
+ };
36
+ };
37
+ export default _default;
38
+ export declare const Overview: () => JSX.Element;
39
+ export declare const WithIcons: () => JSX.Element;
40
+ export declare const NonClickable: () => JSX.Element;
@@ -0,0 +1,69 @@
1
+ import { IconSize } from '../Icon';
2
+ export declare const progressTrackerTokens: {
3
+ itemsWrapper: {
4
+ gap: string;
5
+ };
6
+ itemContentWrapper: {
7
+ gap: string;
8
+ };
9
+ connector: {
10
+ color: string;
11
+ height: string;
12
+ width: string;
13
+ };
14
+ itemNumber: {
15
+ size: string;
16
+ borderWidth: string;
17
+ iconSize: IconSize;
18
+ fontSize: string;
19
+ active: {
20
+ borderColor: string;
21
+ color: string;
22
+ backgroundColor: string;
23
+ };
24
+ completed: {
25
+ borderColor: string;
26
+ color: string;
27
+ backgroundColor: string;
28
+ hover: {
29
+ borderColor: string;
30
+ color: string;
31
+ backgroundColor: string;
32
+ };
33
+ };
34
+ inactive: {
35
+ borderColor: string;
36
+ color: string;
37
+ backgroundColor: string;
38
+ hover: {
39
+ borderColor: string;
40
+ color: string;
41
+ backgroundColor: string;
42
+ };
43
+ };
44
+ disabled: {
45
+ borderColor: string;
46
+ color: string;
47
+ backgroundColor: string;
48
+ };
49
+ };
50
+ itemText: {
51
+ fontFamily: string;
52
+ fontSize: string;
53
+ active: {
54
+ color: string;
55
+ textDecoration: string;
56
+ };
57
+ inactive: {
58
+ color: string;
59
+ textDecoration: string;
60
+ hover: {
61
+ textDecoration: string;
62
+ };
63
+ };
64
+ disabled: {
65
+ color: string;
66
+ textDecoration: string;
67
+ };
68
+ };
69
+ };
@@ -0,0 +1,80 @@
1
+ import { ddsBaseTokens } from '@norges-domstoler/dds-design-tokens';
2
+
3
+ var colors = ddsBaseTokens.colors,
4
+ spacing = ddsBaseTokens.spacing,
5
+ font = ddsBaseTokens.font;
6
+ var itemsWrapper = {
7
+ gap: spacing.SizesDdsSpacingLocalX0125
8
+ };
9
+ var itemContentWrapper = {
10
+ gap: spacing.SizesDdsSpacingLocalX05
11
+ };
12
+ var connector = {
13
+ color: colors.DdsColorNeutralsGray5,
14
+ height: '18px',
15
+ width: '1px'
16
+ };
17
+ var itemNumber = {
18
+ size: '28px',
19
+ borderWidth: '2px',
20
+ iconSize: 'small',
21
+ fontSize: font.DdsFontBodySans01FontSize,
22
+ active: {
23
+ borderColor: colors.DdsColorInteractiveBase,
24
+ color: colors.DdsColorNeutralsWhite,
25
+ backgroundColor: colors.DdsColorInteractiveBase
26
+ },
27
+ completed: {
28
+ borderColor: colors.DdsColorInteractiveBase,
29
+ color: colors.DdsColorNeutralsWhite,
30
+ backgroundColor: colors.DdsColorInteractiveBase,
31
+ hover: {
32
+ borderColor: colors.DdsColorInteractiveDark,
33
+ color: colors.DdsColorNeutralsWhite,
34
+ backgroundColor: colors.DdsColorInteractiveDark
35
+ }
36
+ },
37
+ inactive: {
38
+ borderColor: colors.DdsColorInteractiveBase,
39
+ color: colors.DdsColorInteractiveBase,
40
+ backgroundColor: colors.DdsColorNeutralsWhite,
41
+ hover: {
42
+ borderColor: colors.DdsColorInteractiveBase,
43
+ color: colors.DdsColorInteractiveBase,
44
+ backgroundColor: colors.DdsColorInteractiveLightest
45
+ }
46
+ },
47
+ disabled: {
48
+ borderColor: colors.DdsColorNeutralsGray5,
49
+ color: colors.DdsColorNeutralsGray5,
50
+ backgroundColor: colors.DdsColorNeutralsWhite
51
+ }
52
+ };
53
+ var itemText = {
54
+ fontFamily: font.DdsFontSupportingStyleLabel01FontFamily,
55
+ fontSize: font.DdsFontSupportingStyleLabel01FontSize,
56
+ active: {
57
+ color: colors.DdsColorNeutralsGray9,
58
+ textDecoration: 'underline'
59
+ },
60
+ inactive: {
61
+ color: colors.DdsColorNeutralsGray7,
62
+ textDecoration: 'none',
63
+ hover: {
64
+ textDecoration: 'underline'
65
+ }
66
+ },
67
+ disabled: {
68
+ color: colors.DdsColorNeutralsGray6,
69
+ textDecoration: 'none'
70
+ }
71
+ };
72
+ var progressTrackerTokens = {
73
+ itemsWrapper: itemsWrapper,
74
+ itemContentWrapper: itemContentWrapper,
75
+ connector: connector,
76
+ itemNumber: itemNumber,
77
+ itemText: itemText
78
+ };
79
+
80
+ export { progressTrackerTokens };
@@ -0,0 +1,24 @@
1
+ import { SvgIcon } from '../../icons/utils';
2
+ import { BaseComponentPropsWithChildren } from '../../types';
3
+ declare type BaseItemProps = {
4
+ /** Om steget er valgt eller ikke. Settes av konsument. */
5
+ active?: boolean;
6
+ /** Om steget er ferdig eller ikke. Settes av konsument. */
7
+ completed?: boolean;
8
+ /** Om steget skal være disabled. Settes av konsument.
9
+ * @default false
10
+ */
11
+ disabled?: boolean;
12
+ /** Ikon som skal vises istedenfor stegnummeret. Settes av konument. */
13
+ icon?: SvgIcon;
14
+ /** Indeksen til steget. NB! Denne settes automatisk av `<ProgressTracker />` og skal ikke settes manuelt. */
15
+ index?: number;
16
+ };
17
+ declare type ProgressTrackerItemProps = ({
18
+ /** Click-handler som gjør det mulig for bruker å klikke på steget for å navigere. Valgfri. */
19
+ onClick: (index: number) => void;
20
+ } & BaseComponentPropsWithChildren<HTMLButtonElement, BaseItemProps>) | ({
21
+ onClick?: undefined;
22
+ } & BaseComponentPropsWithChildren<HTMLDivElement, BaseItemProps>);
23
+ export declare const ProgressTrackerItem: (props: ProgressTrackerItemProps) => JSX.Element;
24
+ export {};
@@ -0,0 +1,168 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import styled, { css } from 'styled-components';
4
+ import { focusVisibleTransitionValue, focusVisible } from '../../helpers/styling/focusVisible.js';
5
+ import '../../helpers/styling/hover.js';
6
+ import '../../helpers/styling/focus.js';
7
+ import '../../helpers/styling/danger.js';
8
+ import '../../helpers/styling/selection.js';
9
+ import 'tslib';
10
+ import '../../icons/utils/StyledSvg.js';
11
+ import { CheckIcon } from '../../icons/tsx/check.js';
12
+ import { Icon } from '../Icon/Icon.js';
13
+ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.js';
14
+ import { useProgressTrackerContext } from './ProgressTracker.context.js';
15
+ import { progressTrackerTokens } from './ProgressTracker.tokens.js';
16
+
17
+ var toItemState = function toItemState(active, completed, disabled) {
18
+ if (disabled) {
19
+ return 'disabled';
20
+ }
21
+
22
+ if (active) {
23
+ return completed ? 'activeCompleted' : 'activeIncomplete';
24
+ } else {
25
+ return completed ? 'inactiveCompleted' : 'inactiveIncomplete';
26
+ }
27
+ };
28
+
29
+ var itemNumber = progressTrackerTokens.itemNumber,
30
+ itemText = progressTrackerTokens.itemText,
31
+ itemContentWrapper = progressTrackerTokens.itemContentWrapper;
32
+ var ItemWrapper = styled.li.withConfig({
33
+ displayName: "ProgressTrackerItem__ItemWrapper",
34
+ componentId: "sc-1j9qaj9-0"
35
+ })(["flex:1;position:relative;display:flex;justify-content:center;"]);
36
+ var ItemNumber = styled.div.withConfig({
37
+ displayName: "ProgressTrackerItem__ItemNumber",
38
+ componentId: "sc-1j9qaj9-1"
39
+ })(["border-radius:50%;border:", " solid;width:", ";height:", ";display:flex;align-items:center;justify-content:center;z-index:2;font-size:", ";font-weight:600;", ""], itemNumber.borderWidth, itemNumber.size, itemNumber.size, itemNumber.fontSize, function (_ref) {
40
+ var state = _ref.state;
41
+
42
+ switch (state) {
43
+ case 'activeIncomplete':
44
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.active.borderColor, itemNumber.active.color, itemNumber.active.backgroundColor);
45
+
46
+ case 'activeCompleted':
47
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.completed.borderColor, itemNumber.completed.color, itemNumber.completed.backgroundColor);
48
+
49
+ case 'inactiveCompleted':
50
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.completed.borderColor, itemNumber.completed.color, itemNumber.completed.backgroundColor);
51
+
52
+ case 'inactiveIncomplete':
53
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.inactive.borderColor, itemNumber.inactive.color, itemNumber.inactive.backgroundColor);
54
+
55
+ case 'disabled':
56
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.disabled.borderColor, itemNumber.disabled.color, itemNumber.disabled.backgroundColor);
57
+ }
58
+ });
59
+ var ItemText = styled.div.withConfig({
60
+ displayName: "ProgressTrackerItem__ItemText",
61
+ componentId: "sc-1j9qaj9-2"
62
+ })(["font-family:", ";font-size:", ";text-align:start;", ""], itemText.fontFamily, itemText.fontSize, function (_ref2) {
63
+ var state = _ref2.state;
64
+
65
+ switch (state) {
66
+ case 'activeCompleted':
67
+ case 'activeIncomplete':
68
+ return css(["color:", ";text-decoration ", ";"], itemText.active.color, itemText.active.textDecoration);
69
+
70
+ case 'inactiveCompleted':
71
+ case 'inactiveIncomplete':
72
+ return css(["color:", ";text-decoration ", ";"], itemText.inactive.color, itemText.inactive.textDecoration);
73
+
74
+ case 'disabled':
75
+ return css(["color:", ";text-decoration:", ";"], itemText.disabled.color, itemText.disabled.textDecoration);
76
+ }
77
+ });
78
+ var ItemContentWrapper = styled.div.withConfig({
79
+ displayName: "ProgressTrackerItem__ItemContentWrapper",
80
+ componentId: "sc-1j9qaj9-3"
81
+ })(["background:none;border:none;margin:0;padding:0;display:grid;grid-template-columns:", " 1fr;justify-content:flex-start;align-items:center;font-family:inherit;gap:", ";transition:", ";:focus-visible{", "}", " ", ""], itemNumber.size, itemContentWrapper.gap, focusVisibleTransitionValue, focusVisible, function (_ref3) {
82
+ var clickable = _ref3.clickable,
83
+ state = _ref3.state;
84
+
85
+ if (clickable) {
86
+ return css([":hover{", "{", "}", "{", "}}"], ItemNumber, function () {
87
+ if (state === 'inactiveCompleted') {
88
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.completed.hover.borderColor, itemNumber.completed.hover.color, itemNumber.completed.hover.backgroundColor);
89
+ } else if (state === 'inactiveIncomplete') {
90
+ return css(["border-color:", ";color:", ";background-color:", ";"], itemNumber.inactive.hover.borderColor, itemNumber.inactive.hover.color, itemNumber.inactive.hover.backgroundColor);
91
+ }
92
+ }, ItemText, function () {
93
+ if (state !== 'disabled') {
94
+ return css(["text-decoration ", ";"], itemText.inactive.hover.textDecoration);
95
+ }
96
+ });
97
+ }
98
+ }, function (_ref4) {
99
+ var clickable = _ref4.clickable,
100
+ state = _ref4.state;
101
+ return clickable && state !== 'disabled' && css(["cursor:pointer;"]);
102
+ });
103
+
104
+ var getVisuallyHiddenText = function getVisuallyHiddenText(active, completed, index) {
105
+ return "".concat(index + 1, ", ").concat(active ? '' : 'Trinn, ').concat(completed ? 'Ferdig, ' : 'Ikke ferdig, ');
106
+ };
107
+
108
+ var ProgressTrackerItem = function ProgressTrackerItem(props) {
109
+ var _props$index = props.index,
110
+ index = _props$index === void 0 ? 0 : _props$index,
111
+ _props$completed = props.completed,
112
+ completed = _props$completed === void 0 ? false : _props$completed,
113
+ _props$disabled = props.disabled,
114
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
115
+ icon = props.icon,
116
+ children = props.children;
117
+
118
+ var _useProgressTrackerCo = useProgressTrackerContext(),
119
+ activeStep = _useProgressTrackerCo.activeStep;
120
+
121
+ var active = activeStep === index;
122
+ var styleProps = {
123
+ state: toItemState(active, completed, disabled),
124
+ clickable: props.onClick !== undefined
125
+ };
126
+ var stepNumberContent = useMemo(function () {
127
+ if (completed) {
128
+ return jsx(Icon, {
129
+ icon: CheckIcon,
130
+ iconSize: itemNumber.iconSize
131
+ });
132
+ }
133
+
134
+ if (icon !== undefined) {
135
+ return jsx(Icon, {
136
+ icon: icon,
137
+ iconSize: itemNumber.iconSize
138
+ });
139
+ }
140
+
141
+ return index + 1;
142
+ }, [completed, icon, index]);
143
+ return jsx(ItemWrapper, Object.assign({
144
+ "aria-current": active ? 'step' : undefined
145
+ }, {
146
+ children: jsxs(ItemContentWrapper, Object.assign({}, styleProps, {
147
+ as: props.onClick ? 'button' : 'div',
148
+ onClick: !disabled && props.onClick ? function () {
149
+ return props.onClick(index);
150
+ } : undefined,
151
+ disabled: disabled
152
+ }, {
153
+ children: [jsx(ItemNumber, Object.assign({}, styleProps, {
154
+ "aria-hidden": true
155
+ }, {
156
+ children: stepNumberContent
157
+ })), jsxs(ItemText, Object.assign({}, styleProps, {
158
+ children: [jsx(VisuallyHidden, Object.assign({
159
+ as: "span"
160
+ }, {
161
+ children: getVisuallyHiddenText(active, completed, index)
162
+ })), children]
163
+ }))]
164
+ }))
165
+ }));
166
+ };
167
+
168
+ export { ProgressTrackerItem };
@@ -0,0 +1 @@
1
+ export * from './ProgressTracker';
@@ -1,7 +1,7 @@
1
1
  import { RadioButtonProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "name" | "aria-describedby" | "onChange" | "value" | "checked" | "readOnly" | "required">, "className" | "id"> & {
4
+ component: import("react").ForwardRefExoticComponent<Pick<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "name" | "aria-describedby" | "onChange" | "value" | "checked" | "readOnly" | "required">, "id" | "className"> & {
5
5
  label?: string | undefined;
6
6
  disabled?: boolean | undefined;
7
7
  error?: boolean | undefined;
@@ -1,7 +1,7 @@
1
1
  import { RadioButtonGroupProps } from '.';
2
2
  declare const _default: {
3
3
  title: string;
4
- component: <T extends string | number = string>(props: Pick<Omit<import("react").HTMLAttributes<HTMLDivElement>, "onChange">, "className" | "id"> & {
4
+ component: <T extends string | number = string>(props: Pick<Omit<import("react").HTMLAttributes<HTMLDivElement>, "onChange">, "id" | "className"> & {
5
5
  name?: string | undefined;
6
6
  label?: string | undefined;
7
7
  onChange?: ((event: import("react").ChangeEvent<HTMLInputElement>, value: T | undefined) => void) | undefined;
@@ -6,13 +6,13 @@ declare type ButtonProps = {
6
6
  label?: string;
7
7
  loading?: boolean;
8
8
  } & ButtonHTMLAttributes<HTMLButtonElement>;
9
- export declare type SearchProps = Pick<BaseInputProps, 'tip'> & {
9
+ export declare type SearchProps = Pick<BaseInputProps, 'tip' | 'label'> & {
10
10
  /**Størrelsen på komponenten. */
11
11
  componentSize?: SearchSize;
12
12
  /**Props for søkeknappen. */
13
13
  buttonProps?: ButtonProps;
14
14
  } & InputHTMLAttributes<HTMLInputElement>;
15
- export declare const Search: import("react").ForwardRefExoticComponent<Pick<BaseInputProps, "tip"> & {
15
+ export declare const Search: import("react").ForwardRefExoticComponent<Pick<BaseInputProps, "label" | "tip"> & {
16
16
  /**Størrelsen på komponenten. */
17
17
  componentSize?: SearchSize | undefined;
18
18
  /**Props for søkeknappen. */
@@ -7,7 +7,7 @@ import { searchTokens } from './Search.tokens.js';
7
7
  import '../../helpers/Backdrop/Backdrop.js';
8
8
  import '../../helpers/Chevron/AnimatedChevronUpDown.styles.js';
9
9
  import '../../helpers/HiddenInput/HiddenInput.js';
10
- import { Input as Input$1, OuterInputContainer } from '../../helpers/Input/Input.styles.js';
10
+ import { Input as Input$1 } from '../../helpers/Input/Input.styles.js';
11
11
  import '../../helpers/Input/Input.tokens.js';
12
12
  import '../../helpers/Paper/Paper.js';
13
13
  import '../../helpers/RequiredMarker/RequiredMarker.js';
@@ -17,9 +17,13 @@ import '../../utils/color.js';
17
17
  import { Icon } from '../Icon/Icon.js';
18
18
  import '../../icons/utils/StyledSvg.js';
19
19
  import { SearchIcon } from '../../icons/tsx/search.js';
20
+ import '../Typography/Typography/Typography.js';
21
+ import { Label } from '../Typography/Label/Label.js';
22
+ import '../Typography/Link/Link.js';
20
23
 
21
24
  var input = searchTokens.input,
22
- container = searchTokens.container,
25
+ outerContainer = searchTokens.outerContainer,
26
+ horisontalContainer = searchTokens.horisontalContainer,
23
27
  icon = searchTokens.icon;
24
28
 
25
29
  var getIconSize = function getIconSize(size) {
@@ -49,32 +53,34 @@ var StyledIcon = styled(Icon).withConfig({
49
53
  var size = _ref2.size;
50
54
  return css(["top:", ";"], searchTokens.icon[size].top);
51
55
  });
52
- var Container = styled.div.withConfig({
53
- displayName: "Search__Container",
56
+ var OuterContainer = styled.div.withConfig({
57
+ displayName: "Search__OuterContainer",
54
58
  componentId: "sc-1ax3s9s-2"
55
- })(["display:flex;flex-direction:row;gap:", ";"], container.gap);
59
+ })(["display:flex;flex-direction:column;gap:", ";"], outerContainer.gap);
60
+ var HorisontalContainer = styled.div.withConfig({
61
+ displayName: "Search__HorisontalContainer",
62
+ componentId: "sc-1ax3s9s-3"
63
+ })(["display:grid;grid-template-columns:1fr auto;gap:", ";"], horisontalContainer.gap);
56
64
  var InputContainer = styled.div.withConfig({
57
65
  displayName: "Search__InputContainer",
58
- componentId: "sc-1ax3s9s-3"
59
- })(["position:relative;"]);
60
- var ButtonWrapper = styled.div.withConfig({
61
- displayName: "Search__ButtonWrapper",
62
66
  componentId: "sc-1ax3s9s-4"
63
- })([""]);
67
+ })(["position:relative;"]);
64
68
  var Search = /*#__PURE__*/forwardRef(function (_a, ref) {
65
69
  var _a$componentSize = _a.componentSize,
66
70
  componentSize = _a$componentSize === void 0 ? 'medium' : _a$componentSize,
67
71
  buttonProps = _a.buttonProps,
68
72
  name = _a.name,
73
+ label = _a.label,
69
74
  tip = _a.tip,
70
75
  id = _a.id,
71
76
  className = _a.className,
72
77
  style = _a.style,
73
78
  ariaDescribedby = _a['aria-describedby'],
74
- rest = __rest(_a, ["componentSize", "buttonProps", "name", "tip", "id", "className", "style", 'aria-describedby']);
79
+ rest = __rest(_a, ["componentSize", "buttonProps", "name", "label", "tip", "id", "className", "style", 'aria-describedby']);
75
80
 
76
81
  var generatedId = useId();
77
82
  var uniqueId = id !== null && id !== void 0 ? id : "".concat(generatedId, "-searchInput");
83
+ var hasLabel = !!label;
78
84
  var hasTip = !!tip;
79
85
  var tipId = derivativeIdGenerator(uniqueId, 'tip', tip);
80
86
  var containerProps = {
@@ -92,33 +98,35 @@ var Search = /*#__PURE__*/forwardRef(function (_a, ref) {
92
98
  });
93
99
 
94
100
  var _b = buttonProps || {},
95
- label = _b.label,
101
+ buttonLabel = _b.label,
96
102
  onClick = _b.onClick,
97
103
  otherButtonProps = __rest(_b, ["label", "onClick"]);
98
104
 
99
- return jsxs(Container, Object.assign({}, containerProps, {
100
- children: [jsxs(OuterInputContainer, Object.assign({
101
- width: "100%"
105
+ return jsxs(OuterContainer, {
106
+ children: [hasLabel && jsx(Label, Object.assign({
107
+ htmlFor: uniqueId
102
108
  }, {
103
- children: [jsxs(InputContainer, {
104
- children: [jsx(StyledIcon, {
105
- icon: SearchIcon,
109
+ children: label
110
+ })), jsxs("div", {
111
+ children: [jsxs(HorisontalContainer, Object.assign({}, containerProps, {
112
+ children: [jsxs(InputContainer, {
113
+ children: [jsx(StyledIcon, {
114
+ icon: SearchIcon,
115
+ size: componentSize,
116
+ iconSize: getIconSize(componentSize)
117
+ }), jsx(Input, Object.assign({}, inputProps))]
118
+ }), buttonProps && onClick && jsx(Button, Object.assign({
106
119
  size: componentSize,
107
- iconSize: getIconSize(componentSize)
108
- }), jsx(Input, Object.assign({}, inputProps))]
109
- }), hasTip && jsx(InputMessage, {
120
+ label: buttonLabel || 'Søk',
121
+ onClick: onClick
122
+ }, otherButtonProps))]
123
+ })), hasTip && jsx(InputMessage, {
110
124
  id: tipId,
111
125
  messageType: "tip",
112
126
  message: tip
113
127
  })]
114
- })), buttonProps && onClick && jsx(ButtonWrapper, {
115
- children: jsx(Button, Object.assign({
116
- size: componentSize,
117
- label: label || 'Søk',
118
- onClick: onClick
119
- }, otherButtonProps))
120
128
  })]
121
- }));
129
+ });
122
130
  });
123
131
 
124
132
  export { Search };