@helsenorge/designsystem-react 11.3.0 → 12.0.0-beta.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.
- package/CHANGELOG.md +15 -1
- package/DictionaryTrigger.js +28 -0
- package/DictionaryTrigger.js.map +1 -0
- package/HelpDetails.js +65 -0
- package/HelpDetails.js.map +1 -0
- package/HelpTriggerIcon.js +113 -0
- package/HelpTriggerIcon.js.map +1 -0
- package/HelpTriggerStandalone.js +37 -0
- package/HelpTriggerStandalone.js.map +1 -0
- package/HighlightPanel.js +5 -59
- package/HighlightPanel.js.map +1 -1
- package/PopOver.js +48 -175
- package/PopOver.js.map +1 -1
- package/components/DictionaryTrigger/index.js +1 -24
- package/components/DictionaryTrigger/index.js.map +1 -1
- package/components/HelpBubble/HelpBubble.d.ts +3 -6
- package/components/HelpBubble/index.js +55 -3
- package/components/HelpBubble/index.js.map +1 -1
- package/components/HelpBubble/styles.module.scss +5 -7
- package/components/HelpBubble/styles.module.scss.d.ts +0 -1
- package/components/HelpDetails/HelpDetails.d.ts +11 -0
- package/components/HelpDetails/styles.module.scss +49 -0
- package/components/HelpDetails/styles.module.scss.d.ts +13 -0
- package/components/HelpExpanderInline/HelpExpanderInline.d.ts +17 -0
- package/components/HelpExpanderInline/index.d.ts +3 -0
- package/components/HelpExpanderInline/index.js +16 -0
- package/components/HelpExpanderInline/index.js.map +1 -0
- package/components/HelpExpanderStandalone/HelpExpanderStandalone.d.ts +28 -0
- package/components/HelpExpanderStandalone/HelpExpanderStandalone.test.d.ts +1 -0
- package/components/HelpExpanderStandalone/index.d.ts +3 -0
- package/components/HelpExpanderStandalone/index.js +50 -0
- package/components/HelpExpanderStandalone/index.js.map +1 -0
- package/components/HelpExpanderStandalone/styles.module.scss +5 -0
- package/components/{HelpTooltip/HelpTooltipWord → HelpExpanderStandalone}/styles.module.scss.d.ts +1 -1
- package/components/HelpPanel/HelpPanel.d.ts +0 -3
- package/components/HelpPanel/index.js +2 -13
- package/components/HelpPanel/index.js.map +1 -1
- package/components/HelpPanel/styles.module.scss +3 -2
- package/components/HelpTooltip/HelpTooltip.d.ts +2 -8
- package/components/HelpTooltip/index.js +21 -78
- package/components/HelpTooltip/index.js.map +1 -1
- package/components/HelpTriggerIcon/HelpSign.d.ts +8 -0
- package/components/HelpTriggerIcon/HelpTriggerIcon.d.ts +34 -0
- package/components/HelpTriggerIcon/HelpTriggerIcon.test.d.ts +1 -0
- package/components/HelpTriggerIcon/index.d.ts +3 -0
- package/components/HelpTriggerIcon/index.js +7 -0
- package/components/{HelpTrigger → HelpTriggerIcon}/index.js.map +1 -1
- package/components/HelpTriggerIcon/styles.module.scss +157 -0
- package/components/HelpTriggerIcon/styles.module.scss.d.ts +15 -0
- package/components/HelpTriggerInline/HelpTriggerInline.d.ts +28 -0
- package/components/HelpTriggerInline/HelpTriggerInline.test.d.ts +1 -0
- package/components/HelpTriggerInline/index.d.ts +3 -0
- package/components/HelpTriggerInline/index.js +35 -0
- package/components/HelpTriggerInline/index.js.map +1 -0
- package/components/HelpTriggerInline/styles.module.scss +41 -0
- package/components/{HelpQuestion → HelpTriggerInline}/styles.module.scss.d.ts +2 -2
- package/components/HelpTriggerStandalone/HelpTriggerStandalone.d.ts +28 -0
- package/components/HelpTriggerStandalone/HelpTriggerStandalone.test.d.ts +1 -0
- package/components/HelpTriggerStandalone/index.d.ts +3 -0
- package/components/HelpTriggerStandalone/index.js +5 -0
- package/components/HelpTriggerStandalone/styles.module.scss +70 -0
- package/components/HelpTriggerStandalone/styles.module.scss.d.ts +11 -0
- package/components/HighlightPanel/HighlightPanel.d.ts +0 -9
- package/components/HighlightPanel/index.js +0 -2
- package/components/HighlightPanel/index.js.map +1 -1
- package/components/HighlightPanel/styles.module.scss +23 -165
- package/components/HighlightPanel/styles.module.scss.d.ts +1 -8
- package/components/PopMenu/index.js +3 -4
- package/components/PopMenu/index.js.map +1 -1
- package/components/PopMenu/styles.module.scss +10 -10
- package/components/PopMenu/styles.module.scss.d.ts +0 -1
- package/components/PopOver/PopOver.d.ts +7 -6
- package/components/PopOver/index.js +3 -3
- package/components/PopOver/styles.module.scss +13 -50
- package/components/PopOver/styles.module.scss.d.ts +0 -5
- package/constants.d.ts +5 -2
- package/constants.js +5 -2
- package/constants.js.map +1 -1
- package/floating-ui.react.js +4232 -0
- package/floating-ui.react.js.map +1 -0
- package/hooks/useHover.d.ts +1 -1
- package/hooks/useHover.js +2 -2
- package/hooks/useHover.js.map +1 -1
- package/package.json +2 -1
- package/scss/_font-mixins.scss +22 -0
- package/scss/typography.module.scss +8 -0
- package/scss/typography.module.scss.d.ts +2 -0
- package/scss/typography.stories.tsx +8 -0
- package/HelpBubble.js +0 -78
- package/HelpBubble.js.map +0 -1
- package/HelpTooltipWord.js +0 -28
- package/HelpTooltipWord.js.map +0 -1
- package/HelpTrigger.js +0 -80
- package/HelpTrigger.js.map +0 -1
- package/components/HelpQuestion/HelpQuestion.d.ts +0 -21
- package/components/HelpQuestion/index.d.ts +0 -3
- package/components/HelpQuestion/index.js +0 -35
- package/components/HelpQuestion/index.js.map +0 -1
- package/components/HelpQuestion/styles.module.scss +0 -49
- package/components/HelpTooltip/HelpTooltipWord/HelpTooltipWord.d.ts +0 -19
- package/components/HelpTooltip/HelpTooltipWord/index.d.ts +0 -3
- package/components/HelpTooltip/HelpTooltipWord/index.js +0 -5
- package/components/HelpTooltip/HelpTooltipWord/styles.module.scss +0 -18
- package/components/HelpTrigger/HelpSign.d.ts +0 -4
- package/components/HelpTrigger/HelpTrigger.d.ts +0 -44
- package/components/HelpTrigger/index.d.ts +0 -3
- package/components/HelpTrigger/index.js +0 -5
- package/components/HelpTrigger/styles.module.scss +0 -101
- package/components/HelpTrigger/styles.module.scss.d.ts +0 -15
- package/hooks/useDelayedState.d.ts +0 -8
- package/hooks/useDelayedState.js +0 -23
- package/hooks/useDelayedState.js.map +0 -1
- /package/components/{HelpQuestion/HelpQuestion.test.d.ts → HelpDetails/HelpDetails.test.d.ts} +0 -0
- /package/components/{HelpTrigger/HelpTrigger.test.d.ts → HelpExpanderInline/HelpExpanderInline.test.d.ts} +0 -0
- /package/components/{HelpTooltip/HelpTooltipWord → HelpTriggerStandalone}/index.js.map +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
##
|
|
1
|
+
## 12.0.0-beta.0 (2025-06-10)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
### Features
|
|
5
5
|
|
|
6
|
+
* helptrigger blir erstattet av helptriggericon helptriggerinline og helptriggerstandalone ([3b0556b](https://github.com/helsenorge/designsystem/commit/3b0556bd5ef225718a28175e42a5e4070c4158e1)), closes [#350475](https://github.com/helsenorge/designsystem/issues/350475)
|
|
7
|
+
* nye komponenter helpexpanderinline og helpexpanderstandalone ([b38f230](https://github.com/helsenorge/designsystem/commit/b38f2308f4b72756784874e4b49295d9e168e040)), closes [#350484](https://github.com/helsenorge/designsystem/issues/350484)
|
|
6
8
|
* prosesshjelp fargetokens lagt til ([c70fb44](https://github.com/helsenorge/designsystem/commit/c70fb44c9b95338f1e19563931d707a5921e311b)), closes [#353506](https://github.com/helsenorge/designsystem/issues/353506)
|
|
7
9
|
* spacers tokens ([575cd80](https://github.com/helsenorge/designsystem/commit/575cd8081ffdb9c96b7df28e85fa4ff3bd4025db)), closes [#351112](https://github.com/helsenorge/designsystem/issues/351112)
|
|
8
10
|
* **drawer:** flytt lukkekryss til hjørnet ([2b8ff77](https://github.com/helsenorge/designsystem/commit/2b8ff771c5de8bbe7a6f1b257f2df35d8e01bced))
|
|
9
11
|
* **drawer:** gjør onclose optional ([6eb0bf3](https://github.com/helsenorge/designsystem/commit/6eb0bf3a97b465ba11abba7e4b6b9023130bf788))
|
|
10
12
|
* **drawer:** legg på shadow ved scroll istedenfor border ([2f3162a](https://github.com/helsenorge/designsystem/commit/2f3162a2903e6e7ce12d95d99b55909282fbcb76))
|
|
11
13
|
* **drawer:** stopp scrolling bak drawer ([4e5ebe1](https://github.com/helsenorge/designsystem/commit/4e5ebe16b8340c28ea2066d7a63f2065bef19de9))
|
|
14
|
+
* **helpbubble:** flytt lukkekryss helt til hjørnet ([2b3c54d](https://github.com/helsenorge/designsystem/commit/2b3c54d6aac8bc074eeb6f62ddb0b5bc6c3f421f)), closes [#352915](https://github.com/helsenorge/designsystem/issues/352915)
|
|
15
|
+
* **helppanel:** ny border og spacing til tittel ([b47870f](https://github.com/helsenorge/designsystem/commit/b47870ff5cb571d09adcc921bbfc7270e640dba0))
|
|
16
|
+
* **helptooltip:** fjern provider og rydd opp i tooltip role ([37215ca](https://github.com/helsenorge/designsystem/commit/37215cac7626448915020f7d72f5d848dd8bd515)), closes [#350651](https://github.com/helsenorge/designsystem/issues/350651)
|
|
17
|
+
* **helptrigger:** ny prop weight med extra large størrelse samt nytt uttrykk ([24eaf8d](https://github.com/helsenorge/designsystem/commit/24eaf8d883c9da70ce189b044ad96394df82ab77)), closes [#350475](https://github.com/helsenorge/designsystem/issues/350475)
|
|
18
|
+
* **hightlightpanel:** size prop er fjernet og spacing oppdatert ([ac14ef0](https://github.com/helsenorge/designsystem/commit/ac14ef0927bb05ea5c62d189edbce46393403a93)), closes [#350938](https://github.com/helsenorge/designsystem/issues/350938)
|
|
19
|
+
* **popover:** nye visuelle endringer og ta i bruk floating-ui ([3c186d1](https://github.com/helsenorge/designsystem/commit/3c186d1aaccd10d4f9d881bd9ad12266dc4a5c2e)), closes [#350488](https://github.com/helsenorge/designsystem/issues/350488) [#350650](https://github.com/helsenorge/designsystem/issues/350650)
|
|
20
|
+
* **popover:** satt avstand til kant og maks bredde ([c96d447](https://github.com/helsenorge/designsystem/commit/c96d447623fc9574385ea2f9982da920f53b4518)), closes [#353533](https://github.com/helsenorge/designsystem/issues/353533)
|
|
21
|
+
* **typography:** nye stiler for help-text pg helt-trigger-text ([9ee09ba](https://github.com/helsenorge/designsystem/commit/9ee09ba5d7815b81c9fd2910f00d667c1d01bfee)), closes [#350872](https://github.com/helsenorge/designsystem/issues/350872)
|
|
12
22
|
|
|
13
23
|
|
|
14
24
|
### Bug Fixes
|
|
@@ -16,6 +26,10 @@
|
|
|
16
26
|
* drawer og modal får lik overlay ([99efb7b](https://github.com/helsenorge/designsystem/commit/99efb7b9ac463e09678f081417be006cd9954d87)), closes [#352610](https://github.com/helsenorge/designsystem/issues/352610)
|
|
17
27
|
* **close:** riktig size på inner container for small versjon ([d23f53a](https://github.com/helsenorge/designsystem/commit/d23f53a959e0c2cd17bde70431775a90d0c5382b)), closes [#352915](https://github.com/helsenorge/designsystem/issues/352915)
|
|
18
28
|
* **drawer:** legg til scroll shadow også på tiny screen query ([1cdf6df](https://github.com/helsenorge/designsystem/commit/1cdf6dfc78b3e71bbebe2d2ad6104e6e36ea5e0a)), closes [#352610](https://github.com/helsenorge/designsystem/issues/352610)
|
|
29
|
+
* **helptriggericon:** strong focus styling riktig størrelse ([ada7679](https://github.com/helsenorge/designsystem/commit/ada7679c59fe0754d74211f9087d73f504313faf)), closes [#350475](https://github.com/helsenorge/designsystem/issues/350475)
|
|
30
|
+
* **helptriggericon:** svg får riktig rolle og aria ([e1cac75](https://github.com/helsenorge/designsystem/commit/e1cac758b62fddd560bd21fda2bf4905676292fd)), closes [#350475](https://github.com/helsenorge/designsystem/issues/350475)
|
|
31
|
+
* **popover:** fiks padding for popover og popmenu ([c4d916c](https://github.com/helsenorge/designsystem/commit/c4d916cc48d2cc95bc7461a43dbe1fbc67c81576)), closes [#350488](https://github.com/helsenorge/designsystem/issues/350488)
|
|
32
|
+
* **popover:** sett border radius lik som skisser ([d665e38](https://github.com/helsenorge/designsystem/commit/d665e385b5187be9674b35a15fae4dfc3c9055a6)), closes [#350488](https://github.com/helsenorge/designsystem/issues/350488)
|
|
19
33
|
|
|
20
34
|
## [11.2.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv11.1.0&targetVersion=GTv11.2.0) (2025-05-27)
|
|
21
35
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import React__default from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { AnalyticsId } from "./constants.js";
|
|
5
|
+
import styles from "./components/DictionaryTrigger/styles.module.scss";
|
|
6
|
+
const DictionaryTrigger = React__default.forwardRef(
|
|
7
|
+
({ children, selected = false, className, testId, ...rest }, ref) => {
|
|
8
|
+
const triggerClasses = classNames(styles.dictionarytrigger, className);
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
"button",
|
|
11
|
+
{
|
|
12
|
+
type: "button",
|
|
13
|
+
"data-testid": testId,
|
|
14
|
+
"data-analyticsid": AnalyticsId.DictionaryTrigger,
|
|
15
|
+
className: triggerClasses,
|
|
16
|
+
"aria-expanded": selected,
|
|
17
|
+
ref,
|
|
18
|
+
...rest,
|
|
19
|
+
children
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
DictionaryTrigger.displayName = "DictionaryTrigger";
|
|
25
|
+
export {
|
|
26
|
+
DictionaryTrigger as D
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=DictionaryTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DictionaryTrigger.js","sources":["../src/components/DictionaryTrigger/DictionaryTrigger.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { AnalyticsId } from '../../constants';\n\nimport styles from './styles.module.scss';\n\nexport interface DictionaryTriggerProps extends Pick<React.InputHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onFocus' | 'onBlur'> {\n /**\n * Sets the content of the trigger.\n */\n children: React.ReactNode;\n /**\n * Indicates that the trigger is in use.\n */\n selected?: boolean;\n /**\n * Classname will be applied to the button element.\n */\n className?: string;\n /**\n * Sets the data-testid attribute.\n */\n testId?: string;\n}\n\nconst DictionaryTrigger = React.forwardRef<HTMLButtonElement, DictionaryTriggerProps>(\n ({ children, selected = false, className, testId, ...rest }, ref) => {\n const triggerClasses = classNames(styles.dictionarytrigger, className);\n\n return (\n <button\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.DictionaryTrigger}\n className={triggerClasses}\n aria-expanded={selected}\n ref={ref}\n {...rest}\n >\n {children}\n </button>\n );\n }\n);\n\nDictionaryTrigger.displayName = 'DictionaryTrigger';\n\nexport default DictionaryTrigger;\n"],"names":["React"],"mappings":";;;;;AA2BA,MAAM,oBAAoBA,eAAM;AAAA,EAC9B,CAAC,EAAE,UAAU,WAAW,OAAO,WAAW,QAAQ,GAAG,KAAK,GAAG,QAAQ;AACnE,UAAM,iBAAiB,WAAW,OAAO,mBAAmB,SAAS;AAGnE,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,eAAa;AAAA,QACb,oBAAkB,YAAY;AAAA,QAC9B,WAAW;AAAA,QACX,iBAAe;AAAA,QACf;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;AAEA,kBAAkB,cAAc;"}
|
package/HelpDetails.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import React__default, { useRef, useState } from "react";
|
|
3
|
+
import { u as useFloating, e as FloatingArrow, f as autoUpdate, o as offset, i as arrow, j as size } from "./floating-ui.react.js";
|
|
4
|
+
import classNames from "classnames";
|
|
5
|
+
import styles from "./components/HelpDetails/styles.module.scss";
|
|
6
|
+
const BUBBLE_WIDTH_OFFSET = 26;
|
|
7
|
+
const BUBBLE_Y_OFFSET = 1;
|
|
8
|
+
const HelpDetails = React__default.forwardRef(({ children, controllerRef, testId }, ref) => {
|
|
9
|
+
const arrowRef = useRef(null);
|
|
10
|
+
const [bubbleMinWidth, setBubbleMinWidth] = React__default.useState(null);
|
|
11
|
+
const [arrowYOffsetValue, setArrowYOffsetValue] = useState();
|
|
12
|
+
const { refs, context, floatingStyles } = useFloating({
|
|
13
|
+
middleware: [
|
|
14
|
+
offset(arrowYOffsetValue),
|
|
15
|
+
controllerRef && arrow({ element: arrowRef }),
|
|
16
|
+
size({
|
|
17
|
+
apply({ rects }) {
|
|
18
|
+
setBubbleMinWidth(rects.reference.x);
|
|
19
|
+
const { reference, floating } = rects;
|
|
20
|
+
const controllerBottom = reference.y + reference.height;
|
|
21
|
+
const bubbleTop = floating.y;
|
|
22
|
+
const distance = bubbleTop - controllerBottom + BUBBLE_Y_OFFSET;
|
|
23
|
+
setArrowYOffsetValue(distance);
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
],
|
|
27
|
+
placement: "bottom",
|
|
28
|
+
whileElementsMounted: autoUpdate,
|
|
29
|
+
elements: {
|
|
30
|
+
reference: controllerRef == null ? void 0 : controllerRef.current
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const helpDetailsClasses = classNames(
|
|
34
|
+
styles["help-details"],
|
|
35
|
+
controllerRef ? styles["help-details--inline"] : styles["help-details--standalone"]
|
|
36
|
+
);
|
|
37
|
+
const contentClasses = classNames(controllerRef ? styles["help-details__content--inline"] : styles["help-details__content--standalone"]);
|
|
38
|
+
return /* @__PURE__ */ jsxs(
|
|
39
|
+
"div",
|
|
40
|
+
{
|
|
41
|
+
className: helpDetailsClasses,
|
|
42
|
+
"data-testid": testId,
|
|
43
|
+
ref,
|
|
44
|
+
style: { minWidth: bubbleMinWidth ? `${bubbleMinWidth + BUBBLE_WIDTH_OFFSET}px` : void 0 },
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ jsx("div", { style: floatingStyles, ref: refs.setFloating, children: controllerRef && typeof arrowYOffsetValue !== "undefined" && /* @__PURE__ */ jsx(
|
|
47
|
+
FloatingArrow,
|
|
48
|
+
{
|
|
49
|
+
ref: arrowRef,
|
|
50
|
+
context,
|
|
51
|
+
fill: "var(--core-color-plum-50)",
|
|
52
|
+
stroke: "var(--core-color-plum-400)",
|
|
53
|
+
strokeWidth: 1
|
|
54
|
+
}
|
|
55
|
+
) }),
|
|
56
|
+
/* @__PURE__ */ jsx("div", { className: contentClasses, children })
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
HelpDetails.displayName = "HelpDetails";
|
|
62
|
+
export {
|
|
63
|
+
HelpDetails as H
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=HelpDetails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpDetails.js","sources":["../src/components/HelpDetails/HelpDetails.tsx"],"sourcesContent":["import React, { useRef, useState } from 'react';\n\nimport { arrow, FloatingArrow, autoUpdate, useFloating, offset, size } from '@floating-ui/react';\nimport classNames from 'classnames';\n\nimport styles from './styles.module.scss';\n\nconst BUBBLE_WIDTH_OFFSET = 26;\nconst BUBBLE_Y_OFFSET = 1;\n\nexport interface HelpDetailsProps {\n /** Sets the text content of the HelpDetails. */\n children: React.ReactNode;\n /** Ref for the element the HelpDetails is placed upon */\n controllerRef?: React.RefObject<HTMLButtonElement>;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst HelpDetails = React.forwardRef<HTMLDivElement, HelpDetailsProps>(({ children, controllerRef, testId }, ref) => {\n const arrowRef = useRef(null);\n const [bubbleMinWidth, setBubbleMinWidth] = React.useState<number | null>(null);\n const [arrowYOffsetValue, setArrowYOffsetValue] = useState<number>();\n\n const { refs, context, floatingStyles } = useFloating({\n middleware: [\n offset(arrowYOffsetValue),\n controllerRef && arrow({ element: arrowRef }),\n size({\n apply({ rects }) {\n // Vi setter minimum bredde på bubble basert på controllerRef sin x posisjon\n setBubbleMinWidth(rects.reference.x);\n\n // Vi kalkulerer pilens y-offset basert på avstand mellom controllerRef og bubble\n const { reference, floating } = rects;\n const controllerBottom = reference.y + reference.height;\n const bubbleTop = floating.y;\n const distance = bubbleTop - controllerBottom + BUBBLE_Y_OFFSET;\n setArrowYOffsetValue(distance);\n },\n }),\n ],\n placement: 'bottom',\n whileElementsMounted: autoUpdate,\n elements: {\n reference: controllerRef?.current,\n },\n });\n\n const helpDetailsClasses = classNames(\n styles['help-details'],\n controllerRef ? styles['help-details--inline'] : styles['help-details--standalone']\n );\n const contentClasses = classNames(controllerRef ? styles['help-details__content--inline'] : styles['help-details__content--standalone']);\n\n return (\n <div\n className={helpDetailsClasses}\n data-testid={testId}\n ref={ref}\n style={{ minWidth: bubbleMinWidth ? `${bubbleMinWidth + BUBBLE_WIDTH_OFFSET}px` : undefined }}\n >\n <div style={floatingStyles} ref={refs.setFloating}>\n {controllerRef && typeof arrowYOffsetValue !== 'undefined' && (\n <FloatingArrow\n ref={arrowRef}\n context={context}\n fill={'var(--core-color-plum-50)'}\n stroke={'var(--core-color-plum-400)'}\n strokeWidth={1}\n />\n )}\n </div>\n <div className={contentClasses}>{children}</div>\n </div>\n );\n});\n\nHelpDetails.displayName = 'HelpDetails';\n\nexport default HelpDetails;\n"],"names":["React"],"mappings":";;;;;AAOA,MAAM,sBAAsB;AAC5B,MAAM,kBAAkB;AAWlB,MAAA,cAAcA,eAAM,WAA6C,CAAC,EAAE,UAAU,eAAe,OAAO,GAAG,QAAQ;AAC7G,QAAA,WAAW,OAAO,IAAI;AAC5B,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,eAAM,SAAwB,IAAI;AAC9E,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAiB;AAEnE,QAAM,EAAE,MAAM,SAAS,eAAA,IAAmB,YAAY;AAAA,IACpD,YAAY;AAAA,MACV,OAAO,iBAAiB;AAAA,MACxB,iBAAiB,MAAM,EAAE,SAAS,UAAU;AAAA,MAC5C,KAAK;AAAA,QACH,MAAM,EAAE,SAAS;AAEG,4BAAA,MAAM,UAAU,CAAC;AAG7B,gBAAA,EAAE,WAAW,SAAA,IAAa;AAC1B,gBAAA,mBAAmB,UAAU,IAAI,UAAU;AACjD,gBAAM,YAAY,SAAS;AACrB,gBAAA,WAAW,YAAY,mBAAmB;AAChD,+BAAqB,QAAQ;AAAA,QAAA;AAAA,MAEhC,CAAA;AAAA,IACH;AAAA,IACA,WAAW;AAAA,IACX,sBAAsB;AAAA,IACtB,UAAU;AAAA,MACR,WAAW,+CAAe;AAAA,IAAA;AAAA,EAC5B,CACD;AAED,QAAM,qBAAqB;AAAA,IACzB,OAAO,cAAc;AAAA,IACrB,gBAAgB,OAAO,sBAAsB,IAAI,OAAO,0BAA0B;AAAA,EACpF;AACM,QAAA,iBAAiB,WAAW,gBAAgB,OAAO,+BAA+B,IAAI,OAAO,mCAAmC,CAAC;AAGrI,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,eAAa;AAAA,MACb;AAAA,MACA,OAAO,EAAE,UAAU,iBAAiB,GAAG,iBAAiB,mBAAmB,OAAO,OAAU;AAAA,MAE5F,UAAA;AAAA,QAAC,oBAAA,OAAA,EAAI,OAAO,gBAAgB,KAAK,KAAK,aACnC,UAAA,iBAAiB,OAAO,sBAAsB,eAC7C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL;AAAA,YACA,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,aAAa;AAAA,UAAA;AAAA,QAAA,GAGnB;AAAA,QACC,oBAAA,OAAA,EAAI,WAAW,gBAAiB,SAAS,CAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5C;AAEJ,CAAC;AAED,YAAY,cAAc;"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React__default from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { AnalyticsId } from "./constants.js";
|
|
5
|
+
import { useHover } from "./hooks/useHover.js";
|
|
6
|
+
import { getAriaLabelAttributes } from "./utils/accessibility.js";
|
|
7
|
+
import { mergeRefs } from "./utils/refs.js";
|
|
8
|
+
import styles from "./components/HelpTriggerIcon/styles.module.scss";
|
|
9
|
+
const HelpSign = ({ color, weight }) => {
|
|
10
|
+
const paths = weight === "normal" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "clipCircle", clipPathUnits: "userSpaceOnUse", children: /* @__PURE__ */ jsx(
|
|
12
|
+
"path",
|
|
13
|
+
{
|
|
14
|
+
fillRule: "evenodd",
|
|
15
|
+
clipRule: "evenodd",
|
|
16
|
+
d: "M10.0004 0C4.48644 0 0 4.48565 0 9.99961C0 15.5136 4.48644 20 10.0004 20C15.5144 20 20 15.5136 20 9.99961C20 4.48565 15.5144 0 10.0004 0"
|
|
17
|
+
}
|
|
18
|
+
) }) }),
|
|
19
|
+
/* @__PURE__ */ jsx(
|
|
20
|
+
"path",
|
|
21
|
+
{
|
|
22
|
+
d: "M10.0004 0V-2C3.38207 -2 -2 3.38088 -2 9.99961H0H2C2 5.59043 5.5908 2 10.0004 2V0ZM0 9.99961H-2C-2 16.6181 3.38187 22 10.0004 22V20V18C5.59101 18 2 14.409 2 9.99961H0ZM10.0004 20V22C16.6191 22 22 16.6179 22 9.99961H20H18C18 14.4092 14.4096 18 10.0004 18V20ZM20 9.99961H22C22 3.38108 16.6189 -2 10.0004 -2V0V2C14.4098 2 18 5.59022 18 9.99961H20Z",
|
|
23
|
+
fill: color,
|
|
24
|
+
clipPath: "url(#clipCircle)"
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
"path",
|
|
29
|
+
{
|
|
30
|
+
d: "M9.93555 4.40039C12.1061 4.40039 13.2998 5.8386 13.2998 7.35156C13.2997 8.52045 12.2922 9.61789 11.8262 9.94238C11.3601 10.2669 11.209 10.5 11.209 10.5C11.0283 10.6756 10.9117 11.0195 10.8721 11.2715C10.8316 11.5286 10.8476 11.5136 10.8477 11.7998V11.9004H9.20117V11.2715C9.20117 10.8463 9.20556 10.7433 9.31934 10.374C9.43483 9.99921 9.75195 9.54492 10.0928 9.18262C10.4336 8.82031 10.751 8.58105 10.751 8.58105C11.1983 8.25659 11.3818 7.87361 11.3818 7.42285C11.3818 7.07417 11.2638 6.74031 11.0283 6.49414C10.794 6.24916 10.435 6.08301 9.93555 6.08301C8.94209 6.08316 8.41811 6.83977 8.41797 7.60742C8.41797 7.81763 8.44731 8.07481 8.49805 8.21582L8.5498 8.36035L6.7793 8.23535L6.70898 8.23047L6.69043 8.16309C6.63105 7.95321 6.60059 7.71544 6.60059 7.47949C6.60081 6.00363 7.71413 4.40053 9.93555 4.40039Z",
|
|
31
|
+
fill: color
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
"path",
|
|
36
|
+
{
|
|
37
|
+
d: "M10 12.7998C10.6024 12.7999 11.0996 13.31 11.0996 13.9072C11.0994 14.506 10.6023 14.9999 10 15C9.38173 15 8.8996 14.506 8.89941 13.9072C8.89941 13.31 9.38162 12.7998 10 12.7998Z",
|
|
38
|
+
fill: color
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
42
|
+
/* @__PURE__ */ jsx(
|
|
43
|
+
"path",
|
|
44
|
+
{
|
|
45
|
+
fillRule: "evenodd",
|
|
46
|
+
clipRule: "evenodd",
|
|
47
|
+
d: "M10.0004 0C4.48644 0 0 4.48565 0 9.99961C0 15.5136 4.48644 20 10.0004 20C15.5144 20 20 15.5136 20 9.99961C20 4.48565 15.5144 0 10.0004 0Z"
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
/* @__PURE__ */ jsx(
|
|
51
|
+
"path",
|
|
52
|
+
{
|
|
53
|
+
d: "M9.93555 4.40039C12.1061 4.40039 13.2998 5.8386 13.2998 7.35156C13.2997 8.52045 12.2922 9.61789 11.8262 9.94238C11.3601 10.2669 11.209 10.5 11.209 10.5C11.0283 10.6756 10.9117 11.0195 10.8721 11.2715C10.8316 11.5286 10.8476 11.5136 10.8477 11.7998V11.9004H9.20117V11.2715C9.20117 10.8463 9.20556 10.7433 9.31934 10.374C9.43483 9.99921 9.75195 9.54492 10.0928 9.18262C10.4336 8.82031 10.751 8.58105 10.751 8.58105C11.1983 8.25659 11.3818 7.87361 11.3818 7.42285C11.3818 7.07417 11.2638 6.74031 11.0283 6.49414C10.794 6.24916 10.435 6.08301 9.93555 6.08301C8.94209 6.08316 8.41811 6.83977 8.41797 7.60742C8.41797 7.81763 8.44731 8.07481 8.49805 8.21582L8.5498 8.36035L6.7793 8.23535L6.70898 8.23047L6.69043 8.16309C6.63105 7.95321 6.60059 7.71544 6.60059 7.47949C6.60081 6.00363 7.71413 4.40053 9.93555 4.40039Z",
|
|
54
|
+
fill: "white"
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx(
|
|
58
|
+
"path",
|
|
59
|
+
{
|
|
60
|
+
d: "M10 12.7998C10.6024 12.7999 11.0996 13.31 11.0996 13.9072C11.0994 14.506 10.6023 14.9999 10 15C9.38173 15 8.8996 14.506 8.89941 13.9072C8.89941 13.31 9.38162 12.7998 10 12.7998Z",
|
|
61
|
+
fill: "white"
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] });
|
|
65
|
+
return /* @__PURE__ */ jsx("svg", { fill: "none", height: "20", overflow: "visible", role: "presentation", width: "20", viewBox: "0 0 20 20", xmlns: "http://www.w3.org/2000/svg", children: paths });
|
|
66
|
+
};
|
|
67
|
+
const getIconColor = (hover, weight) => {
|
|
68
|
+
if (weight === "normal") {
|
|
69
|
+
return `var(--core-color-plum-${hover ? "900" : "700"})`;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const HelpTriggerIcon = React__default.forwardRef((props, ref) => {
|
|
73
|
+
return /* @__PURE__ */ jsx(HelpTriggerIconInternal, { ...props, ref });
|
|
74
|
+
});
|
|
75
|
+
const HelpTriggerIconInternal = React__default.forwardRef(
|
|
76
|
+
({ ariaLabel, ariaLabelledById, htmlMarkup = "button", size = "medium", testId, weight = "normal", ...buttonRest }, ref) => {
|
|
77
|
+
const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });
|
|
78
|
+
const { hoverRef, isHovered } = useHover(ref, false);
|
|
79
|
+
const helpIcon = /* @__PURE__ */ jsx(HelpSign, { color: getIconColor(isHovered, weight), weight });
|
|
80
|
+
const isButton = htmlMarkup === "button";
|
|
81
|
+
const iconClasses = classNames(
|
|
82
|
+
styles["help-trigger-icon"],
|
|
83
|
+
{
|
|
84
|
+
[styles["help-trigger-icon--strong"]]: weight === "strong",
|
|
85
|
+
[styles["help-trigger-icon--is-button"]]: isButton
|
|
86
|
+
},
|
|
87
|
+
styles[`help-trigger-icon--${size}`]
|
|
88
|
+
);
|
|
89
|
+
if (isButton) {
|
|
90
|
+
return /* @__PURE__ */ jsx(
|
|
91
|
+
"button",
|
|
92
|
+
{
|
|
93
|
+
...ariaLabelAttributes,
|
|
94
|
+
type: "button",
|
|
95
|
+
"data-testid": testId,
|
|
96
|
+
"data-analyticsid": AnalyticsId.HelpTriggerIcon,
|
|
97
|
+
className: iconClasses,
|
|
98
|
+
ref: mergeRefs([hoverRef, ref]),
|
|
99
|
+
...buttonRest,
|
|
100
|
+
children: helpIcon
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
return /* @__PURE__ */ jsx("span", { "data-testid": testId, "data-analyticsid": AnalyticsId.HelpTriggerIcon, className: iconClasses, children: helpIcon });
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
HelpTriggerIcon.displayName = "HelpTriggerIcon";
|
|
108
|
+
HelpTriggerIconInternal.displayName = "HelpTriggerIconInternal";
|
|
109
|
+
export {
|
|
110
|
+
HelpTriggerIconInternal as H,
|
|
111
|
+
HelpTriggerIcon as a
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=HelpTriggerIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpTriggerIcon.js","sources":["../src/components/HelpTriggerIcon/HelpSign.tsx","../src/components/HelpTriggerIcon/HelpTriggerIcon.tsx"],"sourcesContent":["import React from 'react';\n\nimport { HelpTriggerWeights } from '../HelpTriggerIcon';\n\nexport interface HelpSignProps {\n color?: string;\n weight?: HelpTriggerWeights;\n}\n\nconst HelpSign: React.FC<HelpSignProps> = ({ color, weight }: HelpSignProps): React.ReactElement => {\n const paths =\n weight === 'normal' ? (\n <>\n <defs>\n <clipPath id=\"clipCircle\" clipPathUnits=\"userSpaceOnUse\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.0004 0C4.48644 0 0 4.48565 0 9.99961C0 15.5136 4.48644 20 10.0004 20C15.5144 20 20 15.5136 20 9.99961C20 4.48565 15.5144 0 10.0004 0\"\n />\n </clipPath>\n </defs>\n <path\n d=\"M10.0004 0V-2C3.38207 -2 -2 3.38088 -2 9.99961H0H2C2 5.59043 5.5908 2 10.0004 2V0ZM0 9.99961H-2C-2 16.6181 3.38187 22 10.0004 22V20V18C5.59101 18 2 14.409 2 9.99961H0ZM10.0004 20V22C16.6191 22 22 16.6179 22 9.99961H20H18C18 14.4092 14.4096 18 10.0004 18V20ZM20 9.99961H22C22 3.38108 16.6189 -2 10.0004 -2V0V2C14.4098 2 18 5.59022 18 9.99961H20Z\"\n fill={color}\n clipPath=\"url(#clipCircle)\"\n />\n <path\n d=\"M9.93555 4.40039C12.1061 4.40039 13.2998 5.8386 13.2998 7.35156C13.2997 8.52045 12.2922 9.61789 11.8262 9.94238C11.3601 10.2669 11.209 10.5 11.209 10.5C11.0283 10.6756 10.9117 11.0195 10.8721 11.2715C10.8316 11.5286 10.8476 11.5136 10.8477 11.7998V11.9004H9.20117V11.2715C9.20117 10.8463 9.20556 10.7433 9.31934 10.374C9.43483 9.99921 9.75195 9.54492 10.0928 9.18262C10.4336 8.82031 10.751 8.58105 10.751 8.58105C11.1983 8.25659 11.3818 7.87361 11.3818 7.42285C11.3818 7.07417 11.2638 6.74031 11.0283 6.49414C10.794 6.24916 10.435 6.08301 9.93555 6.08301C8.94209 6.08316 8.41811 6.83977 8.41797 7.60742C8.41797 7.81763 8.44731 8.07481 8.49805 8.21582L8.5498 8.36035L6.7793 8.23535L6.70898 8.23047L6.69043 8.16309C6.63105 7.95321 6.60059 7.71544 6.60059 7.47949C6.60081 6.00363 7.71413 4.40053 9.93555 4.40039Z\"\n fill={color}\n />\n <path\n d=\"M10 12.7998C10.6024 12.7999 11.0996 13.31 11.0996 13.9072C11.0994 14.506 10.6023 14.9999 10 15C9.38173 15 8.8996 14.506 8.89941 13.9072C8.89941 13.31 9.38162 12.7998 10 12.7998Z\"\n fill={color}\n />\n </>\n ) : (\n <>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.0004 0C4.48644 0 0 4.48565 0 9.99961C0 15.5136 4.48644 20 10.0004 20C15.5144 20 20 15.5136 20 9.99961C20 4.48565 15.5144 0 10.0004 0Z\"\n />\n <path\n d=\"M9.93555 4.40039C12.1061 4.40039 13.2998 5.8386 13.2998 7.35156C13.2997 8.52045 12.2922 9.61789 11.8262 9.94238C11.3601 10.2669 11.209 10.5 11.209 10.5C11.0283 10.6756 10.9117 11.0195 10.8721 11.2715C10.8316 11.5286 10.8476 11.5136 10.8477 11.7998V11.9004H9.20117V11.2715C9.20117 10.8463 9.20556 10.7433 9.31934 10.374C9.43483 9.99921 9.75195 9.54492 10.0928 9.18262C10.4336 8.82031 10.751 8.58105 10.751 8.58105C11.1983 8.25659 11.3818 7.87361 11.3818 7.42285C11.3818 7.07417 11.2638 6.74031 11.0283 6.49414C10.794 6.24916 10.435 6.08301 9.93555 6.08301C8.94209 6.08316 8.41811 6.83977 8.41797 7.60742C8.41797 7.81763 8.44731 8.07481 8.49805 8.21582L8.5498 8.36035L6.7793 8.23535L6.70898 8.23047L6.69043 8.16309C6.63105 7.95321 6.60059 7.71544 6.60059 7.47949C6.60081 6.00363 7.71413 4.40053 9.93555 4.40039Z\"\n fill=\"white\"\n />\n <path\n d=\"M10 12.7998C10.6024 12.7999 11.0996 13.31 11.0996 13.9072C11.0994 14.506 10.6023 14.9999 10 15C9.38173 15 8.8996 14.506 8.89941 13.9072C8.89941 13.31 9.38162 12.7998 10 12.7998Z\"\n fill=\"white\"\n />\n </>\n );\n\n return (\n <svg fill=\"none\" height=\"20\" overflow=\"visible\" role={'presentation'} width=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\">\n {paths}\n </svg>\n );\n};\n\nexport default HelpSign;\n","import React from 'react';\n\nimport classNames from 'classnames';\n\nimport HelpSign from './HelpSign';\nimport { AnalyticsId } from '../../constants';\nimport { useHover } from '../../hooks/useHover';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { mergeRefs } from '../../utils/refs';\n\nimport styles from './styles.module.scss';\n\nexport type HelpTriggerIconSizes = 'inherit' | 'medium' | 'large' | 'xlarge';\n\nexport type HelpTriggerIconTags = 'button' | 'span';\n\nexport type HelpTriggerWeights = 'normal' | 'strong';\n\nexport interface HelpTriggerIconProps\n extends Pick<React.InputHTMLAttributes<HTMLButtonElement>, 'onClick' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded'> {\n /**\n * Sets aria-label of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabel?: string;\n /**\n * Sets aria-labelledby of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabelledById?: string;\n /**\n * Size of the Icon. Default: medium.\n */\n\n size?: HelpTriggerIconSizes;\n /** Sets the data-testid attribute. */\n testId?: string;\n /**\n * Sets the colors of the help trigger icon. Default: normal.\n */\n weight?: HelpTriggerWeights;\n}\n\ninterface HelpTriggerIconInternalProps extends HelpTriggerIconProps {\n /**\n * Only use this if the parent wrapper is a Button!\n * Changes the underlying element of the trigger. If set to span, the trigger will be a non-interactive icon. Default: button\n */\n htmlMarkup?: HelpTriggerIconTags;\n}\n\nconst getIconColor = (hover: boolean, weight: HelpTriggerWeights): string | undefined => {\n if (weight === 'normal') {\n return `var(--core-color-plum-${hover ? '900' : '700'})`;\n }\n};\n\nconst HelpTriggerIcon = React.forwardRef<HTMLButtonElement, HelpTriggerIconProps>((props, ref) => {\n return <HelpTriggerIconInternal {...props} ref={ref} />;\n});\n\nexport const HelpTriggerIconInternal = React.forwardRef<HTMLButtonElement, HelpTriggerIconInternalProps>(\n ({ ariaLabel, ariaLabelledById, htmlMarkup = 'button', size = 'medium', testId, weight = 'normal', ...buttonRest }, ref) => {\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });\n const { hoverRef, isHovered } = useHover<HTMLButtonElement>(ref as React.RefObject<HTMLButtonElement>, false);\n const helpIcon = <HelpSign color={getIconColor(isHovered, weight)} weight={weight} />;\n const isButton = htmlMarkup === 'button';\n const iconClasses = classNames(\n styles['help-trigger-icon'],\n {\n [styles['help-trigger-icon--strong']]: weight === 'strong',\n [styles['help-trigger-icon--is-button']]: isButton,\n },\n styles[`help-trigger-icon--${size}`]\n );\n\n if (isButton) {\n return (\n <button\n {...ariaLabelAttributes}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.HelpTriggerIcon}\n className={iconClasses}\n ref={mergeRefs([hoverRef, ref])}\n {...buttonRest}\n >\n {helpIcon}\n </button>\n );\n }\n\n return (\n <span data-testid={testId} data-analyticsid={AnalyticsId.HelpTriggerIcon} className={iconClasses}>\n {helpIcon}\n </span>\n );\n }\n);\n\nHelpTriggerIcon.displayName = 'HelpTriggerIcon';\nHelpTriggerIconInternal.displayName = 'HelpTriggerIconInternal';\n\nexport default HelpTriggerIcon;\n"],"names":["React"],"mappings":";;;;;;;;AASA,MAAM,WAAoC,CAAC,EAAE,OAAO,aAAgD;AAC5F,QAAA,QACJ,WAAW,WAEP,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA,oBAAC,UACC,UAAC,oBAAA,YAAA,EAAS,IAAG,cAAa,eAAc,kBACtC,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA,MAAA;AAAA,OAEN,EACF,CAAA;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAM;AAAA,QACN,UAAS;AAAA,MAAA;AAAA,IACX;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,EAAA,CACF,IAGE,qBAAA,UAAA,EAAA,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,UAAS;AAAA,QACT,GAAE;AAAA,MAAA;AAAA,IACJ;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IACP;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACP,GACF;AAGJ,6BACG,OAAI,EAAA,MAAK,QAAO,QAAO,MAAK,UAAS,WAAU,MAAM,gBAAgB,OAAM,MAAK,SAAQ,aAAY,OAAM,8BACxG,UACH,OAAA;AAEJ;ACVA,MAAM,eAAe,CAAC,OAAgB,WAAmD;AACvF,MAAI,WAAW,UAAU;AAChB,WAAA,yBAAyB,QAAQ,QAAQ,KAAK;AAAA,EAAA;AAEzD;AAEA,MAAM,kBAAkBA,eAAM,WAAoD,CAAC,OAAO,QAAQ;AAChG,SAAQ,oBAAA,yBAAA,EAAyB,GAAG,OAAO,IAAU,CAAA;AACvD,CAAC;AAEM,MAAM,0BAA0BA,eAAM;AAAA,EAC3C,CAAC,EAAE,WAAW,kBAAkB,aAAa,UAAU,OAAO,UAAU,QAAQ,SAAS,UAAU,GAAG,WAAA,GAAc,QAAQ;AAC1H,UAAM,sBAAsB,uBAAuB,EAAE,OAAO,WAAW,IAAI,kBAAkB;AAC7F,UAAM,EAAE,UAAU,UAAA,IAAc,SAA4B,KAA2C,KAAK;AACtG,UAAA,+BAAY,UAAS,EAAA,OAAO,aAAa,WAAW,MAAM,GAAG,QAAgB;AACnF,UAAM,WAAW,eAAe;AAChC,UAAM,cAAc;AAAA,MAClB,OAAO,mBAAmB;AAAA,MAC1B;AAAA,QACE,CAAC,OAAO,2BAA2B,CAAC,GAAG,WAAW;AAAA,QAClD,CAAC,OAAO,8BAA8B,CAAC,GAAG;AAAA,MAC5C;AAAA,MACA,OAAO,sBAAsB,IAAI,EAAE;AAAA,IACrC;AAEA,QAAI,UAAU;AAEV,aAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,MAAK;AAAA,UACL,eAAa;AAAA,UACb,oBAAkB,YAAY;AAAA,UAC9B,WAAW;AAAA,UACX,KAAK,UAAU,CAAC,UAAU,GAAG,CAAC;AAAA,UAC7B,GAAG;AAAA,UAEH,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAKF,WAAA,oBAAC,UAAK,eAAa,QAAQ,oBAAkB,YAAY,iBAAiB,WAAW,aAClF,UACH,SAAA,CAAA;AAAA,EAAA;AAGN;AAEA,gBAAgB,cAAc;AAC9B,wBAAwB,cAAc;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React__default from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { AnalyticsId } from "./constants.js";
|
|
5
|
+
import { useIsMobileBreakpoint } from "./hooks/useIsMobileBreakpoint.js";
|
|
6
|
+
import { getAriaLabelAttributes } from "./utils/accessibility.js";
|
|
7
|
+
import { H as HelpTriggerIconInternal } from "./HelpTriggerIcon.js";
|
|
8
|
+
import styles from "./components/HelpTriggerStandalone/styles.module.scss";
|
|
9
|
+
const HelpTriggerStandalone = React__default.forwardRef(
|
|
10
|
+
({ ariaLabel, ariaLabelledById, children, className, testId, weight = "normal", ...rest }, ref) => {
|
|
11
|
+
const isMobile = useIsMobileBreakpoint();
|
|
12
|
+
const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });
|
|
13
|
+
const helpTriggerStandaloneStyles = classNames(styles["help-trigger-standalone"], className);
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
"button",
|
|
16
|
+
{
|
|
17
|
+
"aria-label": ariaLabel,
|
|
18
|
+
type: "button",
|
|
19
|
+
"data-testid": testId,
|
|
20
|
+
"data-analyticsid": AnalyticsId.HelpTriggerStandalone,
|
|
21
|
+
className: helpTriggerStandaloneStyles,
|
|
22
|
+
ref,
|
|
23
|
+
...ariaLabelAttributes,
|
|
24
|
+
...rest,
|
|
25
|
+
children: /* @__PURE__ */ jsxs("span", { className: styles["help-trigger-standalone__inner-container"], children: [
|
|
26
|
+
/* @__PURE__ */ jsx(HelpTriggerIconInternal, { weight, size: isMobile ? "medium" : "large", htmlMarkup: "span" }),
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: styles["help-trigger-standalone__children"], children })
|
|
28
|
+
] })
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
HelpTriggerStandalone.displayName = "HelpTriggerStandalone";
|
|
34
|
+
export {
|
|
35
|
+
HelpTriggerStandalone as H
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=HelpTriggerStandalone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HelpTriggerStandalone.js","sources":["../src/components/HelpTriggerStandalone/HelpTriggerStandalone.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { AnalyticsId } from '../../constants';\nimport { useIsMobileBreakpoint } from '../../hooks/useIsMobileBreakpoint';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { HelpTriggerIconInternal, HelpTriggerWeights } from '../HelpTriggerIcon';\n\nimport styles from './styles.module.scss';\n\nexport interface HelpTriggerStandaloneProps\n extends Pick<React.InputHTMLAttributes<HTMLButtonElement>, 'onClick' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded'> {\n /**\n * Sets aria-label of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabel?: string;\n /**\n * Sets aria-labelledby of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabelledById?: string;\n /** Sets the text content of the HelpTriggerStandalone. */\n children: React.ReactNode;\n /**\n * Sets the colors of the help trigger. Default: normal.\n */\n weight?: HelpTriggerWeights;\n /**\n * Classname will be applied to the button element.\n */\n className?: string;\n /**\n * Optional test id.\n */\n testId?: string;\n}\n\nconst HelpTriggerStandalone = React.forwardRef<HTMLButtonElement, HelpTriggerStandaloneProps>(\n ({ ariaLabel, ariaLabelledById, children, className, testId, weight = 'normal', ...rest }, ref) => {\n const isMobile = useIsMobileBreakpoint();\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });\n const helpTriggerStandaloneStyles = classNames(styles['help-trigger-standalone'], className);\n\n return (\n <button\n aria-label={ariaLabel}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.HelpTriggerStandalone}\n className={helpTriggerStandaloneStyles}\n ref={ref}\n {...ariaLabelAttributes}\n {...rest}\n >\n <span className={styles['help-trigger-standalone__inner-container']}>\n <HelpTriggerIconInternal weight={weight} size={isMobile ? 'medium' : 'large'} htmlMarkup={'span'} />\n <span className={styles['help-trigger-standalone__children']}>{children}</span>\n </span>\n </button>\n );\n }\n);\n\nHelpTriggerStandalone.displayName = 'HelpTriggerStandalone';\n\nexport default HelpTriggerStandalone;\n"],"names":["React"],"mappings":";;;;;;;;AAqCA,MAAM,wBAAwBA,eAAM;AAAA,EAClC,CAAC,EAAE,WAAW,kBAAkB,UAAU,WAAW,QAAQ,SAAS,UAAU,GAAG,KAAK,GAAG,QAAQ;AACjG,UAAM,WAAW,sBAAsB;AACvC,UAAM,sBAAsB,uBAAuB,EAAE,OAAO,WAAW,IAAI,kBAAkB;AAC7F,UAAM,8BAA8B,WAAW,OAAO,yBAAyB,GAAG,SAAS;AAGzF,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAY;AAAA,QACZ,MAAK;AAAA,QACL,eAAa;AAAA,QACb,oBAAkB,YAAY;AAAA,QAC9B,WAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,QACH,GAAG;AAAA,QAEJ,UAAC,qBAAA,QAAA,EAAK,WAAW,OAAO,0CAA0C,GAChE,UAAA;AAAA,UAAA,oBAAC,2BAAwB,QAAgB,MAAM,WAAW,WAAW,SAAS,YAAY,QAAQ;AAAA,8BACjG,QAAK,EAAA,WAAW,OAAO,mCAAmC,GAAI,SAAS,CAAA;AAAA,QAAA,EAC1E,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAEA,sBAAsB,cAAc;"}
|
package/HighlightPanel.js
CHANGED
|
@@ -8,43 +8,19 @@ import { I as Icon } from "./Icon.js";
|
|
|
8
8
|
import { L as LazyIcon } from "./LazyIcon.js";
|
|
9
9
|
import { T as Title } from "./Title.js";
|
|
10
10
|
import styles from "./components/HighlightPanel/styles.module.scss";
|
|
11
|
-
var HighlightPanelSize = /* @__PURE__ */ ((HighlightPanelSize2) => {
|
|
12
|
-
HighlightPanelSize2["medium"] = "medium";
|
|
13
|
-
HighlightPanelSize2["large"] = "large";
|
|
14
|
-
HighlightPanelSize2["fluid"] = "fluid";
|
|
15
|
-
return HighlightPanelSize2;
|
|
16
|
-
})(HighlightPanelSize || {});
|
|
17
|
-
const Wrapper = ({ className, size, children }) => /* @__PURE__ */ jsx("div", { className, "data-testid": "highlightpanel-wrapper", children: /* @__PURE__ */ jsx("div", { className: styles.highlightpanel__row, children: /* @__PURE__ */ jsx("div", { className: classNames(styles.highlightpanel__col, size === "medium" && styles["highlightpanel__col--offset"]), children }) }) });
|
|
18
|
-
const ContentWrapper = (props) => {
|
|
19
|
-
const { children, className } = props;
|
|
20
|
-
const contentWrapperClasses = classNames(styles["highlightpanel__content-wrapper"], className);
|
|
21
|
-
return /* @__PURE__ */ jsx("div", { className: contentWrapperClasses, children: /* @__PURE__ */ jsx("div", { className: classNames(styles.highlightpanel__row), children }) });
|
|
22
|
-
};
|
|
23
11
|
const HighlightPanel = (props) => {
|
|
24
|
-
const {
|
|
25
|
-
children,
|
|
26
|
-
color = "white",
|
|
27
|
-
size = "medium",
|
|
28
|
-
testId,
|
|
29
|
-
svgIcon,
|
|
30
|
-
htmlMarkup = "div",
|
|
31
|
-
className,
|
|
32
|
-
contentWrapperClassName,
|
|
33
|
-
title,
|
|
34
|
-
titleHtmlMarkup = "h2"
|
|
35
|
-
} = props;
|
|
12
|
+
const { children, color = "white", testId, svgIcon, htmlMarkup = "div", className, title, titleHtmlMarkup = "h2" } = props;
|
|
36
13
|
const breakpoint = useBreakpoint();
|
|
37
14
|
const containerClassName = classNames(
|
|
15
|
+
styles.highlightpanel,
|
|
38
16
|
styles[`highlightpanel--${color}`],
|
|
39
|
-
styles[`highlightpanel--${size}`],
|
|
40
17
|
svgIcon && styles["highlightpanel--has-icon"],
|
|
41
|
-
{ container: size === "medium" || size === "large" },
|
|
42
18
|
className
|
|
43
19
|
);
|
|
44
20
|
const renderContent = () => {
|
|
45
21
|
const titleElement = title && /* @__PURE__ */ jsx(Title, { testId: "titleId", htmlMarkup: titleHtmlMarkup, appearance: "title4", children: title });
|
|
46
22
|
if (svgIcon) {
|
|
47
|
-
const iconSize =
|
|
23
|
+
const iconSize = IconSize.Small;
|
|
48
24
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
49
25
|
/* @__PURE__ */ jsxs("div", { className: styles.highlightpanel__icon, children: [
|
|
50
26
|
typeof svgIcon === "string" ? /* @__PURE__ */ jsx(LazyIcon, { iconName: svgIcon, size: iconSize }) : /* @__PURE__ */ jsx(Icon, { svgIcon, size: iconSize }),
|
|
@@ -62,39 +38,9 @@ const HighlightPanel = (props) => {
|
|
|
62
38
|
] });
|
|
63
39
|
};
|
|
64
40
|
const CustomTag = htmlMarkup;
|
|
65
|
-
|
|
66
|
-
if (size === "medium") {
|
|
67
|
-
return /* @__PURE__ */ jsx(Wrapper, { className: containerClassName, size, children: /* @__PURE__ */ jsx(CustomTag, { className: contentWrapperClasses, "data-testid": testId, "data-analyticsid": AnalyticsId.HighlightPanel, children: renderContent() }) });
|
|
68
|
-
}
|
|
69
|
-
if (size === "large" && svgIcon) {
|
|
70
|
-
return /* @__PURE__ */ jsx(Wrapper, { className: containerClassName, size, children: /* @__PURE__ */ jsx(ContentWrapper, { className: contentWrapperClasses, children: /* @__PURE__ */ jsx(
|
|
71
|
-
CustomTag,
|
|
72
|
-
{
|
|
73
|
-
className: classNames(styles.highlightpanel__col, styles["highlightpanel__col--large-with-icon"]),
|
|
74
|
-
"data-testid": testId,
|
|
75
|
-
"data-analyticsid": AnalyticsId.HighlightPanel,
|
|
76
|
-
children: renderContent()
|
|
77
|
-
}
|
|
78
|
-
) }) });
|
|
79
|
-
}
|
|
80
|
-
if (size === "large") {
|
|
81
|
-
return /* @__PURE__ */ jsx(Wrapper, { className: containerClassName, size, children: /* @__PURE__ */ jsx(ContentWrapper, { className: contentWrapperClasses, children: /* @__PURE__ */ jsx(
|
|
82
|
-
CustomTag,
|
|
83
|
-
{
|
|
84
|
-
className: classNames(styles.highlightpanel__col, styles["highlightpanel__col--offset"]),
|
|
85
|
-
"data-testid": testId,
|
|
86
|
-
"data-analyticsid": AnalyticsId.HighlightPanel,
|
|
87
|
-
children: renderContent()
|
|
88
|
-
}
|
|
89
|
-
) }) });
|
|
90
|
-
}
|
|
91
|
-
if (size === "fluid") {
|
|
92
|
-
return /* @__PURE__ */ jsx(CustomTag, { className: containerClassName, "data-testid": testId, children: renderContent() });
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
41
|
+
return /* @__PURE__ */ jsx(CustomTag, { className: containerClassName, "data-testid": testId, "data-analyticsid": AnalyticsId.HighlightPanel, children: renderContent() });
|
|
95
42
|
};
|
|
96
43
|
export {
|
|
97
|
-
HighlightPanel as H
|
|
98
|
-
HighlightPanelSize as a
|
|
44
|
+
HighlightPanel as H
|
|
99
45
|
};
|
|
100
46
|
//# sourceMappingURL=HighlightPanel.js.map
|
package/HighlightPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HighlightPanel.js","sources":["../src/components/HighlightPanel/HighlightPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { useBreakpoint, Breakpoint } from '../..';\nimport { AnalyticsId } from '../../constants';\nimport { PaletteNames } from '../../theme/palette';\nimport Icon, { SvgIcon, IconSize } from '../Icon';\nimport { IconName } from '../Icons/IconNames';\nimport LazyIcon from '../LazyIcon';\nimport Title, { TitleTags } from '../Title';\n\nimport styles from './styles.module.scss';\n\nexport type HighlightPanelColors = Extract<PaletteNames, 'white' | 'neutral' | 'blueberry' | 'cherry'>;\n\nexport
|
|
1
|
+
{"version":3,"file":"HighlightPanel.js","sources":["../src/components/HighlightPanel/HighlightPanel.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { useBreakpoint, Breakpoint } from '../..';\nimport { AnalyticsId } from '../../constants';\nimport { PaletteNames } from '../../theme/palette';\nimport Icon, { SvgIcon, IconSize } from '../Icon';\nimport { IconName } from '../Icons/IconNames';\nimport LazyIcon from '../LazyIcon';\nimport Title, { TitleTags } 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 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 /** 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 { children, color = 'white', testId, svgIcon, htmlMarkup = 'div', className, title, titleHtmlMarkup = 'h2' } = 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 );\n\n const renderContent = (): React.ReactNode => {\n const titleElement = title && (\n <Title testId=\"titleId\" htmlMarkup={titleHtmlMarkup} appearance=\"title4\">\n {title}\n </Title>\n );\n\n if (svgIcon) {\n const iconSize = IconSize.Small;\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"],"names":[],"mappings":";;;;;;;;;;AAwCA,MAAM,iBAAgD,CAAS,UAAA;AAC7D,QAAM,EAAE,UAAU,QAAQ,SAAS,QAAQ,SAAS,aAAa,OAAO,WAAW,OAAO,kBAAkB,KAAS,IAAA;AACrH,QAAM,aAAa,cAAc;AAEjC,QAAM,qBAAqB;AAAA,IACzB,OAAO;AAAA,IACP,OAAO,mBAAmB,KAAK,EAAE;AAAA,IACjC,WAAW,OAAO,0BAA0B;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,gBAAgB,MAAuB;AACrC,UAAA,eAAe,SACnB,oBAAC,OAAM,EAAA,QAAO,WAAU,YAAY,iBAAiB,YAAW,UAC7D,UACH,MAAA,CAAA;AAGF,QAAI,SAAS;AACX,YAAM,WAAW,SAAS;AAE1B,aAEI,qBAAA,UAAA,EAAA,UAAA;AAAA,QAAC,qBAAA,OAAA,EAAI,WAAW,OAAO,sBACpB,UAAA;AAAA,UAAA,OAAO,YAAY,WAAY,oBAAA,UAAA,EAAS,UAAU,SAAS,MAAM,SAAU,CAAA,IAAK,oBAAC,MAAK,EAAA,SAAkB,MAAM,UAAU;AAAA,UACxH,SAAS,aAAa,WAAW,MAAM,oBAAC,SAAI,WAAW,OAAO,+BAA+B,GAAI,UAAa,aAAA,CAAA;AAAA,QAAA,GACjH;AAAA,QACC,qBAAA,OAAA,EAAI,WAAW,OAAO,yBACpB,UAAA;AAAA,UAAS,SAAA,cAAc,WAAW,MAAM,oBAAC,SAAI,WAAW,OAAO,+BAA+B,GAAI,UAAa,aAAA,CAAA;AAAA,UAC/G;AAAA,QAAA,EACH,CAAA;AAAA,MAAA,GACF;AAAA,IAAA;AAIJ,WAEK,qBAAA,UAAA,EAAA,UAAA;AAAA,MACC,SAAA,oBAAC,SAAI,WAAW,OAAO,yBACrB,UAAC,oBAAA,OAAA,EAAK,wBAAa,EACrB,CAAA;AAAA,MAED;AAAA,IAAA,GACH;AAAA,EAEJ;AAEA,QAAM,YAAY;AAGhB,SAAA,oBAAC,WAAU,EAAA,WAAW,oBAAoB,eAAa,QAAQ,oBAAkB,YAAY,gBAC1F,UAAA,cACH,EAAA,CAAA;AAEJ;"}
|