@onewelcome/react-lib-components 0.1.1-alpha → 0.1.4-alpha

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 (180) hide show
  1. package/README.md +16 -1
  2. package/dist/Breadcrumbs/Breadcrumbs.d.ts +3 -3
  3. package/dist/Button/BaseButton.d.ts +3 -4
  4. package/dist/Button/Button.d.ts +3 -4
  5. package/dist/Button/IconButton.d.ts +3 -4
  6. package/dist/ContextMenu/ContextMenu.d.ts +3 -3
  7. package/dist/Form/Checkbox/Checkbox.d.ts +5 -5
  8. package/dist/Form/Fieldset/Fieldset.d.ts +4 -4
  9. package/dist/Form/FormControl/FormControl.d.ts +5 -5
  10. package/dist/Form/FormGroup/FormGroup.d.ts +4 -4
  11. package/dist/Form/FormHelperText/FormHelperText.d.ts +4 -5
  12. package/dist/Form/FormSelectorWrapper/FormSelectorWrapper.d.ts +8 -12
  13. package/dist/Form/Input/Input.d.ts +7 -6
  14. package/dist/Form/Label/Label.d.ts +4 -5
  15. package/dist/Form/Radio/Radio.d.ts +5 -5
  16. package/dist/Form/Select/Option.d.ts +3 -4
  17. package/dist/Form/Select/Select.d.ts +4 -4
  18. package/dist/Form/Textarea/Textarea.d.ts +9 -5
  19. package/dist/Form/Toggle/Toggle.d.ts +3 -3
  20. package/dist/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +4 -3
  21. package/dist/Form/Wrapper/InputWrapper/InputWrapper.d.ts +5 -5
  22. package/dist/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +4 -4
  23. package/dist/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +7 -4
  24. package/dist/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +3 -3
  25. package/dist/Form/Wrapper/Wrapper/Wrapper.d.ts +6 -6
  26. package/dist/Form/form.interfaces.d.ts +4 -3
  27. package/dist/Icon/Icon.d.ts +4 -4
  28. package/dist/Link/Link.d.ts +4 -6
  29. package/dist/Notifications/BaseModal/BaseModal.d.ts +3 -4
  30. package/dist/Notifications/BaseModal/BaseModalActions/BaseModalActions.d.ts +3 -3
  31. package/dist/Notifications/BaseModal/BaseModalContent/BaseModalContent.d.ts +3 -3
  32. package/dist/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.d.ts +3 -3
  33. package/dist/Notifications/Dialog/Dialog.d.ts +3 -3
  34. package/dist/Notifications/Dialog/DialogActions/DialogActions.d.ts +3 -3
  35. package/dist/Notifications/Dialog/DialogTitle/DialogTitle.d.ts +3 -3
  36. package/dist/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.d.ts +5 -4
  37. package/dist/Notifications/DiscardChangesModal/DiscardChangesModal.d.ts +3 -1
  38. package/dist/Pagination/Pagination.d.ts +19 -0
  39. package/dist/Popover/Popover.d.ts +3 -3
  40. package/dist/Tabs/Tab.d.ts +11 -0
  41. package/dist/Tabs/TabButton.d.ts +10 -0
  42. package/dist/Tabs/TabPanel.d.ts +8 -0
  43. package/dist/Tabs/Tabs.d.ts +9 -0
  44. package/dist/TextEllipsis/TextEllipsis.d.ts +6 -0
  45. package/dist/Tiles/Tile.d.ts +3 -3
  46. package/dist/Tiles/Tiles.d.ts +3 -3
  47. package/dist/Tooltip/Tooltip.d.ts +3 -3
  48. package/dist/Typography/Typography.d.ts +6 -4
  49. package/dist/Wizard/BaseWizardSteps/BaseWizardSteps.d.ts +3 -3
  50. package/dist/Wizard/WizardSteps/WizardSteps.d.ts +3 -3
  51. package/dist/_BaseStyling_/BaseStyling.d.ts +9 -0
  52. package/dist/hooks/useRepeater.d.ts +10 -0
  53. package/dist/hooks/useSpacing.d.ts +2 -2
  54. package/dist/hooks/useWrapper.d.ts +1 -1
  55. package/dist/index.d.ts +6 -0
  56. package/dist/interfaces.d.ts +2 -11
  57. package/dist/react-lib-components.cjs.development.js +2395 -1696
  58. package/dist/react-lib-components.cjs.development.js.map +1 -1
  59. package/dist/react-lib-components.cjs.production.min.js +1 -1
  60. package/dist/react-lib-components.cjs.production.min.js.map +1 -1
  61. package/dist/react-lib-components.esm.js +2391 -1698
  62. package/dist/react-lib-components.esm.js.map +1 -1
  63. package/dist/util/helper.d.ts +6 -1
  64. package/package.json +30 -24
  65. package/src/Breadcrumbs/Breadcrumbs.tsx +39 -37
  66. package/src/Button/BaseButton.test.tsx +65 -19
  67. package/src/Button/BaseButton.tsx +2 -3
  68. package/src/Button/Button.test.tsx +63 -17
  69. package/src/Button/Button.tsx +15 -4
  70. package/src/Button/IconButton.test.tsx +57 -22
  71. package/src/Button/IconButton.tsx +14 -9
  72. package/src/ContextMenu/ContextMenu.test.tsx +27 -1
  73. package/src/ContextMenu/ContextMenu.tsx +70 -65
  74. package/src/Form/Checkbox/Checkbox.test.tsx +28 -2
  75. package/src/Form/Checkbox/Checkbox.tsx +132 -122
  76. package/src/Form/Fieldset/Fieldset.test.tsx +28 -2
  77. package/src/Form/Fieldset/Fieldset.tsx +96 -50
  78. package/src/Form/FormControl/FormControl.test.tsx +27 -1
  79. package/src/Form/FormControl/FormControl.tsx +36 -39
  80. package/src/Form/FormGroup/FormGroup.test.tsx +51 -1
  81. package/src/Form/FormGroup/FormGroup.tsx +64 -58
  82. package/src/Form/FormHelperText/FormHelperText.test.tsx +27 -1
  83. package/src/Form/FormHelperText/FormHelperText.tsx +20 -16
  84. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.test.tsx +78 -0
  85. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +61 -55
  86. package/src/Form/Input/Input.module.scss +34 -15
  87. package/src/Form/Input/Input.test.tsx +27 -1
  88. package/src/Form/Input/Input.tsx +88 -47
  89. package/src/Form/Label/Label.test.tsx +27 -1
  90. package/src/Form/Label/Label.tsx +18 -14
  91. package/src/Form/Radio/Radio.test.tsx +28 -2
  92. package/src/Form/Radio/Radio.tsx +98 -90
  93. package/src/Form/Select/Option.test.tsx +27 -1
  94. package/src/Form/Select/Option.tsx +49 -42
  95. package/src/Form/Select/Select.module.scss +5 -1
  96. package/src/Form/Select/Select.test.tsx +224 -30
  97. package/src/Form/Select/Select.tsx +248 -182
  98. package/src/Form/Textarea/Textarea.module.scss +2 -1
  99. package/src/Form/Textarea/Textarea.test.tsx +28 -2
  100. package/src/Form/Textarea/Textarea.tsx +44 -29
  101. package/src/Form/Toggle/Toggle.module.scss +9 -0
  102. package/src/Form/Toggle/Toggle.test.tsx +27 -1
  103. package/src/Form/Toggle/Toggle.tsx +25 -12
  104. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.test.tsx +27 -1
  105. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +45 -48
  106. package/src/Form/Wrapper/InputWrapper/InputWrapper.module.scss +17 -1
  107. package/src/Form/Wrapper/InputWrapper/InputWrapper.test.tsx +89 -1
  108. package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +134 -74
  109. package/src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +64 -59
  110. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss +1 -1
  111. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.test.tsx +43 -1
  112. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +54 -44
  113. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +5 -7
  114. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.test.tsx +43 -1
  115. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +100 -85
  116. package/src/Form/Wrapper/Wrapper/Wrapper.module.scss +1 -1
  117. package/src/Form/Wrapper/Wrapper/Wrapper.test.tsx +27 -1
  118. package/src/Form/Wrapper/Wrapper/Wrapper.tsx +76 -71
  119. package/src/Form/form.interfaces.ts +4 -3
  120. package/src/Icon/Icon.module.scss +4 -0
  121. package/src/Icon/Icon.test.tsx +30 -2
  122. package/src/Icon/Icon.tsx +5 -5
  123. package/src/Link/Link.test.tsx +27 -1
  124. package/src/Link/Link.tsx +10 -7
  125. package/src/Notifications/BaseModal/BaseModal.test.tsx +27 -1
  126. package/src/Notifications/BaseModal/BaseModal.tsx +59 -54
  127. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.test.tsx +26 -1
  128. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx +11 -9
  129. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.test.tsx +27 -1
  130. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx +27 -26
  131. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.test.tsx +29 -1
  132. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx +18 -16
  133. package/src/Notifications/Dialog/Dialog.test.tsx +39 -1
  134. package/src/Notifications/Dialog/Dialog.tsx +84 -78
  135. package/src/Notifications/Dialog/DialogActions/DialogActions.test.tsx +27 -1
  136. package/src/Notifications/Dialog/DialogActions/DialogActions.tsx +15 -12
  137. package/src/Notifications/Dialog/DialogTitle/DialogTitle.test.tsx +28 -2
  138. package/src/Notifications/Dialog/DialogTitle/DialogTitle.tsx +13 -11
  139. package/src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.test.tsx +41 -1
  140. package/src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx +43 -36
  141. package/src/Notifications/DiscardChangesModal/DiscardChangesModal.test.tsx +52 -1
  142. package/src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx +8 -3
  143. package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx +1 -1
  144. package/src/Pagination/Pagination.module.scss +120 -0
  145. package/src/Pagination/Pagination.test.tsx +176 -0
  146. package/src/Pagination/Pagination.tsx +205 -0
  147. package/src/Popover/Popover.tsx +3 -3
  148. package/src/Tabs/Tab.test.tsx +71 -0
  149. package/src/Tabs/Tab.tsx +17 -0
  150. package/src/Tabs/TabButton.module.scss +36 -0
  151. package/src/Tabs/TabButton.test.tsx +77 -0
  152. package/src/Tabs/TabButton.tsx +58 -0
  153. package/src/Tabs/TabPanel.module.scss +7 -0
  154. package/src/Tabs/TabPanel.test.tsx +76 -0
  155. package/src/Tabs/TabPanel.tsx +27 -0
  156. package/src/Tabs/Tabs.module.scss +41 -0
  157. package/src/Tabs/Tabs.test.tsx +268 -0
  158. package/src/Tabs/Tabs.tsx +149 -0
  159. package/src/TextEllipsis/TextEllipsis.module.scss +18 -0
  160. package/src/TextEllipsis/TextEllipsis.test.tsx +80 -0
  161. package/src/TextEllipsis/TextEllipsis.tsx +55 -0
  162. package/src/Tiles/Tile.test.tsx +27 -1
  163. package/src/Tiles/Tile.tsx +59 -62
  164. package/src/Tiles/Tiles.test.tsx +27 -1
  165. package/src/Tiles/Tiles.tsx +42 -39
  166. package/src/Tooltip/Tooltip.test.tsx +27 -1
  167. package/src/Tooltip/Tooltip.tsx +104 -92
  168. package/src/Typography/Typography.test.tsx +27 -1
  169. package/src/Typography/Typography.tsx +66 -68
  170. package/src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx +67 -62
  171. package/src/Wizard/WizardSteps/WizardSteps.tsx +24 -21
  172. package/src/_BaseStyling_/BaseStyling.tsx +19 -1
  173. package/src/hooks/useRepeater.test.tsx +139 -0
  174. package/src/hooks/useRepeater.ts +34 -0
  175. package/src/hooks/useSpacing.ts +1 -1
  176. package/src/hooks/useWrapper.ts +7 -2
  177. package/src/index.ts +15 -1
  178. package/src/interfaces.ts +2 -12
  179. package/src/util/helper.test.tsx +38 -1
  180. package/src/util/helper.tsx +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"react-lib-components.cjs.production.min.js","sources":["../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/hooks/useSpacing.ts","../src/Typography/Typography.tsx","../src/Button/BaseButton.tsx","../src/Button/Button.tsx","../src/Link/Link.tsx","../src/Button/IconButton.tsx","../src/Icon/Icon.tsx","../src/Notifications/BaseModal/BaseModalContext.ts","../src/Notifications/BaseModal/BaseModal.tsx","../src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx","../src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx","../src/Notifications/Dialog/DialogActions/DialogActions.tsx","../src/Notifications/Dialog/DialogTitle/DialogTitle.tsx","../src/util/helper.tsx","../src/Notifications/Dialog/Dialog.tsx","../src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx","../src/hooks/usePosition.ts","../src/Tooltip/Tooltip.tsx","../src/Tiles/Tile.tsx","../src/Popover/Popover.tsx","../src/hooks/useBodyClick.ts","../src/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx","../src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.tsx","../src/hooks/useAnimation.ts","../src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx","../src/Form/Fieldset/Fieldset.tsx","../src/Form/FormHelperText/FormHelperText.tsx","../src/Form/FormGroup/FormGroup.tsx","../src/Form/Label/Label.tsx","../src/Form/Input/Input.tsx","../src/Form/Select/Select.tsx","../src/hooks/useScroll.ts","../src/Form/Textarea/Textarea.tsx","../src/hooks/useWrapper.ts","../src/Form/Wrapper/Wrapper/Wrapper.tsx","../src/hooks/useFormSelector.ts","../src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx","../src/Form/Checkbox/Checkbox.tsx","../src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx","../src/Wizard/wizardStateReducer.ts","../src/Wizard/WizardStateProvider.tsx","../src/Wizard/Wizard.tsx","../src/_BaseStyling_/BaseStyling.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx","../src/ContextMenu/ContextMenu.tsx","../src/ContextMenu/ContextMenuItem.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx","../src/Form/Form.tsx","../src/Form/FormControl/FormControl.tsx","../src/Form/Wrapper/InputWrapper/InputWrapper.tsx","../src/Form/Select/Option.tsx","../src/Form/Radio/Radio.tsx","../src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx","../src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx","../src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx","../src/Tiles/Tiles.tsx","../src/Wizard/WizardActions/WizardActions.tsx","../src/Wizard/WizardSteps/WizardSteps.tsx","../src/Notifications/Snackbar/useSnackbar.ts"],"sourcesContent":["var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { CSSProperties } from 'react';\n\ntype SpacingMultiplier = 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype SpacingMultiplierStringOrNumber = `${SpacingMultiplier}` | SpacingMultiplier;\ntype MultiValueSpacingMultiplier =\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier}`\n | SpacingMultiplierStringOrNumber;\n\nexport interface Spacing {\n padding?: MultiValueSpacingMultiplier;\n paddingTop?: SpacingMultiplierStringOrNumber;\n paddingBottom?: SpacingMultiplierStringOrNumber;\n paddingLeft?: SpacingMultiplierStringOrNumber;\n paddingRight?: SpacingMultiplierStringOrNumber;\n margin?: MultiValueSpacingMultiplier;\n marginTop?: SpacingMultiplierStringOrNumber;\n marginBottom?: SpacingMultiplierStringOrNumber;\n marginLeft?: SpacingMultiplierStringOrNumber;\n marginRight?: SpacingMultiplierStringOrNumber;\n}\n\nconst defaultFactor = 0.25;\nconst defaultUnit = 'rem';\nconst spacingNumberRegex = /(\\d+\\.?\\d*)+/g;\n\nexport const useSpacing = (\n spacingProps?: Spacing,\n style?: CSSProperties\n): CSSProperties | undefined => {\n if (spacingProps) {\n return Object.entries(spacingProps).reduce<CSSProperties>((prev, [spacing, multiplier]) => {\n const matches = String(multiplier).matchAll(spacingNumberRegex);\n const cssSpacingValue = Array.from(matches)\n .map(([multiplierValue]) => `${Number(multiplierValue) * defaultFactor}${defaultUnit}`)\n .join(' ');\n return { ...prev, [spacing]: cssSpacingValue };\n }, style ?? {});\n }\n return style;\n};\n","import React, { HTMLAttributes, ReactNode } from 'react';\nimport classes from './Typography.module.scss';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nconst validVariants = ['h1', 'h2', 'h3', 'h4', 'body', 'body-bold', 'sub-text', 'code'] as const;\nexport type Variant = typeof validVariants[number];\n\nexport interface Props extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n variant: Variant;\n tag?:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'p'\n | 'div'\n | 'code'\n | 'span'\n | 'sup'\n | 'sub'\n | 'strong'\n | 'em'\n | 'small'\n | 'mark'\n | 'del'\n | 'ins'\n | 'blockquote';\n spacing?: Spacing;\n}\n\nexport const Typography = ({\n children,\n variant,\n tag,\n style,\n spacing,\n className = '',\n ...rest\n}: Props) => {\n if (!validVariants.includes(variant)) {\n throw new Error(\n `You entered an invalid variant. You can choose from: ${validVariants}, you entered: ${variant}`\n );\n }\n\n const styleWithSpacing = useSpacing(spacing, style);\n\n if (!tag) {\n switch (variant) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'code':\n tag = variant;\n break;\n case 'body':\n tag = 'p';\n break;\n case 'body-bold':\n tag = 'p';\n break;\n case 'sub-text':\n tag = 'span';\n break;\n default:\n tag = 'div';\n break;\n }\n }\n\n let TagName = tag;\n\n return (\n <TagName\n {...rest}\n style={styleWithSpacing}\n className={`${classes['typography_style_' + variant]} ${className}`}\n >\n {children}\n </TagName>\n );\n};\n","import React, { RefObject } from 'react';\nimport classes from './BaseButton.module.scss';\n\nexport interface Props extends Omit<React.HTMLProps<HTMLButtonElement>, 'ref'> {\n type?: 'submit' | 'button' | 'reset';\n disabled?: boolean;\n ref?: RefObject<HTMLButtonElement>;\n color?: 'primary' | 'secondary' | 'tertiary' | 'default';\n}\n\nexport const BaseButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, type = 'button', className, ...rest }, ref) => {\n const validTypes = ['submit', 'button', 'reset'];\n\n if (!validTypes.includes(type))\n throw new Error(\n `You have entered an invalid button type. Expected 'submit', 'button' or 'reset' got ${type}`\n );\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={`${classes.button} ${className ? className : ''}`}\n >\n {children}\n </button>\n );\n }\n);\n","import React, { RefObject } from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './Button.module.scss';\n\nexport interface Props extends Omit<BaseButtonProps, 'ref'> {\n startIcon?: React.ReactNode | false;\n endIcon?: React.ReactNode | false;\n children?: React.ReactNode;\n variant?: 'text' | 'fill' | 'outline';\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, Props>(\n (\n { children, variant = 'fill', color = 'primary', startIcon = false, endIcon = false, ...rest },\n ref\n ) => {\n const additionalClasses = [];\n\n if (startIcon || endIcon) {\n additionalClasses.push(classes['has-icon']);\n }\n\n if (startIcon) {\n additionalClasses.push(classes['start-icon']);\n }\n\n if (endIcon) {\n additionalClasses.push(classes['end-icon']);\n }\n\n return (\n <BaseButton\n {...rest}\n ref={ref}\n className={`${classes[color]} ${classes[variant]} ${additionalClasses.join(' ')}`}\n >\n {startIcon && <i>{startIcon}&nbsp;</i>}\n <span>{children}</span>\n {endIcon && <i>&nbsp;{endIcon}</i>}\n </BaseButton>\n );\n }\n);\n","import React, { ForwardRefExoticComponent, Ref, RefAttributes } from 'react';\nimport { HTMLProps } from '../interfaces';\nimport classes from './Link.module.scss';\nimport { LinkProps } from './types';\n\ntype AnchorType = 'external' | 'internal' | 'download';\n\nexport interface Props extends HTMLProps<HTMLAnchorElement> {\n children?: string;\n color?: 'primary' | 'secondary' | 'tertiary';\n type?: AnchorType;\n to: string;\n disabled?: boolean;\n component?: ForwardRefExoticComponent<LinkProps & RefAttributes<HTMLAnchorElement>>;\n ref?: Ref<HTMLAnchorElement>;\n}\n\nexport const Link = React.forwardRef(\n (\n {\n children,\n className,\n disabled = false,\n to,\n color = 'primary',\n type = 'internal',\n component,\n ...rest\n }: Props,\n ref: Ref<HTMLAnchorElement>\n ) => {\n const determineTarget = () => {\n if (rest.target) {\n return rest.target;\n }\n\n if (type === 'external') {\n return '_blank';\n }\n\n return '';\n };\n\n const classNames = [classes['link'], classes[color]];\n disabled && classNames.push(classes['disabled']);\n className && classNames.push(className);\n\n if (component) {\n return React.createElement(component, {\n ...rest,\n ref: ref,\n to: to,\n className: classNames.join(' '),\n 'aria-disabled': disabled,\n style: {\n ...rest.style,\n },\n children: children,\n });\n }\n\n return (\n <a\n {...rest}\n ref={ref}\n download={type === 'download'}\n rel={type === 'external' ? 'noopener noreferer' : undefined}\n href={!disabled ? to : undefined}\n className={classNames.join(' ')}\n aria-disabled={disabled}\n target={determineTarget()}\n style={{\n ...rest.style,\n }}\n >\n {children}\n </a>\n );\n }\n);\n","import React, { Fragment, RefObject } from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './IconButton.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\n\nexport interface Props extends Omit<BaseButtonProps, 'ref'> {\n children?: React.ReactNode;\n iconSize?: 's' | 'm' | 'l';\n className?: string;\n title?: string;\n ref?: RefObject<HTMLButtonElement>;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, color = 'primary', iconSize = 'm', title, ...rest }, ref) => {\n if (!title) {\n console.error(\"Please make sure to specify a 'title' prop to your IconButton component! \");\n }\n\n return (\n <BaseButton\n {...rest}\n ref={ref}\n className={`${classes['icon-button']} ${classes[color]} ${classes['button-' + iconSize]}`}\n >\n <Fragment>\n {children}\n <span className={readyclasses['sr-only']}>{title}</span>\n </Fragment>\n </BaseButton>\n );\n }\n);\n","import React from 'react';\nimport classes from './Icon.module.scss';\nimport { HTMLAttributes } from '../interfaces';\n\nexport enum Icons {\n Bell = 'bell',\n BellAlt = 'bell-alt',\n Bookmark = 'bookmark',\n BookmarkAlt = 'bookmark-alt',\n Build = 'build',\n Calendar = 'calendar',\n Change = 'change',\n Checkmark = 'checkmark',\n CheckmarkCircle = 'checkmark-circle',\n CheckmarkCircleAlt = 'checkmark-circle-alt',\n CheckmarkCircleBreakout = 'checkmark-circle-breakout',\n CheckmarkSquare = 'checkmark-square',\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n ChevronLeft = 'chevron-left',\n ChevronRight = 'chevron-right',\n Circle = 'circle',\n Clock = 'clock',\n Copy = 'copy',\n Edit = 'edit',\n Ellipsis = 'ellipsis',\n EllipsisAlt = 'ellipsis-alt',\n Equal = 'equal',\n Eye = 'eye',\n Filter = 'filter',\n FilterAlt = 'filter-alt',\n FilterAltArrow = 'filter-alt-arrow',\n FilterAltTimes = 'filter-alt-times',\n Forbidden = 'forbidden',\n Fullscreen = 'fullscreen',\n FullscreenExit = 'fullscreen-exit',\n Gearwheel = 'gearwheel',\n Grid = 'grid',\n Hamburger = 'hamburger',\n Heart = 'heart',\n Image = 'image',\n InfoBell = 'info-bell',\n InfoCircle = 'info-circle',\n Link = 'link',\n MinusSquare = 'minus-square',\n NavigationFirst = 'navigation-first',\n NavigationLast = 'navigation-last',\n Plus = 'plus',\n Radio = 'radio',\n Refresh = 'refresh',\n Search = 'search',\n Share = 'share',\n Square = 'square',\n Star = 'star',\n StarAlt = 'star-alt',\n Times = 'times',\n TimesCircle = 'times-circle',\n TimesCircleAlt = 'times-circle-alt',\n TimesThin = 'times-thin',\n Trash = 'trash',\n TriangleDown = 'triangle-down',\n TriangleDownCircle = 'triangle-down-circle',\n TriangleLeft = 'triangle-left',\n TriangleRight = 'triangle-right',\n TriangleUp = 'triangle-up',\n Undo = 'undo',\n Warning = 'warning',\n}\n\ntype Tag = 'span' | 'div' | 'i';\n\nexport interface Props extends Omit<HTMLAttributes<HTMLOrSVGElement>, 'size'> {\n icon: Icons;\n color?: string;\n size?: string;\n tag?: Tag;\n}\n\nexport const Icon = React.forwardRef(\n ({ icon, color, className, style, size, tag = 'span', ...rest }: Props, ref) => {\n const Component = tag;\n\n return (\n <Component\n {...rest}\n ref={ref as React.LegacyRef<HTMLDivElement>}\n style={{ color: color, ...style, fontSize: size }}\n data-icon\n aria-hidden=\"true\"\n className={`${classes['icon']} ${classes['icon-' + icon]} ${className ? className : ''}`}\n />\n );\n }\n);\n","export const labelId = (id: string) => `${id}-label`;\nexport const descriptionId = (id: string) => `${id}-description`;\n","import React, { useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { HTMLAttributes } from '../../interfaces';\nimport classes from './BaseModal.module.scss';\nimport { labelId, descriptionId } from './BaseModalContext';\n\nconst SCROLL_PROPERTY_NAME = 'overflow';\nconst SCROLL_PROPERTY_VALUE = 'hidden';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n id: string;\n children: React.ReactNode;\n open: boolean;\n onClose?: (event?: React.MouseEvent<HTMLElement>) => unknown;\n className?: string;\n containerClassName?: string;\n labelledby?: string;\n describedby?: string;\n disableEscapeKeyDown?: boolean;\n disableBackdrop?: boolean;\n zIndex?: number;\n domRoot?: HTMLElement;\n}\n\nexport const useSetBodyScroll = (open: boolean) => {\n const hideBodyScroll = () => {\n document.body.style[SCROLL_PROPERTY_NAME] = SCROLL_PROPERTY_VALUE;\n };\n\n const showBodyScroll = () => {\n const allModalsClosed =\n document.querySelectorAll('[role=dialog][data-hidden=false]').length === 0;\n if (allModalsClosed) {\n document.body.style.removeProperty(SCROLL_PROPERTY_NAME);\n }\n };\n\n useEffect(() => {\n if (open) {\n hideBodyScroll();\n } else {\n showBodyScroll();\n }\n }, [open]);\n};\n\nexport const BaseModal = ({\n id,\n children,\n open,\n onClose,\n className = '',\n containerClassName = '',\n labelledby,\n describedby,\n disableEscapeKeyDown = false,\n disableBackdrop = false,\n zIndex,\n domRoot = document.body,\n ...restProps\n}: Props) => {\n useSetBodyScroll(open);\n\n const handleEscKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disableEscapeKeyDown && event.key === 'Escape') {\n event.stopPropagation();\n onClose && onClose();\n }\n };\n\n const handleBackdropClick = () => !disableBackdrop && onClose && onClose();\n\n return createPortal(\n <div\n {...restProps}\n id={id}\n className={`${classes['modal']} ${open && classes['visible']} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledby || labelId(id)}\n aria-describedby={describedby || descriptionId(id)}\n aria-hidden={!open}\n tabIndex={-1}\n data-hidden={!open}\n onKeyDown={handleEscKeyPress}\n style={{ zIndex }}\n >\n <div className={classes['backdrop']} onClick={handleBackdropClick}></div>\n {open && (\n <div\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerClassName}`}\n >\n {children}\n </div>\n )}\n </div>,\n domRoot\n );\n};\n","import React, { HTMLAttributes, useEffect, useRef } from 'react';\nimport classes from './BaseModalContent.module.scss';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n children: React.ReactNode;\n className?: string;\n disableAutoFocus?: boolean;\n}\n\nexport const BaseModalContent = ({\n id,\n children,\n className = '',\n disableAutoFocus = false,\n ...restProps\n}: Props) => {\n const contentRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n !disableAutoFocus && contentRef.current?.focus();\n }, []);\n\n /**tabIndex is set to be able to do focus on that element which we need for catching keyDown events */\n return (\n <div\n {...restProps}\n ref={contentRef}\n id={id}\n className={`${classes['content']} ${className}`}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classes from './BaseModalActions.module.scss';\n\nexport interface Props extends HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\nexport const BaseModalActions = ({ children, className = '', ...restProps }: Props) => {\n return (\n <footer {...restProps} className={`${classes['actions']} ${className}`}>\n {children}\n </footer>\n );\n};\n","import React from 'react';\nimport {\n BaseModalActions,\n Props as BaseModalActionsProps,\n} from '../../BaseModal/BaseModalActions/BaseModalActions';\nimport classes from './DialogActions.module.scss';\n\nexport interface Props extends BaseModalActionsProps {\n align: 'left' | 'right';\n}\n\nexport const DialogActions = ({ children, align, ...restProps }: Props) => {\n return (\n <BaseModalActions\n {...restProps}\n className={`${classes['actions']}${align === 'left' ? ' ' + classes['left'] : ''}`}\n >\n {children}\n </BaseModalActions>\n );\n};\n","import React from 'react';\nimport { Typography } from '../../../Typography/Typography';\nimport classes from './DialogTitle.module.scss';\n\nexport interface Props {\n id: string;\n title: string;\n}\n\nexport const DialogTitle = ({ id, title }: Props) => {\n return (\n <div className={classes['header']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n </div>\n );\n};\n","export const generateID = (length = 15, stringToWeaveIn?: string) => {\n /** We will make sure to mesh the generate id and name property together to basically create a unique ID */\n let hashCharacters = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n ];\n\n let id = '';\n\n /** Generate an id of x characters in length */\n for (let i = 0; i < length && id.length < length; i++) {\n let stringCharacter =\n stringToWeaveIn && stringToWeaveIn[i] !== undefined && !/\\s/.test(stringToWeaveIn[i])\n ? stringToWeaveIn[i]\n : '';\n id = id + stringCharacter + hashCharacters[Math.floor(Math.random() * hashCharacters.length)];\n }\n\n return id.slice(0, length);\n};\n","import React, { HTMLAttributes, useState } from 'react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport { BaseModalContent } from '../BaseModal/BaseModalContent/BaseModalContent';\nimport { DialogActions } from './DialogActions/DialogActions';\nimport classes from './Dialog.module.scss';\nimport { DialogTitle } from './DialogTitle/DialogTitle';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { labelId, descriptionId } from '../BaseModal/BaseModalContext';\nimport { generateID } from '../../util/helper';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n id?: string;\n open: boolean;\n children: React.ReactNode;\n alignActions: 'left' | 'right';\n onClose: () => void;\n title: string;\n primaryAction: Action;\n secondaryAction?: Action;\n zIndex?: number;\n disableEscapeKeyDown?: boolean;\n}\n\nexport interface Action extends Omit<ButtonProps, 'variant' | 'ref'> {\n label: string;\n onClick: (event?: React.MouseEvent<HTMLButtonElement>) => unknown;\n}\n\nexport const Dialog = ({\n id,\n open,\n children,\n alignActions,\n onClose,\n title,\n primaryAction,\n secondaryAction,\n zIndex,\n disableEscapeKeyDown = true,\n ...restProps\n}: Props) => {\n const [dialogId] = useState(id ?? generateID(20));\n const { label: primaryLabel, ...restOfPrimaryAction } = primaryAction;\n const PrimaryButton = (\n <Button key=\"primary\" {...restOfPrimaryAction}>\n {primaryLabel}\n </Button>\n );\n const TertiaryButton =\n secondaryAction &&\n (function () {\n const { label: secondaryLabel, ...restOfSecondaryAction } = secondaryAction;\n return (\n <Button key=\"tertiary\" variant=\"text\" {...restOfSecondaryAction}>\n {secondaryLabel}\n </Button>\n );\n })();\n\n const onHiddenInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n /** It has to be here because then we will need to check if user doesn't click tab to select action button and want to do another action then primary one? */\n if (event.key === 'Enter') {\n primaryAction.onClick();\n }\n };\n\n return (\n <BaseModal\n {...restProps}\n id={dialogId}\n className={classes['dialog']}\n containerClassName={classes['container']}\n open={open}\n disableBackdrop\n onClose={onClose}\n zIndex={zIndex}\n disableEscapeKeyDown={disableEscapeKeyDown}\n >\n <DialogTitle id={labelId(dialogId)} title={title} />\n <BaseModalContent\n id={descriptionId(dialogId)}\n className={classes['content']}\n disableAutoFocus\n >\n {children}\n </BaseModalContent>\n <DialogActions align={alignActions}>\n {alignActions === 'left'\n ? [PrimaryButton, TertiaryButton]\n : [TertiaryButton, PrimaryButton]}\n </DialogActions>\n <input\n autoFocus\n aria-hidden={true}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n opacity: 0,\n }}\n maxLength={0}\n tabIndex={-1}\n onKeyPress={onHiddenInputKeyPress}\n />\n </BaseModal>\n );\n};\n","import React, { HTMLAttributes } from 'react';\nimport classes from './BaseModalHeader.module.scss';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Typography } from '../../../Typography/Typography';\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n id: string;\n title: string;\n children?: React.ReactNode;\n onClose: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const BaseModalHeader = ({ id, title, children, onClose, ...restProps }: Props) => {\n return (\n <div {...restProps} className={classes['header']}>\n <div className={classes['headline']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <IconButton onClick={onClose} className={classes['closeBtn']} title=\"close modal\">\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n {children}\n </div>\n );\n};\n","import React from 'react';\nimport { Dialog } from '../../Dialog/Dialog';\nimport { HTMLProps } from '../../../interfaces';\nimport { Typography } from '../../../Typography/Typography';\n\nexport interface Props extends Omit<HTMLProps<HTMLDivElement>, 'children'> {\n open: boolean;\n discardChangesButtonLabel: string;\n keepEditingButtonLabel: string;\n contentLabel: string;\n titleLabel: string;\n onKeepEditing: () => void;\n onDiscardChanges: () => void;\n}\n\nexport const DiscardChangesDialog = ({\n open,\n onKeepEditing,\n onDiscardChanges,\n discardChangesButtonLabel,\n keepEditingButtonLabel,\n contentLabel,\n titleLabel,\n ...rest\n}: Props) => {\n return (\n <Dialog\n {...rest}\n open={open}\n alignActions=\"left\"\n title={titleLabel}\n onClose={onKeepEditing}\n primaryAction={{\n label: discardChangesButtonLabel,\n onClick: onDiscardChanges,\n }}\n secondaryAction={{\n label: keepEditingButtonLabel,\n onClick: onKeepEditing,\n }}\n disableEscapeKeyDown={false}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {contentLabel}\n </Typography>\n </Dialog>\n );\n};\n","import React, { useState } from 'react';\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n}\n\nexport type HorizontalPlacment = 'left' | 'center' | 'centerh' | 'right';\nexport type VerticalPlacement = 'top' | 'center' | 'centerv' | 'bottom';\n\ntype Axis = 'vertical' | 'horizontal';\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacment;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | 'initial';\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: 'left',\n vertical: 'top',\n },\n placement: {\n horizontal: 'left',\n vertical: 'top',\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n};\n\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: 'initial',\n bottom: 'initial',\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'top' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'center' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'bottom' && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'horizontal' &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'top' &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'vertical' &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'right' &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'bottom' &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === 'horizontal' && configObject.offset?.left !== 0) ||\n (requestedReturnValue === 'horizontal' && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'right') {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === 'vertical' && configObject.offset?.top !== 0) ||\n (requestedReturnValue === 'vertical' && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'top' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'bottom') {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacment | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'top'\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === 'center') {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === 'horizontal' ? 'width' : 'height'] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === 'right' ||\n transformOrigin[requestedReturnValue] === 'bottom'\n ) {\n value =\n window[requestedReturnValue === 'horizontal' ? 'innerWidth' : 'innerHeight'] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === 'horizontal') {\n return 'centerh';\n } else if (requestedReturnValue === 'vertical') {\n return 'centerv';\n }\n throw new Error(\n `the requested return value isn\\'t \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacment | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === 'center' ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = 'left';\n let oppositeDirection = 'right';\n\n if (axis === 'horizontal' && configObject.transformOrigin?.horizontal === 'right') {\n direction = 'right';\n oppositeDirection = 'left';\n } else if (axis === 'horizontal') {\n direction = 'left';\n oppositeDirection = 'right';\n }\n\n if (axis === 'vertical' && configObject.transformOrigin?.vertical === 'bottom') {\n direction = 'bottom';\n oppositeDirection = 'top';\n } else if (axis === 'vertical') {\n direction = 'top';\n oppositeDirection = 'bottom';\n }\n\n setPosition((prevState) => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: 'initial',\n }));\n };\n\n const calculatePosition = () => {\n if (!configObject.relativeElement?.current) return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth,\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y,\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'horizontal');\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'vertical');\n };\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n };\n};\n","import React, { HTMLProps, ReactNode, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tooltip.module.scss';\nimport { generateID } from '../util/helper';\nimport { Offset, Placement, usePosition } from '../hooks/usePosition';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends Omit<HTMLProps<HTMLDivElement>, 'label'> {\n label: string | ReactNode;\n children: string;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n domRoot?: HTMLElement;\n}\n\ninterface DefaultPosition {\n placement: Placement;\n offset: Offset;\n transformOrigin: Placement;\n}\n\nconst defaultPosition: DefaultPosition = {\n placement: { horizontal: 'right', vertical: 'center' },\n offset: { left: 16, right: 0, top: 0, bottom: 0 },\n transformOrigin: { horizontal: 'left', vertical: 'center' },\n};\n\nexport const Tooltip = ({\n children,\n className,\n placement = defaultPosition.placement,\n offset = defaultPosition.offset,\n transformOrigin = defaultPosition.transformOrigin,\n domRoot = document.body,\n label,\n ...rest\n}: Props) => {\n const [identifier] = useState(generateID());\n const [visible, setVisible] = useState(false);\n\n const relativeElement = useRef<HTMLOrSVGElement>(null);\n const elementToBePositioned = useRef<HTMLDivElement>(null);\n\n const { top, bottom, right, left, calculatePosition } = usePosition({\n relativeElement: relativeElement,\n elementToBePositioned: elementToBePositioned,\n placement: placement,\n offset: offset,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n if (!visible) return;\n\n function escapePressHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setVisible(false);\n }\n }\n\n document.addEventListener('keyup', escapePressHandler);\n\n return () => {\n document.removeEventListener('keyup', escapePressHandler);\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n calculatePosition();\n }, [visible]);\n\n const renderChildren = () => {\n if (React.isValidElement(label)) {\n return React.cloneElement(label, {\n onFocus: () => setVisible(true),\n onBlur: () => setVisible(false),\n 'aria-describedby': identifier,\n tabIndex: 0,\n className: classes['label'],\n });\n }\n\n return (\n <span\n className={classes['label']}\n tabIndex={0}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\n aria-describedby={identifier}\n >\n {label}\n </span>\n );\n };\n\n return (\n <div {...rest} className={`${classes.wrapper} ${className ?? ''}`}>\n {renderChildren()}\n <div className={`${classes['tooltip-wrapper']}`}>\n <Icon\n ref={relativeElement}\n tag=\"div\"\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n icon={Icons.InfoCircle}\n className={classes.icon}\n />\n {createPortal(\n <div\n ref={elementToBePositioned}\n style={{\n ...rest.style,\n top: top,\n left: left,\n right: right,\n bottom: bottom,\n }}\n aria-hidden={!visible}\n id={identifier}\n className={`${classes.tooltip} ${visible ? classes.visible : ''}`}\n >\n {children}\n </div>,\n domRoot\n )}\n </div>\n </div>\n );\n};\n","import React, { HTMLProps, ReactElement, useState } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tile.module.scss';\nimport readyClasses from '../readyclasses.module.scss';\n\nimport { Props as ContextMenuProps } from '../ContextMenu/ContextMenu';\nimport { generateID } from '../util/helper';\nimport { Props as IconButtonProps } from '../Button/IconButton';\n\ninterface ImageProps {\n src: string;\n}\n\nexport interface Props extends Omit<HTMLProps<HTMLDivElement>, 'contextMenu'> {\n title: string;\n imageProps?: ImageProps;\n enabled?: boolean;\n loading?: boolean;\n tileAction?: ReactElement<ContextMenuProps> | ReactElement<IconButtonProps>;\n}\n\nexport const Tile = ({\n title,\n imageProps,\n enabled,\n className,\n loading,\n tileAction,\n ...rest\n}: Props) => {\n const [tileDescriptionID] = useState(generateID(20));\n\n if (!title) {\n throw new Error('Please make sure to pass a title prop to your Tile component.');\n }\n\n const statusMessage = () => {\n if (enabled) {\n return 'Status: enabled';\n }\n\n return 'Status: disabled';\n };\n\n return (\n <article\n tabIndex={0}\n aria-labelledby={tileDescriptionID}\n {...rest}\n className={`${classes['tile']} ${loading ? classes['loading'] : ''}`}\n >\n <header style={{ justifyContent: enabled === undefined ? 'flex-end' : 'space-between' }}>\n {enabled === true && (\n <Icon\n color=\"var(--success)\"\n icon={Icons.Checkmark}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled === false && (\n <Icon\n color=\"var(--greyed-out)\"\n icon={Icons.Forbidden}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled !== undefined && (\n <span id={tileDescriptionID} className={readyClasses['sr-only']}>\n {`${title}. ${statusMessage()}`}\n </span>\n )}\n {tileAction ?? null}\n </header>\n <div className={classes['content']}>\n {imageProps && imageProps.src.length > 0 && (\n <figure className={classes['image']}>{!loading && <img {...imageProps} alt=\"\" />}</figure>\n )}\n {(!imageProps || imageProps.src.length === 0) && (\n <Icon className={classes['placeholder']} icon={Icons.Image} />\n )}\n <span className={classes['title']}>{title}</span>\n </div>\n </article>\n );\n};\n","import React, { forwardRef, HTMLProps, ReactNode, RefObject, useEffect, useRef } from 'react';\nimport { usePosition, Offset, Placement } from '../hooks/usePosition';\nimport classes from './Popover.module.scss';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children?: ReactNode;\n show?: boolean;\n anchorEl?: RefObject<HTMLOrSVGElement>;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n}\n\nexport const Popover = forwardRef<HTMLDivElement, Props>(\n ({ children, className, show, placement, offset, transformOrigin, anchorEl, ...rest }, ref) => {\n const elToBePositioned = useRef<HTMLDivElement>(null);\n\n if (show === undefined) {\n throw new Error('Please make sure to define the \"show\" property on your Popover component');\n }\n\n const { top, left, right, bottom, calculatePosition } = usePosition({\n elementToBePositioned: elToBePositioned,\n relativeElement: anchorEl,\n offset: offset,\n placement: placement,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n calculatePosition();\n }, [show]);\n\n return (\n <div ref={ref} {...rest}>\n <div\n ref={elToBePositioned}\n className={`${classes.popover} ${className ?? ''} ${show ? classes.show : ''}`}\n style={{ top: top, left: left, right: right, bottom: bottom }}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n","import { useEffect } from 'react';\n\nexport const useBodyClick = (\n checkFunction: (event: MouseEvent) => boolean,\n callbackFunction: (...args: unknown[]) => unknown,\n dependingStateVariable: React.ComponentState | React.ComponentState[]\n) => {\n function bodyClickListener(event: MouseEvent) {\n if (checkFunction(event)) {\n callbackFunction();\n }\n }\n useEffect(() => {\n window.addEventListener('click', bodyClickListener);\n\n return () => {\n window.removeEventListener('click', bodyClickListener);\n };\n }, [dependingStateVariable]);\n};\n","import React, { createContext } from 'react';\nimport { SnackbarOptionsProps } from '../interfaces';\n\ninterface SnackbarContextProps {\n enqueueSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueSuccessSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueErrorSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextProps>({\n enqueueSnackbar: () => null,\n enqueueSuccessSnackbar: () => null,\n enqueueErrorSnackbar: () => null,\n});\n\ninterface Props {\n initialState: SnackbarContextProps;\n children?: React.ReactNode;\n}\n\nconst SnackbarContextProvider = ({ children, initialState }: Props) => {\n return <SnackbarContext.Provider value={initialState}>{children}</SnackbarContext.Provider>;\n};\n\nexport { SnackbarContextProvider, SnackbarContext, SnackbarContextProps };\n","import React from 'react';\nimport classes from './SnackbarContainer.module.scss';\n\nexport interface Placement {\n vertical: 'top' | 'bottom';\n horizontal: 'start' | 'center' | 'end';\n}\n\nexport interface Props {\n placement: Placement;\n children?: React.ReactNode;\n zIndex?: number;\n className?: string;\n}\n\nexport const SnackbarContainer = ({ placement, children, zIndex, className, ...rest }: Props) => {\n return (\n <div\n {...rest}\n style={{ zIndex }}\n className={`${classes['snackbars']} ${classes[placement.horizontal]} ${\n classes[placement.vertical]\n } ${className ?? ''}`}\n >\n {children}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useAnimation = <RefElement extends HTMLElement>(callback: () => void) => {\n const animatedObjectRef = useRef<RefElement>(null);\n /** We need to store flag that says us when to call the callback */\n const [animationStarted, setAnimationStarted] = useState(false);\n\n const onAnimationEnd = () => animationStarted && callback();\n\n useEffect(() => {\n animatedObjectRef.current?.addEventListener('animationend', onAnimationEnd);\n return () => animatedObjectRef.current?.removeEventListener('animationend', onAnimationEnd);\n }, [animationStarted]);\n\n return {\n ref: animatedObjectRef,\n animationStarted,\n startAnimation: () => setAnimationStarted(true),\n };\n};\n","import React, { useEffect, useRef } from 'react';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Variant, Actions } from '../interfaces';\nimport classes from './SnackbarItem.module.scss';\nimport readyclasses from '../../../readyclasses.module.scss';\nimport { useAnimation } from '../../../hooks/useAnimation';\nimport { Typography } from '../../../Typography/Typography';\n\nconst textColor = 'var(--snackbar-text-color)';\n\nexport interface Props {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n onClose: (key: string) => void;\n closeButtonTitle: string;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarItem = ({\n id,\n title,\n duration,\n variant,\n content,\n actions = [],\n onClose,\n closeButtonTitle,\n}: Props) => {\n const timerHandler = useRef<ReturnType<typeof setTimeout>>();\n const onAnimationEnd = () => onClose(id);\n const { ref, animationStarted, startAnimation } = useAnimation<HTMLDivElement>(onAnimationEnd);\n\n useEffect(() => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n return () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n }, []);\n\n const onMouseEnter = () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n\n const onMouseLeave = () => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n };\n\n const getVariantIcon = () => {\n if (variant === 'error') {\n return Icons.TimesCircleAlt;\n }\n return variant === 'success' ? Icons.CheckmarkCircleBreakout : Icons.InfoCircle;\n };\n\n const actionButtons = actions.map((actionProp, index) => (\n <button\n key={index}\n {...actionProp}\n onClick={(e) => {\n onClose(id);\n actionProp.onClick && actionProp.onClick(e);\n }}\n children={actionProp.label}\n className={classes['action-button']}\n ></button>\n ));\n\n return (\n <div\n ref={ref}\n className={`${classes['snackbar']} ${classes[variant]} ${\n animationStarted ? readyclasses['slide-out'] : readyclasses['slide-in']\n }`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Icon icon={getVariantIcon()} className={classes['icon']} />\n <div className={classes['container']}>\n <div className={classes['headline']}>\n <Typography className={classes['title']} variant=\"h4\" tag=\"span\">\n {title}\n </Typography>\n <IconButton\n onClick={() => startAnimation()}\n className={classes['close-btn']}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} color={textColor} />\n </IconButton>\n </div>\n {!!content && (\n <Typography className={classes['content']} variant=\"body\">\n {content}\n </Typography>\n )}\n {actionButtons.length > 0 && <div className={classes['actions']}>{actionButtons}</div>}\n </div>\n </div>\n );\n};\n","import React, { ReactElement } from 'react';\nimport readyclasses from '../../readyclasses.module.scss';\nimport classes from './Fieldset.module.scss';\nimport { HTMLProps } from '../../interfaces';\nimport { Typography, Variant } from '../../Typography/Typography';\n\nexport interface Props extends HTMLProps<HTMLFieldSetElement> {\n children?: ReactElement | ReactElement[];\n legend: string;\n legendStyle?: Variant;\n hideLegend?: boolean;\n background?: string;\n noPadding?: boolean;\n noBackground?: boolean;\n required?: boolean;\n error?: boolean;\n}\n\nexport const Fieldset = ({\n children,\n className,\n legend,\n legendStyle = 'body',\n hideLegend = false,\n noBackground,\n background = noBackground ? '' : '#FFF',\n noPadding = false,\n disabled = false,\n required = false,\n error = false,\n ...rest\n}: Props) => {\n const renderChildren = () => {\n if (!children) return;\n\n return React.Children.map(children, (child: ReactElement) =>\n React.cloneElement(child, {\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n error: child.props.error !== undefined ? child.props.error : error,\n })\n );\n };\n\n return (\n <fieldset\n {...rest}\n disabled={disabled}\n style={{ backgroundColor: background, ...rest.style }}\n className={`${classes.fieldset} ${noPadding ? classes['no-padding'] : ''} ${className ?? ''}`}\n >\n {legend && <legend className={readyclasses['sr-only']}>{legend}</legend>}\n {legend && !hideLegend && (\n <Typography\n variant={legendStyle}\n tag=\"span\"\n aria-hidden=\"true\"\n className={`${classes['legend']} ${required ? classes['required'] : ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {legend}\n </Typography>\n )}\n {renderChildren()}\n </fieldset>\n );\n};\n","import React, { ReactNode } from 'react';\nimport classes from './FormHelperText.module.scss';\nimport { HTMLProps } from '../../interfaces';\nimport { Typography } from '../../Typography/Typography';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children?: ReactNode;\n error?: boolean;\n}\n\nexport const FormHelperText = ({ children, error, className, ...rest }: Props) => {\n return (\n <Typography\n {...rest}\n variant=\"sub-text\"\n tag=\"div\"\n className={`${classes['form-helper-text']} ${error ? classes.error : ''} ${className ?? ''}`}\n >\n {children}\n </Typography>\n );\n};\n","/** The empty className property on FormHelperText is on purpose! We want to basically \"filter\" out the className from helperProps because we're adding this to the surrounding div. This makes it so also the errormessage receives this styling. */\n\nimport React, { ReactChild } from 'react';\nimport classes from './FormGroup.module.scss';\nimport { FormHelperText, Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { HTMLProps } from '../../interfaces';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children: ReactChild[] | ReactChild;\n error?: boolean;\n errorMessageIcon?: Icons;\n errorMessageIconPosition?: 'before' | 'after';\n errorMessage?: string;\n errorId?: string;\n helperIndent?: number;\n helperText?: string;\n helperId?: string;\n helperProps?: HelperProps;\n}\n\nexport const FormGroup = ({\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition = 'before',\n helperText,\n helperId,\n helperProps,\n helperIndent,\n ...rest\n}: Props) => {\n return (\n <div\n {...rest}\n className={`${classes['form-group']} ${error ? classes.error : ''} ${className ?? ''}`}\n >\n {children}\n\n {(helperText || errorMessage) && (\n <div\n style={{ marginLeft: `${helperIndent}px` }}\n className={`${classes['default-helper']} ${\n helperProps?.className ? helperProps.className : ''\n }`}\n >\n {helperText && !error && (\n <FormHelperText {...helperProps} className={''} id={helperId}>\n {helperText}\n </FormHelperText>\n )}\n {error && errorMessage && (\n <span className={classes['error-message']}>\n <span className={classes.message} id={errorId}>\n {errorMessageIcon && errorMessageIconPosition === 'before' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-before']}`}\n icon={errorMessageIcon}\n />\n )}\n {errorMessage}\n {errorMessageIcon && errorMessageIconPosition === 'after' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-after']}`}\n icon={errorMessageIcon}\n />\n )}\n </span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport classes from './Label.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { HTMLProps } from '../../interfaces';\n\nexport interface Props extends HTMLProps<HTMLLabelElement> {\n children?: string;\n}\n\nexport const Label = ({ children, className, hidden = false, ...rest }: Props) => {\n return (\n <label\n {...rest}\n className={`${hidden ? readyclasses['sr-only'] : ''} ${classes['label']} ${className ?? ''}`}\n >\n {children}\n </label>\n );\n};\n","import React, { useEffect } from 'react';\nimport classes from './Input.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { HTMLProps } from '../../interfaces';\n\nconst dateTypes = ['date', 'time', 'datetime-local'] as const;\n\nexport type Type =\n | 'text'\n | 'email'\n | 'file'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'hidden'\n | typeof dateTypes[number];\n\nexport interface Props extends HTMLProps<HTMLInputElement> {\n wrapperProps?: HTMLProps<HTMLInputElement>;\n labeledBy?: string;\n type: Type;\n error?: boolean;\n}\n\nexport const Input = ({\n error = false,\n className,\n name,\n style,\n wrapperProps,\n type,\n labeledBy,\n ...rest\n}: Props) => {\n useEffect(() => {\n if (name === undefined) {\n throw new Error(\"Please give your <Input /> component a 'name' attribute\");\n }\n }, []);\n\n const inputClassNames = [classes['input']];\n error && inputClassNames.push(classes['error']);\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n inputClassNames.push(classes['remove-extra-indent']);\n className && inputClassNames.push(className);\n\n const iconClassNames = [classes['warning']];\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n iconClassNames.push(classes['extra-indent']);\n\n return (\n <div\n {...wrapperProps}\n style={{ ...style }}\n className={`${classes['input-wrapper']} ${wrapperProps?.className ?? ''} ${\n type === 'hidden' ? readyclasses['hidden'] : ''\n }`}\n >\n <input\n {...rest}\n aria-labelledby={labeledBy}\n type={type}\n name={name}\n className={inputClassNames.join(' ')}\n />\n {error && <Icon className={iconClassNames.join(' ')} icon={Icons.Warning} />}\n </div>\n );\n};\n","import classes from './Select.module.scss';\n\nimport React, {\n HTMLProps,\n ReactElement,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Input } from '../Input/Input';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\nimport { useBodyClick } from '../../hooks/useBodyClick';\nimport { Position } from '../../hooks/usePosition';\nimport { useScroll } from '../../hooks/useScroll';\n\nexport interface Props extends FormElement<HTMLSelectElement> {\n children: ReactElement[];\n name?: string;\n labeledBy?: string;\n describedBy?: string;\n placeholder?: string;\n searchPlaceholder?: string;\n className?: string;\n value?: string;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>, child?: ReactElement) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\nexport const Select = ({\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n searchPlaceholder = 'Search item',\n className,\n error = false,\n value = '',\n onChange,\n onClear,\n ...rest\n}: Props) => {\n const [expanded, setExpanded] = useState(false);\n const [filter, setFilter] = useState('');\n const [display, setDisplay] = useState('');\n const [listPosition, setListPosition] = useState<Partial<Position>>({});\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n\n useBodyClick(\n (event: MouseEvent) => !(event.target as Element).closest('.custom-select') && expanded,\n () => {\n setExpanded(!expanded);\n },\n expanded\n );\n\n const rePositionList = () => {\n if (!expanded || !optionListReference.current || !containerReference.current) {\n return;\n }\n const windowHeight = window.innerHeight;\n const containerTopWithListHeight =\n containerReference.current.getBoundingClientRect().bottom -\n containerReference.current.getBoundingClientRect().height +\n optionListReference.current.getBoundingClientRect().height;\n\n if (containerTopWithListHeight > windowHeight) {\n setListPosition({ top: 'initial', bottom: 0 });\n } else {\n setListPosition({ top: 0, bottom: 'initial' });\n }\n };\n\n useScroll(rePositionList, [expanded]);\n\n useLayoutEffect(() => {\n rePositionList();\n }, [expanded]);\n\n const onOptionChangeHandler = (child: ReactElement) => (event: React.ChangeEvent) => {\n /**\n * We expose this to the outside inside of the onChange function as a parameter along with an optional second\n * parameter of the option that was clicked.\n */\n\n setDisplay(child.props.children);\n\n let newValue;\n let multiple = false; // Potential support for future multiple select. This should be a prop obviously.\n\n if (multiple) {\n /** We will implement the mulitple select in the next iteration */\n } else {\n newValue = child.props.value;\n }\n\n if (onChange) {\n // Redefine target to allow name and value to be read.\n // This allows seamless integration with the most popular form libraries.\n // Clone the event to not override `target` of the original event.\n // Don't know how to fix this any.. compiler whines that it can't construct it otherwise.\n const nativeEvent: any = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n\n Object.defineProperty(clonedEvent as React.ChangeEvent<HTMLSelectElement>, 'target', {\n writable: true,\n value: { value: newValue },\n });\n\n onChange(clonedEvent as React.ChangeEvent<HTMLSelectElement>, child);\n }\n\n setDisplay((event.currentTarget as HTMLElement).innerText);\n setExpanded(false);\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n onOptionSelect: onOptionChangeHandler(child),\n selected: child.props.value === value,\n filter: filter,\n })\n );\n\n const renderSearch = () => (\n <Input\n autoFocus\n onChange={filterResults}\n className={classes['select-search']}\n wrapperProps={{ className: classes['select-search-wrapper'] }}\n type=\"text\"\n name=\"search-option\"\n placeholder={searchPlaceholder}\n />\n );\n\n const filterResults = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFilter(event.currentTarget.value);\n };\n\n const statusIcon = () => {\n if (error) {\n return <Icon className={classes['warning']} icon={Icons.Warning} />;\n }\n if (value.length !== 0 && onClear) {\n return <Icon tag=\"div\" icon={Icons.TimesThin} onClick={onClear} />;\n }\n return null;\n };\n\n /** Set initial display value */\n useEffect(() => {\n for (let child of children) {\n if (child.props.value === value) {\n setDisplay(child.props.children);\n }\n }\n }, []);\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n\n return (\n <div\n {...(rest as HTMLProps<HTMLDivElement>)}\n ref={containerReference}\n className={`custom-select ${classes.select} ${additionalClasses.join(' ')} ${\n className ?? ''\n }`}\n >\n <button\n onClick={() => setExpanded(!expanded)}\n type=\"button\"\n name={name}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n >\n <div data-display className={classes['selected']}>\n {value.length === 0 && placeholder && (\n <span className={classes['placeholder']}>{placeholder}</span>\n )}\n {value.length > 0 && <span>{display}</span>}\n </div>\n <div className={classes['status']}>\n {statusIcon()}\n <Icon className={classes['triangle-down']} icon={Icons.TriangleDown} />\n </div>\n </button>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes['list-wrapper']}`}\n style={{ display: expanded ? 'block' : 'none', ...listPosition }}\n >\n {Array.isArray(children) && children.length > 10 && renderSearch()}\n <ul role=\"listbox\" tabIndex={-1}>\n {renderOptions()}\n </ul>\n </div>\n </div>\n );\n};\n","import React, { useLayoutEffect } from 'react';\n\nexport const useScroll = (\n callbackFunction: (event: Event) => unknown,\n dependingStateVariable: React.ComponentState[] = []\n) => {\n const scrollListener = (event: Event) => callbackFunction(event);\n\n useLayoutEffect(() => {\n window.addEventListener('scroll', scrollListener);\n\n return () => {\n window.removeEventListener('scroll', scrollListener);\n };\n }, [...dependingStateVariable]);\n};\n","import React from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\nimport classes from './Textarea.module.scss';\n\nexport interface Props extends FormElement<HTMLTextAreaElement> {\n wrapperClassName?: string;\n errorClassName?: string;\n}\n\nexport const Textarea = ({\n error = false,\n disabled = false,\n className,\n rows = 4,\n wrapperClassName,\n errorClassName,\n ...rest\n}: Props) => {\n return (\n <div className={`${classes['textarea-wrapper']} ${wrapperClassName ? wrapperClassName : ''}`}>\n <textarea\n {...rest}\n rows={rows}\n className={`${error ? classes['error'] : ''} ${classes['textarea']} ${className ?? ''}`}\n disabled={disabled}\n />\n {error && (\n <Icon className={`${classes['warning']} ${errorClassName ?? ''}`} icon={Icons.Warning} />\n )}\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\nimport { Type as InputTypes } from '../Form/Input/Input';\n\nexport const useWrapper = (value?: string, placeholder?: string, type?: InputTypes) => {\n const [helperId] = useState(generateID(20));\n const [errorId] = useState(generateID(20));\n const [labelId] = useState(generateID(20));\n const [floatingLabelActive, setFloatingLabelActive] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n\n useEffect(() => {\n if (value?.length || placeholder || type === 'datetime-local' || type === 'time') {\n setFloatingLabelActive(true);\n }\n }, []);\n\n useEffect(() => {\n if (value?.length || hasFocus) {\n setFloatingLabelActive(true);\n } else if (!placeholder && !hasFocus && type !== 'datetime-local' && type !== 'time') {\n setFloatingLabelActive(false);\n }\n }, [value, placeholder, type, hasFocus]);\n\n return {\n helperId,\n errorId,\n labelId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n };\n};\n","import React, { ReactElement } from 'react';\nimport { FormGroup, Props as FormGroupProps } from '../../FormGroup/FormGroup';\nimport { Label, Props as LabelProps } from '../../Label/Label';\nimport classes from './Wrapper.module.scss';\nimport { Props as HelperProps } from '../../FormHelperText/FormHelperText';\nimport { HTMLProps } from '../../../interfaces';\n\nexport interface Props extends Omit<FormGroupProps, 'children'> {\n children: ReactElement | ReactElement[];\n floatingLabelActive?: boolean;\n floatingLabel?: boolean;\n helperIndent?: number;\n label?: string;\n labelProps?: LabelProps;\n name: string;\n /** This does NOT add validation! It simply adds an asterix on the Label! */\n required?: boolean;\n innerClassName?: string;\n}\n\n/** For components that extend this component we create an interface (InputWrapper, SelectWrapper, etc.) */\nexport interface WrapperProps extends HTMLProps<HTMLDivElement> {\n errorMessage?: string;\n error: boolean;\n helperText?: string;\n helperProps?: HelperProps;\n label?: string;\n name: string;\n required?: boolean;\n}\n\nexport const Wrapper = ({\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition,\n helperText,\n helperId,\n floatingLabel = true,\n floatingLabelActive,\n required,\n helperProps,\n helperIndent,\n labelProps,\n label,\n disabled,\n name,\n innerClassName,\n ...rest\n}: Props) => {\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n disabled,\n })\n );\n\n const labelClasses = [];\n\n floatingLabel && labelClasses.push(classes['floating-label']);\n floatingLabel && floatingLabelActive && labelClasses.push(classes['floating-label-active']);\n labelProps?.className && labelClasses.push(labelProps.className);\n required && labelClasses.push(classes['required']);\n error && labelClasses.push(classes['error']);\n\n return (\n <div {...rest} className={`${classes.wrapper} ${className ? className : ''}`}>\n <FormGroup\n error={error}\n errorMessage={errorMessage}\n errorId={errorId}\n errorMessageIcon={errorMessageIcon}\n errorMessageIconPosition={errorMessageIconPosition}\n helperText={helperText}\n helperId={helperId}\n helperProps={helperProps}\n helperIndent={helperIndent}\n >\n <div\n className={`${floatingLabel ? classes['floating-wrapper'] : ''} ${\n innerClassName ? innerClassName : ''\n }`}\n >\n {label && (\n <Label\n {...labelProps}\n className={`${classes.label} ${labelClasses.join(' ')}`}\n htmlFor={name}\n >\n {label}\n </Label>\n )}\n {renderChildren()}\n </div>\n </FormGroup>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\nexport interface ConfigObject {\n name: string | undefined;\n errorMessage?: string;\n error?: boolean;\n parentErrorId?: string;\n helperText?: string;\n parentHelperId?: string;\n}\n\nexport const useFormSelector = (configObject: ConfigObject) => {\n const [identifier] = useState(generateID(15, configObject.name));\n const [describedBy, setDescribedBy] = useState('');\n const [errorId] = useState(generateID(15, configObject.errorMessage));\n\n useEffect(() => {\n if (configObject.error && configObject.parentErrorId) {\n setDescribedBy(configObject.parentErrorId);\n }\n\n if (\n (!configObject.error && configObject.helperText) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.helperText)\n ) {\n setDescribedBy(`${identifier}`);\n }\n\n if (\n (!configObject.error && !configObject.helperText && configObject.parentHelperId) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.parentHelperId)\n ) {\n setDescribedBy(`${configObject.parentHelperId}`);\n }\n\n if (configObject.errorMessage && !configObject.parentErrorId && configObject.error) {\n setDescribedBy(errorId);\n }\n }, [identifier, configObject.error, configObject.parentErrorId]);\n\n return {\n describedBy,\n errorId,\n identifier,\n };\n};\n","import React, { ReactNode } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { HTMLProps } from '../../interfaces';\nimport { FormHelperText, Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './FormSelectorWrapper.module.scss';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children?: ReactNode;\n nestedChildren?: ReactNode;\n containerProps: HTMLProps<HTMLDivElement>;\n helperProps?: FormHelperTextProps;\n error?: boolean;\n disabled?: boolean;\n helperText?: string;\n errorMessage?: string;\n parentHelperId?: string;\n parentErrorId?: string;\n errorId: string;\n identifier: string;\n}\n\nexport const FormSelectorWrapper = ({\n children,\n className,\n nestedChildren,\n containerProps,\n helperProps,\n error,\n disabled,\n helperText,\n errorMessage,\n parentErrorId,\n errorId,\n identifier,\n ...rest\n}: Props) => {\n return (\n <div\n {...rest}\n className={`${error ? classes['error'] : ''} ${disabled ? classes['disabled'] : ''} ${\n className ?? ''\n }`}\n >\n <div {...containerProps}>{children}</div>\n {helperText && (!error || parentErrorId || !errorMessage) && (\n <FormHelperText\n {...helperProps}\n id={`${identifier}`}\n className={`${classes['helper-text']} ${helperProps?.className ?? ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {helperText}\n </FormHelperText>\n )}\n {errorMessage && !parentErrorId && error && (\n <span className={classes['error-message']}>\n <Icon className={classes['error-icon']} icon={Icons.Warning} />\n <span id={errorId}>{errorMessage}</span>\n </span>\n )}\n {nestedChildren}\n </div>\n );\n};\n","import React, { ReactElement, ReactNode, useEffect } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './Checkbox.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport { FormSelector } from '../form.interfaces';\nimport { HTMLProps } from '../../interfaces';\nimport { FormSelectorWrapper } from '../FormSelectorWrapper/FormSelectorWrapper';\n\nconst isToggle = (children: ReactNode) => (children as ReactElement)?.props?.['data-toggle'];\n\nexport interface CheckboxProps extends FormSelector<HTMLInputElement> {\n children: ReactNode;\n label?: string;\n indeterminate?: boolean;\n helperProps?: FormHelperTextProps;\n wrapperProps?: HTMLProps<HTMLDivElement>;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const Checkbox = ({\n children,\n name,\n helperText,\n helperProps,\n indeterminate,\n parentErrorId,\n errorMessage,\n disabled,\n label,\n parentHelperId,\n className,\n error,\n checked = false,\n wrapperProps,\n onChange,\n ...rest\n}: CheckboxProps) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n useEffect(() => {\n if (!name) {\n console.error(\"Please pass a 'name' prop to your <Checkbox> component.\");\n }\n\n if (typeof children === 'object' && !isToggle(children) && indeterminate === undefined) {\n throw new Error(\n 'If you have nested checkboxes you have to manage the indeterminate state by passing a boolean to the `indeterminate` prop.'\n );\n }\n }, []);\n\n const determineLabel = () => {\n if (label) {\n return label;\n } else if (children === undefined) {\n throw new Error(\n 'Please make sure to pass either a string or more Checkbox components as a child of your Checkbox component.'\n );\n }\n\n if (typeof children === 'string') {\n return children;\n }\n\n throw new Error(\n 'If you pass Checkboxes as a child component (to create nested checkbox tree) you need to pass a label to the parent checkbox.'\n );\n };\n\n const renderNestedCheckboxes = () => (\n <ul className={classes['checkbox-list']}>\n {React.Children.map(children as ReactNode[], (child) => {\n return (\n <li>\n <Checkbox\n {...(child as ReactElement).props}\n parentHelperId={parentHelperId}\n parentErrorId={parentErrorId}\n error={error}\n disabled={disabled ? disabled : (child as CheckboxProps).disabled}\n >\n {(child as ReactElement).props.children}\n </Checkbox>\n </li>\n );\n })}\n </ul>\n );\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) {\n return;\n }\n onChange && onChange(event);\n };\n\n const renderToggle = () => React.Children.toArray(children).filter(isToggle);\n\n const iconClasses = [classes['input'], disabled ? classes['disabled'] : ''];\n\n /** Default return value is the default checkbox */\n return (\n <FormSelectorWrapper\n {...wrapperProps}\n className={`${classes['checkbox-wrapper']} ${className ? className : ''}`}\n containerProps={{ className: classes['checkbox-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n nestedChildren={\n typeof children === 'object' && !isToggle(children) && renderNestedCheckboxes()\n }\n >\n <input\n {...rest}\n disabled={disabled}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n checked={checked}\n onChange={onChangeHandler}\n aria-invalid={error as boolean}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-describedby={describedBy}\n id={`${identifier}-checkbox`}\n name={name}\n type=\"checkbox\"\n />\n {renderToggle()}\n\n {indeterminate && <Icon className={iconClasses.join(' ')} icon={Icons.MinusSquare} />}\n {checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.CheckmarkSquare} />\n )}\n {!checked && !indeterminate && <Icon className={iconClasses.join(' ')} icon={Icons.Square} />}\n <label htmlFor={`${identifier}-checkbox`}>{determineLabel()}</label>\n </FormSelectorWrapper>\n );\n};\n","import React, { Fragment } from 'react';\nimport classes from './BaseWizardSteps.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\n\ntype StepState = 'finished' | 'current' | 'future';\n\nexport interface Step {\n label: string;\n disabled?: boolean;\n}\n\nexport interface Props extends Omit<React.HTMLProps<HTMLDivElement>, 'onClick'> {\n steps: Step[];\n currentStepNo: number;\n onClick?: (stepNo: number) => void;\n futureStepsClickable?: boolean;\n stepScreenReaderLabel: string;\n}\n\nexport const BaseWizardSteps = ({\n steps,\n currentStepNo,\n onClick,\n futureStepsClickable = false,\n stepScreenReaderLabel,\n ...restProps\n}: Props) => {\n const getStepState = (stepNo: number): StepState => {\n if (currentStepNo === stepNo) {\n return 'current';\n } else if (stepNo < currentStepNo) {\n return 'finished';\n }\n return 'future';\n };\n\n const getStepContent = (stepState: StepState, index: number, disabled?: boolean) => {\n const stepNumberString = String(index + 1);\n if (stepState === 'finished') {\n return disabled ? null : <Icon className={classes['checkmark']} icon={Icons.Checkmark} />;\n } else {\n return (\n <Fragment>\n <span className={readyclasses['sr-only']}>{stepScreenReaderLabel} </span>\n {stepNumberString}\n </Fragment>\n );\n }\n };\n\n const generatedSteps = steps.map((step, index) => {\n const stepState = getStepState(index);\n const disabledStyleClassName = step.disabled ? classes['disabled'] : '';\n const clickableClassName = futureStepsClickable ? classes['clickable'] : '';\n\n return (\n <button\n key={step.label.toLowerCase().replace(/\\s/, '-')}\n disabled={\n step.disabled ||\n (stepState === 'future' && !futureStepsClickable) ||\n stepState === 'current'\n }\n aria-current={stepState === 'current' ? 'step' : undefined}\n onClick={() => onClick && onClick(index)}\n className={`${classes['wizard-element']} ${classes[stepState]} ${clickableClassName} ${disabledStyleClassName}`}\n >\n <div className={classes['number-wrapper']}>\n <span className={classes['number']}>\n {getStepContent(stepState, index, step.disabled)}\n </span>\n </div>\n <div className={classes['two-line-text-overflow']}>\n <span className={classes['label']}>{step.label}</span>\n </div>\n </button>\n );\n });\n\n return (\n <div {...restProps} className={classes['wizard']}>\n {generatedSteps}\n </div>\n );\n};\n","import { Reducer } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from './Wizard';\n\ntype WizardStateType = {\n steps: Step[];\n currentStepNo: number;\n mode: WizardMode;\n stepScreenReaderLabel: string;\n};\n\ninterface SetWizardStateAction {\n type: 'SET_STATE';\n payload: {\n steps: Step[];\n mode: WizardMode;\n stepScreenReaderLabel: string;\n };\n}\n\ninterface ChangeCurrentStepNoAction {\n type: 'CHANGE_CURRENT_STEP_NO';\n payload: number;\n}\n\nconst setWizardState = (\n steps: Step[],\n mode: WizardMode,\n stepScreenReaderLabel: string\n): SetWizardStateAction => {\n return { type: 'SET_STATE', payload: { steps, mode, stepScreenReaderLabel } };\n};\n\nconst changeCurrentStepNo = (currentStepNo: number): ChangeCurrentStepNoAction => {\n return { type: 'CHANGE_CURRENT_STEP_NO', payload: currentStepNo };\n};\n\ntype WizardActions = SetWizardStateAction | ChangeCurrentStepNoAction;\n\nconst reducer: Reducer<WizardStateType, WizardActions> = (state, action) => {\n switch (action.type) {\n case 'SET_STATE':\n return { ...state, ...action.payload };\n case 'CHANGE_CURRENT_STEP_NO':\n return { ...state, currentStepNo: action.payload };\n default:\n return state;\n }\n};\n\nexport { setWizardState, changeCurrentStepNo, reducer, WizardActions, WizardStateType };\n","import React, { createContext, Dispatch, useReducer } from 'react';\nimport { WizardActions, WizardStateType, reducer } from './wizardStateReducer';\n\nconst WizardStateContext = createContext<{\n state: WizardStateType;\n dispatch: Dispatch<WizardActions>;\n}>({\n state: {} as WizardStateType,\n dispatch: () => null,\n});\n\nexport interface Props {\n initialState: WizardStateType;\n children?: React.ReactNode;\n}\n\nconst WizardStateProvider = ({ children, initialState }: Props) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n return (\n <WizardStateContext.Provider value={{ state, dispatch }}>\n {children}\n </WizardStateContext.Provider>\n );\n};\n\nexport { WizardStateProvider, WizardStateContext };\n","import React, { Fragment, useContext, useEffect } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardStateContext, WizardStateProvider } from './WizardStateProvider';\nimport { setWizardState } from './wizardStateReducer';\n\nexport type WizardMode = 'add' | 'edit';\n\nexport interface Props {\n steps: Step[];\n mode: WizardMode;\n initialStepNo?: number;\n onStepChange: (stepNo: number) => void;\n stepScreenReaderLabel: string;\n children: React.ReactNode;\n}\n\nconst useSetWizardState = (steps: Step[], mode: WizardMode, stepScreenReaderLabel: string) => {\n const { dispatch } = useContext(WizardStateContext);\n\n useEffect(() => {\n dispatch(setWizardState(steps, mode, stepScreenReaderLabel));\n }, [steps, mode, stepScreenReaderLabel]);\n};\n\nconst useStepChanging = (onStepChange: (stepNo: number) => void) => {\n const {\n state: { currentStepNo },\n } = useContext(WizardStateContext);\n\n useEffect(() => {\n onStepChange(currentStepNo);\n }, [currentStepNo]);\n};\n\nconst WizardContent = ({ steps, mode, stepScreenReaderLabel, onStepChange, children }: Props) => {\n useSetWizardState(steps, mode, stepScreenReaderLabel);\n useStepChanging(onStepChange);\n\n return <Fragment>{children}</Fragment>;\n};\n\nexport const Wizard = (props: Props) => {\n const { steps, initialStepNo: currentStepNo = 0, mode, stepScreenReaderLabel } = props;\n return (\n <WizardStateProvider initialState={{ steps, currentStepNo, mode, stepScreenReaderLabel }}>\n <WizardContent {...props} />\n </WizardStateProvider>\n );\n};\n","import React, { Fragment, HTMLAttributes, ReactChild, useEffect, useState } from 'react';\n\ninterface CSSProperties {\n colorPrimary?: string;\n colorSecondary?: string;\n colorTertiary?: string;\n defaultLineHeight?: string;\n buttonBorderRadius?: string;\n buttonBorderWidth?: string;\n buttonFontSize?: string;\n buttonBorderStyle?: string;\n buttonFillTextColor?: string;\n buttonFillBackgroundColor?: string;\n buttonOutlineHoverTextColor?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputBorderWidth?: string;\n inputBorderStyle?: string;\n modalShadowColor?: string;\n modalBackgroundColor?: string;\n modalHeaderBackgroundColor?: string;\n snackbarTextColor?: string;\n snackbarInfoBackgroundColor?: string;\n snackbarSuccessBackgroundColor?: string;\n snackbarErrorBackgroundColor?: string;\n snackbarBorderRadius?: string;\n default?: string;\n success?: string;\n error?: string;\n disabled?: string;\n greyedOut?: string;\n warning?: string;\n fontFamily?: string;\n fontFamilyCode?: string;\n fontSize?: string;\n fontSizeH1?: string;\n fontSizeH2?: string;\n fontSizeH3?: string;\n fontSizeH4?: string;\n fontSizeSub?: string;\n fontSizeCode?: string;\n}\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n children?: ReactChild;\n properties?: CSSProperties;\n}\n\nexport const BaseStyling = ({ children, properties = {} }: Props) => {\n const defaultProperties: CSSProperties = {\n colorPrimary: '#9e006b',\n colorSecondary: '#003b5e',\n colorTertiary: '#ff1e4e',\n defaultLineHeight: '26px',\n buttonBorderRadius: '20px',\n buttonBorderWidth: '2px',\n buttonFontSize: '1rem',\n buttonBorderStyle: 'solid',\n buttonFillTextColor: '#FFF',\n buttonFillBackgroundColor: '#FFF',\n buttonOutlineHoverTextColor: '#FFF',\n inputBorderColor: '#e9e9eb',\n inputBorderRadius: '8px',\n inputBorderWidth: '1px',\n inputBorderStyle: 'solid',\n modalShadowColor: 'rgba(0, 0, 0, 0.16)',\n modalBackgroundColor: '#F5F8F8',\n modalHeaderBackgroundColor: '#FFF',\n snackbarTextColor: '#fff',\n snackbarInfoBackgroundColor: '#003b5e',\n snackbarSuccessBackgroundColor: '#008a28',\n snackbarErrorBackgroundColor: '#e22a1d',\n snackbarBorderRadius: '8px',\n default: '#0f0f1e',\n success: '#008a28',\n error: '#e22a1d',\n disabled: '#e9e9eb',\n greyedOut: '#6f6f76',\n warning: '#ff6105',\n fontFamily: \"'Red Hat Display', sans-serif\",\n fontFamilyCode: \"'Red Hat Mono', sans-serif\",\n fontSize: '1rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.625rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.25rem',\n fontSizeSub: '.75rem',\n fontSizeCode: '1rem',\n };\n\n /** We need a loading state, because otherwise you see the colors flash from the default to the possible overridden ones. */\n const [isLoading, setIsLoading] = useState(true);\n\n /** Set the actual CSS properties on the HTML :root object */\n const setCSSProperties = (CSSPropertiesObject: CSSProperties) => {\n for (const [key, value] of Object.entries(CSSPropertiesObject)) {\n const formattedPropertyName = key.replaceAll(/([A-Z])/g, (val) => `-${val.toLowerCase()}`);\n document.documentElement.style.setProperty(`--${formattedPropertyName}`, value);\n }\n };\n\n /** Check if the properties prop object is filled with anything. If it is, we want to shallow merge it with the default BaseStyling. */\n useEffect(() => {\n if (Object.keys(properties).length !== 0) {\n const mergedState = { ...defaultProperties, ...properties };\n setCSSProperties(mergedState);\n } else {\n setCSSProperties(defaultProperties);\n }\n setIsLoading(false);\n }, [properties]);\n\n /** Only render if we're not loading */\n return !isLoading ? <Fragment>{children}</Fragment> : null;\n};\n","import React, { Fragment, HTMLProps, ReactElement } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport { Link, Props as LinkProps } from '../Link/Link';\nimport { Typography } from '../Typography/Typography';\nimport classes from './Breadcrumbs.module.scss';\n\ntype ChildrenType = ReactElement<LinkProps, typeof Link>;\n\nexport interface Props extends HTMLProps<HTMLElement> {\n children: ChildrenType | ChildrenType[];\n 'aria-label': string;\n}\n\nexport const Breadcrumbs = ({\n children,\n 'aria-label': ariaLabel,\n className = '',\n ...rest\n}: Props) => {\n const items = React.Children.map(children, (child, index) => {\n const isLastElement = Array.isArray(children) ? index === children.length - 1 : true;\n if (isLastElement) {\n return (\n <Typography\n key={child.key}\n variant=\"body\"\n tag=\"span\"\n className={classes['last']}\n aria-current=\"page\"\n >\n {child.props.children}\n </Typography>\n );\n } else {\n return (\n <Fragment key={child.key}>\n {React.cloneElement(child)}\n <Icon icon={Icons.ChevronRight} className={classes['icon']} />\n </Fragment>\n );\n }\n });\n return (\n <nav {...rest} aria-label={ariaLabel} className={`${classes['breadcrumbs']} ${className}`}>\n {items}\n </nav>\n );\n};\n","import React, { ReactElement, useEffect } from 'react';\nimport classes from './CheckboxWrapper.module.scss';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends WrapperProps {\n children: ReactElement[] | ReactElement;\n fieldsetProps: FieldsetProps;\n}\n\nexport const CheckboxWrapper = ({\n children,\n error = false,\n helperText,\n helperProps,\n fieldsetProps,\n ...rest\n}: Props) => {\n const { errorId, helperId } = useWrapper();\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a title prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this title prop through the fieldsetProps prop by passing an object (fieldsetProps={{ title: \"title here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n parentHelperId: helperText ? helperId : false,\n disabled: rest.disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps}>\n <Wrapper\n {...rest}\n label=\"\"\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['checkbox-wrapper-helper']} ${\n error ? classes['checkbox-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorMessageIcon={Icons.Warning}\n errorId={errorId}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n};\n","import React, { HTMLProps, ReactElement, useEffect, useRef, useState } from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport { Props as IconButtonProps } from '../Button/IconButton';\nimport { Popover } from '../Popover/Popover';\nimport { Placement, Offset } from '../hooks/usePosition';\nimport { Props as ContextMenuItemProps } from './ContextMenuItem';\nimport classes from './ContextMenu.module.scss';\nimport { useBodyClick } from '../hooks/useBodyClick';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;\n children: ReactElement<ContextMenuItemProps> | ReactElement<ContextMenuItemProps>[];\n placement?: Placement;\n transformOrigin?: Placement;\n offset?: Offset;\n id: string;\n show?: boolean;\n domRoot?: HTMLElement;\n onShow?: () => void;\n onClose?: () => void;\n}\n\nexport const ContextMenu = ({\n trigger,\n children,\n id,\n show = false,\n onShow,\n onClose,\n placement = { horizontal: 'right', vertical: 'top' },\n offset = { top: 0, bottom: 0, left: 0, right: 0 },\n transformOrigin = { horizontal: 'left', vertical: 'top' },\n domRoot = document.body,\n ...rest\n}: Props) => {\n const anchorEl = useRef<HTMLButtonElement>(null);\n const [showContextMenu, setShowContextMenu] = useState(show);\n\n if (!id) {\n throw new Error('You need to provide an ID to the context menu');\n }\n\n useBodyClick(\n (event) => {\n return showContextMenu && anchorEl.current !== event.target;\n },\n () => {\n setShowContextMenu(false);\n },\n showContextMenu\n );\n\n useEffect(() => {\n if (showContextMenu === true) {\n onShow && onShow();\n } else {\n onClose && onClose();\n }\n }, [showContextMenu]);\n\n const renderTrigger = () =>\n React.cloneElement(trigger, {\n id: id,\n ['aria-haspopup']: 'true',\n ['aria-controls']: `${id}-menu`,\n ['aria-expanded']: show,\n onClick: () => setShowContextMenu(!showContextMenu),\n ref: anchorEl,\n });\n\n return (\n <div {...rest} className={classes['context-menu']}>\n {renderTrigger()}\n {createPortal(\n <Popover\n placement={placement}\n transformOrigin={transformOrigin}\n offset={offset}\n anchorEl={anchorEl}\n show={showContextMenu}\n >\n <ul className={classes.menu} id={`${id}-menu`} aria-describedby={id} role=\"menu\">\n {children}\n </ul>\n </Popover>,\n domRoot\n )}\n </div>\n );\n};\n","import React, { HTMLProps } from 'react';\nimport classes from './ContextMenuItem.module.scss';\n\nexport interface Props extends Omit<HTMLProps<HTMLLIElement>, 'onClick'> {\n children?: string;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const ContextMenuItem = ({ children, onClick, ...rest }: Props) => {\n return (\n <li {...rest} role=\"menuitem\" className={classes['context-menu-item']}>\n <button onClick={(event) => onClick && onClick(event)}>{children}</button>\n </li>\n );\n};\n","import React, { Fragment, useState } from 'react';\nimport { Modal, Props as ModalProps } from '../Modal/Modal';\nimport { ModalHeader, Props as ModalHeaderProps } from '../Modal/ModalHeader/ModalHeader';\nimport {\n DiscardChangesDialog,\n Props as DiscardChangesDialogProps,\n} from './DiscardChangesDialog/DiscardChangesDialog';\n\nexport interface Props extends Omit<ModalProps, 'onClose'> {\n hasUnsavedChanges: () => boolean;\n onClose: (event?: React.MouseEvent<HTMLElement>) => unknown;\n headerProps: Omit<ModalHeaderProps, 'onClose' | 'id'>;\n discardChangedDialogProps: Omit<\n DiscardChangesDialogProps,\n 'open' | 'onKeepEditing' | 'onDiscardChanges'\n >;\n}\n\nexport const DiscardChangesModal = ({\n id,\n onClose,\n children,\n hasUnsavedChanges,\n headerProps,\n discardChangedDialogProps,\n ...rest\n}: Props) => {\n const [openDiscardChangesDialog, setOpenDiscardChangesDialog] = useState(false);\n\n const onCloseWrapper = () =>\n hasUnsavedChanges() ? setOpenDiscardChangesDialog(true) : onClose();\n\n const onDialogKeepEditing = () => {\n setOpenDiscardChangesDialog(false);\n };\n\n const onDialogDiscardChanges = () => {\n setOpenDiscardChangesDialog(false);\n onClose();\n };\n\n return (\n <Fragment>\n <Modal id={id} onClose={onCloseWrapper} {...rest}>\n <ModalHeader {...headerProps} id={`${id}-label`} onClose={onCloseWrapper} />\n {children}\n </Modal>\n <DiscardChangesDialog\n {...discardChangedDialogProps}\n open={openDiscardChangesDialog}\n onKeepEditing={onDialogKeepEditing}\n onDiscardChanges={onDialogDiscardChanges}\n />\n </Fragment>\n );\n};\n","import React, { HTMLProps, ReactNode } from 'react';\nimport classes from './Form.module.scss';\n\nexport interface Props extends HTMLProps<HTMLFormElement> {\n children?: ReactNode;\n}\n\nexport const Form = ({ children, className, ...rest }: Props) => {\n return (\n <form className={`${classes.form} ${className ?? ''}`} {...rest}>\n {children}\n </form>\n );\n};\n","import React, { ReactElement } from 'react';\nimport classes from './FormControl.module.scss';\nimport { HTMLProps } from '../../interfaces';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children: ReactElement | ReactElement[];\n grid?: 1 | 2 | 3;\n align?: 'top' | 'start' | 'middle' | 'center' | 'bottom' | 'end' | 'stretch';\n error?: boolean;\n}\n\nexport const FormControl = ({\n children,\n disabled,\n error,\n className,\n grid,\n align = 'center',\n ...rest\n}: Props) => {\n const renderChildren = () =>\n React.Children.map(children, (child) => {\n if (!child) {\n return null;\n }\n\n const childElement = React.cloneElement(child, {\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n error: child.props.error !== undefined ? child.props.error : error,\n });\n\n if (grid && grid > 1) {\n return <div className={`${classes['col-' + grid]} ${classes.column}`}>{childElement}</div>;\n }\n\n return childElement;\n });\n\n return (\n <div\n {...rest}\n data-formcontrol\n className={`${classes['form-control']} ${className ? className : ''} ${\n grid && grid > 1 ? `${classes.grid} ${classes['grid-' + grid]}` : ''\n } ${classes[align]}`}\n >\n {renderChildren()}\n </div>\n );\n};\n","import React from 'react';\nimport { Input, Type, Props as InputProps } from '../../Input/Input';\nimport classes from './InputWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface OptionalInputProps extends Omit<InputProps, 'type'> {}\n\nexport interface Props extends WrapperProps {\n label: string;\n type: Type;\n name: string;\n inputProps?: OptionalInputProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n}\n\nexport const InputWrapper = ({\n type,\n name,\n inputProps,\n helperText,\n helperProps,\n value,\n error,\n onChange,\n onBlur,\n onFocus,\n ...rest\n}: Props) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, inputProps?.placeholder, type);\n\n return (\n <Wrapper\n {...rest}\n name={name}\n className={classes['input-wrapper']}\n labelProps={{\n id: labelId,\n className: `${classes['input-label']} ${hasFocus ? classes['focus'] : ''}`,\n }}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n error={error}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['input-wrapper-helper']} ${helperProps?.className ?? ''} `,\n }}\n helperIndent={20}\n >\n <Input\n {...inputProps}\n aria-labelledby={labelId}\n aria-describedby={error ? errorId : helperId}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value ||\n inputProps?.placeholder?.length ||\n type === 'datetime-local' ||\n type === 'time'\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n className={floatingLabelActive ? classes['floating-label'] : ''}\n name={name}\n error={error}\n id={name}\n value={value}\n type={type}\n />\n </Wrapper>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport classes from './Select.module.scss';\nimport { HTMLProps } from '../../interfaces';\n\nexport interface Props extends HTMLProps<HTMLLIElement> {\n children: string;\n value: string;\n disabled?: boolean;\n selected?: boolean;\n label?: string;\n filter?: string;\n onOptionSelect?: (event: React.SyntheticEvent<HTMLLIElement>) => void;\n}\n\nexport const Option = ({\n children,\n className,\n selected = false,\n onOptionSelect,\n disabled,\n filter,\n ...rest\n}: Props) => {\n const [showOption, setShowOption] = useState(true);\n\n const onSelectHandler = (event: React.SyntheticEvent<HTMLLIElement>) => {\n if (onOptionSelect) onOptionSelect(event);\n };\n\n useEffect(() => {\n if (filter) {\n setShowOption(children.toLowerCase().match(filter.toLowerCase()) !== null);\n } else {\n setShowOption(true);\n }\n }, [filter]);\n\n if (!showOption) return null;\n\n return (\n <li\n {...rest}\n className={`${selected ? classes['selected-option'] : ''} ${\n disabled ? classes.disabled : ''\n } ${className ?? ''}`}\n onClick={onSelectHandler}\n onKeyPress={(e) => {\n e.key === 'Enter' && onSelectHandler(e);\n }}\n aria-selected={selected}\n role=\"option\"\n tabIndex={disabled ? -1 : 0}\n >\n {children}\n </li>\n );\n};\n","import React from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport classes from './Radio.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport { FormSelector } from '../form.interfaces';\nimport { HTMLProps } from '../../interfaces';\nimport { FormSelectorWrapper } from '../FormSelectorWrapper/FormSelectorWrapper';\n\nexport interface Props extends FormSelector<HTMLInputElement> {\n children: string;\n value: string;\n wrapperProps?: HTMLProps<HTMLDivElement>;\n helperProps?: HelperProps;\n}\n\nexport const Radio = ({\n children,\n disabled,\n className,\n value,\n name,\n helperText,\n parentErrorId,\n parentHelperId,\n error,\n errorMessage,\n checked = false,\n wrapperProps,\n helperProps,\n onChange,\n ...rest\n}: Props) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent) => {\n if (disabled) {\n return;\n }\n /** We have to clone the native event we got here and change the \"target\" property to the value. Otherwise, this regular event has \"on\" as it's event.target.value, which is useless. */\n const nativeEvent: any = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: { value: value },\n });\n\n onChange && onChange(clonedEvent);\n };\n\n /** Default return value is the default radio */\n return (\n <FormSelectorWrapper\n {...wrapperProps}\n className={`${classes['radio-wrapper']} ${className ?? ''}`}\n containerProps={{ className: classes['radio-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n >\n <input\n {...rest}\n disabled={disabled}\n tabIndex={0}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n onChange={onChangeHandler}\n checked={checked}\n aria-invalid={error ? true : false}\n aria-checked={checked}\n aria-describedby={describedBy}\n name={name}\n value={value}\n id={`${identifier}-radio`}\n type=\"radio\"\n />\n\n {checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Radio}\n />\n )}\n {!checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Circle}\n />\n )}\n\n <label onClick={onChangeHandler} htmlFor={`${identifier}-radio`}>\n {children}\n </label>\n </FormSelectorWrapper>\n );\n};\n","import React, { ReactElement, useEffect } from 'react';\nimport classes from './RadioWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends WrapperProps {\n children: ReactElement | ReactElement[];\n fieldsetProps: FieldsetProps;\n value: string;\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioWrapper = ({\n children,\n error,\n name,\n helperText,\n helperProps,\n fieldsetProps,\n value,\n onChange,\n disabled,\n ...rest\n}: Props) => {\n const { errorId, helperId } = useWrapper(value);\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a title prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this title prop through the fieldsetProps prop by passing an object (fieldsetProps={{ title: \"title here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n checked: child.props.value === value,\n name: name,\n parentHelperId: helperText ? helperId : false,\n onChange: onChange,\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps}>\n <Wrapper\n {...rest}\n disabled={disabled}\n name={name}\n label=\"\"\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['radio-wrapper-helper']} ${\n error ? classes['radio-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorId={errorId}\n errorMessageIcon={Icons.Warning}\n floatingLabel={false}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n};\n","import React, { ReactChild, ReactElement } from 'react';\nimport classes from './SelectWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Select, Props as SelectProps } from '../../Select/Select';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\nexport interface Props extends Omit<WrapperProps, 'onChange' | 'error'> {\n children: ReactChild | ReactChild[];\n placeholder?: string;\n value: string;\n error?: boolean;\n selectProps?: SelectProps;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n onClear?: () => void;\n}\n\nexport const SelectWrapper = ({\n children,\n error,\n value,\n placeholder,\n selectProps,\n helperProps,\n onChange,\n onClear,\n ...rest\n}: Props) => {\n const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);\n\n return (\n <Wrapper\n {...rest}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n helperId={helperId}\n labelProps={{ id: labelId, className: classes['select-label'] }}\n helperProps={{\n ...helperProps,\n className: `${classes['select-helper-text']} ${helperProps?.className ?? ''}`,\n }}\n error={error}\n >\n <Select\n {...selectProps}\n value={value}\n labeledBy={labelId}\n error={error}\n describedBy={error ? errorId : helperId}\n onChange={onChange}\n onClear={onClear}\n placeholder={placeholder}\n className={`${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n selectProps?.className ?? ''\n }`}\n >\n {children as ReactElement[]}\n </Select>\n </Wrapper>\n );\n};\n","import React, { ReactNode, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { SnackbarContextProvider } from './SnackbarStateProvider';\nimport { Actions, SnackbarOptionsProps, Variant } from '../interfaces';\nimport { Placement, SnackbarContainer } from '../SnackbarContainer/SnackbarContainer';\nimport { generateID } from '../../../util/helper';\nimport { SnackbarItem } from '../SnackbarItem/SnackbarItem';\n\n/** Short msg is when only title is provided. Long one when content or/and actions are provided (or type is error). */\ninterface Duration {\n long: number;\n short: number;\n}\n\nexport interface Props {\n closeButtonTitle: string;\n children?: ReactNode;\n placement?: Placement;\n stackSize?: number;\n domRoot?: HTMLElement;\n autoHideDuration?: Duration;\n className?: string;\n}\n\ninterface Item {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarProvider = (\n {\n closeButtonTitle,\n placement = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = { long: 8000, short: 4000 },\n stackSize = 3,\n domRoot = document.body,\n children,\n className,\n }: Props = { closeButtonTitle: '' }\n) => {\n const [snackbars, setSnackbars] = useState<Item[]>([]);\n\n const addSnackbar = (item: Item) => {\n setSnackbars((items) => [...items, item]);\n };\n\n const getDuration = (variant: Variant, actions?: Actions, content?: string) => {\n const hasError = variant === 'error';\n const hasContentOrActions = content || actions;\n if (hasError || hasContentOrActions) {\n return autoHideDuration.long;\n }\n return autoHideDuration.short;\n };\n\n const enqueueSnackbar = (\n title: string,\n content?: string,\n options: SnackbarOptionsProps = {}\n ): void => {\n const {\n variant = 'info',\n actions,\n duration = getDuration(variant, actions, content),\n } = options;\n const item: Item = {\n title,\n content,\n variant,\n actions,\n duration,\n id: generateID(15, title),\n };\n addSnackbar(item);\n };\n\n const enqueueSuccessSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'success' });\n };\n\n const enqueueErrorSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'error' });\n };\n\n const onItemClosed = (id: string) => {\n setSnackbars((items) => [...items].filter((item) => item.id !== id));\n };\n\n const snackbarList = snackbars.map((item, index) =>\n index < stackSize ? (\n <SnackbarItem\n {...item}\n key={item.id}\n onClose={onItemClosed}\n closeButtonTitle={closeButtonTitle}\n />\n ) : null\n );\n\n const snackbarPortal = createPortal(\n <SnackbarContainer placement={placement} className={className}>\n {snackbarList}\n </SnackbarContainer>,\n domRoot\n );\n\n return (\n <SnackbarContextProvider\n initialState={{ enqueueSnackbar, enqueueSuccessSnackbar, enqueueErrorSnackbar }}\n >\n {children}\n {snackbarPortal}\n </SnackbarContextProvider>\n );\n};\n","import React, { useState } from 'react';\nimport classes from './TextareaWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Textarea, Props as TextareaProps } from '../../Textarea/Textarea';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\nexport interface Props\n extends Omit<WrapperProps, 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'> {\n placeholder?: string;\n textareaProps?: TextareaProps;\n value: string;\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextareaWrapper = ({\n name,\n error,\n value,\n label,\n placeholder,\n textareaProps,\n helperProps,\n onChange,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n disabled,\n ...rest\n}: Props) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, placeholder);\n\n const [focus, setFocus] = useState(false);\n const [hover, setHover] = useState(false);\n\n return (\n <Wrapper\n {...rest}\n disabled={disabled}\n labelProps={{\n id: labelId,\n className: `${classes['textarea-label']} ${hasFocus ? classes['focus'] : ''}`,\n }}\n name={name}\n label={label}\n helperId={helperId}\n helperProps={{\n ...helperProps,\n className: classes['textarea-helper-text'],\n }}\n error={error}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n >\n <Textarea\n {...textareaProps}\n error={error}\n aria-labelledby={label && labelId}\n aria-describedby={error ? errorId : helperId}\n placeholder={placeholder}\n value={value}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n setFocus(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n setFocus(false);\n e.target.value || textareaProps?.placeholder?.length\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n onMouseEnter={(e) => {\n onMouseEnter && onMouseEnter(e);\n setHover(true);\n }}\n onMouseLeave={(e) => {\n onMouseLeave && onMouseLeave(e);\n setHover(false);\n }}\n className={classes['textarea']}\n wrapperClassName={`${classes['textarea-wrapper']} ${focus ? classes['focus'] : ''} ${\n hover ? classes['hover'] : ''\n } ${disabled ? classes['disabled'] : ''} ${error ? classes['error'] : ''}`}\n errorClassName={classes['error-icon']}\n />\n </Wrapper>\n );\n};\n","import React, { HTMLProps, ReactNode } from 'react';\nimport classes from './Tiles.module.scss';\nimport { Tile } from './Tile';\n\nexport interface Props extends HTMLProps<HTMLDivElement> {\n children: ReactNode;\n loading?: boolean;\n}\n\nexport const Tiles = ({ children, className, loading = false, ...rest }: Props) => {\n const renderChildren = () => {\n if (loading) {\n return [\n <Tile\n key=\"placeholder1\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder2\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder3\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n ];\n }\n\n return children;\n };\n\n return (\n <div\n {...rest}\n className={`${classes['tiles']} ${className ?? ''}`}\n aria-live=\"polite\"\n aria-busy={loading}\n >\n {renderChildren()}\n </div>\n );\n};\n","import React, { Fragment, useContext, useMemo } from 'react';\nimport { Button } from '../../Button/Button';\nimport { Step } from '../BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from '../Wizard';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends React.HTMLProps<HTMLDivElement> {\n cancelButtonLabel: string;\n previousButtonLabel: string;\n nextButtonLabel: string;\n saveAndCloseButtonLabel: string;\n onCancel: () => void;\n onNext: (currentStepNo: number) => boolean;\n onPrevious?: () => void;\n onSaveAndClose: (currentStepNo: number) => void;\n}\n\nconst calculateNextStepNo = (steps: Step[], currentStepNo: number) => () =>\n steps.findIndex((step, stepNo) => stepNo > currentStepNo && !step.disabled);\n\nconst calculatePrevStepNo = (steps: Step[], currentStepNo: number) => () => {\n const reversedCurrentStepNo = steps.length - 1 - currentStepNo;\n const reversedPrevStepNo = [...steps]\n .reverse()\n .findIndex((step, stepNo) => stepNo > reversedCurrentStepNo && !step.disabled);\n if (reversedPrevStepNo > 0) {\n return steps.length - 1 - reversedPrevStepNo;\n }\n return -1;\n};\n\nconst useNextStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculateNextStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nconst usePreviousStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculatePrevStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nexport const WizardActions = ({\n onCancel,\n onNext,\n onPrevious,\n onSaveAndClose,\n cancelButtonLabel,\n previousButtonLabel,\n nextButtonLabel,\n saveAndCloseButtonLabel,\n}: Props) => {\n const {\n state: { mode, steps, currentStepNo },\n dispatch,\n } = useContext(WizardStateContext);\n const nextStepNo = useNextStepNo(mode, currentStepNo, steps);\n const hasNextStep = nextStepNo !== -1;\n const previousStepNo = usePreviousStepNo(mode, currentStepNo, steps);\n const hasPreviousStep = previousStepNo !== -1;\n const isLastStepOrEditMode = !hasNextStep || mode === 'edit';\n\n const changeStepNo = (direction: 'forward' | 'backward') => {\n if (direction === 'forward') {\n hasNextStep && dispatch(changeCurrentStepNo(nextStepNo));\n } else {\n hasPreviousStep && dispatch(changeCurrentStepNo(previousStepNo));\n }\n };\n\n const onNextWrapper = () => {\n onNext(currentStepNo) && changeStepNo('forward');\n };\n\n const onPreviousWrapper = () => {\n onPrevious && onPrevious();\n changeStepNo('backward');\n };\n\n const onSaveAndCloseWrapper = () => {\n onSaveAndClose(currentStepNo);\n };\n\n return (\n <Fragment>\n <Button variant=\"text\" onClick={onCancel}>\n {cancelButtonLabel}\n </Button>\n {hasPreviousStep && (\n <Button variant=\"outline\" onClick={onPreviousWrapper}>\n {previousButtonLabel}\n </Button>\n )}\n {hasNextStep && (\n <Button variant={mode === 'edit' ? 'outline' : 'fill'} onClick={onNextWrapper}>\n {nextButtonLabel}\n </Button>\n )}\n {isLastStepOrEditMode && (\n <Button onClick={onSaveAndCloseWrapper}>{saveAndCloseButtonLabel}</Button>\n )}\n </Fragment>\n );\n};\n","import React, { useContext } from 'react';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { BaseWizardSteps } from '../BaseWizardSteps/BaseWizardSteps';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends Omit<React.HTMLProps<HTMLDivElement>, 'onClick'> {\n onStepClick: (currentStepNo: number, selectedStepNo: number) => boolean;\n}\n\nexport const WizardSteps = ({ onStepClick, ...restProps }: Props) => {\n const {\n state: { currentStepNo, mode, stepScreenReaderLabel, steps },\n dispatch,\n } = useContext(WizardStateContext);\n\n const onClick = (selectedStepNo: number) => {\n onStepClick(currentStepNo, selectedStepNo) && dispatch(changeCurrentStepNo(selectedStepNo));\n };\n\n return (\n <BaseWizardSteps\n {...restProps}\n onClick={onClick}\n steps={steps}\n currentStepNo={currentStepNo}\n stepScreenReaderLabel={stepScreenReaderLabel}\n futureStepsClickable={mode === 'edit'}\n />\n );\n};\n","import { useContext } from 'react';\nimport { SnackbarContext } from './SnackbarProvider/SnackbarStateProvider';\n\nexport const useSnackbar = () => useContext(SnackbarContext);\n"],"names":["e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","spacingNumberRegex","validVariants","Typography","children","variant","tag","style","spacing","className","rest","includes","Error","styleWithSpacing","spacingProps","entries","reduce","prev","matches","String","matchAll","cssSpacingValue","Array","from","map","Number","join","useSpacing","React","classes","BaseButton","forwardRef","ref","type","Button","color","startIcon","endIcon","additionalClasses","Link","disabled","to","component","classNames","download","rel","undefined","href","target","IconButton","iconSize","title","console","error","Fragment","readyclasses","Icons","Icon","icon","size","fontSize","labelId","id","descriptionId","BaseModal","open","onClose","containerClassName","labelledby","describedby","disableEscapeKeyDown","disableBackdrop","zIndex","domRoot","body","restProps","useEffect","querySelectorAll","removeProperty","useSetBodyScroll","createPortal","role","tabIndex","onKeyDown","event","key","stopPropagation","onClick","BaseModalContent","disableAutoFocus","contentRef","useRef","current","_contentRef$current","focus","BaseModalActions","DialogActions","align","DialogTitle","generateID","stringToWeaveIn","hashCharacters","test","Math","floor","random","slice","Dialog","secondaryLabel","restOfSecondaryAction","alignActions","primaryAction","secondaryAction","dialogId","useState","primaryLabel","label","restOfPrimaryAction","PrimaryButton","TertiaryButton","autoFocus","position","width","height","opacity","maxLength","onKeyPress","BaseModalHeader","Times","DiscardChangesDialog","onKeepEditing","onDiscardChanges","discardChangesButtonLabel","keepEditingButtonLabel","contentLabel","titleLabel","margin","defaultConfigObject","relativeElement","elementToBePositioned","transformOrigin","horizontal","vertical","placement","offset","top","right","bottom","left","usePosition","providedConfigObject","configObject","setPosition","_calculatePlacement","relEl","elDimensions","axis","placementValue","requestedReturnValue","placementOriginDefinition","_determineCenteredPlacementOrigin","value","window","_calculateInitialPlacementValue","valueWithOffset","returnValue","_configObject$offset3","_configObject$offset4","_configObject$offset5","_configObject$offset6","_configObject$offset9","_configObject$offset10","_configObject$offset11","_configObject$offset12","_applyOffsetToPlacementValue","valueCorrectionForViewportOverflow","innerWidth","innerHeight","_fixPossibleViewportOverflow","_calculatePlacementValue","direction","oppositeDirection","prevState","calculatePosition","_configObject$relativ","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y","defaultPosition","Tile","imageProps","enabled","loading","tileAction","tileDescriptionID","justifyContent","Checkmark","Forbidden","readyClasses","src","alt","Image","Popover","show","anchorEl","elToBePositioned","useBodyClick","checkFunction","callbackFunction","dependingStateVariable","bodyClickListener","addEventListener","removeEventListener","SnackbarContext","createContext","enqueueSnackbar","enqueueSuccessSnackbar","enqueueErrorSnackbar","SnackbarContextProvider","Provider","initialState","SnackbarContainer","SnackbarItem","duration","content","actions","closeButtonTitle","timerHandler","callback","animatedObjectRef","animationStarted","setAnimationStarted","onAnimationEnd","_animatedObjectRef$cu2","startAnimation","useAnimation","setTimeout","clearTimeout","actionButtons","actionProp","index","onMouseEnter","onMouseLeave","TimesCircleAlt","CheckmarkCircleBreakout","InfoCircle","Fieldset","legend","legendStyle","hideLegend","background","noBackground","noPadding","required","backgroundColor","Children","child","cloneElement","props","renderChildren","FormHelperText","FormGroup","errorMessage","errorId","errorMessageIcon","errorMessageIconPosition","helperText","helperId","helperProps","helperIndent","marginLeft","message","Label","hidden","dateTypes","Input","name","wrapperProps","labeledBy","inputClassNames","iconClassNames","Warning","Select","placeholder","describedBy","searchPlaceholder","onChange","onClear","expanded","setExpanded","filter","setFilter","display","setDisplay","listPosition","setListPosition","containerReference","optionListReference","closest","rePositionList","windowHeight","containerTopWithListHeight","scrollListener","useLayoutEffect","useScroll","onOptionChangeHandler","newValue","nativeEvent","clonedEvent","constructor","defineProperty","writable","currentTarget","innerText","TimesThin","TriangleDown","isArray","onOptionSelect","selected","Textarea","rows","wrapperClassName","errorClassName","useWrapper","floatingLabelActive","setFloatingLabelActive","hasFocus","setHasFocus","Wrapper","floatingLabel","labelProps","innerClassName","labelClasses","wrapper","htmlFor","useFormSelector","identifier","setDescribedBy","parentErrorId","parentHelperId","FormSelectorWrapper","nestedChildren","containerProps","isToggle","_children$props","BaseWizardSteps","steps","currentStepNo","futureStepsClickable","stepScreenReaderLabel","generatedSteps","step","stepNo","stepState","disabledStyleClassName","clickableClassName","toLowerCase","replace","stepNumberString","getStepContent","changeCurrentStepNo","payload","reducer","state","action","WizardStateContext","dispatch","WizardStateProvider","useReducer","WizardContent","mode","onStepChange","useContext","setWizardState","useStepChanging","properties","defaultProperties","colorPrimary","colorSecondary","colorTertiary","defaultLineHeight","buttonBorderRadius","buttonBorderWidth","buttonFontSize","buttonBorderStyle","buttonFillTextColor","buttonFillBackgroundColor","buttonOutlineHoverTextColor","inputBorderColor","inputBorderRadius","inputBorderWidth","inputBorderStyle","modalShadowColor","modalBackgroundColor","modalHeaderBackgroundColor","snackbarTextColor","snackbarInfoBackgroundColor","snackbarSuccessBackgroundColor","snackbarErrorBackgroundColor","snackbarBorderRadius","success","greyedOut","warning","fontFamily","fontFamilyCode","fontSizeH1","fontSizeH2","fontSizeH3","fontSizeH4","fontSizeSub","fontSizeCode","isLoading","setIsLoading","setCSSProperties","CSSPropertiesObject","formattedPropertyName","replaceAll","val","documentElement","setProperty","mergedState","ariaLabel","items","ChevronRight","Checkbox","indeterminate","checked","iconClasses","toArray","MinusSquare","CheckmarkSquare","Square","determineLabel","fieldsetProps","trigger","onShow","showContextMenu","setShowContextMenu","hasUnsavedChanges","headerProps","discardChangedDialogProps","openDiscardChangesDialog","setOpenDiscardChangesDialog","onCloseWrapper","Modal","ModalHeader","grid","childElement","column","inputProps","onBlur","onFocus","_inputProps$placehold","showOption","setShowOption","onSelectHandler","match","onChangeHandler","Radio","Circle","selectProps","autoHideDuration","stackSize","setSnackbars","options","item","getDuration","onItemClosed","snackbarList","snackbarPortal","textareaProps","setFocus","hover","setHover","_textareaProps$placeh","visible","setVisible","escapePressHandler","isValidElement","initialStepNo","onCancel","onNext","onPrevious","onSaveAndClose","cancelButtonLabel","previousButtonLabel","nextButtonLabel","saveAndCloseButtonLabel","nextStepNo","useMemo","findIndex","calculateNextStepNo","useNextStepNo","hasNextStep","previousStepNo","reversedCurrentStepNo","reversedPrevStepNo","reverse","calculatePrevStepNo","usePreviousStepNo","hasPreviousStep","isLastStepOrEditMode","changeStepNo","onStepClick","selectedStepNo"],"mappings":"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"}
1
+ {"version":3,"file":"react-lib-components.cjs.production.min.js","sources":["../src/_BaseStyling_/BaseStyling.tsx","../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/hooks/useSpacing.ts","../src/Typography/Typography.tsx","../src/Button/BaseButton.tsx","../src/Button/Button.tsx","../src/Link/Link.tsx","../src/Button/IconButton.tsx","../src/Icon/Icon.tsx","../src/Form/Input/Input.tsx","../src/hooks/useBodyClick.ts","../src/util/helper.tsx","../src/Form/Select/Select.tsx","../src/Form/Select/Option.tsx","../src/Pagination/Pagination.tsx","../src/Form/Label/Label.tsx","../src/Tabs/TabButton.tsx","../src/Tabs/TabPanel.tsx","../src/Notifications/BaseModal/BaseModalContext.ts","../src/Notifications/BaseModal/BaseModal.tsx","../src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx","../src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx","../src/Notifications/Dialog/DialogActions/DialogActions.tsx","../src/Notifications/Dialog/DialogTitle/DialogTitle.tsx","../src/Notifications/Dialog/Dialog.tsx","../src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx","../src/hooks/usePosition.ts","../src/Popover/Popover.tsx","../src/TextEllipsis/TextEllipsis.tsx","../src/Tooltip/Tooltip.tsx","../src/Tiles/Tile.tsx","../src/Tiles/Tiles.tsx","../src/ContextMenu/ContextMenu.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx","../src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.tsx","../src/hooks/useAnimation.ts","../src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx","../src/hooks/useFormSelector.ts","../src/Form/FormHelperText/FormHelperText.tsx","../src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx","../src/Form/Radio/Radio.tsx","../src/Form/Checkbox/Checkbox.tsx","../src/Form/Textarea/Textarea.tsx","../src/Form/Toggle/Toggle.tsx","../src/Form/FormControl/FormControl.tsx","../src/Form/FormGroup/FormGroup.tsx","../src/Form/Wrapper/Wrapper/Wrapper.tsx","../src/hooks/useWrapper.ts","../src/Form/Wrapper/InputWrapper/InputWrapper.tsx","../src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx","../src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx","../src/Form/Fieldset/Fieldset.tsx","../src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx","../src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx","../src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx","../src/Wizard/wizardStateReducer.ts","../src/Wizard/WizardStateProvider.tsx","../src/Wizard/WizardSteps/WizardSteps.tsx","../src/Wizard/Wizard.tsx","../src/ContextMenu/ContextMenuItem.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx","../src/Form/Form.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx","../src/Tabs/Tab.tsx","../src/Tabs/Tabs.tsx","../src/Wizard/WizardActions/WizardActions.tsx","../src/hooks/useRepeater.ts","../src/Notifications/Snackbar/useSnackbar.ts"],"sourcesContent":["import React, { Fragment, HTMLAttributes, ReactChild, useEffect, useState } from 'react';\n\ninterface CSSProperties {\n colorFocus?: string;\n colorPrimary?: string;\n colorSecondary?: string;\n colorTertiary?: string;\n defaultLineHeight?: string;\n buttonBorderRadius?: string;\n buttonBorderWidth?: string;\n buttonFontSize?: string;\n buttonBorderStyle?: string;\n buttonFillTextColor?: string;\n buttonFillBackgroundColor?: string;\n buttonOutlineHoverTextColor?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputBorderWidth?: string;\n inputBorderStyle?: string;\n inputBackgroundColor?: string;\n modalShadowColor?: string;\n modalBackgroundColor?: string;\n modalHeaderBackgroundColor?: string;\n snackbarTextColor?: string;\n snackbarInfoBackgroundColor?: string;\n snackbarSuccessBackgroundColor?: string;\n snackbarErrorBackgroundColor?: string;\n snackbarBorderRadius?: string;\n tabsBackgroundColor?: string;\n tabBorderWidth?: string;\n tabBorderStyle?: string;\n tablistBorderWidth?: string;\n tablistBorderStyle?: string;\n tablistBorderColor?: string;\n tabTextColor?: string;\n default?: string;\n success?: string;\n error?: string;\n disabled?: string;\n greyedOut?: string;\n warning?: string;\n fontFamily?: string;\n fontFamilyCode?: string;\n fontSize?: string;\n fontSizeH1?: string;\n fontSizeH2?: string;\n fontSizeH3?: string;\n fontSizeH4?: string;\n fontSizeSub?: string;\n fontSizeCode?: string;\n}\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n children?: ReactChild;\n properties?: CSSProperties;\n}\n\nexport const BaseStyling = ({ children, properties = {} }: Props) => {\n const defaultProperties: CSSProperties = {\n colorFocus: '#0085f2',\n colorPrimary: '#9e006b',\n colorSecondary: '#003b5e',\n colorTertiary: '#ff1e4e',\n defaultLineHeight: '26px',\n buttonBorderRadius: '20px',\n buttonBorderWidth: '2px',\n buttonFontSize: '1rem',\n buttonBorderStyle: 'solid',\n buttonFillTextColor: '#FFF',\n buttonFillBackgroundColor: '#FFF',\n buttonOutlineHoverTextColor: '#FFF',\n inputBorderColor: '#e9e9eb',\n inputBorderRadius: '8px',\n inputBorderWidth: '1px',\n inputBorderStyle: 'solid',\n inputBackgroundColor: '#FFF',\n modalShadowColor: 'rgba(0, 0, 0, 0.16)',\n modalBackgroundColor: '#F5F8F8',\n modalHeaderBackgroundColor: '#FFF',\n snackbarTextColor: '#fff',\n snackbarInfoBackgroundColor: '#003b5e',\n snackbarSuccessBackgroundColor: '#008a28',\n snackbarErrorBackgroundColor: '#e22a1d',\n snackbarBorderRadius: '8px',\n tabsBackgroundColor: '#FFF',\n tabBorderWidth: '2px',\n tabBorderStyle: 'solid',\n tablistBorderWidth: '1px',\n tablistBorderStyle: 'solid',\n tablistBorderColor: '#C3C3C7',\n tabTextColor: '#0f0f1e',\n default: '#0f0f1e',\n success: '#008a28',\n error: '#e22a1d',\n disabled: '#e9e9eb',\n greyedOut: '#6f6f76',\n warning: '#ff6105',\n fontFamily: \"'Red Hat Display', sans-serif\",\n fontFamilyCode: \"'Red Hat Mono', sans-serif\",\n fontSize: '1rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.625rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.25rem',\n fontSizeSub: '.75rem',\n fontSizeCode: '1rem',\n };\n\n /** We need a loading state, because otherwise you see the colors flash from the default to the possible overridden ones. */\n const [isLoading, setIsLoading] = useState(true);\n\n /** Set the actual CSS properties on the HTML :root object */\n const setCSSProperties = (CSSPropertiesObject: CSSProperties) => {\n for (const [key, value] of Object.entries(CSSPropertiesObject)) {\n const formattedPropertyName = key.replace(/([A-Z])/g, (val) => `-${val.toLowerCase()}`);\n document.documentElement.style.setProperty(`--${formattedPropertyName}`, value);\n }\n };\n\n /** Check if the properties prop object is filled with anything. If it is, we want to shallow merge it with the default BaseStyling. */\n useEffect(() => {\n if (Object.keys(properties).length !== 0) {\n const mergedState = { ...defaultProperties, ...properties };\n setCSSProperties(mergedState);\n } else {\n setCSSProperties(defaultProperties);\n }\n setIsLoading(false);\n }, [properties]);\n\n /** Only render if we're not loading */\n return !isLoading ? <Fragment>{children}</Fragment> : null;\n};\n","var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import { CSSProperties } from 'react';\n\nexport type SpacingMultiplier = 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype SpacingMultiplierStringOrNumber = `${SpacingMultiplier}` | SpacingMultiplier;\ntype MultiValueSpacingMultiplier =\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier}`\n | SpacingMultiplierStringOrNumber;\n\nexport interface Spacing {\n padding?: MultiValueSpacingMultiplier;\n paddingTop?: SpacingMultiplierStringOrNumber;\n paddingBottom?: SpacingMultiplierStringOrNumber;\n paddingLeft?: SpacingMultiplierStringOrNumber;\n paddingRight?: SpacingMultiplierStringOrNumber;\n margin?: MultiValueSpacingMultiplier;\n marginTop?: SpacingMultiplierStringOrNumber;\n marginBottom?: SpacingMultiplierStringOrNumber;\n marginLeft?: SpacingMultiplierStringOrNumber;\n marginRight?: SpacingMultiplierStringOrNumber;\n}\n\nconst defaultFactor = 0.25;\nconst defaultUnit = 'rem';\nconst spacingNumberRegex = /(\\d+\\.?\\d*)+/g;\n\nexport const useSpacing = (\n spacingProps?: Spacing,\n style?: CSSProperties\n): CSSProperties | undefined => {\n if (spacingProps) {\n return Object.entries(spacingProps).reduce<CSSProperties>((prev, [spacing, multiplier]) => {\n const matches = String(multiplier).matchAll(spacingNumberRegex);\n const cssSpacingValue = Array.from(matches)\n .map(([multiplierValue]) => `${Number(multiplierValue) * defaultFactor}${defaultUnit}`)\n .join(' ');\n return { ...prev, [spacing]: cssSpacingValue };\n }, style ?? {});\n }\n return style;\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Typography.module.scss';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nconst validVariants = ['h1', 'h2', 'h3', 'h4', 'body', 'body-bold', 'sub-text', 'code'] as const;\nexport type Variant = typeof validVariants[number];\n\ntype Tags =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'p'\n | 'div'\n | 'code'\n | 'span'\n | 'sup'\n | 'sub'\n | 'strong'\n | 'em'\n | 'small'\n | 'mark'\n | 'del'\n | 'ins'\n | 'blockquote';\n\n/** I couldn't find anything on the internet that indicated that ComponentPropsWithRef can take multiple tags. Since the TagName can be many different things I have to use any here. Using a mix of tags (like the Tags type) will throw an error. */\nexport interface Props extends ComponentPropsWithRef<any> {\n children: ReactNode;\n variant: Variant;\n tag?: Tags;\n spacing?: Spacing;\n}\n\nexport const Typography = React.forwardRef<any, Props>(\n ({ children, variant, tag, style, spacing, className = '', ...rest }: Props, ref) => {\n if (!validVariants.includes(variant)) {\n throw new Error(\n `You entered an invalid variant. You can choose from: ${validVariants}, you entered: ${variant}`\n );\n }\n\n const styleWithSpacing = useSpacing(spacing, style);\n\n if (!tag) {\n switch (variant) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'code':\n tag = variant;\n break;\n case 'body':\n tag = 'p';\n break;\n case 'body-bold':\n tag = 'p';\n break;\n case 'sub-text':\n tag = 'span';\n break;\n default:\n tag = 'div';\n break;\n }\n }\n\n let TagName = tag;\n\n return (\n <TagName\n {...rest}\n ref={ref}\n style={styleWithSpacing}\n className={`${classes['typography_style_' + variant]} ${className}`}\n >\n {children}\n </TagName>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n type?: 'submit' | 'button' | 'reset';\n disabled?: boolean;\n color?: 'primary' | 'secondary' | 'tertiary' | 'default';\n}\n\nexport const BaseButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, type = 'button', className, ...rest }, ref) => {\n const validTypes = ['submit', 'button', 'reset'];\n\n if (!validTypes.includes(type))\n throw new Error(\n `You have entered an invalid button type. Expected 'submit', 'button' or 'reset' got ${type}`\n );\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={`${classes.button} ${className ? className : ''}`}\n >\n {children}\n </button>\n );\n }\n);\n","import React from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './Button.module.scss';\n\nexport interface Props extends BaseButtonProps {\n startIcon?: React.ReactNode | false;\n endIcon?: React.ReactNode | false;\n children?: React.ReactNode;\n variant?: 'text' | 'fill' | 'outline';\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n variant = 'fill',\n color = 'primary',\n startIcon = false,\n endIcon = false,\n className,\n ...rest\n },\n ref\n ) => {\n const additionalClasses = [];\n\n if (startIcon || endIcon) {\n additionalClasses.push(classes['has-icon']);\n }\n\n if (startIcon) {\n additionalClasses.push(classes['start-icon']);\n }\n\n if (endIcon) {\n additionalClasses.push(classes['end-icon']);\n }\n\n if (className) {\n additionalClasses.push(className);\n }\n\n return (\n <BaseButton\n {...rest}\n ref={ref}\n className={`${classes[color]} ${classes[variant]} ${additionalClasses.join(' ')}`}\n >\n {startIcon && <i>{startIcon}&nbsp;</i>}\n <span>{children}</span>\n {endIcon && <i>&nbsp;{endIcon}</i>}\n </BaseButton>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport classes from './Link.module.scss';\nimport { LinkProps } from './types';\n\ntype AnchorType = 'external' | 'internal' | 'download';\n\nexport interface Props extends ComponentPropsWithRef<'a'> {\n children?: ReactNode;\n color?: 'primary' | 'secondary' | 'tertiary';\n type?: AnchorType;\n to: string;\n disabled?: boolean;\n component?: ForwardRefExoticComponent<LinkProps & RefAttributes<HTMLAnchorElement>>;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, Props>(\n (\n {\n children,\n className,\n disabled = false,\n to,\n color = 'primary',\n type = 'internal',\n component,\n ...rest\n }: Props,\n ref\n ) => {\n const determineTarget = () => {\n if (rest.target) {\n return rest.target;\n }\n\n if (type === 'external') {\n return '_blank';\n }\n\n return '';\n };\n\n const classNames = [classes['link'], classes[color]];\n disabled && classNames.push(classes['disabled']);\n className && classNames.push(className);\n\n if (component) {\n return React.createElement(component, {\n ...rest,\n ref: ref,\n to: to,\n className: classNames.join(' '),\n 'aria-disabled': disabled,\n style: {\n ...rest.style,\n },\n children: children,\n });\n }\n\n return (\n <a\n {...rest}\n ref={ref}\n download={type === 'download'}\n rel={type === 'external' ? 'noopener noreferer' : undefined}\n href={!disabled ? to : undefined}\n className={classNames.join(' ')}\n aria-disabled={disabled}\n target={determineTarget()}\n style={{\n ...rest.style,\n }}\n >\n {children}\n </a>\n );\n }\n);\n","import React, { Fragment } from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './IconButton.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\n\nexport interface Props extends BaseButtonProps {\n children?: React.ReactNode;\n iconSize?: 's' | 'm' | 'l';\n className?: string;\n title?: string;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, color = 'primary', iconSize = 'm', title, className, ...rest }, ref) => {\n if (!title) {\n console.error(\"Please make sure to specify a 'title' prop to your IconButton component! \");\n }\n\n const iconButtonClasses = [\n classes['icon-button'],\n classes[color],\n classes['button-' + iconSize],\n ];\n\n if (className) {\n iconButtonClasses.push(className);\n }\n\n return (\n <BaseButton {...rest} ref={ref} className={iconButtonClasses.join(' ')}>\n <Fragment>\n {children}\n <span className={readyclasses['sr-only']}>{title}</span>\n </Fragment>\n </BaseButton>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './Icon.module.scss';\n\nexport enum Icons {\n Bell = 'bell',\n BellAlt = 'bell-alt',\n Bookmark = 'bookmark',\n BookmarkAlt = 'bookmark-alt',\n Build = 'build',\n Calendar = 'calendar',\n Change = 'change',\n Checkmark = 'checkmark',\n CheckmarkCircle = 'checkmark-circle',\n CheckmarkCircleAlt = 'checkmark-circle-alt',\n CheckmarkCircleBreakout = 'checkmark-circle-breakout',\n CheckmarkSquare = 'checkmark-square',\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n ChevronLeft = 'chevron-left',\n ChevronRight = 'chevron-right',\n Circle = 'circle',\n Clock = 'clock',\n Copy = 'copy',\n Edit = 'edit',\n Ellipsis = 'ellipsis',\n EllipsisAlt = 'ellipsis-alt',\n Equal = 'equal',\n Error = 'error-circle',\n Eye = 'eye',\n Filter = 'filter',\n FilterAlt = 'filter-alt',\n FilterAltArrow = 'filter-alt-arrow',\n FilterAltTimes = 'filter-alt-times',\n Forbidden = 'forbidden',\n Fullscreen = 'fullscreen',\n FullscreenExit = 'fullscreen-exit',\n Gearwheel = 'gearwheel',\n Grid = 'grid',\n Hamburger = 'hamburger',\n Heart = 'heart',\n Image = 'image',\n InfoBell = 'info-bell',\n InfoCircle = 'info-circle',\n Link = 'link',\n MinusSquare = 'minus-square',\n NavigationFirst = 'navigation-first',\n NavigationLast = 'navigation-last',\n Plus = 'plus',\n Radio = 'radio',\n Refresh = 'refresh',\n Search = 'search',\n Share = 'share',\n Square = 'square',\n Star = 'star',\n StarAlt = 'star-alt',\n Times = 'times',\n TimesCircle = 'times-circle',\n TimesCircleAlt = 'times-circle-alt',\n TimesThin = 'times-thin',\n Trash = 'trash',\n TriangleDown = 'triangle-down',\n TriangleDownCircle = 'triangle-down-circle',\n TriangleLeft = 'triangle-left',\n TriangleRight = 'triangle-right',\n TriangleUp = 'triangle-up',\n Undo = 'undo',\n Warning = 'warning',\n}\n\ntype Tag = 'span' | 'div' | 'i';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n icon: Icons;\n color?: string;\n size?: string;\n tag?: Tag;\n}\n\nexport const Icon = React.forwardRef<HTMLDivElement, Props>(\n ({ icon, color, className, style, size, tag = 'span', ...rest }: Props, ref) => {\n const Component = tag;\n\n return (\n <Component\n {...rest}\n ref={ref}\n style={{ color: color, ...style, fontSize: size }}\n data-icon\n aria-hidden=\"true\"\n className={`${classes['icon']} ${classes['icon-' + icon]} ${className ? className : ''}`}\n />\n );\n }\n);\n","import React, { ComponentPropsWithRef, Ref, useEffect, useState } from 'react';\nimport classes from './Input.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\n\nconst dateTypes = ['date', 'time', 'datetime-local'] as const;\n\nexport type Type =\n | 'text'\n | 'email'\n | 'file'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'hidden'\n | typeof dateTypes[number];\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n labeledBy?: string;\n type: Type;\n suffix?: string;\n prefix?: string;\n}\n\nexport const Input = React.forwardRef(\n (\n {\n error = false,\n className,\n name,\n style,\n wrapperProps,\n type,\n labeledBy,\n prefix,\n suffix,\n disabled,\n onFocus,\n onBlur,\n ...rest\n }: Props,\n ref: Ref<HTMLInputElement>\n ) => {\n const [focus, setFocus] = useState(false);\n\n useEffect(() => {\n if (name === undefined) {\n throw new Error(\"Please give your <Input /> component a 'name' attribute\");\n }\n }, []);\n\n const inputClassNames = [classes['input']];\n\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n inputClassNames.push(classes['remove-extra-indent']);\n className && inputClassNames.push(className);\n\n const iconClassNames = [classes['warning']];\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n iconClassNames.push(classes['extra-indent']);\n\n const wrapperClasses = [classes['input-wrapper']];\n\n wrapperProps?.className && wrapperClasses.push(wrapperProps.className);\n type === 'hidden' && wrapperClasses.push(readyclasses['hidden']);\n prefix && wrapperClasses.push(classes['prefix']);\n suffix && wrapperClasses.push(classes['suffix']);\n disabled && wrapperClasses.push(classes['disabled']);\n error && wrapperClasses.push(classes['error']);\n focus && wrapperClasses.push(classes['focus']);\n\n return (\n <div\n {...wrapperProps}\n style={{ ...style }}\n className={`${classes['input-wrapper']} ${wrapperClasses.join(' ')}`}\n >\n {prefix && (\n <div data-prefix className={classes['prefix']}>\n <span>{prefix}</span>\n </div>\n )}\n <input\n {...rest}\n ref={ref}\n onFocus={(event) => {\n setFocus(true);\n onFocus && onFocus(event);\n }}\n onBlur={(event) => {\n setFocus(false);\n onBlur && onBlur(event);\n }}\n aria-labelledby={labeledBy}\n type={type}\n name={name}\n disabled={disabled}\n className={inputClassNames.join(' ')}\n />\n {suffix && (\n <div data-suffix className={classes['suffix']}>\n <span>{suffix}</span>\n </div>\n )}\n {error && <Icon className={iconClassNames.join(' ')} icon={Icons.Error} />}\n </div>\n );\n }\n);\n","import { useEffect } from 'react';\n\nexport const useBodyClick = (\n checkFunction: (event: MouseEvent) => boolean,\n callbackFunction: (...args: unknown[]) => unknown,\n dependingStateVariable: React.ComponentState | React.ComponentState[]\n) => {\n function bodyClickListener(event: MouseEvent) {\n if (checkFunction(event)) {\n callbackFunction();\n }\n }\n useEffect(() => {\n window.addEventListener('click', bodyClickListener);\n\n return () => {\n window.removeEventListener('click', bodyClickListener);\n };\n }, [dependingStateVariable]);\n};\n","type KeyValuePair = { [key: string]: unknown };\n\nexport const generateID = (length = 15, stringToWeaveIn?: string) => {\n /** We will make sure to mesh the generate id and name property together to basically create a unique ID */\n let hashCharacters = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n ];\n\n let id = '';\n\n /** Generate an id of x characters in length */\n for (let i = 0; i < length && id.length < length; i++) {\n let stringCharacter =\n stringToWeaveIn && stringToWeaveIn[i] !== undefined && !/\\s/.test(stringToWeaveIn[i])\n ? stringToWeaveIn[i]\n : '';\n id = id + stringCharacter + hashCharacters[Math.floor(Math.random() * hashCharacters.length)];\n }\n\n return id.slice(0, length);\n};\n\nexport const filterProps = (props: any, regexPattern: RegExp, returnFiltered: boolean = true) => {\n if (returnFiltered) {\n return Object.keys(props).reduce((acc: KeyValuePair, key) => {\n if (regexPattern.test(key)) {\n acc[key] = props[key];\n }\n\n return acc;\n }, {});\n } else {\n return Object.entries(props)\n .filter(([key]) => !regexPattern.test(key))\n .reduce(\n (prevObj, currKeyValPair) => ({ ...prevObj, [currKeyValPair[0]]: currKeyValPair[1] }),\n {}\n );\n }\n};\n","import classes from './Select.module.scss';\n\nimport React, {\n ComponentPropsWithRef,\n Fragment,\n ReactElement,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Input } from '../Input/Input';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\nimport { useBodyClick } from '../../hooks/useBodyClick';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { filterProps } from '../../util/helper';\n\nexport interface Props extends ComponentPropsWithRef<'select'>, FormElement {\n children: ReactElement[];\n name?: string;\n labeledBy?: string;\n describedBy?: string;\n placeholder?: string;\n searchPlaceholder?: string;\n className?: string;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>, child?: ReactElement) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\ntype Position = {\n top: 0 | 'initial';\n bottom: 0 | 'initial';\n};\n\nexport const Select = React.forwardRef<HTMLSelectElement, Props>(\n (\n {\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n searchPlaceholder = 'Search item',\n className,\n error = false,\n value,\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const [expanded, setExpanded] = useState(false);\n const [opacity, setOpacity] = useState(0); // We set opacity because other wise if we calculate the max height you see the list full height for a split second and then it shortens.\n const [filter, setFilter] = useState('');\n const [display, setDisplay] = useState('');\n const [listPosition, setListPosition] = useState<Partial<Position>>({});\n const [optionsListMaxHeight, setOptionsListMaxHeight] = useState('none');\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n\n const nativeSelect = useRef<HTMLSelectElement>(null);\n\n const syncDisplayValue = (val: string) => {\n React.Children.forEach(children, (child) => {\n if (child.props.value === val) {\n setDisplay(child.props.children);\n }\n });\n };\n\n const rePositionList = () => {\n if (!expanded || !optionListReference.current || !containerReference.current) {\n return;\n }\n\n // Check whether there is more space above or below the select\n // Check space between the bottom of select and top of viewport\n const spaceOnTopOfSelect = containerReference.current.getBoundingClientRect().bottom;\n\n // Check space between the top of the select and bottom of viewport\n const spaceOnBottomOfSelect =\n window.innerHeight - containerReference.current.getBoundingClientRect().top;\n\n // Set position as if there's more space on the bottom\n let position: Position = { top: 0, bottom: 'initial' };\n\n // Set the position of the select\n if (spaceOnTopOfSelect > spaceOnBottomOfSelect) {\n position = { top: 'initial', bottom: 0 };\n }\n\n setListPosition(position);\n\n // Calculate the potential max height of the options list\n calculateOptionListMaxHeight(position);\n };\n\n const calculateOptionListMaxHeight = (position: Position) => {\n // Calculate max height if there's more space below the select\n const listHeight = optionListReference.current!.getBoundingClientRect().height;\n const transformOrigin = position.top !== 'initial' ? 'top' : 'bottom';\n\n const availableSpace =\n transformOrigin === 'top'\n ? window.innerHeight -\n containerReference.current!.getBoundingClientRect()[transformOrigin] -\n 16\n : containerReference.current!.getBoundingClientRect()[transformOrigin] - 16;\n\n if (availableSpace < listHeight) {\n setOptionsListMaxHeight(`${availableSpace}px`);\n setOpacity(100);\n return;\n }\n\n setOptionsListMaxHeight('none');\n setOpacity(100);\n };\n\n const onOptionChangeHandler = (event: React.MouseEvent<HTMLLIElement>) => {\n // We need to set value and the fire change event. If a custom ref has been given we pass that value, otherwise we use the ref we've created ourselves when the component was instantiated.\n if (nativeSelect.current) {\n nativeSelect.current.value = event.currentTarget.dataset.value!;\n nativeSelect.current.dispatchEvent(new Event('change', { bubbles: true }));\n } else if (ref) {\n (ref as RefObject<HTMLSelectElement>).current!.value = event.currentTarget.dataset.value!;\n (ref as RefObject<HTMLSelectElement>).current!.dispatchEvent(\n new Event('change', { bubbles: true })\n );\n }\n setExpanded(false);\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n onOptionSelect: onOptionChangeHandler,\n selected: child.props.value === value,\n filter: filter,\n })\n );\n\n const renderSearch = () => (\n <Input\n autoFocus\n onChange={filterResults}\n className={classes['select-search']}\n wrapperProps={{ className: classes['select-search-wrapper'] }}\n type=\"text\"\n name=\"search-option\"\n placeholder={searchPlaceholder}\n />\n );\n\n const filterResults = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFilter(event.currentTarget.value);\n };\n\n const statusIcon = () => {\n if (error) {\n return <Icon className={classes['warning']} icon={Icons.Warning} />;\n }\n\n if (value?.length !== 0 && onClear) {\n return (\n <Icon\n tag=\"div\"\n data-clear\n icon={Icons.TimesThin}\n onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n e.preventDefault();\n e.stopPropagation();\n onClear(e);\n }}\n />\n );\n }\n return null;\n };\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange && onChange(event);\n };\n\n useEffect(() => {\n syncDisplayValue(value);\n }, [value]);\n\n useEffect(() => {\n rePositionList();\n }, [expanded]);\n\n useBodyClick(\n (event: MouseEvent) => !(event.target as Element).closest('.custom-select') && expanded,\n () => {\n setExpanded(!expanded);\n setListPosition({ top: 0, bottom: 'initial' });\n setOpacity(0);\n },\n expanded\n );\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <Fragment>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n aria-hidden=\"true\"\n ref={ref || nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses['sr-only']}\n >\n <option value=\"\"></option>\n {React.Children.map(children, (child) => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n ref={containerReference}\n className={`custom-select ${classes.select} ${additionalClasses.join(' ')} ${\n className ?? ''\n }`}\n >\n <button\n onClick={() => setExpanded(!expanded)}\n type=\"button\"\n name={name}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n >\n <div data-display className={classes['selected']}>\n {!value && placeholder && (\n <span className={classes['placeholder']}>{placeholder}</span>\n )}\n {value?.length > 0 && <span>{display}</span>}\n </div>\n <div className={classes['status']}>\n {statusIcon()}\n <Icon className={classes['triangle-down']} icon={Icons.TriangleDown} />\n </div>\n </button>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes['list-wrapper']}`}\n style={{\n display: expanded ? 'block' : 'none',\n opacity: opacity,\n maxHeight: optionsListMaxHeight,\n ...listPosition,\n }}\n >\n {Array.isArray(children) && children.length > 10 && renderSearch()}\n <ul role=\"listbox\" tabIndex={-1}>\n {renderOptions()}\n </ul>\n </div>\n </div>\n </Fragment>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useEffect, useState } from 'react';\nimport classes from './Select.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'li'> {\n children: string;\n value: string;\n disabled?: boolean;\n selected?: boolean;\n label?: string;\n filter?: string;\n onOptionSelect?: (event: React.SyntheticEvent<HTMLLIElement>) => void;\n}\n\nexport const Option = React.forwardRef<HTMLLIElement, Props>(\n (\n {\n children,\n className,\n selected = false,\n onOptionSelect,\n disabled,\n filter,\n value,\n ...rest\n }: Props,\n ref\n ) => {\n const [showOption, setShowOption] = useState(true);\n\n const onSelectHandler = (event: React.SyntheticEvent<HTMLLIElement>) => {\n if (onOptionSelect) onOptionSelect(event);\n };\n\n useEffect(() => {\n if (filter) {\n setShowOption(children.toLowerCase().match(filter.toLowerCase()) !== null);\n } else {\n setShowOption(true);\n }\n }, [filter]);\n\n if (!showOption) return null;\n\n return (\n <li\n {...rest}\n ref={ref}\n data-value={value}\n className={`${selected ? classes['selected-option'] : ''} ${\n disabled ? classes.disabled : ''\n } ${className ?? ''}`}\n onClick={onSelectHandler}\n onKeyPress={(e) => {\n e.key === 'Enter' && onSelectHandler(e);\n }}\n aria-selected={selected}\n role=\"option\"\n tabIndex={disabled ? -1 : 0}\n >\n {children}\n </li>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, useState } from 'react';\nimport classes from './Pagination.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\nimport { IconButton } from '../Button/IconButton';\nimport { Icons, Icon } from '../Icon/Icon';\nimport { Input } from '../Form/Input/Input';\nimport { Select } from '../Form/Select/Select';\nimport { Option } from '../Form/Select/Option';\nimport { Label } from '../Form/Label/Label';\n\nexport type PaginationTranslations = {\n totalItems: string;\n itemsPerPage: string;\n itemsPerPageLabel: string;\n currentPage: string;\n currentPageLabel: string;\n};\n\nexport type PageChangeLabels = 'next' | 'previous' | 'first' | 'last';\n\nenum DefaultTranslations {\n totalItems = 'Total items',\n itemsPerPage = 'Items per page',\n currentPage = 'Page %1 of %2',\n itemsPerPageLabel = 'Select how many items per page you want to see.',\n currentPageLabel = 'What page you are currently on.',\n}\n\nexport type PageSize = 10 | 25 | 50;\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'translate'> {\n currentPage?: number;\n totalElements?: number;\n pageSize?: PageSize;\n translate?: PaginationTranslations;\n onPageChange: (pageToGoTo: number) => void;\n onPageSizeChange: (pageSize: PageSize) => void;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n totalElements,\n pageSize = 10,\n translate = DefaultTranslations,\n currentPage,\n className,\n onPageChange,\n onPageSizeChange,\n ...rest\n }: Props,\n ref\n ) => {\n /** We use an internal state variable, because we don't want to fire onCurrentPageChange whenever onChange fires on the input. Rather, only when the Enter key is pressed. */\n const [internalCurrentPage, setInternalCurrentPage] = useState(currentPage?.toString() || '1');\n const calculateAmountOfPages = () => (totalElements ? Math.ceil(totalElements / pageSize) : 0);\n\n const onEnterListener = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'Enter') {\n onPageChange(Number(internalCurrentPage));\n }\n };\n\n const renderCurrentPageTranslation = () => {\n const amountOfPages = calculateAmountOfPages();\n\n if (amountOfPages) {\n const splitCurrentPageTranslation = translate.currentPage.split(' ');\n\n return splitCurrentPageTranslation.map((string) => {\n if (string.includes('%1')) {\n return (\n <Fragment key={string}>\n <Label\n id=\"current-value-input-label\"\n htmlFor=\"current-value-input\"\n className={readyclasses['sr-only']}\n >\n {translate.currentPageLabel}\n </Label>\n <Input\n aria-labelledby=\"current-value-input-label\"\n key=\"input\"\n id=\"current-value-input\"\n type=\"text\"\n size={currentPage?.toString().length}\n max={calculateAmountOfPages()}\n wrapperProps={{ className: classes['current-value-input'] }}\n onKeyUp={onEnterListener}\n onBlur={(event: React.ChangeEvent<HTMLInputElement>) =>\n onPageChange(Number(event.target.value))\n }\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setInternalCurrentPage(e.target.value)\n }\n name=\"current-value-input\"\n value={internalCurrentPage}\n className={`${classes['form-element']} ${classes['current-page-input']}`}\n />\n </Fragment>\n );\n }\n\n if (string.includes('%2')) {\n return <div key={string}>{string.replace('%2', amountOfPages.toString())}&nbsp;</div>;\n }\n\n return <div key={string}>{string}&nbsp;</div>;\n });\n }\n\n return null;\n };\n\n const onPageSizeChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const pageSizeNumber = Number(event.target.value) as PageSize;\n onPageSizeChange(pageSizeNumber);\n };\n\n const onPageChangeHandler = (pageToGoTo: number) => {\n onPageChange(pageToGoTo);\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['pagination-wrapper']} ${className ? className : ''}`}\n >\n {totalElements && (\n <div className={classes['total']}>\n <span tabIndex={0}>\n {translate.totalItems}: <span>{totalElements}</span>\n </span>\n </div>\n )}\n <div className={classes['pagination']}>\n {totalElements && pageSize && (\n <div className={classes['per-page']}>\n <Label id=\"page-size-select-label\">{translate.itemsPerPage}</Label>\n <Select\n labeledBy=\"page-size-select-label\"\n className={`${classes['form-element']} ${classes['page-size-select']}`}\n value={pageSize.toString()}\n onChange={onPageSizeChangeHandler}\n >\n <Option value=\"10\">10</Option>\n <Option value=\"25\">25</Option>\n <Option value=\"50\">50</Option>\n </Select>\n </div>\n )}\n <Fragment>\n {((currentPage && currentPage > 2) || (currentPage && currentPage > 1)) && (\n <div className={classes['previous']}>\n {currentPage > 2 && (\n <IconButton\n title=\"first\"\n onClick={() => onPageChangeHandler(0)}\n data-paginate=\"first\"\n >\n <Icon icon={Icons.NavigationFirst} />\n </IconButton>\n )}\n {currentPage > 1 && (\n <IconButton\n title=\"previous\"\n onClick={() => onPageChangeHandler(currentPage - 1)}\n data-paginate=\"previous\"\n >\n <Icon icon={Icons.ChevronLeft} />\n </IconButton>\n )}\n </div>\n )}\n {totalElements && (\n <div className={classes['page']}>{renderCurrentPageTranslation()}</div>\n )}\n <div className={classes['next']}>\n {((currentPage && currentPage < calculateAmountOfPages()) ||\n (currentPage && !totalElements)) && (\n <IconButton\n title=\"next\"\n onClick={() => onPageChangeHandler(currentPage + 1)}\n data-paginate=\"next\"\n >\n <Icon icon={Icons.ChevronRight} />\n </IconButton>\n )}\n {currentPage && totalElements && currentPage < calculateAmountOfPages()! - 1 && (\n <IconButton\n title=\"last\"\n onClick={() => onPageChangeHandler(totalElements / pageSize)}\n data-paginate=\"last\"\n >\n <Icon icon={Icons.NavigationLast} />\n </IconButton>\n )}\n </div>\n </Fragment>\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Label.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'label'> {\n children?: ReactNode;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, Props>(\n ({ children, className, hidden = false, ...rest }: Props, ref) => {\n return (\n <label\n {...rest}\n ref={ref}\n className={`${hidden ? readyclasses['sr-only'] : ''} ${classes['label']} ${\n className ?? ''\n }`}\n >\n {children}\n </label>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport classes from './TabButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n children?: string;\n selected?: boolean;\n focussed?: boolean;\n tabId?: string;\n tabPanelId?: string;\n onTabButtonClick?: () => void;\n}\n\nexport const TabButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n selected = false,\n focussed = false,\n tabId,\n tabPanelId,\n className,\n onTabButtonClick,\n ...rest\n }: Props,\n ref\n ) => {\n useEffect(() => {\n if (focussed && ref) {\n (ref as React.MutableRefObject<HTMLButtonElement>).current.focus();\n }\n }, [focussed]);\n\n const classNames = [classes['tabbutton']];\n\n selected && classNames.push(classes['selected']);\n focussed && !selected && classNames.push(classes['focussed']);\n className && classNames.push(className);\n\n return (\n <button\n {...rest}\n aria-selected={selected}\n key={tabId}\n className={classNames.join(' ')}\n ref={ref}\n role=\"tab\"\n tabIndex={selected ? 0 : -1}\n type=\"button\"\n aria-controls={tabPanelId}\n id={tabId}\n onClick={onTabButtonClick}\n >\n <span aria-hidden=\"true\">{children}</span>\n {children}\n </button>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './TabPanel.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactNode;\n tabId: string;\n tabPanelId: string;\n selected?: boolean;\n}\n\nexport const TabPanel = React.forwardRef<HTMLDivElement, Props>(\n ({ children, tabId, tabPanelId, selected = false, className, ...rest }: Props, ref) => (\n <div\n {...rest}\n ref={ref}\n aria-labelledby={tabId}\n className={`${classes['tabpanel']} ${selected ? classes['selected'] : ''} ${className ?? ''}`}\n id={tabPanelId}\n role=\"tabpanel\"\n tabIndex={0}\n hidden={!selected || undefined}\n aria-hidden={!selected}\n >\n {children}\n </div>\n )\n);\n","export const labelId = (id: string) => `${id}-label`;\nexport const descriptionId = (id: string) => `${id}-description`;\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport classes from './BaseModal.module.scss';\nimport { labelId, descriptionId } from './BaseModalContext';\n\nconst SCROLL_PROPERTY_NAME = 'overflow';\nconst SCROLL_PROPERTY_VALUE = 'hidden';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n children: React.ReactNode;\n open: boolean;\n onClose?: (event?: React.MouseEvent<HTMLElement>) => unknown;\n className?: string;\n containerClassName?: string;\n labelledby?: string;\n describedby?: string;\n disableEscapeKeyDown?: boolean;\n disableBackdrop?: boolean;\n zIndex?: number;\n domRoot?: HTMLElement;\n}\n\nexport const useSetBodyScroll = (open: boolean) => {\n const hideBodyScroll = () => {\n document.body.style[SCROLL_PROPERTY_NAME] = SCROLL_PROPERTY_VALUE;\n };\n\n const showBodyScroll = () => {\n const allModalsClosed =\n document.querySelectorAll('[role=dialog][data-hidden=false]').length === 0;\n if (allModalsClosed) {\n document.body.style.removeProperty(SCROLL_PROPERTY_NAME);\n }\n };\n\n useEffect(() => {\n if (open) {\n hideBodyScroll();\n } else {\n showBodyScroll();\n }\n }, [open]);\n};\n\nexport const BaseModal = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n children,\n open,\n onClose,\n className = '',\n containerClassName = '',\n labelledby,\n describedby,\n disableEscapeKeyDown = false,\n disableBackdrop = false,\n zIndex,\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n useSetBodyScroll(open);\n\n const handleEscKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disableEscapeKeyDown && event.key === 'Escape') {\n event.stopPropagation();\n onClose && onClose();\n }\n };\n\n const handleBackdropClick = () => !disableBackdrop && onClose && onClose();\n\n return createPortal(\n <div\n {...rest}\n ref={ref}\n id={id}\n className={`${classes['modal']} ${open && classes['visible']} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledby || labelId(id)}\n aria-describedby={describedby || descriptionId(id)}\n aria-hidden={!open}\n tabIndex={-1}\n data-hidden={!open}\n onKeyDown={handleEscKeyPress}\n style={{ zIndex }}\n >\n <div className={classes['backdrop']} onClick={handleBackdropClick}></div>\n {open && (\n <div\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerClassName}`}\n >\n {children}\n </div>\n )}\n </div>,\n domRoot\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, useEffect } from 'react';\nimport classes from './BaseModalContent.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n children: React.ReactNode;\n className?: string;\n disableAutoFocus?: boolean;\n}\n\nexport const BaseModalContent = React.forwardRef<HTMLDivElement, Props>(\n ({ id, children, className = '', disableAutoFocus = false, ...rest }: Props, ref) => {\n const contentRef = createRef<HTMLDivElement>();\n\n useEffect(() => {\n if (!disableAutoFocus && ref) {\n (ref as React.RefObject<HTMLDivElement>).current?.focus();\n } else if (!disableAutoFocus) {\n contentRef.current?.focus();\n }\n }, []);\n\n /**tabIndex is set to be able to do focus on that element which we need for catching keyDown events */\n return (\n <div\n {...rest}\n ref={ref || contentRef}\n id={id}\n className={`${classes['content']} ${className}`}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'footer'> {\n children?: React.ReactNode;\n}\n\nexport const BaseModalActions = React.forwardRef<HTMLElement, Props>(\n ({ children, className = '', ...rest }: Props, ref) => {\n return (\n <footer {...rest} ref={ref} className={`${classes['actions']} ${className}`}>\n {children}\n </footer>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport {\n BaseModalActions,\n Props as BaseModalActionsProps,\n} from '../../BaseModal/BaseModalActions/BaseModalActions';\nimport classes from './DialogActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<any>, BaseModalActionsProps {\n align: 'left' | 'right';\n}\n\nexport const DialogActions = React.forwardRef<HTMLElement, Props>(\n ({ children, align, ...rest }: Props, ref) => {\n return (\n <BaseModalActions\n {...rest}\n ref={ref}\n className={`${classes['actions']}${align === 'left' ? ' ' + classes['left'] : ''}`}\n >\n {children}\n </BaseModalActions>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Typography } from '../../../Typography/Typography';\nimport classes from './DialogTitle.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n}\n\nexport const DialogTitle = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport { BaseModalContent } from '../BaseModal/BaseModalContent/BaseModalContent';\nimport { DialogActions } from './DialogActions/DialogActions';\nimport classes from './Dialog.module.scss';\nimport { DialogTitle } from './DialogTitle/DialogTitle';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { labelId, descriptionId } from '../BaseModal/BaseModalContext';\nimport { generateID } from '../../util/helper';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n open: boolean;\n children: React.ReactNode;\n alignActions: 'left' | 'right';\n onClose: () => void;\n title: string;\n primaryAction: Action;\n secondaryAction?: Action;\n zIndex?: number;\n disableEscapeKeyDown?: boolean;\n}\n\nexport interface Action extends Omit<ButtonProps, 'variant' | 'ref'> {\n label: string;\n onClick: (event?: React.MouseEvent<HTMLButtonElement>) => unknown;\n}\n\nexport const Dialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n open,\n children,\n alignActions,\n onClose,\n title,\n primaryAction,\n secondaryAction,\n zIndex,\n disableEscapeKeyDown = true,\n ...rest\n }: Props,\n ref\n ) => {\n const [dialogId] = useState(id ?? generateID(20));\n const { label: primaryLabel, ...restOfPrimaryAction } = primaryAction;\n const PrimaryButton = (\n <Button key=\"primary\" {...restOfPrimaryAction}>\n {primaryLabel}\n </Button>\n );\n const TertiaryButton =\n secondaryAction &&\n (function () {\n const { label: secondaryLabel, ...restOfSecondaryAction } = secondaryAction;\n return (\n <Button key=\"tertiary\" variant=\"text\" {...restOfSecondaryAction}>\n {secondaryLabel}\n </Button>\n );\n })();\n\n const onHiddenInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n /** It has to be here because then we will need to check if user doesn't click tab to select action button and want to do another action then primary one? */\n if (event.key === 'Enter') {\n primaryAction.onClick();\n }\n };\n\n return (\n <BaseModal\n {...rest}\n ref={ref}\n id={dialogId}\n className={classes['dialog']}\n containerClassName={classes['container']}\n open={open}\n disableBackdrop\n onClose={onClose}\n zIndex={zIndex}\n disableEscapeKeyDown={disableEscapeKeyDown}\n >\n <DialogTitle id={labelId(dialogId)} title={title} />\n <BaseModalContent\n id={descriptionId(dialogId)}\n className={classes['content']}\n disableAutoFocus\n >\n {children}\n </BaseModalContent>\n <DialogActions align={alignActions}>\n {alignActions === 'left'\n ? [PrimaryButton, TertiaryButton]\n : [TertiaryButton, PrimaryButton]}\n </DialogActions>\n <input\n autoFocus\n aria-hidden={true}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n opacity: 0,\n }}\n maxLength={0}\n tabIndex={-1}\n onKeyPress={onHiddenInputKeyPress}\n />\n </BaseModal>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalHeader.module.scss';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Typography } from '../../../Typography/Typography';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n children?: React.ReactNode;\n onClose: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const BaseModalHeader = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, children, onClose, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <div className={classes['headline']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <IconButton onClick={onClose} className={classes['closeBtn']} title=\"close modal\">\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Dialog } from '../../Dialog/Dialog';\nimport { Typography } from '../../../Typography/Typography';\nimport { DataAttributeKey } from '../../../interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n open: boolean;\n discardChangesButtonLabel: string;\n keepEditingButtonLabel: string;\n contentLabel: string;\n titleLabel: string;\n [dataAttribute: DataAttributeKey]: any;\n onKeepEditing: () => void;\n onDiscardChanges: () => void;\n}\n\nexport const DiscardChangesDialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n open,\n onKeepEditing,\n onDiscardChanges,\n discardChangesButtonLabel,\n keepEditingButtonLabel,\n contentLabel,\n titleLabel,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <Dialog\n {...rest}\n ref={ref}\n open={open}\n alignActions=\"left\"\n title={titleLabel}\n onClose={onKeepEditing}\n primaryAction={{\n label: discardChangesButtonLabel,\n onClick: onDiscardChanges,\n }}\n secondaryAction={{\n label: keepEditingButtonLabel,\n onClick: onKeepEditing,\n }}\n disableEscapeKeyDown={false}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {contentLabel}\n </Typography>\n </Dialog>\n );\n }\n);\n","import React, { useState } from 'react';\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n}\n\nexport type HorizontalPlacment = 'left' | 'center' | 'centerh' | 'right';\nexport type VerticalPlacement = 'top' | 'center' | 'centerv' | 'bottom';\n\ntype Axis = 'vertical' | 'horizontal';\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacment;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | 'initial';\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: 'left',\n vertical: 'top',\n },\n placement: {\n horizontal: 'left',\n vertical: 'top',\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n};\n\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: 'initial',\n bottom: 'initial',\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'top' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'center' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'bottom' && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'horizontal' &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'top' &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'vertical' &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'right' &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'bottom' &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === 'horizontal' && configObject.offset?.left !== 0) ||\n (requestedReturnValue === 'horizontal' && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'right') {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === 'vertical' && configObject.offset?.top !== 0) ||\n (requestedReturnValue === 'vertical' && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'top' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'bottom') {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacment | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'top'\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === 'center') {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === 'horizontal' ? 'width' : 'height'] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === 'right' ||\n transformOrigin[requestedReturnValue] === 'bottom'\n ) {\n value =\n window[requestedReturnValue === 'horizontal' ? 'innerWidth' : 'innerHeight'] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === 'horizontal') {\n return 'centerh';\n } else if (requestedReturnValue === 'vertical') {\n return 'centerv';\n }\n throw new Error(\n `the requested return value isn\\'t \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacment | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === 'center' ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = 'left';\n let oppositeDirection = 'right';\n\n if (axis === 'horizontal' && configObject.transformOrigin?.horizontal === 'right') {\n direction = 'right';\n oppositeDirection = 'left';\n } else if (axis === 'horizontal') {\n direction = 'left';\n oppositeDirection = 'right';\n }\n\n if (axis === 'vertical' && configObject.transformOrigin?.vertical === 'bottom') {\n direction = 'bottom';\n oppositeDirection = 'top';\n } else if (axis === 'vertical') {\n direction = 'top';\n oppositeDirection = 'bottom';\n }\n\n setPosition((prevState) => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: 'initial',\n }));\n };\n\n const calculatePosition = () => {\n if (!configObject.relativeElement?.current) return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth,\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y,\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'horizontal');\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'vertical');\n };\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode, RefObject, useEffect, useRef } from 'react';\nimport { usePosition, Offset, Placement } from '../hooks/usePosition';\nimport classes from './Popover.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactNode;\n show?: boolean;\n anchorEl?: RefObject<HTMLOrSVGElement>;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n}\n\nexport const Popover = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, show, placement, offset, transformOrigin, anchorEl, ...rest }, ref) => {\n const elToBePositioned = useRef<HTMLDivElement>(null);\n\n if (show === undefined) {\n throw new Error('Please make sure to define the \"show\" property on your Popover component');\n }\n\n const { top, left, right, bottom, calculatePosition } = usePosition({\n elementToBePositioned: elToBePositioned,\n relativeElement: anchorEl,\n offset: offset,\n placement: placement,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n calculatePosition();\n }, [show]);\n\n return (\n <div ref={ref} {...rest}>\n <div\n ref={elToBePositioned}\n className={`${classes.popover} ${className ?? ''} ${show ? classes.show : ''}`}\n style={{ top: top, left: left, right: right, bottom: bottom }}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n","import React, { useRef, MouseEventHandler, useState, ComponentPropsWithRef } from 'react';\nimport { Popover } from '../Popover/Popover';\nimport classes from './TextEllipsis.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: string;\n popoverClassName?: string;\n}\n\nexport const TextEllipsis = React.forwardRef<HTMLDivElement, Props>(\n ({ children, popoverClassName, className, ...rest }: Props, ref) => {\n const [showPopover, setShowPopover] = useState(false);\n const textContainer = useRef<HTMLDivElement>(null);\n\n const ellipsisVisible = () => {\n if (\n textContainer.current &&\n textContainer.current.offsetWidth < textContainer.current.scrollWidth\n ) {\n return true;\n }\n return false;\n };\n\n const onMouseEnter: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(true);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(false);\n };\n\n return (\n <div\n {...rest}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={`${classes['text-ellipsis']} ${className ?? ''}`}\n ref={ref || textContainer}\n >\n {children}\n <Popover\n aria-hidden={true}\n data-hidden={!showPopover}\n show={showPopover}\n role=\"tooltip\"\n anchorEl={textContainer}\n className={`${classes.popover} ${popoverClassName ?? ''}`}\n >\n {children}\n </Popover>\n </div>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ReactNode,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tooltip.module.scss';\nimport { generateID } from '../util/helper';\nimport { Offset, Placement, usePosition } from '../hooks/usePosition';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n label: string | ReactNode;\n children: string;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n domRoot?: HTMLElement;\n}\n\ninterface DefaultPosition {\n placement: Placement;\n offset: Offset;\n transformOrigin: Placement;\n}\n\nconst defaultPosition: DefaultPosition = {\n placement: { horizontal: 'right', vertical: 'center' },\n offset: { left: 16, right: 0, top: 0, bottom: 0 },\n transformOrigin: { horizontal: 'left', vertical: 'center' },\n};\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n placement = defaultPosition.placement,\n offset = defaultPosition.offset,\n transformOrigin = defaultPosition.transformOrigin,\n domRoot = document.body,\n label,\n ...rest\n }: Props,\n ref\n ) => {\n const [identifier] = useState(generateID());\n const [visible, setVisible] = useState(false);\n\n const relativeElement = useRef<HTMLDivElement>(null);\n const elementToBePositioned = useRef<HTMLDivElement>(null);\n\n const { top, bottom, right, left, calculatePosition } = usePosition({\n relativeElement: relativeElement,\n elementToBePositioned: elementToBePositioned,\n placement: placement,\n offset: offset,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n if (!visible) return;\n\n function escapePressHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setVisible(false);\n }\n }\n\n document.addEventListener('keyup', escapePressHandler);\n\n return () => {\n document.removeEventListener('keyup', escapePressHandler);\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n calculatePosition();\n }, [visible]);\n\n const renderChildren = () => {\n if (React.isValidElement(label)) {\n return React.cloneElement(label, {\n onFocus: () => setVisible(true),\n onBlur: () => setVisible(false),\n 'aria-describedby': identifier,\n tabIndex: 0,\n className: classes['label'],\n });\n }\n\n return (\n <span\n className={classes['label']}\n tabIndex={0}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\n aria-describedby={identifier}\n >\n {label}\n </span>\n );\n };\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ?? ''}`}>\n {renderChildren()}\n <div className={`${classes['tooltip-wrapper']}`}>\n <Icon\n ref={relativeElement}\n tag=\"div\"\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n icon={Icons.InfoCircle}\n className={classes.icon}\n />\n {createPortal(\n <div\n ref={elementToBePositioned}\n style={{\n ...rest.style,\n top: top,\n left: left,\n right: right,\n bottom: bottom,\n }}\n aria-hidden={!visible}\n id={identifier}\n className={`${classes.tooltip} ${visible ? classes.visible : ''}`}\n >\n {children}\n </div>,\n domRoot\n )}\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useState } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tile.module.scss';\nimport readyClasses from '../readyclasses.module.scss';\n\nimport { Props as ContextMenuProps } from '../ContextMenu/ContextMenu';\nimport { generateID } from '../util/helper';\nimport { Props as IconButtonProps } from '../Button/IconButton';\n\ninterface ImageProps {\n src: string;\n}\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n title: string;\n imageProps?: ImageProps;\n enabled?: boolean;\n loading?: boolean;\n tileAction?: ReactElement<ContextMenuProps> | ReactElement<IconButtonProps>;\n}\n\nexport const Tile = React.forwardRef<HTMLDivElement, Props>(\n ({ title, imageProps, enabled, className, loading, tileAction, ...rest }: Props, ref) => {\n const [tileDescriptionID] = useState(generateID(20));\n\n if (!title) {\n throw new Error('Please make sure to pass a title prop to your Tile component.');\n }\n\n const statusMessage = () => {\n if (enabled) {\n return 'Status: enabled';\n }\n\n return 'Status: disabled';\n };\n\n return (\n <article\n {...rest}\n tabIndex={0}\n aria-labelledby={tileDescriptionID}\n ref={ref}\n className={`${classes['tile']} ${loading ? classes['loading'] : ''}`}\n >\n <header style={{ justifyContent: enabled === undefined ? 'flex-end' : 'space-between' }}>\n {enabled === true && (\n <Icon\n color=\"var(--success)\"\n icon={Icons.Checkmark}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled === false && (\n <Icon\n color=\"var(--greyed-out)\"\n icon={Icons.Forbidden}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled !== undefined && (\n <span id={tileDescriptionID} className={readyClasses['sr-only']}>\n {`${title}. ${statusMessage()}`}\n </span>\n )}\n {tileAction ?? null}\n </header>\n <div className={classes['content']}>\n {imageProps && imageProps.src.length > 0 && (\n <figure className={classes['image']}>\n {!loading && <img {...imageProps} alt=\"\" />}\n </figure>\n )}\n {(!imageProps || imageProps.src.length === 0) && (\n <Icon className={classes['placeholder']} icon={Icons.Image} />\n )}\n <span className={classes['title']}>{title}</span>\n </div>\n </article>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Tiles.module.scss';\nimport { Tile } from './Tile';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactNode;\n loading?: boolean;\n}\n\nexport const Tiles = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, loading = false, ...rest }: Props, ref) => {\n const renderChildren = () => {\n if (loading) {\n return [\n <Tile\n key=\"placeholder1\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder2\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder3\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n ];\n }\n\n return children;\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['tiles']} ${className ?? ''}`}\n aria-live=\"polite\"\n aria-busy={loading}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect, useRef, useState } from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport { Props as IconButtonProps } from '../Button/IconButton';\nimport { Popover } from '../Popover/Popover';\nimport { Placement, Offset } from '../hooks/usePosition';\nimport { Props as ContextMenuItemProps } from './ContextMenuItem';\nimport classes from './ContextMenu.module.scss';\nimport { useBodyClick } from '../hooks/useBodyClick';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;\n children: ReactElement<ContextMenuItemProps> | ReactElement<ContextMenuItemProps>[];\n placement?: Placement;\n transformOrigin?: Placement;\n offset?: Offset;\n id: string;\n show?: boolean;\n domRoot?: HTMLElement;\n onShow?: () => void;\n onClose?: () => void;\n}\n\nexport const ContextMenu = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n trigger,\n children,\n id,\n show = false,\n onShow,\n onClose,\n placement = { horizontal: 'right', vertical: 'top' },\n offset = { top: 0, bottom: 0, left: 0, right: 0 },\n transformOrigin = { horizontal: 'left', vertical: 'top' },\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n const anchorEl = useRef<HTMLButtonElement>(null);\n const [showContextMenu, setShowContextMenu] = useState(show);\n\n if (!id) {\n throw new Error('You need to provide an ID to the context menu');\n }\n\n useBodyClick(\n (event) => {\n return showContextMenu && anchorEl.current !== event.target;\n },\n () => {\n setShowContextMenu(false);\n },\n showContextMenu\n );\n\n useEffect(() => {\n if (showContextMenu === true) {\n onShow && onShow();\n } else {\n onClose && onClose();\n }\n }, [showContextMenu]);\n\n const renderTrigger = () =>\n React.cloneElement(trigger, {\n id: id,\n 'aria-haspopup': 'true',\n 'aria-controls': `${id}-menu`,\n 'aria-expanded': show,\n onClick: () => setShowContextMenu(!showContextMenu),\n ref: anchorEl,\n });\n\n return (\n <div {...rest} ref={ref} className={classes['context-menu']}>\n {renderTrigger()}\n {createPortal(\n <Popover\n placement={placement}\n transformOrigin={transformOrigin}\n offset={offset}\n anchorEl={anchorEl}\n show={showContextMenu}\n >\n <ul className={classes.menu} id={`${id}-menu`} aria-describedby={id} role=\"menu\">\n {children}\n </ul>\n </Popover>,\n domRoot\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, ReactElement } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport { Link, Props as LinkProps } from '../Link/Link';\nimport { Typography } from '../Typography/Typography';\nimport classes from './Breadcrumbs.module.scss';\n\ntype ChildrenType = ReactElement<LinkProps, typeof Link>;\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ChildrenType | ChildrenType[];\n 'aria-label': string;\n}\n\nexport const Breadcrumbs = React.forwardRef<HTMLDivElement, Props>(\n ({ children, 'aria-label': ariaLabel, className = '', ...rest }: Props, ref) => {\n const items = React.Children.map(children, (child, index) => {\n const isLastElement = Array.isArray(children) ? index === children.length - 1 : true;\n if (isLastElement) {\n return (\n <Typography\n key={child.key}\n variant=\"body\"\n tag=\"span\"\n className={classes['last']}\n aria-current=\"page\"\n >\n {child.props.children}\n </Typography>\n );\n } else {\n return (\n <Fragment key={child.key}>\n {React.cloneElement(child)}\n <Icon icon={Icons.ChevronRight} className={classes['icon']} />\n </Fragment>\n );\n }\n });\n return (\n <nav\n {...rest}\n ref={ref}\n aria-label={ariaLabel}\n className={`${classes['breadcrumbs']} ${className}`}\n >\n {items}\n </nav>\n );\n }\n);\n","import React, { createContext } from 'react';\nimport { SnackbarOptionsProps } from '../interfaces';\n\ninterface SnackbarContextProps {\n enqueueSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueSuccessSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueErrorSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextProps>({\n enqueueSnackbar: () => null,\n enqueueSuccessSnackbar: () => null,\n enqueueErrorSnackbar: () => null,\n});\n\ninterface Props {\n initialState: SnackbarContextProps;\n children?: React.ReactNode;\n}\n\nconst SnackbarContextProvider = ({ children, initialState }: Props) => {\n return <SnackbarContext.Provider value={initialState}>{children}</SnackbarContext.Provider>;\n};\n\nexport { SnackbarContextProvider, SnackbarContext, SnackbarContextProps };\n","import React from 'react';\nimport classes from './SnackbarContainer.module.scss';\n\nexport interface Placement {\n vertical: 'top' | 'bottom';\n horizontal: 'start' | 'center' | 'end';\n}\n\nexport interface Props {\n placement: Placement;\n children?: React.ReactNode;\n zIndex?: number;\n className?: string;\n}\n\nexport const SnackbarContainer = ({ placement, children, zIndex, className, ...rest }: Props) => {\n return (\n <div\n {...rest}\n style={{ zIndex }}\n className={`${classes['snackbars']} ${classes[placement.horizontal]} ${\n classes[placement.vertical]\n } ${className ?? ''}`}\n >\n {children}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useAnimation = <RefElement extends HTMLElement>(callback: () => void) => {\n const animatedObjectRef = useRef<RefElement>(null);\n /** We need to store flag that says us when to call the callback */\n const [animationStarted, setAnimationStarted] = useState(false);\n\n const onAnimationEnd = () => animationStarted && callback();\n\n useEffect(() => {\n animatedObjectRef.current?.addEventListener('animationend', onAnimationEnd);\n return () => animatedObjectRef.current?.removeEventListener('animationend', onAnimationEnd);\n }, [animationStarted]);\n\n return {\n ref: animatedObjectRef,\n animationStarted,\n startAnimation: () => setAnimationStarted(true),\n };\n};\n","import React, { useEffect, useRef } from 'react';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Variant, Actions } from '../interfaces';\nimport classes from './SnackbarItem.module.scss';\nimport readyclasses from '../../../readyclasses.module.scss';\nimport { useAnimation } from '../../../hooks/useAnimation';\nimport { Typography } from '../../../Typography/Typography';\n\nconst textColor = 'var(--snackbar-text-color)';\n\nexport interface Props {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n onClose: (key: string) => void;\n closeButtonTitle: string;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarItem = ({\n id,\n title,\n duration,\n variant,\n content,\n actions = [],\n onClose,\n closeButtonTitle,\n}: Props) => {\n const timerHandler = useRef<ReturnType<typeof setTimeout>>();\n const onAnimationEnd = () => onClose(id);\n const { ref, animationStarted, startAnimation } = useAnimation<HTMLDivElement>(onAnimationEnd);\n\n useEffect(() => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n return () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n }, []);\n\n const onMouseEnter = () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n\n const onMouseLeave = () => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n };\n\n const getVariantIcon = () => {\n if (variant === 'error') {\n return Icons.Error;\n }\n return variant === 'success' ? Icons.CheckmarkCircleBreakout : Icons.InfoCircle;\n };\n\n const actionButtons = actions.map((actionProp, index) => (\n <button\n key={index}\n {...actionProp}\n onClick={(e) => {\n onClose(id);\n actionProp.onClick && actionProp.onClick(e);\n }}\n children={actionProp.label}\n className={classes['action-button']}\n ></button>\n ));\n\n return (\n <div\n ref={ref}\n className={`${classes['snackbar']} ${classes[variant]} ${\n animationStarted ? readyclasses['slide-out'] : readyclasses['slide-in']\n }`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Icon icon={getVariantIcon()} className={classes['icon']} />\n <div className={classes['container']}>\n <div className={classes['headline']}>\n <Typography className={classes['title']} variant=\"h4\" tag=\"span\">\n {title}\n </Typography>\n <IconButton\n onClick={() => startAnimation()}\n className={classes['close-btn']}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} color={textColor} />\n </IconButton>\n </div>\n {!!content && (\n <Typography className={classes['content']} variant=\"body\">\n {content}\n </Typography>\n )}\n {actionButtons.length > 0 && <div className={classes['actions']}>{actionButtons}</div>}\n </div>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\nexport interface ConfigObject {\n name: string | undefined;\n errorMessage?: string;\n error?: boolean;\n parentErrorId?: string;\n helperText?: string;\n parentHelperId?: string;\n}\n\nexport const useFormSelector = (configObject: ConfigObject) => {\n const [identifier] = useState(generateID(15, configObject.name));\n const [describedBy, setDescribedBy] = useState('');\n const [errorId] = useState(generateID(15, configObject.errorMessage));\n\n useEffect(() => {\n if (configObject.error && configObject.parentErrorId) {\n setDescribedBy(configObject.parentErrorId);\n }\n\n if (\n (!configObject.error && configObject.helperText) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.helperText)\n ) {\n setDescribedBy(`${identifier}`);\n }\n\n if (\n (!configObject.error && !configObject.helperText && configObject.parentHelperId) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.parentHelperId)\n ) {\n setDescribedBy(`${configObject.parentHelperId}`);\n }\n\n if (configObject.errorMessage && !configObject.parentErrorId && configObject.error) {\n setDescribedBy(errorId);\n }\n }, [identifier, configObject.error, configObject.parentErrorId]);\n\n return {\n describedBy,\n errorId,\n identifier,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './FormHelperText.module.scss';\nimport { Typography } from '../../Typography/Typography';\nimport { FormElement } from '../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormElement {\n children?: ReactNode;\n}\n\nexport const FormHelperText = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error, className, ...rest }: Props, ref) => {\n return (\n <Typography\n {...rest}\n ref={ref}\n variant=\"sub-text\"\n tag=\"div\"\n className={`${classes['form-helper-text']} ${error ? classes.error : ''} ${\n className ?? ''\n }`}\n >\n {children}\n </Typography>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, ReactNode } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { KeyValuePair } from '../../interfaces';\nimport { FormSelector } from '../form.interfaces';\nimport { FormHelperText, Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './FormSelectorWrapper.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormSelector {\n children?: ReactNode;\n nestedChildren?: ReactNode;\n containerProps?: ComponentPropsWithRef<'div'> & KeyValuePair;\n helperProps?: FormHelperTextProps;\n disabled?: boolean;\n errorId?: string;\n identifier?: string;\n}\n\nexport const FormSelectorWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n nestedChildren,\n containerProps,\n helperProps,\n error,\n disabled,\n helperText,\n errorMessage,\n parentErrorId,\n errorId,\n identifier,\n ...rest\n }: Props,\n ref\n ) => {\n const helperRef = helperProps?.ref || createRef();\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${error ? classes['error'] : ''} ${disabled ? classes['disabled'] : ''} ${\n className ?? ''\n }`}\n >\n <div {...containerProps}>{children}</div>\n {(helperText || (helperProps && helperProps.children)) &&\n (!error || parentErrorId || !errorMessage) && (\n <FormHelperText\n {...helperProps}\n ref={helperRef}\n id={`${identifier}`}\n className={`${classes['helper-text']} ${helperProps?.className ?? ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {errorMessage && !parentErrorId && error && (\n <span className={classes['error-message']}>\n <Icon className={classes['error-icon']} icon={Icons.Error} />\n <span id={errorId}>{errorMessage}</span>\n </span>\n )}\n {nestedChildren}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport classes from './Radio.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport { FormSelector } from '../form.interfaces';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormSelector {\n children: string;\n value: string;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n helperProps?: HelperProps;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n children,\n disabled,\n className,\n value,\n name,\n helperText,\n parentErrorId,\n parentHelperId,\n error,\n errorMessage,\n checked = false,\n formSelectorWrapperProps,\n helperProps,\n onChange,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent) => {\n if (disabled) {\n return;\n }\n /** We have to clone the native event we got here and change the \"target\" property to the value. Otherwise, this regular event has \"on\" as it's event.target.value, which is useless. */\n const nativeEvent: any = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: { value: value },\n });\n\n onChange && onChange(clonedEvent);\n };\n\n /** Default return value is the default radio */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['radio-wrapper']} ${className ?? ''}`}\n containerProps={{ className: classes['radio-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n tabIndex={0}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n onChange={onChangeHandler}\n checked={checked}\n aria-invalid={error ? true : false}\n aria-checked={checked}\n aria-describedby={describedBy}\n name={name}\n value={value}\n id={`${identifier}-radio`}\n type=\"radio\"\n />\n\n {checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Radio}\n />\n )}\n {!checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Circle}\n />\n )}\n\n <label onClick={onChangeHandler} htmlFor={`${identifier}-radio`}>\n {children}\n </label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, ReactNode, useEffect } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './Checkbox.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormSelector } from '../form.interfaces';\n\nconst isToggle = (children: ReactNode) => (children as ReactElement)?.props?.['data-toggle'];\n\nexport interface CheckboxProps extends ComponentPropsWithRef<'input'>, FormSelector {\n children: ReactNode;\n label?: string;\n indeterminate?: boolean;\n helperProps?: FormHelperTextProps;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n children,\n name,\n helperText,\n helperProps,\n indeterminate,\n parentErrorId,\n errorMessage,\n disabled,\n label,\n parentHelperId,\n className,\n error,\n checked = false,\n formSelectorWrapperProps,\n onChange,\n ...rest\n }: CheckboxProps,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n useEffect(() => {\n if (!name) {\n console.error(\"Please pass a 'name' prop to your <Checkbox> component.\");\n }\n\n if (typeof children === 'object' && !isToggle(children) && indeterminate === undefined) {\n throw new Error(\n 'If you have nested checkboxes you have to manage the indeterminate state by passing a boolean to the `indeterminate` prop.'\n );\n }\n }, []);\n\n const determineLabel = () => {\n if (label) {\n return label;\n } else if (children === undefined) {\n throw new Error(\n 'Please make sure to pass either a string or more Checkbox components as a child of your Checkbox component.'\n );\n }\n\n if (typeof children === 'string') {\n return children;\n }\n\n throw new Error(\n 'If you pass Checkboxes as a child component (to create nested checkbox tree) you need to pass a label to the parent checkbox.'\n );\n };\n\n const renderNestedCheckboxes = () => (\n <ul className={classes['checkbox-list']}>\n {React.Children.map(children as ReactNode[], (child) => {\n return (\n <li>\n <Checkbox\n {...(child as ReactElement).props}\n parentHelperId={parentHelperId}\n parentErrorId={parentErrorId}\n error={error}\n disabled={disabled ? disabled : (child as CheckboxProps).disabled}\n >\n {(child as ReactElement).props.children}\n </Checkbox>\n </li>\n );\n })}\n </ul>\n );\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) {\n return;\n }\n onChange && onChange(event);\n };\n\n const renderToggle = () => React.Children.toArray(children).filter(isToggle);\n\n const iconClasses = [classes['input'], disabled ? classes['disabled'] : ''];\n\n /** Default return value is the default checkbox */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['checkbox-wrapper']} ${className ? className : ''}`}\n containerProps={{ className: classes['checkbox-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n nestedChildren={\n typeof children === 'object' && !isToggle(children) && renderNestedCheckboxes()\n }\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n checked={checked}\n onChange={onChangeHandler}\n aria-invalid={error as boolean}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-describedby={describedBy}\n id={`${identifier}-checkbox`}\n name={name}\n type=\"checkbox\"\n />\n {renderToggle()}\n\n {indeterminate && <Icon className={iconClasses.join(' ')} icon={Icons.MinusSquare} />}\n {checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.CheckmarkSquare} />\n )}\n {!checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.Square} />\n )}\n <label htmlFor={`${identifier}-checkbox`}>{determineLabel()}</label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Props as IconProps, Icons } from '../../Icon/Icon';\nimport classes from './Textarea.module.scss';\nimport { FormElement } from '../form.interfaces';\n\ninterface IconPropsPartial extends Omit<Partial<IconProps>, 'ref'> {}\n\nexport interface Props extends ComponentPropsWithRef<'textarea'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n errorProps?: IconPropsPartial;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n error = false,\n disabled = false,\n className,\n rows = 4,\n wrapperProps,\n errorProps,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...wrapperProps}\n className={`${classes['textarea-wrapper']} ${wrapperProps?.className ?? ''}`}\n >\n <textarea\n {...rest}\n ref={ref}\n rows={rows}\n className={`${error ? classes['error'] : ''} ${classes['textarea']} ${className ?? ''}`}\n disabled={disabled}\n />\n {error && (\n <Icon\n {...errorProps}\n className={`${classes['warning']} ${errorProps?.className ?? ''}`}\n icon={Icons.Error}\n />\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Checkbox, CheckboxProps } from '../Checkbox/Checkbox';\nimport classes from './Toggle.module.scss';\n\nexport interface Props\n extends ComponentPropsWithRef<'input'>,\n Omit<CheckboxProps, 'indeterminate' | 'errorMessage' | 'error' | 'children' | 'label'> {\n children: string;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, Props>(\n ({ children, checked, disabled, ...rest }: Props, ref) => (\n <div className={classes['toggle-wrapper']}>\n <Checkbox\n {...rest}\n ref={ref}\n checked={checked}\n className={classes['checkbox']}\n helperProps={{ className: classes['toggle-helper'] }}\n disabled={disabled}\n label={children}\n >\n <span\n data-toggle\n aria-hidden=\"true\"\n className={`${classes['toggle']} ${checked ? classes['checked'] : ''} ${\n disabled ? classes['disabled'] : ''\n } `}\n ></span>\n </Checkbox>\n </div>\n )\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport classes from './FormControl.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactElement | ReactElement[];\n grid?: 1 | 2 | 3;\n align?: 'top' | 'start' | 'middle' | 'center' | 'bottom' | 'end' | 'stretch';\n error?: boolean;\n disabled?: boolean;\n}\n\nexport const FormControl = React.forwardRef<HTMLDivElement, Props>(\n ({ children, disabled, error, className, grid, align = 'center', ...rest }: Props, ref) => {\n const renderChildren = () =>\n React.Children.map(children, (child) => {\n if (!child) {\n return null;\n }\n\n const childElement = React.cloneElement(child, {\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n error: child.props.error !== undefined ? child.props.error : error,\n });\n\n if (grid && grid > 1) {\n return (\n <div className={`${classes['col-' + grid]} ${classes.column}`}>{childElement}</div>\n );\n }\n\n return childElement;\n });\n\n return (\n <div\n {...rest}\n ref={ref}\n data-formcontrol\n className={`${classes['form-control']} ${className ? className : ''} ${\n grid && grid > 1 ? `${classes.grid} ${classes['grid-' + grid]}` : ''\n } ${classes[align]}`}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","/** The empty className property on FormHelperText is on purpose! We want to basically \"filter\" out the className from helperProps because we're adding this to the surrounding div. This makes it so also the errormessage receives this styling. */\n\nimport React, { ComponentPropsWithRef, ReactChild } from 'react';\nimport classes from './FormGroup.module.scss';\nimport { FormHelperText, Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport { Icon, Icons } from '../../Icon/Icon';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactChild[] | ReactChild;\n error?: boolean;\n errorMessageIcon?: Icons;\n errorMessageIconPosition?: 'before' | 'after';\n errorMessage?: string;\n errorId?: string;\n helperIndent?: number;\n helperText?: string;\n helperId?: string;\n helperProps?: HelperProps;\n disabled?: boolean;\n}\n\nexport const FormGroup = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition = 'before',\n helperText,\n helperId,\n helperProps,\n helperIndent,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['form-group']} ${error ? classes.error : ''} ${className ?? ''}`}\n >\n {children}\n\n {(helperText || (errorMessage && error)) && (\n <div\n style={{ marginLeft: `${helperIndent}px` }}\n className={`${classes['default-helper']} ${\n helperProps?.className ? helperProps.className : ''\n }`}\n >\n {helperText && !error && (\n <FormHelperText {...helperProps} className={''} id={helperId}>\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {error && errorMessage && (\n <span className={classes['error-message']}>\n <span className={classes.message} id={errorId}>\n {errorMessageIcon && errorMessageIconPosition === 'before' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-before']}`}\n icon={errorMessageIcon}\n />\n )}\n {errorMessage}\n {errorMessageIcon && errorMessageIconPosition === 'after' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-after']}`}\n icon={errorMessageIcon}\n />\n )}\n </span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport { FormGroup, Props as FormGroupProps } from '../../FormGroup/FormGroup';\nimport { Label, Props as LabelProps } from '../../Label/Label';\nimport classes from './Wrapper.module.scss';\nimport { Props as HelperProps } from '../../FormHelperText/FormHelperText';\nimport { FormElement } from '../../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormGroupProps {\n children: ReactElement | ReactElement[];\n floatingLabelActive?: boolean;\n floatingLabel?: boolean;\n helperIndent?: number;\n label?: string;\n labelProps?: LabelProps;\n name: string;\n /** This does NOT add validation! It simply adds an asterix on the Label! */\n required?: boolean;\n innerClassName?: string;\n}\n\n/** For components that extend this component we create an interface (InputWrapper, SelectWrapper, etc.) */\nexport interface WrapperProps extends FormElement {\n errorMessage?: string;\n helperText?: string;\n helperProps?: HelperProps;\n label?: string;\n name: string;\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const Wrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition,\n helperText,\n helperId,\n floatingLabel = true,\n floatingLabelActive,\n required,\n helperProps,\n helperIndent,\n labelProps,\n label,\n disabled,\n name,\n innerClassName,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n disabled,\n })\n );\n\n const labelClasses = [];\n\n floatingLabel && labelClasses.push(classes['floating-label']);\n floatingLabel && floatingLabelActive && labelClasses.push(classes['floating-label-active']);\n labelProps?.className && labelClasses.push(labelProps.className);\n required && labelClasses.push(classes['required']);\n error && labelClasses.push(classes['error']);\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ? className : ''}`}>\n <FormGroup\n error={error}\n errorMessage={errorMessage}\n errorId={errorId}\n errorMessageIcon={errorMessageIcon}\n errorMessageIconPosition={errorMessageIconPosition}\n helperText={helperText}\n helperId={helperId}\n helperProps={helperProps}\n helperIndent={helperIndent}\n >\n <div\n className={`${floatingLabel ? classes['floating-wrapper'] : ''} ${\n innerClassName ? innerClassName : ''\n }`}\n >\n {label && (\n <Label\n {...labelProps}\n className={`${classes.label} ${labelClasses.join(' ')}`}\n htmlFor={name}\n >\n {label}\n </Label>\n )}\n {renderChildren()}\n </div>\n </FormGroup>\n </div>\n );\n }\n);\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\nimport { Type as InputTypes } from '../Form/Input/Input';\n\nexport const useWrapper = (value?: string, placeholder?: string, type?: InputTypes) => {\n const [helperId] = useState(generateID(20));\n const [errorId] = useState(generateID(20));\n const [labelId] = useState(generateID(20));\n const [floatingLabelActive, setFloatingLabelActive] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n\n useEffect(() => {\n if (\n (value?.length && value.length > 0) ||\n placeholder ||\n type === 'datetime-local' ||\n type === 'time'\n ) {\n setFloatingLabelActive(true);\n }\n }, []);\n\n useEffect(() => {\n if ((value?.length && value.length > 0) || hasFocus) {\n setFloatingLabelActive(true);\n } else if (!placeholder && !hasFocus && type !== 'datetime-local' && type !== 'time') {\n setFloatingLabelActive(false);\n }\n }, [value, placeholder, type, hasFocus]);\n\n return {\n helperId,\n errorId,\n labelId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n };\n};\n","import React, { ComponentPropsWithRef, useEffect, useRef, useState } from 'react';\nimport { Input, Type, Props as InputProps } from '../../Input/Input';\nimport classes from './InputWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialInputProps extends Partial<InputProps> {}\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n label: string;\n type: Type;\n name: string;\n inputProps?: PartialInputProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n}\n\nconst useLabelOffset = (\n wrapper: React.RefObject<HTMLDivElement>,\n input: React.RefObject<HTMLInputElement>,\n floatingLabelActive: boolean,\n prefix?: string\n) => {\n const [labelOffset, setLabelOffset] = useState({});\n\n const resetLabelOffset = () => setLabelOffset({ left: undefined });\n\n useEffect(() => {\n if (wrapper.current && input.current && prefix) {\n if (floatingLabelActive) {\n resetLabelOffset();\n } else {\n const prefixDifference =\n input.current.getBoundingClientRect().left -\n wrapper.current.getBoundingClientRect().left +\n 4;\n\n setLabelOffset({ left: `${prefixDifference}px` });\n }\n }\n }, [wrapper.current, input.current, prefix, floatingLabelActive]);\n\n return { labelOffset };\n};\n\nexport const InputWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n type,\n name,\n inputProps,\n helperText,\n helperProps,\n value,\n className,\n error,\n onChange,\n onBlur,\n onFocus,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, inputProps?.placeholder, type);\n const { prefix, suffix } = inputProps || {};\n const wrapper = useRef<HTMLDivElement>(null);\n const input = useRef<HTMLInputElement>(null);\n const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;\n const labelClasses = [classes['input-label']];\n const { labelOffset } = useLabelOffset(\n (ref as React.RefObject<HTMLDivElement>) || wrapper,\n (inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,\n floatingLabelActive,\n prefix\n );\n\n hasFocus && labelClasses.push(classes['focus']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref || wrapper}\n name={name}\n className={`${classes['input-wrapper']} ${className ?? ''}`}\n labelProps={{\n id: labelId,\n className: labelClasses.join(' '),\n style: { ...labelOffset },\n }}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n error={error}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['input-wrapper-helper']} ${helperProps?.className ?? ''} `,\n }}\n helperIndent={20}\n >\n <Input\n {...inputProps}\n prefix={hasValueOrActiveFloatingLabel ? prefix : ''}\n suffix={hasValueOrActiveFloatingLabel ? suffix : ''}\n wrapperProps={{\n className: `${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n inputProps?.wrapperProps?.className ?? ''\n }`,\n }}\n ref={(inputProps && inputProps.ref) || input}\n aria-labelledby={labelId}\n aria-describedby={error ? errorId : helperId}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value ||\n e.target.placeholder ||\n inputProps?.placeholder?.length ||\n type === 'datetime-local' ||\n type === 'time'\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n className={`${floatingLabelActive ? classes['floating-label'] : ''} ${\n inputProps?.className ?? ''\n }`}\n name={name}\n error={error}\n id={name}\n value={value}\n type={type}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactChild, ReactElement } from 'react';\nimport classes from './SelectWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Select, Props as SelectProps } from '../../Select/Select';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialSelectProps extends Partial<SelectProps> {}\n\nexport interface Props\n extends Omit<ComponentPropsWithRef<'div'>, 'onChange'>,\n Omit<WrapperProps, 'onChange' | 'error'> {\n children: ReactChild | ReactChild[];\n placeholder?: string;\n value: string;\n error?: boolean;\n selectProps?: PartialSelectProps;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n onClear?: () => void;\n}\n\nexport const SelectWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n value,\n placeholder,\n selectProps,\n helperProps,\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n helperId={helperId}\n labelProps={{ id: labelId, className: classes['select-label'] }}\n helperProps={{\n ...helperProps,\n className: `${classes['select-helper-text']} ${helperProps?.className ?? ''}`,\n }}\n error={error}\n >\n <Select\n {...selectProps}\n value={value}\n labeledBy={labelId}\n error={error}\n describedBy={error ? errorId : helperId}\n onChange={onChange}\n onClear={onClear}\n placeholder={placeholder}\n className={`${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n selectProps?.className ?? ''\n }`}\n >\n {children as ReactElement[]}\n </Select>\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport classes from './TextareaWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Textarea, Props as TextareaProps } from '../../Textarea/Textarea';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\nexport interface Props\n extends Omit<\n ComponentPropsWithRef<'div'>,\n 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'\n >,\n Omit<WrapperProps, 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'> {\n placeholder?: string;\n textareaProps?: TextareaProps;\n value: string;\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextareaWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n name,\n error,\n value,\n label,\n placeholder,\n textareaProps,\n helperProps,\n onChange,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, placeholder);\n const [hover, setHover] = useState(false);\n\n const optionalClasses: string[] = [];\n\n hasFocus && optionalClasses.push(classes['focus']);\n hover && optionalClasses.push(classes['hover']);\n disabled && optionalClasses.push(classes['disabled']);\n error && optionalClasses.push(classes['error']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n labelProps={{\n id: labelId,\n className: `${classes['textarea-label']} ${hasFocus ? classes['focus'] : ''}`,\n }}\n name={name}\n label={label}\n helperId={helperId}\n helperProps={{\n ...helperProps,\n className: classes['textarea-helper-text'],\n }}\n error={error}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n >\n <Textarea\n {...textareaProps}\n error={error}\n aria-labelledby={label && labelId}\n aria-describedby={error ? errorId : helperId}\n placeholder={placeholder}\n name={name}\n id={name}\n value={value}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value || e.target.placeholder || textareaProps?.placeholder?.length\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n onMouseEnter={(e) => {\n onMouseEnter && onMouseEnter(e);\n setHover(true);\n }}\n onMouseLeave={(e) => {\n onMouseLeave && onMouseLeave(e);\n setHover(false);\n }}\n className={classes['textarea']}\n wrapperProps={{\n className: `${classes['textarea-wrapper']}} ${optionalClasses.join(' ')}`,\n }}\n errorProps={{ className: classes['error-icon'] }}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode, ReactElement } from 'react';\nimport readyclasses from '../../readyclasses.module.scss';\nimport classes from './Fieldset.module.scss';\nimport { Typography, Variant } from '../../Typography/Typography';\nimport { Input } from '../Input/Input';\nimport { Select } from '../Select/Select';\nimport { Radio } from '../Radio/Radio';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { Textarea } from '../Textarea/Textarea';\nimport { Toggle } from '../Toggle/Toggle';\nimport { Label } from '../Label/Label';\nimport { FormControl } from '../FormControl/FormControl';\nimport { FormSelectorWrapper } from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormHelperText } from '../FormHelperText/FormHelperText';\nimport { InputWrapper } from '../Wrapper/InputWrapper/InputWrapper';\nimport { SelectWrapper } from '../Wrapper/SelectWrapper/SelectWrapper';\nimport { TextareaWrapper } from '../Wrapper/TextareaWrapper/TextareaWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'fieldset'> {\n children?: ReactElement | ReactElement[];\n legend: string;\n legendStyle?: Variant;\n hideLegend?: boolean;\n background?: string;\n noPadding?: boolean;\n noBackground?: boolean;\n required?: boolean;\n error?: boolean;\n disablePropagation?: boolean;\n}\n\nexport const Fieldset = React.forwardRef<HTMLFieldSetElement, Props>(\n (\n {\n children,\n className,\n legend,\n legendStyle = 'body',\n hideLegend = false,\n noBackground,\n background = noBackground ? '' : '#FFF',\n noPadding = false,\n disabled = false,\n required = false,\n error = false,\n disablePropagation = false,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () => {\n if (!children) return;\n\n /* All right, so the issue is that whenever we try to add disabled and error to a component that doesn't accept it, \n React will throw an error. However, it might occur that we want a component inside of Fieldset because of aesthetic purposes \n (fieldset applies a sort of container with white background and if we want to display it inside of this container... then yea).\n So instead we supply an array of components that we want to add the disabled and error prop to and check if child.type equals one of these. */\n const allowedComponents: ReactNode[] = [\n Input,\n Select,\n Radio,\n Checkbox,\n Textarea,\n Toggle,\n Label,\n FormControl,\n FormSelectorWrapper,\n FormHelperText,\n InputWrapper,\n SelectWrapper,\n TextareaWrapper,\n ];\n\n return React.Children.map(children, (child: ReactElement) => {\n if (allowedComponents.includes(child.type) && !disablePropagation) {\n return React.cloneElement(child, {\n disabled: child.props.disabled ?? disabled,\n error: child.props.error ?? error,\n });\n }\n\n return child;\n });\n };\n\n return (\n <fieldset\n {...rest}\n ref={ref}\n disabled={disabled}\n style={{ backgroundColor: background, ...rest.style }}\n className={`${classes.fieldset} ${noPadding ? classes['no-padding'] : ''} ${\n className ?? ''\n }`}\n >\n {legend && <legend className={readyclasses['sr-only']}>{legend}</legend>}\n {legend && !hideLegend && (\n <Typography\n variant={legendStyle}\n tag=\"span\"\n aria-hidden=\"true\"\n className={`${classes['legend']} ${required ? classes['required'] : ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {legend}\n </Typography>\n )}\n {renderChildren()}\n </fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './CheckboxWrapper.module.scss';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement[] | ReactElement;\n fieldsetProps: FieldsetProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const CheckboxWrapper = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error = false, helperText, helperProps, fieldsetProps, ...rest }: Props, ref) => {\n const { errorId, helperId } = useWrapper();\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n parentHelperId: helperText ? helperId : false,\n disabled: rest.disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} required={rest.required}>\n <Wrapper\n {...rest}\n ref={ref}\n label=\"\"\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['checkbox-wrapper-helper']} ${\n error ? classes['checkbox-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorMessageIcon={Icons.Error}\n errorId={errorId}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './RadioWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement | ReactElement[];\n fieldsetProps: FieldsetProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n name,\n helperText,\n helperProps,\n fieldsetProps,\n value,\n onChange,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, helperId } = useWrapper(value);\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n checked: child.props.value === value,\n name: name,\n parentHelperId: helperText ? helperId : false,\n onChange: onChange,\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} disabled={disabled}>\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n name={name}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['radio-wrapper-helper']} ${\n error ? classes['radio-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorId={errorId}\n errorMessageIcon={Icons.Error}\n floatingLabel={false}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment } from 'react';\nimport classes from './BaseWizardSteps.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\n\ntype StepState = 'finished' | 'current' | 'future';\n\nexport interface Step {\n label: string;\n disabled?: boolean;\n}\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'onClick'> {\n steps: Step[];\n currentStepNo: number;\n onClick?: (stepNo: number) => void;\n futureStepsClickable?: boolean;\n stepScreenReaderLabel: string;\n}\n\nexport const BaseWizardSteps = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n steps,\n currentStepNo,\n onClick,\n futureStepsClickable = false,\n stepScreenReaderLabel,\n ...rest\n }: Props,\n ref\n ) => {\n const getStepState = (stepNo: number): StepState => {\n if (currentStepNo === stepNo) {\n return 'current';\n } else if (stepNo < currentStepNo) {\n return 'finished';\n }\n return 'future';\n };\n\n const getStepContent = (stepState: StepState, index: number, disabled?: boolean) => {\n const stepNumberString = String(index + 1);\n if (stepState === 'finished') {\n return disabled ? null : <Icon className={classes['checkmark']} icon={Icons.Checkmark} />;\n } else {\n return (\n <Fragment>\n <span className={readyclasses['sr-only']}>{stepScreenReaderLabel} </span>\n {stepNumberString}\n </Fragment>\n );\n }\n };\n\n const generatedSteps = steps.map((step, index) => {\n const stepState = getStepState(index);\n const disabledStyleClassName = step.disabled ? classes['disabled'] : '';\n const clickableClassName = futureStepsClickable ? classes['clickable'] : '';\n\n return (\n <button\n key={step.label.toLowerCase().replace(/\\s/, '-')}\n disabled={\n step.disabled ||\n (stepState === 'future' && !futureStepsClickable) ||\n stepState === 'current'\n }\n aria-current={stepState === 'current' ? 'step' : undefined}\n onClick={() => onClick && onClick(index)}\n className={`${classes['wizard-element']} ${classes[stepState]} ${clickableClassName} ${disabledStyleClassName}`}\n >\n <div className={classes['number-wrapper']}>\n <span className={classes['number']}>\n {getStepContent(stepState, index, step.disabled)}\n </span>\n </div>\n <div className={classes['two-line-text-overflow']}>\n <span className={classes['label']}>{step.label}</span>\n </div>\n </button>\n );\n });\n\n return (\n <div {...rest} ref={ref} className={classes['wizard']}>\n {generatedSteps}\n </div>\n );\n }\n);\n","import { Reducer } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from './Wizard';\n\ntype WizardStateType = {\n steps: Step[];\n currentStepNo: number;\n mode: WizardMode;\n stepScreenReaderLabel: string;\n};\n\ninterface SetWizardStateAction {\n type: 'SET_STATE';\n payload: {\n steps: Step[];\n mode: WizardMode;\n stepScreenReaderLabel: string;\n };\n}\n\ninterface ChangeCurrentStepNoAction {\n type: 'CHANGE_CURRENT_STEP_NO';\n payload: number;\n}\n\nconst setWizardState = (\n steps: Step[],\n mode: WizardMode,\n stepScreenReaderLabel: string\n): SetWizardStateAction => {\n return { type: 'SET_STATE', payload: { steps, mode, stepScreenReaderLabel } };\n};\n\nconst changeCurrentStepNo = (currentStepNo: number): ChangeCurrentStepNoAction => {\n return { type: 'CHANGE_CURRENT_STEP_NO', payload: currentStepNo };\n};\n\ntype WizardActions = SetWizardStateAction | ChangeCurrentStepNoAction;\n\nconst reducer: Reducer<WizardStateType, WizardActions> = (state, action) => {\n switch (action.type) {\n case 'SET_STATE':\n return { ...state, ...action.payload };\n case 'CHANGE_CURRENT_STEP_NO':\n return { ...state, currentStepNo: action.payload };\n default:\n return state;\n }\n};\n\nexport { setWizardState, changeCurrentStepNo, reducer, WizardActions, WizardStateType };\n","import React, { createContext, Dispatch, useReducer } from 'react';\nimport { WizardActions, WizardStateType, reducer } from './wizardStateReducer';\n\nconst WizardStateContext = createContext<{\n state: WizardStateType;\n dispatch: Dispatch<WizardActions>;\n}>({\n state: {} as WizardStateType,\n dispatch: () => null,\n});\n\nexport interface Props {\n initialState: WizardStateType;\n children?: React.ReactNode;\n}\n\nconst WizardStateProvider = ({ children, initialState }: Props) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n return (\n <WizardStateContext.Provider value={{ state, dispatch }}>\n {children}\n </WizardStateContext.Provider>\n );\n};\n\nexport { WizardStateProvider, WizardStateContext };\n","import React, { ComponentPropsWithRef, useContext } from 'react';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { BaseWizardSteps } from '../BaseWizardSteps/BaseWizardSteps';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n onStepClick: (currentStepNo: number, selectedStepNo: number) => boolean;\n}\n\nexport const WizardSteps = React.forwardRef<HTMLDivElement, Props>(\n ({ onStepClick, ...rest }: Props, ref) => {\n const {\n state: { currentStepNo, mode, stepScreenReaderLabel, steps },\n dispatch,\n } = useContext(WizardStateContext);\n\n const onClick = (selectedStepNo: number) => {\n onStepClick(currentStepNo, selectedStepNo) && dispatch(changeCurrentStepNo(selectedStepNo));\n };\n\n return (\n <BaseWizardSteps\n {...rest}\n ref={ref}\n onClick={onClick}\n steps={steps}\n currentStepNo={currentStepNo}\n stepScreenReaderLabel={stepScreenReaderLabel}\n futureStepsClickable={mode === 'edit'}\n />\n );\n }\n);\n","import React, { Fragment, useContext, useEffect } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardStateContext, WizardStateProvider } from './WizardStateProvider';\nimport { setWizardState } from './wizardStateReducer';\n\nexport type WizardMode = 'add' | 'edit';\n\nexport interface Props {\n steps: Step[];\n mode: WizardMode;\n initialStepNo?: number;\n onStepChange: (stepNo: number) => void;\n stepScreenReaderLabel: string;\n children: React.ReactNode;\n}\n\nconst useSetWizardState = (steps: Step[], mode: WizardMode, stepScreenReaderLabel: string) => {\n const { dispatch } = useContext(WizardStateContext);\n\n useEffect(() => {\n dispatch(setWizardState(steps, mode, stepScreenReaderLabel));\n }, [steps, mode, stepScreenReaderLabel]);\n};\n\nconst useStepChanging = (onStepChange: (stepNo: number) => void) => {\n const {\n state: { currentStepNo },\n } = useContext(WizardStateContext);\n\n useEffect(() => {\n onStepChange(currentStepNo);\n }, [currentStepNo]);\n};\n\nconst WizardContent = ({ steps, mode, stepScreenReaderLabel, onStepChange, children }: Props) => {\n useSetWizardState(steps, mode, stepScreenReaderLabel);\n useStepChanging(onStepChange);\n\n return <Fragment>{children}</Fragment>;\n};\n\nexport const Wizard = (props: Props) => {\n const { steps, initialStepNo: currentStepNo = 0, mode, stepScreenReaderLabel } = props;\n return (\n <WizardStateProvider initialState={{ steps, currentStepNo, mode, stepScreenReaderLabel }}>\n <WizardContent {...props} />\n </WizardStateProvider>\n );\n};\n","import React, { HTMLProps } from 'react';\nimport classes from './ContextMenuItem.module.scss';\n\nexport interface Props extends Omit<HTMLProps<HTMLLIElement>, 'onClick'> {\n children?: string;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const ContextMenuItem = ({ children, onClick, ...rest }: Props) => {\n return (\n <li {...rest} role=\"menuitem\" className={classes['context-menu-item']}>\n <button onClick={(event) => onClick && onClick(event)}>{children}</button>\n </li>\n );\n};\n","import React, { Fragment, useState } from 'react';\nimport { Modal, Props as ModalProps } from '../Modal/Modal';\nimport { ModalHeader, Props as ModalHeaderProps } from '../Modal/ModalHeader/ModalHeader';\nimport {\n DiscardChangesDialog,\n Props as DiscardChangesDialogProps,\n} from './DiscardChangesDialog/DiscardChangesDialog';\n\nexport interface Props extends Omit<ModalProps, 'onClose'> {\n hasUnsavedChanges: () => boolean;\n onClose: (event?: React.MouseEvent<HTMLElement>) => unknown;\n headerProps: Omit<ModalHeaderProps, 'onClose' | 'id'>;\n discardChangedDialogProps: Omit<\n DiscardChangesDialogProps,\n 'open' | 'onKeepEditing' | 'onDiscardChanges'\n >;\n modalRef?: React.RefObject<HTMLDivElement>;\n dialogRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport const DiscardChangesModal = ({\n id,\n children,\n headerProps,\n discardChangedDialogProps,\n modalRef,\n dialogRef,\n onClose,\n hasUnsavedChanges,\n ...rest\n}: Props) => {\n const [openDiscardChangesDialog, setOpenDiscardChangesDialog] = useState(false);\n\n const onCloseWrapper = () =>\n hasUnsavedChanges() ? setOpenDiscardChangesDialog(true) : onClose();\n\n const onDialogKeepEditing = () => {\n setOpenDiscardChangesDialog(false);\n };\n\n const onDialogDiscardChanges = () => {\n setOpenDiscardChangesDialog(false);\n onClose();\n };\n\n return (\n <Fragment>\n <Modal id={id} ref={modalRef} onClose={onCloseWrapper} {...rest}>\n <ModalHeader {...headerProps} id={`${id}-label`} onClose={onCloseWrapper} />\n {children}\n </Modal>\n <DiscardChangesDialog\n {...discardChangedDialogProps}\n ref={dialogRef}\n open={openDiscardChangesDialog}\n onKeepEditing={onDialogKeepEditing}\n onDiscardChanges={onDialogDiscardChanges}\n />\n </Fragment>\n );\n};\n","import React, { HTMLProps, ReactNode } from 'react';\nimport classes from './Form.module.scss';\n\nexport interface Props extends HTMLProps<HTMLFormElement> {\n children?: ReactNode;\n}\n\nexport const Form = ({ children, className, ...rest }: Props) => {\n return (\n <form className={`${classes.form} ${className ?? ''}`} {...rest}>\n {children}\n </form>\n );\n};\n","import React, { ReactNode, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { SnackbarContextProvider } from './SnackbarStateProvider';\nimport { Actions, SnackbarOptionsProps, Variant } from '../interfaces';\nimport { Placement, SnackbarContainer } from '../SnackbarContainer/SnackbarContainer';\nimport { generateID } from '../../../util/helper';\nimport { SnackbarItem } from '../SnackbarItem/SnackbarItem';\n\n/** Short msg is when only title is provided. Long one when content or/and actions are provided (or type is error). */\ninterface Duration {\n long: number;\n short: number;\n}\n\nexport interface Props {\n closeButtonTitle: string;\n children?: ReactNode;\n placement?: Placement;\n stackSize?: number;\n domRoot?: HTMLElement;\n autoHideDuration?: Duration;\n className?: string;\n}\n\ninterface Item {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarProvider = (\n {\n closeButtonTitle,\n placement = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = { long: 8000, short: 4000 },\n stackSize = 3,\n domRoot = document.body,\n children,\n className,\n }: Props = { closeButtonTitle: '' }\n) => {\n const [snackbars, setSnackbars] = useState<Item[]>([]);\n\n const addSnackbar = (item: Item) => {\n setSnackbars((items) => [...items, item]);\n };\n\n const getDuration = (variant: Variant, actions?: Actions, content?: string) => {\n const hasError = variant === 'error';\n const hasContentOrActions = content || actions;\n if (hasError || hasContentOrActions) {\n return autoHideDuration.long;\n }\n return autoHideDuration.short;\n };\n\n const enqueueSnackbar = (\n title: string,\n content?: string,\n options: SnackbarOptionsProps = {}\n ): void => {\n const {\n variant = 'info',\n actions,\n duration = getDuration(variant, actions, content),\n } = options;\n const item: Item = {\n title,\n content,\n variant,\n actions,\n duration,\n id: generateID(15, title),\n };\n addSnackbar(item);\n };\n\n const enqueueSuccessSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'success' });\n };\n\n const enqueueErrorSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'error' });\n };\n\n const onItemClosed = (id: string) => {\n setSnackbars((items) => [...items].filter((item) => item.id !== id));\n };\n\n const snackbarList = snackbars.map((item, index) =>\n index < stackSize ? (\n <SnackbarItem\n {...item}\n key={item.id}\n onClose={onItemClosed}\n closeButtonTitle={closeButtonTitle}\n />\n ) : null\n );\n\n const snackbarPortal = createPortal(\n <SnackbarContainer placement={placement} className={className}>\n {snackbarList}\n </SnackbarContainer>,\n domRoot\n );\n\n return (\n <SnackbarContextProvider\n initialState={{ enqueueSnackbar, enqueueSuccessSnackbar, enqueueErrorSnackbar }}\n >\n {children}\n {snackbarPortal}\n </SnackbarContextProvider>\n );\n};\n","import React from 'react';\n\nexport interface Props {\n title: string;\n children?: React.ReactNode;\n selected?: boolean;\n focussed?: boolean;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n panelRef?: React.RefObject<HTMLDivElement>;\n onTabButtonClick?: () => void;\n}\n\nexport const Tab = (args: Props) => {\n return (\n <div {...args}>{`A <Tab /> component should only be used inside the <Tabs /> component.`}</div>\n );\n};\n","import React, {\n ComponentPropsWithRef,\n createRef,\n MutableRefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { generateID } from '../util/helper';\nimport { Props as TabProps } from './Tab';\nimport { TabButton } from './TabButton';\nimport { TabPanel } from './TabPanel';\nimport classes from './Tabs.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactElement<TabProps> | React.ReactElement<TabProps>[];\n selected?: number;\n 'aria-label'?: string;\n onTabChange?: (index: number) => void;\n}\n\nexport const Tabs = ({\n children,\n selected = 0,\n 'aria-label': ariaLabel,\n onTabChange,\n className,\n ...rest\n}: Props) => {\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [indicatorPosition, setIndicatorPosition] = useState({ left: 0, top: 0 });\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n\n const [max] = useState(React.Children.count(children) - 1);\n const min = 0;\n\n const [selectedTab, setSelectedTab] = useState(Math.min(max, Math.max(min, selected)));\n const [focussedTab, setFocussedTab] = useState(-1);\n const [tabIds] = useState([...Array(max)].map(() => generateID()));\n const [tabPanelIds] = useState([...Array(max)].map(() => generateID()));\n\n useEffect(() => {\n setSelectedTab(Math.min(max, Math.max(min, selected)));\n setFocussedTab(-1);\n }, [selected]);\n\n useEffect(() => {\n calculateIndicatorPosition();\n }, [selectedTab]);\n\n const calculateIndicatorPosition = () => {\n const selectedTabButton = (\n tabButtons[selectedTab].ref as MutableRefObject<HTMLButtonElement | null>\n ).current as HTMLButtonElement;\n\n setIndicatorPosition({\n left: selectedTabButton.offsetLeft,\n top:\n selectedTabButton.offsetTop +\n selectedTabButton.offsetHeight -\n indicatorRef.current!.offsetHeight,\n });\n setIndicatorWidth(selectedTabButton.offsetWidth);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n // do not show focus unless we came here before\n let currentFocussedTab = focussedTab === -1 ? selectedTab : focussedTab;\n\n switch (e.code) {\n case 'ArrowLeft':\n setFocussedTab(currentFocussedTab === min ? max : currentFocussedTab - 1);\n break;\n case 'ArrowRight':\n setFocussedTab(currentFocussedTab === max ? min : currentFocussedTab + 1);\n break;\n case 'Home':\n setFocussedTab(min);\n break;\n case 'End':\n setFocussedTab(max);\n break;\n case 'Space':\n case 'Enter':\n activateTab(currentFocussedTab);\n break;\n }\n };\n\n const handleBlur = () => {\n setFocussedTab(selectedTab);\n };\n\n const activateTab = (index: number) => {\n setSelectedTab(index);\n setFocussedTab(index);\n onTabChange && onTabChange(index);\n };\n\n const tabButtons = React.Children.map(children, (child, index) =>\n React.createElement(TabButton, {\n ref: child.props.buttonRef || createRef<HTMLButtonElement>(),\n key: generateID(),\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n selected: selectedTab === index,\n focussed: focussedTab === index,\n onTabButtonClick: () => activateTab(index),\n children: child.props.title,\n })\n );\n\n const tabPanels = React.Children.map(children, (child, index) =>\n React.createElement(TabPanel, {\n ref: child.props.panelRef || createRef<HTMLDivElement>(),\n key: generateID(),\n selected: selectedTab === index,\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n children: child.props.children,\n })\n );\n\n return (\n <div {...rest} className={`${classes['tabs']} ${className ?? ''}`}>\n <div\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n className={classes['tablist']}\n >\n <div className={classes['tabdivider']} />\n {tabButtons}\n <div\n className={classes['indicator']}\n ref={indicatorRef}\n aria-hidden=\"true\"\n tabIndex={-1}\n style={{\n width: indicatorWidth,\n ...indicatorPosition,\n }}\n />\n </div>\n <div className={classes['tabpanels']}>{tabPanels}</div>\n </div>\n );\n};\n","import React, { Fragment, useContext, useMemo } from 'react';\nimport { Button } from '../../Button/Button';\nimport { Step } from '../BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from '../Wizard';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends React.HTMLProps<HTMLDivElement> {\n cancelButtonLabel: string;\n previousButtonLabel: string;\n nextButtonLabel: string;\n saveAndCloseButtonLabel: string;\n onCancel: () => void;\n onNext: (currentStepNo: number) => boolean;\n onPrevious?: () => void;\n onSaveAndClose: (currentStepNo: number) => void;\n}\n\nconst calculateNextStepNo = (steps: Step[], currentStepNo: number) => () =>\n steps.findIndex((step, stepNo) => stepNo > currentStepNo && !step.disabled);\n\nconst calculatePrevStepNo = (steps: Step[], currentStepNo: number) => () => {\n const reversedCurrentStepNo = steps.length - 1 - currentStepNo;\n const reversedPrevStepNo = [...steps]\n .reverse()\n .findIndex((step, stepNo) => stepNo > reversedCurrentStepNo && !step.disabled);\n if (reversedPrevStepNo > 0) {\n return steps.length - 1 - reversedPrevStepNo;\n }\n return -1;\n};\n\nconst useNextStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculateNextStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nconst usePreviousStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculatePrevStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nexport const WizardActions = ({\n onCancel,\n onNext,\n onPrevious,\n onSaveAndClose,\n cancelButtonLabel,\n previousButtonLabel,\n nextButtonLabel,\n saveAndCloseButtonLabel,\n}: Props) => {\n const {\n state: { mode, steps, currentStepNo },\n dispatch,\n } = useContext(WizardStateContext);\n const nextStepNo = useNextStepNo(mode, currentStepNo, steps);\n const hasNextStep = nextStepNo !== -1;\n const previousStepNo = usePreviousStepNo(mode, currentStepNo, steps);\n const hasPreviousStep = previousStepNo !== -1;\n const isLastStepOrEditMode = !hasNextStep || mode === 'edit';\n\n const changeStepNo = (direction: 'forward' | 'backward') => {\n if (direction === 'forward') {\n hasNextStep && dispatch(changeCurrentStepNo(nextStepNo));\n } else {\n hasPreviousStep && dispatch(changeCurrentStepNo(previousStepNo));\n }\n };\n\n const onNextWrapper = () => {\n onNext(currentStepNo) && changeStepNo('forward');\n };\n\n const onPreviousWrapper = () => {\n onPrevious && onPrevious();\n changeStepNo('backward');\n };\n\n const onSaveAndCloseWrapper = () => {\n onSaveAndClose(currentStepNo);\n };\n\n return (\n <Fragment>\n <Button variant=\"text\" onClick={onCancel}>\n {cancelButtonLabel}\n </Button>\n {hasPreviousStep && (\n <Button variant=\"outline\" onClick={onPreviousWrapper}>\n {previousButtonLabel}\n </Button>\n )}\n {hasNextStep && (\n <Button variant={mode === 'edit' ? 'outline' : 'fill'} onClick={onNextWrapper}>\n {nextButtonLabel}\n </Button>\n )}\n {isLastStepOrEditMode && (\n <Button onClick={onSaveAndCloseWrapper}>{saveAndCloseButtonLabel}</Button>\n )}\n </Fragment>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\ninterface Arguments {\n componentToRepeat: React.ReactElement;\n}\n\nexport const useRepeater = <T>({ componentToRepeat }: Arguments) => {\n const [repeatedComponents, setRepeatedComponents] = useState<JSX.Element[]>([]);\n\n useEffect(() => {\n repeat();\n }, []);\n\n const repeat = () => {\n const clonedComponent = React.cloneElement(componentToRepeat, { key: generateID(20) });\n\n setRepeatedComponents((prevState) => [...prevState, clonedComponent]);\n };\n\n const remove = (componentToRemove: React.ReactElement<T>) => {\n const newRepeatedComponents = repeatedComponents.filter(\n (component) => component !== componentToRemove\n );\n\n setRepeatedComponents(newRepeatedComponents);\n };\n\n return {\n repeatedComponents,\n repeat,\n remove,\n };\n};\n","import { useContext } from 'react';\nimport { SnackbarContext } from './SnackbarProvider/SnackbarStateProvider';\n\nexport const useSnackbar = () => useContext(SnackbarContext);\n"],"names":["BaseStyling","e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","spacingNumberRegex","validVariants","Typography","React","forwardRef","ref","children","variant","tag","style","spacing","_ref$className","_ref","className","rest","_objectWithoutPropertiesLoose","_excluded","includes","Error","styleWithSpacing","spacingProps","entries","reduce","prev","_extends2","matches","String","matchAll","cssSpacingValue","Array","from","map","_ref2","Number","join","_extends","useSpacing","classes","BaseButton","_ref$type","type","Button","_ref$variant","_ref$color","color","_ref$startIcon","startIcon","_ref$endIcon","endIcon","additionalClasses","Link","_ref$disabled","disabled","to","component","classNames","download","rel","undefined","href","target","IconButton","_ref$iconSize","iconSize","title","console","error","iconButtonClasses","Fragment","readyclasses","Icons","Icon","icon","size","_ref$tag","fontSize","dateTypes","Input","_ref$error","name","wrapperProps","labeledBy","prefix","suffix","onFocus","onBlur","useState","focus","_useState","setFocus","useEffect","inputClassNames","iconClassNames","wrapperClasses","event","useBodyClick","checkFunction","callbackFunction","dependingStateVariable","bodyClickListener","window","addEventListener","removeEventListener","generateID","stringToWeaveIn","hashCharacters","id","test","Math","floor","random","slice","filterProps","props","regexPattern","returnFiltered","acc","key","filter","prevObj","currKeyValPair","Select","placeholder","describedBy","_ref$searchPlaceholde","searchPlaceholder","value","onChange","onClear","expanded","setExpanded","opacity","_useState2","setOpacity","_useState3","setFilter","display","_useState4","setDisplay","listPosition","_useState5","setListPosition","optionsListMaxHeight","_useState6","setOptionsListMaxHeight","containerReference","useRef","optionListReference","nativeSelect","onOptionChangeHandler","current","currentTarget","dataset","dispatchEvent","Event","bubbles","val","Children","forEach","child","position","top","bottom","getBoundingClientRect","innerHeight","listHeight","height","transformOrigin","availableSpace","calculateOptionListMaxHeight","rePositionList","closest","tabIndex","onClick","Warning","TimesThin","preventDefault","stopPropagation","TriangleDown","maxHeight","isArray","autoFocus","role","cloneElement","onOptionSelect","selected","Option","_ref$selected","showOption","setShowOption","onSelectHandler","toLowerCase","match","onKeyPress","DefaultTranslations","Label","_ref$hidden","hidden","Pagination","amountOfPages","totalElements","_ref$pageSize","pageSize","_ref$translate","translate","currentPage","onPageChange","onPageSizeChange","toString","internalCurrentPage","setInternalCurrentPage","calculateAmountOfPages","ceil","onEnterListener","code","onPageChangeHandler","pageToGoTo","totalItems","itemsPerPage","pageSizeNumber","NavigationFirst","ChevronLeft","split","string","htmlFor","currentPageLabel","max","onKeyUp","replace","ChevronRight","NavigationLast","TabButton","_ref$focussed","focussed","tabId","tabPanelId","onTabButtonClick","TabPanel","labelId","descriptionId","BaseModal","open","onClose","_ref$containerClassNa","containerClassName","labelledby","describedby","_ref$disableEscapeKey","disableEscapeKeyDown","_ref$disableBackdrop","disableBackdrop","zIndex","_ref$domRoot","domRoot","body","querySelectorAll","removeProperty","useSetBodyScroll","createPortal","onKeyDown","BaseModalContent","_ref$disableAutoFocus","disableAutoFocus","contentRef","createRef","_ref$current","_contentRef$current","BaseModalActions","DialogActions","align","DialogTitle","Dialog","secondaryLabel","restOfSecondaryAction","alignActions","primaryAction","secondaryAction","dialogId","primaryLabel","label","restOfPrimaryAction","_excluded2","PrimaryButton","TertiaryButton","_excluded3","width","maxLength","BaseModalHeader","Times","DiscardChangesDialog","onKeepEditing","onDiscardChanges","discardChangesButtonLabel","keepEditingButtonLabel","contentLabel","titleLabel","margin","defaultConfigObject","relativeElement","elementToBePositioned","horizontal","vertical","placement","offset","right","left","usePosition","providedConfigObject","configObject","setPosition","_calculatePlacement","relEl","elDimensions","axis","_configObject$transfo","_configObject$transfo2","placementValue","requestedReturnValue","placementOriginDefinition","_determineCenteredPlacementOrigin","_calculateInitialPlacementValue","valueWithOffset","_configObject$offset","_configObject$offset2","_configObject$offset7","_configObject$offset8","_configObject$offset3","_configObject$offset4","_configObject$offset5","_configObject$offset6","_configObject$offset9","_configObject$offset10","_configObject$offset11","_configObject$offset12","returnValue","_applyOffsetToPlacementValue","valueCorrectionForViewportOverflow","innerWidth","_fixPossibleViewportOverflow","_calculatePlacementValue","direction","oppositeDirection","prevState","calculatePosition","_configObject$relativ","relativeElRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y","Popover","show","anchorEl","elToBePositioned","_usePosition","TextEllipsis","popoverClassName","showPopover","setShowPopover","textContainer","ellipsisVisible","scrollWidth","onMouseEnter","onMouseLeave","defaultPosition","Tooltip","_ref$placement","_ref$offset","_ref$transformOrigin","identifier","visible","setVisible","escapePressHandler","useLayoutEffect","isValidElement","InfoCircle","Tile","imageProps","enabled","loading","tileAction","tileDescriptionID","justifyContent","Checkmark","Forbidden","readyClasses","src","alt","Image","Tiles","_ref$loading","ContextMenu","trigger","_ref$show","onShow","showContextMenu","setShowContextMenu","Breadcrumbs","ariaLabel","items","index","SnackbarContext","createContext","enqueueSnackbar","enqueueSuccessSnackbar","enqueueErrorSnackbar","SnackbarContextProvider","Provider","initialState","SnackbarContainer","SnackbarItem","duration","content","_ref$actions","actions","closeButtonTitle","timerHandler","useAnimation","callback","animatedObjectRef","animationStarted","setAnimationStarted","onAnimationEnd","_animatedObjectRef$cu","_animatedObjectRef$cu2","startAnimation","setTimeout","clearTimeout","actionButtons","actionProp","CheckmarkCircleBreakout","useFormSelector","setDescribedBy","errorId","errorMessage","parentErrorId","helperText","parentHelperId","FormHelperText","FormSelectorWrapper","_helperProps$classNam","nestedChildren","containerProps","helperProps","helperRef","Radio","_ref$checked","checked","formSelectorWrapperProps","_useFormSelector","onChangeHandler","nativeEvent","clonedEvent","constructor","defineProperty","writable","Circle","isToggle","_children$props","Checkbox","indeterminate","iconClasses","toArray","MinusSquare","CheckmarkSquare","Square","determineLabel","Textarea","_wrapperProps$classNa","_errorProps$className","_ref$rows","rows","errorProps","Toggle","FormControl","grid","_ref$align","childElement","column","FormGroup","errorMessageIcon","_ref$errorMessageIcon","errorMessageIconPosition","helperId","helperIndent","marginLeft","message","Wrapper","_ref$floatingLabel","floatingLabel","floatingLabelActive","required","labelProps","innerClassName","labelClasses","wrapper","useWrapper","setFloatingLabelActive","hasFocus","setHasFocus","InputWrapper","_inputProps$wrapperPr","_inputProps$wrapperPr2","_inputProps$className","inputProps","input","hasValueOrActiveFloatingLabel","labelOffset","setLabelOffset","prefixDifference","useLabelOffset","_inputProps$placehold","SelectWrapper","_selectProps$classNam","selectProps","_useWrapper","TextareaWrapper","textareaProps","hover","setHover","optionalClasses","_textareaProps$placeh","Fieldset","legend","_ref$legendStyle","legendStyle","_ref$hideLegend","hideLegend","_ref$background","background","noBackground","_ref$noPadding","noPadding","_ref$required","_ref$disablePropagati","disablePropagation","backgroundColor","allowedComponents","_child$props$disabled","_child$props$error","renderChildren","CheckboxWrapper","fieldsetProps","RadioWrapper","BaseWizardSteps","steps","currentStepNo","_ref$futureStepsClick","futureStepsClickable","stepScreenReaderLabel","generatedSteps","step","stepNo","stepState","disabledStyleClassName","clickableClassName","stepNumberString","getStepContent","changeCurrentStepNo","payload","reducer","state","action","WizardStateContext","dispatch","WizardStateProvider","_useReducer","useReducer","WizardSteps","onStepClick","useContext","_useContext$state","_useContext","selectedStepNo","mode","WizardContent","onStepChange","setWizardState","useStepChanging","_ref$properties","properties","defaultProperties","colorFocus","colorPrimary","colorSecondary","colorTertiary","defaultLineHeight","buttonBorderRadius","buttonBorderWidth","buttonFontSize","buttonBorderStyle","buttonFillTextColor","buttonFillBackgroundColor","buttonOutlineHoverTextColor","inputBorderColor","inputBorderRadius","inputBorderWidth","inputBorderStyle","inputBackgroundColor","modalShadowColor","modalBackgroundColor","modalHeaderBackgroundColor","snackbarTextColor","snackbarInfoBackgroundColor","snackbarSuccessBackgroundColor","snackbarErrorBackgroundColor","snackbarBorderRadius","tabsBackgroundColor","tabBorderWidth","tabBorderStyle","tablistBorderWidth","tablistBorderStyle","tablistBorderColor","tabTextColor","default","success","greyedOut","warning","fontFamily","fontFamilyCode","fontSizeH1","fontSizeH2","fontSizeH3","fontSizeH4","fontSizeSub","fontSizeCode","isLoading","setIsLoading","setCSSProperties","CSSPropertiesObject","_i","_Object$entries","_Object$entries$_i","formattedPropertyName","documentElement","setProperty","mergedState","headerProps","discardChangedDialogProps","modalRef","dialogRef","hasUnsavedChanges","openDiscardChangesDialog","setOpenDiscardChangesDialog","onCloseWrapper","Modal","ModalHeader","_temp","_ref$autoHideDuration","autoHideDuration","long","short","_ref$stackSize","stackSize","setSnackbars","options","item","_options$variant","_options$duration","getDuration","onItemClosed","snackbarList","snackbarPortal","args","onTabChange","indicatorRef","indicatorPosition","setIndicatorPosition","indicatorWidth","setIndicatorWidth","count","min","selectedTab","setSelectedTab","focussedTab","setFocussedTab","tabIds","tabPanelIds","calculateIndicatorPosition","selectedTabButton","tabButtons","offsetLeft","offsetTop","activateTab","buttonRef","tabPanels","panelRef","currentFocussedTab","initialStepNo","_props$initialStepNo","onCancel","onNext","onPrevious","onSaveAndClose","cancelButtonLabel","previousButtonLabel","nextButtonLabel","saveAndCloseButtonLabel","nextStepNo","useMemo","findIndex","calculateNextStepNo","useNextStepNo","hasNextStep","previousStepNo","reversedCurrentStepNo","reversedPrevStepNo","reverse","calculatePrevStepNo","usePreviousStepNo","hasPreviousStep","isLastStepOrEditMode","changeStepNo","componentToRepeat","repeatedComponents","setRepeatedComponents","repeat","clonedComponent","remove","componentToRemove","newRepeatedComponents"],"mappings":"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"}