@navikt/ds-react 7.22.0 → 7.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/alert/Alert.d.ts +4 -0
- package/cjs/alert/Alert.js +15 -1
- package/cjs/alert/Alert.js.map +1 -1
- package/cjs/button/Button.js +30 -2
- package/cjs/button/Button.js.map +1 -1
- package/cjs/chat/Chat.js +14 -2
- package/cjs/chat/Chat.js.map +1 -1
- package/cjs/chips/Removable.js +22 -2
- package/cjs/chips/Removable.js.map +1 -1
- package/cjs/chips/Toggle.js +24 -5
- package/cjs/chips/Toggle.js.map +1 -1
- package/cjs/expansion-card/ExpansionCard.js +2 -2
- package/cjs/expansion-card/ExpansionCard.js.map +1 -1
- package/cjs/form/checkbox/Checkbox.js +1 -1
- package/cjs/form/checkbox/Checkbox.js.map +1 -1
- package/cjs/form/combobox/SelectedOptions/SelectedOptions.js +1 -1
- package/cjs/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
- package/cjs/form/confirmation-panel/ConfirmationPanel.js +2 -2
- package/cjs/form/confirmation-panel/ConfirmationPanel.js.map +1 -1
- package/cjs/form/error-summary/ErrorSummary.js +1 -1
- package/cjs/form/error-summary/ErrorSummary.js.map +1 -1
- package/cjs/form/form-summary/FormSummaryAnswers.js +2 -2
- package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -1
- package/cjs/form/radio/Radio.js +1 -1
- package/cjs/form/radio/Radio.js.map +1 -1
- package/cjs/form/search/Search.d.ts +1 -1
- package/cjs/form/search/Search.js +10 -7
- package/cjs/form/search/Search.js.map +1 -1
- package/cjs/guide-panel/GuidePanel.js +3 -3
- package/cjs/guide-panel/GuidePanel.js.map +1 -1
- package/cjs/guide-panel/Illustration.darkside.js +1 -1
- package/cjs/guide-panel/Illustration.darkside.js.map +1 -1
- package/cjs/help-text/HelpText.js +2 -2
- package/cjs/help-text/HelpText.js.map +1 -1
- package/cjs/layout/box/Box.darkside.d.ts +4 -4
- package/cjs/layout/box/Box.darkside.js.map +1 -1
- package/cjs/layout/utilities/types.d.ts +8 -8
- package/cjs/link/Link.js +26 -2
- package/cjs/link/Link.js.map +1 -1
- package/cjs/loader/Loader.d.ts +5 -0
- package/cjs/loader/Loader.js +15 -2
- package/cjs/loader/Loader.js.map +1 -1
- package/cjs/overlays/action-menu/ActionMenu.js +5 -5
- package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
- package/cjs/pagination/Pagination.js +5 -7
- package/cjs/pagination/Pagination.js.map +1 -1
- package/cjs/pagination/PaginationItem.js +2 -2
- package/cjs/pagination/PaginationItem.js.map +1 -1
- package/cjs/portal/Portal.js +1 -1
- package/cjs/portal/Portal.js.map +1 -1
- package/cjs/stepper/Stepper.js +3 -2
- package/cjs/stepper/Stepper.js.map +1 -1
- package/cjs/tag/Tag.js +39 -3
- package/cjs/tag/Tag.js.map +1 -1
- package/cjs/theme/Theme.d.ts +10 -1
- package/cjs/theme/Theme.js +3 -3
- package/cjs/theme/Theme.js.map +1 -1
- package/cjs/timeline/Pin.js +1 -3
- package/cjs/timeline/Pin.js.map +1 -1
- package/cjs/timeline/period/ClickablePeriod.js +3 -5
- package/cjs/timeline/period/ClickablePeriod.js.map +1 -1
- package/cjs/timeline/period/NonClickablePeriod.js +2 -1
- package/cjs/timeline/period/NonClickablePeriod.js.map +1 -1
- package/cjs/timeline/utils/period.d.ts +1 -1
- package/cjs/timeline/utils/period.js.map +1 -1
- package/cjs/toggle-group/ToggleGroup.js +21 -3
- package/cjs/toggle-group/ToggleGroup.js.map +1 -1
- package/cjs/types/index.d.ts +1 -0
- package/cjs/types/index.js +18 -0
- package/cjs/types/index.js.map +1 -0
- package/esm/alert/Alert.d.ts +4 -0
- package/esm/alert/Alert.js +15 -1
- package/esm/alert/Alert.js.map +1 -1
- package/esm/button/Button.js +30 -2
- package/esm/button/Button.js.map +1 -1
- package/esm/chat/Chat.js +14 -2
- package/esm/chat/Chat.js.map +1 -1
- package/esm/chips/Removable.js +23 -3
- package/esm/chips/Removable.js.map +1 -1
- package/esm/chips/Toggle.js +25 -6
- package/esm/chips/Toggle.js.map +1 -1
- package/esm/expansion-card/ExpansionCard.js +2 -2
- package/esm/expansion-card/ExpansionCard.js.map +1 -1
- package/esm/form/checkbox/Checkbox.js +1 -1
- package/esm/form/checkbox/Checkbox.js.map +1 -1
- package/esm/form/combobox/SelectedOptions/SelectedOptions.js +1 -1
- package/esm/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
- package/esm/form/confirmation-panel/ConfirmationPanel.js +2 -2
- package/esm/form/confirmation-panel/ConfirmationPanel.js.map +1 -1
- package/esm/form/error-summary/ErrorSummary.js +1 -1
- package/esm/form/error-summary/ErrorSummary.js.map +1 -1
- package/esm/form/form-summary/FormSummaryAnswers.js +2 -2
- package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -1
- package/esm/form/radio/Radio.js +1 -1
- package/esm/form/radio/Radio.js.map +1 -1
- package/esm/form/search/Search.d.ts +1 -1
- package/esm/form/search/Search.js +10 -7
- package/esm/form/search/Search.js.map +1 -1
- package/esm/guide-panel/GuidePanel.js +3 -3
- package/esm/guide-panel/GuidePanel.js.map +1 -1
- package/esm/guide-panel/Illustration.darkside.js +1 -1
- package/esm/guide-panel/Illustration.darkside.js.map +1 -1
- package/esm/help-text/HelpText.js +2 -2
- package/esm/help-text/HelpText.js.map +1 -1
- package/esm/layout/box/Box.darkside.d.ts +4 -4
- package/esm/layout/box/Box.darkside.js.map +1 -1
- package/esm/layout/utilities/types.d.ts +8 -8
- package/esm/link/Link.js +27 -3
- package/esm/link/Link.js.map +1 -1
- package/esm/loader/Loader.d.ts +5 -0
- package/esm/loader/Loader.js +15 -2
- package/esm/loader/Loader.js.map +1 -1
- package/esm/overlays/action-menu/ActionMenu.js +5 -5
- package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
- package/esm/pagination/Pagination.js +5 -7
- package/esm/pagination/Pagination.js.map +1 -1
- package/esm/pagination/PaginationItem.js +2 -2
- package/esm/pagination/PaginationItem.js.map +1 -1
- package/esm/portal/Portal.js +1 -1
- package/esm/portal/Portal.js.map +1 -1
- package/esm/stepper/Stepper.js +3 -2
- package/esm/stepper/Stepper.js.map +1 -1
- package/esm/tag/Tag.js +39 -3
- package/esm/tag/Tag.js.map +1 -1
- package/esm/theme/Theme.d.ts +10 -1
- package/esm/theme/Theme.js +3 -3
- package/esm/theme/Theme.js.map +1 -1
- package/esm/timeline/Pin.js +2 -4
- package/esm/timeline/Pin.js.map +1 -1
- package/esm/timeline/period/ClickablePeriod.js +4 -6
- package/esm/timeline/period/ClickablePeriod.js.map +1 -1
- package/esm/timeline/period/NonClickablePeriod.js +2 -1
- package/esm/timeline/period/NonClickablePeriod.js.map +1 -1
- package/esm/timeline/utils/period.d.ts +1 -1
- package/esm/timeline/utils/period.js.map +1 -1
- package/esm/toggle-group/ToggleGroup.js +22 -4
- package/esm/toggle-group/ToggleGroup.js.map +1 -1
- package/esm/types/index.d.ts +1 -0
- package/esm/types/index.js +2 -0
- package/esm/types/index.js.map +1 -0
- package/esm/types/theme.d.ts +15 -0
- package/package.json +13 -8
- package/src/alert/Alert.tsx +22 -0
- package/src/button/Button.tsx +38 -0
- package/src/chat/Chat.tsx +17 -0
- package/src/chips/Removable.tsx +30 -3
- package/src/chips/Toggle.tsx +31 -13
- package/src/expansion-card/ExpansionCard.tsx +2 -0
- package/src/form/checkbox/Checkbox.tsx +1 -0
- package/src/form/combobox/SelectedOptions/SelectedOptions.tsx +6 -1
- package/src/form/confirmation-panel/ConfirmationPanel.tsx +2 -2
- package/src/form/error-summary/ErrorSummary.tsx +1 -1
- package/src/form/form-summary/FormSummaryAnswers.tsx +23 -12
- package/src/form/radio/Radio.tsx +1 -0
- package/src/form/search/Search.tsx +48 -31
- package/src/guide-panel/GuidePanel.tsx +13 -2
- package/src/guide-panel/Illustration.darkside.tsx +1 -6
- package/src/help-text/HelpText.tsx +5 -1
- package/src/layout/box/Box.darkside.tsx +10 -8
- package/src/layout/utilities/css.ts +8 -8
- package/src/layout/utilities/types.ts +18 -16
- package/src/link/Link.tsx +36 -3
- package/src/loader/Loader.tsx +24 -0
- package/src/overlays/action-menu/ActionMenu.tsx +5 -5
- package/src/pagination/Pagination.tsx +5 -0
- package/src/pagination/PaginationItem.tsx +3 -1
- package/src/portal/Portal.tsx +6 -1
- package/src/react-css.d.ts +0 -4
- package/src/stepper/Stepper.tsx +4 -3
- package/src/tag/Tag.tsx +53 -4
- package/src/theme/Theme.tsx +13 -2
- package/src/timeline/Pin.tsx +1 -3
- package/src/timeline/period/ClickablePeriod.tsx +2 -3
- package/src/timeline/period/NonClickablePeriod.tsx +1 -0
- package/src/timeline/utils/period.ts +1 -1
- package/src/toggle-group/ToggleGroup.tsx +28 -3
- package/src/types/index.ts +1 -0
- package/src/types/theme.d.ts +15 -0
package/src/alert/Alert.tsx
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
} from "@navikt/aksel-icons";
|
|
9
9
|
import { Button } from "../button";
|
|
10
10
|
import { useRenameCSS } from "../theme/Theme";
|
|
11
|
+
import { AkselColor } from "../types";
|
|
11
12
|
import { BodyLong } from "../typography";
|
|
12
13
|
import { useI18n } from "../util/i18n/i18n.hooks";
|
|
13
14
|
|
|
@@ -53,6 +54,10 @@ export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
53
54
|
* **Requires closeButton to be true**.
|
|
54
55
|
*/
|
|
55
56
|
onClose?: () => void;
|
|
57
|
+
/**
|
|
58
|
+
* Overriding Alert color is not supported.
|
|
59
|
+
*/
|
|
60
|
+
"data-color"?: never;
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
const IconMap = {
|
|
@@ -93,6 +98,8 @@ export const Alert = forwardRef<HTMLDivElement, AlertProps>(
|
|
|
93
98
|
return (
|
|
94
99
|
<div
|
|
95
100
|
{...rest}
|
|
101
|
+
data-color={variantToRole(variant)}
|
|
102
|
+
data-variant={variant}
|
|
96
103
|
ref={ref}
|
|
97
104
|
className={cn(
|
|
98
105
|
className,
|
|
@@ -142,4 +149,19 @@ export const Alert = forwardRef<HTMLDivElement, AlertProps>(
|
|
|
142
149
|
},
|
|
143
150
|
);
|
|
144
151
|
|
|
152
|
+
function variantToRole(variant: AlertProps["variant"]): AkselColor {
|
|
153
|
+
switch (variant) {
|
|
154
|
+
case "warning":
|
|
155
|
+
return "warning";
|
|
156
|
+
case "error":
|
|
157
|
+
return "danger";
|
|
158
|
+
case "info":
|
|
159
|
+
return "info";
|
|
160
|
+
case "success":
|
|
161
|
+
return "success";
|
|
162
|
+
default:
|
|
163
|
+
return "info";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
145
167
|
export default Alert;
|
package/src/button/Button.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { forwardRef } from "react";
|
|
2
2
|
import { Loader } from "../loader";
|
|
3
3
|
import { useRenameCSS } from "../theme/Theme";
|
|
4
|
+
import { AkselColor } from "../types";
|
|
4
5
|
import { Label } from "../typography";
|
|
5
6
|
import { omit } from "../util";
|
|
6
7
|
import { composeEventHandlers } from "../util/composeEventHandlers";
|
|
@@ -75,6 +76,7 @@ export const Button: OverridableComponent<ButtonProps, HTMLButtonElement> =
|
|
|
75
76
|
icon,
|
|
76
77
|
iconPosition = "left",
|
|
77
78
|
onKeyUp,
|
|
79
|
+
"data-color": color,
|
|
78
80
|
...rest
|
|
79
81
|
},
|
|
80
82
|
ref,
|
|
@@ -93,6 +95,8 @@ export const Button: OverridableComponent<ButtonProps, HTMLButtonElement> =
|
|
|
93
95
|
return (
|
|
94
96
|
<Component
|
|
95
97
|
{...(Component !== "button" ? { role: "button" } : {})}
|
|
98
|
+
data-color={color ?? variantToColor(variant)}
|
|
99
|
+
data-variant={variantToSimplifiedVariant(variant)}
|
|
96
100
|
{...filterProps}
|
|
97
101
|
ref={ref}
|
|
98
102
|
onKeyUp={composeEventHandlers(onKeyUp, handleKeyUp)}
|
|
@@ -126,4 +130,38 @@ export const Button: OverridableComponent<ButtonProps, HTMLButtonElement> =
|
|
|
126
130
|
},
|
|
127
131
|
);
|
|
128
132
|
|
|
133
|
+
function variantToColor(
|
|
134
|
+
variant: ButtonProps["variant"],
|
|
135
|
+
): AkselColor | undefined {
|
|
136
|
+
switch (variant) {
|
|
137
|
+
case "primary-neutral":
|
|
138
|
+
case "secondary-neutral":
|
|
139
|
+
case "tertiary-neutral":
|
|
140
|
+
return "neutral";
|
|
141
|
+
case "danger":
|
|
142
|
+
return "danger";
|
|
143
|
+
default:
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function variantToSimplifiedVariant(
|
|
149
|
+
variant: ButtonProps["variant"],
|
|
150
|
+
): "primary" | "secondary" | "tertiary" {
|
|
151
|
+
switch (variant) {
|
|
152
|
+
case "primary":
|
|
153
|
+
case "primary-neutral":
|
|
154
|
+
case "danger":
|
|
155
|
+
return "primary";
|
|
156
|
+
case "secondary":
|
|
157
|
+
case "secondary-neutral":
|
|
158
|
+
return "secondary";
|
|
159
|
+
case "tertiary":
|
|
160
|
+
case "tertiary-neutral":
|
|
161
|
+
return "tertiary";
|
|
162
|
+
default:
|
|
163
|
+
return "primary";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
129
167
|
export default Button;
|
package/src/chat/Chat.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { HTMLAttributes, forwardRef } from "react";
|
|
2
2
|
import { useRenameCSS } from "../theme/Theme";
|
|
3
|
+
import { AkselColor } from "../types";
|
|
3
4
|
import { BodyLong, HeadingProps } from "../typography";
|
|
4
5
|
import Bubble from "./Bubble";
|
|
5
6
|
|
|
@@ -94,6 +95,7 @@ export const Chat = forwardRef<HTMLDivElement, ChatProps>(
|
|
|
94
95
|
toptextPosition,
|
|
95
96
|
size = "medium",
|
|
96
97
|
toptextHeadingLevel = "3",
|
|
98
|
+
"data-color": color,
|
|
97
99
|
...rest
|
|
98
100
|
}: ChatProps,
|
|
99
101
|
ref,
|
|
@@ -111,7 +113,9 @@ export const Chat = forwardRef<HTMLDivElement, ChatProps>(
|
|
|
111
113
|
`navds-chat--${size}`,
|
|
112
114
|
`navds-chat--${variant}`,
|
|
113
115
|
)}
|
|
116
|
+
data-color={color ?? variantToColor(variant)}
|
|
114
117
|
{...rest}
|
|
118
|
+
data-variant={variant}
|
|
115
119
|
>
|
|
116
120
|
{avatar && (
|
|
117
121
|
<div className={cn("navds-chat__avatar")} aria-hidden>
|
|
@@ -139,6 +143,19 @@ export const Chat = forwardRef<HTMLDivElement, ChatProps>(
|
|
|
139
143
|
},
|
|
140
144
|
) as ChatComponent;
|
|
141
145
|
|
|
146
|
+
function variantToColor(variant: ChatProps["variant"]): AkselColor {
|
|
147
|
+
switch (variant) {
|
|
148
|
+
case "neutral":
|
|
149
|
+
return "neutral";
|
|
150
|
+
case "subtle":
|
|
151
|
+
return "neutral";
|
|
152
|
+
case "info":
|
|
153
|
+
return "info";
|
|
154
|
+
default:
|
|
155
|
+
return "neutral";
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
142
159
|
Chat.Bubble = Bubble;
|
|
143
160
|
|
|
144
161
|
export default Chat;
|
package/src/chips/Removable.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { forwardRef } from "react";
|
|
2
2
|
import { XMarkIcon } from "@navikt/aksel-icons";
|
|
3
|
-
import { useRenameCSS } from "../theme/Theme";
|
|
3
|
+
import { useRenameCSS, useThemeInternal } from "../theme/Theme";
|
|
4
|
+
import { AkselColor } from "../types";
|
|
4
5
|
import { composeEventHandlers } from "../util/composeEventHandlers";
|
|
5
6
|
import { useI18n } from "../util/i18n/i18n.hooks";
|
|
6
7
|
|
|
@@ -25,27 +26,40 @@ export const RemovableChips = forwardRef<
|
|
|
25
26
|
(
|
|
26
27
|
{
|
|
27
28
|
children,
|
|
28
|
-
variant
|
|
29
|
+
variant,
|
|
29
30
|
onDelete,
|
|
30
31
|
className,
|
|
31
32
|
onClick,
|
|
32
33
|
type = "button",
|
|
34
|
+
"data-color": color,
|
|
33
35
|
...rest
|
|
34
36
|
},
|
|
35
37
|
ref,
|
|
36
38
|
) => {
|
|
37
39
|
const translate = useI18n("Chips");
|
|
40
|
+
const themeContext = useThemeInternal(false);
|
|
38
41
|
const { cn } = useRenameCSS();
|
|
39
42
|
|
|
43
|
+
let localVariant: ChipsRemovableProps["variant"] | undefined;
|
|
44
|
+
|
|
45
|
+
if (themeContext) {
|
|
46
|
+
localVariant = variant;
|
|
47
|
+
} else {
|
|
48
|
+
localVariant = variant ?? "action";
|
|
49
|
+
}
|
|
50
|
+
|
|
40
51
|
return (
|
|
41
52
|
<button
|
|
53
|
+
data-color={color ?? variantToColor(localVariant)}
|
|
42
54
|
{...rest}
|
|
43
55
|
ref={ref}
|
|
44
56
|
type={type}
|
|
45
57
|
className={cn(
|
|
46
58
|
"navds-chips__chip navds-chips__removable navds-chips--icon-right",
|
|
47
59
|
className,
|
|
48
|
-
|
|
60
|
+
{
|
|
61
|
+
[`navds-chips__removable--${localVariant}`]: localVariant,
|
|
62
|
+
},
|
|
49
63
|
)}
|
|
50
64
|
aria-label={`${children} ${translate("Removable.labelSuffix")}`}
|
|
51
65
|
onClick={composeEventHandlers(onClick, onDelete)}
|
|
@@ -59,4 +73,17 @@ export const RemovableChips = forwardRef<
|
|
|
59
73
|
},
|
|
60
74
|
);
|
|
61
75
|
|
|
76
|
+
function variantToColor(
|
|
77
|
+
variant?: ChipsRemovableProps["variant"],
|
|
78
|
+
): AkselColor | undefined {
|
|
79
|
+
switch (variant) {
|
|
80
|
+
case "action":
|
|
81
|
+
return "accent";
|
|
82
|
+
case "neutral":
|
|
83
|
+
return "neutral";
|
|
84
|
+
default:
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
62
89
|
export default RemovableChips;
|
package/src/chips/Toggle.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { forwardRef } from "react";
|
|
2
|
-
import { useRenameCSS } from "../theme/Theme";
|
|
2
|
+
import { useRenameCSS, useThemeInternal } from "../theme/Theme";
|
|
3
|
+
import { AkselColor } from "../types";
|
|
3
4
|
import { OverridableComponent } from "../util/types";
|
|
4
5
|
|
|
5
6
|
export interface ChipsToggleProps
|
|
@@ -30,25 +31,33 @@ export const ToggleChips: OverridableComponent<
|
|
|
30
31
|
className,
|
|
31
32
|
children,
|
|
32
33
|
selected,
|
|
33
|
-
variant
|
|
34
|
+
variant,
|
|
34
35
|
checkmark = true,
|
|
35
36
|
as: Component = "button",
|
|
37
|
+
"data-color": color,
|
|
36
38
|
...rest
|
|
37
39
|
},
|
|
38
40
|
ref,
|
|
39
41
|
) => {
|
|
40
42
|
const { cn } = useRenameCSS();
|
|
43
|
+
const themeContext = useThemeInternal(false);
|
|
44
|
+
let localVariant: ChipsToggleProps["variant"] | undefined;
|
|
45
|
+
|
|
46
|
+
if (themeContext) {
|
|
47
|
+
localVariant = variant;
|
|
48
|
+
} else {
|
|
49
|
+
localVariant = variant ?? "action";
|
|
50
|
+
}
|
|
41
51
|
|
|
42
52
|
return (
|
|
43
53
|
<Component
|
|
54
|
+
data-color={color ?? variantToColor(localVariant)}
|
|
44
55
|
{...rest}
|
|
45
56
|
ref={ref}
|
|
46
|
-
className={cn(
|
|
47
|
-
"navds-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
{ "navds-chips__toggle--with-checkmark": checkmark },
|
|
51
|
-
)}
|
|
57
|
+
className={cn("navds-chips__chip navds-chips__toggle", className, {
|
|
58
|
+
"navds-chips__toggle--with-checkmark": checkmark,
|
|
59
|
+
[`navds-chips__toggle--${localVariant}`]: localVariant,
|
|
60
|
+
})}
|
|
52
61
|
aria-pressed={selected}
|
|
53
62
|
data-pressed={selected}
|
|
54
63
|
>
|
|
@@ -77,11 +86,7 @@ export const ToggleChips: OverridableComponent<
|
|
|
77
86
|
clipRule="evenodd"
|
|
78
87
|
d="M10 3.125C6.20304 3.125 3.125 6.20304 3.125 10C3.125 13.797 6.20304 16.875 10 16.875C13.797 16.875 16.875 13.797 16.875 10C16.875 6.20304 13.797 3.125 10 3.125ZM1.875 10C1.875 5.51269 5.51269 1.875 10 1.875C14.4873 1.875 18.125 5.51269 18.125 10C18.125 14.4873 14.4873 18.125 10 18.125C5.51269 18.125 1.875 14.4873 1.875 10Z"
|
|
79
88
|
/* After removing old fallbacks, change to currentColor */
|
|
80
|
-
fill=
|
|
81
|
-
variant === "action"
|
|
82
|
-
? "--ax-text-accent"
|
|
83
|
-
: "--ax-text-neutral"
|
|
84
|
-
}, var(--ac-chip-toggle-circle-border, var(--a-border-default)))`}
|
|
89
|
+
fill="var(--ax-text-default, var(--ac-chip-toggle-circle-border, var(--a-border-default)))"
|
|
85
90
|
/>
|
|
86
91
|
)}
|
|
87
92
|
</svg>
|
|
@@ -92,4 +97,17 @@ export const ToggleChips: OverridableComponent<
|
|
|
92
97
|
},
|
|
93
98
|
);
|
|
94
99
|
|
|
100
|
+
function variantToColor(
|
|
101
|
+
variant?: ChipsToggleProps["variant"],
|
|
102
|
+
): AkselColor | undefined {
|
|
103
|
+
switch (variant) {
|
|
104
|
+
case "action":
|
|
105
|
+
return "accent";
|
|
106
|
+
case "neutral":
|
|
107
|
+
return "neutral";
|
|
108
|
+
default:
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
95
113
|
export default ToggleChips;
|
|
@@ -113,6 +113,7 @@ export const ExpansionCard = forwardRef<HTMLDivElement, ExpansionCardProps>(
|
|
|
113
113
|
open,
|
|
114
114
|
defaultOpen = false,
|
|
115
115
|
size = "medium",
|
|
116
|
+
"data-color": color = "neutral",
|
|
116
117
|
...rest
|
|
117
118
|
},
|
|
118
119
|
ref,
|
|
@@ -138,6 +139,7 @@ export const ExpansionCard = forwardRef<HTMLDivElement, ExpansionCardProps>(
|
|
|
138
139
|
}}
|
|
139
140
|
>
|
|
140
141
|
<section
|
|
142
|
+
data-color={color}
|
|
141
143
|
{...rest}
|
|
142
144
|
className={cn(
|
|
143
145
|
"navds-expansioncard",
|
|
@@ -27,7 +27,12 @@ const Option = ({ option }: { option: ComboboxOption }) => {
|
|
|
27
27
|
|
|
28
28
|
if (readOnly || inputProps.disabled) {
|
|
29
29
|
return (
|
|
30
|
-
<Chips.Toggle
|
|
30
|
+
<Chips.Toggle
|
|
31
|
+
data-color="neutral"
|
|
32
|
+
variant="neutral"
|
|
33
|
+
checkmark={false}
|
|
34
|
+
as="div"
|
|
35
|
+
>
|
|
31
36
|
{option.label}
|
|
32
37
|
</Chips.Toggle>
|
|
33
38
|
);
|
|
@@ -60,7 +60,7 @@ export const ConfirmationPanel = forwardRef<
|
|
|
60
60
|
|
|
61
61
|
const id = useId();
|
|
62
62
|
|
|
63
|
-
const
|
|
63
|
+
const currentColor = hasError
|
|
64
64
|
? "danger"
|
|
65
65
|
: props.checked
|
|
66
66
|
? "success"
|
|
@@ -73,7 +73,7 @@ export const ConfirmationPanel = forwardRef<
|
|
|
73
73
|
"navds-confirmation-panel--error": hasError,
|
|
74
74
|
"navds-confirmation-panel--checked": !!props.checked,
|
|
75
75
|
})}
|
|
76
|
-
data-color
|
|
76
|
+
data-color={currentColor}
|
|
77
77
|
>
|
|
78
78
|
<div className={cn("navds-confirmation-panel__inner")}>
|
|
79
79
|
{children && (
|
|
@@ -105,7 +105,7 @@ export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
|
|
|
105
105
|
<Heading
|
|
106
106
|
className={cn("navds-error-summary__heading")}
|
|
107
107
|
as={headingTag}
|
|
108
|
-
size="small"
|
|
108
|
+
size={size === "medium" ? "small" : "xsmall"}
|
|
109
109
|
ref={headingRef}
|
|
110
110
|
tabIndex={-1}
|
|
111
111
|
>
|
|
@@ -12,18 +12,29 @@ export interface FormSummaryAnswersProps
|
|
|
12
12
|
export const FormSummaryAnswers = forwardRef<
|
|
13
13
|
HTMLDListElement,
|
|
14
14
|
FormSummaryAnswersProps
|
|
15
|
-
>(
|
|
16
|
-
|
|
15
|
+
>(
|
|
16
|
+
(
|
|
17
|
+
{
|
|
18
|
+
children,
|
|
19
|
+
className,
|
|
20
|
+
"data-color": color = "info",
|
|
21
|
+
...rest
|
|
22
|
+
}: FormSummaryAnswersProps,
|
|
23
|
+
ref,
|
|
24
|
+
) => {
|
|
25
|
+
const { cn } = useRenameCSS();
|
|
17
26
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
return (
|
|
28
|
+
<dl
|
|
29
|
+
ref={ref}
|
|
30
|
+
data-color={color}
|
|
31
|
+
{...rest}
|
|
32
|
+
className={cn("navds-form-summary__answers", className)}
|
|
33
|
+
>
|
|
34
|
+
{children}
|
|
35
|
+
</dl>
|
|
36
|
+
);
|
|
37
|
+
},
|
|
38
|
+
);
|
|
28
39
|
|
|
29
40
|
export default FormSummaryAnswers;
|
package/src/form/radio/Radio.tsx
CHANGED
|
@@ -21,6 +21,7 @@ export const Radio = forwardRef<HTMLInputElement, RadioProps>((props, ref) => {
|
|
|
21
21
|
"navds-radio--disabled": inputProps.disabled,
|
|
22
22
|
"navds-radio--readonly": readOnly,
|
|
23
23
|
})}
|
|
24
|
+
data-color={hasError ? "danger" : props["data-color"]}
|
|
24
25
|
>
|
|
25
26
|
<input
|
|
26
27
|
{...omit(props, ["children", "size", "description", "readOnly"])}
|
|
@@ -91,7 +91,7 @@ interface SearchComponent
|
|
|
91
91
|
* @example
|
|
92
92
|
* ```jsx
|
|
93
93
|
* <form role="search">
|
|
94
|
-
* <Search label="Søk alle Nav sine sider" variant="primary" />
|
|
94
|
+
* <Search label="Søk i alle Nav sine sider" variant="primary" />
|
|
95
95
|
* </form>
|
|
96
96
|
* ```
|
|
97
97
|
*/
|
|
@@ -126,11 +126,9 @@ export const Search = forwardRef<HTMLInputElement, SearchProps>(
|
|
|
126
126
|
|
|
127
127
|
const { cn } = useRenameCSS();
|
|
128
128
|
|
|
129
|
-
const themeContext = useThemeInternal(false);
|
|
130
|
-
|
|
131
129
|
const searchRef = useRef<HTMLInputElement | null>(null);
|
|
132
130
|
const mergedRef = useMergeRefs(searchRef, ref);
|
|
133
|
-
|
|
131
|
+
|
|
134
132
|
const [internalValue, setInternalValue] = useState(defaultValue ?? "");
|
|
135
133
|
|
|
136
134
|
const handleChange = (newValue: string) => {
|
|
@@ -151,32 +149,6 @@ export const Search = forwardRef<HTMLInputElement, SearchProps>(
|
|
|
151
149
|
const showClearButton =
|
|
152
150
|
clearButton && !inputProps.disabled && (value ?? internalValue);
|
|
153
151
|
|
|
154
|
-
const ClearButton = () =>
|
|
155
|
-
themeContext ? (
|
|
156
|
-
<Button
|
|
157
|
-
className={cn("navds-search__button-clear")}
|
|
158
|
-
variant="tertiary-neutral"
|
|
159
|
-
size={size === "medium" ? "small" : "xsmall"}
|
|
160
|
-
icon={<XMarkIcon aria-hidden />}
|
|
161
|
-
title={clearButtonLabel || translate("clear")}
|
|
162
|
-
hidden={!showClearButton}
|
|
163
|
-
onClick={(event) => handleClear({ trigger: "Click", event })}
|
|
164
|
-
type="button"
|
|
165
|
-
/>
|
|
166
|
-
) : (
|
|
167
|
-
<button
|
|
168
|
-
type="button"
|
|
169
|
-
onClick={(event) => handleClear({ trigger: "Click", event })}
|
|
170
|
-
className={cn("navds-search__button-clear")}
|
|
171
|
-
hidden={!showClearButton}
|
|
172
|
-
>
|
|
173
|
-
<span className={cn("navds-sr-only")}>
|
|
174
|
-
{clearButtonLabel || translate("clear")}
|
|
175
|
-
</span>
|
|
176
|
-
<XMarkIcon aria-hidden />
|
|
177
|
-
</button>
|
|
178
|
-
);
|
|
179
|
-
|
|
180
152
|
return (
|
|
181
153
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
182
154
|
<div
|
|
@@ -245,7 +217,13 @@ export const Search = forwardRef<HTMLInputElement, SearchProps>(
|
|
|
245
217
|
)}
|
|
246
218
|
{...(htmlSize ? { size: Number(htmlSize) } : {})}
|
|
247
219
|
/>
|
|
248
|
-
|
|
220
|
+
{showClearButton && (
|
|
221
|
+
<ClearButton
|
|
222
|
+
handleClear={handleClear}
|
|
223
|
+
size={size}
|
|
224
|
+
clearButtonLabel={clearButtonLabel}
|
|
225
|
+
/>
|
|
226
|
+
)}
|
|
249
227
|
</div>
|
|
250
228
|
<SearchContext.Provider
|
|
251
229
|
value={{
|
|
@@ -275,6 +253,45 @@ export const Search = forwardRef<HTMLInputElement, SearchProps>(
|
|
|
275
253
|
},
|
|
276
254
|
) as SearchComponent;
|
|
277
255
|
|
|
256
|
+
type SearchClearButtonProps = Pick<SearchProps, "size" | "clearButtonLabel"> & {
|
|
257
|
+
handleClear: (clearEvent: SearchClearEvent) => void;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
function ClearButton({
|
|
261
|
+
size,
|
|
262
|
+
clearButtonLabel,
|
|
263
|
+
handleClear,
|
|
264
|
+
}: SearchClearButtonProps) {
|
|
265
|
+
const { cn } = useRenameCSS();
|
|
266
|
+
|
|
267
|
+
const themeContext = useThemeInternal(false);
|
|
268
|
+
const translate = useI18n("Search");
|
|
269
|
+
|
|
270
|
+
return themeContext ? (
|
|
271
|
+
<Button
|
|
272
|
+
className={cn("navds-search__button-clear")}
|
|
273
|
+
variant="tertiary"
|
|
274
|
+
data-color="neutral"
|
|
275
|
+
size={size === "medium" ? "small" : "xsmall"}
|
|
276
|
+
icon={<XMarkIcon aria-hidden />}
|
|
277
|
+
title={clearButtonLabel || translate("clear")}
|
|
278
|
+
onClick={(event) => handleClear({ trigger: "Click", event })}
|
|
279
|
+
type="button"
|
|
280
|
+
/>
|
|
281
|
+
) : (
|
|
282
|
+
<button
|
|
283
|
+
type="button"
|
|
284
|
+
onClick={(event) => handleClear({ trigger: "Click", event })}
|
|
285
|
+
className={cn("navds-search__button-clear")}
|
|
286
|
+
>
|
|
287
|
+
<span className={cn("navds-sr-only")}>
|
|
288
|
+
{clearButtonLabel || translate("clear")}
|
|
289
|
+
</span>
|
|
290
|
+
<XMarkIcon aria-hidden />
|
|
291
|
+
</button>
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
|
|
278
295
|
Search.Button = SearchButton;
|
|
279
296
|
|
|
280
297
|
export default Search;
|
|
@@ -35,12 +35,23 @@ export interface GuidePanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export const GuidePanel = forwardRef<HTMLDivElement, GuidePanelProps>(
|
|
38
|
-
(
|
|
38
|
+
(
|
|
39
|
+
{
|
|
40
|
+
children,
|
|
41
|
+
className,
|
|
42
|
+
illustration,
|
|
43
|
+
poster,
|
|
44
|
+
"data-color": color = "info",
|
|
45
|
+
...rest
|
|
46
|
+
},
|
|
47
|
+
ref,
|
|
48
|
+
) => {
|
|
39
49
|
const { cn } = useRenameCSS();
|
|
40
50
|
const themeContext = useThemeInternal(false);
|
|
41
51
|
|
|
42
52
|
return (
|
|
43
53
|
<div
|
|
54
|
+
data-color={color}
|
|
44
55
|
{...rest}
|
|
45
56
|
ref={ref}
|
|
46
57
|
className={cn("navds-guide-panel", className, {
|
|
@@ -81,7 +92,7 @@ export const GuidePanel = forwardRef<HTMLDivElement, GuidePanelProps>(
|
|
|
81
92
|
fillRule="evenodd"
|
|
82
93
|
clipRule="evenodd"
|
|
83
94
|
d="M0 20C-2.87106e-10 19.9934 3.21047e-05 19.987 9.68646e-05 19.9804C0.0494722 14.9659 0.299239 11.5341 0.964025 8.68212C1.64231 5.77217 2.72947 3.56367 4.28501 0.971094C4.71185 0.259692 5.53358 -0.114327 6.35038 0.0310157C7.16718 0.176359 7.80944 0.810884 7.96467 1.62586C8.84145 6.22896 11.9453 10.3172 16.2599 13.2908C20.5715 16.2623 25.9294 18.0001 31 18.0001C32.1046 18.0001 33 18.8954 33 20L0 20ZM6.755 4.70521C8.97688 10.7068 14.4934 15.469 20.8803 18.0001C24.1345 19.2897 27.6146 20.0001 31 20.0001L2 20.0001C2.00689 19.3003 2.01774 18.6346 2.033 18.0001C2.19625 11.2107 2.86405 7.98363 4.58479 4.54371C4.9944 3.72487 5.46367 2.89399 6 2.00011C6.17639 2.92619 6.43058 3.82889 6.755 4.70521Z"
|
|
84
|
-
fill="var(--ax-border-
|
|
95
|
+
fill="var(--ax-border-default)"
|
|
85
96
|
/>
|
|
86
97
|
</svg>
|
|
87
98
|
)}
|
|
@@ -16,12 +16,7 @@ export const DarksideGudiepanelIllustration = () => {
|
|
|
16
16
|
role="img"
|
|
17
17
|
>
|
|
18
18
|
<g clipPath="url(#clip0_1387_21067)">
|
|
19
|
-
<rect
|
|
20
|
-
width="80"
|
|
21
|
-
height="80"
|
|
22
|
-
rx="40"
|
|
23
|
-
fill="var(--ax-bg-info-moderate)"
|
|
24
|
-
/>
|
|
19
|
+
<rect width="80" height="80" rx="40" fill="var(--ax-bg-moderate)" />
|
|
25
20
|
|
|
26
21
|
<path
|
|
27
22
|
fillRule="evenodd"
|
|
@@ -44,6 +44,7 @@ export const HelpText = forwardRef<HTMLButtonElement, HelpTextProps>(
|
|
|
44
44
|
title,
|
|
45
45
|
onClick,
|
|
46
46
|
wrapperClassName,
|
|
47
|
+
"data-color": color = "info",
|
|
47
48
|
...rest
|
|
48
49
|
},
|
|
49
50
|
ref,
|
|
@@ -58,7 +59,10 @@ export const HelpText = forwardRef<HTMLButtonElement, HelpTextProps>(
|
|
|
58
59
|
const titleWithFallback = title || translate("title");
|
|
59
60
|
|
|
60
61
|
return (
|
|
61
|
-
<div
|
|
62
|
+
<div
|
|
63
|
+
className={cn("navds-help-text", wrapperClassName)}
|
|
64
|
+
data-color={color}
|
|
65
|
+
>
|
|
62
66
|
<button
|
|
63
67
|
{...rest}
|
|
64
68
|
ref={mergedRef}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React, { forwardRef } from "react";
|
|
2
2
|
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
AkselColoredBorderToken,
|
|
4
|
+
AkselColoredStatelessBackgroundToken,
|
|
5
|
+
AkselRootBackgroundToken,
|
|
6
|
+
AkselRootBorderToken,
|
|
7
|
+
AkselShadowToken,
|
|
8
8
|
} from "@navikt/ds-tokens/types";
|
|
9
9
|
import { Slot } from "../../slot/Slot";
|
|
10
10
|
import { useRenameCSS } from "../../theme/Theme";
|
|
@@ -28,13 +28,15 @@ export type BoxNewProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
28
28
|
* Accepts a [background/surface color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#afff774dad80).
|
|
29
29
|
* @see {@link StaticDefaultBgKeys} and {@link StaticBgKeys}
|
|
30
30
|
*/
|
|
31
|
-
background?:
|
|
31
|
+
background?: AkselRootBackgroundToken | AkselColoredStatelessBackgroundToken;
|
|
32
32
|
/**
|
|
33
33
|
* CSS `border-color` property.
|
|
34
34
|
* Accepts a [border color token](https://aksel.nav.no/grunnleggende/styling/design-tokens#adb1767e2f87).
|
|
35
35
|
* @see {@link BorderColorKeys} and {@link BorderColorWithRoleKeys}
|
|
36
36
|
*/
|
|
37
|
-
borderColor?:
|
|
37
|
+
borderColor?:
|
|
38
|
+
| Exclude<AkselRootBorderToken, "focus">
|
|
39
|
+
| AkselColoredBorderToken;
|
|
38
40
|
/**
|
|
39
41
|
* CSS `border-radius` property.
|
|
40
42
|
* Accepts a [radius token](https://aksel.nav.no/grunnleggende/styling/design-tokens#6d79c5605d31)
|
|
@@ -60,7 +62,7 @@ export type BoxNewProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
60
62
|
* shadow='small'
|
|
61
63
|
* @see {@link ShadowKeys}
|
|
62
64
|
*/
|
|
63
|
-
shadow?:
|
|
65
|
+
shadow?: AkselShadowToken;
|
|
64
66
|
} & PrimitiveProps &
|
|
65
67
|
PrimitiveAsChildProps;
|
|
66
68
|
|