no-frills-ui 0.0.14-alpha.1 → 0.0.14-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -22
- package/dist/index.js +3418 -2772
- package/dist/index.js.map +1 -1
- package/lib-esm/components/Accordion/Accordion.d.ts +11 -16
- package/lib-esm/components/Accordion/Accordion.js +25 -29
- package/lib-esm/components/Accordion/Accordion.js.map +1 -1
- package/lib-esm/components/Accordion/AccordionStep.d.ts +22 -22
- package/lib-esm/components/Accordion/AccordionStep.js +111 -109
- package/lib-esm/components/Accordion/AccordionStep.js.map +1 -1
- package/lib-esm/components/Badge/Badge.d.ts +13 -16
- package/lib-esm/components/Badge/Badge.js +31 -51
- package/lib-esm/components/Badge/Badge.js.map +1 -1
- package/lib-esm/components/Button/ActionButton.d.ts +9 -5
- package/lib-esm/components/Button/ActionButton.js +18 -38
- package/lib-esm/components/Button/ActionButton.js.map +1 -1
- package/lib-esm/components/Button/Button.d.ts +9 -5
- package/lib-esm/components/Button/Button.js +18 -40
- package/lib-esm/components/Button/Button.js.map +1 -1
- package/lib-esm/components/Button/IconButton.d.ts +9 -5
- package/lib-esm/components/Button/IconButton.js +18 -42
- package/lib-esm/components/Button/IconButton.js.map +1 -1
- package/lib-esm/components/Button/LinkButton.d.ts +9 -5
- package/lib-esm/components/Button/LinkButton.js +18 -32
- package/lib-esm/components/Button/LinkButton.js.map +1 -1
- package/lib-esm/components/Button/RaisedButton.d.ts +9 -5
- package/lib-esm/components/Button/RaisedButton.js +18 -46
- package/lib-esm/components/Button/RaisedButton.js.map +1 -1
- package/lib-esm/components/Card/Card.d.ts +4 -6
- package/lib-esm/components/Card/Card.js +18 -13
- package/lib-esm/components/Card/Card.js.map +1 -1
- package/lib-esm/components/Chip/Chip.d.ts +6 -3
- package/lib-esm/components/Chip/Chip.js +44 -43
- package/lib-esm/components/Chip/Chip.js.map +1 -1
- package/lib-esm/components/ChipInput/ChipInput.d.ts +28 -30
- package/lib-esm/components/ChipInput/ChipInput.js +121 -139
- package/lib-esm/components/ChipInput/ChipInput.js.map +1 -1
- package/lib-esm/components/Dialog/AlertDialog.d.ts +11 -12
- package/lib-esm/components/Dialog/AlertDialog.js +44 -28
- package/lib-esm/components/Dialog/AlertDialog.js.map +1 -1
- package/lib-esm/components/Dialog/ConfirmDialog.d.ts +13 -14
- package/lib-esm/components/Dialog/ConfirmDialog.js +49 -33
- package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -1
- package/lib-esm/components/Dialog/Dialog.d.ts +40 -18
- package/lib-esm/components/Dialog/Dialog.js +125 -70
- package/lib-esm/components/Dialog/Dialog.js.map +1 -1
- package/lib-esm/components/Dialog/PromptDialog.d.ts +18 -19
- package/lib-esm/components/Dialog/PromptDialog.js +78 -49
- package/lib-esm/components/Dialog/PromptDialog.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragAndDrop.d.ts +43 -41
- package/lib-esm/components/DragAndDrop/DragAndDrop.js +104 -31
- package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -1
- package/lib-esm/components/DragAndDrop/DragItem.d.ts +5 -1
- package/lib-esm/components/DragAndDrop/DragItem.js +171 -92
- package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -1
- package/lib-esm/components/DragAndDrop/types.d.ts +22 -3
- package/lib-esm/components/DragAndDrop/types.js +9 -6
- package/lib-esm/components/DragAndDrop/types.js.map +1 -1
- package/lib-esm/components/Drawer/Drawer.d.ts +86 -22
- package/lib-esm/components/Drawer/Drawer.js +176 -97
- package/lib-esm/components/Drawer/Drawer.js.map +1 -1
- package/lib-esm/components/Drawer/index.d.ts +1 -1
- package/lib-esm/components/Groups/Group.d.ts +5 -8
- package/lib-esm/components/Groups/Group.js +34 -79
- package/lib-esm/components/Groups/Group.js.map +1 -1
- package/lib-esm/components/Groups/GroupLabel.js +8 -17
- package/lib-esm/components/Groups/GroupLabel.js.map +1 -1
- package/lib-esm/components/Input/Checkbox.d.ts +12 -15
- package/lib-esm/components/Input/Checkbox.js +51 -118
- package/lib-esm/components/Input/Checkbox.js.map +1 -1
- package/lib-esm/components/Input/Dropdown.d.ts +11 -12
- package/lib-esm/components/Input/Dropdown.js +133 -52
- package/lib-esm/components/Input/Dropdown.js.map +1 -1
- package/lib-esm/components/Input/Input.d.ts +3 -3
- package/lib-esm/components/Input/Input.js +61 -109
- package/lib-esm/components/Input/Input.js.map +1 -1
- package/lib-esm/components/Input/Radio.d.ts +4 -8
- package/lib-esm/components/Input/Radio.js +35 -79
- package/lib-esm/components/Input/Radio.js.map +1 -1
- package/lib-esm/components/Input/RadioButton.d.ts +4 -8
- package/lib-esm/components/Input/RadioButton.js +34 -71
- package/lib-esm/components/Input/RadioButton.js.map +1 -1
- package/lib-esm/components/Input/Select.d.ts +6 -13
- package/lib-esm/components/Input/Select.js +75 -122
- package/lib-esm/components/Input/Select.js.map +1 -1
- package/lib-esm/components/Input/TextArea.d.ts +6 -13
- package/lib-esm/components/Input/TextArea.js +64 -108
- package/lib-esm/components/Input/TextArea.js.map +1 -1
- package/lib-esm/components/Input/Toggle.d.ts +4 -9
- package/lib-esm/components/Input/Toggle.js +31 -80
- package/lib-esm/components/Input/Toggle.js.map +1 -1
- package/lib-esm/components/Menu/Menu.d.ts +8 -6
- package/lib-esm/components/Menu/Menu.js +116 -31
- package/lib-esm/components/Menu/Menu.js.map +1 -1
- package/lib-esm/components/Menu/MenuContext.d.ts +11 -5
- package/lib-esm/components/Menu/MenuContext.js +6 -2
- package/lib-esm/components/Menu/MenuContext.js.map +1 -1
- package/lib-esm/components/Menu/MenuItem.d.ts +7 -4
- package/lib-esm/components/Menu/MenuItem.js +46 -47
- package/lib-esm/components/Menu/MenuItem.js.map +1 -1
- package/lib-esm/components/Modal/Modal.d.ts +75 -16
- package/lib-esm/components/Modal/Modal.js +146 -51
- package/lib-esm/components/Modal/Modal.js.map +1 -1
- package/lib-esm/components/Notification/Notification.d.ts +46 -39
- package/lib-esm/components/Notification/Notification.js +80 -87
- package/lib-esm/components/Notification/Notification.js.map +1 -1
- package/lib-esm/components/Notification/NotificationManager.d.ts +19 -5
- package/lib-esm/components/Notification/NotificationManager.js +177 -79
- package/lib-esm/components/Notification/NotificationManager.js.map +1 -1
- package/lib-esm/components/Notification/style.d.ts +6 -3
- package/lib-esm/components/Notification/style.js +64 -140
- package/lib-esm/components/Notification/style.js.map +1 -1
- package/lib-esm/components/Notification/types.d.ts +2 -0
- package/lib-esm/components/Notification/types.js +9 -10
- package/lib-esm/components/Notification/types.js.map +1 -1
- package/lib-esm/components/Popover/Popover.d.ts +21 -20
- package/lib-esm/components/Popover/Popover.js +159 -126
- package/lib-esm/components/Popover/Popover.js.map +1 -1
- package/lib-esm/components/Spinner/Spinner.d.ts +14 -12
- package/lib-esm/components/Spinner/Spinner.js +22 -27
- package/lib-esm/components/Spinner/Spinner.js.map +1 -1
- package/lib-esm/components/Stepper/Step.d.ts +15 -12
- package/lib-esm/components/Stepper/Step.js +18 -25
- package/lib-esm/components/Stepper/Step.js.map +1 -1
- package/lib-esm/components/Stepper/Stepper.d.ts +11 -17
- package/lib-esm/components/Stepper/Stepper.js +104 -102
- package/lib-esm/components/Stepper/Stepper.js.map +1 -1
- package/lib-esm/components/Tabs/Tab.d.ts +10 -16
- package/lib-esm/components/Tabs/Tab.js +9 -15
- package/lib-esm/components/Tabs/Tab.js.map +1 -1
- package/lib-esm/components/Tabs/Tabs.d.ts +11 -22
- package/lib-esm/components/Tabs/Tabs.js +96 -55
- package/lib-esm/components/Tabs/Tabs.js.map +1 -1
- package/lib-esm/components/Toast/Toast.d.ts +34 -7
- package/lib-esm/components/Toast/Toast.js +200 -109
- package/lib-esm/components/Toast/Toast.js.map +1 -1
- package/lib-esm/components/Toast/ToastStory.d.ts +21 -24
- package/lib-esm/components/Tooltip/Tooltip.d.ts +11 -14
- package/lib-esm/components/Tooltip/Tooltip.js +52 -67
- package/lib-esm/components/Tooltip/Tooltip.js.map +1 -1
- package/lib-esm/components/index.d.ts +1 -0
- package/lib-esm/icons/CheckCircle.d.ts +1 -1
- package/lib-esm/icons/CheckCircle.js +22 -4
- package/lib-esm/icons/CheckCircle.js.map +1 -1
- package/lib-esm/icons/Close.d.ts +1 -1
- package/lib-esm/icons/Close.js +22 -4
- package/lib-esm/icons/Close.js.map +1 -1
- package/lib-esm/icons/DragIndicator.d.ts +1 -1
- package/lib-esm/icons/DragIndicator.js +22 -4
- package/lib-esm/icons/DragIndicator.js.map +1 -1
- package/lib-esm/icons/ErrorOutline.d.ts +1 -1
- package/lib-esm/icons/ErrorOutline.js +16 -4
- package/lib-esm/icons/ErrorOutline.js.map +1 -1
- package/lib-esm/icons/ExpandMore.d.ts +1 -1
- package/lib-esm/icons/ExpandMore.js +22 -4
- package/lib-esm/icons/ExpandMore.js.map +1 -1
- package/lib-esm/icons/FiberManualRecord.d.ts +1 -1
- package/lib-esm/icons/FiberManualRecord.js +24 -4
- package/lib-esm/icons/FiberManualRecord.js.map +1 -1
- package/lib-esm/icons/Info.d.ts +1 -1
- package/lib-esm/icons/Info.js +22 -4
- package/lib-esm/icons/Info.js.map +1 -1
- package/lib-esm/icons/ReportProblem.d.ts +1 -1
- package/lib-esm/icons/ReportProblem.js +22 -4
- package/lib-esm/icons/ReportProblem.js.map +1 -1
- package/lib-esm/index.js +43 -2
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/shared/LayerManager.d.ts +34 -4
- package/lib-esm/shared/LayerManager.js +248 -114
- package/lib-esm/shared/LayerManager.js.map +1 -1
- package/lib-esm/shared/constants.d.ts +58 -27
- package/lib-esm/shared/constants.js +62 -26
- package/lib-esm/shared/constants.js.map +1 -1
- package/lib-esm/shared/styles.d.ts +1 -1
- package/lib-esm/shared/styles.js +21 -24
- package/lib-esm/shared/styles.js.map +1 -1
- package/package.json +130 -74
- package/lib-esm/components/Accordion/index.js +0 -3
- package/lib-esm/components/Accordion/index.js.map +0 -1
- package/lib-esm/components/Badge/index.js +0 -2
- package/lib-esm/components/Badge/index.js.map +0 -1
- package/lib-esm/components/Button/index.js +0 -6
- package/lib-esm/components/Button/index.js.map +0 -1
- package/lib-esm/components/Card/index.js +0 -3
- package/lib-esm/components/Card/index.js.map +0 -1
- package/lib-esm/components/Chip/index.js +0 -2
- package/lib-esm/components/Chip/index.js.map +0 -1
- package/lib-esm/components/ChipInput/index.js +0 -2
- package/lib-esm/components/ChipInput/index.js.map +0 -1
- package/lib-esm/components/Dialog/index.js +0 -5
- package/lib-esm/components/Dialog/index.js.map +0 -1
- package/lib-esm/components/DragAndDrop/index.js +0 -3
- package/lib-esm/components/DragAndDrop/index.js.map +0 -1
- package/lib-esm/components/Drawer/index.js +0 -2
- package/lib-esm/components/Drawer/index.js.map +0 -1
- package/lib-esm/components/Groups/index.js +0 -3
- package/lib-esm/components/Groups/index.js.map +0 -1
- package/lib-esm/components/Input/index.js +0 -9
- package/lib-esm/components/Input/index.js.map +0 -1
- package/lib-esm/components/Menu/index.js +0 -3
- package/lib-esm/components/Menu/index.js.map +0 -1
- package/lib-esm/components/Modal/index.js +0 -2
- package/lib-esm/components/Modal/index.js.map +0 -1
- package/lib-esm/components/Notification/index.js +0 -3
- package/lib-esm/components/Notification/index.js.map +0 -1
- package/lib-esm/components/Popover/index.js +0 -2
- package/lib-esm/components/Popover/index.js.map +0 -1
- package/lib-esm/components/Spinner/index.js +0 -2
- package/lib-esm/components/Spinner/index.js.map +0 -1
- package/lib-esm/components/Stepper/index.js +0 -4
- package/lib-esm/components/Stepper/index.js.map +0 -1
- package/lib-esm/components/Tabs/index.js +0 -3
- package/lib-esm/components/Tabs/index.js.map +0 -1
- package/lib-esm/components/Toast/ToastStory.js +0 -35
- package/lib-esm/components/Toast/ToastStory.js.map +0 -1
- package/lib-esm/components/Toast/index.js +0 -2
- package/lib-esm/components/Toast/index.js.map +0 -1
- package/lib-esm/components/Tooltip/index.js +0 -2
- package/lib-esm/components/Tooltip/index.js.map +0 -1
- package/lib-esm/components/index.js +0 -20
- package/lib-esm/components/index.js.map +0 -1
- package/lib-esm/icons/index.js +0 -9
- package/lib-esm/icons/index.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Accordion/Accordion.tsx","../src/shared/constants.ts","../src/components/Card/Card.tsx","../src/shared/styles.ts","../src/icons/CheckCircle.tsx","../src/icons/ExpandMore.tsx","../src/icons/FiberManualRecord.tsx","../src/icons/Close.tsx","../src/icons/Info.tsx","../src/icons/ReportProblem.tsx","../src/icons/ErrorOutline.tsx","../src/icons/DragIndicator.tsx","../src/components/Badge/Badge.tsx","../src/components/Accordion/AccordionStep.tsx","../src/components/Button/Button.tsx","../src/components/Button/LinkButton.tsx","../src/components/Button/RaisedButton.tsx","../src/components/Button/ActionButton.tsx","../src/components/Button/IconButton.tsx","../node_modules/tslib/tslib.es6.js","../src/components/Chip/Chip.tsx","../src/shared/LayerManager.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/AlertDialog.tsx","../src/components/Dialog/ConfirmDialog.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextArea.tsx","../src/components/Input/Select.tsx","../src/components/Input/Checkbox.tsx","../src/components/Input/Toggle.tsx","../src/components/Input/Radio.tsx","../src/components/Input/RadioButton.tsx","../src/components/Menu/MenuContext.ts","../src/components/Menu/Menu.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Popover/Popover.tsx","../src/components/Input/Dropdown.tsx","../src/components/Dialog/PromptDialog.tsx","../src/components/DragAndDrop/types.ts","../src/components/DragAndDrop/DragItem.tsx","../src/components/DragAndDrop/DragAndDrop.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Groups/Group.tsx","../src/components/Groups/GroupLabel.tsx","../src/components/Modal/Modal.tsx","../src/components/Notification/types.ts","../src/components/Notification/style.ts","../src/components/Notification/NotificationManager.tsx","../src/components/Notification/Notification.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Stepper/Step.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import React, { useState, Children, cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Accordion(props: AccordionProps & { children: any }) {\n const [ active, setActive ] = useState(props.active);\n\n const onStepClick = (index: number, disabled: boolean) => () => {\n if (disabled) {\n return;\n }\n\n const newIndex = index !== active ? index : -1\n if (props.onStepClick) {\n props.onStepClick(newIndex);\n } else {\n setActive(newIndex);\n }\n }\n\n return (\n <>\n {Children.map(props.children, (child, index) => {\n return cloneElement(child, {\n open: active === index,\n onStepClick: onStepClick(index, child.props.disabled)\n });\n })}\n </>\n )\n}\n\ntype AccordionProps = PropTypes.InferProps<typeof Accordion.propTypes>;\n\nAccordion.propTypes = {\n /** Currently opened step */\n active: PropTypes.number,\n /** Handler for click event on a step */\n onStepClick: PropTypes.func\n}\n\nAccordion.defaultProps = {\n active: -1,\n}\n\n\nexport default Accordion;\n","export default {\n PRIMARY: '#2283d2',\n PRIMARY_LIGHT: '#64baff',\n PRIMARY_LIGHTER: '#cfe9ff',\n BACKDROP_COLOR: '#2681da80',\n INFO: '#2283d2',\n INFO_LIGHT: '#64baff',\n SUCCESS: '#22d295',\n SUCCESS_LIGHT: '#80eac6',\n WARNING: '#cc9500',\n WARNING_LIGHT: '#ffba00',\n ERROR: '#d63b3b',\n ERROR_LIGHT: '#f1a5a5',\n BORDER_COLOR: '#555555',\n TOAST: '#5f5f5f',\n TOOLTIP_COLOR: 'rgba(0,0,0,0.5)',\n BORDER_LIGHT_COLOR: '#eeeeee',\n BACKGROUND: '#ffffff',\n DISABLED_BACKGROUND: '#fafafa',\n DISABLED_BORDER: '#aaa',\n LIGHT_GREY: '#ccc',\n DISABLED: '#777',\n SHADOW: '0px 1px 3px 0px rgba(0,0,0,0.1), 0px 1px 2px 0px rgba(0,0,0,0.06)',\n HOVER_SHADOW: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n MODAL_SHADOW: '0px 8px 17px 2px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12), 0px 5px 5px -3px rgba(0,0,0,0.2)',\n}","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport interface CardExtraProps {\n elevated?: boolean\n}\n\nconst Card = styled.div<CardExtraProps>`\n border-radius: 10px;\n background-color: var(--background, ${constants.BACKGROUND});\n ${props => props.elevated\n ? `box-shadow: var(--modal-shadow, ${constants.MODAL_SHADOW});`\n : `box-shadow: var(--shadow, ${constants.SHADOW});`\n }\n margin: 5px;\n overflow: auto;\n position: relative;\n`;\n\nexport default Card;\n","import styled from '@emotion/styled';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nexport const Header = styled.div`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid var(--border-light-color, #eeeeee);\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 20px 15px;\n flex: 1;\n overflow: auto;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid var(--border-light-color, #eeeeee);\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\n\nexport default function CheckCircle(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function ExpandMore(props: any) {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"18px\" height=\"18px\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function FiberManualRecord(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M24 24H0V0h24v24z\" fill=\"none\"/>\n <circle cx=\"12\" cy=\"12\" r=\"8\"/>\n </svg>\n );\n}","import React from 'react';\n\nexport default function Close(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function CheckCircle(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function CheckCircle(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function CheckCircle(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"/>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function CheckCircle(props: any) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill='currentColor' {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n <path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"/>\n </svg>\n );\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\nimport constants from '../../shared/constants';\n\nexport enum BADGE_TYPE {\n PRIMARY='primary',\n SUCCESS='success',\n WARNING='warning',\n DANGER='danger',\n DISABLED='disabled',\n}\n\ntype BadgeProps = React.PropsWithChildren<PropTypes.InferProps<typeof Badge.propTypes>>;\n\nconst BadgeSpan = styled.span<BadgeProps>`\n background-color: ${props => {\n switch(props.type) {\n case BADGE_TYPE.SUCCESS:\n return `var(--success, ${constants.SUCCESS})`;\n\n case BADGE_TYPE.WARNING:\n return `var(--info, ${constants.WARNING})`;\n\n case BADGE_TYPE.DANGER:\n return `var(--error, ${constants.ERROR})`;\n\n case BADGE_TYPE.DISABLED:\n return `var(--disabled, ${constants.DISABLED})`;\n\n default:\n return `var(--primary, ${constants.PRIMARY})`;\n }\n }};\n color: #fff;\n border-radius: 10px;\n padding: ${props => props.children ? '3px 10px' : '4px'};\n display: inline-block;\n min-height: 4px;\n min-width: 4px;\n font-size: 12px;\n margin: ${props => props.inline ? '0 5px' : '0'};\n\n ${props => !props.inline && 'position: absolute; top: 0; right: 0; transform: translate(50%, -50%);'};\n`;\n\nexport default function Badge(props: BadgeProps) {\n return <BadgeSpan {...props} />;\n};\n\nBadge.propTypes = {\n /** Display badge inline or overlay on parent component */\n inline: PropTypes.bool,\n /** Type of badge */\n type: PropTypes.oneOf([\n BADGE_TYPE.PRIMARY,\n BADGE_TYPE.SUCCESS,\n BADGE_TYPE.WARNING,\n BADGE_TYPE.DANGER,\n BADGE_TYPE.DISABLED,\n ]),\n css: PropTypes.any,\n}\n\nBadge.defaultProps = {\n inline: false,\n type: BADGE_TYPE.PRIMARY,\n}\n","import React, { useState } from 'react';\nimport styled from '@emotion/styled';\nimport { css } from '@emotion/react';\nimport PropTypes from 'prop-types';\nimport { Card } from '../Card';\nimport { Ellipsis } from '../../shared/styles';\nimport { FiberManualRecord, ExpandMore } from '../../icons';\nimport constants from '../../shared/constants';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\nconst Step = styled(Card)<AccordionStepProps & { focused: boolean }>`\n transition: all .6s ease;\n\n ${props => props.open && `\n margin: 20px 5px;\n `}\n\n ${props => props.focused && `box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});`}\n`;\n\nconst StepHeader = styled.div<{ open: boolean, disabled: boolean }>`\n padding: 20px 15px;\n display: flex;\n justify-content: space-between;\n \n & input {\n appearance: none;\n margin: 0;\n }\n\n ${props => props.open ? `\n border-bottom: 1px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n ` : ''}\n\n ${props => props.disabled ? `\n color: ${constants.LIGHT_GREY};\n ` : `\n cursor: pointer;\n `}\n`;\n\nconst HeaderContainer = styled.div<{ open: boolean, completed: boolean }>`\n display: flex;\n align-items: center;\n min-width: 40px;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n fill: ${props => props.open\n ? `var(--primary, ${constants.PRIMARY})`\n : props.completed \n ? `var(--success, ${constants.SUCCESS})`\n : constants.LIGHT_GREY};\n transform: ${props => props.open ? 'scale(0.8)' : 'scale(0.6)'};\n transition: all .3s ease;\n min-width: 24px;\n }\n`;\n\nconst ExpandContainer = styled.div<{ open: boolean }>`\n display: flex;\n align-items: center;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n transition: all .6s ease;\n fill: currentColor;\n }\n\n ${props => props.open ? `\n & svg {\n transform: rotate(180deg);\n }\n `: ''}\n`;\n\nconst StepBody = styled.div<{ height: number }>`\n transition: all .6s ease;\n overflow: hidden;\n height: ${ props => props.height || 0}px;\n`;\n\nexport const AccordionStepBody = styled.div`\n padding: 20px 15px;\n`;\n\nexport const AccordionStepFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 10px 15px;\n border-top: 1px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n`;\n\nexport default function AccordionStep(props: React.PropsWithChildren<AccordionStepProps>) {\n const [height, setHeight] = useState(0);\n const [focused, setFocused] = useState(false);\n const { open, disabled, header, errorText, completed, onStepClick } = props;\n\n const ref = (el?: HTMLDivElement) => setHeight(el?.scrollHeight || 0);\n\n const toggleFocus = () => {\n setFocused(!focused)\n }\n\n return(\n <Step {...props} focused={focused} elevated={props.open}>\n <StepHeader open={open} disabled={disabled} onClick={onStepClick}>\n <HeaderContainer open={open} completed={completed}>\n <input\n type='checkbox'\n checked={open}\n disabled={disabled}\n onFocus={toggleFocus}\n onBlur={toggleFocus}\n />\n <FiberManualRecord />\n <Ellipsis>{header}</Ellipsis>\n </HeaderContainer>\n <ExpandContainer open={open}>\n {errorText && <Badge css={css`margin-right: 15px;`} inline type={BADGE_TYPE.DANGER}>{errorText}</Badge>}\n <ExpandMore />\n </ExpandContainer>\n </StepHeader>\n <StepBody ref={ref} height={open ? height : 0}>\n {open && props.children}\n </StepBody>\n </Step>\n )\n}\n\nAccordionStep.propTypes = {\n /** Header text for the step */\n header: PropTypes.string.isRequired,\n /** Error text for the step */\n errorText: PropTypes.string,\n /** If steps has been marked as completed */\n completed: PropTypes.bool,\n /** If the step is disabled */\n disabled: PropTypes.bool,\n}\n\nAccordionStep.defaultProps = {\n completed: false,\n disabled: false\n}\n\ntype AccordionStepProps = PropTypes.InferProps<typeof AccordionStep.propTypes> & {\n open: boolean,\n completed: boolean,\n onStepClick: () => void,\n};","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.button`\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n color: inherit;\n background-color: var(--background, ${constants.BACKGROUND});\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 5px;\n position: relative;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: var(--primary, ${constants.PRIMARY});\n color: var(--primary, ${constants.PRIMARY});\n }\n\n &:focus {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n\n &:disabled {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n border-color: var(--light-grey, ${constants.LIGHT_GREY});\n color: var(--disabled, ${constants.DISABLED});\n }\n`;\n","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.button`\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n height: 32px;\n cursor: pointer;\n background-color: transparent;\n border: none;\n color: var(--primary, ${constants.PRIMARY});\n padding: 0 12px;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 5px;\n position: relative;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover, &:focus {\n text-decoration: underline;\n }\n\n &:disabled {\n border-color: ${constants.BORDER_COLOR};\n color: ${constants.DISABLED_BORDER};\n }\n`;\n","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.button`\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n color: inherit;\n background-color: var(--background, ${constants.BACKGROUND});\n transform: translateY(-2px);\n box-shadow: var(--hover-shadow, ${constants.HOVER_SHADOW});\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 5px;\n position: relative;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: var(--primary, ${constants.PRIMARY});\n color: var(--primary, ${constants.PRIMARY});\n }\n\n &:focus {\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n &:disabled {\n background-color: ${constants.BORDER_LIGHT_COLOR};\n border-color: ${constants.LIGHT_GREY};\n color: ${constants.DISABLED};\n }\n\n &:active {\n transform: translateY(0);\n box-shadow: var(--shadow, ${constants.SHADOW});\n }\n`;\n","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.button`\n border: 1px solid var(--primary, ${constants.PRIMARY});\n background-color: var(--primary, ${constants.PRIMARY});\n color: #fff;\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 5px;\n position: relative;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover {\n box-shadow: var(--hover-shadow, ${constants.HOVER_SHADOW});\n }\n\n &:focus {\n box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n\n &:disabled {\n border: 1px solid ${constants.LIGHT_GREY};\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n color: var(--disabled, ${constants.DISABLED});\n }\n`;\n","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.button`\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 5px;\n height: 32px;\n font-size: 14px;\n text-align: center;\n padding: 0 3px;\n cursor: pointer;\n color: inherit;\n background-color: var(--background, ${constants.BACKGROUND});\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 5px;\n position: relative;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: var(--primary, ${constants.PRIMARY});\n color: var(--primary, ${constants.PRIMARY});\n }\n\n &:focus {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n\n &:disabled {\n background-color: ${constants.BORDER_LIGHT_COLOR};\n border-color: ${constants.LIGHT_GREY};\n color: ${constants.DISABLED};\n }\n\n &:disabled > svg {\n fill: ${constants.DISABLED};\n }\n`;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\nimport { Close } from '../../icons';\n\ninterface ChipProps {\n /** Label for the chip */\n label: string;\n /** Callback when the close button is clicked */\n onCloseClick?: () => void;\n}\n\nconst Container = styled.div`\n padding: 5px;\n padding-left: 15px;\n border-radius: 16px;\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n display: inline-flex;\n margin: 5px;\n line-height: 20px;\n align-items: center;\n\n &:focus-within {\n outline: 2px solid var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n`;\n\nconst Button = styled.button`\n color: #fff;\n background-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n border-radius: 50%;\n border: none;\n padding: 0;\n display: inline-flex;\n margin-left: 5px;\n`;\n\nexport default function Chip(props: ChipProps) {\n const { label, onCloseClick, ...rest } = props;\n\n const keyUpHandler:React.KeyboardEventHandler<HTMLDivElement> = (e) => {\n if (e.keyCode === 8 || e.keyCode === 46) {\n onCloseClick?.();\n }\n }\n\n return (\n <Container {...rest} onKeyUp={keyUpHandler}>\n {label}\n <Button onClick={onCloseClick} aria-label={`Remove ${label}`}>\n <Close height={20} width={20} />\n </Button>\n </Container>\n );\n}\n","import React, { ReactPortal, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport ReactDOM from 'react-dom';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG\n};\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: JSX.Element;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: <T extends unknown>(resp: T) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n}\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n}\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity .3s ease;\n ${props => POSITION_STYLE[props.position]}\n ${props => props.overlay && `\n width: 100%;\n height: 100vh;\n background-color: var(--backdrop-color, #2681da80);\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${props => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${props => props.overlay && `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27\n}\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n * \n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 10000;\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n document.body.addEventListener('keyup', (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n });\n }\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: any) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n this.layers.splice(this.layers.findIndex(item => item === layer), 1);\n \n setTimeout(() => {\n try {\n layer.config.closeCallback && layer.config.closeCallback(resp);\n } catch (e) {\n // Error in callback function. Ignore and proceed.\n console.warn(e.message);\n }\n }, layer.config.exitDelay);\n }\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (config: LayerConfig): [() => React.ReactPortal, (resp?: any) => void] => {\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : this.nextIndex++;\n\n // Prepare the div on DOM where the new layer will be mounted.\n const divElement = document.createElement('div');\n divElement.setAttribute('id', `nf-layer-manager-${currentIndex}`);\n document.body.appendChild(divElement);\n\n // Add layer to stack.\n const currentLayer = {\n id: `nf-layer-manager-${currentIndex}`,\n config: layerConfig,\n element: divElement\n };\n this.layers.push(currentLayer);\n\n const overlayClickHandler = (layer: Layer) => () => {\n layer.config.closeOnOverlayClick !== false && this.unmount(layer);\n }\n\n // Return callback which will trigger the un-mount.\n return [\n // Render the layer and then add `nf-layer-enter` class to\n // the div created above.\n // This class will help component in triggering the entry animation.\n function TestLayer(): ReactPortal {\n useEffect(() => {\n // The delay is introduced to enable entry animation on Firefox.\n // Somehow on Firefox, useEffect is triggered before the component\n // is rendered it seems.\n setTimeout(() => {\n divElement.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Cleanup function\n return () => {\n document.body.removeChild(divElement);\n }\n }, []);\n\n return ReactDOM.createPortal(\n <Container\n onClick={overlayClickHandler(currentLayer)}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n // Used setTimeout so that the attribute is added only after\n // the component is completely mounted.\n // () => { setTimeout(() => divElement.setAttribute('class', 'nf-layer-enter'), 100) }\n )\n },\n (resp?: any) => {\n this.unmount(currentLayer, resp);\n }\n ]\n }\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport const DialogContainer = styled(Card)`\n max-width: 768px;\n max-height: 80vh;\n transform: scale(0);\n opacity: 0;\n transition: all .3s ease;\n\n .nf-layer-enter & {\n opacity: 1;\n transform: scale(1);\n }\n\n .nf-layer-exit & {\n opacity: 0;\n transform: scale(0);\n }\n`;\n\nexport {\n Header as DialogHeader,\n Body as DialogBody,\n Footer as DialogFooter,\n} from '../../shared/styles';\n\ntype DialogOptions = PropTypes.InferProps<typeof Dialog.propTypes>;\n\ninterface DialogState { show: boolean }\n\nclass Dialog extends React.Component<React.PropsWithChildren<DialogOptions>, DialogState> {\n static propTypes = {\n /** Flag to close dialog on `esc` click. Default value is true. */\n closeOnEsc: PropTypes.bool,\n /** Close layer overlay is clicked. Default value is true. */\n closeOnOverlayClick: PropTypes.bool,\n }\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n }\n\n private closeDialog: (resp?: any) => void;\n private onCloseFn: (resp?: any) => void;\n\n state = {\n show: false,\n }\n\n shouldComponentUpdate(nextProps: DialogOptions, nextState: DialogState) {\n return this.state.show !== nextState.show;\n }\n\n public open = (closeCallback?: (resp: any) => void) => {\n this.setState({\n show: true,\n });\n this.onCloseFn = closeCallback ;\n }\n\n public close = (resp?: any) => {\n this.closeDialog && this.closeDialog(resp);\n }\n\n private closeCallback = (resp?: any) => {\n this.setState({\n show: false,\n });\n this.onCloseFn && this.onCloseFn(resp);\n }\n\n render () {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest} = this.props;\n\n if (this.state.show) {\n const [Component, closeFn ] = LayerManager.renderLayer({\n exitDelay: 300,\n overlay: true,\n closeOnEsc,\n closeCallback: this.closeCallback,\n closeOnOverlayClick,\n position: LAYER_POSITION.DIALOG,\n component: (\n <DialogContainer {...rest} onClick={e => e.stopPropagation()} elevated>\n {children}\n </DialogContainer>\n )\n });\n this.closeDialog = closeFn;\n return <Component />;\n } else {\n return null;\n }\n }\n}\n\nexport default Dialog;\n","import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\nimport { Button } from '../Button';\n\ntype AlertOption = PropTypes.InferProps<typeof AlertDialog.propTypes>;\n\nexport default class AlertDialog extends React.Component<AlertOption> {\n private dialog = createRef<Dialog>();\n \n static propTypes = {\n /** Shown as header of the dialog */\n header: PropTypes.string,\n /** Rendered in the body. */\n body: PropTypes.any.isRequired,\n /** Accept button text, default value is `OK` */\n buttonText: PropTypes.string,\n /** props for the dialog */\n dialogProps: PropTypes.object,\n }\n\n static defaultProps = {\n buttonText: 'OK'\n }\n\n public show = () => {\n return new Promise(resolve => {\n const onClose = () => resolve(null);\n this.dialog.current.open(onClose);\n });\n }\n\n private close = () => this.dialog.current.close();\n \n render() {\n return (\n <Dialog {...this.props.dialogProps} ref={this.dialog} closeOnEsc={false} closeOnOverlayClick={false}>\n { this.props.header && <DialogHeader>{this.props.header}</DialogHeader>}\n <DialogBody>{this.props.body}</DialogBody>\n <DialogFooter><Button onClick={this.close}>{this.props.buttonText}</Button></DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\nimport { Button, ActionButton } from '../Button';\n\ntype ConfirmOption = PropTypes.InferProps<typeof ConfirmDialog.propTypes>;\n\nexport default class ConfirmDialog extends React.Component<ConfirmOption> {\n private dialog = createRef<Dialog>();\n\n static propTypes = {\n /** Shown as header of the dialog */\n header: PropTypes.string,\n /** Rendered as body of the dialog */\n body: PropTypes.string.isRequired,\n /** Accept button text */\n yesText: PropTypes.string,\n /** Reject button text */\n noText: PropTypes.string,\n /** Props for the dialog */\n dialogProps: PropTypes.object,\n }\n\n static defaultProps = {\n yesText: 'Yes',\n noText: 'No'\n }\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (resp: boolean) => {\n resp ? resolve(null) : reject();\n }\n this.dialog.current.open(onClose);\n })\n }\n\n private cancel = () => this.dialog.current.close(false);\n private confirm = () => this.dialog.current.close(true);\n\n render() {\n const { header, body, yesText, noText, dialogProps } = this.props;\n return (\n <Dialog {...dialogProps} ref={this.dialog} closeOnEsc={false} closeOnOverlayClick={false}>\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>{body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.cancel}>{noText}</Button>\n <ActionButton onClick={this.confirm}>{yesText}</ActionButton>\n </DialogFooter>\n </Dialog>\n )\n }\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\ntype InputProps = React.AllHTMLAttributes<HTMLInputElement> & {\n /** Label for the field */\n label?: string,\n /** Error message for the field */\n errorText?: string,\n}\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n}\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n\n /** Focused */\n &:focus, &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary-light, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus + span, &:active + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n \n &:disabled + span {\n color: #777;\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${props => props.touched ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid + span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Error */\n ${props => props.errorText ? `\n border-color: var(--error, ${constants.ERROR});\n\n & + span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${props => props.value !== '' ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `: ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, ref) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n }\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n }\n\n return (\n <Label>\n <TextField\n {...props}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n />\n <span>{props.label}</span>\n { props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer> }\n </Label>\n );\n});\n\nexport default Input;\n\nInput.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\ninterface TextAreaProps extends PropTypes.InferType<typeof TextArea.propTypes>,\n React.InputHTMLAttributes<HTMLTextAreaElement> {\n value?: string;\n }\n\ntype TextAreaInternalProps = TextAreaProps & {\n touched: boolean;\n}\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n\n /** Focused */\n &:focus, &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus + span, &:active + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n \n &:disabled + span {\n color: var(--disabled, ${constants.DISABLED});\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${props => props.touched ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid + span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Error */\n ${props => props.errorText ? `\n border-color: var(--error, ${constants.ERROR});\n\n & + span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${props => props.value !== '' ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `: ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nexport default function TextArea(props: TextAreaProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n }\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n }\n\n return (\n <Label>\n <TextField\n {...props}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n />\n <span>{props.label}</span>\n { props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer> }\n </Label>\n );\n}\n\nTextArea.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport constants from '../../shared/constants';\n\ninterface SelectProps extends PropTypes.InferType<typeof Select.propTypes>,\n React.InputHTMLAttributes<HTMLSelectElement> {\n value?: string;\n }\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n}\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n background-color: var(--background, ${constants.BACKGROUND});\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus, &:active {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:focus ~ span, &:active ~ span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** Disabled */\n &:disabled {\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n \n &:disabled ~ span {\n color: var(--disabled, ${constants.DISABLED});\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: var(--error, ${constants.ERROR});\n box-shadow: 0 0 0 4px var(--error-light, ${constants.ERROR_LIGHT});\n }\n\n ${props => props.touched ? `\n &:invalid {\n border-color: var(--error, ${constants.ERROR});\n }\n\n &:invalid ~ span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Error */\n ${props => props.errorText ? `\n border-color: var(--error, ${constants.ERROR});\n\n & ~ span {\n color: var(--error, ${constants.ERROR});\n }\n ` : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: var(--error, ${constants.ERROR});\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${props => props.value !== '' ? `\n & + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n `: ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: var(--background, ${constants.BACKGROUND});\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\nexport default function Select(props: SelectProps) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n }\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n }\n\n return (\n <Label>\n <SelectField\n {...props}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer><ExpandMore /></ArrowContainer>\n { props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer> }\n </Label>\n );\n}\n\nSelect.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** Error text to be shown below the field */\n errorText: PropTypes.string,\n};\n","import React, { useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Label = styled.label`\n margin: 5px 0;\n position: relative;\n`;\n\nconst Input = styled.input`\n appearance: none;\n position: relative;\n margin: 0;\n\n &::before {\n content: '';\n width: 16px;\n height: 16px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n display: inline-block;\n border-radius: 3px;\n vertical-align: bottom;\n margin: 0 5px;\n text-align: center;\n line-height: 16px;\n background-color: var(--background, ${constants.BACKGROUND});\n transition: background-color .3s ease;\n }\n\n &::after {\n content: '';\n width: 3px;\n height: 10px;\n border-right: 2px solid #fff;\n border-bottom: 2px solid #fff;\n transform: translate(-16px, 1px);\n opacity: 0;\n transition: transform .3s ease;\n position: absolute;\n }\n\n /** checked */\n &:checked::before {\n content: '';\n background-color: var(--primary, ${constants.PRIMARY});\n border-color: var(--primary, ${constants.PRIMARY});\n color: #fff;\n }\n\n &:checked::after {\n opacity: 1;\n transform: translate(-16px, 2px) rotate(45deg);\n }\n\n /** indeterminate */\n &:indeterminate::before {\n content: '';\n background-color: var(--primary, ${constants.PRIMARY});\n border-color: var(--primary, ${constants});\n color: #fff;\n }\n\n &:indeterminate::after {\n width: 0;\n opacity: 1;\n transform: translate(-15px, 3px) rotate(90deg);\n }\n\n /** active and focus */\n &:enabled:active::before, &:focus::before {\n border-color: var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT}); \n }\n\n &:enabled:active + span, &:focus + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** hover */\n &:enabled:hover::before {\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n &:enabled:hover + span {\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /** disabled */\n &:disabled::before {\n border-color: #aaa;\n }\n\n &:disabled + span {\n color: #aaa;\n }\n\n &:checked:disabled::before, &:indeterminate:disabled::before {\n background-color: #aaa;\n }\n`;\n\ntype CheckboxProps = Omit<React.HTMLProps<HTMLInputElement>, 'as'> & PropTypes.InferProps<typeof Checkbox.propTypes>;\n\nexport default function Checkbox(props: CheckboxProps) {\n const ref = useCallback((node: any) => {\n if (node !== null) {\n if (props.indeterminate) {\n node.indeterminate = true;\n }\n }\n }, []);\n\n return (\n <Label>\n <Input {...props} ref={ref} type=\"checkbox\" />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nCheckbox.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n /** If the field is in indeterminate state */\n indeterminate: PropTypes.bool,\n}\n\nCheckbox.defaultProps = {\n indeterminate: false,\n label: ''\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${constants.LIGHT_GREY};\n transition: .4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: \"\";\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n border-radius: 50%;\n background-color: var(--background, ${constants.BACKGROUND});\n transition: .4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});\n border-color: var(--primary, ${constants.PRIMARY});\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: var(--primary, ${constants.PRIMARY});\n }\n\n /* disabled */\n &:disabled ~ span {\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n\n &:disabled + span {\n background-color: ${constants.LIGHT_GREY};\n cursor: not-allowed;\n }\n \n &:disabled + span:before {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n border-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n`;\n\n\ntype ToggleProps = PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes>;\n\nfunction Toggle(props: ToggleProps) {\n return (\n <Switch>\n <Input {...props} type='checkbox' />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nToggle.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n}\n\nexport default Toggle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n\n &::before {\n content: ' ';\n width: 16px;\n height: 16px;\n margin: 0 5px;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 50%;\n display: block;\n transition: background-color .3s ease;\n }\n\n /* checked */\n &:checked::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n background-color: var(--primary, ${constants.PRIMARY});\n box-shadow: inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n }\n\n /* focus */\n &:enabled:focus::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});\n cursor: pointer;\n }\n\n &:enabled:checked:focus::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT}),\n inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n cursor: pointer;\n }\n\n /* hover */\n &:enabled:hover::before {\n border: 1px solid var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n }\n\n &:enabled:hover + span {\n color: var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n }\n\n /* disabled */\n &:disabled::before {\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--light-grey, ${constants.LIGHT_GREY});\n }\n\n &:disabled:checked::before {\n border: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n background-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n box-shadow: inset 0 0 0 3px var(--background, ${constants.BACKGROUND});\n }\n\n &:disabled + span {\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n`;\n\nfunction Radio(props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Radio.propTypes>) {\n return (\n <Label>\n <Input {...props} type='radio' />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadio.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n}\n\nexport default Radio;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: var(--primary, ${constants.PRIMARY});\n padding: 6px 12px;\n border: none;\n border: 1px solid var(--primary, ${constants.PRIMARY});\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px var(--primary, ${constants.PRIMARY_LIGHT});\n }\n\n &:enabled:hover + span {\n background-color: var(--primary, ${constants.PRIMARY_LIGHT});\n color: #fff;\n }\n\n &:enabled:checked + span {\n background-color: var(--primary, ${constants.PRIMARY});\n color: #fff;\n }\n\n &:disabled + span {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n color: var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n\n &:disabled:checked + span {\n background-color: var(--disabled-border, ${constants.DISABLED_BORDER});\n color: #fff;\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & ${Label}:first-child > span {\n border-radius: 3px 0 0 3px;\n }\n\n & ${Label}:last-child > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\nfunction RadioButton(props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof RadioButton.propTypes>) {\n return (\n <Label>\n <Input {...props} type='radio' />\n <span>{props.label}</span>\n </Label>\n );\n}\n\nRadioButton.propTypes = {\n /** Label for the field */\n label: PropTypes.string,\n}\n\nexport default RadioButton;\n","import { createContext } from 'react';\n\nexport interface MenuContext<T> {\n value: T | T[];\n multiSelect: boolean;\n updateValue: (newVal: T) => void\n}\n\nexport default createContext<MenuContext<any>>(undefined);\n","import React, { useState, ReactNode, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport MenuContext from './MenuContext';\ninterface MenuProps<T> {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n /** Menu Items */\n children?: ReactNode;\n}\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n`;\n\nconst Menu = React.forwardRef(function <T>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n const { multiSelect, onChange } = props;\n const [value, setValue] = useState(props.value || (multiSelect ? [] : ''));\n\n const updateValue = (val: T) => {\n let newVal;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val)) {\n newVal = value.filter(item => item !== val);\n } else {\n newVal = [...value, val];\n }\n }\n } else {\n newVal = val;\n }\n setValue(newVal);\n onChange?.(newVal);\n }\n\n return (\n <MenuContext.Provider value={{\n value,\n multiSelect,\n updateValue\n }}>\n <MenuContainer ref={ref}>\n {props.children}\n </MenuContainer>\n </MenuContext.Provider>\n )\n});\n\nMenu.defaultProps = {\n multiSelect: false,\n} \n\nexport default Menu;\n","import React, { ReactNode, SyntheticEvent, useContext } from 'react';\nimport styled from '@emotion/styled';\nimport MenuContext from './MenuContext';\nimport constants from '../../shared/constants';\nimport Checkbox from '../Input/Checkbox';\n\ninterface MenuItemProps<T> {\n /** Value of the element */\n value: T;\n}\n\nconst Container = styled.button<{selected: boolean}>`\n font-weight: ${props => props.selected ? 'bold' : 'normal'};\n padding: 8px 6px;\n border: none;\n background-color: transparent;\n font-size: 16px;\n border-bottom: 1px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n min-height: 41px;\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n\n &:hover, &:focus, &:focus-within {\n background-color: var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n }\n\n & > label {\n margin: 0 4px 0 0;\n }\n`;\n\nexport default function MenuItem<T>(props: MenuItemProps<T> & React.PropsWithChildren<{}>) {\n const context = useContext(MenuContext);\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n if (context.multiSelect) {\n e.nativeEvent.stopImmediatePropagation();\n }\n context.updateValue(value);\n };\n\n const selected = context.multiSelect ? context.value?.includes?.(value) : context.value === value;\n\n return (\n <Container {...rest} type='button' tabIndex={context.multiSelect ? -1 : 0} selected={selected} onClick={clickHandler}>\n {context.multiSelect && <Checkbox checked={selected} />}\n {props.children}\n </Container>\n )\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\n\nexport enum POPOVER_POSITION {\n TOP_LEFT='TOP_LEFT',\n TOP_RIGHT='TOP_RIGHT',\n BOTTOM_LEFT='BOTTOM_LEFT',\n BOTTOM_RIGHT='BOTTOM_RIGHT',\n\n}\n\ninterface translate {\n x: number,\n y: number,\n}\n\nconst positionMap = {\n [POPOVER_POSITION.TOP_LEFT]: `\n bottom: calc(100% - 10px);\n left: 0;\n `,\n [POPOVER_POSITION.TOP_RIGHT]: `\n bottom: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_RIGHT]: `\n top: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_LEFT]: `\n top: calc(100% - 10px);\n left: 0;\n `\n}\n\nconst PopoverDiv = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nconst Popper = styled(Card)<{ position: POPOVER_POSITION, translateX: number, translateY: number }>`\n position: absolute;\n width: 100%;\n min-width: 200px;\n overflow: auto;\n animation: enter .3s linear;\n border-radius: 3px;\n z-index: 1;\n transform: translate(${props => props.translateX}px, ${props => props.translateY}px);\n ${props => positionMap[props.position]}\n\n &.closing {\n /* max-height: 0px;\n opacity: 0;\n overflow: hidden; */\n animation: exit .3s linear;\n }\n\n @keyframes enter {\n from {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n to {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n\n @keyframes exit {\n to {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n from {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n`;\n\nconst KEY_CODES = {\n ESC: 27\n}\n\nexport default function Popover(props: React.PropsWithChildren<PropTypes.InferProps<typeof Popover.propTypes>>) {\n const [open, setOpen] = useState(props.open);\n const [closing, setClosing] = useState(false);\n const [translate, setTranslate] = useState<translate>({ x: 0, y: 0 });\n const popperRef = useRef<HTMLDivElement>();\n const containerRef = useRef<HTMLDivElement>();\n\n const close = () => {\n setClosing(true);\n setTimeout(() => {\n setOpen(false);\n setTranslate({ x: 0, y: 0 })\n if (props.onClose) {\n props.onClose();\n }\n setClosing(false);\n }, 280);\n }\n\n const keyupEventHandler = (e: KeyboardEvent) => {\n if (props.closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n }\n\n const clickOutsideHandler = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n }\n\n /**\n * Get called on popover mount.\n */\n useEffect(() => {\n document.addEventListener('keyup', keyupEventHandler);\n\n return () => {\n document.removeEventListener('keyup', keyupEventHandler);\n document.removeEventListener('click', clickOutsideHandler);\n }\n }, [])\n\n useEffect(() => {\n if (props.open) {\n setOpen(true);\n // Use requestAnimationFrame to add listener after current event loop\n requestAnimationFrame(() => {\n document.addEventListener('click', clickOutsideHandler);\n });\n } else {\n if (open) {\n close();\n }\n }\n\n return () => {\n document.removeEventListener('click', clickOutsideHandler);\n }\n }, [props.open]);\n\n useEffect(() => {\n if (open) {\n const { top, left, right } = popperRef.current.getBoundingClientRect();\n const height = popperRef.current.scrollHeight;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n const translation = { x: 0, y: 0 };\n\n if (props.position === POPOVER_POSITION.BOTTOM_LEFT) {\n // overflow can happen at bottom and right\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else if (props.position == POPOVER_POSITION.BOTTOM_RIGHT) {\n // overflow can happen at bottom and left\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n } else if (props.position === POPOVER_POSITION.TOP_LEFT) {\n // overflow can happen at top and right\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else {\n // overflow can happen at top and left\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n }\n // Note it can still overflow, but in that case fitting popper inside the\n // window is not possible.\n setTranslate(translation);\n popperRef.current.focus();\n }\n }, [open]);\n\n return (\n <PopoverDiv ref={containerRef}>\n <props.element />\n { open && (\n <Popper\n elevated\n tabIndex={0}\n position={props.position}\n translateX={translate.x}\n translateY={translate.y}\n className={closing && 'closing'}\n ref={popperRef}\n onClick={e => { e.stopPropagation(); e.nativeEvent.stopImmediatePropagation(); }}\n >\n {props.children}\n </Popper>\n )}\n </PopoverDiv>\n )\n}\n\nPopover.propTypes = {\n /** Opens the popover */\n open: PropTypes.bool.isRequired,\n /** Anchor element for the popover */\n element: PropTypes.func,\n /** Position of the popover around anchor element */\n position: PropTypes.oneOf([\n POPOVER_POSITION.TOP_LEFT,\n POPOVER_POSITION.TOP_RIGHT,\n POPOVER_POSITION.BOTTOM_LEFT,\n POPOVER_POSITION.BOTTOM_RIGHT,\n ]),\n /** If the popover should close on `esc` key press */\n closeOnEsc: PropTypes.bool,\n /** Popover close callback */\n onClose: PropTypes.func,\n}\n\nPopover.defaultProps = {\n closeOnEsc: true,\n position: POPOVER_POSITION.BOTTOM_LEFT,\n}\n","import React, { useEffect, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\nimport { ExpandMore } from '../../icons';\n\ntype DropdownProps<T> = {\n /** Value of the control */\n value?: T | T[],\n /** If multiple elements can be selected */\n multiSelect: boolean,\n /** Change handler */\n onChange?: (v: T | T[]) => void,\n /** Label of the control */\n label?: string,\n /** Error message */\n errorText?: string,\n /** Makes field required */\n required?: boolean,\n /** Disables the field */\n disabled?: boolean\n} & React.PropsWithChildren<{}>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\nexport default function Dropdown<T>(props: DropdownProps<T>) {\n const { multiSelect, onChange } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(props.value);\n\n const focusHandler = (e: KeyboardEvent) => {\n if (open && (e.keyCode === 38 || e.keyCode === 40)) {\n e.preventDefault();\n const current = document.querySelector(':focus');\n if (current.tagName === \"DIV\") {\n const firstBtn = current.querySelector('button');\n firstBtn?.focus();\n } else {\n const currentBtn = current.closest('button');\n if (e.keyCode === 38) {\n const prev = currentBtn?.previousElementSibling?.closest('button');\n prev?.focus();\n } else {\n const next = currentBtn?.nextElementSibling?.closest('button');\n next?.focus();\n }\n }\n return false;\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', focusHandler);\n \n return () => {\n document.removeEventListener('keydown', focusHandler);\n };\n }, [open]);\n\n const clickHandler = () => setOpen(true);\n \n const keyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.keyCode === 40) {\n setOpen(true);\n }\n }\n\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n \n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n }\n }\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={() => (\n <>\n <Input\n type='text'\n value={value && String(value)}\n label={props.label}\n errorText={props.errorText}\n onClick={clickHandler}\n onKeyUp={keyUp}\n required={props.required}\n disabled={props.disabled}\n />\n <ArrowContainer><ExpandMore /></ArrowContainer>\n </>\n )}\n onClose={() => setOpen(false)}\n >\n <Menu value={value} multiSelect={multiSelect} onChange={changeHandler}>\n {props.children}\n </Menu>\n </Popover>\n );\n}\n\nDropdown.defaultProps = {\n multiSelect: false,\n}\n","import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\nimport { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\n\ntype PromptOption = PropTypes.InferProps<typeof PromptDialog.propTypes>;\n\nconst BodyText = styled.p`\n margin-top: 0;\n`\n\nexport default class PromptDialog extends React.Component<PromptOption, { value: string }> {\n static propTypes = {\n /** Shown as header of the dialog */\n header: PropTypes.string,\n /** Rendered as the body of the dialog */\n body: PropTypes.string,\n /** Default value for the input. */\n defaultValue: PropTypes.string,\n /** Submit button text. Default value is 'Submit' */\n submitText: PropTypes.string,\n /** Cancel button text. Default value is 'Cancel' */\n cancelText: PropTypes.string,\n /** Props for the input. */\n inputProps: PropTypes.object,\n /** Additional props for the dialog. */\n dialogProps: PropTypes.object,\n }\n\n static defaultProps = {\n cancelText: 'Cancel',\n submitText: 'Submit',\n defaultValue: '',\n }\n\n constructor(props: PromptOption) {\n super(props);\n this.state = {\n value: props.defaultValue,\n }\n }\n \n private dialog = createRef<Dialog>();\n\n private valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n this.setState({\n value: e.target.value,\n })\n }\n\n private cancel = () => this.dialog.current.close();\n\n private submit = (e: React.FormEvent) => {\n e.preventDefault();\n this.dialog.current.close(this.state.value);\n }\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (value: string) => {\n if (value) {\n resolve(value);\n } else {\n reject();\n }\n this.setState({\n value: this.props.defaultValue,\n });\n }\n this.dialog.current.open(onClose);\n });\n }\n\n render() {\n const { header, body, inputProps, submitText, cancelText, dialogProps } = this.props;\n\n return (\n <Dialog {...dialogProps} ref={this.dialog} closeOnEsc={false} closeOnOverlayClick={false}>\n <form onSubmit={this.submit}>\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>\n <BodyText>{body}</BodyText>\n <div style={{ display: 'flex' }}>\n <Input\n style={{ width: 'auto', flex: '1' }}\n value={this.state.value}\n onChange={this.valueChange}\n autoFocus\n {...inputProps}\n />\n </div>\n </DialogBody>\n <DialogFooter>\n <Button type='button' onClick={this.cancel}>{cancelText}</Button>\n <ActionButton>{submitText}</ActionButton>\n </DialogFooter>\n </form>\n </Dialog>\n )\n }\n\n}\n","import { createContext } from \"react\";\n\nexport enum ORIENTATION {\n HORIZONTAL='horizontal',\n VERTICAL='vertical',\n}\n\nexport const DragContext = createContext<{\n startIndex: number;\n setStartIndex: (value: number) => void;\n drop: (index: number) => void;\n isDragging: boolean;\n setIsDragging: (value: boolean) => void;\n setDragOver: (value: number) => void;\n}>(null);\n","import React, { DragEventHandler, PropsWithChildren, useContext, useState, useEffect, TouchEventHandler } from 'react';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\nimport { ORIENTATION, DragContext } from './types';\nimport { DragIndicator } from '../../icons';\n\ninterface DragItemProps {\n /** Position index of the draggable item */\n index: number;\n /** Orientation of the drag operation (VERTICAL or HORIZONTAL) */\n orientation: ORIENTATION;\n /** Whether to show a drag handle indicator instead of making the entire item draggable */\n showIndicator: boolean;\n /** The index of the item currently being dragged over */\n dragOver: number;\n}\n\n/** Styled component for the draggable item container */\nconst Item = styled.div<{active: number, orientation: ORIENTATION, showIndicator: boolean, dragging: boolean}>`\n cursor: ${props => props.showIndicator ? 'default' : 'move'};\n display: flex;\n user-select: ${props => props.showIndicator ? 'auto' : 'none'};\n border-top: 2px solid ${props => props.orientation === ORIENTATION.VERTICAL && props.active > 0\n ? constants.PRIMARY : 'transparent'};\n border-bottom: 2px solid ${props => props.orientation === ORIENTATION.VERTICAL && props.active < 0\n ? constants.PRIMARY : 'transparent'};\n border-left: 2px solid ${props => props.orientation === ORIENTATION.HORIZONTAL && props.active > 0\n ? constants.PRIMARY : 'transparent'};\n border-right: 2px solid ${props => props.orientation === ORIENTATION.HORIZONTAL && props.active < 0\n ? constants.PRIMARY : 'transparent'};\n opacity: ${props => props.dragging ? 0.5 : 1};\n`;\n\n/** Styled component for the drag handle indicator */\nconst DragKnob = styled.div`\n padding-top: 8px;\n cursor: move;\n touch-action: none;\n color: var(--disabled, ${constants.DISABLED});\n`;\n\n/** Container for the children */\nconst Container = styled.div`\n flex: 1;\n`;\n\n/**\n * A draggable item component that supports both mouse and touch interactions for drag-and-drop functionality.\n * \n * @component\n * @example\n * ```tsx\n * <DragItem \n * index={0} \n * orientation={ORIENTATION.VERTICAL}\n * showIndicator={true}\n * dragOver={-1}\n * >\n * <div>Draggable content</div>\n * </DragItem>\n * ```\n * \n * @param props - The component props\n * @param props.index - The position index of this item in the draggable list\n * @param props.orientation - The orientation of the drag operation (VERTICAL or HORIZONTAL)\n * @param props.showIndicator - Whether to show a drag handle indicator instead of making the entire item draggable\n * @param props.dragOver - The index of the item currently being dragged over\n * @param props.children - The content to be rendered inside the draggable item\n * \n * @remarks\n * - Uses the DragContext to manage drag state across items\n * - Provides visual feedback with borders during drag operations\n * - Supports haptic feedback (vibration) on touch devices\n * - For touch devices, requires a 200ms hold before drag starts\n * - When showIndicator is true, only the drag handle can initiate drag operations\n * \n * @returns A draggable item with optional drag indicator and visual feedback\n */\nexport default function DragItem(props: PropsWithChildren<DragItemProps>) {\n const { index, orientation, children, showIndicator, dragOver } = props;\n const [active, setActive] = useState(0);\n const [touchTimer, setTouchTimer] = useState<NodeJS.Timeout | null>(null);\n const context = useContext(DragContext);\n\n /**\n * Vibrate the device for haptic feedback\n * @param duration Duration of the vibration in milliseconds\n */\n const vibrate = (duration: number) => {\n if (navigator.vibrate) {\n navigator.vibrate(duration);\n }\n };\n\n /**\n * Drag start event handler\n * @param e Event\n */\n const dragStartHandler: DragEventHandler<HTMLDivElement> = (e) => {\n context.setStartIndex(index);\n context.setIsDragging(true);\n }\n\n /**\n * Drag over event handler\n * @param e Event\n */\n const dragOverHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setActive(context.startIndex - index);\n }\n\n /**\n * Drag leave event handler\n */\n const dragExitHandler: DragEventHandler<HTMLDivElement> = () => {\n setActive(0);\n }\n\n /**\n * Drop event handler\n * @param e Event\n */\n const dropHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n setActive(0);\n context.drop(index);\n context.setIsDragging(false);\n }\n\n /**\n * Touch start event handler\n * @param e Event\n */\n const touchStartHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n const timer = setTimeout(() => {\n context.setStartIndex(index);\n context.setIsDragging(true);\n context.setDragOver(index);\n document.body.style.overflow = 'hidden';\n vibrate(50);\n }, 200);\n \n setTouchTimer(timer);\n };\n\n /**\n * Touch move event handler\n * @param e Event\n * @returns void\n */\n const touchMoveHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n if (context.isDragging) {\n e.preventDefault();\n\n // get the element under the touch point\n const el = document.elementFromPoint(touch.clientX, touch.clientY) as HTMLElement | null;\n const overAttr = el?.closest('[data-drag-index]')?.getAttribute('data-drag-index');\n const overIndex = overAttr != null ? parseInt(overAttr, 10) : null;\n\n // if we know which index we're over, update visual state\n if (overIndex !== null) {\n context.setDragOver(overIndex);\n }\n } else if (touchTimer) {\n clearTimeout(touchTimer);\n setTouchTimer(null);\n }\n };\n\n /**\n * Touch end event handler\n * @param e Event\n */\n const touchEndHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n if (touchTimer) {\n clearTimeout(touchTimer);\n setTouchTimer(null);\n }\n \n if (context.isDragging) {\n context.drop(dragOver);\n vibrate(50);\n context.setIsDragging(false);\n document.body.style.overflow = 'auto';\n }\n };\n\n /** Cleanup touch timer on unmount */\n useEffect(() => {\n return () => {\n if (touchTimer) clearTimeout(touchTimer);\n document.body.style.overflow = 'auto';\n };\n }, [touchTimer]);\n\n /** Update active state based on dragOver changes */\n useEffect(() => {\n if (context.isDragging && dragOver === index) {\n setActive(context.startIndex - index);\n } else {\n setActive(0);\n }\n }, [dragOver, context.startIndex, index, context.isDragging]);\n\n return <Item\n draggable={!showIndicator}\n showIndicator={showIndicator}\n active={active}\n dragging={context.isDragging && context.startIndex === index}\n orientation={orientation}\n data-drag-index={index}\n onDragStart={!showIndicator ? dragStartHandler : undefined}\n onDragOver={dragOverHandler}\n onDragLeave={dragExitHandler}\n onDrop={dropHandler}\n onTouchStart={!showIndicator ? touchStartHandler : undefined}\n onTouchMove={touchMoveHandler}\n onTouchEnd={touchEndHandler}\n onTouchCancel={touchEndHandler}\n >\n {showIndicator && <DragKnob\n draggable\n onDragStart={dragStartHandler}\n onTouchStart={touchStartHandler}\n ><DragIndicator /></DragKnob>}\n <Container>{children}</Container>\n </Item>;\n}\n","import React, { PropsWithChildren, useState } from 'react';\nimport styled from '@emotion/styled';\nimport DragItem from './DragItem';\nimport { ORIENTATION, DragContext } from './types';\n\ntype DragAndDropProps = {\n /** Orientation of the list layout */\n orientation: ORIENTATION;\n /** Drop event handler */\n onDrop: (start: number, end: number) => void;\n /** Shows drag indicator against each list item */\n showIndicator: boolean;\n} & PropsWithChildren<{}>;\n\n/** Container Component */\nconst Container = styled.div<{orientation: ORIENTATION}>`\n flex: 1;\n display: flex;\n position: relative;\n flex-wrap: wrap;\n flex-direction: ${props => props.orientation === ORIENTATION.HORIZONTAL ? 'row' : 'column'};\n`;\n\n/**\n * A drag and drop container component that enables reordering of child elements.\n * \n * @component\n * @example\n * ```tsx\n * <DragAndDrop\n * orientation={ORIENTATION.VERTICAL}\n * onDrop={(start, end) => handleReorder(start, end)}\n * showIndicator={true}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </DragAndDrop>\n * ```\n * \n * @param {DragAndDropProps} props - The component props\n * @param {ORIENTATION} props.orientation - Determines the layout direction (horizontal or vertical). Defaults to VERTICAL.\n * @param {(start: number, end: number) => void} props.onDrop - Callback fired when an item is dropped, receives the start and end indices\n * @param {boolean} props.showIndicator - Whether to display drag indicators for each list item. Defaults to false.\n * @param {React.ReactNode} props.children - Child elements to be rendered as draggable items\n * \n * @returns {JSX.Element} A draggable container with reorderable items\n */\nexport default function DragAndDrop(props: DragAndDropProps) {\n const { orientation, children, onDrop, showIndicator } = props;\n const [startIndex, setStartIndex] = useState<number>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number>(null);\n\n /**\n * Drop handler invoked when a draggable item is released.\n * @param index\n */\n const drop = (index: number) => {\n startIndex !== null && onDrop?.(startIndex, index);\n setStartIndex(null);\n setIsDragging(false);\n }\n\n return (<DragContext.Provider value={{ startIndex, setStartIndex, drop, isDragging, setIsDragging, setDragOver }}>\n <Container orientation={orientation}>\n {React.Children.map(children, (child, index) => (\n <DragItem index={index} orientation={orientation} showIndicator={showIndicator} dragOver={dragOver}>\n {child}\n </DragItem>\n ))}\n </Container>\n </DragContext.Provider>);\n}\n\nDragAndDrop.defaultProps = {\n /** Orientation of the list layout */\n orientation: ORIENTATION.VERTICAL,\n /** Whether to display drag indicators for each list item */\n showIndicator: false,\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport constants from '../../shared/constants';\n\nexport {\n Header as DrawerHeader,\n Body as DrawerBody,\n Footer as DrawerFooter,\n} from '../../shared/styles';\n\nexport enum DRAWER_POSITION {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n BOTTOM = 'BOTTOM',\n}\n\nconst positionStyle = (size: string) => ({\n [DRAWER_POSITION.LEFT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(-100%);`,\n after:'transform: translateX(0%);',\n },\n [DRAWER_POSITION.RIGHT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(100%);`,\n after:'transform: translateX(0%);',\n },\n [DRAWER_POSITION.BOTTOM]: {\n before: `\n position: absolute;\n bottom: 0;\n width: 100%;\n height: ${size || '90vh'};\n transform: translateY(100%);\n border-radius: 15px 15px 0 0; \n `,\n after:'transform: translateX(0%);',\n },\n});\n\nconst DrawerDiv = styled.div<{position: DRAWER_POSITION, size: string}>`\n display: flex;\n flex-direction: column;\n background-color: #fff;\n transition: transform .3s ease;\n box-shadow: var(--modal-shadow, ${constants.MODAL_SHADOW});\n ${props => positionStyle(props.size)[props.position].before}\n\n .nf-layer-enter & {\n transform: translateX(0%);\n ${props => positionStyle(props.size)[props.position].after}\n }\n`;\n\ntype DrawerProps = PropTypes.InferProps<typeof Drawer.propTypes>;\ninterface DrawerState {\n open: boolean,\n}\n\nconst positionMap = {\n [DRAWER_POSITION.LEFT]: LAYER_POSITION.TOP_LEFT,\n [DRAWER_POSITION.RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [DRAWER_POSITION.BOTTOM]: LAYER_POSITION.BOTTOM_LEFT,\n}\n\nexport default class Drawer extends React.Component<React.PropsWithChildren<DrawerProps>, DrawerState> {\n state = {\n open: false,\n }\n\n static propTypes = {\n /** Opens the drawer */\n open: PropTypes.bool.isRequired,\n /** position of the drawer */\n position: PropTypes.oneOf([\n DRAWER_POSITION.LEFT,\n DRAWER_POSITION.RIGHT,\n DRAWER_POSITION.BOTTOM,\n ]),\n /** size of the drawer */\n size: PropTypes.string,\n /** Shows an overlay behind the drawer. */\n overlay: PropTypes.bool,\n /** Closes the drawer on esc */\n closeOnEsc: PropTypes.bool,\n /** Closes the drawer on overlay click */\n closeOnOverlayClick: PropTypes.bool,\n /** Call back function called when the drawer closes. */\n onClose: PropTypes.func,\n }\n\n static defaultProps = {\n overlay: true,\n position: DRAWER_POSITION.LEFT,\n closeOnEsc: true,\n closeOnOverlayClick: true,\n }\n\n static getDerivedStateFromProps(props: DrawerProps) {\n if (props.open) {\n return {\n open: true,\n }\n }\n return null;\n }\n\n private layer: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback: (resp?: any) => void;\n\n private onClose = () => {\n this.setState({\n open: false,\n });\n this.props.onClose && this.props.onClose();\n this.closeCallback = null;\n this.layer = null;\n }\n\n getSnapshotBeforeUpdate(prevProps: DrawerProps) {\n const {\n open, closeOnEsc, closeOnOverlayClick,\n overlay, position, children, size, ...rest } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback && this.closeCallback();\n }\n\n if (!prevProps.open && open) {\n this.layer = LayerManager.renderLayer({\n overlay,\n exitDelay: 300,\n position: positionMap[position],\n closeCallback: this.onClose,\n closeOnEsc,\n closeOnOverlayClick,\n component: (\n <DrawerDiv {...rest} position={position} size={size} onClick={e => e.stopPropagation()}>\n {children}\n </DrawerDiv>\n )\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n }\n }\n\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n \n return null;\n }\n}","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nconst Container = styled.div<PropTypes.InferProps<typeof Group.propTypes>>`\n display: inline-flex;\n border: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n border-radius: 3px;\n margin: 5px;\n\n /* overrides */\n & button, & label {\n margin: 0;\n border: none;\n border-radius: 0;\n border-left: 1px solid var(--border-color, ${constants.BORDER_COLOR});\n box-shadow: none;\n height: 32px;\n }\n\n & > div button {\n border-left: none;\n }\n\n & input, & select {\n border: none;\n height: 32px;\n }\n\n & input, & select {\n border-radius: 0;\n }\n\n & input:active, & select:active {\n box-shadow: none;\n }\n\n & > div > span {\n top: 8px;\n }\n\n /* Handling for first and last child */\n & > *:first-child, & > label:first-child input,\n & > label:first-child select, & > *:first-child label,\n & > *:first-child input {\n border-left: none;\n border-radius: 2px 0 0 2px;\n }\n\n & > *:last-child, & > label:last-child input,\n & > label:last-child select, & > *:last-child label,\n & > *:last-child input {\n border-radius: 0 2px 2px 0;\n }\n\n /* focus */\n & *:focus, & *:focus + span {\n z-index: 1;\n }\n\n &:focus-within, &:hover {\n box-shadow: var(--hover-shadow, ${constants.HOVER_SHADOW});\n }\n\n ${props => props.errorText ? `\n border-color: var(--error, ${constants.ERROR});\n\n & > button, & > label {\n border-color: var(--error, ${constants.ERROR});\n }\n `: ''}\n`;\n\nconst ErrorContainer = styled.div`\n color: var(--error, ${constants.ERROR});\n margin-left: 8px;\n font-size: 12px;\n`;\n\nexport default function Group(props: React.PropsWithChildren<PropTypes.InferProps<typeof Group.propTypes>>) {\n return (\n <>\n <Container {...props}>\n {props.children}\n </Container>\n { props.errorText && <ErrorContainer>{props.errorText}</ErrorContainer> }\n </>\n )\n}\n\nGroup.propTypes = {\n /** Error Message for the group */\n errorText: PropTypes.string,\n}\n","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport default styled.label`\n height: 32px;\n background-color: ${constants.DISABLED_BACKGROUND};\n padding: 0 4px;\n line-height: 32px;\n min-width: 24px;\n text-align: center;\n color: ${constants.BORDER_COLOR};\n\n & > svg {\n height: 24px;\n width: 24px;\n vertical-align: middle;\n fill: currentColor;\n }\n`;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nexport {\n Header as ModalHeader,\n Body as ModalBody,\n Footer as ModalFooter,\n} from '../../shared/styles';\nimport { DialogContainer as ModalContainer } from '../Dialog/Dialog';\n\ntype ModalProps = PropTypes.InferProps<typeof Modal.propTypes>;\n\ninterface ModalState {\n open: boolean,\n}\n\nexport default class Modal extends React.Component<React.PropsWithChildren<ModalProps>, ModalState> {\n state = {\n open: false,\n }\n\n static propTypes = {\n /** Opens the modal */\n open: PropTypes.bool.isRequired,\n /** Closes the modal on esc */\n closeOnEsc: PropTypes.bool,\n /** Closes the modal on overlay click */\n closeOnOverlayClick: PropTypes.bool,\n /** Call back function called when the modal closes. */\n onClose: PropTypes.func,\n }\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n }\n\n static getDerivedStateFromProps(props: ModalProps) {\n if (props.open) {\n return {\n open: true,\n }\n }\n return null;\n }\n\n private layer: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback: (resp?: any) => void;\n\n private onClose = () => {\n this.setState({\n open: false,\n });\n this.props.onClose && this.props.onClose();\n this.closeCallback = null;\n this.layer = null;\n }\n\n getSnapshotBeforeUpdate(prevProps: ModalProps) {\n const { open, closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback && this.closeCallback();\n }\n\n if (!prevProps.open && open) {\n this.layer = LayerManager.renderLayer({\n overlay: true,\n exitDelay: 300,\n position: LAYER_POSITION.DIALOG,\n closeCallback: this.onClose,\n closeOnEsc: closeOnEsc,\n closeOnOverlayClick: closeOnOverlayClick,\n component: (\n <ModalContainer {...rest} onClick={e => e.stopPropagation()} elevated>\n {children}\n </ModalContainer>\n )\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n }\n }\n\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n \n return null;\n }\n}","/** Position for Notification */\nexport enum NOTIFICATION_POSITION {\n TOP_LEFT='TOP_LEFT',\n TOP_RIGHT='TOP_RIGHT',\n BOTTOM_LEFT='BOTTOM_LEFT',\n BOTTOM_RIGHT='BOTTOM_RIGHT',\n};\n\n/** Type of Notifications */\nexport enum NOTIFICATION_TYPE {\n INFO='INFO',\n SUCCESS='SUCCESS',\n DANGER='DANGER',\n WARNING='WARNING',\n}\n\nexport interface NotificationOptions {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /** Duration for the notification in milliseconds */\n duration?: number;\n /** Creates sticky notification */\n sticky?: boolean;\n /** Type of notification */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n}","import styled from '@emotion/styled';\nimport constants from '../../shared/constants';\nimport { Card } from '../Card';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\nconst getEntryAnimation = (position: NOTIFICATION_POSITION) => {\n switch(position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'in-left';\n default:\n return 'in-right';\n }\n}\n\nconst getExitAnimation = (position: NOTIFICATION_POSITION) => {\n switch(position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'out-left';\n default:\n return 'out-right';\n }\n}\n\nconst getBorderColor = (type: NOTIFICATION_TYPE) => {\n switch(type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return `var(--success-light, ${constants.SUCCESS_LIGHT})`;\n case NOTIFICATION_TYPE.DANGER:\n return `var(--error-light, ${constants.ERROR_LIGHT})`;\n case NOTIFICATION_TYPE.WARNING:\n return `var(--warning-light, ${constants.WARNING_LIGHT})`;\n default:\n return `var(--info-light, ${constants.INFO_LIGHT})`;\n }\n}\n\nconst getTitleColor = (type: NOTIFICATION_TYPE) => {\n switch(type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return `var(--success, ${constants.SUCCESS})`;\n case NOTIFICATION_TYPE.DANGER:\n return `var(--error, ${constants.ERROR})`;\n case NOTIFICATION_TYPE.WARNING:\n return `var(--warning, ${constants.WARNING})`;\n case NOTIFICATION_TYPE.INFO:\n return `var(--info, ${constants.INFO})`;\n }\n}\n\nconst getTypeStyle = (type: NOTIFICATION_TYPE) => {\n switch(type) {\n case NOTIFICATION_TYPE.INFO:\n return `color: var(--info, ${constants.INFO})`;\n case NOTIFICATION_TYPE.SUCCESS:\n return `color: var(--success, ${constants.SUCCESS})`;\n case NOTIFICATION_TYPE.DANGER:\n return `color: var(--error, ${constants.ERROR})`;\n case NOTIFICATION_TYPE.WARNING:\n return `color: var(--warning, ${constants.WARNING})`;\n }\n}\n\ninterface NoticeProp extends NotificationOptions {\n position: NOTIFICATION_POSITION,\n}\n\nexport const Container = styled.div<{ position: NOTIFICATION_POSITION }>`\n display: flex;\n flex-direction: ${props =>\n (\n props.position === NOTIFICATION_POSITION.TOP_LEFT ||\n props.position === NOTIFICATION_POSITION.TOP_RIGHT\n ) ? 'column' : 'column-reverse'};\n`;\n\nexport const Notice = styled(Card)<NoticeProp>`\n border-radius: 3px;\n border-left: 4px solid ${props => getBorderColor(props.type)};\n width: 300px;\n display: flex;\n padding: 0 5px 5px 0;\n overflow: hidden;\n animation: ${props => getEntryAnimation(props.position)} .6s ease;\n \n & svg {\n fill: currentColor;\n vertical-align: middle;\n width: 20px;\n height: 20px;\n }\n\n &.leave {\n animation: ${props => getExitAnimation(props.position)} .6s;\n }\n\n @keyframes in-right {\n from {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-right {\n to {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n\n @keyframes in-left {\n from {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-left {\n to {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n`;\n\nexport const Title = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 5px 0;\n font-size: 14px;\n color: ${props => getTitleColor(props.type)};\n display: flex;\n align-items: center;\n`;\n\nexport const FillParent = styled.div`\n flex: 1;\n`;\n\nexport const CloseButton = styled.button`\n background-color: transparent;\n border: none;\n padding: none;\n cursor: pointer;\n\n &:focus {\n box-shadow: 0 0 0 3px var(--primary, ${constants.PRIMARY_LIGHT});\n border-radius: 3px;\n }\n`;\n\nexport const Body = styled.div`\n padding: 5px 5px 5px 0;\n font-size: 14px;\n`;\n\nexport const IconContainer = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 6px 10px;\n ${props => getTypeStyle(props.type)};\n`;\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 5px;\n`;\n","import React from 'react';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\nimport { Close, Info, ReportProblem, ErrorOutline, CheckCircle } from '../../icons';\nimport {\n Container, Notice, Title, IconContainer,\n FillParent, Body, CloseButton, Footer\n} from './style';\nimport { ActionButton } from '../Button';\n\ninterface NotificationManagerProps {\n // Notification Position\n position: NOTIFICATION_POSITION,\n // Callback for when stack is emptied\n onEmpty: () => void;\n}\n\n// Notice prop\ninterface NoticeProp extends NotificationOptions {\n leaving?: boolean,\n}\n\n// Manager state\ninterface NotificationManagerState {\n notices: NoticeProp[],\n}\n\ntype timeouts = {\n [id: string]: NodeJS.Timeout,\n}\n\nconst DEFAULT_DURATION = 5000;\n\n/**\n * Notification Manager class\n */\nclass NotificationManager extends React.Component<NotificationManagerProps, NotificationManagerState> {\n state:NotificationManagerState = {\n notices: [],\n };\n\n // bookkeeping for timeouts\n private timeouts: timeouts = {};\n\n // Set of notification ids\n private set = new Set<string>();\n\n /**\n * Removes a notification from stack if the notification with the given id is found.\n * \n * @param id \n */\n public remove = (id: string) => {\n // Trigger leaving animation.\n this.setState({\n notices: this.state.notices.map(notice => ({\n ...notice,\n leaving: notice.id === id ? true : notice.leaving,\n }))\n });\n this.set.delete(id);\n\n // Remove notification on animation completion.\n setTimeout(() => {\n const notice = this.state.notices.find(notice => notice.id === id);\n if (notice) {\n // call close callback, ignore any errors in callback.\n if (notice.onClose) {\n try {\n notice.onClose();\n } catch (e) {\n console.warn('Error in notification close callback', e.message);\n }\n }\n \n // Remove the notification\n this.setState({\n notices: this.state.notices.filter(notice => notice.id !== id),\n }, () => {\n // Check if the stack is empty and then call the \n // empty callback function.\n if (this.state.notices.length === 0) {\n this.props.onEmpty();\n }\n });\n }\n }, 550);\n }\n\n /**\n * Adds a notification to stack.\n * \n * @param notice\n */\n public add = (notice: NotificationOptions) => {\n // Generate unique id if not provided.\n const id = notice.id || (Math.random() * 10**7).toFixed(0);\n \n // De-dupe on id\n if (!this.set.has(id)) {\n // Add notice to the top of stack.\n this.setState({\n notices: [\n {\n ...notice,\n id\n },\n ...this.state.notices,\n ],\n });\n\n // set timeout for closing the notification.\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(() => this.remove(id), notice.duration || DEFAULT_DURATION);\n }\n\n // Add id to the set.\n this.set.add(id);\n }\n\n return id;\n }\n\n /**\n * Handler for close button click.\n * \n * @param id \n */\n public closeClickHandler = (id: string) => () => {\n this.remove(id);\n }\n\n /**\n * Pause notification when user is hovering over it.\n * \n * @param id\n */\n public pause = (id: string) => () => {\n clearTimeout(this.timeouts[id]);\n }\n\n /**\n * Restart the removal of notification.\n * \n * @param id\n */\n public resume = (id: string) => () => {\n const notice = this.state.notices.find(notice => notice.id === id);\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(() => this.remove(id), DEFAULT_DURATION);\n }\n }\n \n render() {\n return (\n <Container position={this.props.position}>\n {this.state.notices.map(notice => {\n const {\n id, title, description, leaving,\n type = NOTIFICATION_TYPE.INFO, buttonText, buttonClick,\n } = notice;\n return (\n <Notice\n key={id}\n {...notice}\n position={this.props.position}\n className={leaving ? 'leave' : ''}\n onMouseEnter={this.pause(id)}\n onMouseLeave={this.resume(id)}\n >\n <IconContainer type={type}>\n {type === NOTIFICATION_TYPE.INFO && <Info />}\n {type === NOTIFICATION_TYPE.SUCCESS && <CheckCircle />}\n {type === NOTIFICATION_TYPE.WARNING && <ReportProblem />}\n {type === NOTIFICATION_TYPE.DANGER && <ErrorOutline />}\n </IconContainer>\n <FillParent>\n <Title type={type}>\n <FillParent>{title}</FillParent>\n <CloseButton onClick={this.closeClickHandler(id)}>\n <Close />\n </CloseButton>\n </Title>\n <Body>{description}</Body>\n { buttonText && (\n <Footer>\n <ActionButton onClick={() => { buttonClick?.() }}>\n {buttonText}\n </ActionButton>\n </Footer>\n )}\n </FillParent>\n </Notice>\n )\n })}\n </Container>\n )\n }\n}\n\nexport default NotificationManager;\n","import React, { createRef } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport NotificationManager from './NotificationManager';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ntype NotificationProps = PropTypes.InferProps<typeof StoryProps.propTypes>;\n\n/** This component is only used for storybook documentation */\nexport class StoryProps extends React.Component<NotificationProps> {\n static propTypes = {\n /** Title of the notification */\n title: PropTypes.string.isRequired,\n /** Body of the notification */\n description: PropTypes.string.isRequired,\n /** Id for the notification, helps in de-duplication. */\n id: PropTypes.string,\n /** Duration for the notification in milliseconds */\n duration: PropTypes.number,\n /** Creates sticky notification */\n sticky: PropTypes.bool,\n /** Type of notification */\n type: PropTypes.oneOf([\n NOTIFICATION_TYPE.INFO,\n NOTIFICATION_TYPE.SUCCESS,\n NOTIFICATION_TYPE.WARNING,\n NOTIFICATION_TYPE.DANGER,\n ]),\n /** Action button text */\n buttonText: PropTypes.string,\n /** Action button click callback */\n buttonClick: PropTypes.func,\n /** Notification close callback. */\n onClose: PropTypes.func,\n }\n\n static defaultProps = {\n duration: 5000,\n sticky: false,\n type: NOTIFICATION_TYPE.INFO,\n }\n\n render():React.ReactNode {\n return null;\n }\n}\n\n/** Maps notification position to layer position */\nconst positionMap = {\n [NOTIFICATION_POSITION.TOP_LEFT]: LAYER_POSITION.TOP_LEFT,\n [NOTIFICATION_POSITION.TOP_RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [NOTIFICATION_POSITION.BOTTOM_LEFT]: LAYER_POSITION.BOTTOM_LEFT,\n [NOTIFICATION_POSITION.BOTTOM_RIGHT]: LAYER_POSITION.BOTTOM_RIGHT,\n}\n\n/** Notification class */\nclass Notification {\n /** Helps in maintaining single instance for different positions. */\n private containers:Map<NOTIFICATION_POSITION, {\n ref: React.RefObject<NotificationManager>,\n element: HTMLDivElement,\n }> = new Map();\n \n /**\n * Adds a notification\n * \n * @param position \n * @param options \n */\n public add = (position: NOTIFICATION_POSITION, options: NotificationOptions) => {\n let notification;\n if (!this.containers.has(position)) {\n const div = document?.createElement('div');\n const ref = createRef<NotificationManager>();\n const [Component] = LayerManager.renderLayer({\n closeOnEsc: false,\n closeOnOverlayClick: false,\n position: positionMap[position],\n alwaysOnTop: true,\n component: (\n <NotificationManager\n ref={ref}\n position={position}\n onEmpty={() => this.destroy(position)}\n />\n )\n });\n this.containers.set(position, {\n ref,\n element: div,\n });\n ReactDOM.render(<Component />, div);\n notification = ref;\n } else {\n notification = this.containers.get(position).ref;\n }\n return notification.current.add(options);\n }\n\n /**\n * Removes a notification\n * \n * @param position \n * @param id \n */\n public remove = (position: NOTIFICATION_POSITION, id: string) => {\n if (this.containers.has(position)) {\n this.containers.get(position).ref.current.remove(id);\n }\n }\n\n /**\n * Destroys entire stack of notifications.\n * \n * @param position \n */\n public destroy = (position: NOTIFICATION_POSITION) => {\n const notification = this.containers.get(position);\n ReactDOM.unmountComponentAtNode(notification.element);\n this.containers.delete(position);\n }\n}\n\n/** Export a singleton instance */\nexport default new Notification();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\nimport constants from '../../shared/constants';\n\nconst SpinnerDiv = styled.div<SpinnerProp>`\n border: 4px solid var(--primary, ${constants.PRIMARY});\n border-top: 4px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n border-radius: 50%;\n width: ${props => props.size}px;\n height: ${props => props.size}px;\n margin: 0 auto;\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n`;\n\nfunction Spinner(props: SpinnerProp) {\n return <SpinnerDiv {...props} />\n}\n\ntype SpinnerProp = PropTypes.InferProps<typeof Spinner.propTypes>;\n\nSpinner.propTypes = {\n /** Spinner's size */\n size: PropTypes.number\n}\n\nSpinner.defaultProps = {\n size: 30,\n};\n\nexport default Spinner;\n","import React, { Children, useState } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\nimport constants from '../../shared/constants';\nimport { Badge, BADGE_TYPE } from '../Badge';\nimport { Ellipsis } from '../../shared/styles';\n\ntype StepperProps = {\n active: number;\n onStepClick?: (index: number) => void;\n children: any;\n};\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n`;\n\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-bottom: 1px solid var(--border-light-color, ${constants.BORDER_LIGHT_COLOR});\n\n @media (min-width: 601px) {\n &::before {\n position: absolute;\n top: 25px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: var(--light-grey, ${constants.LIGHT_GREY});\n content: ' ';\n z-index: 0;\n }\n }\n \n & > * {\n z-index: 1;\n }\n`;\n\nconst HeaderButton = styled.button<{active: boolean}>`\n border: none;\n padding: 16px 24px 16px 16px;\n font-size: 16px;\n cursor: pointer;\n background-color: ${props => props.active\n ? `var(--border-light-color, ${constants.BORDER_LIGHT_COLOR})`\n : `var(--background, ${constants.BACKGROUND})`};\n font-weight: ${props => props.active ? 'bold' : 'normal'};\n overflow: hidden;\n display:flex;\n align-items: center;\n\n &:disabled {\n cursor: not-allowed;\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n }\n\n &:enabled:hover, &:focus {\n background-color: var(--primary-light, ${constants.PRIMARY_LIGHTER});\n }\n\n @media (max-width: 600px) {\n & {\n display: none;\n }\n }\n`;\n\nconst MobileHeader = styled.div`\n padding: 16px;\n font-size: 16px;\n line-height: 18px;\n align-items: center;\n font-weight: bold;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n @media (min-width: 601px) {\n & {\n display: none;\n }\n }\n`;\n\nexport default function Stepper(props: StepperProps) {\n const [active, setActive] = useState(props.active);\n const { children, onStepClick } = props;\n\n const stepClickHandler = (index: number) => () => {\n setActive(index);\n onStepClick?.(index);\n }\n \n const getBadgeType = (index: number, completed: boolean, disabled: boolean) => {\n if (disabled) {\n return BADGE_TYPE.DISABLED;\n } else if (index === active) {\n return BADGE_TYPE.PRIMARY;\n } else if (completed) {\n return BADGE_TYPE.SUCCESS;\n }\n return BADGE_TYPE.DISABLED;\n }\n\n return (\n <Container>\n <Header>\n {Children.map(children, (child, index) => (\n <>\n <HeaderButton active={index === active} type='button' disabled={child.props.disabled} onClick={stepClickHandler(index)}>\n <Badge inline type={getBadgeType(index, child.props.completed, child.props.disabled)} />\n <Ellipsis>\n {child.props.name}\n </Ellipsis>\n </HeaderButton>\n </>\n ))}\n <MobileHeader>\n <span>{children[active].props.name}</span>\n <Badge inline type={BADGE_TYPE.PRIMARY}>{active + 1} of {children.length}</Badge>\n </MobileHeader>\n </Header>\n {children[active]}\n </Container>\n );\n}\n\nStepper.propTypes = {\n /** Index of currently active step */\n active: PropTypes.number,\n /** Callback function for click event on a step */\n onStepClick: PropTypes.func,\n}\n\nStepper.defaultProps = {\n active: 0,\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\n\ninterface StepProps {\n /** Name of the step to be displayed in the header */\n name: string;\n /** Disables the step */\n disabled?: boolean;\n /** Marks the step as completed */\n completed?: boolean;\n}\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\nexport default function Step(props: React.PropsWithChildren<StepProps>) {\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} />;\n}\n\nStep.defaultProps = {\n disabled: false,\n completed: false,\n}\n","import React, { useState, Children, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport PropTypes from 'prop-types';\nimport constants from '../../shared/constants';\n\nconst Button = styled.button<{ active: boolean }>`\n background-color: transparent;\n border: none;\n padding: 8px 12px;\n font-size: 14px;\n border-radius: 3px 3px 0 0;\n border-bottom: ${(props) => (props.active ? `3px solid var(--primary, ${constants.PRIMARY})` : 'none')};\n color: ${(props) => (props.active ? `var(--primary, ${constants.PRIMARY})` : '#000')};\n cursor: pointer;\n\n &:hover, &:focus {\n background-color: var(--primary-lighter, #cfe9ff);\n border-bottom: ${(props) => (props.active ? `3px solid var(--primary, ${constants.PRIMARY})` : `3px solid var(--primary, ${constants.PRIMARY})`)};\n }\n\n &[disabled] {\n background-color: var(--disabled-background, ${constants.DISABLED_BACKGROUND});\n color: var(--disabled, ${constants.DISABLED});\n border-bottom: 3px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n }\n`;\n\nconst ButtonContainer = styled.div`\n border-bottom: 1px solid var(--disabled-border, ${constants.DISABLED_BORDER});\n margin-bottom: 5px;\n position: relative;\n`;\n\nconst TabBody = styled.div`\n min-height: 150px;\n`;\n\ninterface ITabsProps {\n active?: number;\n onChange?: (index: number) => void,\n props?: any,\n bodyProps?: any,\n children: any;\n};\n\nexport default function Tabs(props: ITabsProps) {\n const [active, setActive] = useState(props.active);\n const switchTab = (index: number) => () => setActive(index);\n const { children } = props;\n\n useEffect(() => {\n setActive(props.active);\n props.onChange && props.onChange(props.active);\n }, [props.active]);\n\n return (\n <>\n <ButtonContainer {...props.props}>\n {\n Children.map(children, (child, index) => (\n <Button\n type=\"button\"\n active={active === index}\n onClick={switchTab(index)}\n disabled={child.props.disabled}\n >\n {child.props.name}\n </Button>\n ))\n }\n </ButtonContainer>\n <TabBody {...props.bodyProps}>\n {children[active]}\n </TabBody>\n </>\n );\n}\n\nTabs.propTypes = {\n /** Active Tab Index */\n active: PropTypes.number,\n /** OnChange event handler */\n onChange: PropTypes.func,\n /** Props for div that contains tab buttons */\n props: PropTypes.object,\n /** Props for div that contains tab body */\n bodyProps: PropTypes.object,\n}\n\n\nTabs.defaultProps ={\n active: 0,\n}","import React, { PropsWithChildren } from 'react';\nimport PropTypes from 'prop-types';\n\nconst Tab = (props: PropsWithChildren<{name: string, disabled: boolean}>) => {\n const { children } = props;\n return <>{children}</>;\n};\n\nTab.propTypes = {\n /** Name of the tab. This shown in the tab's button */\n name: PropTypes.string.isRequired,\n /** If the tab is disabled */\n disabled: PropTypes.bool,\n}\n\nTab.defaultProps = {\n disabled: false,\n}\n\nexport default Tab;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport constants from '../../shared/constants';\n\nexport interface ToastOptions {\n text: string;\n buttonText?: string;\n buttonClick?: () => void;\n duration?: number;\n type?: TOAST_TYPE;\n}\n\nexport enum TOAST_TYPE {\n NORMAL='NORMAL',\n INFO='INFO',\n SUCCESS='SUCCESS',\n WARNING='WARNING',\n DANGER='DANGER',\n}\n\nconst getBackgroundColor = (type: TOAST_TYPE) => {\n switch(type) {\n case TOAST_TYPE.INFO:\n return `var(--info, ${constants.INFO})`;\n case TOAST_TYPE.SUCCESS:\n return `var(--success, ${constants.SUCCESS})`;\n case TOAST_TYPE.WARNING:\n return `var(--warning, ${constants.WARNING})`;\n case TOAST_TYPE.DANGER:\n return `var(--error, ${constants.ERROR})`;\n case TOAST_TYPE.NORMAL:\n return `var(--toast, ${constants.TOAST})`;\n }\n}\n\nconst ToastContainer = styled(Card)<{ type: TOAST_TYPE }>`\n box-sizing: border-box;\n border-radius: 3px;\n padding: 12px;\n background-color: ${props => getBackgroundColor(props.type)};\n color: #fff;\n margin: 20px;\n font-size: 14px;\n line-height: 20px;\n transform: translateY(100%);\n transition: transform .3s ease;\n width: 344px;\n display: flex;\n align-items: center;\n\n & svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n @media (max-width: 480px) {\n & {\n margin: 0;\n width: 100vw;\n border-radius: 0;\n }\n }\n\n .nf-layer-enter & {\n transform: translateY(0%);\n }\n`;\n\nconst TextContainer = styled.div`\n flex: 1;\n`;\n\nconst CloseContainer = styled.button`\n background-color: transparent;\n color: var(--primary, ${constants.PRIMARY_LIGHT});\n padding: 6px 10px;\n border: none;\n border-radius: 3px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:focus {\n background-color: rgba(255, 255, 255, 0.1);\n }\n`;\n\nconst DEFAULT_DURATION = 2000;\n\nclass Toast {\n private element: HTMLDivElement;\n private toast: ReturnType<typeof LayerManager.renderLayer>;\n private timeout: NodeJS.Timeout;\n\n constructor() {\n this.element = document?.createElement('div');\n }\n\n public remove = () => {\n if (this.toast) {\n this.toast[1]();\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.toast = null\n\n setTimeout(() => {\n if (!this.toast) {\n ReactDOM.unmountComponentAtNode(this.element);\n }\n }, 300);\n }\n\n /**\n * Pause toast when user is hovering over it.\n * \n * @param id\n */\n public pause = () => {\n clearTimeout(this.timeout);\n }\n\n /**\n * Restart the removal of toast.\n * \n * @param id\n */\n public resume = (options: ToastOptions) => () => {\n this.timeout = setTimeout(() => {\n this.remove();\n }, options.duration || DEFAULT_DURATION);\n }\n\n public add(options: ToastOptions) {\n const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;\n this.remove();\n this.toast = LayerManager.renderLayer({\n exitDelay: 300,\n closeOnEsc: false,\n closeOnOverlayClick: false,\n alwaysOnTop: true,\n position: LAYER_POSITION.BOTTOM_LEFT,\n component: (\n <ToastContainer\n {...options}\n type={type}\n elevated\n onMouseEnter={this.pause}\n onMouseLeave={this.resume(options)}\n >\n <TextContainer>{text}</TextContainer>\n {buttonText && (\n <CloseContainer onClick={buttonClick} type='button'>\n {buttonText}\n </CloseContainer>\n )}\n </ToastContainer>\n )\n });\n const Component = this.toast[0];\n ReactDOM.render(<Component />, this.element);\n\n this.timeout = setTimeout(() => {\n this.remove();\n }, duration || DEFAULT_DURATION);\n }\n}\n\nexport default new Toast();\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport constants from '../../shared/constants';\n\nexport enum TOOLTIP_POSITION {\n TOP = 'TOP',\n BOTTOM = 'BOTTOM',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT'\n};\n\nconst positionStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n left: 0;\n transform: translateX(-50%) scale(0);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n right: 0;\n transform: translateX(50%) scale(0);\n `,\n [TOOLTIP_POSITION.TOP]: `\n top: 0;\n transform: translateY(-10px) scale(0);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n bottom: 0;\n transform: translateY(10px) scale(0);\n `,\n};\n\nconst positionHoverStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n transform: translateX(-100%) scale(1);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n transform: translateX(100%) scale(1);\n `,\n [TOOLTIP_POSITION.TOP]: `\n transform: translateY(-25px) scale(1);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n transform: translateY(25px) scale(1);\n `,\n};\n\nconst TooltipDiv = styled.div<{ position: TOOLTIP_POSITION }>`\n position: absolute;\n background-color: var(--tooltip-color, ${constants.TOOLTIP_COLOR});\n padding: 5px;\n color: #fff;\n border-radius: 3px;\n transition: transform .3s ease;\n font-size: 12px;\n z-index: 1;\n ${props => positionStyle[props.position]}\n`;\n\nconst TooltipContainer = styled.div<{ position: TOOLTIP_POSITION }>`\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &:hover ${TooltipDiv} {\n ${props => positionHoverStyle[props.position]}\n }\n`;\n\nexport default function Tooltip(props: React.PropsWithChildren<TooltipProps>) {\n const { children, position, ...rest } = props;\n\n return (\n <TooltipContainer position={position} {...rest}>\n {children}\n <TooltipDiv position={position}>{rest.tooltipText}</TooltipDiv>\n </TooltipContainer>\n );\n}\n\ntype TooltipProps = PropTypes.InferProps<typeof Tooltip.propTypes>;\n\nTooltip.propTypes = {\n /** Text to show in the tooltip */\n tooltipText: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\n /** Position of the tooltip */\n position: PropTypes.oneOf([\n TOOLTIP_POSITION.TOP,\n TOOLTIP_POSITION.LEFT,\n TOOLTIP_POSITION.RIGHT,\n TOOLTIP_POSITION.BOTTOM\n ]),\n}\n\nTooltip.defaultProps = {\n position: TOOLTIP_POSITION.BOTTOM\n}\n"],"names":["useState","_jsx","_Fragment","Children","cloneElement","Header","Body","Footer","CheckCircle","_jsxs","BADGE_TYPE","Step","css","Container","Button","KEY_CODES","useEffect","LayerManager","createRef","DialogHeader","DialogBody","DialogFooter","Label","TextField","ErrorContainer","Input","ArrowContainer","useCallback","createContext","useContext","POPOVER_POSITION","positionMap","useRef","ORIENTATION","DragIndicator","DRAWER_POSITION","positionStyle","ModalContainer","NOTIFICATION_POSITION","NOTIFICATION_TYPE","DEFAULT_DURATION","Info","ReportProblem","ErrorOutline","TOAST_TYPE","TOOLTIP_POSITION"],"mappings":"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","x_google_ignoreList":[19]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Accordion/Accordion.tsx","../src/icons/CheckCircle.tsx","../src/icons/ExpandMore.tsx","../src/icons/FiberManualRecord.tsx","../src/icons/Close.tsx","../src/icons/Info.tsx","../src/icons/ReportProblem.tsx","../src/icons/ErrorOutline.tsx","../src/icons/DragIndicator.tsx","../src/shared/constants.ts","../src/shared/styles.ts","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Accordion/AccordionStep.tsx","../src/components/Button/Button.tsx","../src/components/Button/LinkButton.tsx","../src/components/Button/RaisedButton.tsx","../src/components/Button/ActionButton.tsx","../src/components/Button/IconButton.tsx","../src/components/Chip/Chip.tsx","../src/components/DragAndDrop/types.ts","../src/components/DragAndDrop/DragItem.tsx","../src/components/DragAndDrop/DragAndDrop.tsx","../src/components/ChipInput/ChipInput.tsx","../src/shared/LayerManager.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/AlertDialog.tsx","../src/components/Dialog/ConfirmDialog.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextArea.tsx","../src/components/Input/Select.tsx","../src/components/Input/Checkbox.tsx","../src/components/Input/Toggle.tsx","../src/components/Input/Radio.tsx","../src/components/Input/RadioButton.tsx","../src/components/Menu/MenuContext.ts","../src/components/Menu/Menu.tsx","../src/components/Menu/MenuItem.tsx","../src/components/Popover/Popover.tsx","../src/components/Input/Dropdown.tsx","../src/components/Dialog/PromptDialog.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Groups/Group.tsx","../src/components/Groups/GroupLabel.tsx","../src/components/Modal/Modal.tsx","../src/components/Notification/types.ts","../src/components/Notification/style.ts","../src/components/Notification/NotificationManager.tsx","../src/components/Notification/Notification.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Stepper/Step.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tabs/Tab.tsx","../src/components/Toast/Toast.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { useState, Children, cloneElement, PropsWithChildren, isValidElement } from 'react';\n\nfunction Accordion(props: PropsWithChildren<AccordionProps>) {\n const [active, setActive] = useState(props.active);\n\n const onStepClick = (index: number, disabled: boolean) => () => {\n if (disabled) {\n return;\n }\n\n const newIndex = index !== active ? index : -1;\n if (props.onStepClick) {\n props.onStepClick(newIndex);\n } else {\n setActive(newIndex);\n }\n };\n\n return (\n <>\n {Children.map(props.children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n return cloneElement(child, {\n open: active === index,\n onStepClick: onStepClick(index, child.props.disabled),\n } as Partial<typeof child.props>);\n })}\n </>\n );\n}\n\ntype AccordionProps = {\n /**\n * Currently opened step\n * @default -1\n */\n active?: number;\n /** Handler for click event on a step */\n onStepClick?: (index: number) => void;\n};\n\nexport default Accordion;\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0zm0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M16.59 7.58L10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function ExpandMore(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"18px\" height=\"18px\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\" />\n </svg>\n );\n}\n","export default function FiberManualRecord(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M24 24H0V0h24v24z\" fill=\"none\" />\n <circle cx=\"12\" cy=\"12\" r=\"8\" />\n </svg>\n );\n}\n","export default function Close(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </svg>\n );\n}\n","export default function CheckCircle(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" fill=\"currentColor\" {...props}>\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n );\n}\n","export enum THEME_CONSTANTS {\n PRIMARY = '#1f7ac5',\n PRIMARY_LIGHT = '#64baff',\n PRIMARY_LIGHTER = '#cfe9ff',\n BACKDROP_COLOR = '#2681da80',\n INFO = '#1f7ac5ff',\n INFO_LIGHT = '#64baffff',\n SUCCESS = '#1a835f',\n SUCCESS_LIGHT = '#80eac6',\n WARNING = '#916b01',\n WARNING_LIGHT = '#ffba00',\n ERROR = '#bb2828',\n ERROR_LIGHT = '#f1a5a5',\n BORDER_COLOR = '#555555',\n TOAST = '#5f5f5f',\n TOOLTIP_COLOR = 'rgba(0,0,0,0.6)',\n BORDER_LIGHT_COLOR = '#eeeeee',\n BACKGROUND = '#ffffff',\n DISABLED_BACKGROUND = '#fafafa',\n DISABLED_BORDER = '#aaa',\n LIGHT_GREY = '#ccc',\n DISABLED = '#737373',\n TEXT_COLOR_LIGHT = '#fff',\n TEXT_COLOR_DARK = '#000',\n SHADOW = '0px 1px 3px 0px rgba(0,0,0,0.1), 0px 1px 2px 0px rgba(0,0,0,0.06)',\n HOVER_SHADOW = '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n MODAL_SHADOW = '0px 8px 17px 2px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12), 0px 5px 5px -3px rgba(0,0,0,0.2)',\n}\n\nexport enum THEME_NAME {\n PRIMARY = '--nfui-primary',\n PRIMARY_LIGHT = '--nfui-primary-light',\n PRIMARY_LIGHTER = '--nfui-primary-lighter',\n INFO = '--nfui-info',\n INFO_LIGHT = '--nfui-info-light',\n SUCCESS = '--nfui-success',\n SUCCESS_LIGHT = '--nfui-success-light',\n WARNING = '--nfui-warning',\n WARNING_LIGHT = '--nfui-warning-light',\n ERROR = '--nfui-error',\n ERROR_LIGHT = '--nfui-error-light',\n BORDER_COLOR = '--nfui-border-color',\n TOAST = '--nfui-toast',\n TOOLTIP_COLOR = '--nfui-tooltip-color',\n BORDER_LIGHT_COLOR = '--nfui-border-light-color',\n BACKGROUND = '--nfui-background',\n DISABLED_BACKGROUND = '--nfui-disabled-background',\n DISABLED_BORDER = '--nfui-disabled-border',\n LIGHT_GREY = '--nfui-light-grey',\n DISABLED = '--nfui-disabled',\n TEXT_COLOR_LIGHT = '--nfui-text-color-light',\n TEXT_COLOR_DARK = '--nfui-text-color-dark',\n SHADOW = '--nfui-shadow',\n HOVER_SHADOW = '--nfui-hover-shadow',\n MODAL_SHADOW = '--nfui-modal-shadow',\n BACKDROP_COLOR = '--nfui-backdrop-color',\n}\n\nexport const themeNameMap: Record<THEME_NAME, THEME_CONSTANTS> = {\n [THEME_NAME.PRIMARY]: THEME_CONSTANTS.PRIMARY,\n [THEME_NAME.PRIMARY_LIGHT]: THEME_CONSTANTS.PRIMARY_LIGHT,\n [THEME_NAME.PRIMARY_LIGHTER]: THEME_CONSTANTS.PRIMARY_LIGHTER,\n [THEME_NAME.INFO]: THEME_CONSTANTS.INFO,\n [THEME_NAME.INFO_LIGHT]: THEME_CONSTANTS.INFO_LIGHT,\n [THEME_NAME.SUCCESS]: THEME_CONSTANTS.SUCCESS,\n [THEME_NAME.SUCCESS_LIGHT]: THEME_CONSTANTS.SUCCESS_LIGHT,\n [THEME_NAME.WARNING]: THEME_CONSTANTS.WARNING,\n [THEME_NAME.WARNING_LIGHT]: THEME_CONSTANTS.WARNING_LIGHT,\n [THEME_NAME.ERROR]: THEME_CONSTANTS.ERROR,\n [THEME_NAME.ERROR_LIGHT]: THEME_CONSTANTS.ERROR_LIGHT,\n [THEME_NAME.BACKDROP_COLOR]: THEME_CONSTANTS.BACKDROP_COLOR,\n [THEME_NAME.BORDER_COLOR]: THEME_CONSTANTS.BORDER_COLOR,\n [THEME_NAME.TOAST]: THEME_CONSTANTS.TOAST,\n [THEME_NAME.TOOLTIP_COLOR]: THEME_CONSTANTS.TOOLTIP_COLOR,\n [THEME_NAME.BORDER_LIGHT_COLOR]: THEME_CONSTANTS.BORDER_LIGHT_COLOR,\n [THEME_NAME.BACKGROUND]: THEME_CONSTANTS.BACKGROUND,\n [THEME_NAME.DISABLED_BACKGROUND]: THEME_CONSTANTS.DISABLED_BACKGROUND,\n [THEME_NAME.DISABLED_BORDER]: THEME_CONSTANTS.DISABLED_BORDER,\n [THEME_NAME.LIGHT_GREY]: THEME_CONSTANTS.LIGHT_GREY,\n [THEME_NAME.DISABLED]: THEME_CONSTANTS.DISABLED,\n [THEME_NAME.TEXT_COLOR_LIGHT]: THEME_CONSTANTS.TEXT_COLOR_LIGHT,\n [THEME_NAME.TEXT_COLOR_DARK]: THEME_CONSTANTS.TEXT_COLOR_DARK,\n [THEME_NAME.SHADOW]: THEME_CONSTANTS.SHADOW,\n [THEME_NAME.HOVER_SHADOW]: THEME_CONSTANTS.HOVER_SHADOW,\n [THEME_NAME.MODAL_SHADOW]: THEME_CONSTANTS.MODAL_SHADOW,\n};\n\nexport const getThemeValue = (key: THEME_NAME) => {\n return `var(${key}, ${themeNameMap[key]})`;\n};\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\nexport const Ellipsis = styled.span`\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n`;\n\nexport const Header = styled.h1`\n padding: 10px 15px;\n line-height: 26px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n font-size: 16px;\n font-weight: bold;\n`;\n\nexport const Body = styled.div`\n padding: 20px 15px;\n flex: 1;\n overflow: auto;\n`;\n\nexport const Footer = styled.div`\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport enum BADGE_TYPE {\n PRIMARY = 'primary',\n SUCCESS = 'success',\n WARNING = 'warning',\n DANGER = 'danger',\n DISABLED = 'disabled',\n}\n\nconst BadgeSpan = styled.span<BadgeProps>`\n background-color: ${(props) => {\n switch (props.type) {\n case BADGE_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n\n case BADGE_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n\n case BADGE_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n\n case BADGE_TYPE.DISABLED:\n return getThemeValue(THEME_NAME.DISABLED);\n\n default:\n return getThemeValue(THEME_NAME.PRIMARY);\n }\n }};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 10px;\n padding: ${(props) => (props.children ? '3px 10px' : '4px')};\n display: inline-block;\n min-height: 4px;\n min-width: 4px;\n font-size: 12px;\n margin: ${(props) => (props.inline ? '0 5px' : '0')};\n\n ${(props) =>\n !props.inline && 'position: absolute; top: 0; right: 0; transform: translate(50%, -50%);'};\n`;\n\ntype BadgeProps = {\n /**\n * Display badge inline or overlay on parent component\n * @default false\n */\n inline?: boolean;\n /** Type of badge\n * @default BADGE_TYPE.PRIMARY\n */\n type?: BADGE_TYPE;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nfunction BadgeComponent(props: BadgeProps, ref: React.Ref<HTMLSpanElement>) {\n return <BadgeSpan {...props} ref={ref} />;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, React.PropsWithChildren<BadgeProps>>(\n BadgeComponent,\n);\n\nexport default Badge;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\ntype CardProps = {\n /** Shows a shadow around the card to show elevation */\n elevated?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst StyledCard = styled.div<CardProps>`\n border-radius: 10px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n ${(props) =>\n props.elevated\n ? `box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};`\n : `box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};`}\n margin: 5px;\n overflow: auto;\n position: relative;\n`;\n\nfunction CardComponent(props: CardProps, ref: React.Ref<HTMLDivElement>) {\n return <StyledCard {...props} ref={ref} />;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(CardComponent);\nexport default Card;\n","import React, { useState, useId, useRef, useEffect } from 'react';\nimport styled from '@emotion/styled';\nimport { FiberManualRecord, ExpandMore } from '../../icons';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\nimport { Card } from '../Card';\n\nconst Step = styled(Card)<{ open?: boolean; completed?: boolean }>`\n transition: all 0.6s ease;\n overflow: visible;\n\n ${(props) => props.open && `margin: 20px 5px;`}\n`;\n\nconst StepHeader = styled.button<{ open?: boolean; disabled?: boolean }>`\n padding: 20px 15px;\n display: flex;\n justify-content: space-between;\n background: none;\n border: none;\n border-radius: 10px;\n width: 100%;\n font-size: inherit;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n & input {\n appearance: none;\n margin: 0;\n }\n\n ${(props) =>\n props.open && `border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};`}\n\n ${(props) => props.disabled && `color: ${getThemeValue(THEME_NAME.DISABLED)};`}\n`;\n\nconst HeaderContainer = styled.div<{ open?: boolean; completed?: boolean }>`\n display: flex;\n align-items: center;\n min-width: 40px;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n fill: ${(props) =>\n props.open\n ? getThemeValue(THEME_NAME.PRIMARY)\n : props.completed\n ? getThemeValue(THEME_NAME.SUCCESS)\n : getThemeValue(THEME_NAME.LIGHT_GREY)};\n transform: ${(props) => (props.open ? 'scale(0.8)' : 'scale(0.6)')};\n transition: all 0.3s ease;\n min-width: 24px;\n }\n`;\n\nconst ExpandContainer = styled.div<{ open?: boolean }>`\n display: flex;\n align-items: center;\n\n & svg {\n vertical-align: top;\n margin-right: 10px;\n transition: all 0.6s ease;\n fill: currentColor;\n }\n\n ${(props) => (props.open ? `& svg { transform: rotate(180deg); }` : '')}\n`;\n\nconst StepBody = styled.div<{ height: number }>`\n transition: all 0.6s ease;\n overflow: hidden;\n height: ${(props) => props.height || 0}px;\n`;\n\nconst AccordionBadge = styled(Badge)`\n margin-right: 15px;\n`;\n\nexport const AccordionStepBody = styled.div`\n padding: 20px 15px;\n`;\n\nexport const AccordionStepFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 10px 15px;\n border-top: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n`;\n\n/** Props for `AccordionStep` component */\ninterface AccordionStepProps {\n /**\n * If the step has been marked as completed\n * @default false\n */\n completed?: boolean;\n /** If the step is disabled\n * @default false\n */\n disabled?: boolean;\n /** Header content for the step */\n header: React.ReactNode;\n /** Error text to display as a badge in the header */\n errorText?: React.ReactNode;\n /** If the step is expanded */\n open?: boolean;\n /** Click handler for the step header */\n onStepClick?: React.MouseEventHandler<HTMLButtonElement>;\n}\n\nfunction AccordionStepComponent(\n props: React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const [height, setHeight] = useState(0);\n const {\n open,\n disabled = false,\n header,\n errorText,\n completed = false,\n onStepClick,\n children,\n ...restProps\n } = props;\n\n // Generate unique IDs for ARIA relationships\n const headerId = useId();\n const regionId = useId();\n\n const contentRef = useRef<HTMLDivElement | null>(null);\n\n // Measure content height when `open` or children change.\n useEffect(() => {\n const el = contentRef.current;\n setHeight(el?.scrollHeight || 0);\n }, [open, children]);\n\n return (\n <Step {...restProps} ref={ref} open={open} elevated={open} completed={completed}>\n <StepHeader\n open={open}\n disabled={disabled}\n onClick={onStepClick}\n aria-expanded={open ? 'true' : 'false'}\n aria-controls={regionId}\n id={headerId}\n >\n <HeaderContainer open={open} completed={completed}>\n <FiberManualRecord aria-hidden=\"true\" />\n <Ellipsis>{header}</Ellipsis>\n </HeaderContainer>\n <ExpandContainer open={open}>\n {errorText && (\n <AccordionBadge inline type={BADGE_TYPE.DANGER}>\n {errorText}\n </AccordionBadge>\n )}\n <ExpandMore aria-hidden=\"true\" />\n </ExpandContainer>\n </StepHeader>\n <StepBody\n ref={contentRef}\n height={open ? height : 0}\n role=\"region\"\n id={regionId}\n aria-labelledby={headerId}\n aria-hidden={open ? 'false' : 'true'}\n >\n {open && children}\n </StepBody>\n </Step>\n );\n}\n\nconst AccordionStep = React.forwardRef<\n HTMLDivElement,\n React.PropsWithChildren<AccordionStepProps> & React.HTMLAttributes<HTMLDivElement>\n>(AccordionStepComponent);\n\nexport default AccordionStep;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ButtonProps = {\n /**\n * Type of Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction ButtonComponent(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledButton ref={ref} type={type} {...rest} />;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(ButtonComponent);\n\nexport default Button;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledLinkButton = styled.button`\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n height: 32px;\n cursor: pointer;\n background-color: transparent;\n border: none;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 0 12px;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover,\n &:focus {\n text-decoration: underline;\n }\n\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype LinkButtonProps = {\n /**\n * Type of Link Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst LinkButtonComponent = (props: LinkButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledLinkButton ref={ref} type={type} {...rest} />;\n};\n\nconst LinkButton = React.forwardRef<HTMLButtonElement, LinkButtonProps>(LinkButtonComponent);\nexport default LinkButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledRaisedButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n color: inherit;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transform: translateY(-2px);\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n margin-left: -6px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:active {\n transform: translateY(0);\n box-shadow: ${getThemeValue(THEME_NAME.SHADOW)};\n }\n`;\n\ntype RaisedButtonProps = {\n /**\n * Type of Raised Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nconst RaisedButtonComponent = (props: RaisedButtonProps, ref: React.Ref<HTMLButtonElement>) => {\n const { type = 'button', ...rest } = props;\n\n return <StyledRaisedButton ref={ref} type={type} {...rest} />;\n};\n\nconst RaisedButton = React.forwardRef<HTMLButtonElement, RaisedButtonProps>(RaisedButtonComponent);\nexport default RaisedButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nconst StyledActionButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 5px;\n height: 32px;\n min-width: 100px;\n font-size: 14px;\n text-align: center;\n padding: 0 12px;\n cursor: pointer;\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n margin-left: -6px;\n }\n\n &:enabled:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype ActionButtonProps = {\n /**\n * Type of Action Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction ActionButtonComponent(props: ActionButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledActionButton ref={ref} type={type} {...rest} />;\n}\n\nconst ActionButton = React.forwardRef<HTMLButtonElement, ActionButtonProps>(ActionButtonComponent);\n\nexport default ActionButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst StyledIconButton = styled.button`\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 5px;\n height: 32px;\n font-size: 14px;\n text-align: center;\n padding: 0 3px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n margin: 5px;\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n & svg {\n vertical-align: middle;\n height: 24px;\n width: 24px;\n fill: currentColor;\n }\n\n &:enabled:hover {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:focus {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:disabled {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n &:disabled > svg {\n fill: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype IconButtonProps = {\n /**\n * Type of Icon Button\n * @default 'button'\n */\n type?: 'button' | 'submit' | 'reset';\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction IconButtonComponent(props: IconButtonProps, ref: React.Ref<HTMLButtonElement>) {\n const { type = 'button', ...rest } = props;\n\n return <StyledIconButton ref={ref} type={type} {...rest} />;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(IconButtonComponent);\n\nexport default IconButton;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { Close } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface ChipProps {\n /** Label for the chip */\n label: string;\n /** Callback when the close button is clicked */\n onCloseClick?: (e: React.KeyboardEvent | React.MouseEvent) => void;\n /** Aria label for the close button. Defaults to \"Remove {label}\" */\n closeButtonAriaLabel?: string;\n}\n\nconst Container = styled.span`\n padding: 5px;\n padding-left: 15px;\n border-radius: 16px;\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n display: inline-flex;\n margin: 5px;\n line-height: 20px;\n align-items: center;\n`;\n\nconst Button = styled.button`\n color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-radius: 50%;\n border: none;\n padding: 4px;\n display: inline-flex;\n margin-left: 5px;\n\n &:focus-within {\n outline: 4px solid ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n`;\n\nfunction ChipComponent(\n props: ChipProps & React.HTMLAttributes<HTMLSpanElement>,\n ref: React.Ref<HTMLSpanElement>,\n) {\n const { label, onCloseClick, closeButtonAriaLabel, ...rest } = props;\n\n const keyUpHandler: React.KeyboardEventHandler<HTMLSpanElement> = (e) => {\n if (e.key === 'Backspace' || e.key === 'Delete') {\n onCloseClick?.(e);\n }\n };\n\n const buttonKeyDownHandler: React.KeyboardEventHandler<HTMLButtonElement> = (e) => {\n // Stop propagation to prevent DragAndDrop from capturing Space/Enter\n if (e.key === ' ' || e.key === 'Spacebar' || e.key === 'Enter') {\n e.stopPropagation();\n }\n };\n\n return (\n <Container {...rest} ref={ref} onKeyUp={keyUpHandler}>\n {label}\n <Button\n onClick={onCloseClick}\n onKeyDown={buttonKeyDownHandler}\n aria-label={closeButtonAriaLabel ?? `Remove ${label}`}\n >\n <Close height={16} width={16} />\n </Button>\n </Container>\n );\n}\n\nconst Chip = React.forwardRef(ChipComponent);\nexport default Chip;\n","import { createContext } from 'react';\n\nexport enum ORIENTATION {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n\nexport const DragContext = createContext<{\n startIndex: number | null;\n setStartIndex: (value: number) => void;\n drop: (index: number | null) => void;\n onDrop: (start: number, end: number) => void;\n cancel: () => void;\n startGrab: (index: number) => void;\n isDragging: boolean;\n setIsDragging: (value: boolean) => void;\n setDragOver: (value: number) => void;\n i18n: {\n itemAriaLabelTemplate: string;\n dragHandleAriaLabel: string;\n grabbedAnnouncementTemplate: string;\n movedAnnouncementTemplate: string;\n droppedAnnouncementTemplate: string;\n cancelledAnnouncementTemplate: string;\n replacePlaceholders: (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ) => string;\n };\n} | null>(null);\n","import {\n DragEventHandler,\n PropsWithChildren,\n useContext,\n useState,\n useEffect,\n TouchEventHandler,\n useRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { DragIndicator } from '../../icons';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { ORIENTATION, DragContext } from './types';\n\ninterface DragItemProps {\n /** Position index of the draggable item */\n index: number;\n /** Orientation of the drag operation (VERTICAL or HORIZONTAL) */\n orientation: ORIENTATION;\n /** Whether to show a drag handle indicator instead of making the entire item draggable */\n showIndicator: boolean;\n /** The index of the item currently being dragged over */\n dragOver: number | null;\n /** Total number of items in the list */\n totalItems: number;\n /** Callback to set announcement for screen readers */\n setAnnouncement: (message?: string) => void;\n}\n\n/** Styled component for the draggable item container */\nconst Item = styled.div<{\n active: number | null;\n orientation: ORIENTATION;\n showIndicator: boolean;\n dragging: boolean;\n}>`\n cursor: ${(props) => (props.showIndicator ? 'default' : 'move')};\n display: flex;\n user-select: ${(props) => (props.showIndicator ? 'auto' : 'none')};\n border-top: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-bottom: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active !== null && props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-left: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-right: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL &&\n props.active !== null &&\n props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n opacity: ${(props) => (props.dragging ? 0.5 : 1)};\n border-radius: 10px;\n\n &:focus {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n\n &:focus-visible {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/** Styled component for the drag handle indicator */\nconst DragKnob = styled.div`\n padding-top: 8px;\n cursor: move;\n touch-action: none;\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n`;\n\n/** Container for the children */\nconst Container = styled.div`\n flex: 1;\n`;\n\n/**\n * A draggable item component that supports both mouse and touch interactions for drag-and-drop functionality.\n *\n * @component\n * @example\n * ```tsx\n * <DragItem\n * index={0}\n * orientation={ORIENTATION.VERTICAL}\n * showIndicator={true}\n * dragOver={-1}\n * >\n * <div>Draggable content</div>\n * </DragItem>\n * ```\n *\n * @param props - The component props\n * @param props.index - The position index of this item in the draggable list\n * @param props.orientation - The orientation of the drag operation (VERTICAL or HORIZONTAL)\n * @param props.showIndicator - Whether to show a drag handle indicator instead of making the entire item draggable\n * @param props.dragOver - The index of the item currently being dragged over\n * @param props.children - The content to be rendered inside the draggable item\n *\n * @remarks\n * - Uses the DragContext to manage drag state across items\n * - Provides visual feedback with borders during drag operations\n * - Supports haptic feedback (vibration) on touch devices\n * - For touch devices, requires a 200ms hold before drag starts\n * - When showIndicator is true, only the drag handle can initiate drag operations\n *\n * @returns A draggable item with optional drag indicator and visual feedback\n */\nexport default function DragItem(props: PropsWithChildren<DragItemProps>) {\n const { index, orientation, children, showIndicator, dragOver, totalItems, setAnnouncement } =\n props;\n const [active, setActive] = useState<number | null>(0);\n const touchTimerRef = useRef<NodeJS.Timeout | null>(null);\n const context = useContext(DragContext);\n\n /**\n * Vibrate the device for haptic feedback\n * @param duration Duration of the vibration in milliseconds\n */\n const vibrate = (duration: number) => {\n if (navigator.vibrate) {\n navigator.vibrate(duration);\n }\n };\n\n /**\n * Drag start event handler\n * @param e Event\n */\n const dragStartHandler: DragEventHandler<HTMLDivElement> = () => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n };\n\n /**\n * Drag over event handler\n * @param e Event\n */\n const dragOverHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (context && context.startIndex !== null) {\n setActive(context.startIndex - index);\n }\n };\n\n /**\n * Drag leave event handler\n */\n const dragExitHandler: DragEventHandler<HTMLDivElement> = () => {\n setActive(0);\n };\n\n /**\n * Drop event handler\n * @param e Event\n */\n const dropHandler: DragEventHandler<HTMLDivElement> = (e) => {\n e.preventDefault();\n setActive(0);\n context?.drop(index);\n context?.setIsDragging(false);\n };\n\n /**\n * Touch start event handler\n * @param e Event\n */\n const touchStartHandler: TouchEventHandler<HTMLDivElement> = () => {\n // Clear any existing timer first\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n }\n\n touchTimerRef.current = setTimeout(() => {\n context?.setStartIndex(index);\n context?.setIsDragging(true);\n context?.setDragOver(index);\n document.body.style.overflow = 'hidden';\n vibrate(50);\n }, 200);\n };\n\n /**\n * Touch move event handler\n * @param e Event\n * @returns void\n */\n const touchMoveHandler: TouchEventHandler<HTMLDivElement> = (e) => {\n const touch = e.touches[0];\n if (!touch) return;\n\n if (context?.isDragging) {\n e.preventDefault();\n\n // get the element under the touch point\n const el = document.elementFromPoint(\n touch.clientX,\n touch.clientY,\n ) as HTMLElement | null;\n const overAttr = el?.closest('[data-drag-index]')?.getAttribute('data-drag-index');\n const overIndex = overAttr != null ? parseInt(overAttr, 10) : null;\n\n // if we know which index we're over, update visual state\n if (overIndex !== null) {\n context?.setDragOver(overIndex);\n }\n } else if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n };\n\n /**\n * Touch end event handler\n * @param e Event\n */\n const touchEndHandler: TouchEventHandler<HTMLDivElement> = () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n\n if (context?.isDragging) {\n context?.drop(dragOver);\n vibrate(50);\n context?.setIsDragging(false);\n document.body.style.overflow = 'auto';\n }\n };\n\n /**\n * Keyboard navigation handler for reordering items\n * @param e Keyboard event\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const isVertical = orientation === ORIENTATION.VERTICAL;\n const moveUp = isVertical ? 'ArrowUp' : 'ArrowLeft';\n const moveDown = isVertical ? 'ArrowDown' : 'ArrowRight';\n\n const isGrabbed = context?.isDragging && context?.startIndex === index;\n\n // Space to grab/drop\n if (e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n if (isGrabbed) {\n // Drop at current position\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n } else {\n // Grab item\n context?.startGrab(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.grabbedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n }\n // Enter to drop\n else if (e.key === 'Enter' && isGrabbed) {\n e.preventDefault();\n context?.drop(index);\n setAnnouncement(\n context?.i18n.replacePlaceholders(context?.i18n.droppedAnnouncementTemplate, {\n position: index + 1,\n }),\n );\n }\n // Escape to cancel\n else if (e.key === 'Escape' && isGrabbed) {\n e.preventDefault();\n context?.cancel();\n setAnnouncement(context?.i18n.cancelledAnnouncementTemplate);\n }\n // Arrow keys to move while grabbed\n else if (isGrabbed) {\n if (e.key === moveUp && index > 0 && context.startIndex !== null) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index - 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n } else if (\n e.key === moveDown &&\n index < totalItems - 1 &&\n context.startIndex !== null\n ) {\n e.preventDefault();\n // Move without dropping - just reorder and update startIndex\n const newIndex = index + 1;\n context.onDrop(context.startIndex, newIndex);\n context.setStartIndex(newIndex);\n setAnnouncement(\n context.i18n.replacePlaceholders(context.i18n.movedAnnouncementTemplate, {\n position: newIndex + 1,\n }),\n );\n }\n }\n };\n\n /** Cleanup touch timer and body overflow on unmount */\n useEffect(() => {\n return () => {\n if (touchTimerRef.current) {\n clearTimeout(touchTimerRef.current);\n touchTimerRef.current = null;\n }\n document.body.style.overflow = 'auto';\n };\n }, []);\n\n /** Update active state based on dragOver changes */\n useEffect(() => {\n if (context?.isDragging && context?.startIndex !== null && dragOver === index) {\n setActive(context?.startIndex - index);\n } else {\n setActive(0);\n }\n }, [dragOver, context?.startIndex, index, context?.isDragging]);\n\n return (\n <Item\n draggable={!showIndicator}\n showIndicator={showIndicator}\n active={active}\n dragging={!!(context?.isDragging && context.startIndex === index)}\n orientation={orientation}\n data-drag-index={index}\n tabIndex={0}\n role=\"listitem\"\n aria-label={context?.i18n.replacePlaceholders(context.i18n.itemAriaLabelTemplate, {\n position: index + 1,\n })}\n aria-grabbed={context?.isDragging && context.startIndex === index}\n onKeyDown={handleKeyDown}\n onDragStart={!showIndicator ? dragStartHandler : undefined}\n onDragOver={dragOverHandler}\n onDragLeave={dragExitHandler}\n onDrop={dropHandler}\n onTouchStart={!showIndicator ? touchStartHandler : undefined}\n onTouchMove={touchMoveHandler}\n onTouchEnd={touchEndHandler}\n onTouchCancel={touchEndHandler}\n >\n {showIndicator && (\n <DragKnob\n draggable\n role=\"button\"\n aria-label={context?.i18n.dragHandleAriaLabel}\n onDragStart={dragStartHandler}\n onTouchStart={touchStartHandler}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n >\n <DragIndicator />\n </DragKnob>\n )}\n <Container>{children}</Container>\n </Item>\n );\n}\n","import React, { PropsWithChildren, useState } from 'react';\nimport styled from '@emotion/styled';\nimport DragItem from './DragItem';\nimport { ORIENTATION, DragContext } from './types';\n\ntype DragAndDropProps = {\n /**\n * Orientation of the list layout\n * @default ORIENTATION.VERTICAL\n */\n orientation?: ORIENTATION;\n /** Drop event handler */\n onDrop: (start: number, end: number) => void;\n /** Shows drag indicator against each list item\n * @default false\n */\n showIndicator?: boolean;\n /**\n * i18n: Template for item aria-label. Placeholders: {:position}, {:grabKey}, {:moveKeys}, {:dropKey}, {:altDropKey}\n * @default 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop'\n */\n itemAriaLabelTemplate?: string;\n /** i18n: Aria label for drag handle\n * @default 'Drag to reorder'\n */\n dragHandleAriaLabel?: string;\n /**\n * i18n: Template for grabbed announcement. Placeholders: {:position}, {:moveKeys}, {:dropKey}, {:altDropKey}, {:cancelKey}\n * @default 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel'\n */\n grabbedAnnouncementTemplate?: string;\n /**\n * i18n: Template for moved announcement. Placeholders: {:position}\n * @default 'Item moved to position {:position}'\n */\n movedAnnouncementTemplate?: string;\n /**\n * i18n: Template for dropped announcement. Placeholders: {:position}\n * @default 'Item dropped at position {:position}'\n */\n droppedAnnouncementTemplate?: string;\n /**\n * i18n: Template for cancelled announcement\n * @default 'Drag cancelled, item restored to original position'\n */\n cancelledAnnouncementTemplate?: string;\n} & PropsWithChildren<unknown>;\n\n/** Container Component */\nconst Container = styled.div<{ orientation: ORIENTATION }>`\n flex: 1;\n display: flex;\n position: relative;\n flex-wrap: wrap;\n flex-direction: ${(props) => (props.orientation === ORIENTATION.HORIZONTAL ? 'row' : 'column')};\n`;\n\n/** Visually hidden but accessible to screen readers */\nconst VisuallyHidden = styled.div`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n`;\n\n/**\n * A drag and drop container component that enables reordering of child elements.\n *\n * @component\n * @example\n * ```tsx\n * <DragAndDrop\n * orientation={ORIENTATION.VERTICAL}\n * onDrop={(start, end) => handleReorder(start, end)}\n * showIndicator={true}\n * >\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * </DragAndDrop>\n * ```\n *\n * @param props - The component props\n * @param props.orientation - Determines the layout direction (horizontal or vertical). Defaults to VERTICAL.\n * @param props.onDrop - Callback fired when an item is dropped, receives the start and end indices\n * @param props.showIndicator - Whether to display drag indicators for each list item. Defaults to false.\n * @param props.children - Child elements to be rendered as draggable items\n *\n * @returns A draggable container with reorderable items\n */\nfunction DragAndDropComponent(props: DragAndDropProps, ref: React.Ref<HTMLDivElement>) {\n const {\n orientation = ORIENTATION.VERTICAL,\n children,\n onDrop,\n showIndicator = false,\n itemAriaLabelTemplate = 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel = 'Drag to reorder',\n grabbedAnnouncementTemplate = 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate = 'Item moved to position {:position}',\n droppedAnnouncementTemplate = 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate = 'Drag cancelled, item restored to original position',\n ...rest\n } = props;\n const [startIndex, setStartIndex] = useState<number | null>(null);\n const [originalIndex, setOriginalIndex] = useState<number | null>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number | null>(null);\n const [announcement, setAnnouncement] = useState<string | undefined>('');\n const childrenArray = React.Children.toArray(children);\n const totalItems = childrenArray.length;\n\n /**\n * Replace placeholders in i18n templates\n */\n const replacePlaceholders = (\n template: string,\n data: {\n position?: number;\n grabKey?: string;\n dropKey?: string;\n altDropKey?: string;\n cancelKey?: string;\n moveKeys?: string;\n },\n ): string => {\n return template\n .replace(/\\{:position\\}/g, String(data.position ?? ''))\n .replace(/\\{:grabKey\\}/g, data.grabKey ?? 'Space')\n .replace(/\\{:dropKey\\}/g, data.dropKey ?? 'Space')\n .replace(/\\{:altDropKey\\}/g, data.altDropKey ?? 'Enter')\n .replace(/\\{:cancelKey\\}/g, data.cancelKey ?? 'Escape')\n .replace(\n /\\{:moveKeys\\}/g,\n data.moveKeys ??\n (orientation === ORIENTATION.VERTICAL ? 'Arrow Up/Down' : 'Arrow Left/Right'),\n );\n };\n\n // i18n configuration object\n const i18n = {\n itemAriaLabelTemplate:\n itemAriaLabelTemplate ??\n 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n dragHandleAriaLabel: dragHandleAriaLabel ?? 'Drag to reorder',\n grabbedAnnouncementTemplate:\n grabbedAnnouncementTemplate ??\n 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n movedAnnouncementTemplate:\n movedAnnouncementTemplate ?? 'Item moved to position {:position}',\n droppedAnnouncementTemplate:\n droppedAnnouncementTemplate ?? 'Item dropped at position {:position}',\n cancelledAnnouncementTemplate:\n cancelledAnnouncementTemplate ?? 'Drag cancelled, item restored to original position',\n replacePlaceholders,\n };\n\n /**\n * Drop handler invoked when a draggable item is released.\n * @param index\n */\n const drop = (index: number | null) => {\n if (startIndex !== null && index !== null) {\n onDrop?.(startIndex, index);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Cancel handler to restore item to original position\n */\n const cancel = () => {\n if (originalIndex !== null && startIndex !== null && startIndex !== originalIndex) {\n onDrop?.(startIndex, originalIndex);\n }\n setStartIndex(null);\n setOriginalIndex(null);\n setIsDragging(false);\n };\n\n /**\n * Start grab handler to track original position\n */\n const startGrab = (index: number) => {\n setStartIndex(index);\n setOriginalIndex(index);\n setIsDragging(true);\n };\n\n return (\n <>\n <DragContext.Provider\n value={{\n startIndex,\n setStartIndex,\n drop,\n onDrop,\n cancel,\n startGrab,\n isDragging,\n setIsDragging,\n setDragOver,\n i18n,\n }}\n >\n <Container {...rest} ref={ref} orientation={orientation} role=\"list\">\n {React.Children.map(childrenArray, (child, index) => (\n <DragItem\n index={index}\n orientation={orientation}\n showIndicator={showIndicator}\n dragOver={dragOver}\n totalItems={totalItems}\n setAnnouncement={setAnnouncement}\n >\n {child}\n </DragItem>\n ))}\n </Container>\n </DragContext.Provider>\n <VisuallyHidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst DragAndDrop = React.forwardRef(DragAndDropComponent);\nexport default DragAndDrop;\n","import React, { useImperativeHandle, useEffect, useId, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Chip from '../Chip/Chip';\nimport { DragAndDrop, ORIENTATION } from '../DragAndDrop';\n\n// Prop types definition\ninterface ChipInputProps {\n /** Label for the field */\n label: string;\n /** Error message for the field */\n errorText?: string;\n /**\n * Values to display as chips\n * @default []\n */\n value?: string[];\n /** Callback when chips change */\n onChange?: (newValue: string[]) => void;\n /**\n * Aria label for the close button on chip. Defaults to \"Remove {:label}\"\n * @default \"Remove {:label}\"\n */\n closeButtonAriaLabel?: string;\n /**\n * Announcement text when a chip is added. Defaults to \"{:label} was added\"\n * @default \"{:label} was added\"\n */\n addedAnnouncementTemplate?: string;\n /**\n * Announcement text when a chip is removed. Defaults to \"{:label} was removed\"\n * @default \"{:label} was removed\"\n */\n removedAnnouncementTemplate?: string;\n}\n\n// Label component for the ChipInput\nconst Label = styled.label<{\n text: string;\n touched?: boolean;\n errorText?: string;\n required?: boolean;\n}>`\n display: inline-flex;\n flex-direction: column;\n flex: 1;\n position: relative;\n margin: 10px 5px;\n color: inherit;\n padding: 0 8px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:has(:focus),\n &:has(:active) {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:has(:focus) > span,\n &:has(:active) > span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:has(:disabled) {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:has(:disabled) > span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:has(:focus:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:has(:invalid) {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n \n &:has(:invalid) > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n ${(props) =>\n props.required\n ? `& > span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }`\n : ''}\n \n\n & > input {\n border: none;\n outline: none;\n line-height: 30px;\n min-height: 30px;\n max-width: 95%;\n }\n\n /** Label Animation */\n & > span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n &:has(:focus) > span,\n &:has(:placeholder-shown) > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n\n ${(props) =>\n props.text !== ''\n ? `\n & > span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n`;\n\n// Error message container\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\n// Visually hidden but accessible to screen readers\nconst VisuallyHidden = styled.ul`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n\n & li {\n list-style: none;\n }\n`;\n\n/**\n * A chip input component that allows users to add and remove chips (tags) by typing and pressing Enter.\n * @component\n * @example\n * ```tsx\n * <ChipInput\n * value={['tag1', 'tag2']}\n * onChange={(newTags) => console.log(newTags)}\n * label=\"Add tags\"\n * errorText=\"At least one tag is required\"\n * />\n * ```\n */\nfunction ChipInputComponent(\n props: ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>,\n ref: React.Ref<HTMLInputElement | null>,\n) {\n const {\n value: propValue = [],\n closeButtonAriaLabel = `Remove {:label}`,\n addedAnnouncementTemplate = '{:label} was added',\n removedAnnouncementTemplate = '{:label} was removed',\n } = props;\n\n const [text, setText] = useState('');\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState<string[]>(propValue || []);\n const InputRef = React.useRef<HTMLInputElement>(null);\n const [announcement, setAnnouncement] = useState('');\n const errorId = useId();\n\n // Forward the underlying input element.\n useImperativeHandle(ref, () => InputRef.current);\n\n /**\n * Replace {:label} placeholder in template string\n */\n const replacePlaceholder = (\n template: string | undefined,\n label: string,\n ): string | undefined => {\n if (!template) return undefined;\n return template.replace(/\\{:label\\}/g, label);\n };\n\n // Sync internal value with props.value\n useEffect(() => {\n if (Array.isArray(propValue)) {\n setValue(propValue);\n }\n }, [propValue]);\n\n /**\n * Update the chip values and notify changes.\n * @param newValue The new array of chip values\n */\n const updateValue = (newValue: string[]) => {\n const deduped = Array.from(new Set(newValue));\n setValue(deduped);\n props.onChange?.(deduped);\n };\n\n /**\n * Marks the input as touched on focus.\n * @param e React focus event\n */\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n /**\n * Change handler for the input field.\n * @param e React change event\n */\n const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n setText(e.target.value);\n };\n\n /**\n * Adds a new chip on Enter key press.\n * @param e React keyboard event\n */\n const handleKeyUp: React.KeyboardEventHandler<HTMLInputElement> = (e) => {\n if (e.key === 'Enter' && text.trim() !== '' && InputRef.current?.validity.valid) {\n const newValue = [...value, text.trim()];\n updateValue(newValue);\n setText('');\n setAnnouncement(replacePlaceholder(addedAnnouncementTemplate, text.trim())!);\n }\n };\n\n /**\n * Removes a chip from the list.\n * @param chipToRemove The chip value to remove\n */\n const removeChip = (chipToRemove: string) => {\n const newValue = value.filter((chip) => chip !== chipToRemove);\n updateValue(newValue);\n setAnnouncement(replacePlaceholder(removedAnnouncementTemplate, chipToRemove)!);\n };\n\n /**\n * Moves a chip from one position to another.\n * @param start The starting index of the item to move\n * @param end The ending index where the item should be placed\n */\n const onDrop = (start: number, end: number) => {\n // Clone existing elements\n const newItems = [...value];\n // Remove the element to be moved\n const item = newItems.splice(start, 1);\n // Add it back at the required position\n newItems.splice(end, 0, item[0]);\n // Update\n updateValue(newItems);\n };\n\n // Render the component\n return (\n <>\n <Label\n text={text}\n touched={touched}\n errorText={props.errorText}\n required={props.required}\n >\n <input\n {...props}\n ref={InputRef}\n value={text}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n required={props.required && value.length === 0}\n aria-required={props.required}\n aria-invalid={!!props.errorText}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <div>\n {value?.length > 0 && (\n <DragAndDrop orientation={ORIENTATION.HORIZONTAL} onDrop={onDrop}>\n {value.map((chip) => (\n <Chip\n key={chip}\n label={chip}\n onCloseClick={() => removeChip(chip)}\n closeButtonAriaLabel={replacePlaceholder(\n closeButtonAriaLabel,\n chip,\n )}\n />\n ))}\n </DragAndDrop>\n )}\n </div>\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n <VisuallyHidden aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </VisuallyHidden>\n </>\n );\n}\n\nconst ChipInput = React.forwardRef<\n HTMLInputElement,\n ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>\n>(ChipInputComponent);\n\nexport default ChipInput;\n","import React, { ForwardRefExoticComponent, RefAttributes, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from './constants';\n\n/** Enums for layer position on screen. */\nexport enum LAYER_POSITION {\n TOP_LEFT,\n TOP_CENTER,\n TOP_RIGHT,\n BOTTOM_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n DIALOG,\n}\n\ninterface LayerConfig {\n /** Show an overlay */\n overlay?: boolean;\n /** Element to render inside the layer. */\n component: JSX.Element | null;\n /** Position of the layer */\n position?: LAYER_POSITION;\n /** Delay for exit */\n exitDelay?: number;\n /** Close layer on `esc` key press. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. */\n closeOnOverlayClick?: boolean;\n /** Callback called when modal closes */\n closeCallback?: (resp?: unknown) => void;\n /** Layer is created with max z-index */\n alwaysOnTop?: boolean;\n}\n\n/** Default value of config */\nconst defaultConfig: LayerConfig = {\n closeOnEsc: true,\n overlay: false,\n position: LAYER_POSITION.TOP_LEFT,\n component: null,\n exitDelay: 0,\n closeOnOverlayClick: true,\n alwaysOnTop: false,\n};\n\n/** Metadata of each layer */\ninterface Layer {\n id: string;\n config: LayerConfig;\n element: HTMLDivElement;\n}\n\n/** Styles for each position */\nconst POSITION_STYLE: Record<LAYER_POSITION, string> = {\n [LAYER_POSITION.TOP_LEFT]: 'top: 0; left: 0;',\n [LAYER_POSITION.TOP_CENTER]: 'top: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.TOP_RIGHT]: 'top: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.BOTTOM_LEFT]: 'bottom: 0; left: 0;',\n [LAYER_POSITION.BOTTOM_CENTER]: 'bottom: 0; left: 50%; justify-content: center;',\n [LAYER_POSITION.BOTTOM_RIGHT]: 'bottom: 0; right: 0; justify-content: flex-end;',\n [LAYER_POSITION.DIALOG]: 'top: 0; left: 0; justify-content: center; align-items: center;',\n};\n\n/** Layer container component. */\nconst Container = styled.div<LayerConfig & { zIndex: number }>`\n position: fixed;\n display: flex;\n opacity: 0;\n transition: opacity 0.3s ease;\n ${(props) => POSITION_STYLE[props.position as LAYER_POSITION]}\n ${(props) =>\n props.overlay &&\n `\n width: 100%;\n height: 100vh;\n background-color: ${getThemeValue(THEME_NAME.BACKDROP_COLOR)};\n backdrop-filter: blur(0px);\n pointer-events: all;\n `}\n z-index: ${(props) => props.zIndex};\n\n .nf-layer-enter & {\n opacity: 1;\n ${(props) =>\n props.overlay &&\n `\n backdrop-filter: blur(3px);\n `}\n }\n`;\n\n/** Key code for different keys. */\nconst KEY_CODES = {\n ESC: 27,\n};\n\n/**\n * This is a shared helper class which manages the z-index of each layer.\n * If a component needs to be rendered in a different layer then this class\n * should be used. It internally maintains the stack of opened layer and each\n * `renderLayer` call will push a new layer in stack.\n *\n * This way we need not worry about the z-index and can freely keep on creating\n * new layers. The staring layer z-index is 10000. Leaving enough z-index for the\n * user if they desires so.\n *\n * @important Usage Pattern\n * To avoid creating duplicate layers (especially in React Strict Mode or Next.js),\n * always call `renderLayer` only once - either in a lifecycle method (like `componentDidUpdate`)\n * or in an imperative method (like `open()`).\n *\n * @example\n * // ❌ Don't call renderLayer in render() method\n * render() {\n * if (this.state.show) {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... }); // Creates new layer on every render\n * return <Component />;\n * }\n * }\n *\n * @example\n * // ✅ Do call renderLayer once in a method and store the component\n * open() {\n * const [Component, closeFn] = LayerManager.renderLayer({ ... });\n * this.setState({ LayerComponent: Component });\n * }\n *\n * render() {\n * const { LayerComponent } = this.state;\n * return LayerComponent ? <LayerComponent /> : null;\n * }\n */\nclass LayerManager {\n /** Layer stack */\n private layers: Layer[] = [];\n /** z-index of the next layer */\n private nextIndex = 0;\n private keyupHandler!: (e: KeyboardEvent) => void;\n private timeoutIds = new Map<string, number>(); // Track timeouts\n\n /**\n * Constructor simply registers a event listener on body to\n * react to esc key press.\n */\n constructor() {\n if (typeof document !== 'undefined') {\n // Store handler reference for cleanup\n this.keyupHandler = (e) => {\n if (this.layers.length && e.keyCode === KEY_CODES.ESC) {\n const lastLayer = this.layers.slice(-1)[0];\n if (lastLayer.config.closeOnEsc !== false) {\n this.unmount(lastLayer);\n }\n }\n };\n document.body.addEventListener('keyup', this.keyupHandler);\n }\n }\n\n // Add cleanup method\n public destroy = () => {\n if (typeof document !== 'undefined' && this.keyupHandler) {\n document.body.removeEventListener('keyup', this.keyupHandler);\n }\n // Clear all pending timeouts\n this.timeoutIds.forEach((id) => clearTimeout(id));\n this.timeoutIds.clear();\n // Clean up remaining layers\n this.layers.forEach((layer) => {\n if (document.body.contains(layer.element)) {\n document.body.removeChild(layer.element);\n }\n });\n this.layers = [];\n };\n\n /**\n * Un-mounts a layer.\n *\n * It first adds a class 'nf-layer-exit' and then un-mounts the\n * layer after the `exitDelay` mentioned in the layer config.\n * This class will help component in triggering the entry animation.\n *\n * @param layer\n */\n private unmount = (layer: Layer, resp?: unknown) => {\n layer.element.setAttribute('class', 'nf-layer-exit');\n const index = this.layers.findIndex((item) => item === layer);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n\n const timeoutId = window.setTimeout(() => {\n this.timeoutIds.delete(layer.id);\n try {\n layer.config.closeCallback?.(resp);\n } catch (err) {\n if (err instanceof Error) {\n console.warn(err.message);\n } else {\n console.warn(err);\n }\n }\n // Clear reference to help GC\n layer.config.component = null;\n }, layer.config.exitDelay);\n\n this.timeoutIds.set(layer.id, timeoutId);\n };\n\n private Empty = () => {\n return null;\n };\n\n /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [React.forwardRef(this.Empty), () => {}];\n }\n\n // Merge default config with the provided config.\n const layerConfig = {\n ...defaultConfig,\n ...config,\n };\n\n // Get the z-index for the new layer\n const currentIndex = layerConfig.alwaysOnTop ? 2147483647 : 10000 + this.nextIndex;\n const className = layerConfig.alwaysOnTop ? 'nf-layer-manager-top' : 'nf-layer-manager';\n\n // Create a unique ID for tracking this layer\n const layerId = `${className}-${currentIndex + this.nextIndex}`;\n\n // Always increment for next layer\n this.nextIndex += 1;\n\n const overlayClickHandler = () => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer && layer.config.closeOnOverlayClick !== false) {\n this.unmount(layer);\n }\n };\n\n const closeFn = (resp?: unknown) => {\n const layer = this.layers.find((l) => l.id === layerId);\n if (layer) {\n this.unmount(layer, resp);\n }\n };\n\n const LayerContainer = (\n props: React.HTMLAttributes<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const [divElement, setDivElement] = React.useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n // Create the div element only once when component mounts\n const div = document.createElement('div');\n div.setAttribute('class', className);\n div.setAttribute('id', layerId);\n document.body.appendChild(div);\n\n // Add layer to stack\n const currentLayer = {\n id: layerId,\n config: layerConfig,\n element: div,\n };\n this.layers.push(currentLayer);\n\n setDivElement(div);\n // Add entry animation class after a short delay\n setTimeout(() => {\n div.setAttribute('class', 'nf-layer-enter');\n }, 10);\n\n // Track elements modified for accessibility\n const modifiedElements: Array<{\n element: Element;\n hadAriaHidden: boolean;\n previousValue: string | null;\n }> = [];\n let originalBodyOverflow: string | null = null;\n let originalBodyPosition: string | null = null;\n let originalBodyWidth: string | null = null;\n let originalBodyTop: string | null = null;\n let scrollY = 0;\n\n // Apply aria-hidden to siblings and body scroll lock for overlay modals\n if (layerConfig.overlay) {\n // Hide all body children except this layer portal, scripts, and styles\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach((child) => {\n if (\n child !== div &&\n child.className !== 'nf-layer-manager-top' &&\n child.tagName !== 'SCRIPT' &&\n child.tagName !== 'STYLE'\n ) {\n const hadAriaHidden = child.hasAttribute('aria-hidden');\n const previousValue = child.getAttribute('aria-hidden');\n\n // Only set aria-hidden if not already hidden\n if (previousValue !== 'true') {\n child.setAttribute('aria-hidden', 'true');\n modifiedElements.push({\n element: child,\n hadAriaHidden,\n previousValue,\n });\n }\n }\n });\n\n // Prevent body scroll on iOS\n scrollY = window.scrollY;\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPosition = document.body.style.position;\n originalBodyWidth = document.body.style.width;\n originalBodyTop = document.body.style.top;\n\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n document.body.style.width = '100%';\n document.body.style.top = `-${scrollY}px`;\n }\n\n // Cleanup function - remove div when component unmounts\n return () => {\n // Restore aria-hidden attributes\n modifiedElements.forEach(({ element, hadAriaHidden, previousValue }) => {\n if (document.body.contains(element)) {\n if (hadAriaHidden && previousValue !== null) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n }\n });\n\n // Restore body scroll\n if (layerConfig.overlay) {\n document.body.style.overflow = originalBodyOverflow || '';\n document.body.style.position = originalBodyPosition || '';\n document.body.style.width = originalBodyWidth || '';\n document.body.style.top = originalBodyTop || '';\n window.scrollTo(0, scrollY);\n }\n\n if (document.body.contains(div)) {\n document.body.removeChild(div);\n }\n // Remove from layers array\n const index = this.layers.findIndex((layer) => layer.id === layerId);\n if (index !== -1) {\n this.layers.splice(index, 1);\n }\n };\n }, []); // Empty dependency array - run only once\n\n if (!divElement) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <Container\n {...props}\n ref={ref}\n onClick={overlayClickHandler}\n zIndex={currentIndex}\n {...layerConfig}\n >\n {layerConfig.component}\n </Container>,\n divElement,\n );\n };\n\n // Return callback which will trigger the un-mount.\n return [\n React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(LayerContainer),\n closeFn,\n ];\n };\n}\n\n// Return the instance of the class to create a Singleton.\nexport default new LayerManager();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport const DialogContainer = styled(Card)`\n max-width: 768px;\n max-height: 80vh;\n transform: scale(0);\n opacity: 0;\n transition: all 0.3s ease;\n\n .nf-layer-enter & {\n opacity: 1;\n transform: scale(1);\n }\n\n .nf-layer-exit & {\n opacity: 0;\n transform: scale(0);\n }\n`;\n\nexport {\n Header as DialogHeader,\n Body as DialogBody,\n Footer as DialogFooter,\n} from '../../shared/styles';\n\ninterface DialogOptions {\n /** Flag to close dialog on `esc` click. Default value is true. */\n closeOnEsc?: boolean;\n /** Close layer overlay is clicked. Default value is true. */\n closeOnOverlayClick?: boolean;\n}\n\ninterface DialogState {\n show: boolean;\n LayerComponent?: React.ComponentType | null;\n}\n\nclass Dialog extends React.Component<\n React.PropsWithChildren<DialogOptions> & React.HTMLAttributes<HTMLDivElement>,\n DialogState\n> {\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n private closeDialog: ((resp?: unknown) => void) | null = null;\n private onCloseFn: ((resp?: unknown) => void) | null = null;\n private lastFocusedElement: HTMLElement | null = null;\n private dialogRef = React.createRef<HTMLDivElement>();\n\n state: DialogState = {\n show: false,\n LayerComponent: undefined,\n };\n\n /**\n * Retrieves all focusable elements within the dialog.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.dialogRef.current) return [];\n return Array.from(\n this.dialogRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the dialog.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Restores focus to the element that was focused before the dialog opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Dialog DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDialogRef = (node: HTMLDivElement | null) => {\n (this.dialogRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n this.setInitialFocus(node);\n }\n };\n\n /**\n * Sets initial focus within the dialog.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n root.focus();\n }\n };\n\n shouldComponentUpdate(nextProps: DialogOptions, nextState: DialogState) {\n return this.state.show !== nextState.show;\n }\n\n componentWillUnmount() {\n // Clean up if component unmounts while dialog is open\n if (this.state.show && this.closeDialog) {\n this.closeDialog();\n }\n this.restoreFocus();\n this.closeDialog = null;\n this.onCloseFn = null;\n }\n\n public open = (closeCallback?: (resp?: unknown) => void) => {\n const { closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n const [Component, closeFn] = LayerManager.renderLayer({\n exitDelay: 300,\n overlay: true,\n closeOnEsc,\n closeCallback: this.closeCallback,\n closeOnOverlayClick,\n position: LAYER_POSITION.DIALOG,\n component: (\n <DialogContainer\n {...rest}\n ref={this.setDialogRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </DialogContainer>\n ),\n });\n\n this.closeDialog = closeFn;\n\n this.setState({\n show: true,\n LayerComponent: Component,\n });\n this.onCloseFn = closeCallback ?? null;\n };\n\n public close = (resp?: unknown) => {\n this.closeDialog?.(resp);\n };\n\n private closeCallback = (resp?: unknown) => {\n this.restoreFocus();\n this.setState({\n show: false,\n LayerComponent: undefined,\n });\n this.onCloseFn?.(resp);\n };\n\n render() {\n const { LayerComponent } = this.state;\n\n if (this.state.show && LayerComponent) {\n return <LayerComponent />;\n } else {\n return null;\n }\n }\n}\n\nexport default Dialog;\n","import React, { createRef } from 'react';\nimport { Button } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype AlertOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered in the body. */\n body: React.ReactNode;\n /** Accept button text */\n buttonText?: string;\n /** props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nlet dialogCounter = 0;\n\nexport default class AlertDialog extends React.Component<AlertOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n buttonText: 'OK',\n };\n\n public show = () => {\n return new Promise((resolve) => {\n const onClose = () => resolve(null);\n this.dialog.current?.open(onClose);\n });\n };\n\n private close = () => this.dialog.current?.close();\n\n render() {\n const titleId = `nfui-alert-dialog-${dialogCounter++}-title`;\n const descriptionId = `nfui-alert-dialog-${dialogCounter++}-description`;\n\n return (\n <Dialog\n {...this.props.dialogProps}\n role=\"alertdialog\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {this.props.header && <DialogHeader id={titleId}>{this.props.header}</DialogHeader>}\n <DialogBody id={descriptionId}>{this.props.body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.close}>{this.props.buttonText}</Button>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { createRef } from 'react';\nimport { Button, ActionButton } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype ConfirmOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as body of the dialog */\n body: string;\n /** Accept button text */\n yesText?: string;\n /** Reject button text */\n noText?: string;\n /** Props for the dialog */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nexport default class ConfirmDialog extends React.Component<ConfirmOption> {\n private dialog = createRef<Dialog>();\n\n static defaultProps = {\n yesText: 'Yes',\n noText: 'No',\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (resp: unknown) => {\n if (resp) {\n resolve(null);\n } else {\n reject();\n }\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n private cancel = () => this.dialog.current?.close(false);\n private confirm = () => this.dialog.current?.close(true);\n\n render() {\n const { header, body, yesText, noText, dialogProps } = this.props;\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>{body}</DialogBody>\n <DialogFooter>\n <Button onClick={this.cancel}>{noText}</Button>\n <ActionButton onClick={this.confirm}>{yesText}</ActionButton>\n </DialogFooter>\n </Dialog>\n );\n }\n}\n","import React, { useState, useEffect, useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype InputProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.AllHTMLAttributes<HTMLInputElement>;\n\ntype InputInternalProps = InputProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.input<InputInternalProps>`\n outline: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 30px;\n width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 8px;\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst Input = React.forwardRef<HTMLInputElement, Omit<InputProps, 'as'>>((props, ref) => {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n\n useEffect(() => {\n if (props.value !== undefined) {\n setValue(props.value);\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...props}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n />\n <span>{props.label}</span>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n});\n\nInput.displayName = 'Input';\nexport default Input;\n","import React, { useState, useEffect, useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype TextAreaProps = {\n /** Label for the field */\n label: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLTextAreaElement>;\n\ntype TextAreaInternalProps = {\n touched: boolean;\n errorText?: string;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n`;\n\nconst TextField = styled.textarea<TextAreaInternalProps>`\n border: none;\n color: inherit;\n padding: 8px;\n min-height: 150px;\n min-width: 250px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus + span,\n &:active + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled + span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & + span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nfunction TextAreaComponent(props: TextAreaProps, ref: React.Ref<HTMLTextAreaElement>) {\n const { label, errorText, value: propsValue, required, ...rest } = props;\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(propsValue || '');\n const errorId = useId();\n\n useEffect(() => {\n if (propsValue !== undefined) {\n setValue(propsValue);\n }\n }, [propsValue]);\n\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <TextField\n {...rest}\n ref={ref}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n required={required}\n aria-invalid={!!errorText}\n aria-required={required}\n aria-describedby={errorText ? errorId : undefined}\n />\n <span>{label}</span>\n {errorText && <ErrorContainer id={errorId}>{errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst TextArea = React.forwardRef(TextAreaComponent);\nexport default TextArea;\n","import React, { useState, useEffect, useId } from 'react';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ntype SelectProps = {\n /** Label for the field */\n label?: string;\n /** Error text to be shown below the field */\n errorText?: string;\n} & React.InputHTMLAttributes<HTMLSelectElement>;\n\ntype SelectInternalProps = SelectProps & {\n touched: boolean;\n};\n\nconst Label = styled.label`\n display: inline-flex;\n flex-direction: column;\n position: relative;\n margin: 10px 5px;\n pointer-events: none;\n max-width: 268px;\n\n & svg {\n fill: currentColor;\n }\n`;\n\nconst SelectField = styled.select<SelectInternalProps>`\n border: none;\n color: inherit;\n padding: 0 8px;\n line-height: 30px;\n min-height: 32px;\n width: 268px;\n border-radius: 3px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n pointer-events: auto;\n appearance: none;\n\n /** Focused */\n &:focus,\n &:active {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:focus ~ span,\n &:active ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** Disabled */\n &:disabled {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n\n /** Invalid */\n &:focus:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.ERROR_LIGHT)};\n }\n\n ${(props) =>\n props.touched\n ? `\n &:invalid {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n &:invalid ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Error */\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & ~ span {\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n\n /** Required */\n &:required + span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n\n /** Label Animation */\n & + span {\n position: absolute;\n padding: 0 5px;\n top: 0px;\n left: 4px;\n font-size: 14px;\n line-height: 32px;\n transition: all 300ms ease;\n }\n\n ${(props) =>\n props.value !== ''\n ? `\n & + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n `\n : ''}\n\n &:focus + span, &:placeholder-shown + span {\n top: -8px;\n background: ${getThemeValue(THEME_NAME.BACKGROUND)};\n font-size: 12px;\n line-height: 14px;\n }\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n padding-top: 3px;\n font-size: 12px;\n line-height: 14px;\n margin-left: 3px;\n`;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 8px;\n top: 8px;\n`;\n\nfunction SelectComponent(props: SelectProps, ref: React.Ref<HTMLSelectElement>) {\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState(props.value || '');\n const errorId = useId();\n\n useEffect(() => {\n if (props.value !== undefined) {\n setValue(props.value);\n }\n }, [props.value]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setTouched(true);\n if (props.onFocus) {\n props.onFocus(e);\n }\n };\n\n const onChangeHandler = (e: React.ChangeEvent<HTMLSelectElement>) => {\n if (props.onChange) {\n setValue(e.target.value);\n props.onChange(e);\n } else {\n setValue(e.target.value);\n }\n };\n\n return (\n <Label>\n <SelectField\n {...props}\n ref={ref}\n multiple={false}\n value={value}\n onChange={onChangeHandler}\n onFocus={handleFocus}\n touched={touched}\n aria-invalid={!!props.errorText}\n aria-required={props.required}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n <option />\n {props.children}\n </SelectField>\n <span>{props.label}</span>\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </Label>\n );\n}\n\nconst Select = React.forwardRef(SelectComponent);\nexport default Select;\n","import React, { useCallback } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n margin: 5px 0;\n position: relative;\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n`;\n\nconst StyledCheckmark = styled.span`\n width: 16px;\n height: 16px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n display: inline-block;\n border-radius: 3px;\n margin-right: 5px;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: all 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 3px;\n height: 10px;\n border-right: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n position: absolute;\n top: 1px;\n left: 6px;\n opacity: 0;\n transform: rotate(45deg) scale(0);\n transition: all 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /** checked */\n &:checked + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledCheckmark}::after {\n opacity: 1;\n transform: rotate(45deg) scale(1);\n }\n\n /** indeterminate */\n &:indeterminate + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:indeterminate + ${StyledCheckmark}::after {\n opacity: 1;\n height: 0;\n width: 8px;\n border-right: none;\n border-bottom: 2px solid ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n transform: rotate(0deg) scale(1);\n top: 7px;\n left: 4px;\n }\n\n /** active and focus */\n &:enabled:active + ${StyledCheckmark}, &:focus + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:active ~ span,\n &:focus ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** hover */\n &:enabled:hover + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /** disabled */\n &:disabled + ${StyledCheckmark} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n cursor: not-allowed;\n }\n\n &:checked:disabled + ${StyledCheckmark}, &:indeterminate:disabled + ${StyledCheckmark} {\n background-color: ${getThemeValue(THEME_NAME.DISABLED)};\n }\n`;\n\ntype CheckboxProps = {\n /**\n * Label for the field\n * @default ''\n */\n label?: string;\n /**\n * If the field is in indeterminate state\n * @default false\n */\n indeterminate?: boolean;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nfunction CheckboxComponent(props: CheckboxProps, fwdRef: React.Ref<HTMLInputElement>) {\n const { label = '', indeterminate = false, checked, ...rest } = props;\n\n const ref = useCallback(\n (node: HTMLInputElement | null) => {\n // Ensure the DOM `indeterminate` flag always matches the prop\n if (node) {\n node.indeterminate = !!indeterminate;\n }\n\n // Forward the node (or null) to the parent ref (supports function or ref object)\n if (typeof fwdRef === 'function') {\n fwdRef(node);\n } else if (fwdRef) {\n (fwdRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n },\n [indeterminate, fwdRef],\n );\n\n return (\n <Label>\n <HiddenInput\n {...rest}\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n aria-checked={indeterminate ? 'mixed' : checked}\n />\n <StyledCheckmark />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(CheckboxComponent);\n\nexport default Checkbox;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Switch = styled.label`\n position: relative;\n display: inline-flex;\n margin: 5px 0;\n`;\n\nconst Input = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n appearance: none;\n margin: 0;\n\n & + span {\n position: relative;\n cursor: pointer;\n width: 30px;\n height: 18px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n transition: 0.4s;\n border-radius: 10px;\n padding: 0 3px;\n margin: 0 10px 0 5px;\n }\n & + span:before {\n position: absolute;\n content: '';\n height: 14px;\n width: 14px;\n left: 1px;\n top: 1px;\n border: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n border-radius: 50%;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: 0.4s;\n }\n\n /* checked */\n &:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:checked + span:before {\n transform: translateX(18px);\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* focus */\n &:enabled:focus + span:before {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* hover */\n &:enabled:hover ~ span {\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled + span:before {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\ntype ToggleProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nfunction ToggleComponent(props: ToggleProps, ref: React.Ref<HTMLInputElement>) {\n return (\n <Switch>\n <Input\n {...props}\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={props.checked}\n />\n <span></span>\n <span>{props.label}</span>\n </Switch>\n );\n}\n\nconst Toggle = React.forwardRef(ToggleComponent);\nexport default Toggle;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Label = styled.label`\n display: inline-flex;\n align-items: center;\n margin: 5px 0;\n cursor: pointer;\n position: relative;\n`;\n\nconst StyledRadio = styled.span`\n width: 16px;\n height: 16px;\n margin-right: 5px;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 50%;\n display: block;\n transition: background-color 0.3s ease;\n position: relative;\n flex-shrink: 0;\n\n &::after {\n content: '';\n width: 100%;\n height: 100%;\n border-radius: 50%;\n position: absolute;\n top: 0;\n left: 0;\n box-shadow: inset 0 0 0 3px ${getThemeValue(THEME_NAME.BACKGROUND)};\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n`;\n\nconst HiddenInput = styled.input`\n opacity: 0;\n width: 0;\n height: 0;\n position: absolute;\n margin: 0;\n\n /* checked */\n &:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:checked + ${StyledRadio}::after {\n opacity: 1;\n }\n\n /* focus */\n &:enabled:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:checked:focus + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n /* hover */\n &:enabled:hover + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n &:enabled:hover ~ span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n }\n\n /* disabled */\n &:disabled + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n cursor: not-allowed;\n }\n\n &:disabled:checked + ${StyledRadio} {\n border-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled ~ span {\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n cursor: not-allowed;\n }\n`;\n\ntype RadioProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nfunction RadioComponent(props: RadioProps, ref: React.Ref<HTMLInputElement>) {\n const { label, ...rest } = props;\n\n return (\n <Label>\n <HiddenInput {...rest} ref={ref} type=\"radio\" />\n <StyledRadio />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(RadioComponent);\nexport default Radio;\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Input = styled.input`\n appearance: none;\n margin: 0;\n width: 0;\n\n & + span {\n color: ${getThemeValue(THEME_NAME.PRIMARY)};\n padding: 6px 12px;\n border: none;\n border: 1px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n cursor: pointer;\n margin-right: -1px;\n line-height: 18px;\n }\n\n &:enabled:focus + span {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n\n &:enabled:hover + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:enabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n\n &:disabled + span {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n\n &:disabled:checked + span {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n }\n`;\n\nconst Label = styled.label`\n display: inline-flex;\n\n &:focus-within {\n z-index: 1;\n }\n`;\n\nexport const RadioGroup = styled.div`\n display: inline-flex;\n align-items: center;\n border-radius: 3px;\n margin: 5px 0;\n\n & ${Label}:first-child > span {\n border-radius: 3px 0 0 3px;\n }\n\n & ${Label}:last-child > span {\n border-radius: 0 3px 3px 0;\n }\n`;\n\ntype RadioButtonProps = {\n /** Label for the field */\n label?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nfunction RadioButtonComponent(props: RadioButtonProps, ref: React.Ref<HTMLInputElement>) {\n const { label, ...rest } = props;\n return (\n <Label>\n <Input {...rest} type=\"radio\" ref={ref} />\n <span>{label}</span>\n </Label>\n );\n}\n\nconst RadioButton = React.forwardRef(RadioButtonComponent);\nexport default RadioButton;\n","import { createContext } from 'react';\n\ntype SingleSelect<T> = {\n value?: T;\n multiSelect: false;\n updateValue: (newVal: T) => void;\n};\n\ntype MultiSelect<T> = {\n value?: T[];\n multiSelect: true;\n // updateValue takes a single item and the provider will add/remove it\n updateValue: (newVal: T) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\n// Context may be undefined if used outside a Menu provider\nexport default createContext<MenuContextType<unknown> | undefined>(undefined);\n","import React, { useState, ForwardedRef } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport MenuContext from './MenuContext';\n/**\n * Props for the Menu component.\n * @template T - The type of value(s) in the menu.\n */\ntype MenuProps<T> = {\n /** Multiple Menu Items can be selected */\n multiSelect?: boolean;\n /** Value(s) selected */\n value?: T | T[];\n /** Callback when the selected value changes */\n onChange?: (value: T | T[]) => void;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\nconst MenuContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n\n & div:last-child {\n border-bottom: none;\n }\n\n &:focus-within {\n box-shadow: 0 0 0 4px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n }\n`;\n\n/**\n * Menu component that allows selection of items from a list.\n * Supports single and multi-select modes and keyboard navigation.\n *\n * @template T - The type of value(s) in the menu.\n * @param props - The menu properties.\n * @param ref - The ref forwarded to the menu container.\n */\nfunction MenuInner<T>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {\n const { multiSelect = false, onChange, value: propValue, children, ...rest } = props;\n // State holds either a single T or an array of T when multiSelect\n const [value, setValue] = useState<unknown | undefined>(propValue);\n\n /**\n * Updates the selected value(s).\n * Handles both single and multi-select logic.\n *\n * @param {T} val - The value to select or deselect.\n */\n const updateValue = (val: unknown) => {\n let newVal: unknown;\n if (multiSelect) {\n if (Array.isArray(value)) {\n if (value.includes(val as unknown as T)) {\n newVal = (value as T[]).filter((item) => item !== val);\n } else {\n newVal = [...(value as T[]), val];\n }\n } else {\n newVal = [val];\n }\n } else {\n newVal = val;\n }\n\n setValue(newVal as T | T[]);\n onChange?.(newVal as T | T[]);\n };\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports Arrow keys for navigation, and Enter/Space for selection.\n *\n * @param {React.KeyboardEvent} e - The keyboard event.\n */\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const container = e.currentTarget as HTMLElement;\n const items = Array.from(container.querySelectorAll('[role=\"option\"]')) as HTMLElement[];\n const currentIndex = items.indexOf(target as HTMLElement);\n\n let nextIndex;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = currentIndex + 1;\n if (nextIndex >= items.length) nextIndex = 0;\n items[nextIndex]?.focus();\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex = currentIndex - 1;\n if (nextIndex < 0) nextIndex = items.length - 1;\n items[nextIndex]?.focus();\n break;\n case 'Home':\n e.preventDefault();\n items[0]?.focus();\n break;\n case 'End':\n e.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case 'Enter':\n case ' ': // Space\n e.preventDefault();\n target.click();\n break;\n default:\n break;\n }\n };\n\n /**\n * Handles focus events on the menu container.\n * Delegates focus to the first item if the container itself receives focus.\n *\n * @param {React.FocusEvent} e - The focus event.\n */\n const focusHandler = (e: React.FocusEvent) => {\n // Prevent trap: If focus came from inside (Shift+Tab), do NOT auto-focus again.\n // This allows focus to land on the container, and the next Shift+Tab will exit.\n if (e.currentTarget.contains(e.relatedTarget as Node)) {\n return;\n }\n\n // Only if focus is actually on the container (e.g. tabbing into it)\n // and not bubbling up from a child\n if (e.target === e.currentTarget) {\n // Prevent the container from holding focus; delegate to first item\n const firstItem = e.currentTarget.querySelector('[role=\"option\"]') as HTMLElement;\n firstItem?.focus();\n }\n };\n\n return (\n // @ts-expect-error Generic context typing\n <MenuContext.Provider value={{ value: value, multiSelect: !!multiSelect, updateValue }}>\n <MenuContainer\n {...rest}\n ref={ref}\n role=\"listbox\"\n aria-multiselectable={multiSelect}\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={focusHandler}\n >\n {children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n}\n\nconst Menu = React.forwardRef(MenuInner) as <T>(\n props: MenuProps<T> & React.RefAttributes<HTMLDivElement>,\n) => React.ReactElement;\n\nexport default Menu;\n","import React, { SyntheticEvent, useContext } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport Checkbox from '../Input/Checkbox';\nimport MenuContext, { MenuContextType } from './MenuContext';\n\ntype MenuItemProps<T> = {\n /** Value of the element */\n value: T;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value'>;\n\nconst Container = styled.button<{ selected: boolean; multiselect?: boolean }>`\n font-weight: ${(props) => (props.selected ? 'bold' : 'normal')};\n padding: 8px;\n border: none;\n border-left: 4px solid\n ${(props) =>\n props.selected && !props.multiselect\n ? getThemeValue(THEME_NAME.TEXT_COLOR_DARK)\n : 'transparent'};\n background-color: transparent;\n font-size: 16px;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n min-height: 41px;\n display: flex;\n align-items: center;\n cursor: pointer;\n position: relative;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:hover,\n &:focus,\n &:focus-within {\n background-color: ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n }\n\n & > label {\n margin: 0 4px 0 0;\n }\n`;\n\nconst MenuItemInner = <T,>(props: MenuItemProps<T>, ref: React.Ref<HTMLButtonElement>) => {\n const context = useContext(MenuContext) as MenuContextType<T> | undefined;\n if (!context) {\n throw new Error('`MenuItem` must be used within a `Menu` provider');\n }\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T);\n };\n\n let selected = false;\n if (context.multiSelect) {\n const arr = context.value as unknown as T[] | undefined;\n selected = Array.isArray(arr) && arr.includes(value as unknown as T);\n } else {\n selected = (context.value as unknown as T) === value;\n }\n\n return (\n <Container\n {...rest}\n ref={ref}\n type=\"button\"\n role=\"option\"\n aria-selected={selected}\n selected={selected}\n onClick={clickHandler}\n multiselect={context.multiSelect ? true : undefined}\n >\n {context.multiSelect && (\n <Checkbox\n checked={selected}\n readOnly\n tabIndex={-1}\n onClick={(e) => e.stopPropagation()}\n />\n )}\n {children}\n </Container>\n );\n};\n\nconst MenuItem = React.forwardRef(MenuItemInner) as <T>(\n props: MenuItemProps<T> & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\nexport default MenuItem;\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { Card } from '../Card';\n\nexport enum POPOVER_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\ninterface Translate {\n x: number;\n y: number;\n}\n\nconst positionMap = {\n [POPOVER_POSITION.TOP_LEFT]: `\n bottom: calc(100% - 10px);\n left: 0;\n `,\n [POPOVER_POSITION.TOP_RIGHT]: `\n bottom: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_RIGHT]: `\n top: calc(100% - 10px);\n right: 0;\n `,\n [POPOVER_POSITION.BOTTOM_LEFT]: `\n top: calc(100% - 10px);\n left: 0;\n `,\n};\n\nconst PopoverDiv = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nconst Popper = styled(Card)<{ position: POPOVER_POSITION; translateX: number; translateY: number }>`\n position: absolute;\n width: 100%;\n min-width: 200px;\n overflow: auto;\n animation: enter 0.3s linear;\n border-radius: 3px;\n z-index: 1;\n transform: translate(${(props) => props.translateX}px, ${(props) => props.translateY}px);\n ${(props) => positionMap[props.position]}\n\n &.closing {\n /* max-height: 0px;\n opacity: 0;\n overflow: hidden; */\n animation: exit 0.3s linear;\n }\n\n @keyframes enter {\n from {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n to {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n\n @keyframes exit {\n to {\n max-height: 0px;\n opacity: 1;\n overflow: hidden;\n }\n from {\n max-height: 300px;\n opacity: 1;\n overflow: hidden;\n }\n }\n`;\n\nconst KEY_CODES = {\n ESC: 27,\n};\n\ntype PopoverProps = {\n /** Opens the popover */\n open: boolean;\n /** Anchor element for the popover */\n element: React.ElementType;\n /**\n * Position of the popover around anchor element\n * @default POPOVER_POSITION.BOTTOM_LEFT\n */\n position?: POPOVER_POSITION;\n /**\n * If the popover should close on `esc` key press\n * @default true\n */\n closeOnEsc?: boolean;\n /** Popover close callback */\n onClose?: () => void;\n};\n\nfunction PopoverComponent(\n props: React.PropsWithChildren<PopoverProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n open: propsOpen,\n element,\n position = POPOVER_POSITION.BOTTOM_LEFT,\n closeOnEsc = true,\n onClose,\n children,\n ...rest\n } = props;\n\n const [open, setOpen] = useState<boolean>(propsOpen);\n const [closing, setClosing] = useState<boolean>(false);\n const [translate, setTranslate] = useState<Translate>({ x: 0, y: 0 });\n const popperRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useRef<HTMLElement | null>(null);\n const closeTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const focusTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const popperId = useId();\n const triggerId = useId();\n\n const close = useCallback(() => {\n // Clear any existing timeouts first\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n\n setClosing(true);\n closeTimeoutRef.current = setTimeout(() => {\n setOpen(false);\n setTranslate({ x: 0, y: 0 });\n\n if (onClose) {\n onClose();\n }\n setClosing(false);\n\n // Restore focus to the trigger element after animation completes\n focusTimeoutRef.current = setTimeout(() => {\n if (triggerRef.current && document.body.contains(triggerRef.current)) {\n triggerRef.current.focus();\n }\n focusTimeoutRef.current = null;\n }, 50);\n closeTimeoutRef.current = null;\n }, 280);\n }, [onClose]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, closeOnEsc],\n );\n\n const clickOutsideHandler = useCallback(\n (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n close();\n }\n },\n [close],\n );\n\n /**\n * Get called on popover mount.\n */\n useEffect(() => {\n document.addEventListener('keyup', keyupEventHandler);\n\n return () => {\n document.removeEventListener('keyup', keyupEventHandler);\n };\n }, [keyupEventHandler]);\n\n useEffect(() => {\n if (propsOpen) {\n setOpen(true);\n // Use requestAnimationFrame to add listener after current event loop\n const rafId = requestAnimationFrame(() => {\n document.addEventListener('click', clickOutsideHandler);\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n document.removeEventListener('click', clickOutsideHandler);\n };\n } else {\n if (open) {\n close();\n }\n }\n }, [propsOpen, open, clickOutsideHandler, close]);\n\n useEffect(() => {\n if (open) {\n const {\n top = 0,\n left = 0,\n right = 0,\n } = popperRef.current?.getBoundingClientRect() ?? {};\n const height = popperRef.current?.scrollHeight ?? 0;\n const viewportWidth = document.documentElement.clientWidth;\n const viewportHeight = document.documentElement.clientHeight;\n const translation = { x: 0, y: 0 };\n\n if (position === POPOVER_POSITION.BOTTOM_LEFT) {\n // overflow can happen at bottom and right\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else if (position == POPOVER_POSITION.BOTTOM_RIGHT) {\n // overflow can happen at bottom and left\n if (viewportHeight - top - height < 0) {\n translation.y = -1 * (Math.abs(viewportHeight - top - height) + 5);\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n } else if (position === POPOVER_POSITION.TOP_LEFT) {\n // overflow can happen at top and right\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (viewportWidth - right < 0) {\n translation.x = -1 * (Math.abs(viewportWidth - right) + 5);\n }\n } else {\n // overflow can happen at top and left\n if (top - height < 0) {\n translation.y = Math.abs(top - height) + 5;\n }\n if (left < 0) {\n translation.x = Math.abs(left) + 5;\n }\n }\n // Note it can still overflow, but in that case fitting popper inside the\n // window is not possible.\n setTranslate(translation);\n popperRef.current?.focus();\n }\n }, [open, position]);\n\n /**\n * Cleanup timeouts on unmount\n */\n useEffect(() => {\n return () => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n }\n if (focusTimeoutRef.current) {\n clearTimeout(focusTimeoutRef.current);\n }\n };\n }, []);\n\n const forwardRef = (node: HTMLDivElement | null) => {\n containerRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n return (\n <PopoverDiv ref={forwardRef} {...rest}>\n {React.createElement(element, {\n ref: triggerRef,\n id: triggerId,\n 'aria-expanded': open,\n 'aria-haspopup': 'dialog',\n 'aria-controls': popperId,\n })}\n {open && (\n <Popper\n elevated\n tabIndex={0}\n role=\"dialog\"\n aria-labelledby={triggerId}\n id={popperId}\n position={position}\n translateX={translate.x}\n translateY={translate.y}\n className={closing ? 'closing' : ''}\n ref={popperRef}\n onClick={(e) => {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n }}\n >\n {children}\n </Popper>\n )}\n </PopoverDiv>\n );\n}\n\nconst Popover = React.forwardRef(PopoverComponent);\nexport default Popover;\n","import React, { useEffect, useState } from 'react';\nimport styled from '@emotion/styled';\nimport { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\n\ntype DropdownProps<T> = React.PropsWithChildren<{\n /** Value of the control */\n value?: T | T[];\n /**\n * If multiple elements can be selected\n * @default false\n */\n multiSelect?: boolean;\n /** Change handler */\n onChange?: (v: T | T[]) => void;\n /** Label of the control */\n label?: string;\n /** Error message */\n errorText?: string;\n /** Makes field required */\n required?: boolean;\n /** Disables the field */\n disabled?: boolean;\n}> &\n React.InputHTMLAttributes<HTMLInputElement>;\n\nconst ArrowContainer = styled.span`\n position: absolute;\n right: 12px;\n top: 16px;\n pointer-events: none;\n`;\n\n/**\n * Dropdown component that allows selection from a list of options.\n * Supports single and multi-select modes.\n *\n * @template T - The type of the value(s) in the dropdown.\n * @param props - The properties for the Dropdown component.\n * @returns The rendered Dropdown component.\n */\nfunction DropdownComponent<T extends object>(\n props: DropdownProps<T>,\n outerRef: React.Ref<HTMLInputElement>,\n) {\n const {\n multiSelect = false,\n onChange,\n children,\n value: propValue,\n label,\n errorText,\n required,\n disabled,\n ...rest\n } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState<T | T[] | undefined>(propValue);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement | null>(null);\n const triggerRef = React.useRef<HTMLInputElement | null>(null);\n\n // Focus menu when opened\n useEffect(() => {\n if (open) {\n // Wait for Popover to fully open and focus itself first\n // Then move focus to the first menu item\n const timer = setTimeout(() => {\n const firstItem = menuRef.current?.querySelector('[role=\"option\"]') as HTMLElement;\n if (firstItem) {\n firstItem.focus();\n }\n }, 100); // Wait after Popover has set initial focus\n return () => clearTimeout(timer);\n }\n }, [open]);\n\n /**\n * Handles keydown events on the input trigger.\n * Opens the menu on 'Enter', 'Space', 'ArrowDown', or 'ArrowUp'.\n *\n * @param {React.KeyboardEvent<HTMLInputElement>} e - The keyboard event.\n */\n const onKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(e.key)) {\n e.preventDefault();\n setOpen(true);\n }\n };\n\n /**\n * Handles changes to the dropdown value.\n * Updates local state and calls the external onChange handler.\n * Closes the dropdown if not in multi-select mode.\n *\n * @param {T | T[]} val - The new value(s).\n */\n const changeHandler = (val: T | T[]) => {\n setValue(val);\n onChange?.(val);\n\n // Close dropdown after selection if not multiSelect\n if (!multiSelect) {\n setOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n /**\n * Toggles the dropdown open state on click.\n */\n const clickHandler = () => setOpen(true);\n\n const TriggerElement = React.forwardRef<HTMLInputElement>((passedProps, ref) => {\n // Helper to assign both internal triggerRef and external forwarded ref\n const assignRefs = (node: HTMLInputElement | null) => {\n triggerRef.current = node;\n\n if (!outerRef) return;\n if (typeof outerRef === 'function') {\n outerRef(node);\n } else {\n (outerRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n // Combine the ref passed by parent with our assignRefs so both are updated\n const combinedRef: React.Ref<HTMLInputElement> = (node) => {\n assignRefs(node);\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLInputElement | null>).current = node;\n }\n };\n\n return (\n <>\n <Input\n {...rest}\n {...passedProps}\n ref={combinedRef}\n type=\"text\"\n value={value && String(value)}\n label={label}\n errorText={errorText}\n onClick={clickHandler}\n onKeyDown={onKeyDown}\n required={required}\n disabled={disabled}\n readOnly\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={menuId}\n />\n <ArrowContainer aria-hidden=\"true\">\n <ExpandMore />\n </ArrowContainer>\n </>\n );\n });\n TriggerElement.displayName = 'DropdownTrigger';\n\n return (\n <Popover\n position={POPOVER_POSITION.BOTTOM_LEFT}\n open={open}\n element={TriggerElement}\n onClose={() => {\n setOpen(false);\n triggerRef.current?.focus();\n }}\n >\n <Menu\n ref={menuRef}\n id={menuId}\n value={value}\n multiSelect={multiSelect}\n onChange={changeHandler}\n >\n {children}\n </Menu>\n </Popover>\n );\n}\n\nconst Dropdown = React.forwardRef(DropdownComponent);\nexport default Dropdown;\n","import React, { createRef } from 'react';\nimport styled from '@emotion/styled';\nimport { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\n\ntype PromptOption = {\n /** Shown as header of the dialog */\n header: string;\n /** Rendered as the body of the dialog */\n body: string;\n /** Default value for the input. */\n defaultValue?: string;\n /** Submit button text. Default value is 'Submit' */\n submitText?: string;\n /** Cancel button text. Default value is 'Cancel' */\n cancelText?: string;\n /** Props for the input. */\n inputProps?: React.HTMLProps<HTMLInputElement>;\n /** Additional props for the dialog. */\n dialogProps?: React.ComponentProps<typeof Dialog>;\n};\n\nconst BodyText = styled.p`\n margin-top: 0;\n`;\n\nconst InputContainer = styled.div`\n display: flex;\n flex: 1;\n margin-top: 10px;\n\n & > label {\n flex: 1;\n width: 100%;\n padding: 0;\n\n & > input {\n width: 100%;\n padding: 0 8px;\n box-sizing: border-box;\n }\n }\n`;\n\nconst StyledInput = styled(Input)`\n flex: 1;\n padding: 0;\n`;\n\nexport default class PromptDialog extends React.Component<PromptOption, { value?: string }> {\n static defaultProps = {\n cancelText: 'Cancel',\n submitText: 'Submit',\n defaultValue: '',\n };\n\n constructor(props: PromptOption) {\n super(props);\n this.state = {\n value: props.defaultValue,\n };\n }\n\n private dialog = createRef<Dialog>();\n\n private valueChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n this.setState({\n value: e.target.value,\n });\n };\n\n private cancel = () => this.dialog.current?.close();\n\n private submit = (e: React.FormEvent) => {\n e.preventDefault();\n this.dialog.current?.close(this.state.value);\n };\n\n public show = () => {\n return new Promise((resolve, reject) => {\n const onClose = (value: unknown) => {\n if (value) {\n resolve(value);\n } else {\n reject();\n }\n this.setState({\n value: this.props.defaultValue,\n });\n };\n this.dialog.current?.open(onClose);\n });\n };\n\n render() {\n const { header, body, inputProps, submitText, cancelText, dialogProps } = this.props;\n\n return (\n <Dialog\n {...dialogProps}\n ref={this.dialog}\n closeOnEsc={false}\n closeOnOverlayClick={false}\n >\n <form onSubmit={this.submit}>\n {header && <DialogHeader>{header}</DialogHeader>}\n <DialogBody>\n <BodyText>{body}</BodyText>\n <InputContainer>\n <StyledInput\n value={this.state.value}\n onChange={this.valueChange}\n {...inputProps}\n />\n </InputContainer>\n </DialogBody>\n <DialogFooter>\n <Button type=\"button\" onClick={this.cancel}>\n {cancelText}\n </Button>\n <ActionButton>{submitText}</ActionButton>\n </DialogFooter>\n </form>\n </Dialog>\n );\n }\n}\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\n\nexport {\n Header as DrawerHeader,\n Body as DrawerBody,\n Footer as DrawerFooter,\n} from '../../shared/styles';\n\nexport enum DRAWER_POSITION {\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n BOTTOM = 'BOTTOM',\n}\n\nconst positionStyle = (size?: string) => ({\n [DRAWER_POSITION.LEFT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(-100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.RIGHT]: {\n before: `height: 100vh; min-width: ${size || '300px'}; transform: translateX(100%);`,\n after: 'transform: translateX(0%);',\n },\n [DRAWER_POSITION.BOTTOM]: {\n before: `\n position: absolute;\n bottom: 0;\n width: 100%;\n height: ${size || '90vh'};\n transform: translateY(100%);\n border-radius: 15px 15px 0 0; \n `,\n after: 'transform: translateX(0%);',\n },\n});\n\nconst DrawerDiv = styled.div<{ position: DRAWER_POSITION; size?: string }>`\n display: flex;\n flex-direction: column;\n background-color: ${getThemeValue(THEME_NAME.BACKGROUND)};\n transition: transform 0.3s ease;\n box-shadow: ${getThemeValue(THEME_NAME.MODAL_SHADOW)};\n ${(props) => positionStyle(props.size)[props.position].before}\n\n .nf-layer-enter & {\n transform: translateX(0%);\n ${(props) => positionStyle(props.size)[props.position].after}\n }\n`;\n\ntype DrawerProps = {\n /** Opens the drawer */\n open: boolean;\n /** position of the drawer */\n position: DRAWER_POSITION;\n /** size of the drawer */\n size?: string;\n /** Shows an overlay behind the drawer. */\n overlay?: boolean;\n /** Closes the drawer on esc */\n closeOnEsc?: boolean;\n /** Closes the drawer on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the drawer closes. */\n onClose?: () => void;\n /** Ref to the drawer element */\n forwardRef?: React.Ref<HTMLDivElement> | React.MutableRefObject<HTMLDivElement | null>;\n};\n\ninterface DrawerState {\n open: boolean;\n}\n\nconst positionMap = {\n [DRAWER_POSITION.LEFT]: LAYER_POSITION.TOP_LEFT,\n [DRAWER_POSITION.RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [DRAWER_POSITION.BOTTOM]: LAYER_POSITION.BOTTOM_LEFT,\n};\n\n/**\n * Drawer component\n *\n * A panel that slides in from the edge of the screen.\n * It sits on top of the application content and is often used for navigation or details.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the drawer while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Drawer extends React.Component<\n React.PropsWithChildren<DrawerProps>,\n DrawerState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n overlay: true,\n position: DRAWER_POSITION.LEFT,\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: DrawerProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private drawerRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the drawer.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.drawerRef.current) return [];\n return Array.from(\n this.drawerRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the drawer.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the drawer mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n }\n }\n\n /**\n * Lifecycle method to restore focus when the drawer unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n }\n\n /**\n * Restores focus to the element that was focused before the drawer opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Drawer DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setDrawerRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.drawerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n };\n\n /**\n * Sets initial focus within the drawer.\n * Tries to focus the header first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Drawer updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n getSnapshotBeforeUpdate(prevProps: DrawerProps) {\n const {\n open,\n closeOnEsc,\n closeOnOverlayClick,\n overlay,\n position,\n children,\n size,\n ...rest\n } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n this.layer = LayerManager.renderLayer({\n overlay,\n exitDelay: 300,\n position: positionMap[position],\n closeCallback: this.onClose,\n closeOnEsc,\n closeOnOverlayClick,\n component: (\n <DrawerDiv\n {...rest}\n ref={this.setDrawerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n position={position}\n size={size}\n onClick={(e) => e.stopPropagation()}\n >\n {children}\n </DrawerDiv>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n }\n }\n\n /**\n * Sets the ref prop passed to the Drawer Container component.\n * @param node\n */\n setRefProp = (node: HTMLDivElement | null) => {\n if (this.props.forwardRef && typeof this.props.forwardRef === 'function') {\n this.props.forwardRef(node);\n } else if (this.props.forwardRef && typeof this.props.forwardRef === 'object') {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Renders the Drawer component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component ref={this.setRefProp} />;\n }\n\n return null;\n }\n}\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Container = styled.div<GroupProps>`\n display: inline-flex;\n border: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n border-radius: 3px;\n margin: 5px;\n\n /* overrides */\n & button,\n & label {\n margin: 0;\n border: none;\n border-radius: 0;\n border-left: 1px solid ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n box-shadow: none;\n height: 32px;\n }\n\n & > div button {\n border-left: none;\n }\n\n & input,\n & select {\n border: none;\n height: 32px;\n }\n\n & input,\n & select {\n border-radius: 0;\n }\n\n & input:active,\n & select:active {\n box-shadow: none;\n }\n\n & > div > span {\n top: 8px;\n }\n\n /* Handling for first and last child */\n & > *:first-child,\n & > label:first-child input,\n & > label:first-child select,\n & > *:first-child label,\n & > *:first-child input {\n border-left: none;\n border-radius: 2px 0 0 2px;\n }\n\n & > *:last-child,\n & > label:last-child input,\n & > label:last-child select,\n & > *:last-child label,\n & > *:last-child input {\n border-radius: 0 2px 2px 0;\n }\n\n /* focus */\n & *:focus,\n & *:focus + span {\n z-index: 1;\n }\n\n &:focus-within,\n &:hover {\n box-shadow: ${getThemeValue(THEME_NAME.HOVER_SHADOW)};\n }\n\n ${(props) =>\n props.errorText\n ? `\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n\n & > button, & > label {\n border-color: ${getThemeValue(THEME_NAME.ERROR)};\n }\n `\n : ''}\n`;\n\nconst ErrorContainer = styled.div`\n color: ${getThemeValue(THEME_NAME.ERROR)};\n margin-left: 8px;\n font-size: 12px;\n`;\n\ntype GroupProps = {\n /** Error Message for the group */\n errorText?: string;\n};\n\nfunction GroupComponent(\n props: React.PropsWithChildren<GroupProps>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const errorId = useId();\n\n return (\n <>\n <Container\n {...props}\n ref={ref}\n aria-describedby={props.errorText ? errorId : undefined}\n >\n {props.children}\n </Container>\n {props.errorText && <ErrorContainer id={errorId}>{props.errorText}</ErrorContainer>}\n </>\n );\n}\n\nconst Group = React.forwardRef<HTMLDivElement, GroupProps>(GroupComponent);\nexport default Group;\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default styled.label`\n height: 32px;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n padding: 0 4px;\n line-height: 32px;\n min-width: 24px;\n text-align: center;\n color: ${getThemeValue(THEME_NAME.BORDER_COLOR)};\n\n & > svg {\n height: 24px;\n width: 24px;\n vertical-align: middle;\n fill: currentColor;\n }\n`;\n","import React from 'react';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nexport {\n Header as ModalHeader,\n Body as ModalBody,\n Footer as ModalFooter,\n} from '../../shared/styles';\nimport { DialogContainer as ModalContainer } from '../Dialog/Dialog';\n\ntype ModalProps = {\n /** Opens the modal */\n open: boolean;\n /** Closes the modal on esc */\n closeOnEsc?: boolean;\n /** Closes the modal on overlay click */\n closeOnOverlayClick?: boolean;\n /** Call back function called when the modal closes. */\n onClose?: () => void;\n /** Ref forwarded to the modal container */\n forwardRef?: React.Ref<HTMLDivElement>;\n} & React.HTMLAttributes<HTMLDivElement>;\n\ninterface ModalState {\n open: boolean;\n}\n\n/**\n * Modal component\n *\n * A dialog window that sits on top of the main application content.\n * It disrupts the user's workflow to demand attention for a critical task or decision.\n *\n * Accessibility:\n * - Implements ARIA `role=\"dialog\"` and `aria-modal=\"true\"`.\n * - Traps focus effectively within the modal while open.\n * - Restores focus to the triggering element upon closure.\n * - Supports closing via ESC key and overlay click.\n */\nexport default class Modal extends React.Component<\n React.PropsWithChildren<ModalProps>,\n ModalState\n> {\n state = {\n open: false,\n };\n\n static defaultProps = {\n closeOnEsc: true,\n closeOnOverlayClick: true,\n };\n\n /**\n * Syncs state with props.\n */\n static getDerivedStateFromProps(props: ModalProps) {\n if (props.open) {\n return {\n open: true,\n };\n }\n return null;\n }\n\n private layer?: ReturnType<typeof LayerManager.renderLayer>;\n\n private closeCallback?: (resp?: unknown) => void;\n\n /**\n * Internal close handler.\n * Restores focus and calls the external onClose callback.\n */\n private onClose = () => {\n this.restoreFocus();\n this.setState({\n open: false,\n });\n this.props.onClose?.();\n this.closeCallback = undefined;\n this.layer = undefined;\n };\n\n private lastFocusedElement: HTMLElement | null = null;\n private modalRef = React.createRef<HTMLDivElement>();\n\n /**\n * Retrieves all focusable elements within the modal.\n */\n private getFocusableElements = (): HTMLElement[] => {\n if (!this.modalRef.current) return [];\n return Array.from(\n this.modalRef.current.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n ),\n ) as HTMLElement[];\n };\n\n /**\n * Handles keydown events to implement the focus trap.\n * Traps Tab and Shift+Tab within the modal.\n */\n private handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Tab') {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === firstElement) {\n lastElement.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === lastElement) {\n firstElement.focus();\n e.preventDefault();\n }\n }\n }\n };\n\n /**\n * Lifecycle method to save the currently focused element when the modal mounts while open.\n */\n componentDidMount() {\n if (this.props.open) {\n this.lastFocusedElement = document.activeElement as HTMLElement;\n }\n }\n\n /**\n * Lifecycle method to restore focus when the modal unmounts.\n */\n componentWillUnmount() {\n if (this.props.open) {\n this.restoreFocus();\n }\n // Clean up layer references\n if (this.closeCallback) {\n this.closeCallback();\n this.closeCallback = undefined;\n }\n this.layer = undefined;\n }\n\n /**\n * Restores focus to the element that was focused before the modal opened.\n */\n private restoreFocus = () => {\n if (this.lastFocusedElement) {\n // Check if the element is still in the document\n const elementToBeFocused = this.lastFocusedElement;\n this.lastFocusedElement = null;\n setTimeout(() => {\n if (document.body.contains(elementToBeFocused)) {\n elementToBeFocused.focus();\n }\n }, 100);\n }\n };\n\n /**\n * Callback ref to capture the Modal DOM element.\n * Triggers initial focus setting when the element mounts.\n */\n private setModalRef = (node: HTMLDivElement | null) => {\n // Update ref\n (this.modalRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n\n if (node) {\n // Set initial focus when the node is mounted\n this.setInitialFocus(node);\n }\n\n if (this.props.forwardRef) {\n (this.props.forwardRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n /**\n * Sets initial focus within the modal.\n * Tries to focus the header (first child) first, then the first interactive element, or falls back to the container.\n */\n private setInitialFocus = (root: HTMLElement) => {\n // Try to find the header (assumed to be the first child)\n const firstChild = root.firstElementChild as HTMLElement;\n if (firstChild) {\n // Ensure it's focusable\n if (firstChild.getAttribute('tabindex') === null) {\n firstChild.setAttribute('tabindex', '-1');\n }\n firstChild.focus();\n return;\n }\n\n // Fallback to focusable elements\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length > 0) {\n focusableElements[0].focus();\n } else {\n // Fallback to container\n root.focus();\n }\n };\n\n /**\n * Lifecycle method to handle Modal updates.\n * Manages opening/closing logic via LayerManager and focus preservation.\n */\n getSnapshotBeforeUpdate(prevProps: ModalProps) {\n const { open, closeOnEsc, closeOnOverlayClick, children, ...rest } = this.props;\n\n if (prevProps.open && !open) {\n this.closeCallback?.();\n this.restoreFocus();\n }\n\n if (!prevProps.open && open) {\n // Save current focus\n this.lastFocusedElement = document.activeElement as HTMLElement;\n\n this.layer = LayerManager.renderLayer({\n overlay: true,\n exitDelay: 300,\n position: LAYER_POSITION.DIALOG,\n closeCallback: this.onClose,\n closeOnEsc: closeOnEsc,\n closeOnOverlayClick: closeOnOverlayClick,\n component: (\n <ModalContainer\n {...rest}\n ref={this.setModalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onKeyDown={this.handleKeyDown}\n onClick={(e) => e.stopPropagation()}\n elevated\n >\n {children}\n </ModalContainer>\n ),\n });\n this.closeCallback = this.layer[1];\n this.forceUpdate();\n }\n }\n\n /**\n * Renders the Modal component via the LayerManager portal.\n */\n render() {\n if (this.state.open && this.layer) {\n const [Component] = this.layer;\n return <Component />;\n }\n\n return null;\n }\n}\n","/** Position for Notification */\nexport enum NOTIFICATION_POSITION {\n TOP_LEFT = 'TOP_LEFT',\n TOP_RIGHT = 'TOP_RIGHT',\n BOTTOM_LEFT = 'BOTTOM_LEFT',\n BOTTOM_RIGHT = 'BOTTOM_RIGHT',\n}\n\n/** Type of Notifications */\nexport enum NOTIFICATION_TYPE {\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n DANGER = 'DANGER',\n WARNING = 'WARNING',\n}\n\nexport interface NotificationOptions {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /** Duration for the notification in milliseconds */\n duration?: number;\n /** Creates sticky notification */\n sticky?: boolean;\n /** Type of notification */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** aria label for the close button on the notification */\n closeButtonAriaLabel?: string;\n}\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Card } from '../Card';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\nconst getEntryAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'in-left';\n default:\n return 'in-right';\n }\n};\n\nconst getExitAnimation = (position: NOTIFICATION_POSITION) => {\n switch (position) {\n case NOTIFICATION_POSITION.TOP_LEFT:\n case NOTIFICATION_POSITION.BOTTOM_LEFT:\n return 'out-left';\n default:\n return 'out-right';\n }\n};\n\nconst getBorderColor = (type?: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS_LIGHT);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR_LIGHT);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING_LIGHT);\n default:\n return getThemeValue(THEME_NAME.INFO_LIGHT);\n }\n};\n\nconst getTitleColor = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case NOTIFICATION_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case NOTIFICATION_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case NOTIFICATION_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n }\n};\n\nconst getTypeStyle = (type: NOTIFICATION_TYPE) => {\n switch (type) {\n case NOTIFICATION_TYPE.INFO:\n return `color: ${getThemeValue(THEME_NAME.INFO)}`;\n case NOTIFICATION_TYPE.SUCCESS:\n return `color: ${getThemeValue(THEME_NAME.SUCCESS)}`;\n case NOTIFICATION_TYPE.DANGER:\n return `color: ${getThemeValue(THEME_NAME.ERROR)}`;\n case NOTIFICATION_TYPE.WARNING:\n return `color: ${getThemeValue(THEME_NAME.WARNING)}`;\n }\n};\n\ninterface NoticeProp extends NotificationOptions {\n position: NOTIFICATION_POSITION;\n}\n\nexport const Container = styled.div<{ position: NOTIFICATION_POSITION }>`\n display: flex;\n flex-direction: ${(props) =>\n props.position === NOTIFICATION_POSITION.TOP_LEFT ||\n props.position === NOTIFICATION_POSITION.TOP_RIGHT\n ? 'column'\n : 'column-reverse'};\n`;\n\nexport const Notice = styled(Card)<NoticeProp>`\n position: relative;\n border-radius: 3px;\n border-left: 4px solid ${(props) => getBorderColor(props.type)};\n width: 300px;\n display: flex;\n padding: 0 5px 5px 0;\n overflow: hidden;\n animation: ${(props) => getEntryAnimation(props.position)} 0.6s ease;\n\n & svg {\n fill: currentColor;\n vertical-align: middle;\n width: 20px;\n height: 20px;\n }\n\n &.leave {\n animation: ${(props) => getExitAnimation(props.position)} 0.6s;\n }\n\n @keyframes in-right {\n from {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-right {\n to {\n transform: translateX(100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n\n @keyframes in-left {\n from {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n to {\n transform: translateX(0%);\n max-height: 150px;\n opacity: 1;\n }\n }\n\n @keyframes out-left {\n to {\n transform: translateX(-100%);\n max-height: 0;\n opacity: 0;\n }\n\n from {\n transform: translateX(0%);\n max-height: 100px;\n opacity: 1;\n }\n }\n`;\n\nexport const Title = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 5px 0;\n font-size: 14px;\n color: ${(props) => getTitleColor(props.type)};\n display: flex;\n align-items: center;\n`;\n\nexport const FillParent = styled.div`\n flex: 1;\n`;\n\nexport const CloseButton = styled.button`\n position: absolute;\n background-color: transparent;\n border: none;\n padding: 0;\n top: 4px;\n right: 4px;\n cursor: pointer;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:focus {\n box-shadow: 0 0 0 3px ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n border-radius: 3px;\n }\n`;\n\nexport const Body = styled.div`\n padding: 5px 5px 5px 0;\n font-size: 14px;\n`;\n\nexport const IconContainer = styled.div<{ type: NOTIFICATION_TYPE }>`\n padding: 6px 10px;\n ${(props) => getTypeStyle(props.type)};\n`;\n\nexport const Footer = styled.div`\n display: flex;\n justify-content: flex-end;\n padding: 0 5px;\n`;\n\nexport const VisuallyHidden = styled.span`\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n`;\n","import React from 'react';\nimport { Close, Info, ReportProblem, ErrorOutline, CheckCircle } from '../../icons';\nimport { ActionButton } from '../Button';\nimport {\n Container,\n Notice,\n Title,\n IconContainer,\n FillParent,\n Body,\n CloseButton,\n Footer,\n VisuallyHidden,\n} from './style';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ninterface NotificationManagerProps {\n // Notification Position\n position: NOTIFICATION_POSITION;\n // Callback for when stack is emptied\n onEmpty: () => void;\n // Aria label for the notification list\n ariaLabel?: string;\n}\n\n// Notice prop\ninterface NoticeProp extends NotificationOptions {\n leaving?: boolean;\n}\n\n// Manager state\ninterface NotificationManagerState {\n notices: NoticeProp[];\n}\n\ntype timeouts = {\n [id: string]: NodeJS.Timeout;\n};\n\nconst DEFAULT_DURATION = 5000;\n\n/**\n * Notification Manager class\n */\nclass NotificationManager extends React.Component<\n NotificationManagerProps,\n NotificationManagerState\n> {\n state: NotificationManagerState = {\n notices: [],\n };\n\n // bookkeeping for timeouts\n private timeouts: timeouts = {};\n\n // Set of notification ids\n private set = new Set<string>();\n\n // Refs for live regions to ensure they exist before updates\n private politeRegionRef = React.createRef<HTMLDivElement>();\n private assertiveRegionRef = React.createRef<HTMLDivElement>();\n\n /**\n * Removes a notification from stack if the notification with the given id is found.\n *\n * @param id\n */\n public remove = (id?: string) => {\n if (!id) return;\n\n // Trigger leaving animation.\n this.setState({\n notices: this.state.notices.map((notice) => ({\n ...notice,\n leaving: notice.id === id ? true : notice.leaving,\n })),\n });\n this.set.delete(id);\n\n // Remove notification on animation completion.\n setTimeout(() => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (notice) {\n // call close callback, ignore any errors in callback.\n if (notice.onClose) {\n try {\n notice.onClose();\n } catch (e: unknown) {\n console.warn('Error in notification close callback', (e as Error).message);\n }\n }\n\n // Remove the notification\n this.setState(\n {\n notices: this.state.notices.filter((notice) => notice.id !== id),\n },\n () => {\n // Check if the stack is empty and then call the\n // empty callback function.\n if (this.state.notices.length === 0) {\n this.props.onEmpty();\n }\n },\n );\n }\n }, 550);\n };\n\n /**\n * Adds a notification to stack.\n *\n * @param notice\n */\n public add = async (notice: NotificationOptions) => {\n // Generate unique id if not provided.\n const id = notice.id || (Math.random() * 10 ** 7).toFixed(0);\n\n // De-dupe on id\n if (!this.set.has(id)) {\n const type = notice.type || NOTIFICATION_TYPE.INFO;\n const isUrgent =\n type === NOTIFICATION_TYPE.WARNING || type === NOTIFICATION_TYPE.DANGER;\n\n // Add notice to the top of stack.\n this.setState(\n (prevState) => ({\n notices: [\n {\n ...notice,\n id,\n },\n ...prevState.notices,\n ],\n }),\n () => {\n // Update live region after state update\n const announcement = `${notice.title} ${notice.description}`;\n this.updateLiveRegion(announcement, isUrgent);\n },\n );\n\n // set timeout for closing the notification.\n if (!notice.sticky) {\n this.timeouts[id] = setTimeout(\n () => this.remove(id),\n notice.duration || DEFAULT_DURATION,\n );\n }\n\n // Add id to the set.\n this.set.add(id);\n }\n\n return id;\n };\n\n /**\n * Update live region content with clear-then-set pattern for reliable VoiceOver announcements.\n *\n * @param content - The text content to announce\n * @param isAssertive - Whether to use assertive (alert) or polite (log) live region\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegionRef.current : this.politeRegionRef.current;\n\n if (region) {\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 150);\n }\n };\n\n /**\n * Handler for close button click.\n *\n * @param id\n */\n public closeClickHandler = (id?: string) => () => {\n this.remove(id);\n };\n\n /**\n * Pause notification when user is hovering over it.\n *\n * @param id\n */\n public pause = (id?: string) => () => {\n if (id && this.timeouts[id]) {\n clearTimeout(this.timeouts[id]);\n }\n };\n\n /**\n * Restart the removal of notification.\n *\n * @param id\n */\n public resume = (id?: string) => () => {\n const notice = this.state.notices.find((notice) => notice.id === id);\n if (!notice?.sticky && id && !this.timeouts[id]) {\n this.timeouts[id] = setTimeout(() => this.remove(id), DEFAULT_DURATION);\n }\n };\n\n /**\n * Clean up all pending timeouts when component unmounts\n */\n componentWillUnmount() {\n // Clear all pending timeouts\n Object.keys(this.timeouts).forEach((id) => {\n clearTimeout(this.timeouts[id]);\n });\n this.timeouts = {};\n this.set.clear();\n }\n\n render() {\n return (\n <Container position={this.props.position}>\n {/* Polite live region - uses role=\"log\" for better VoiceOver compatibility */}\n <VisuallyHidden\n ref={this.politeRegionRef}\n role=\"log\"\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n />\n\n {/* Assertive live region - pre-rendered and persistent */}\n <VisuallyHidden\n ref={this.assertiveRegionRef}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n />\n\n {/* Visual notifications with list semantics */}\n <div role=\"list\" aria-label={this.props.ariaLabel}>\n {this.state.notices.map((notice) => {\n const {\n id,\n title,\n description,\n leaving,\n type = NOTIFICATION_TYPE.INFO,\n buttonText,\n buttonClick,\n closeButtonAriaLabel,\n } = notice;\n\n return (\n <Notice\n key={id}\n {...notice}\n position={this.props.position}\n className={leaving ? 'leave' : ''}\n onMouseEnter={this.pause(id)}\n onMouseLeave={this.resume(id)}\n role=\"listitem\"\n >\n <IconContainer type={type} aria-hidden=\"true\">\n {type === NOTIFICATION_TYPE.INFO && <Info />}\n {type === NOTIFICATION_TYPE.SUCCESS && <CheckCircle />}\n {type === NOTIFICATION_TYPE.WARNING && <ReportProblem />}\n {type === NOTIFICATION_TYPE.DANGER && <ErrorOutline />}\n </IconContainer>\n <FillParent>\n <Title type={type}>{title}</Title>\n <Body>{description}</Body>\n {buttonText && (\n <Footer>\n <ActionButton\n onClick={() => {\n buttonClick?.();\n }}\n >\n {buttonText}\n </ActionButton>\n </Footer>\n )}\n </FillParent>\n <CloseButton\n onClick={this.closeClickHandler(id)}\n aria-label={closeButtonAriaLabel || 'Close notification'}\n tabIndex={0}\n >\n <Close />\n </CloseButton>\n </Notice>\n );\n })}\n </div>\n </Container>\n );\n }\n}\n\nexport default NotificationManager;\n","import { type RefCallback } from 'react';\nimport { flushSync } from 'react-dom';\nimport { createRoot, type Root } from 'react-dom/client';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport NotificationManager from './NotificationManager';\nimport { NOTIFICATION_POSITION, NOTIFICATION_TYPE, NotificationOptions } from './types';\n\ntype NotificationProps = {\n /** Title of the notification */\n title: string;\n /** Body of the notification */\n description: string;\n /** Id for the notification, helps in de-duplication. */\n id?: string;\n /**\n * Duration for the notification in milliseconds\n * @default 5000\n */\n duration?: number;\n /**\n * Creates sticky notification\n * @default false\n */\n sticky?: boolean;\n /**\n * Type of notification\n * @default NOTIFICATION_TYPE.INFO\n */\n type?: NOTIFICATION_TYPE;\n /** Action button text */\n buttonText?: string;\n /** Action button click callback */\n buttonClick?: () => void;\n /** Notification close callback. */\n onClose?: () => void;\n /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel?: string;\n};\n\n/**\n * This dummy component is used to extract props for documentation in Storybook.\n * @param props\n * @returns\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function StoryProps(props: NotificationProps) {\n return null;\n}\n\n/** Maps notification position to layer position */\nconst positionMap = {\n [NOTIFICATION_POSITION.TOP_LEFT]: LAYER_POSITION.TOP_LEFT,\n [NOTIFICATION_POSITION.TOP_RIGHT]: LAYER_POSITION.TOP_RIGHT,\n [NOTIFICATION_POSITION.BOTTOM_LEFT]: LAYER_POSITION.BOTTOM_LEFT,\n [NOTIFICATION_POSITION.BOTTOM_RIGHT]: LAYER_POSITION.BOTTOM_RIGHT,\n};\n\n/** Notification class */\nclass Notification {\n /** Helps in maintaining single instance for different positions. */\n private containers: Map<\n NOTIFICATION_POSITION,\n {\n manager: NotificationManager | null;\n root: Root;\n div: HTMLDivElement;\n }\n > = new Map();\n\n /**\n * Adds a notification\n *\n * @param position - The position where the notification should appear\n * @param options - Configuration options for the notification\n * @returns The notification ID or a promise that resolves to the notification ID\n */\n public add = (\n position: NOTIFICATION_POSITION,\n options: NotificationOptions,\n ariaLabel: string = 'Notifications',\n ) => {\n if (!this.containers.has(position)) {\n /** Callback ref to capture the NotificationManager instance when it mounts */\n const refCallback: RefCallback<NotificationManager> = (instance) => {\n if (instance) {\n const container = this.containers.get(position);\n if (container) {\n container.manager = instance;\n }\n }\n };\n\n const [Component] = LayerManager.renderLayer({\n closeOnEsc: false,\n closeOnOverlayClick: false,\n position: positionMap[position],\n alwaysOnTop: true,\n component: (\n <NotificationManager\n ref={refCallback}\n position={position}\n onEmpty={() => this.destroy(position)}\n ariaLabel={ariaLabel}\n />\n ),\n });\n\n // Create a div to mount the Component\n const div = document.createElement('div');\n document.body.appendChild(div);\n const root = createRoot(div);\n\n this.containers.set(position, {\n manager: null,\n root,\n div,\n });\n\n // Render the Component which will trigger the LayerManager's useEffect\n flushSync(() => {\n root.render(<Component />);\n });\n }\n\n const container = this.containers.get(position);\n if (container && container.manager) {\n return container.manager.add(options);\n }\n\n // If manager is not ready yet, wait a bit and retry\n return new Promise<string>((resolve) => {\n setTimeout(() => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n resolve(container.manager.add(options));\n }\n }, 10);\n });\n };\n\n /**\n * Removes a notification\n *\n * @param position - The position of the notification container\n * @param id - The unique ID of the notification to remove\n */\n public remove = (position: NOTIFICATION_POSITION, id: string) => {\n const container = this.containers.get(position);\n if (container && container.manager) {\n container.manager.remove(id);\n }\n };\n\n /**\n * Destroys entire stack of notifications at a position.\n * Unmounts the React root and cleans up DOM elements.\n *\n * @param position - The position of the notification container to destroy\n */\n public destroy = (position: NOTIFICATION_POSITION) => {\n const container = this.containers.get(position);\n if (container) {\n container.root.unmount();\n if (document.body.contains(container.div)) {\n document.body.removeChild(container.div);\n }\n this.containers.delete(position);\n }\n };\n}\n\n/** Export a singleton instance */\nexport default new Notification();\n","import React from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst SpinnerDiv = styled.div<SpinnerProp>`\n border: 4px solid ${getThemeValue(THEME_NAME.PRIMARY)};\n border-top: 4px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n border-radius: 50%;\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n margin: 0 auto;\n animation: spin 1s linear infinite;\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n\ntype SpinnerProp = {\n /**\n * Spinner's size\n * @default 30\n */\n size?: number;\n /**\n * Accessible label for screen readers\n * @default 'Loading'\n */\n label?: string;\n};\n\nfunction SpinnerComponent(props: SpinnerProp, ref: React.Ref<HTMLDivElement>) {\n const { label = 'Loading', size = 30, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n ref={ref}\n size={size}\n role=\"status\"\n aria-label={label || undefined}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProp>(SpinnerComponent);\nexport default Spinner;\n","import React, { Children, PropsWithChildren, useState, isValidElement } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 400px;\n`;\n\nconst Header = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)};\n\n @media (min-width: 601px) {\n &::before {\n position: absolute;\n top: 25px;\n left: 0;\n right: 0;\n height: 2px;\n background-color: ${getThemeValue(THEME_NAME.LIGHT_GREY)};\n content: ' ';\n z-index: 0;\n }\n }\n\n & > * {\n z-index: 1;\n }\n`;\n\nconst HeaderButton = styled.button<{ active: boolean }>`\n border: none;\n padding: 16px 24px 16px 16px;\n font-size: 16px;\n cursor: pointer;\n background-color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.BORDER_LIGHT_COLOR)\n : getThemeValue(THEME_NAME.BACKGROUND)};\n font-weight: ${(props) => (props.active ? 'bold' : 'normal')};\n overflow: hidden;\n display: flex;\n align-items: center;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n\n &:disabled {\n cursor: not-allowed;\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n }\n\n &:enabled:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n }\n\n @media (max-width: 600px) {\n & {\n display: none;\n }\n }\n`;\n\nconst MobileHeader = styled.div`\n padding: 16px;\n font-size: 16px;\n line-height: 18px;\n align-items: center;\n font-weight: bold;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n @media (min-width: 601px) {\n & {\n display: none;\n }\n }\n`;\n\ntype StepperProps = PropsWithChildren<{\n /**\n * Index of currently active step\n * @default 0\n */\n active?: number;\n /** Callback function for click event on a step */\n onStepClick?: (index: number) => void;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\nfunction StepperComponent(props: StepperProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onStepClick, children, ...rest } = props;\n\n const [active, setActive] = useState(propsActive);\n const childrenArray = Children.toArray(children);\n const stepRefs = [] as Array<HTMLButtonElement | null>;\n\n const stepClickHandler = (index: number) => () => {\n setActive(index);\n onStepClick?.(index);\n // Move focus to the active step\n stepRefs[index]?.focus();\n };\n\n const getBadgeType = (index: number, completed: boolean, disabled: boolean) => {\n if (disabled) {\n return BADGE_TYPE.DISABLED;\n } else if (index === active) {\n return BADGE_TYPE.PRIMARY;\n } else if (completed) {\n return BADGE_TYPE.SUCCESS;\n }\n return BADGE_TYPE.DISABLED;\n };\n\n // Keyboard navigation for step buttons\n const onStepKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n stepRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n stepRefs[prev]?.focus();\n }\n };\n\n return (\n <Container ref={ref} {...rest}>\n <Header role=\"tablist\" aria-label=\"Stepper Steps\">\n {Children.map(children, (child, index) => {\n if (!isValidElement(child)) return null;\n return (\n <HeaderButton\n ref={(el) => (stepRefs[index] = el)}\n active={index === active}\n type=\"button\"\n role=\"tab\"\n aria-selected={index === active}\n aria-disabled={!!child.props.disabled}\n tabIndex={index === active ? 0 : -1}\n disabled={child.props.disabled}\n onClick={stepClickHandler(index)}\n onKeyDown={onStepKeyDown(index)}\n >\n <Badge\n inline\n type={getBadgeType(\n index,\n child.props.completed,\n child.props.disabled,\n )}\n />\n <Ellipsis>{child.props.name}</Ellipsis>\n </HeaderButton>\n );\n })}\n <MobileHeader>\n <span>\n {isValidElement(childrenArray[active])\n ? childrenArray[active].props.name\n : ''}\n </span>\n <Badge inline type={BADGE_TYPE.PRIMARY}>\n {active + 1} of {Children.count(children)}\n </Badge>\n </MobileHeader>\n </Header>\n {childrenArray[active]}\n </Container>\n );\n}\n\nconst Stepper = React.forwardRef(StepperComponent);\nexport default Stepper;\n","import React from 'react';\nimport styled from '@emotion/styled';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\n\ntype StepProps = {\n /**\n * Name of the step to be displayed in the header\n */\n name: string;\n /**\n * Disables the step\n * @default false\n */\n disabled?: boolean;\n /**\n * Marks the step as completed\n * @default false\n */\n completed?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nfunction StepComponent(props: React.PropsWithChildren<StepProps>, ref: React.Ref<HTMLDivElement>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} ref={ref} />;\n}\n\nconst Step = React.forwardRef(StepComponent);\nexport default Step;\n","import {\n useState,\n Children,\n useEffect,\n PropsWithChildren,\n isValidElement,\n forwardRef,\n} from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Button = styled.button<{ active: boolean }>`\n background-color: transparent;\n border: none;\n padding: 8px 12px;\n font-size: 14px;\n border-radius: 3px 3px 0 0;\n border-bottom: ${(props) =>\n props.active ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}` : 'none'};\n color: ${(props) =>\n props.active\n ? getThemeValue(THEME_NAME.PRIMARY)\n : getThemeValue(THEME_NAME.TEXT_COLOR_DARK)};\n cursor: pointer;\n\n &:hover,\n &:focus {\n background-color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHTER)};\n border-bottom: ${(props) =>\n props.active\n ? `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`\n : `3px solid ${getThemeValue(THEME_NAME.PRIMARY)}`};\n }\n\n &[disabled] {\n background-color: ${getThemeValue(THEME_NAME.DISABLED_BACKGROUND)};\n color: ${getThemeValue(THEME_NAME.DISABLED)};\n border-bottom: 3px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n }\n`;\n\nconst ButtonContainer = styled.div`\n border-bottom: 1px solid ${getThemeValue(THEME_NAME.DISABLED_BORDER)};\n margin-bottom: 5px;\n position: relative;\n`;\n\nconst TabBody = styled.div`\n min-height: 150px;\n`;\n\ntype ITabsProps = PropsWithChildren<{\n /**\n * Active Tab Index\n * @default 0\n */\n active?: number;\n /** OnChange event handler */\n onChange?: (index: number) => void;\n /** Props for div that contains tab body */\n bodyProps?: React.HTMLAttributes<HTMLDivElement>;\n}>;\n\nfunction TabsComponent(props: ITabsProps, ref: React.Ref<HTMLDivElement>) {\n const { active: propsActive = 0, onChange, bodyProps, children, ...rest } = props;\n const [active, setActive] = useState(propsActive);\n const tabRefs = [] as Array<HTMLButtonElement | null>;\n const childrenArray = Children.toArray(children);\n\n const switchTab = (index: number) => () => {\n setActive(index);\n tabRefs[index]?.focus();\n onChange?.(index);\n };\n\n // Keyboard navigation for tab buttons\n const onTabKeyDown = (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n e.preventDefault();\n const next = (index + 1) % childrenArray.length;\n tabRefs[next]?.focus();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n e.preventDefault();\n const prev = (index - 1 + childrenArray.length) % childrenArray.length;\n tabRefs[prev]?.focus();\n }\n };\n\n useEffect(() => {\n if (propsActive !== undefined) {\n setActive(propsActive);\n onChange?.(propsActive);\n }\n }, [propsActive, onChange]);\n\n // Generate unique IDs for tabs and panels using sanitized tab name and index\n const sanitize = (str: string) => str.replace(/[^a-zA-Z0-9_-]/g, '').toLowerCase();\n const tabIds = childrenArray.map((child, i) => {\n const name = isValidElement(child) && child.props.name ? child.props.name : `tab${i}`;\n return `nfui-tab-${sanitize(name)}-${i}`;\n });\n const panelIds = childrenArray.map((child, i) => {\n const name = isValidElement(child) && child.props.name ? child.props.name : `tab${i}`;\n return `nfui-tabpanel-${sanitize(name)}-${i}`;\n });\n\n // Sanity check for active index\n if (active === undefined || active < 0 || active >= childrenArray.length) {\n return null;\n }\n\n return (\n <>\n <ButtonContainer role=\"tablist\" aria-label=\"Tabs\" ref={ref} {...rest}>\n {childrenArray.map((child, index) => (\n <Button\n key={tabIds[index]}\n ref={(el) => (tabRefs[index] = el)}\n id={tabIds[index]}\n type=\"button\"\n role=\"tab\"\n aria-selected={active === index}\n aria-controls={panelIds[index]}\n tabIndex={active === index ? 0 : -1}\n active={active === index}\n onClick={switchTab(index)}\n onKeyDown={onTabKeyDown(index)}\n disabled={isValidElement(child) ? child.props.disabled : false}\n aria-disabled={isValidElement(child) ? child.props.disabled : false}\n >\n {isValidElement(child) ? child.props.name : ''}\n </Button>\n ))}\n </ButtonContainer>\n <TabBody\n {...bodyProps}\n id={panelIds[active]}\n role=\"tabpanel\"\n aria-labelledby={tabIds[active]}\n tabIndex={0}\n >\n {childrenArray[active]}\n </TabBody>\n </>\n );\n}\n\nconst Tabs = forwardRef(TabsComponent);\nexport default Tabs;\n","import { PropsWithChildren } from 'react';\n\ntype TabProps = PropsWithChildren<{\n /** Name of the tab. This shown in the tab's button */\n name: string;\n /**\n * If the tab is disabled\n * @default false\n */\n disabled?: boolean;\n}>;\n\nconst Tab = (props: TabProps) => {\n const { children } = props;\n return <>{children}</>;\n};\n\nexport default Tab;\n","import { createRoot, type Root } from 'react-dom/client';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport LayerManager, { LAYER_POSITION } from '../../shared/LayerManager';\nimport { Card } from '../Card';\n\nexport interface ToastOptions {\n text: string;\n buttonText?: string;\n buttonClick?: () => void;\n duration?: number;\n type?: TOAST_TYPE;\n}\n\nexport enum TOAST_TYPE {\n NORMAL = 'NORMAL',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n WARNING = 'WARNING',\n DANGER = 'DANGER',\n}\n\nconst getBackgroundColor = (type: TOAST_TYPE) => {\n switch (type) {\n case TOAST_TYPE.INFO:\n return getThemeValue(THEME_NAME.INFO);\n case TOAST_TYPE.SUCCESS:\n return getThemeValue(THEME_NAME.SUCCESS);\n case TOAST_TYPE.WARNING:\n return getThemeValue(THEME_NAME.WARNING);\n case TOAST_TYPE.DANGER:\n return getThemeValue(THEME_NAME.ERROR);\n case TOAST_TYPE.NORMAL:\n return getThemeValue(THEME_NAME.TOAST);\n }\n};\n\nconst ToastContainer = styled(Card)<{ type: TOAST_TYPE }>`\n box-sizing: border-box;\n border-radius: 3px;\n padding: 12px;\n background-color: ${(props) => getBackgroundColor(props.type)};\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n margin: 20px;\n font-size: 14px;\n line-height: 20px;\n transform: translateY(100%);\n transition: transform 0.3s ease;\n width: 344px;\n display: flex;\n align-items: center;\n position: relative;\n\n & svg {\n width: 20px;\n height: 20px;\n fill: currentColor;\n }\n\n @media (max-width: 480px) {\n & {\n margin: 0;\n width: 100vw;\n border-radius: 0;\n }\n }\n\n .nf-layer-enter & {\n transform: translateY(0%);\n }\n`;\n\nconst TextContainer = styled.div`\n flex: 1;\n`;\n\nconst CloseContainer = styled.button`\n background-color: transparent;\n color: ${getThemeValue(THEME_NAME.PRIMARY_LIGHT)};\n padding: 6px 10px;\n border: none;\n border-radius: 3px;\n text-transform: uppercase;\n cursor: pointer;\n\n &:focus {\n background-color: rgba(255, 255, 255, 0.1);\n }\n`;\n\nconst DEFAULT_DURATION = 2000;\n\nconst createAriaLiveRegion = (id: string, ariaLive: 'polite' | 'assertive') => {\n const region = document.createElement('div');\n region.id = id;\n region.style.position = 'absolute';\n region.style.width = '1px';\n region.style.height = '1px';\n region.style.padding = '0';\n region.style.margin = '-1px';\n region.style.overflow = 'hidden';\n region.style.clip = 'rect(0, 0, 0, 0)';\n region.style.whiteSpace = 'nowrap';\n region.style.borderWidth = '0';\n region.setAttribute('role', ariaLive === 'assertive' ? 'alert' : 'log');\n region.setAttribute('aria-live', ariaLive);\n region.setAttribute('aria-atomic', 'true');\n return region;\n};\n\nclass Toast {\n private element?: HTMLDivElement;\n private ariaLiveContainer?: HTMLDivElement;\n private toast?: ReturnType<typeof LayerManager.renderLayer>;\n private timeout?: NodeJS.Timeout;\n private root?: Root;\n private politeRegion?: HTMLDivElement;\n private assertiveRegion?: HTMLDivElement;\n private isPaused: boolean = false;\n private currentOptions: ToastOptions | null = null;\n\n constructor() {\n if (typeof document === 'undefined') return;\n\n this.element = document?.createElement('div');\n this.ariaLiveContainer = document?.createElement('div');\n this.ariaLiveContainer.id = 'nf-toast-container';\n document.body.appendChild(this.ariaLiveContainer);\n\n this.politeRegion = createAriaLiveRegion('nf-toast-polite-region', 'polite');\n this.assertiveRegion = createAriaLiveRegion('nf-toast-assertive-region', 'assertive');\n this.ariaLiveContainer.appendChild(this.politeRegion);\n this.ariaLiveContainer.appendChild(this.assertiveRegion);\n\n this.setupKeyboardListeners();\n }\n\n /**\n * Clean up event listeners and DOM elements\n * Call this when the app is tearing down (useful for tests)\n */\n public destroy = () => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n this.remove();\n if (this.ariaLiveContainer && document.body.contains(this.ariaLiveContainer)) {\n document.body.removeChild(this.ariaLiveContainer);\n }\n this.politeRegion = undefined;\n this.assertiveRegion = undefined;\n this.ariaLiveContainer = undefined;\n };\n\n /**\n * Set up keyboard listener for dismissing toast with Escape key\n */\n private setupKeyboardListeners = () => {\n if (typeof document !== 'undefined') {\n document.addEventListener('keydown', this.handleKeyDown);\n }\n };\n\n /**\n * Handle keyboard events for toast interaction\n */\n private handleKeyDown = (event: KeyboardEvent) => {\n if (!this.toast) return;\n\n // Escape key dismisses the toast\n if (event.key === 'Escape') {\n this.remove();\n }\n // Space key pauses/resumes auto-dismiss\n else if (event.key === ' ' && this.currentOptions) {\n event.preventDefault();\n if (this.isPaused) {\n this.resumeTimeout();\n } else {\n this.pauseTimeout();\n }\n }\n };\n\n /**\n * Update the appropriate live region with toast content\n */\n private updateLiveRegion = (content: string, isAssertive: boolean) => {\n const region = isAssertive ? this.assertiveRegion : this.politeRegion;\n\n if (region) {\n region.textContent = '';\n // Add content after delay\n setTimeout(() => {\n if (region) {\n region.textContent = content;\n }\n }, 200);\n }\n };\n\n public remove = () => {\n if (this.toast) {\n this.toast[1]();\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }\n this.toast = undefined;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = undefined;\n }\n }, 300);\n };\n\n /**\n * Pause toast auto-dismiss\n */\n private pauseTimeout = () => {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.isPaused = true;\n }\n };\n\n /**\n * Resume toast auto-dismiss\n */\n private resumeTimeout = () => {\n if (this.currentOptions && this.isPaused) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.currentOptions.duration || DEFAULT_DURATION);\n this.isPaused = false;\n }\n };\n\n /**\n * Pause toast when user is hovering over it.\n */\n public pause = () => {\n this.pauseTimeout();\n };\n\n /**\n * Restart the removal of toast.\n */\n public resume = (options: ToastOptions) => () => {\n this.currentOptions = options;\n this.resumeTimeout();\n };\n\n public add(options: ToastOptions) {\n if (!this.element) return;\n\n const { text, buttonText, buttonClick, duration, type = TOAST_TYPE.NORMAL } = options;\n this.currentOptions = options;\n this.isPaused = false;\n this.remove();\n\n // Determine if this is an assertive message (warning/danger)\n const isAssertive = type === TOAST_TYPE.WARNING || type === TOAST_TYPE.DANGER;\n\n // Announce to screen readers\n const announcement = buttonText ? `${text} ${buttonText} button available` : text;\n this.updateLiveRegion(announcement, isAssertive);\n\n this.toast = LayerManager.renderLayer({\n exitDelay: 300,\n closeOnEsc: false,\n closeOnOverlayClick: false,\n alwaysOnTop: true,\n position: LAYER_POSITION.BOTTOM_LEFT,\n component: (\n <>\n {/* Visual toast (hidden from screen readers) */}\n <ToastContainer\n {...options}\n type={type}\n elevated\n onMouseEnter={this.pause}\n onMouseLeave={this.resume(options)}\n aria-hidden=\"true\"\n >\n <TextContainer>{text}</TextContainer>\n {buttonText && (\n <CloseContainer\n onClick={buttonClick}\n type=\"button\"\n aria-label={`${buttonText} - Press Space to pause auto-dismiss, Escape to close`}\n >\n {buttonText}\n </CloseContainer>\n )}\n </ToastContainer>\n </>\n ),\n });\n const Component = this.toast[0];\n this.root = createRoot(this.element);\n this.root.render(<Component />);\n\n this.timeout = setTimeout(() => {\n this.remove();\n }, duration || DEFAULT_DURATION);\n }\n}\n\nexport default new Toast();\n","import React, { useId } from 'react';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport enum TOOLTIP_POSITION {\n TOP = 'TOP',\n BOTTOM = 'BOTTOM',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n}\n\nconst positionStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n left: 0;\n transform: translateX(-50%) scale(0);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n right: 0;\n transform: translateX(50%) scale(0);\n `,\n [TOOLTIP_POSITION.TOP]: `\n top: 0;\n transform: translateY(-10px) scale(0);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n bottom: 0;\n transform: translateY(10px) scale(0);\n `,\n};\n\nconst positionHoverStyle = {\n [TOOLTIP_POSITION.LEFT]: `\n transform: translateX(-100%) scale(1);\n `,\n [TOOLTIP_POSITION.RIGHT]: `\n transform: translateX(100%) scale(1);\n `,\n [TOOLTIP_POSITION.TOP]: `\n transform: translateY(-25px) scale(1);\n `,\n [TOOLTIP_POSITION.BOTTOM]: `\n transform: translateY(25px) scale(1);\n `,\n};\n\nconst TooltipDiv = styled.div<{ position: TOOLTIP_POSITION }>`\n position: absolute;\n background-color: ${getThemeValue(THEME_NAME.TOOLTIP_COLOR)};\n padding: 5px;\n color: ${getThemeValue(THEME_NAME.TEXT_COLOR_LIGHT)};\n border-radius: 3px;\n transition: transform 0.3s ease;\n font-size: 12px;\n z-index: 1;\n ${(props) => positionStyle[props.position]}\n`;\n\nconst TooltipContainer = styled.div<{ position: TOOLTIP_POSITION }>`\n position: relative;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &:hover ${TooltipDiv}, &:focus-within ${TooltipDiv} {\n ${(props) => positionHoverStyle[props.position]}\n }\n`;\n\ntype TooltipProps = React.PropsWithChildren<{\n /** Text to show in the tooltip */\n tooltipText: string | React.ReactNode;\n /**\n * Position of the tooltip\n * @default TOOLTIP_POSITION.BOTTOM\n */\n position?: TOOLTIP_POSITION;\n}> &\n React.HTMLAttributes<HTMLDivElement>;\n\nfunction TooltipComponent(props: TooltipProps, ref: React.Ref<HTMLDivElement>) {\n const { children, position = TOOLTIP_POSITION.BOTTOM, ...rest } = props;\n const tooltipId = useId();\n\n // Clone the child to inject aria-describedby and tabIndex if possible\n const trigger = React.isValidElement(children)\n ? React.cloneElement(children as React.ReactElement, {\n 'aria-describedby': tooltipId,\n tabIndex:\n children.props && typeof children.props.tabIndex !== 'undefined'\n ? children.props.tabIndex\n : 0,\n })\n : children;\n\n return (\n <TooltipContainer {...rest} ref={ref} position={position}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText as React.ReactNode}\n </TooltipDiv>\n </TooltipContainer>\n );\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(TooltipComponent);\nexport default Tooltip;\n"],"names":["Accordion","props","active","setActive","useState","onStepClick","index","disabled","newIndex","_jsx","_Fragment","Children","map","children","child","isValidElement","cloneElement","open","CheckCircle","_jsxs","svg","height","viewBox","width","fill","path","d","ExpandMore","FiberManualRecord","circle","cx","cy","r","Close","THEME_NAME","themeNameMap","getThemeValue","key","Ellipsis","styled","Header","BORDER_LIGHT_COLOR","Body","Footer","BADGE_TYPE","BadgeSpan","type","SUCCESS","WARNING","ERROR","DISABLED","PRIMARY","TEXT_COLOR_LIGHT","inline","BadgeComponent","ref","Badge","React","forwardRef","StyledCard","BACKGROUND","elevated","MODAL_SHADOW","SHADOW","CardComponent","Card","Step","StepHeader","TEXT_COLOR_DARK","PRIMARY_LIGHT","HeaderContainer","completed","LIGHT_GREY","ExpandContainer","StepBody","AccordionBadge","AccordionStepBody","AccordionStepFooter","AccordionStepComponent","setHeight","header","errorText","restProps","headerId","useId","regionId","contentRef","useRef","useEffect","el","current","scrollHeight","onClick","aria-expanded","aria-controls","id","aria-hidden","DANGER","role","aria-labelledby","AccordionStep","StyledButton","BORDER_COLOR","DISABLED_BACKGROUND","ButtonComponent","rest","Button","StyledLinkButton","LinkButtonComponent","LinkButton","StyledRaisedButton","HOVER_SHADOW","RaisedButtonComponent","RaisedButton","StyledActionButton","ActionButtonComponent","ActionButton","StyledIconButton","IconButtonComponent","IconButton","Container","ERROR_LIGHT","ChipComponent","label","onCloseClick","closeButtonAriaLabel","keyUpHandler","e","buttonKeyDownHandler","stopPropagation","onKeyUp","onKeyDown","aria-label","Chip","ORIENTATION","DragContext","createContext","Item","showIndicator","orientation","VERTICAL","HORIZONTAL","dragging","DragKnob","DragItem","dragOver","totalItems","setAnnouncement","touchTimerRef","context","useContext","vibrate","duration","navigator","dragStartHandler","setStartIndex","setIsDragging","dragOverHandler","preventDefault","startIndex","dragExitHandler","dropHandler","drop","touchStartHandler","clearTimeout","setTimeout","setDragOver","document","body","style","overflow","touchMoveHandler","touch","touches","isDragging","elementFromPoint","clientX","clientY","overAttr","closest","getAttribute","overIndex","parseInt","touchEndHandler","handleKeyDown","isVertical","moveUp","moveDown","isGrabbed","i18n","replacePlaceholders","droppedAnnouncementTemplate","position","startGrab","grabbedAnnouncementTemplate","cancel","cancelledAnnouncementTemplate","onDrop","movedAnnouncementTemplate","draggable","data-drag-index","tabIndex","itemAriaLabelTemplate","aria-grabbed","onDragStart","undefined","onDragOver","onDragLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","dragHandleAriaLabel","DragIndicator","VisuallyHidden","DragAndDropComponent","originalIndex","setOriginalIndex","announcement","childrenArray","toArray","length","template","data","replace","String","grabKey","dropKey","altDropKey","cancelKey","moveKeys","Provider","value","aria-live","aria-atomic","DragAndDrop","Label","DISABLED_BORDER","touched","required","text","ErrorContainer","ChipInputComponent","propValue","addedAnnouncementTemplate","removedAnnouncementTemplate","setText","setTouched","setValue","InputRef","errorId","useImperativeHandle","replacePlaceholder","Array","isArray","updateValue","newValue","deduped","from","Set","onChange","handleFocus","onFocus","handleChange","target","handleKeyUp","trim","validity","valid","removeChip","chipToRemove","filter","chip","start","end","newItems","item","splice","input","aria-required","aria-invalid","aria-describedby","div","span","ChipInput","LAYER_POSITION","defaultConfig","closeOnEsc","overlay","component","exitDelay","closeOnOverlayClick","alwaysOnTop","POSITION_STYLE","BACKDROP_COLOR","zIndex","KEY_CODES","ESC","LayerManager","layers","nextIndex","timeoutIds","Map","destroy","keyupHandler","removeEventListener","forEach","clear","layer","contains","element","removeChild","unmount","resp","setAttribute","findIndex","timeoutId","window","delete","config","closeCallback","err","Error","console","warn","message","set","Empty","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","LayerContainer","divElement","setDivElement","createElement","appendChild","currentLayer","push","modifiedElements","originalBodyOverflow","originalBodyPosition","originalBodyWidth","originalBodyTop","scrollY","bodyChildren","tagName","hadAriaHidden","hasAttribute","previousValue","top","removeAttribute","scrollTo","ReactDOM","createPortal","keyCode","lastLayer","slice","addEventListener","DialogContainer","Dialog","Component","shouldComponentUpdate","nextProps","nextState","state","show","componentWillUnmount","closeDialog","restoreFocus","onCloseFn","render","LayerComponent","lastFocusedElement","dialogRef","createRef","getFocusableElements","querySelectorAll","focusableElements","firstElement","lastElement","shiftKey","activeElement","focus","elementToBeFocused","setDialogRef","node","setInitialFocus","root","firstChild","firstElementChild","DIALOG","aria-modal","setState","close","defaultProps","dialogCounter","AlertDialog","titleId","descriptionId","dialogProps","dialog","DialogHeader","DialogBody","DialogFooter","buttonText","Promise","resolve","onClose","ConfirmDialog","yesText","noText","confirm","reject","TextField","Input","onChangeHandler","displayName","TextAreaComponent","propsValue","TextArea","SelectField","ArrowContainer","SelectComponent","multiple","option","Select","StyledCheckmark","HiddenInput","CheckboxComponent","fwdRef","indeterminate","checked","useCallback","aria-checked","Checkbox","Switch","ToggleComponent","Toggle","StyledRadio","RadioComponent","Radio","RadioGroup","RadioButtonComponent","RadioButton","MenuContainer","MenuInner","multiSelect","val","newVal","includes","container","currentTarget","items","indexOf","click","focusHandler","relatedTarget","firstItem","querySelector","MenuContext","aria-multiselectable","Menu","selected","multiselect","MenuItemInner","clickHandler","arr","aria-selected","readOnly","MenuItem","POPOVER_POSITION","positionMap","PopoverDiv","Popper","translateX","translateY","PopoverComponent","propsOpen","setOpen","closing","setClosing","translate","setTranslate","x","y","popperRef","containerRef","triggerRef","closeTimeoutRef","focusTimeoutRef","popperId","triggerId","keyupEventHandler","clickOutsideHandler","rafId","requestAnimationFrame","cancelAnimationFrame","left","right","getBoundingClientRect","viewportWidth","documentElement","clientWidth","viewportHeight","clientHeight","translation","Math","abs","nativeEvent","stopImmediatePropagation","Popover","DropdownComponent","outerRef","menuId","menuRef","timer","changeHandler","TriggerElement","passedProps","assignRefs","combinedRef","aria-haspopup","BOTTOM_LEFT","Dropdown","BodyText","InputContainer","StyledInput","PromptDialog","inputProps","submitText","cancelText","form","onSubmit","submit","valueChange","defaultValue","DRAWER_POSITION","positionStyle","size","before","after","DrawerDiv","TOP_LEFT","TOP_RIGHT","Drawer","getDerivedStateFromProps","componentDidMount","getSnapshotBeforeUpdate","prevProps","setDrawerRef","forceUpdate","setRefProp","drawerRef","GroupComponent","Group","Modal","ModalContainer","setModalRef","modalRef","NOTIFICATION_POSITION","NOTIFICATION_TYPE","getEntryAnimation","getExitAnimation","getBorderColor","SUCCESS_LIGHT","WARNING_LIGHT","INFO_LIGHT","getTitleColor","INFO","getTypeStyle","Notice","Title","FillParent","CloseButton","IconContainer","DEFAULT_DURATION","NotificationManager","Object","keys","timeouts","politeRegionRef","aria-relevant","assertiveRegionRef","ariaLabel","notices","notice","title","description","leaving","buttonClick","onMouseEnter","pause","onMouseLeave","resume","Info","ReportProblem","ErrorOutline","closeClickHandler","remove","onEmpty","add","random","toFixed","has","isUrgent","prevState","updateLiveRegion","sticky","content","isAssertive","region","textContent","BOTTOM_RIGHT","Notification","containers","options","refCallback","instance","get","manager","createRoot","flushSync","SpinnerDiv","SpinnerComponent","aria-busy","Spinner","HeaderButton","PRIMARY_LIGHTER","MobileHeader","StepperComponent","propsActive","stepRefs","stepClickHandler","getBadgeType","onStepKeyDown","next","prev","aria-disabled","name","count","Stepper","StepComponent","ButtonContainer","TabBody","TabsComponent","bodyProps","tabRefs","switchTab","onTabKeyDown","sanitize","str","toLowerCase","tabIds","i","panelIds","Tabs","Tab","TOAST_TYPE","getBackgroundColor","TOAST","ToastContainer","TextContainer","CloseContainer","createAriaLiveRegion","ariaLive","padding","margin","clip","whiteSpace","borderWidth","Toast","currentOptions","isPaused","toast","timeout","ariaLiveContainer","politeRegion","assertiveRegion","setupKeyboardListeners","event","resumeTimeout","pauseTimeout","TOOLTIP_POSITION","positionHoverStyle","TooltipDiv","TOOLTIP_COLOR","TooltipContainer","TooltipComponent","tooltipId","trigger","tooltipText","Tooltip"],"mappings":"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"}
|