@helsenorge/designsystem-react 15.5.1 → 15.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/lib/CHANGELOG.md +13 -0
  2. package/lib/Checkbox.js +1 -1
  3. package/lib/Checkbox.js.map +1 -1
  4. package/lib/FormGroup.js +9 -2
  5. package/lib/FormGroup.js.map +1 -1
  6. package/lib/FormLayout.js +9 -1
  7. package/lib/FormLayout.js.map +1 -1
  8. package/lib/Toggle.js +176 -0
  9. package/lib/Toggle.js.map +1 -0
  10. package/lib/components/Close/styles.module.scss +2 -2
  11. package/lib/components/FormGroup/styles.module.scss +15 -3
  12. package/lib/components/FormGroup/styles.module.scss.d.ts +2 -0
  13. package/lib/components/FormLayout/styles.module.scss +9 -1
  14. package/lib/components/FormLayout/styles.module.scss.d.ts +2 -0
  15. package/lib/components/HelpPanel/HelpPanel.d.ts +2 -2
  16. package/lib/components/HelpPanel/index.js +49 -9
  17. package/lib/components/HelpPanel/index.js.map +1 -1
  18. package/lib/components/HelpPanel/styles.module.scss +66 -2
  19. package/lib/components/HelpPanel/styles.module.scss.d.ts +8 -0
  20. package/lib/components/HelpTeaser/HelpTeaser.d.ts +5 -2
  21. package/lib/components/HelpTeaser/index.js +59 -14
  22. package/lib/components/HelpTeaser/index.js.map +1 -1
  23. package/lib/components/HelpTeaser/styles.module.scss +105 -2
  24. package/lib/components/HelpTeaser/styles.module.scss.d.ts +6 -0
  25. package/lib/components/HighlightPanel/index.js +79 -1
  26. package/lib/components/HighlightPanel/index.js.map +1 -0
  27. package/lib/components/InfoTeaser/index.js +71 -1
  28. package/lib/components/InfoTeaser/index.js.map +1 -0
  29. package/lib/components/RadioButton/styles.module.scss +6 -6
  30. package/lib/components/Toggle/index.js +1 -175
  31. package/lib/resourceHelper2.js +22 -0
  32. package/lib/resourceHelper2.js.map +1 -0
  33. package/lib/utils/formSpacing.d.ts +3 -0
  34. package/lib/utils/formSpacing.js +16 -0
  35. package/lib/utils/formSpacing.js.map +1 -0
  36. package/package.json +1 -1
  37. package/lib/HighlightPanel.js +0 -80
  38. package/lib/HighlightPanel.js.map +0 -1
  39. package/lib/InfoTeaser.js +0 -89
  40. package/lib/InfoTeaser.js.map +0 -1
  41. package/lib/components/Toggle/index.js.map +0 -1
@@ -1,176 +1,2 @@
1
- import { AnalyticsId } from "../../constants.js";
2
- import { usePseudoClasses } from "../../hooks/usePseudoClasses.js";
3
- import classNames from "classnames";
4
- import React, { useEffect, useId, useState } from "react";
5
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
- import { useAnimate } from "motion/react";
7
- import styles from "./styles.module.scss";
8
- //#region src/components/Toggle/constants.ts
9
- var TogglePosition = /* @__PURE__ */ function(TogglePosition) {
10
- TogglePosition["left"] = "left";
11
- TogglePosition["right"] = "right";
12
- return TogglePosition;
13
- }({});
14
- var ToggleOnColor = /* @__PURE__ */ function(ToggleOnColor) {
15
- ToggleOnColor["onwhite"] = "onwhite";
16
- ToggleOnColor["onneutral"] = "onneutral";
17
- ToggleOnColor["onblueberry"] = "onblueberry";
18
- return ToggleOnColor;
19
- }({});
20
- //#endregion
21
- //#region src/components/Toggle/Toggle.tsx
22
- var Toggle = ({ checked = false, disabled, label, onChange, onColor = ToggleOnColor.onwhite, statusText, subLabel, togglePosition = TogglePosition.left, testId }) => {
23
- const [checkedControlledState, setCheckedControlledState] = useState(checked);
24
- const [checkedState, setCheckedState] = useState(checked);
25
- const [showToggleAnimation, setShowToggleAnimation] = useState(false);
26
- const [scope, animate] = useAnimate();
27
- const baseId = useId();
28
- const toggleId = "toggle-" + baseId;
29
- const inputId = "input-" + baseId;
30
- const labelId = "label-" + baseId;
31
- const subLabelId = "sublabel-" + baseId;
32
- const toggleRef = React.useRef(null);
33
- const toggleDotRef = React.useRef(null);
34
- const { refObject, isHovered, isActive } = usePseudoClasses(scope);
35
- const showHoveredStyling = isHovered && !showToggleAnimation;
36
- const isOnWhite = onColor === ToggleOnColor.onwhite;
37
- const animationDuration = disabled ? 0 : .2;
38
- const dotBackgroundColor = disabled ? "var(--color-disabled-graphics)" : checkedState ? "var(--color-action-graphics-ondark)" : "var(--core-color-neutral-700)";
39
- if (checked !== checkedControlledState && typeof checked !== "undefined") {
40
- setCheckedControlledState(checked);
41
- if (typeof checked !== "undefined") setCheckedState(checked);
42
- }
43
- const getBackgroundColor = () => {
44
- if (disabled) return "transparent";
45
- else if (checkedState && isActive) return "var(--core-color-blueberry-800)";
46
- else if (checkedState) return showHoveredStyling ? "var(--color-action-graphics-onlight-hover)" : "var(--color-action-graphics-onlight)";
47
- else if (isOnWhite && isActive) return "var(--core-color-neutral-400)";
48
- else if (isOnWhite) return showHoveredStyling ? "var(--core-color-neutral-200)" : "var(--core-color-neutral-50)";
49
- else if (isActive) return "var(--core-color-neutral-200)";
50
- else return showHoveredStyling ? "var(--core-color-neutral-50)" : "var(--core-color-white)";
51
- };
52
- useEffect(() => {
53
- if (showToggleAnimation) {
54
- const timer = setTimeout(() => setShowToggleAnimation(false), 300);
55
- return () => clearTimeout(timer);
56
- }
57
- }, [showToggleAnimation]);
58
- useEffect(() => {
59
- if (!toggleRef.current || !toggleDotRef.current) return;
60
- animate(toggleRef.current, { background: getBackgroundColor() }, {
61
- duration: animationDuration,
62
- ease: "easeInOut"
63
- });
64
- animate(toggleDotRef.current, { background: dotBackgroundColor }, {
65
- duration: animationDuration,
66
- ease: "easeInOut"
67
- });
68
- animate(toggleDotRef.current, { x: checkedState ? 16 : 0 }, {
69
- duration: animationDuration,
70
- ease: "easeInOut"
71
- });
72
- animate("svg", { opacity: checkedState ? 1 : 0 }, {
73
- duration: animationDuration,
74
- ease: "easeInOut"
75
- });
76
- }, [
77
- checkedState,
78
- showHoveredStyling,
79
- isActive,
80
- disabled
81
- ]);
82
- const handleChange = (event) => {
83
- setCheckedState(event.target.checked);
84
- setShowToggleAnimation(true);
85
- onChange?.(event);
86
- };
87
- const toggleContainerClassNames = classNames(styles["toggle-container"], {
88
- [styles["toggle-container--position-right"]]: togglePosition === TogglePosition.right,
89
- [styles["toggle-container--with-status"]]: statusText !== void 0 && statusText !== null,
90
- [styles["toggle-container--disabled"]]: disabled
91
- });
92
- const subLabelClassNames = classNames(styles["toggle-container__sublabel"]);
93
- const statusTextClassNames = classNames(styles["toggle-container__status"], { [styles["toggle-container__status--checked"]]: checkedState });
94
- const toggleClassNames = classNames(styles["toggle-container__toggle"], {
95
- [styles["toggle-container__toggle--ignore-hover"]]: showToggleAnimation,
96
- [styles["toggle-container__toggle--on-white"]]: onColor === ToggleOnColor.onwhite
97
- });
98
- const toggleDotClassNames = classNames(styles["toggle-container__toggle__dot"], { [styles["toggle-container__toggle__dot--ignore-hover"]]: showToggleAnimation });
99
- const renderToggle = () => /* @__PURE__ */ jsxs("div", {
100
- className: styles["toggle-container__outer-toggle"],
101
- children: [/* @__PURE__ */ jsxs("label", {
102
- ref: refObject,
103
- className: styles["toggle-container__toggle-group"],
104
- children: [/* @__PURE__ */ jsx("input", {
105
- disabled,
106
- id: inputId,
107
- type: "checkbox",
108
- checked: checkedState,
109
- onChange: handleChange,
110
- className: styles["toggle-container__input"],
111
- "aria-label": label.map((l) => l.text).join(" "),
112
- "aria-describedby": [subLabel ? subLabelId : null, statusText ? toggleId + "-status" : null].filter(Boolean).join(" ") || void 0,
113
- role: "switch"
114
- }), /* @__PURE__ */ jsx("span", {
115
- id: toggleId,
116
- ref: toggleRef,
117
- className: toggleClassNames,
118
- "aria-hidden": "true",
119
- children: /* @__PURE__ */ jsx("span", {
120
- ref: toggleDotRef,
121
- className: toggleDotClassNames,
122
- "aria-hidden": "true",
123
- children: /* @__PURE__ */ jsx("svg", {
124
- width: "12",
125
- height: "12",
126
- viewBox: "0 0 12 12",
127
- fill: "none",
128
- xmlns: "http://www.w3.org/2000/svg",
129
- className: styles["toggle-container__toggle__dot__icon"],
130
- children: /* @__PURE__ */ jsx("path", {
131
- d: "M11 2.65247L4.69877 9.34741L1 5.41836",
132
- strokeWidth: "2.2"
133
- })
134
- })
135
- })
136
- })]
137
- }), statusText && /* @__PURE__ */ jsx("span", {
138
- className: statusTextClassNames,
139
- id: toggleId + "-status",
140
- children: checkedState ? statusText.checked : statusText.unchecked
141
- })]
142
- });
143
- const renderLabelText = () => {
144
- return /* @__PURE__ */ jsxs("div", {
145
- className: styles["toggle-container__outer-label"],
146
- children: [/* @__PURE__ */ jsx("span", {
147
- id: labelId,
148
- className: styles["toggle-container__label"],
149
- children: label.map((labelText) => {
150
- const labelClassNames = classNames({ [styles["toggle-container__label__text--subdued"]]: labelText.type === "subdued" });
151
- return /* @__PURE__ */ jsx("span", {
152
- className: labelClassNames,
153
- children: labelText.text
154
- }, labelId + labelText.text);
155
- })
156
- }), subLabel && /* @__PURE__ */ jsx("div", {
157
- id: subLabelId,
158
- className: subLabelClassNames,
159
- children: subLabel
160
- })]
161
- });
162
- };
163
- return /* @__PURE__ */ jsxs("div", {
164
- className: toggleContainerClassNames,
165
- "data-testid": testId,
166
- "data-analyticsid": AnalyticsId.Toggle,
167
- children: [togglePosition === TogglePosition.left && /* @__PURE__ */ jsxs(Fragment, { children: [renderToggle(), renderLabelText()] }), togglePosition === TogglePosition.right && /* @__PURE__ */ jsxs(Fragment, { children: [renderLabelText(), renderToggle()] })]
168
- });
169
- };
170
- //#endregion
171
- //#region src/components/Toggle/index.ts
172
- var Toggle_default = Toggle;
173
- //#endregion
1
+ import { n as ToggleOnColor, r as TogglePosition, t as Toggle_default } from "../../Toggle.js";
174
2
  export { ToggleOnColor, TogglePosition, Toggle_default as default };
175
-
176
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,22 @@
1
+ import { LanguageLocales } from "./constants.js";
2
+ var HN_Designsystem_InfoTeaser_en_GB_default = {
3
+ expandButtonOpen: "Show less",
4
+ expandButtonClose: "Show more"
5
+ };
6
+ var HN_Designsystem_InfoTeaser_nb_NO_default = {
7
+ expandButtonOpen: "Vis mindre",
8
+ expandButtonClose: "Vis mer"
9
+ };
10
+ //#endregion
11
+ //#region src/components/InfoTeaser/resourceHelper.ts
12
+ var getResources = (language) => {
13
+ switch (language) {
14
+ case LanguageLocales.ENGLISH: return HN_Designsystem_InfoTeaser_en_GB_default;
15
+ case LanguageLocales.NORWEGIAN:
16
+ default: return HN_Designsystem_InfoTeaser_nb_NO_default;
17
+ }
18
+ };
19
+ //#endregion
20
+ export { getResources as t };
21
+
22
+ //# sourceMappingURL=resourceHelper2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceHelper2.js","names":[],"sources":["../src/resources/HN.Designsystem.InfoTeaser.en-GB.json","../src/resources/HN.Designsystem.InfoTeaser.nb-NO.json","../src/components/InfoTeaser/resourceHelper.ts"],"sourcesContent":["{\n \"expandButtonOpen\": \"Show less\",\n \"expandButtonClose\": \"Show more\"\n}\n","{\n \"expandButtonOpen\": \"Vis mindre\",\n \"expandButtonClose\": \"Vis mer\"\n}\n","import type { HNDesignsystemInfoTeaser } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.InfoTeaser.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.InfoTeaser.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemInfoTeaser => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n"],"mappings":";;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAwD;CACnF,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO;CACX;AACF"}
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ export declare const isCompactComponent: (child: React.ReactNode) => boolean;
3
+ export declare const hasSublabel: (child: React.ReactNode) => boolean;
@@ -0,0 +1,16 @@
1
+ import { isComponent } from "./component.js";
2
+ import { t as Checkbox } from "../Checkbox.js";
3
+ import { t as RadioButton } from "../RadioButton.js";
4
+ import { t as Toggle_default } from "../Toggle.js";
5
+ import React from "react";
6
+ //#region src/utils/formSpacing.ts
7
+ var isCompactComponent = (child) => isComponent(child, Checkbox) || isComponent(child, RadioButton) || isComponent(child, Toggle_default);
8
+ var hasSublabel = (child) => {
9
+ if (isComponent(child, Checkbox) || isComponent(child, RadioButton)) return React.isValidElement(child.props.label) && !!child.props.label.props.sublabel;
10
+ if (isComponent(child, Toggle_default)) return !!child.props.subLabel;
11
+ return false;
12
+ };
13
+ //#endregion
14
+ export { hasSublabel, isCompactComponent };
15
+
16
+ //# sourceMappingURL=formSpacing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formSpacing.js","names":[],"sources":["../../src/utils/formSpacing.ts"],"sourcesContent":["import React from 'react';\n\nimport type { CheckboxProps } from '../components/Checkbox/Checkbox';\nimport type { LabelProps } from '../components/Label';\nimport type { RadioButtonProps } from '../components/RadioButton/RadioButton';\nimport type { ToggleProps } from '../components/Toggle';\n\nimport { isComponent } from './component';\nimport Checkbox from '../components/Checkbox/Checkbox';\nimport RadioButton from '../components/RadioButton/RadioButton';\nimport Toggle from '../components/Toggle';\n\nexport const isCompactComponent = (child: React.ReactNode): boolean =>\n isComponent<CheckboxProps>(child, Checkbox) ||\n isComponent<RadioButtonProps>(child, RadioButton) ||\n isComponent<ToggleProps>(child, Toggle);\n\nexport const hasSublabel = (child: React.ReactNode): boolean => {\n if (isComponent<CheckboxProps>(child, Checkbox) || isComponent<RadioButtonProps>(child, RadioButton)) {\n return React.isValidElement<LabelProps>(child.props.label) && !!child.props.label.props.sublabel;\n }\n if (isComponent<ToggleProps>(child, Toggle)) {\n return !!child.props.subLabel;\n }\n return false;\n};\n"],"mappings":";;;;;;AAYA,IAAa,sBAAsB,UACjC,YAA2B,OAAO,QAAQ,KAC1C,YAA8B,OAAO,WAAW,KAChD,YAAyB,OAAO,cAAM;AAExC,IAAa,eAAe,UAAoC;CAC9D,IAAI,YAA2B,OAAO,QAAQ,KAAK,YAA8B,OAAO,WAAW,GACjG,OAAO,MAAM,eAA2B,MAAM,MAAM,KAAK,KAAK,CAAC,CAAC,MAAM,MAAM,MAAM,MAAM;CAE1F,IAAI,YAAyB,OAAO,cAAM,GACxC,OAAO,CAAC,CAAC,MAAM,MAAM;CAEvB,OAAO;AACT"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@helsenorge/designsystem-react",
3
3
  "sideEffects": false,
4
4
  "private": false,
5
- "version": "15.5.1",
5
+ "version": "15.6.0",
6
6
  "description": "The official design system for Helsenorge built with React.",
7
7
  "repository": {
8
8
  "type": "git",
@@ -1,80 +0,0 @@
1
- import { AnalyticsId, IconSize } from "./constants.js";
2
- import { t as Icon_default } from "./Icon.js";
3
- import { t as LazyIcon_default } from "./LazyIcon.js";
4
- import { Breakpoint, useBreakpoint } from "./hooks/useBreakpoint.js";
5
- import Title_default from "./components/Title/index.js";
6
- import classNames from "classnames";
7
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
- import styles from "./components/HighlightPanel/styles.module.scss";
9
- //#region src/components/HighlightPanel/HighlightPanel.tsx
10
- var HighlightPanel = (props) => {
11
- const { children, color = "white", testId, svgIcon, htmlMarkup = "div", className, variant = "normal", title, titleHtmlMarkup = "h2" } = props;
12
- const breakpoint = useBreakpoint();
13
- const containerClassName = classNames(styles.highlightpanel, styles[`highlightpanel--${color}`], svgIcon && styles["highlightpanel--has-icon"], className, { [styles["highlightpanel--compact"]]: variant === "compact" });
14
- const renderContent = () => {
15
- const titleElement = title && /* @__PURE__ */ jsx(Title_default, {
16
- testId: "titleId",
17
- htmlMarkup: titleHtmlMarkup,
18
- appearance: variant === "compact" ? "title6" : "title4",
19
- children: title
20
- });
21
- if (svgIcon) {
22
- const iconSize = IconSize.Small;
23
- if (variant === "compact") return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
24
- className: classNames(styles.highlightpanel__icon, styles["highlightpanel__icon--compact"]),
25
- children: typeof svgIcon === "string" ? /* @__PURE__ */ jsx(LazyIcon_default, {
26
- iconName: svgIcon,
27
- size: iconSize
28
- }) : /* @__PURE__ */ jsx(Icon_default, {
29
- svgIcon,
30
- size: iconSize
31
- })
32
- }), /* @__PURE__ */ jsxs("div", {
33
- className: classNames(styles.highlightpanel__content, styles["highlightpanel__content--compact"]),
34
- children: [title && /* @__PURE__ */ jsx("div", {
35
- className: styles["highlightpanel__title-wrapper"],
36
- children: titleElement
37
- }), /* @__PURE__ */ jsx("div", {
38
- className: styles["highlightpanel__content__children--compact"],
39
- children
40
- })]
41
- })] });
42
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
43
- className: styles.highlightpanel__icon,
44
- children: [typeof svgIcon === "string" ? /* @__PURE__ */ jsx(LazyIcon_default, {
45
- iconName: svgIcon,
46
- size: iconSize
47
- }) : /* @__PURE__ */ jsx(Icon_default, {
48
- svgIcon,
49
- size: iconSize
50
- }), title && breakpoint < Breakpoint.md && /* @__PURE__ */ jsx("div", {
51
- className: styles["highlightpanel__title-wrapper"],
52
- children: titleElement
53
- })]
54
- }), /* @__PURE__ */ jsxs("div", {
55
- className: styles.highlightpanel__content,
56
- children: [title && breakpoint >= Breakpoint.md && /* @__PURE__ */ jsx("div", {
57
- className: styles["highlightpanel__title-wrapper"],
58
- children: titleElement
59
- }), children]
60
- })] });
61
- }
62
- return /* @__PURE__ */ jsxs(Fragment, { children: [title && /* @__PURE__ */ jsx("div", {
63
- className: styles.highlightpanel__content,
64
- children: /* @__PURE__ */ jsx("div", { children: titleElement })
65
- }), children] });
66
- };
67
- return /* @__PURE__ */ jsx(htmlMarkup, {
68
- className: containerClassName,
69
- "data-testid": testId,
70
- "data-analyticsid": AnalyticsId.HighlightPanel,
71
- children: renderContent()
72
- });
73
- };
74
- //#endregion
75
- //#region src/components/HighlightPanel/index.ts
76
- var HighlightPanel_default = HighlightPanel;
77
- //#endregion
78
- export { HighlightPanel_default as t };
79
-
80
- //# sourceMappingURL=HighlightPanel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HighlightPanel.js","names":[],"sources":["../src/components/HighlightPanel/HighlightPanel.tsx","../src/components/HighlightPanel/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { PaletteNames } from '../../theme/palette';\nimport type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\nimport type { TitleTags } from '../Title';\n\nimport { useBreakpoint, Breakpoint } from '../..';\nimport { AnalyticsId } from '../../constants';\nimport Icon, { IconSize } from '../Icon';\nimport LazyIcon from '../LazyIcon';\nimport Title from '../Title';\n\nimport styles from './styles.module.scss';\n\nexport type HighlightPanelColors = Extract<PaletteNames, 'white' | 'neutral' | 'blueberry' | 'cherry'>;\n\nexport type HighlightPanelTags = Exclude<\n keyof HTMLElementTagNameMap,\n 'dir' | 'font' | 'frame' | 'frameset' | 'marquee' | 'applet' | 'basefont' | 'search'\n>;\n\nexport type HighlightPanelVariants = 'normal' | 'compact';\n\nexport interface HighlightPanelProps {\n /** What's in the box? */\n children: React.ReactNode;\n /** Changes the background color. Default: white */\n color?: HighlightPanelColors;\n /** Adds an icon to the highlightpanel. */\n svgIcon?: SvgIcon | IconName;\n /** Changes the underlying element. Default: div */\n htmlMarkup?: HighlightPanelTags;\n /** Adds custom classes to the element. */\n className?: string;\n /** Uses the compact styling if set to compact */\n variant?: HighlightPanelVariants;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Element that is set after the icon-element in the DOM, often a title-element */\n title?: string;\n /** Markup props for title */\n titleHtmlMarkup?: TitleTags;\n}\n\nconst HighlightPanel: React.FC<HighlightPanelProps> = props => {\n const {\n children,\n color = 'white',\n testId,\n svgIcon,\n htmlMarkup = 'div',\n className,\n variant = 'normal',\n title,\n titleHtmlMarkup = 'h2',\n } = props;\n const breakpoint = useBreakpoint();\n\n const containerClassName = classNames(\n styles.highlightpanel,\n styles[`highlightpanel--${color}`],\n svgIcon && styles['highlightpanel--has-icon'],\n className,\n { [styles['highlightpanel--compact']]: variant === 'compact' }\n );\n\n const renderContent = (): React.ReactNode => {\n const titleElement = title && (\n <Title testId=\"titleId\" htmlMarkup={titleHtmlMarkup} appearance={variant === 'compact' ? 'title6' : 'title4'}>\n {title}\n </Title>\n );\n\n if (svgIcon) {\n const iconSize = IconSize.Small;\n\n if (variant === 'compact') {\n return (\n <>\n <div className={classNames(styles.highlightpanel__icon, styles['highlightpanel__icon--compact'])}>\n {typeof svgIcon === 'string' ? <LazyIcon iconName={svgIcon} size={iconSize} /> : <Icon svgIcon={svgIcon} size={iconSize} />}\n </div>\n <div className={classNames(styles.highlightpanel__content, styles['highlightpanel__content--compact'])}>\n {title && <div className={styles['highlightpanel__title-wrapper']}>{titleElement}</div>}\n <div className={styles['highlightpanel__content__children--compact']}>{children}</div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <div className={styles.highlightpanel__icon}>\n {typeof svgIcon === 'string' ? <LazyIcon iconName={svgIcon} size={iconSize} /> : <Icon svgIcon={svgIcon} size={iconSize} />}\n {title && breakpoint < Breakpoint.md && <div className={styles['highlightpanel__title-wrapper']}>{titleElement}</div>}\n </div>\n <div className={styles.highlightpanel__content}>\n {title && breakpoint >= Breakpoint.md && <div className={styles['highlightpanel__title-wrapper']}>{titleElement}</div>}\n {children}\n </div>\n </>\n );\n }\n\n return (\n <>\n {title && (\n <div className={styles.highlightpanel__content}>\n <div>{titleElement}</div>\n </div>\n )}\n {children}\n </>\n );\n };\n\n const CustomTag = htmlMarkup;\n\n return (\n <CustomTag className={containerClassName} data-testid={testId} data-analyticsid={AnalyticsId.HighlightPanel}>\n {renderContent()}\n </CustomTag>\n );\n};\n\nexport default HighlightPanel;\n","import HighlightPanel from './HighlightPanel';\nexport * from './HighlightPanel';\nexport default HighlightPanel;\n"],"mappings":";;;;;;;;;AA6CA,IAAM,kBAAgD,UAAS;CAC7D,MAAM,EACJ,UACA,QAAQ,SACR,QACA,SACA,aAAa,OACb,WACA,UAAU,UACV,OACA,kBAAkB,SAChB;CACJ,MAAM,aAAa,cAAc;CAEjC,MAAM,qBAAqB,WACzB,OAAO,gBACP,OAAO,mBAAmB,UAC1B,WAAW,OAAO,6BAClB,WACA,GAAG,OAAO,6BAA6B,YAAY,UAAU,CAC/D;CAEA,MAAM,sBAAuC;EAC3C,MAAM,eAAe,SACnB,oBAAC,eAAD;GAAO,QAAO;GAAU,YAAY;GAAiB,YAAY,YAAY,YAAY,WAAW;GACjG,UAAA;EACI,CAAA;EAGT,IAAI,SAAS;GACX,MAAM,WAAW,SAAS;GAE1B,IAAI,YAAY,WACd,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,OAAD;IAAK,WAAW,WAAW,OAAO,sBAAsB,OAAO,gCAAgC;IAC5F,UAAA,OAAO,YAAY,WAAW,oBAAC,kBAAD;KAAU,UAAU;KAAS,MAAM;IAAW,CAAA,IAAI,oBAAC,cAAD;KAAe;KAAS,MAAM;IAAW,CAAA;GACvH,CAAA,GACL,qBAAC,OAAD;IAAK,WAAW,WAAW,OAAO,yBAAyB,OAAO,mCAAmC;IAArG,UAAA,CACG,SAAS,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAmC,UAAA;IAAkB,CAAA,GACtF,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAgD;IAAc,CAAA,CAClF;GACL,CAAA,CAAA,EAAA,CAAA;GAIN,OACE,qBAAA,UAAA,EAAA,UAAA,CACE,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA,CACG,OAAO,YAAY,WAAW,oBAAC,kBAAD;KAAU,UAAU;KAAS,MAAM;IAAW,CAAA,IAAI,oBAAC,cAAD;KAAe;KAAS,MAAM;IAAW,CAAA,GACzH,SAAS,aAAa,WAAW,MAAM,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAmC,UAAA;IAAkB,CAAA,CACjH;GACL,CAAA,GAAA,qBAAC,OAAD;IAAK,WAAW,OAAO;IAAvB,UAAA,CACG,SAAS,cAAc,WAAW,MAAM,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAmC,UAAA;IAAkB,CAAA,GACpH,QACE;GACL,CAAA,CAAA,EAAA,CAAA;EAEN;EAEA,OACE,qBAAA,UAAA,EAAA,UAAA,CACG,SACC,oBAAC,OAAD;GAAK,WAAW,OAAO;GACrB,UAAA,oBAAC,OAAD,EAAA,UAAM,aAAkB,CAAA;EACrB,CAAA,GAEN,QACD,EAAA,CAAA;CAEN;CAIA,OACE,oBAAC,YAAD;EAAW,WAAW;EAAoB,eAAa;EAAQ,oBAAkB,YAAY;EAC1F,UAAA,cAAc;CACN,CAAA;AAEf;;;AC1HA,IAAA,yBAAe"}
package/lib/InfoTeaser.js DELETED
@@ -1,89 +0,0 @@
1
- import { AnalyticsId, IconSize, LanguageLocales } from "./constants.js";
2
- import { t as Icon_default } from "./Icon.js";
3
- import { useLanguage } from "./hooks/useLanguage.js";
4
- import { t as LazyIcon_default } from "./LazyIcon.js";
5
- import Title_default from "./components/Title/index.js";
6
- import { useExpand } from "./hooks/useExpand.js";
7
- import classNames from "classnames";
8
- import { useId } from "react";
9
- import { jsx, jsxs } from "react/jsx-runtime";
10
- import styles from "./components/InfoTeaser/styles.module.scss";
11
- var HN_Designsystem_InfoTeaser_en_GB_default = {
12
- expandButtonOpen: "Show less",
13
- expandButtonClose: "Show more"
14
- };
15
- var HN_Designsystem_InfoTeaser_nb_NO_default = {
16
- expandButtonOpen: "Vis mindre",
17
- expandButtonClose: "Vis mer"
18
- };
19
- //#endregion
20
- //#region src/components/InfoTeaser/resourceHelper.ts
21
- var getResources = (language) => {
22
- switch (language) {
23
- case LanguageLocales.ENGLISH: return HN_Designsystem_InfoTeaser_en_GB_default;
24
- case LanguageLocales.NORWEGIAN:
25
- default: return HN_Designsystem_InfoTeaser_nb_NO_default;
26
- }
27
- };
28
- //#endregion
29
- //#region src/components/InfoTeaser/InfoTeaser.tsx
30
- var InfoTeaser = (props) => {
31
- const { buttonClassName, children, className, expanded = false, htmlMarkup = "div", onExpand, resources, svgIcon, testId, title, titleHtmlMarkup = "h2", collapsedMaxHeight } = props;
32
- const [isExpanded, setIsExpanded] = useExpand(expanded, onExpand);
33
- const { language } = useLanguage(LanguageLocales.NORWEGIAN);
34
- const defaultResources = getResources(language);
35
- const infoteaserTextId = useId();
36
- const mergedResources = {
37
- ...defaultResources,
38
- ...resources
39
- };
40
- return /* @__PURE__ */ jsxs(htmlMarkup, {
41
- className: styles.wrapper,
42
- "data-testid": testId,
43
- "data-analyticsid": AnalyticsId.InfoTeaser,
44
- children: [/* @__PURE__ */ jsxs("div", {
45
- className: classNames(styles.infoteaser, className, { [styles["infoteaser--collapsed"]]: !isExpanded }),
46
- style: { maxHeight: !isExpanded ? collapsedMaxHeight ? collapsedMaxHeight : "12.25rem" : void 0 },
47
- children: [
48
- svgIcon && (typeof svgIcon === "string" ? /* @__PURE__ */ jsx(LazyIcon_default, {
49
- iconName: svgIcon,
50
- size: IconSize.Small,
51
- className: styles.infoteaser__icon
52
- }) : /* @__PURE__ */ jsx(Icon_default, {
53
- svgIcon,
54
- size: IconSize.Small,
55
- className: styles.infoteaser__icon
56
- })),
57
- title && typeof title !== "undefined" && /* @__PURE__ */ jsx(Title_default, {
58
- testId: "titleId",
59
- htmlMarkup: titleHtmlMarkup,
60
- appearance: "title4",
61
- className: styles.infoteaser__title,
62
- children: title
63
- }),
64
- /* @__PURE__ */ jsx("div", {
65
- className: styles.infoteaser__text,
66
- "aria-hidden": isExpanded ? false : true,
67
- id: infoteaserTextId,
68
- children
69
- })
70
- ]
71
- }), /* @__PURE__ */ jsx("button", {
72
- type: "button",
73
- className: classNames(styles.infoteaser__button, buttonClassName),
74
- onClick: () => {
75
- setIsExpanded(!isExpanded);
76
- },
77
- "aria-expanded": isExpanded,
78
- "aria-controls": infoteaserTextId,
79
- children: isExpanded ? mergedResources.expandButtonOpen : mergedResources.expandButtonClose
80
- })]
81
- });
82
- };
83
- //#endregion
84
- //#region src/components/InfoTeaser/index.ts
85
- var InfoTeaser_default = InfoTeaser;
86
- //#endregion
87
- export { InfoTeaser_default as t };
88
-
89
- //# sourceMappingURL=InfoTeaser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InfoTeaser.js","names":[],"sources":["../src/resources/HN.Designsystem.InfoTeaser.en-GB.json","../src/resources/HN.Designsystem.InfoTeaser.nb-NO.json","../src/components/InfoTeaser/resourceHelper.ts","../src/components/InfoTeaser/InfoTeaser.tsx","../src/components/InfoTeaser/index.ts"],"sourcesContent":["{\n \"expandButtonOpen\": \"Show less\",\n \"expandButtonClose\": \"Show more\"\n}\n","{\n \"expandButtonOpen\": \"Vis mindre\",\n \"expandButtonClose\": \"Vis mer\"\n}\n","import type { HNDesignsystemInfoTeaser } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.InfoTeaser.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.InfoTeaser.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemInfoTeaser => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import { useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { HNDesignsystemInfoTeaser } from '../../resources/Resources';\nimport type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\nimport type { TitleTags } from '../Title';\n\nimport { AnalyticsId, LanguageLocales } from '../../constants';\nimport { useExpand } from '../../hooks/useExpand';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport Icon, { IconSize } from '../Icon';\nimport LazyIcon from '../LazyIcon';\nimport Title from '../Title';\nimport { getResources } from './resourceHelper';\n\nimport styles from './styles.module.scss';\n\nexport type InfoTeaserTags = 'div' | 'section' | 'aside' | 'article';\n\nexport interface InfoTeaserProps {\n /** For overriding styling on the button */\n buttonClassName?: string;\n /** What's in the box? */\n children: React.ReactNode;\n /** Override the default max height for collapsed teaser. Default is 12.25rem */\n collapsedMaxHeight?: string;\n /** For overriding styling on infoteaser box */\n className?: string;\n /** Opens or closes the teaser */\n expanded?: boolean;\n /** Changes the underlying element of the wrapper */\n htmlMarkup?: InfoTeaserTags;\n /** Called when the teaser is expanded/collapsed. */\n onExpand?: (isExpanded: boolean) => void;\n /** Resources for component */\n resources?: Partial<HNDesignsystemInfoTeaser>;\n /** Adds an icon */\n svgIcon?: SvgIcon | IconName;\n /** Sets the data-testid attribute */\n testId?: string;\n /** Title on top of the component */\n title?: string;\n /** Markup props for title */\n titleHtmlMarkup?: TitleTags;\n}\n\nconst InfoTeaser: React.FC<InfoTeaserProps> = props => {\n const {\n buttonClassName,\n children,\n className,\n expanded = false,\n htmlMarkup = 'div',\n onExpand,\n resources,\n svgIcon,\n testId,\n title,\n titleHtmlMarkup = 'h2',\n collapsedMaxHeight,\n } = props;\n const [isExpanded, setIsExpanded] = useExpand(expanded, onExpand);\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const infoteaserTextId = useId();\n\n const mergedResources: HNDesignsystemInfoTeaser = {\n ...defaultResources,\n ...resources,\n };\n\n const WrapperTag = htmlMarkup;\n\n return (\n <WrapperTag className={styles.wrapper} data-testid={testId} data-analyticsid={AnalyticsId.InfoTeaser}>\n <div\n className={classNames(styles.infoteaser, className, {\n [styles['infoteaser--collapsed']]: !isExpanded,\n })}\n style={{ maxHeight: !isExpanded ? (collapsedMaxHeight ? collapsedMaxHeight : '12.25rem') : undefined }}\n >\n {svgIcon &&\n (typeof svgIcon === 'string' ? (\n <LazyIcon iconName={svgIcon} size={IconSize.Small} className={styles.infoteaser__icon} />\n ) : (\n <Icon svgIcon={svgIcon} size={IconSize.Small} className={styles.infoteaser__icon} />\n ))}\n {title && typeof title !== 'undefined' && (\n <Title testId=\"titleId\" htmlMarkup={titleHtmlMarkup} appearance=\"title4\" className={styles.infoteaser__title}>\n {title}\n </Title>\n )}\n <div className={styles.infoteaser__text} aria-hidden={isExpanded ? false : true} id={infoteaserTextId}>\n {children}\n </div>\n </div>\n <button\n type=\"button\"\n className={classNames(styles.infoteaser__button, buttonClassName)}\n onClick={() => {\n setIsExpanded(!isExpanded);\n }}\n aria-expanded={isExpanded}\n aria-controls={infoteaserTextId}\n >\n {isExpanded ? mergedResources.expandButtonOpen : mergedResources.expandButtonClose}\n </button>\n </WrapperTag>\n );\n};\n\nexport default InfoTeaser;\n","import InfoTeaser from './InfoTeaser';\nexport * from './InfoTeaser';\nexport default InfoTeaser;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AEMA,IAAa,gBAAgB,aAAwD;CACnF,QAAQ,UAAR;EACE,KAAK,gBAAgB,SACnB,OAAO;EACT,KAAK,gBAAgB;EACrB,SACE,OAAO;CACX;AACF;;;ACkCA,IAAM,cAAwC,UAAS;CACrD,MAAM,EACJ,iBACA,UACA,WACA,WAAW,OACX,aAAa,OACb,UACA,WACA,SACA,QACA,OACA,kBAAkB,MAClB,uBACE;CACJ,MAAM,CAAC,YAAY,iBAAiB,UAAU,UAAU,QAAQ;CAChE,MAAM,EAAE,aAAa,YAA6B,gBAAgB,SAAS;CAC3E,MAAM,mBAAmB,aAAa,QAAQ;CAC9C,MAAM,mBAAmB,MAAM;CAE/B,MAAM,kBAA4C;EAChD,GAAG;EACH,GAAG;CACL;CAIA,OACE,qBAAC,YAAD;EAAY,WAAW,OAAO;EAAS,eAAa;EAAQ,oBAAkB,YAAY;EAA1F,UAAA,CACE,qBAAC,OAAD;GACE,WAAW,WAAW,OAAO,YAAY,WAAW,GACjD,OAAO,2BAA2B,CAAC,WACtC,CAAC;GACD,OAAO,EAAE,WAAW,CAAC,aAAc,qBAAqB,qBAAqB,aAAc,KAAA,EAAU;GAJvG,UAAA;IAMG,YACE,OAAO,YAAY,WAClB,oBAAC,kBAAD;KAAU,UAAU;KAAS,MAAM,SAAS;KAAO,WAAW,OAAO;IAAmB,CAAA,IAExF,oBAAC,cAAD;KAAe;KAAS,MAAM,SAAS;KAAO,WAAW,OAAO;IAAmB,CAAA;IAEtF,SAAS,OAAO,UAAU,eACzB,oBAAC,eAAD;KAAO,QAAO;KAAU,YAAY;KAAiB,YAAW;KAAS,WAAW,OAAO;KACxF,UAAA;IACI,CAAA;IAET,oBAAC,OAAD;KAAK,WAAW,OAAO;KAAkB,eAAa,aAAa,QAAQ;KAAM,IAAI;KAClF;IACE,CAAA;GACF;EACL,CAAA,GAAA,oBAAC,UAAD;GACE,MAAK;GACL,WAAW,WAAW,OAAO,oBAAoB,eAAe;GAChE,eAAe;IACb,cAAc,CAAC,UAAU;GAC3B;GACA,iBAAe;GACf,iBAAe;GAEd,UAAA,aAAa,gBAAgB,mBAAmB,gBAAgB;EAC3D,CAAA,CACE;;AAEhB;;;AC7GA,IAAA,qBAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Toggle/constants.ts","../../../src/components/Toggle/Toggle.tsx","../../../src/components/Toggle/index.ts"],"sourcesContent":["export enum TogglePosition {\n left = 'left',\n right = 'right',\n}\n\nexport enum ToggleOnColor {\n onwhite = 'onwhite',\n onneutral = 'onneutral',\n onblueberry = 'onblueberry',\n}\n","import React, { useState, useEffect, useId } from 'react';\n\nimport classNames from 'classnames';\nimport { useAnimate } from 'motion/react';\n\nimport { ToggleOnColor, TogglePosition } from './constants';\nimport { AnalyticsId } from '../../constants';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\n\nimport styles from './styles.module.scss';\n\nimport '../../scss/supernova/styles/colors.css';\n\nexport type LabelText = {\n text: string;\n type?: 'subdued' | 'normal';\n};\n\nexport type StatusTextType = {\n checked: string;\n unchecked: string;\n};\n\nexport interface ToggleProps extends Pick<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'disabled'> {\n /** Determines if the Toggle is checked */\n checked?: boolean;\n /** Sets the label of the Toggle */\n label: LabelText[];\n /** Defines the color of the toggle */\n onColor?: keyof typeof ToggleOnColor;\n /** A text that is shown under the Toggle switch */\n statusText?: StatusTextType;\n /** Sets the sublabel of the Toggle */\n subLabel?: string;\n /** Sets the position of the toggle relative to the label */\n togglePosition?: keyof typeof TogglePosition;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst Toggle: React.FC<ToggleProps> = ({\n checked = false,\n disabled,\n label,\n onChange,\n onColor = ToggleOnColor.onwhite,\n statusText,\n subLabel,\n togglePosition = TogglePosition.left,\n testId,\n}: ToggleProps) => {\n const [checkedControlledState, setCheckedControlledState] = useState(checked);\n const [checkedState, setCheckedState] = useState(checked);\n const [showToggleAnimation, setShowToggleAnimation] = useState(false);\n const [scope, animate] = useAnimate();\n const baseId = useId();\n const toggleId = 'toggle-' + baseId;\n const inputId = 'input-' + baseId;\n const labelId = 'label-' + baseId;\n const subLabelId = 'sublabel-' + baseId;\n const toggleRef = React.useRef<HTMLSpanElement>(null);\n const toggleDotRef = React.useRef<HTMLSpanElement>(null);\n const { refObject, isHovered, isActive } = usePseudoClasses<HTMLLabelElement>(scope);\n const showHoveredStyling = isHovered && !showToggleAnimation;\n const isOnWhite = onColor === ToggleOnColor.onwhite;\n const animationDuration = disabled ? 0 : 0.2;\n const dotBackgroundColor = disabled\n ? 'var(--color-disabled-graphics)'\n : checkedState\n ? 'var(--color-action-graphics-ondark)'\n : 'var(--core-color-neutral-700)';\n\n if (checked !== checkedControlledState && typeof checked !== 'undefined') {\n setCheckedControlledState(checked);\n\n if (typeof checked !== 'undefined') {\n setCheckedState(checked);\n }\n }\n\n const getBackgroundColor = (): string => {\n if (disabled) {\n return 'transparent';\n } else if (checkedState && isActive) {\n return 'var(--core-color-blueberry-800)';\n } else if (checkedState) {\n return showHoveredStyling ? 'var(--color-action-graphics-onlight-hover)' : 'var(--color-action-graphics-onlight)';\n } else if (isOnWhite && isActive) {\n return 'var(--core-color-neutral-400)';\n } else if (isOnWhite) {\n return showHoveredStyling ? 'var(--core-color-neutral-200)' : 'var(--core-color-neutral-50)';\n } else if (isActive) {\n return 'var(--core-color-neutral-200)';\n } else {\n return showHoveredStyling ? 'var(--core-color-neutral-50)' : 'var(--core-color-white)';\n }\n };\n\n useEffect(() => {\n if (showToggleAnimation) {\n const timer = setTimeout(() => setShowToggleAnimation(false), 300);\n return (): void => clearTimeout(timer);\n }\n }, [showToggleAnimation]);\n\n useEffect(() => {\n if (!toggleRef.current || !toggleDotRef.current) return;\n animate(toggleRef.current, { background: getBackgroundColor() }, { duration: animationDuration, ease: 'easeInOut' });\n animate(\n toggleDotRef.current,\n {\n background: dotBackgroundColor,\n },\n { duration: animationDuration, ease: 'easeInOut' }\n );\n animate(toggleDotRef.current, { x: checkedState ? 16 : 0 }, { duration: animationDuration, ease: 'easeInOut' });\n animate('svg', { opacity: checkedState ? 1 : 0 }, { duration: animationDuration, ease: 'easeInOut' });\n }, [checkedState, showHoveredStyling, isActive, disabled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setCheckedState(event.target.checked);\n setShowToggleAnimation(true);\n onChange?.(event);\n };\n\n const toggleContainerClassNames = classNames(styles['toggle-container'], {\n [styles['toggle-container--position-right']]: togglePosition === TogglePosition.right,\n [styles['toggle-container--with-status']]: statusText !== undefined && statusText !== null,\n [styles['toggle-container--disabled']]: disabled,\n });\n\n const subLabelClassNames = classNames(styles['toggle-container__sublabel']);\n\n const statusTextClassNames = classNames(styles['toggle-container__status'], {\n [styles['toggle-container__status--checked']]: checkedState,\n });\n\n const toggleClassNames = classNames(styles['toggle-container__toggle'], {\n [styles['toggle-container__toggle--ignore-hover']]: showToggleAnimation,\n [styles['toggle-container__toggle--on-white']]: onColor === ToggleOnColor.onwhite,\n });\n\n const toggleDotClassNames = classNames(styles['toggle-container__toggle__dot'], {\n [styles['toggle-container__toggle__dot--ignore-hover']]: showToggleAnimation,\n });\n\n const renderToggle = (): React.ReactElement => (\n <div className={styles['toggle-container__outer-toggle']}>\n <label ref={refObject} className={styles['toggle-container__toggle-group']}>\n <input\n disabled={disabled}\n id={inputId}\n type=\"checkbox\"\n checked={checkedState}\n onChange={handleChange}\n className={styles['toggle-container__input']}\n aria-label={label.map(l => l.text).join(' ')}\n aria-describedby={[subLabel ? subLabelId : null, statusText ? toggleId + '-status' : null].filter(Boolean).join(' ') || undefined}\n role=\"switch\"\n />\n <span id={toggleId} ref={toggleRef} className={toggleClassNames} aria-hidden=\"true\">\n <span ref={toggleDotRef} className={toggleDotClassNames} aria-hidden=\"true\">\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles['toggle-container__toggle__dot__icon']}\n >\n <path d=\"M11 2.65247L4.69877 9.34741L1 5.41836\" strokeWidth=\"2.2\" />\n </svg>\n </span>\n </span>\n </label>\n {statusText && (\n <span className={statusTextClassNames} id={toggleId + '-status'}>\n {checkedState ? statusText.checked : statusText.unchecked}\n </span>\n )}\n </div>\n );\n\n const renderLabelText = (): React.ReactElement => {\n return (\n <div className={styles['toggle-container__outer-label']}>\n <span id={labelId} className={styles['toggle-container__label']}>\n {label.map(labelText => {\n const labelClassNames = classNames({\n [styles['toggle-container__label__text--subdued']]: labelText.type === 'subdued',\n });\n\n return (\n <span key={labelId + labelText.text} className={labelClassNames}>\n {labelText.text}\n </span>\n );\n })}\n </span>\n {subLabel && (\n <div id={subLabelId} className={subLabelClassNames}>\n {subLabel}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div className={toggleContainerClassNames} data-testid={testId} data-analyticsid={AnalyticsId.Toggle}>\n {togglePosition === TogglePosition.left && (\n <>\n {renderToggle()}\n {renderLabelText()}\n </>\n )}\n {togglePosition === TogglePosition.right && (\n <>\n {renderLabelText()}\n {renderToggle()}\n </>\n )}\n </div>\n );\n};\n\nexport default Toggle;\n","import Toggle from './Toggle';\nexport { TogglePosition, ToggleOnColor } from './constants';\nexport * from './Toggle';\nexport default Toggle;\n"],"mappings":"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"}