@veeqo/ui 13.19.0-beta-2 → 13.20.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 (87) hide show
  1. package/dist/components/Anchor/Anchor.cjs +11 -5
  2. package/dist/components/Anchor/Anchor.cjs.map +1 -1
  3. package/dist/components/Anchor/Anchor.d.ts +1 -1
  4. package/dist/components/Anchor/Anchor.js +11 -5
  5. package/dist/components/Anchor/Anchor.js.map +1 -1
  6. package/dist/components/Anchor/Anchor.module.scss.cjs +9 -0
  7. package/dist/components/Anchor/Anchor.module.scss.cjs.map +1 -0
  8. package/dist/components/Anchor/Anchor.module.scss.js +7 -0
  9. package/dist/components/Anchor/Anchor.module.scss.js.map +1 -0
  10. package/dist/components/SystemBanner/SystemBanner.cjs +37 -0
  11. package/dist/components/SystemBanner/SystemBanner.cjs.map +1 -0
  12. package/dist/components/SystemBanner/SystemBanner.d.ts +3 -0
  13. package/dist/components/SystemBanner/SystemBanner.js +31 -0
  14. package/dist/components/SystemBanner/SystemBanner.js.map +1 -0
  15. package/dist/components/SystemBanner/SystemBanner.module.scss.cjs +9 -0
  16. package/dist/components/SystemBanner/SystemBanner.module.scss.cjs.map +1 -0
  17. package/dist/components/SystemBanner/SystemBanner.module.scss.js +7 -0
  18. package/dist/components/SystemBanner/SystemBanner.module.scss.js.map +1 -0
  19. package/dist/components/SystemBanner/index.d.ts +2 -0
  20. package/dist/components/SystemBanner/types.d.ts +9 -0
  21. package/dist/components/ToastsLayout/ToastsLayout.cjs +7 -24
  22. package/dist/components/ToastsLayout/ToastsLayout.cjs.map +1 -1
  23. package/dist/components/ToastsLayout/ToastsLayout.d.ts +0 -13
  24. package/dist/components/ToastsLayout/ToastsLayout.js +7 -24
  25. package/dist/components/ToastsLayout/ToastsLayout.js.map +1 -1
  26. package/dist/components/ToastsLayout/components/Toast.cjs +38 -23
  27. package/dist/components/ToastsLayout/components/Toast.cjs.map +1 -1
  28. package/dist/components/ToastsLayout/components/Toast.d.ts +1 -1
  29. package/dist/components/ToastsLayout/components/Toast.js +38 -23
  30. package/dist/components/ToastsLayout/components/Toast.js.map +1 -1
  31. package/dist/components/ToastsLayout/components/styled.cjs +25 -0
  32. package/dist/components/ToastsLayout/components/styled.cjs.map +1 -0
  33. package/dist/components/ToastsLayout/components/styled.d.ts +10 -0
  34. package/dist/components/ToastsLayout/components/styled.js +15 -0
  35. package/dist/components/ToastsLayout/components/styled.js.map +1 -0
  36. package/dist/components/ToastsLayout/index.d.ts +0 -1
  37. package/dist/components/ToastsLayout/types.d.ts +8 -15
  38. package/dist/components/TokenProvider/TokenProvider.cjs +15 -0
  39. package/dist/components/TokenProvider/TokenProvider.cjs.map +1 -0
  40. package/dist/components/TokenProvider/TokenProvider.d.ts +8 -0
  41. package/dist/components/TokenProvider/TokenProvider.js +9 -0
  42. package/dist/components/TokenProvider/TokenProvider.js.map +1 -0
  43. package/dist/components/TokenProvider/TokenProvider.module.scss.cjs +9 -0
  44. package/dist/components/TokenProvider/TokenProvider.module.scss.cjs.map +1 -0
  45. package/dist/components/TokenProvider/TokenProvider.module.scss.js +7 -0
  46. package/dist/components/TokenProvider/TokenProvider.module.scss.js.map +1 -0
  47. package/dist/components/TokenProvider/index.d.ts +2 -0
  48. package/dist/components/index.d.ts +3 -1
  49. package/dist/hoc/index.d.ts +1 -0
  50. package/dist/hoc/withTokens/index.d.ts +2 -0
  51. package/dist/hoc/withTokens/withTokens.cjs +18 -0
  52. package/dist/hoc/withTokens/withTokens.cjs.map +1 -0
  53. package/dist/hoc/withTokens/withTokens.d.ts +9 -0
  54. package/dist/hoc/withTokens/withTokens.js +12 -0
  55. package/dist/hoc/withTokens/withTokens.js.map +1 -0
  56. package/dist/index.cjs +6 -5
  57. package/dist/index.cjs.map +1 -1
  58. package/dist/index.js +3 -1
  59. package/dist/index.js.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/components/Anchor/styled.cjs +0 -38
  62. package/dist/components/Anchor/styled.cjs.map +0 -1
  63. package/dist/components/Anchor/styled.d.ts +0 -10
  64. package/dist/components/Anchor/styled.js +0 -29
  65. package/dist/components/Anchor/styled.js.map +0 -1
  66. package/dist/components/ToastsLayout/components/constants.cjs +0 -42
  67. package/dist/components/ToastsLayout/components/constants.cjs.map +0 -1
  68. package/dist/components/ToastsLayout/components/constants.d.ts +0 -2
  69. package/dist/components/ToastsLayout/components/constants.js +0 -36
  70. package/dist/components/ToastsLayout/components/constants.js.map +0 -1
  71. package/dist/components/ToastsLayout/components/toast.module.scss.cjs +0 -9
  72. package/dist/components/ToastsLayout/components/toast.module.scss.cjs.map +0 -1
  73. package/dist/components/ToastsLayout/components/toast.module.scss.js +0 -7
  74. package/dist/components/ToastsLayout/components/toast.module.scss.js.map +0 -1
  75. package/dist/components/ToastsLayout/components/utils.cjs +0 -10
  76. package/dist/components/ToastsLayout/components/utils.cjs.map +0 -1
  77. package/dist/components/ToastsLayout/components/utils.d.ts +0 -2
  78. package/dist/components/ToastsLayout/components/utils.js +0 -8
  79. package/dist/components/ToastsLayout/components/utils.js.map +0 -1
  80. package/dist/components/ToastsLayout/toastsLayout.module.scss.cjs +0 -9
  81. package/dist/components/ToastsLayout/toastsLayout.module.scss.cjs.map +0 -1
  82. package/dist/components/ToastsLayout/toastsLayout.module.scss.js +0 -7
  83. package/dist/components/ToastsLayout/toastsLayout.module.scss.js.map +0 -1
  84. package/dist/components/ToastsLayout/types.cjs +0 -12
  85. package/dist/components/ToastsLayout/types.cjs.map +0 -1
  86. package/dist/components/ToastsLayout/types.js +0 -12
  87. package/dist/components/ToastsLayout/types.js.map +0 -1
@@ -3,7 +3,9 @@
3
3
  var React = require('react');
4
4
  var sizes = require('../../theme/modules/sizes.cjs');
5
5
  var urlUtils = require('./utils/urlUtils.cjs');
6
- var styled = require('./styled.cjs');
6
+ var buildClassnames = require('../../utils/buildClassnames.cjs');
7
+ require('uid/secure');
8
+ var Anchor_module = require('./Anchor.module.scss.cjs');
7
9
  var HelpIcon = require('../../icons/design-system/components/HelpIcon.cjs');
8
10
  var LaunchIcon = require('../../icons/design-system/components/LaunchIcon.cjs');
9
11
  var isExternalLink = require('./isExternalLink.cjs');
@@ -23,7 +25,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
23
25
  * @param children - The content of the anchor
24
26
  * @param rest - All other standard anchor HTML attributes
25
27
  */
26
- const Anchor = React__default.default.memo(({ variant = 'base', size = 'base', href, showHelpIcon = false, leftIconSlot = null, hideExternalLinkIcon = false, allowedHostnames = [], children, target, rel, ...rest }) => {
28
+ const Anchor = React__default.default.memo(({ variant = 'base', size = 'base', href, showHelpIcon = false, leftIconSlot = null, hideExternalLinkIcon = false, allowedHostnames = [], children, target, rel, className, ...rest }) => {
27
29
  // Process the URL to make it context-aware
28
30
  const processedHref = href ? urlUtils.createContextAwareUrl(href) : undefined;
29
31
  // Determine if link is external based on processed href
@@ -31,11 +33,15 @@ const Anchor = React__default.default.memo(({ variant = 'base', size = 'base', h
31
33
  // Set security attributes for external links if not given in props
32
34
  const secureTarget = target || (isExternal ? '_blank' : undefined);
33
35
  const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);
34
- // Lookup the appropriate styled component based on variant
35
- const AnchorComponent = styled.AnchorMapping[variant];
36
36
  // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)
37
37
  const shouldShowExternalLinkIcon = (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';
38
- return (React__default.default.createElement(AnchorComponent, { href: processedHref, target: secureTarget, rel: secureRel, size: size, ...rest },
38
+ const classNames = buildClassnames.buildClassnames([
39
+ variant !== 'unstyled' && Anchor_module.anchor,
40
+ variant === 'inherit' && Anchor_module.inherit,
41
+ variant !== 'unstyled' && Anchor_module[size],
42
+ className,
43
+ ]);
44
+ return (React__default.default.createElement("a", { href: processedHref, target: secureTarget, rel: secureRel, className: classNames, ...rest },
39
45
  leftIconSlot,
40
46
  showHelpIcon && !leftIconSlot && (React__default.default.createElement(HelpIcon.ReactComponent, { role: "presentation", "data-testid": "help-icon", style: { marginRight: sizes.sizes.xs } })),
41
47
  children,
@@ -1 +1 @@
1
- {"version":3,"file":"Anchor.cjs","sources":["../../../src/components/Anchor/Anchor.tsx"],"sourcesContent":["import React from 'react';\n\nimport { sizes } from 'Theme/modules/sizes';\nimport { createContextAwareUrl } from './utils/urlUtils';\nimport { AnchorProps } from './types';\nimport { AnchorMapping } from './styled';\n\nimport { HelpIcon, LaunchIcon } from '../../icons';\n\nimport { isExternalLink } from './isExternalLink';\n\n/**\n * Anchor component for handling context-aware links with consistent functionality and styling options.\n *\n * https://www.figma.com/design/KFfBvJvYT4evKe9eiLEnwD/%F0%9F%8E%A8-Design-System?node-id=1170-63891&m=dev\n *\n * @param variant - The visual style variant ('base' or 'unstyled')\n * @param href - The URL the link points to (will be processed to be context-aware)\n * @param showHelpIcon - Whether to show a help icon on the left (defaults to false)\n * @param children - The content of the anchor\n * @param rest - All other standard anchor HTML attributes\n */\nexport const Anchor = React.memo(\n ({\n variant = 'base',\n size = 'base',\n href,\n showHelpIcon = false,\n leftIconSlot = null,\n hideExternalLinkIcon = false,\n allowedHostnames = [],\n children,\n target,\n rel,\n ...rest\n }: AnchorProps) => {\n // Process the URL to make it context-aware\n const processedHref = href ? createContextAwareUrl(href) : undefined;\n\n // Determine if link is external based on processed href\n const isExternal = processedHref ? isExternalLink(processedHref, allowedHostnames) : false;\n\n // Set security attributes for external links if not given in props\n const secureTarget = target || (isExternal ? '_blank' : undefined);\n const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n // Lookup the appropriate styled component based on variant\n const AnchorComponent = AnchorMapping[variant];\n\n // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)\n const shouldShowExternalLinkIcon =\n (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';\n\n return (\n <AnchorComponent\n href={processedHref}\n target={secureTarget}\n rel={secureRel}\n size={size}\n {...rest}\n >\n {leftIconSlot}\n {showHelpIcon && !leftIconSlot && (\n <HelpIcon role=\"presentation\" data-testid=\"help-icon\" style={{ marginRight: sizes.xs }} />\n )}\n\n {children}\n {shouldShowExternalLinkIcon && (\n <LaunchIcon\n role=\"presentation\"\n data-testid=\"external-icon\"\n style={{ marginLeft: sizes.xs }}\n />\n )}\n </AnchorComponent>\n );\n },\n);\n"],"names":["React","createContextAwareUrl","isExternalLink","AnchorMapping","HelpIcon","sizes","LaunchIcon"],"mappings":";;;;;;;;;;;;;;AAWA;;;;;;;;;;AAUG;MACU,MAAM,GAAGA,sBAAK,CAAC,IAAI,CAC9B,CAAC,EACC,OAAO,GAAG,MAAM,EAChB,IAAI,GAAG,MAAM,EACb,IAAI,EACJ,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,IAAI,EACnB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,GAAG,EAAE,EACrB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACK,KAAI;;AAEhB,IAAA,MAAM,aAAa,GAAG,IAAI,GAAGC,8BAAqB,CAAC,IAAI,CAAC,GAAG,SAAS;;AAGpE,IAAA,MAAM,UAAU,GAAG,aAAa,GAAGC,6BAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK;;AAG1F,IAAA,MAAM,YAAY,GAAG,MAAM,KAAK,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,IAAA,MAAM,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,qBAAqB,GAAG,SAAS,CAAC;;AAGzE,IAAA,MAAM,eAAe,GAAGC,oBAAa,CAAC,OAAO,CAAC;;AAG9C,IAAA,MAAM,0BAA0B,GAC9B,CAAC,UAAU,IAAI,YAAY,KAAK,QAAQ,KAAK,CAAC,oBAAoB,IAAI,OAAO,KAAK,MAAM;IAE1F,QACEH,qCAAC,eAAe,EAAA,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,IAAI,KACN,IAAI,EAAA;QAEP,YAAY;QACZ,YAAY,IAAI,CAAC,YAAY,KAC5BA,qCAACI,uBAAQ,EAAA,EAAC,IAAI,EAAC,cAAc,EAAA,aAAA,EAAa,WAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAEC,WAAK,CAAC,EAAE,EAAE,EAAA,CAAI,CAC3F;QAEA,QAAQ;QACR,0BAA0B,KACzBL,sBAAA,CAAA,aAAA,CAACM,yBAAU,EAAA,EACT,IAAI,EAAC,cAAc,EACP,aAAA,EAAA,eAAe,EAC3B,KAAK,EAAE,EAAE,UAAU,EAAED,WAAK,CAAC,EAAE,EAAE,EAC/B,CAAA,CACH,CACe;AAEtB,CAAC;;;;"}
1
+ {"version":3,"file":"Anchor.cjs","sources":["../../../src/components/Anchor/Anchor.tsx"],"sourcesContent":["import React from 'react';\n\nimport { sizes } from 'Theme/modules/sizes';\nimport { createContextAwareUrl } from './utils/urlUtils';\nimport { AnchorProps } from './types';\nimport { buildClassnames } from '../../utils';\nimport styles from './Anchor.module.scss';\n\nimport { HelpIcon, LaunchIcon } from '../../icons';\n\nimport { isExternalLink } from './isExternalLink';\n\n/**\n * Anchor component for handling context-aware links with consistent functionality and styling options.\n *\n * https://www.figma.com/design/KFfBvJvYT4evKe9eiLEnwD/%F0%9F%8E%A8-Design-System?node-id=1170-63891&m=dev\n *\n * @param variant - The visual style variant ('base' or 'unstyled')\n * @param href - The URL the link points to (will be processed to be context-aware)\n * @param showHelpIcon - Whether to show a help icon on the left (defaults to false)\n * @param children - The content of the anchor\n * @param rest - All other standard anchor HTML attributes\n */\nexport const Anchor = React.memo(\n ({\n variant = 'base',\n size = 'base',\n href,\n showHelpIcon = false,\n leftIconSlot = null,\n hideExternalLinkIcon = false,\n allowedHostnames = [],\n children,\n target,\n rel,\n className,\n ...rest\n }: AnchorProps) => {\n // Process the URL to make it context-aware\n const processedHref = href ? createContextAwareUrl(href) : undefined;\n\n // Determine if link is external based on processed href\n const isExternal = processedHref ? isExternalLink(processedHref, allowedHostnames) : false;\n\n // Set security attributes for external links if not given in props\n const secureTarget = target || (isExternal ? '_blank' : undefined);\n const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)\n const shouldShowExternalLinkIcon =\n (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';\n\n const classNames = buildClassnames([\n variant !== 'unstyled' && styles.anchor,\n variant === 'inherit' && styles.inherit,\n variant !== 'unstyled' && styles[size],\n className,\n ]);\n\n return (\n <a\n href={processedHref}\n target={secureTarget}\n rel={secureRel}\n className={classNames}\n {...rest}\n >\n {leftIconSlot}\n {showHelpIcon && !leftIconSlot && (\n <HelpIcon role=\"presentation\" data-testid=\"help-icon\" style={{ marginRight: sizes.xs }} />\n )}\n\n {children}\n {shouldShowExternalLinkIcon && (\n <LaunchIcon\n role=\"presentation\"\n data-testid=\"external-icon\"\n style={{ marginLeft: sizes.xs }}\n />\n )}\n </a>\n );\n },\n);\n"],"names":["React","createContextAwareUrl","isExternalLink","buildClassnames","styles","HelpIcon","sizes","LaunchIcon"],"mappings":";;;;;;;;;;;;;;;;AAYA;;;;;;;;;;AAUG;MACU,MAAM,GAAGA,sBAAK,CAAC,IAAI,CAC9B,CAAC,EACC,OAAO,GAAG,MAAM,EAChB,IAAI,GAAG,MAAM,EACb,IAAI,EACJ,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,IAAI,EACnB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,GAAG,EAAE,EACrB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,SAAS,EACT,GAAG,IAAI,EACK,KAAI;;AAEhB,IAAA,MAAM,aAAa,GAAG,IAAI,GAAGC,8BAAqB,CAAC,IAAI,CAAC,GAAG,SAAS;;AAGpE,IAAA,MAAM,UAAU,GAAG,aAAa,GAAGC,6BAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK;;AAG1F,IAAA,MAAM,YAAY,GAAG,MAAM,KAAK,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,IAAA,MAAM,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,qBAAqB,GAAG,SAAS,CAAC;;AAGzE,IAAA,MAAM,0BAA0B,GAC9B,CAAC,UAAU,IAAI,YAAY,KAAK,QAAQ,KAAK,CAAC,oBAAoB,IAAI,OAAO,KAAK,MAAM;IAE1F,MAAM,UAAU,GAAGC,+BAAe,CAAC;AACjC,QAAA,OAAO,KAAK,UAAU,IAAIC,aAAM,CAAC,MAAM;AACvC,QAAA,OAAO,KAAK,SAAS,IAAIA,aAAM,CAAC,OAAO;AACvC,QAAA,OAAO,KAAK,UAAU,IAAIA,aAAM,CAAC,IAAI,CAAC;QACtC,SAAS;AACV,KAAA,CAAC;AAEF,IAAA,QACEJ,sBACE,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,UAAU,KACjB,IAAI,EAAA;QAEP,YAAY;QACZ,YAAY,IAAI,CAAC,YAAY,KAC5BA,qCAACK,uBAAQ,EAAA,EAAC,IAAI,EAAC,cAAc,EAAA,aAAA,EAAa,WAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAEC,WAAK,CAAC,EAAE,EAAE,EAAA,CAAI,CAC3F;QAEA,QAAQ;QACR,0BAA0B,KACzBN,sBAAA,CAAA,aAAA,CAACO,yBAAU,EAAA,EACT,IAAI,EAAC,cAAc,EACP,aAAA,EAAA,eAAe,EAC3B,KAAK,EAAE,EAAE,UAAU,EAAED,WAAK,CAAC,EAAE,EAAE,EAC/B,CAAA,CACH,CACC;AAER,CAAC;;;;"}
@@ -11,4 +11,4 @@ import { AnchorProps } from './types';
11
11
  * @param children - The content of the anchor
12
12
  * @param rest - All other standard anchor HTML attributes
13
13
  */
14
- export declare const Anchor: React.MemoExoticComponent<({ variant, size, href, showHelpIcon, leftIconSlot, hideExternalLinkIcon, allowedHostnames, children, target, rel, ...rest }: AnchorProps) => React.JSX.Element>;
14
+ export declare const Anchor: React.MemoExoticComponent<({ variant, size, href, showHelpIcon, leftIconSlot, hideExternalLinkIcon, allowedHostnames, children, target, rel, className, ...rest }: AnchorProps) => React.JSX.Element>;
@@ -1,7 +1,9 @@
1
1
  import React__default from 'react';
2
2
  import { sizes } from '../../theme/modules/sizes.js';
3
3
  import { createContextAwareUrl } from './utils/urlUtils.js';
4
- import { AnchorMapping } from './styled.js';
4
+ import { buildClassnames } from '../../utils/buildClassnames.js';
5
+ import 'uid/secure';
6
+ import styles from './Anchor.module.scss.js';
5
7
  import { ReactComponent as HelpIcon } from '../../icons/design-system/components/HelpIcon.js';
6
8
  import { ReactComponent as LaunchIcon } from '../../icons/design-system/components/LaunchIcon.js';
7
9
  import { isExternalLink } from './isExternalLink.js';
@@ -17,7 +19,7 @@ import { isExternalLink } from './isExternalLink.js';
17
19
  * @param children - The content of the anchor
18
20
  * @param rest - All other standard anchor HTML attributes
19
21
  */
20
- const Anchor = React__default.memo(({ variant = 'base', size = 'base', href, showHelpIcon = false, leftIconSlot = null, hideExternalLinkIcon = false, allowedHostnames = [], children, target, rel, ...rest }) => {
22
+ const Anchor = React__default.memo(({ variant = 'base', size = 'base', href, showHelpIcon = false, leftIconSlot = null, hideExternalLinkIcon = false, allowedHostnames = [], children, target, rel, className, ...rest }) => {
21
23
  // Process the URL to make it context-aware
22
24
  const processedHref = href ? createContextAwareUrl(href) : undefined;
23
25
  // Determine if link is external based on processed href
@@ -25,11 +27,15 @@ const Anchor = React__default.memo(({ variant = 'base', size = 'base', href, sho
25
27
  // Set security attributes for external links if not given in props
26
28
  const secureTarget = target || (isExternal ? '_blank' : undefined);
27
29
  const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);
28
- // Lookup the appropriate styled component based on variant
29
- const AnchorComponent = AnchorMapping[variant];
30
30
  // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)
31
31
  const shouldShowExternalLinkIcon = (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';
32
- return (React__default.createElement(AnchorComponent, { href: processedHref, target: secureTarget, rel: secureRel, size: size, ...rest },
32
+ const classNames = buildClassnames([
33
+ variant !== 'unstyled' && styles.anchor,
34
+ variant === 'inherit' && styles.inherit,
35
+ variant !== 'unstyled' && styles[size],
36
+ className,
37
+ ]);
38
+ return (React__default.createElement("a", { href: processedHref, target: secureTarget, rel: secureRel, className: classNames, ...rest },
33
39
  leftIconSlot,
34
40
  showHelpIcon && !leftIconSlot && (React__default.createElement(HelpIcon, { role: "presentation", "data-testid": "help-icon", style: { marginRight: sizes.xs } })),
35
41
  children,
@@ -1 +1 @@
1
- {"version":3,"file":"Anchor.js","sources":["../../../src/components/Anchor/Anchor.tsx"],"sourcesContent":["import React from 'react';\n\nimport { sizes } from 'Theme/modules/sizes';\nimport { createContextAwareUrl } from './utils/urlUtils';\nimport { AnchorProps } from './types';\nimport { AnchorMapping } from './styled';\n\nimport { HelpIcon, LaunchIcon } from '../../icons';\n\nimport { isExternalLink } from './isExternalLink';\n\n/**\n * Anchor component for handling context-aware links with consistent functionality and styling options.\n *\n * https://www.figma.com/design/KFfBvJvYT4evKe9eiLEnwD/%F0%9F%8E%A8-Design-System?node-id=1170-63891&m=dev\n *\n * @param variant - The visual style variant ('base' or 'unstyled')\n * @param href - The URL the link points to (will be processed to be context-aware)\n * @param showHelpIcon - Whether to show a help icon on the left (defaults to false)\n * @param children - The content of the anchor\n * @param rest - All other standard anchor HTML attributes\n */\nexport const Anchor = React.memo(\n ({\n variant = 'base',\n size = 'base',\n href,\n showHelpIcon = false,\n leftIconSlot = null,\n hideExternalLinkIcon = false,\n allowedHostnames = [],\n children,\n target,\n rel,\n ...rest\n }: AnchorProps) => {\n // Process the URL to make it context-aware\n const processedHref = href ? createContextAwareUrl(href) : undefined;\n\n // Determine if link is external based on processed href\n const isExternal = processedHref ? isExternalLink(processedHref, allowedHostnames) : false;\n\n // Set security attributes for external links if not given in props\n const secureTarget = target || (isExternal ? '_blank' : undefined);\n const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n // Lookup the appropriate styled component based on variant\n const AnchorComponent = AnchorMapping[variant];\n\n // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)\n const shouldShowExternalLinkIcon =\n (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';\n\n return (\n <AnchorComponent\n href={processedHref}\n target={secureTarget}\n rel={secureRel}\n size={size}\n {...rest}\n >\n {leftIconSlot}\n {showHelpIcon && !leftIconSlot && (\n <HelpIcon role=\"presentation\" data-testid=\"help-icon\" style={{ marginRight: sizes.xs }} />\n )}\n\n {children}\n {shouldShowExternalLinkIcon && (\n <LaunchIcon\n role=\"presentation\"\n data-testid=\"external-icon\"\n style={{ marginLeft: sizes.xs }}\n />\n )}\n </AnchorComponent>\n );\n },\n);\n"],"names":["React"],"mappings":";;;;;;;;AAWA;;;;;;;;;;AAUG;MACU,MAAM,GAAGA,cAAK,CAAC,IAAI,CAC9B,CAAC,EACC,OAAO,GAAG,MAAM,EAChB,IAAI,GAAG,MAAM,EACb,IAAI,EACJ,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,IAAI,EACnB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,GAAG,EAAE,EACrB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,GAAG,IAAI,EACK,KAAI;;AAEhB,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,SAAS;;AAGpE,IAAA,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK;;AAG1F,IAAA,MAAM,YAAY,GAAG,MAAM,KAAK,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,IAAA,MAAM,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,qBAAqB,GAAG,SAAS,CAAC;;AAGzE,IAAA,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;;AAG9C,IAAA,MAAM,0BAA0B,GAC9B,CAAC,UAAU,IAAI,YAAY,KAAK,QAAQ,KAAK,CAAC,oBAAoB,IAAI,OAAO,KAAK,MAAM;IAE1F,QACEA,6BAAC,eAAe,EAAA,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,IAAI,KACN,IAAI,EAAA;QAEP,YAAY;QACZ,YAAY,IAAI,CAAC,YAAY,KAC5BA,6BAAC,QAAQ,EAAA,EAAC,IAAI,EAAC,cAAc,EAAA,aAAA,EAAa,WAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,EAAA,CAAI,CAC3F;QAEA,QAAQ;QACR,0BAA0B,KACzBA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,cAAc,EACP,aAAA,EAAA,eAAe,EAC3B,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,EAC/B,CAAA,CACH,CACe;AAEtB,CAAC;;;;"}
1
+ {"version":3,"file":"Anchor.js","sources":["../../../src/components/Anchor/Anchor.tsx"],"sourcesContent":["import React from 'react';\n\nimport { sizes } from 'Theme/modules/sizes';\nimport { createContextAwareUrl } from './utils/urlUtils';\nimport { AnchorProps } from './types';\nimport { buildClassnames } from '../../utils';\nimport styles from './Anchor.module.scss';\n\nimport { HelpIcon, LaunchIcon } from '../../icons';\n\nimport { isExternalLink } from './isExternalLink';\n\n/**\n * Anchor component for handling context-aware links with consistent functionality and styling options.\n *\n * https://www.figma.com/design/KFfBvJvYT4evKe9eiLEnwD/%F0%9F%8E%A8-Design-System?node-id=1170-63891&m=dev\n *\n * @param variant - The visual style variant ('base' or 'unstyled')\n * @param href - The URL the link points to (will be processed to be context-aware)\n * @param showHelpIcon - Whether to show a help icon on the left (defaults to false)\n * @param children - The content of the anchor\n * @param rest - All other standard anchor HTML attributes\n */\nexport const Anchor = React.memo(\n ({\n variant = 'base',\n size = 'base',\n href,\n showHelpIcon = false,\n leftIconSlot = null,\n hideExternalLinkIcon = false,\n allowedHostnames = [],\n children,\n target,\n rel,\n className,\n ...rest\n }: AnchorProps) => {\n // Process the URL to make it context-aware\n const processedHref = href ? createContextAwareUrl(href) : undefined;\n\n // Determine if link is external based on processed href\n const isExternal = processedHref ? isExternalLink(processedHref, allowedHostnames) : false;\n\n // Set security attributes for external links if not given in props\n const secureTarget = target || (isExternal ? '_blank' : undefined);\n const secureRel = rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n // Show icon when when link is external and/or will open new tab (and not overridden by variant or hideExternalLinkIcon)\n const shouldShowExternalLinkIcon =\n (isExternal || secureTarget === '_blank') && !hideExternalLinkIcon && variant === 'base';\n\n const classNames = buildClassnames([\n variant !== 'unstyled' && styles.anchor,\n variant === 'inherit' && styles.inherit,\n variant !== 'unstyled' && styles[size],\n className,\n ]);\n\n return (\n <a\n href={processedHref}\n target={secureTarget}\n rel={secureRel}\n className={classNames}\n {...rest}\n >\n {leftIconSlot}\n {showHelpIcon && !leftIconSlot && (\n <HelpIcon role=\"presentation\" data-testid=\"help-icon\" style={{ marginRight: sizes.xs }} />\n )}\n\n {children}\n {shouldShowExternalLinkIcon && (\n <LaunchIcon\n role=\"presentation\"\n data-testid=\"external-icon\"\n style={{ marginLeft: sizes.xs }}\n />\n )}\n </a>\n );\n },\n);\n"],"names":["React"],"mappings":";;;;;;;;;;AAYA;;;;;;;;;;AAUG;MACU,MAAM,GAAGA,cAAK,CAAC,IAAI,CAC9B,CAAC,EACC,OAAO,GAAG,MAAM,EAChB,IAAI,GAAG,MAAM,EACb,IAAI,EACJ,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,IAAI,EACnB,oBAAoB,GAAG,KAAK,EAC5B,gBAAgB,GAAG,EAAE,EACrB,QAAQ,EACR,MAAM,EACN,GAAG,EACH,SAAS,EACT,GAAG,IAAI,EACK,KAAI;;AAEhB,IAAA,MAAM,aAAa,GAAG,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,SAAS;;AAGpE,IAAA,MAAM,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK;;AAG1F,IAAA,MAAM,YAAY,GAAG,MAAM,KAAK,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAClE,IAAA,MAAM,SAAS,GAAG,GAAG,KAAK,UAAU,GAAG,qBAAqB,GAAG,SAAS,CAAC;;AAGzE,IAAA,MAAM,0BAA0B,GAC9B,CAAC,UAAU,IAAI,YAAY,KAAK,QAAQ,KAAK,CAAC,oBAAoB,IAAI,OAAO,KAAK,MAAM;IAE1F,MAAM,UAAU,GAAG,eAAe,CAAC;AACjC,QAAA,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM;AACvC,QAAA,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO;AACvC,QAAA,OAAO,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC;QACtC,SAAS;AACV,KAAA,CAAC;AAEF,IAAA,QACEA,cACE,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,UAAU,KACjB,IAAI,EAAA;QAEP,YAAY;QACZ,YAAY,IAAI,CAAC,YAAY,KAC5BA,6BAAC,QAAQ,EAAA,EAAC,IAAI,EAAC,cAAc,EAAA,aAAA,EAAa,WAAW,EAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,EAAA,CAAI,CAC3F;QAEA,QAAQ;QACR,0BAA0B,KACzBA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,cAAc,EACP,aAAA,EAAA,eAAe,EAC3B,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,EAC/B,CAAA,CACH,CACC;AAER,CAAC;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
4
+
5
+ ___$insertStyle("._anchor_1dmmh_1 {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n padding: 0 2px;\n}\n._anchor_1dmmh_1:focus-visible {\n outline: 0;\n border-radius: var(--radius-base);\n box-shadow: 0 0 0 2px var(--colors-secondary-blue-light);\n}\n._anchor_1dmmh_1:hover {\n text-decoration-thickness: 2px;\n}\n._anchor_1dmmh_1 svg {\n width: var(--icon-size);\n height: var(--icon-size);\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n._lg_1dmmh_23 {\n --icon-size: var(--sizes-md);\n font-family: var(--text-link-large-font-family);\n font-style: var(--text-link-large-font-style);\n font-weight: var(--text-link-large-font-weight);\n font-size: var(--text-link-large-font-size);\n line-height: var(--text-link-large-line-height);\n color: var(--text-link-large-color);\n text-decoration: var(--text-link-large-text-decoration);\n letter-spacing: var(--text-link-large-letter-spacing);\n}\n\n._md_1dmmh_35 {\n --icon-size: var(--sizes-5);\n font-family: var(--text-link-medium-font-family);\n font-style: var(--text-link-medium-font-style);\n font-weight: var(--text-link-medium-font-weight);\n font-size: var(--text-link-medium-font-size);\n line-height: var(--text-link-medium-line-height);\n color: var(--text-link-medium-color);\n text-decoration: var(--text-link-medium-text-decoration);\n letter-spacing: var(--text-link-medium-letter-spacing);\n}\n\n._base_1dmmh_47 {\n --icon-size: var(--sizes-base);\n font-family: var(--text-link-font-family);\n font-style: var(--text-link-font-style);\n font-weight: var(--text-link-font-weight);\n font-size: var(--text-link-font-size);\n line-height: var(--text-link-line-height);\n color: var(--text-link-color);\n text-decoration: var(--text-link-text-decoration);\n letter-spacing: var(--text-link-letter-spacing);\n}\n\n._sm_1dmmh_59 {\n --icon-size: var(--sizes-3);\n font-family: var(--text-link-small-font-family);\n font-style: var(--text-link-small-font-style);\n font-weight: var(--text-link-small-font-weight);\n font-size: var(--text-link-small-font-size);\n line-height: var(--text-link-small-line-height);\n color: var(--text-link-small-color);\n text-decoration: var(--text-link-small-text-decoration);\n letter-spacing: var(--text-link-small-letter-spacing);\n}\n\n._inherit_1dmmh_71 {\n font-size: inherit;\n line-height: inherit;\n}");
6
+ var styles = {"anchor":"_anchor_1dmmh_1","lg":"_lg_1dmmh_23","md":"_md_1dmmh_35","base":"_base_1dmmh_47","sm":"_sm_1dmmh_59","inherit":"_inherit_1dmmh_71"};
7
+
8
+ module.exports = styles;
9
+ //# sourceMappingURL=Anchor.module.scss.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Anchor.module.scss.cjs","sources":["../../../src/components/Anchor/Anchor.module.scss"],"sourcesContent":["@use '../../theme/scss/text.module.scss' as text;\n\n.anchor {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n padding: 0 2px;\n\n &:focus-visible {\n outline: 0;\n border-radius: var(--radius-base);\n box-shadow: 0 0 0 2px var(--colors-secondary-blue-light);\n }\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n\n svg {\n width: var(--icon-size);\n height: var(--icon-size);\n vertical-align: middle;\n flex-shrink: 0;\n }\n}\n\n.lg {\n --icon-size: var(--sizes-md);\n\n @include text.link-large;\n}\n\n.md {\n --icon-size: var(--sizes-5);\n\n @include text.link-medium;\n}\n\n.base {\n --icon-size: var(--sizes-base);\n\n @include text.link;\n}\n\n.sm {\n --icon-size: var(--sizes-3);\n\n @include text.link-small;\n}\n\n.inherit {\n font-size: inherit;\n line-height: inherit;\n}\n"],"names":[],"mappings":";;;;AAGE,eAAA,CAAA,m1EAAA;AACA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,cAAA,CAAA,IAAA,CAAA,cAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,cAAA,CAAA,SAAA,CAAA,mBAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ import insertStyle from '../../_virtual/____insertStyle.js';
2
+
3
+ insertStyle("._anchor_1dmmh_1 {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n padding: 0 2px;\n}\n._anchor_1dmmh_1:focus-visible {\n outline: 0;\n border-radius: var(--radius-base);\n box-shadow: 0 0 0 2px var(--colors-secondary-blue-light);\n}\n._anchor_1dmmh_1:hover {\n text-decoration-thickness: 2px;\n}\n._anchor_1dmmh_1 svg {\n width: var(--icon-size);\n height: var(--icon-size);\n vertical-align: middle;\n flex-shrink: 0;\n}\n\n._lg_1dmmh_23 {\n --icon-size: var(--sizes-md);\n font-family: var(--text-link-large-font-family);\n font-style: var(--text-link-large-font-style);\n font-weight: var(--text-link-large-font-weight);\n font-size: var(--text-link-large-font-size);\n line-height: var(--text-link-large-line-height);\n color: var(--text-link-large-color);\n text-decoration: var(--text-link-large-text-decoration);\n letter-spacing: var(--text-link-large-letter-spacing);\n}\n\n._md_1dmmh_35 {\n --icon-size: var(--sizes-5);\n font-family: var(--text-link-medium-font-family);\n font-style: var(--text-link-medium-font-style);\n font-weight: var(--text-link-medium-font-weight);\n font-size: var(--text-link-medium-font-size);\n line-height: var(--text-link-medium-line-height);\n color: var(--text-link-medium-color);\n text-decoration: var(--text-link-medium-text-decoration);\n letter-spacing: var(--text-link-medium-letter-spacing);\n}\n\n._base_1dmmh_47 {\n --icon-size: var(--sizes-base);\n font-family: var(--text-link-font-family);\n font-style: var(--text-link-font-style);\n font-weight: var(--text-link-font-weight);\n font-size: var(--text-link-font-size);\n line-height: var(--text-link-line-height);\n color: var(--text-link-color);\n text-decoration: var(--text-link-text-decoration);\n letter-spacing: var(--text-link-letter-spacing);\n}\n\n._sm_1dmmh_59 {\n --icon-size: var(--sizes-3);\n font-family: var(--text-link-small-font-family);\n font-style: var(--text-link-small-font-style);\n font-weight: var(--text-link-small-font-weight);\n font-size: var(--text-link-small-font-size);\n line-height: var(--text-link-small-line-height);\n color: var(--text-link-small-color);\n text-decoration: var(--text-link-small-text-decoration);\n letter-spacing: var(--text-link-small-letter-spacing);\n}\n\n._inherit_1dmmh_71 {\n font-size: inherit;\n line-height: inherit;\n}");
4
+ var styles = {"anchor":"_anchor_1dmmh_1","lg":"_lg_1dmmh_23","md":"_md_1dmmh_35","base":"_base_1dmmh_47","sm":"_sm_1dmmh_59","inherit":"_inherit_1dmmh_71"};
5
+
6
+ export { styles as default };
7
+ //# sourceMappingURL=Anchor.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Anchor.module.scss.js","sources":["../../../src/components/Anchor/Anchor.module.scss"],"sourcesContent":["@use '../../theme/scss/text.module.scss' as text;\n\n.anchor {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n padding: 0 2px;\n\n &:focus-visible {\n outline: 0;\n border-radius: var(--radius-base);\n box-shadow: 0 0 0 2px var(--colors-secondary-blue-light);\n }\n\n &:hover {\n text-decoration-thickness: 2px;\n }\n\n svg {\n width: var(--icon-size);\n height: var(--icon-size);\n vertical-align: middle;\n flex-shrink: 0;\n }\n}\n\n.lg {\n --icon-size: var(--sizes-md);\n\n @include text.link-large;\n}\n\n.md {\n --icon-size: var(--sizes-5);\n\n @include text.link-medium;\n}\n\n.base {\n --icon-size: var(--sizes-base);\n\n @include text.link;\n}\n\n.sm {\n --icon-size: var(--sizes-3);\n\n @include text.link-small;\n}\n\n.inherit {\n font-size: inherit;\n line-height: inherit;\n}\n"],"names":["___$insertStyle"],"mappings":";;AAGEA,WAAA,CAAA,m1EAAA;AACA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,IAAA,CAAA,cAAA,CAAA,IAAA,CAAA,cAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,cAAA,CAAA,SAAA,CAAA,mBAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var Text = require('../Text/Text.cjs');
5
+ var Anchor = require('../Anchor/Anchor.cjs');
6
+ var Button = require('../Button/Button.cjs');
7
+ var FlexRow = require('../Flex/FlexRow/FlexRow.cjs');
8
+ var CriticalIcon = require('../../icons/design-system/components/CriticalIcon.cjs');
9
+ var CrossIcon = require('../../icons/design-system/components/CrossIcon.cjs');
10
+ var InfoFillIcon = require('../../icons/design-system/components/InfoFillIcon.cjs');
11
+ var WarningIcon = require('../../icons/design-system/components/WarningIcon.cjs');
12
+ var buildClassnames = require('../../utils/buildClassnames.cjs');
13
+ require('uid/secure');
14
+ var SystemBanner_module = require('./SystemBanner.module.scss.cjs');
15
+
16
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
17
+
18
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
19
+
20
+ const IconMap = {
21
+ error: CriticalIcon.ReactComponent,
22
+ warning: WarningIcon.ReactComponent,
23
+ default: InfoFillIcon.ReactComponent,
24
+ };
25
+ const SystemBanner = ({ variant = 'default', message, linkText, linkHref, onClose, className, ...divProps }) => {
26
+ const Icon = IconMap[variant];
27
+ return (React__default.default.createElement(FlexRow.FlexRow, { role: "alert", alignItems: "center", justifyContent: "center", flexWrap: "nowrap", className: buildClassnames.buildClassnames([SystemBanner_module.banner, SystemBanner_module[variant], className]), ...divProps },
28
+ React__default.default.createElement(FlexRow.FlexRow, { gap: "3", alignItems: "center", justifyContent: "center", flexGrow: 1 },
29
+ React__default.default.createElement(Icon, { role: "presentation" }),
30
+ React__default.default.createElement(FlexRow.FlexRow, { gap: "xs", alignItems: "center", justifyContent: "center" },
31
+ React__default.default.createElement(Text.Text, { variant: "bodyBold" }, message),
32
+ linkText && linkHref && (React__default.default.createElement(Anchor.Anchor, { href: linkHref, size: "base" }, linkText)))),
33
+ onClose && (React__default.default.createElement(Button.Button, { variant: "flat", size: "sm", iconSlot: React__default.default.createElement(CrossIcon.ReactComponent, null), onClick: onClose, "aria-label": "Close banner", className: SystemBanner_module.closeButton }))));
34
+ };
35
+
36
+ exports.SystemBanner = SystemBanner;
37
+ //# sourceMappingURL=SystemBanner.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemBanner.cjs","sources":["../../../src/components/SystemBanner/SystemBanner.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { IconComponent } from 'src/icons/types';\nimport { Text } from '../Text';\nimport { Anchor } from '../Anchor';\nimport { Button } from '../Button';\nimport { FlexRow } from '../Flex/FlexRow';\nimport { CriticalIcon, WarningIcon, InfoFillIcon, CrossIcon } from '../../icons';\nimport { buildClassnames } from '../../utils';\nimport { SystemBannerProps, SystemBannerVariant } from './types';\n\nimport styles from './SystemBanner.module.scss';\n\nconst IconMap: Record<SystemBannerVariant, IconComponent> = {\n error: CriticalIcon,\n warning: WarningIcon,\n default: InfoFillIcon,\n};\n\nexport const SystemBanner = ({\n variant = 'default',\n message,\n linkText,\n linkHref,\n onClose,\n className,\n ...divProps\n}: SystemBannerProps) => {\n const Icon = IconMap[variant];\n\n return (\n <FlexRow\n role=\"alert\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexWrap=\"nowrap\"\n className={buildClassnames([styles.banner, styles[variant], className])}\n {...divProps}\n >\n <FlexRow gap=\"3\" alignItems=\"center\" justifyContent=\"center\" flexGrow={1}>\n <Icon role=\"presentation\" />\n <FlexRow gap=\"xs\" alignItems=\"center\" justifyContent=\"center\">\n <Text variant=\"bodyBold\">{message}</Text>\n {linkText && linkHref && (\n <Anchor href={linkHref} size=\"base\">\n {linkText}\n </Anchor>\n )}\n </FlexRow>\n </FlexRow>\n {onClose && (\n <Button\n variant=\"flat\"\n size=\"sm\"\n iconSlot={<CrossIcon />}\n onClick={onClose}\n aria-label=\"Close banner\"\n className={styles.closeButton}\n />\n )}\n </FlexRow>\n );\n};\n"],"names":["CriticalIcon","WarningIcon","InfoFillIcon","React","FlexRow","buildClassnames","styles","Text","Anchor","Button","CrossIcon"],"mappings":";;;;;;;;;;;;;;;;;;;AAaA,MAAM,OAAO,GAA+C;AAC1D,IAAA,KAAK,EAAEA,2BAAY;AACnB,IAAA,OAAO,EAAEC,0BAAW;AACpB,IAAA,OAAO,EAAEC,2BAAY;CACtB;AAEY,MAAA,YAAY,GAAG,CAAC,EAC3B,OAAO,GAAG,SAAS,EACnB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,QAAQ,EACO,KAAI;AACtB,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;AAE7B,IAAA,QACEC,sBAAC,CAAA,aAAA,CAAAC,eAAO,EACN,EAAA,IAAI,EAAC,OAAO,EACZ,UAAU,EAAC,QAAQ,EACnB,cAAc,EAAC,QAAQ,EACvB,QAAQ,EAAC,QAAQ,EACjB,SAAS,EAAEC,+BAAe,CAAC,CAACC,mBAAM,CAAC,MAAM,EAAEA,mBAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,KACnE,QAAQ,EAAA;AAEZ,QAAAH,sBAAA,CAAA,aAAA,CAACC,eAAO,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAA;AACtE,YAAAD,sBAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,cAAc,EAAG,CAAA;AAC5B,YAAAA,sBAAA,CAAA,aAAA,CAACC,eAAO,EAAA,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAA;AAC3D,gBAAAD,sBAAA,CAAA,aAAA,CAACI,SAAI,EAAC,EAAA,OAAO,EAAC,UAAU,EAAA,EAAE,OAAO,CAAQ;AACxC,gBAAA,QAAQ,IAAI,QAAQ,KACnBJ,sBAAC,CAAA,aAAA,CAAAK,aAAM,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAA,EAChC,QAAQ,CACF,CACV,CACO,CACF;AACT,QAAA,OAAO,KACNL,sBAAC,CAAA,aAAA,CAAAM,aAAM,IACL,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,IAAI,EACT,QAAQ,EAAEN,sBAAC,CAAA,aAAA,CAAAO,wBAAS,EAAG,IAAA,CAAA,EACvB,OAAO,EAAE,OAAO,EAAA,YAAA,EACL,cAAc,EACzB,SAAS,EAAEJ,mBAAM,CAAC,WAAW,EAAA,CAC7B,CACH,CACO;AAEd;;;;"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { SystemBannerProps } from './types';
3
+ export declare const SystemBanner: ({ variant, message, linkText, linkHref, onClose, className, ...divProps }: SystemBannerProps) => React.JSX.Element;
@@ -0,0 +1,31 @@
1
+ import React__default from 'react';
2
+ import { Text } from '../Text/Text.js';
3
+ import { Anchor } from '../Anchor/Anchor.js';
4
+ import { Button } from '../Button/Button.js';
5
+ import { FlexRow } from '../Flex/FlexRow/FlexRow.js';
6
+ import { ReactComponent as CriticalIcon } from '../../icons/design-system/components/CriticalIcon.js';
7
+ import { ReactComponent as CrossIcon } from '../../icons/design-system/components/CrossIcon.js';
8
+ import { ReactComponent as InfoFillIcon } from '../../icons/design-system/components/InfoFillIcon.js';
9
+ import { ReactComponent as WarningIcon } from '../../icons/design-system/components/WarningIcon.js';
10
+ import { buildClassnames } from '../../utils/buildClassnames.js';
11
+ import 'uid/secure';
12
+ import styles from './SystemBanner.module.scss.js';
13
+
14
+ const IconMap = {
15
+ error: CriticalIcon,
16
+ warning: WarningIcon,
17
+ default: InfoFillIcon,
18
+ };
19
+ const SystemBanner = ({ variant = 'default', message, linkText, linkHref, onClose, className, ...divProps }) => {
20
+ const Icon = IconMap[variant];
21
+ return (React__default.createElement(FlexRow, { role: "alert", alignItems: "center", justifyContent: "center", flexWrap: "nowrap", className: buildClassnames([styles.banner, styles[variant], className]), ...divProps },
22
+ React__default.createElement(FlexRow, { gap: "3", alignItems: "center", justifyContent: "center", flexGrow: 1 },
23
+ React__default.createElement(Icon, { role: "presentation" }),
24
+ React__default.createElement(FlexRow, { gap: "xs", alignItems: "center", justifyContent: "center" },
25
+ React__default.createElement(Text, { variant: "bodyBold" }, message),
26
+ linkText && linkHref && (React__default.createElement(Anchor, { href: linkHref, size: "base" }, linkText)))),
27
+ onClose && (React__default.createElement(Button, { variant: "flat", size: "sm", iconSlot: React__default.createElement(CrossIcon, null), onClick: onClose, "aria-label": "Close banner", className: styles.closeButton }))));
28
+ };
29
+
30
+ export { SystemBanner };
31
+ //# sourceMappingURL=SystemBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemBanner.js","sources":["../../../src/components/SystemBanner/SystemBanner.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { IconComponent } from 'src/icons/types';\nimport { Text } from '../Text';\nimport { Anchor } from '../Anchor';\nimport { Button } from '../Button';\nimport { FlexRow } from '../Flex/FlexRow';\nimport { CriticalIcon, WarningIcon, InfoFillIcon, CrossIcon } from '../../icons';\nimport { buildClassnames } from '../../utils';\nimport { SystemBannerProps, SystemBannerVariant } from './types';\n\nimport styles from './SystemBanner.module.scss';\n\nconst IconMap: Record<SystemBannerVariant, IconComponent> = {\n error: CriticalIcon,\n warning: WarningIcon,\n default: InfoFillIcon,\n};\n\nexport const SystemBanner = ({\n variant = 'default',\n message,\n linkText,\n linkHref,\n onClose,\n className,\n ...divProps\n}: SystemBannerProps) => {\n const Icon = IconMap[variant];\n\n return (\n <FlexRow\n role=\"alert\"\n alignItems=\"center\"\n justifyContent=\"center\"\n flexWrap=\"nowrap\"\n className={buildClassnames([styles.banner, styles[variant], className])}\n {...divProps}\n >\n <FlexRow gap=\"3\" alignItems=\"center\" justifyContent=\"center\" flexGrow={1}>\n <Icon role=\"presentation\" />\n <FlexRow gap=\"xs\" alignItems=\"center\" justifyContent=\"center\">\n <Text variant=\"bodyBold\">{message}</Text>\n {linkText && linkHref && (\n <Anchor href={linkHref} size=\"base\">\n {linkText}\n </Anchor>\n )}\n </FlexRow>\n </FlexRow>\n {onClose && (\n <Button\n variant=\"flat\"\n size=\"sm\"\n iconSlot={<CrossIcon />}\n onClick={onClose}\n aria-label=\"Close banner\"\n className={styles.closeButton}\n />\n )}\n </FlexRow>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,OAAO,GAA+C;AAC1D,IAAA,KAAK,EAAE,YAAY;AACnB,IAAA,OAAO,EAAE,WAAW;AACpB,IAAA,OAAO,EAAE,YAAY;CACtB;AAEY,MAAA,YAAY,GAAG,CAAC,EAC3B,OAAO,GAAG,SAAS,EACnB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,GAAG,QAAQ,EACO,KAAI;AACtB,IAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;AAE7B,IAAA,QACEA,cAAC,CAAA,aAAA,CAAA,OAAO,EACN,EAAA,IAAI,EAAC,OAAO,EACZ,UAAU,EAAC,QAAQ,EACnB,cAAc,EAAC,QAAQ,EACvB,QAAQ,EAAC,QAAQ,EACjB,SAAS,EAAE,eAAe,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,KACnE,QAAQ,EAAA;AAEZ,QAAAA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAC,EAAA,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAA;AACtE,YAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,cAAc,EAAG,CAAA;AAC5B,YAAAA,cAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EAAC,GAAG,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,QAAQ,EAAA;AAC3D,gBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAC,EAAA,OAAO,EAAC,UAAU,EAAA,EAAE,OAAO,CAAQ;AACxC,gBAAA,QAAQ,IAAI,QAAQ,KACnBA,cAAC,CAAA,aAAA,CAAA,MAAM,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,EAAA,EAChC,QAAQ,CACF,CACV,CACO,CACF;AACT,QAAA,OAAO,KACNA,cAAC,CAAA,aAAA,CAAA,MAAM,IACL,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,IAAI,EACT,QAAQ,EAAEA,cAAC,CAAA,aAAA,CAAA,SAAS,EAAG,IAAA,CAAA,EACvB,OAAO,EAAE,OAAO,EAAA,YAAA,EACL,cAAc,EACzB,SAAS,EAAE,MAAM,CAAC,WAAW,EAAA,CAC7B,CACH,CACO;AAEd;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var ___$insertStyle = require('../../_virtual/____insertStyle.cjs');
4
+
5
+ ___$insertStyle("._banner_vx0y5_1 {\n padding: var(--sizes-sm);\n height: var(--sizes-xl);\n}\n\n._banner_vx0y5_1 span,\n._banner_vx0y5_1 svg,\n._banner_vx0y5_1 a {\n color: var(--banner-text-color);\n}\n\n._closeButton_vx0y5_12 {\n margin-left: auto;\n}\n\n._default_vx0y5_16 {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-blue-base);\n}\n._default_vx0y5_16 ._closeButton_vx0y5_12:hover,\n._default_vx0y5_16 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n}\n\n._error_vx0y5_25 {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-red-dark);\n}\n._error_vx0y5_25 ._closeButton_vx0y5_12:hover,\n._error_vx0y5_25 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n}\n\n._warning_vx0y5_34 {\n --banner-text-color: var(--colors-neutral-ink-base);\n background-color: var(--colors-secondary-yellow-base);\n}\n._warning_vx0y5_34 ._closeButton_vx0y5_12:hover,\n._warning_vx0y5_34 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, var(--colors-neutral-ink-dark) 15%, transparent);\n}");
6
+ var styles = {"banner":"_banner_vx0y5_1","closeButton":"_closeButton_vx0y5_12","default":"_default_vx0y5_16","error":"_error_vx0y5_25","warning":"_warning_vx0y5_34"};
7
+
8
+ module.exports = styles;
9
+ //# sourceMappingURL=SystemBanner.module.scss.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemBanner.module.scss.cjs","sources":["../../../src/components/SystemBanner/SystemBanner.module.scss"],"sourcesContent":[".banner {\n padding: var(--sizes-sm);\n height: var(--sizes-xl);\n}\n\n.banner span,\n.banner svg,\n.banner a {\n color: var(--banner-text-color);\n}\n\n.closeButton {\n margin-left: auto;\n}\n\n.default {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-blue-base);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n }\n}\n\n.error {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-red-dark);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n }\n}\n\n.warning {\n --banner-text-color: var(--colors-neutral-ink-base);\n background-color: var(--colors-secondary-yellow-base);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, var(--colors-neutral-ink-dark) 15%, transparent);\n }\n}\n"],"names":[],"mappings":";;;;AACE,eAAA,CAAA,qsCAAA;AACA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,uBAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,mBAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ import insertStyle from '../../_virtual/____insertStyle.js';
2
+
3
+ insertStyle("._banner_vx0y5_1 {\n padding: var(--sizes-sm);\n height: var(--sizes-xl);\n}\n\n._banner_vx0y5_1 span,\n._banner_vx0y5_1 svg,\n._banner_vx0y5_1 a {\n color: var(--banner-text-color);\n}\n\n._closeButton_vx0y5_12 {\n margin-left: auto;\n}\n\n._default_vx0y5_16 {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-blue-base);\n}\n._default_vx0y5_16 ._closeButton_vx0y5_12:hover,\n._default_vx0y5_16 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n}\n\n._error_vx0y5_25 {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-red-dark);\n}\n._error_vx0y5_25 ._closeButton_vx0y5_12:hover,\n._error_vx0y5_25 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n}\n\n._warning_vx0y5_34 {\n --banner-text-color: var(--colors-neutral-ink-base);\n background-color: var(--colors-secondary-yellow-base);\n}\n._warning_vx0y5_34 ._closeButton_vx0y5_12:hover,\n._warning_vx0y5_34 ._closeButton_vx0y5_12:focus-visible {\n background-color: color-mix(in srgb, var(--colors-neutral-ink-dark) 15%, transparent);\n}");
4
+ var styles = {"banner":"_banner_vx0y5_1","closeButton":"_closeButton_vx0y5_12","default":"_default_vx0y5_16","error":"_error_vx0y5_25","warning":"_warning_vx0y5_34"};
5
+
6
+ export { styles as default };
7
+ //# sourceMappingURL=SystemBanner.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SystemBanner.module.scss.js","sources":["../../../src/components/SystemBanner/SystemBanner.module.scss"],"sourcesContent":[".banner {\n padding: var(--sizes-sm);\n height: var(--sizes-xl);\n}\n\n.banner span,\n.banner svg,\n.banner a {\n color: var(--banner-text-color);\n}\n\n.closeButton {\n margin-left: auto;\n}\n\n.default {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-blue-base);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n }\n}\n\n.error {\n --banner-text-color: var(--colors-neutral-grey-lightest);\n background-color: var(--colors-secondary-red-dark);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, white 15%, transparent);\n }\n}\n\n.warning {\n --banner-text-color: var(--colors-neutral-ink-base);\n background-color: var(--colors-secondary-yellow-base);\n\n .closeButton:hover,\n .closeButton:focus-visible {\n background-color: color-mix(in srgb, var(--colors-neutral-ink-dark) 15%, transparent);\n }\n}\n"],"names":["___$insertStyle"],"mappings":";;AACEA,WAAA,CAAA,qsCAAA;AACA,aAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,uBAAA,CAAA,SAAA,CAAA,mBAAA,CAAA,OAAA,CAAA,iBAAA,CAAA,SAAA,CAAA,mBAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ export { SystemBanner } from './SystemBanner';
2
+ export type { SystemBannerProps, SystemBannerVariant } from './types';
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export type SystemBannerVariant = 'default' | 'error' | 'warning';
3
+ export type SystemBannerProps = React.HTMLAttributes<HTMLDivElement> & {
4
+ variant?: SystemBannerVariant;
5
+ message: string;
6
+ linkText?: string;
7
+ linkHref?: string;
8
+ onClose?: () => void;
9
+ };
@@ -3,38 +3,21 @@
3
3
  var reactTransitionGroup = require('react-transition-group');
4
4
  var React = require('react');
5
5
  var reactDom = require('react-dom');
6
+ var styled = require('./components/styled.cjs');
6
7
  var Toast = require('./components/Toast.cjs');
7
- var FlexCol = require('../Flex/FlexCol/FlexCol.cjs');
8
- var toastsLayout_module = require('./toastsLayout.module.scss.cjs');
9
8
 
10
9
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
11
10
 
12
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
13
12
 
14
- /**
15
- * ToastsLayout displays toast notifications in a fixed position at the bottom of the screen.
16
- * Toasts are rendered in a portal and support animations, auto-dismissal, and custom CTAs.
17
- *
18
- * @example
19
- * ```tsx
20
- * <ToastsLayout
21
- * toasts={[{ id: '1', type: 'success', message: 'Saved!' }]}
22
- * onClose={(id) => removeToast(id)}
23
- * max={3}
24
- * />
25
- * ```
26
- */
27
- const ToastsLayout = ({ e2eClassName, toasts, minWidth = '50vw', max = 3, portalTarget = document.body, onClose, }) => {
13
+ const ToastsLayout = ({ className, e2eClassName, toasts, minWidth = '50vw', max = 3, onClose, }) => {
28
14
  React.useEffect(() => {
29
- if (max && toasts.length > max) {
30
- onClose(toasts[0].id);
31
- }
15
+ if (max && toasts.length > max)
16
+ onClose(toasts[0].key);
32
17
  }, [toasts, max, onClose]);
33
- const containerAriaLabel = `${toasts.length} notification${toasts.length !== 1 ? 's' : ''}.`;
34
- const content = (React__default.default.createElement(FlexCol.FlexCol, { className: toastsLayout_module.toastsLayoutContainer, alignItems: "center", gap: 4, role: "region", "aria-label": containerAriaLabel },
35
- React__default.default.createElement(reactTransitionGroup.TransitionGroup, { component: null }, [...toasts].reverse().map((toast, index) => (React__default.default.createElement(reactTransitionGroup.CSSTransition, { key: toast.id, timeout: 225, classNames: "veeqo-components-toast" },
36
- React__default.default.createElement(Toast.Toast, { e2eClassName: e2eClassName, minWidth: minWidth, last: index === toasts.length - 1, onClose: () => onClose(toast.id), ...toast })))))));
37
- return reactDom.createPortal(content, portalTarget);
18
+ return reactDom.createPortal(React__default.default.createElement(styled.ToastsLayoutContainer, { direction: "vertical", alignX: "center", spacing: 4 },
19
+ React__default.default.createElement(reactTransitionGroup.TransitionGroup, { component: null }, [...toasts].reverse().map((toast, index) => (React__default.default.createElement(reactTransitionGroup.CSSTransition, { key: toast.key, timeout: 500, classNames: "veeqo-components-toast" },
20
+ React__default.default.createElement(Toast.Toast, { className: className, e2eClassName: e2eClassName, minWidth: minWidth, last: index === toasts.length - 1, onClose: () => onClose(toast.key), ...toast })))))), document.body);
38
21
  };
39
22
 
40
23
  exports.ToastsLayout = ToastsLayout;
@@ -1 +1 @@
1
- {"version":3,"file":"ToastsLayout.cjs","sources":["../../../src/components/ToastsLayout/ToastsLayout.tsx"],"sourcesContent":["import { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport React, { useEffect, FC } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastsLayoutPropTypes } from './types';\nimport { Toast } from './components/Toast';\nimport { FlexCol } from '../Flex/FlexCol';\nimport styles from './toastsLayout.module.scss';\n\n/**\n * ToastsLayout displays toast notifications in a fixed position at the bottom of the screen.\n * Toasts are rendered in a portal and support animations, auto-dismissal, and custom CTAs.\n *\n * @example\n * ```tsx\n * <ToastsLayout\n * toasts={[{ id: '1', type: 'success', message: 'Saved!' }]}\n * onClose={(id) => removeToast(id)}\n * max={3}\n * />\n * ```\n */\nexport const ToastsLayout: FC<ToastsLayoutPropTypes> = ({\n e2eClassName,\n toasts,\n minWidth = '50vw',\n max = 3,\n portalTarget = document.body,\n onClose,\n}) => {\n useEffect(() => {\n if (max && toasts.length > max) {\n onClose(toasts[0].id);\n }\n }, [toasts, max, onClose]);\n\n const containerAriaLabel = `${toasts.length} notification${toasts.length !== 1 ? 's' : ''}.`;\n\n const content = (\n <FlexCol\n className={styles.toastsLayoutContainer}\n alignItems=\"center\"\n gap={4}\n role=\"region\"\n aria-label={containerAriaLabel}\n >\n <TransitionGroup component={null}>\n {[...toasts].reverse().map((toast, index) => (\n <CSSTransition key={toast.id} timeout={225} classNames=\"veeqo-components-toast\">\n <Toast\n e2eClassName={e2eClassName}\n minWidth={minWidth}\n last={index === toasts.length - 1}\n onClose={() => onClose(toast.id)}\n {...toast}\n />\n </CSSTransition>\n ))}\n </TransitionGroup>\n </FlexCol>\n );\n\n return createPortal(content, portalTarget);\n};\n"],"names":["useEffect","React","FlexCol","styles","TransitionGroup","CSSTransition","Toast","createPortal"],"mappings":";;;;;;;;;;;;;AAQA;;;;;;;;;;;;AAYG;AACU,MAAA,YAAY,GAA8B,CAAC,EACtD,YAAY,EACZ,MAAM,EACN,QAAQ,GAAG,MAAM,EACjB,GAAG,GAAG,CAAC,EACP,YAAY,GAAG,QAAQ,CAAC,IAAI,EAC5B,OAAO,GACR,KAAI;IACHA,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB;KACF,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,kBAAkB,GAAG,CAAG,EAAA,MAAM,CAAC,MAAM,CAAA,aAAA,EAAgB,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAA,CAAG;IAE5F,MAAM,OAAO,IACXC,sBAAC,CAAA,aAAA,CAAAC,eAAO,IACN,SAAS,EAAEC,mBAAM,CAAC,qBAAqB,EACvC,UAAU,EAAC,QAAQ,EACnB,GAAG,EAAE,CAAC,EACN,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,kBAAkB,EAAA;AAE9B,QAAAF,sBAAA,CAAA,aAAA,CAACG,oCAAe,EAAC,EAAA,SAAS,EAAE,IAAI,IAC7B,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MACtCH,qCAACI,kCAAa,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,wBAAwB,EAAA;AAC7E,YAAAJ,sBAAA,CAAA,aAAA,CAACK,WAAK,EACJ,EAAA,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EACjC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAC5B,GAAA,KAAK,GACT,CACY,CACjB,CAAC,CACc,CACV,CACX;AAED,IAAA,OAAOC,qBAAY,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C;;;;"}
1
+ {"version":3,"file":"ToastsLayout.cjs","sources":["../../../src/components/ToastsLayout/ToastsLayout.tsx"],"sourcesContent":["import { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport React, { useEffect, FC } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastsLayoutPropTypes } from './types';\nimport { ToastsLayoutContainer } from './components/styled';\nimport { Toast } from './components/Toast';\n\nexport const ToastsLayout: FC<ToastsLayoutPropTypes> = ({\n className,\n e2eClassName,\n toasts,\n minWidth = '50vw',\n max = 3,\n onClose,\n}) => {\n useEffect(() => {\n if (max && toasts.length > max) onClose(toasts[0].key);\n }, [toasts, max, onClose]);\n\n return createPortal(\n <ToastsLayoutContainer direction=\"vertical\" alignX=\"center\" spacing={4}>\n <TransitionGroup component={null}>\n {[...toasts].reverse().map((toast, index) => (\n <CSSTransition key={toast.key} timeout={500} classNames=\"veeqo-components-toast\">\n <Toast\n className={className}\n e2eClassName={e2eClassName}\n minWidth={minWidth}\n last={index === toasts.length - 1}\n onClose={() => onClose(toast.key)}\n {...toast}\n />\n </CSSTransition>\n ))}\n </TransitionGroup>\n </ToastsLayoutContainer>,\n document.body,\n );\n};\n"],"names":["useEffect","createPortal","React","ToastsLayoutContainer","TransitionGroup","CSSTransition","Toast"],"mappings":";;;;;;;;;;;;MAOa,YAAY,GAA8B,CAAC,EACtD,SAAS,EACT,YAAY,EACZ,MAAM,EACN,QAAQ,GAAG,MAAM,EACjB,GAAG,GAAG,CAAC,EACP,OAAO,GACR,KAAI;IACHA,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACvD,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAE1B,IAAA,OAAOC,qBAAY,CACjBC,sBAAC,CAAA,aAAA,CAAAC,4BAAqB,IAAC,SAAS,EAAC,UAAU,EAAC,MAAM,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,EAAA;AACpE,QAAAD,sBAAA,CAAA,aAAA,CAACE,oCAAe,EAAC,EAAA,SAAS,EAAE,IAAI,IAC7B,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MACtCF,qCAACG,kCAAa,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,wBAAwB,EAAA;YAC9EH,sBAAC,CAAA,aAAA,CAAAI,WAAK,IACJ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EACjC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAC7B,GAAA,KAAK,GACT,CACY,CACjB,CAAC,CACc,CACI,EACxB,QAAQ,CAAC,IAAI,CACd;AACH;;;;"}
@@ -1,16 +1,3 @@
1
1
  import { FC } from 'react';
2
2
  import { ToastsLayoutPropTypes } from './types';
3
- /**
4
- * ToastsLayout displays toast notifications in a fixed position at the bottom of the screen.
5
- * Toasts are rendered in a portal and support animations, auto-dismissal, and custom CTAs.
6
- *
7
- * @example
8
- * ```tsx
9
- * <ToastsLayout
10
- * toasts={[{ id: '1', type: 'success', message: 'Saved!' }]}
11
- * onClose={(id) => removeToast(id)}
12
- * max={3}
13
- * />
14
- * ```
15
- */
16
3
  export declare const ToastsLayout: FC<ToastsLayoutPropTypes>;
@@ -1,34 +1,17 @@
1
1
  import { TransitionGroup, CSSTransition } from 'react-transition-group';
2
2
  import React__default, { useEffect } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
+ import { ToastsLayoutContainer } from './components/styled.js';
4
5
  import { Toast } from './components/Toast.js';
5
- import { FlexCol } from '../Flex/FlexCol/FlexCol.js';
6
- import styles from './toastsLayout.module.scss.js';
7
6
 
8
- /**
9
- * ToastsLayout displays toast notifications in a fixed position at the bottom of the screen.
10
- * Toasts are rendered in a portal and support animations, auto-dismissal, and custom CTAs.
11
- *
12
- * @example
13
- * ```tsx
14
- * <ToastsLayout
15
- * toasts={[{ id: '1', type: 'success', message: 'Saved!' }]}
16
- * onClose={(id) => removeToast(id)}
17
- * max={3}
18
- * />
19
- * ```
20
- */
21
- const ToastsLayout = ({ e2eClassName, toasts, minWidth = '50vw', max = 3, portalTarget = document.body, onClose, }) => {
7
+ const ToastsLayout = ({ className, e2eClassName, toasts, minWidth = '50vw', max = 3, onClose, }) => {
22
8
  useEffect(() => {
23
- if (max && toasts.length > max) {
24
- onClose(toasts[0].id);
25
- }
9
+ if (max && toasts.length > max)
10
+ onClose(toasts[0].key);
26
11
  }, [toasts, max, onClose]);
27
- const containerAriaLabel = `${toasts.length} notification${toasts.length !== 1 ? 's' : ''}.`;
28
- const content = (React__default.createElement(FlexCol, { className: styles.toastsLayoutContainer, alignItems: "center", gap: 4, role: "region", "aria-label": containerAriaLabel },
29
- React__default.createElement(TransitionGroup, { component: null }, [...toasts].reverse().map((toast, index) => (React__default.createElement(CSSTransition, { key: toast.id, timeout: 225, classNames: "veeqo-components-toast" },
30
- React__default.createElement(Toast, { e2eClassName: e2eClassName, minWidth: minWidth, last: index === toasts.length - 1, onClose: () => onClose(toast.id), ...toast })))))));
31
- return createPortal(content, portalTarget);
12
+ return createPortal(React__default.createElement(ToastsLayoutContainer, { direction: "vertical", alignX: "center", spacing: 4 },
13
+ React__default.createElement(TransitionGroup, { component: null }, [...toasts].reverse().map((toast, index) => (React__default.createElement(CSSTransition, { key: toast.key, timeout: 500, classNames: "veeqo-components-toast" },
14
+ React__default.createElement(Toast, { className: className, e2eClassName: e2eClassName, minWidth: minWidth, last: index === toasts.length - 1, onClose: () => onClose(toast.key), ...toast })))))), document.body);
32
15
  };
33
16
 
34
17
  export { ToastsLayout };
@@ -1 +1 @@
1
- {"version":3,"file":"ToastsLayout.js","sources":["../../../src/components/ToastsLayout/ToastsLayout.tsx"],"sourcesContent":["import { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport React, { useEffect, FC } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastsLayoutPropTypes } from './types';\nimport { Toast } from './components/Toast';\nimport { FlexCol } from '../Flex/FlexCol';\nimport styles from './toastsLayout.module.scss';\n\n/**\n * ToastsLayout displays toast notifications in a fixed position at the bottom of the screen.\n * Toasts are rendered in a portal and support animations, auto-dismissal, and custom CTAs.\n *\n * @example\n * ```tsx\n * <ToastsLayout\n * toasts={[{ id: '1', type: 'success', message: 'Saved!' }]}\n * onClose={(id) => removeToast(id)}\n * max={3}\n * />\n * ```\n */\nexport const ToastsLayout: FC<ToastsLayoutPropTypes> = ({\n e2eClassName,\n toasts,\n minWidth = '50vw',\n max = 3,\n portalTarget = document.body,\n onClose,\n}) => {\n useEffect(() => {\n if (max && toasts.length > max) {\n onClose(toasts[0].id);\n }\n }, [toasts, max, onClose]);\n\n const containerAriaLabel = `${toasts.length} notification${toasts.length !== 1 ? 's' : ''}.`;\n\n const content = (\n <FlexCol\n className={styles.toastsLayoutContainer}\n alignItems=\"center\"\n gap={4}\n role=\"region\"\n aria-label={containerAriaLabel}\n >\n <TransitionGroup component={null}>\n {[...toasts].reverse().map((toast, index) => (\n <CSSTransition key={toast.id} timeout={225} classNames=\"veeqo-components-toast\">\n <Toast\n e2eClassName={e2eClassName}\n minWidth={minWidth}\n last={index === toasts.length - 1}\n onClose={() => onClose(toast.id)}\n {...toast}\n />\n </CSSTransition>\n ))}\n </TransitionGroup>\n </FlexCol>\n );\n\n return createPortal(content, portalTarget);\n};\n"],"names":["React"],"mappings":";;;;;;;AAQA;;;;;;;;;;;;AAYG;AACU,MAAA,YAAY,GAA8B,CAAC,EACtD,YAAY,EACZ,MAAM,EACN,QAAQ,GAAG,MAAM,EACjB,GAAG,GAAG,CAAC,EACP,YAAY,GAAG,QAAQ,CAAC,IAAI,EAC5B,OAAO,GACR,KAAI;IACH,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YAC9B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtB;KACF,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,kBAAkB,GAAG,CAAG,EAAA,MAAM,CAAC,MAAM,CAAA,aAAA,EAAgB,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAA,CAAA,CAAG;IAE5F,MAAM,OAAO,IACXA,cAAC,CAAA,aAAA,CAAA,OAAO,IACN,SAAS,EAAE,MAAM,CAAC,qBAAqB,EACvC,UAAU,EAAC,QAAQ,EACnB,GAAG,EAAE,CAAC,EACN,IAAI,EAAC,QAAQ,EAAA,YAAA,EACD,kBAAkB,EAAA;AAE9B,QAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAC,EAAA,SAAS,EAAE,IAAI,IAC7B,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MACtCA,6BAAC,aAAa,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,wBAAwB,EAAA;AAC7E,YAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EACJ,EAAA,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EACjC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAC5B,GAAA,KAAK,GACT,CACY,CACjB,CAAC,CACc,CACV,CACX;AAED,IAAA,OAAO,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC;AAC5C;;;;"}
1
+ {"version":3,"file":"ToastsLayout.js","sources":["../../../src/components/ToastsLayout/ToastsLayout.tsx"],"sourcesContent":["import { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport React, { useEffect, FC } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ToastsLayoutPropTypes } from './types';\nimport { ToastsLayoutContainer } from './components/styled';\nimport { Toast } from './components/Toast';\n\nexport const ToastsLayout: FC<ToastsLayoutPropTypes> = ({\n className,\n e2eClassName,\n toasts,\n minWidth = '50vw',\n max = 3,\n onClose,\n}) => {\n useEffect(() => {\n if (max && toasts.length > max) onClose(toasts[0].key);\n }, [toasts, max, onClose]);\n\n return createPortal(\n <ToastsLayoutContainer direction=\"vertical\" alignX=\"center\" spacing={4}>\n <TransitionGroup component={null}>\n {[...toasts].reverse().map((toast, index) => (\n <CSSTransition key={toast.key} timeout={500} classNames=\"veeqo-components-toast\">\n <Toast\n className={className}\n e2eClassName={e2eClassName}\n minWidth={minWidth}\n last={index === toasts.length - 1}\n onClose={() => onClose(toast.key)}\n {...toast}\n />\n </CSSTransition>\n ))}\n </TransitionGroup>\n </ToastsLayoutContainer>,\n document.body,\n );\n};\n"],"names":["React"],"mappings":";;;;;;MAOa,YAAY,GAA8B,CAAC,EACtD,SAAS,EACT,YAAY,EACZ,MAAM,EACN,QAAQ,GAAG,MAAM,EACjB,GAAG,GAAG,CAAC,EACP,OAAO,GACR,KAAI;IACH,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KACvD,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAE1B,IAAA,OAAO,YAAY,CACjBA,cAAC,CAAA,aAAA,CAAA,qBAAqB,IAAC,SAAS,EAAC,UAAU,EAAC,MAAM,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,EAAA;AACpE,QAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAC,EAAA,SAAS,EAAE,IAAI,IAC7B,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MACtCA,6BAAC,aAAa,EAAA,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAC,wBAAwB,EAAA;YAC9EA,cAAC,CAAA,aAAA,CAAA,KAAK,IACJ,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EACjC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAC7B,GAAA,KAAK,GACT,CACY,CACjB,CAAC,CACc,CACI,EACxB,QAAQ,CAAC,IAAI,CACd;AACH;;;;"}
@@ -1,37 +1,52 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FlexCol = require('../../Flex/FlexCol/FlexCol.cjs');
5
- var FlexRow = require('../../Flex/FlexRow/FlexRow.cjs');
6
- var Text = require('../../Text/Text.cjs');
4
+ var colors = require('../../../theme/modules/colors.cjs');
5
+ var styled = require('./styled.cjs');
7
6
  var buildClassnames = require('../../../utils/buildClassnames.cjs');
8
7
  var Button = require('../../Button/Button.cjs');
8
+ var AttentionIcon = require('../../../icons/design-system/components/AttentionIcon.cjs');
9
9
  var CrossIcon = require('../../../icons/design-system/components/CrossIcon.cjs');
10
- var toast_module = require('./toast.module.scss.cjs');
11
- var utils = require('./utils.cjs');
12
- var constants = require('./constants.cjs');
10
+ var InfoIcon = require('../../../icons/design-system/components/InfoIcon.cjs');
11
+ var MergeIcon = require('../../../icons/design-system/components/MergeIcon.cjs');
12
+ var SuccessIcon = require('../../../icons/design-system/components/SuccessIcon.cjs');
13
13
 
14
14
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
15
 
16
16
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
17
 
18
- const Toast = ({ e2eClassName, type, iconSlot, message, subMessage, last, minWidth, ctaSlot, onClose, }) => {
19
- var _a;
20
- const e2eClassNames = utils.generateToastClassNames(e2eClassName);
21
- // Default to Info icon
22
- const { accentColor, icon } = (_a = constants.ToastTypeConfig[type]) !== null && _a !== undefined ? _a : constants.ToastTypeConfig.info;
23
- const resolvedIcon = iconSlot !== null && iconSlot !== undefined ? iconSlot : icon;
24
- return (React__default.default.createElement(FlexRow.FlexRow, { className: buildClassnames.buildClassnames([toast_module.toastContainer, e2eClassNames === null || e2eClassNames === undefined ? undefined : e2eClassNames.container]), alignItems: "center", style: {
25
- '--toast-min-width': minWidth !== null && minWidth !== undefined ? minWidth : undefined,
26
- '--toast-status-color': accentColor,
27
- }, "data-toast-last": last !== null && last !== undefined ? last : undefined, gap: "base", role: "alert" },
28
- resolvedIcon && (React__default.default.createElement(FlexRow.FlexRow, { className: buildClassnames.buildClassnames([toast_module.iconWrapper, e2eClassNames.icon]), alignItems: "center", justifyContent: "center" }, resolvedIcon)),
29
- React__default.default.createElement(FlexRow.FlexRow, { alignItems: "center", flexGrow: 1, justifyContent: "space-between" },
30
- React__default.default.createElement(FlexCol.FlexCol, { gap: "none" },
31
- React__default.default.createElement(Text.Text, { className: toast_module.toastText, variant: "headingSmall", as: "p" }, message),
32
- subMessage && (React__default.default.createElement(Text.Text, { className: toast_module.toastText, variant: "body", as: "p" }, subMessage))),
33
- ctaSlot),
34
- React__default.default.createElement(Button.Button, { className: buildClassnames.buildClassnames([toast_module.toastCloseButton, e2eClassNames === null || e2eClassNames === undefined ? undefined : e2eClassNames.closeIcon]), variant: "flat", iconSlot: React__default.default.createElement(CrossIcon.ReactComponent, { color: "#fff" }), onClick: onClose, "aria-label": "Close" })));
18
+ const toastTypes = {
19
+ info: {
20
+ accentColor: colors.colors.brand.blue.base,
21
+ icon: React__default.default.createElement(InfoIcon.ReactComponent, null),
22
+ },
23
+ success: {
24
+ accentColor: colors.colors.secondary.green.base,
25
+ icon: React__default.default.createElement(SuccessIcon.ReactComponent, null),
26
+ },
27
+ error: {
28
+ accentColor: colors.colors.secondary.red.base,
29
+ icon: React__default.default.createElement(AttentionIcon.ReactComponent, null),
30
+ },
31
+ merge: {
32
+ accentColor: colors.colors.secondary.purple.base,
33
+ icon: React__default.default.createElement(MergeIcon.ReactComponent, null),
34
+ },
35
+ };
36
+ const generateClassNames = (prefix) => ({
37
+ container: prefix ? `${prefix}-toast-container` : undefined,
38
+ icon: prefix ? `${prefix}-toast-icon` : undefined,
39
+ closeIcon: prefix ? `${prefix}-toast-close-icon` : undefined,
40
+ });
41
+ const Toast = ({ className, e2eClassName, type, iconSlot, text, last, minWidth, cta, onClose, }) => {
42
+ const classNames = generateClassNames(className);
43
+ const e2eClassNames = generateClassNames(e2eClassName);
44
+ return (React__default.default.createElement(styled.Toast, { className: buildClassnames.buildClassnames([classNames === null || classNames === undefined ? undefined : classNames.container, e2eClassNames === null || e2eClassNames === undefined ? undefined : e2eClassNames.container]), direction: "horizontal", alignY: "center", minWidth: minWidth, last: last },
45
+ React__default.default.createElement(styled.IconWrap, { color: toastTypes[type].accentColor, className: buildClassnames.buildClassnames([classNames.icon, e2eClassNames.icon]) }, iconSlot !== null && iconSlot !== undefined ? iconSlot : toastTypes[type].icon),
46
+ React__default.default.createElement(styled.ContentStack, { direction: "horizontal", alignY: "center", alignX: "between" },
47
+ React__default.default.createElement(styled.StyledText, { variant: "body" }, text),
48
+ cta),
49
+ React__default.default.createElement(Button.Button, { variant: "flat", iconSlot: React__default.default.createElement(CrossIcon.ReactComponent, { color: "white" }), onClick: onClose, "aria-label": "Close" })));
35
50
  };
36
51
 
37
52
  exports.Toast = Toast;