no-frills-ui 0.0.14-alpha.6 → 0.0.14-alpha.8
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/dist/index.js +87 -87
- package/dist/index.js.map +1 -1
- package/lib-esm/components/Accordion/Accordion.js +1 -0
- package/lib-esm/components/Accordion/Accordion.js.map +1 -0
- package/lib-esm/components/Accordion/AccordionStep.js +9 -8
- package/lib-esm/components/Accordion/AccordionStep.js.map +1 -0
- package/lib-esm/components/Badge/Badge.js +2 -1
- package/lib-esm/components/Badge/Badge.js.map +1 -0
- package/lib-esm/components/Button/ActionButton.js +2 -1
- package/lib-esm/components/Button/ActionButton.js.map +1 -0
- package/lib-esm/components/Button/Button.js +2 -1
- package/lib-esm/components/Button/Button.js.map +1 -0
- package/lib-esm/components/Button/IconButton.js +2 -1
- package/lib-esm/components/Button/IconButton.js.map +1 -0
- package/lib-esm/components/Button/LinkButton.js +2 -1
- package/lib-esm/components/Button/LinkButton.js.map +1 -0
- package/lib-esm/components/Button/RaisedButton.js +2 -1
- package/lib-esm/components/Button/RaisedButton.js.map +1 -0
- package/lib-esm/components/Card/Card.js +2 -1
- package/lib-esm/components/Card/Card.js.map +1 -0
- package/lib-esm/components/Chip/Chip.js +3 -2
- package/lib-esm/components/Chip/Chip.js.map +1 -0
- package/lib-esm/components/ChipInput/ChipInput.js +4 -3
- package/lib-esm/components/ChipInput/ChipInput.js.map +1 -0
- package/lib-esm/components/Dialog/AlertDialog.js +1 -0
- package/lib-esm/components/Dialog/AlertDialog.js.map +1 -0
- package/lib-esm/components/Dialog/ConfirmDialog.js +1 -0
- package/lib-esm/components/Dialog/ConfirmDialog.js.map +1 -0
- package/lib-esm/components/Dialog/Dialog.js +2 -1
- package/lib-esm/components/Dialog/Dialog.js.map +1 -0
- package/lib-esm/components/Dialog/PromptDialog.js +4 -3
- package/lib-esm/components/Dialog/PromptDialog.js.map +1 -0
- package/lib-esm/components/DragAndDrop/DragAndDrop.js +3 -2
- package/lib-esm/components/DragAndDrop/DragAndDrop.js.map +1 -0
- package/lib-esm/components/DragAndDrop/DragItem.js +4 -3
- package/lib-esm/components/DragAndDrop/DragItem.js.map +1 -0
- package/lib-esm/components/DragAndDrop/types.js +1 -0
- package/lib-esm/components/DragAndDrop/types.js.map +1 -0
- package/lib-esm/components/Drawer/Drawer.js +2 -1
- package/lib-esm/components/Drawer/Drawer.js.map +1 -0
- package/lib-esm/components/Groups/Group.js +3 -2
- package/lib-esm/components/Groups/Group.js.map +1 -0
- package/lib-esm/components/Groups/GroupLabel.js +2 -1
- package/lib-esm/components/Groups/GroupLabel.js.map +1 -0
- package/lib-esm/components/Input/Checkbox.js +4 -3
- package/lib-esm/components/Input/Checkbox.js.map +1 -0
- package/lib-esm/components/Input/Dropdown.js +2 -1
- package/lib-esm/components/Input/Dropdown.js.map +1 -0
- package/lib-esm/components/Input/Input.js +4 -3
- package/lib-esm/components/Input/Input.js.map +1 -0
- package/lib-esm/components/Input/Radio.js +4 -3
- package/lib-esm/components/Input/Radio.js.map +1 -0
- package/lib-esm/components/Input/RadioButton.js +4 -3
- package/lib-esm/components/Input/RadioButton.js.map +1 -0
- package/lib-esm/components/Input/Select.js +5 -4
- package/lib-esm/components/Input/Select.js.map +1 -0
- package/lib-esm/components/Input/TextArea.js +4 -3
- package/lib-esm/components/Input/TextArea.js.map +1 -0
- package/lib-esm/components/Input/Toggle.js +3 -2
- package/lib-esm/components/Input/Toggle.js.map +1 -0
- package/lib-esm/components/Menu/Menu.js +2 -1
- package/lib-esm/components/Menu/Menu.js.map +1 -0
- package/lib-esm/components/Menu/MenuContext.js +1 -0
- package/lib-esm/components/Menu/MenuContext.js.map +1 -0
- package/lib-esm/components/Menu/MenuItem.js +2 -1
- package/lib-esm/components/Menu/MenuItem.js.map +1 -0
- package/lib-esm/components/Modal/Modal.js +1 -0
- package/lib-esm/components/Modal/Modal.js.map +1 -0
- package/lib-esm/components/Notification/Notification.js +1 -0
- package/lib-esm/components/Notification/Notification.js.map +1 -0
- package/lib-esm/components/Notification/NotificationManager.js +1 -0
- package/lib-esm/components/Notification/NotificationManager.js.map +1 -0
- package/lib-esm/components/Notification/style.js +10 -9
- package/lib-esm/components/Notification/style.js.map +1 -0
- package/lib-esm/components/Notification/types.js +1 -0
- package/lib-esm/components/Notification/types.js.map +1 -0
- package/lib-esm/components/Popover/Popover.js +3 -2
- package/lib-esm/components/Popover/Popover.js.map +1 -0
- package/lib-esm/components/Spinner/Spinner.js +2 -1
- package/lib-esm/components/Spinner/Spinner.js.map +1 -0
- package/lib-esm/components/Stepper/Step.js +2 -1
- package/lib-esm/components/Stepper/Step.js.map +1 -0
- package/lib-esm/components/Stepper/Stepper.js +5 -4
- package/lib-esm/components/Stepper/Stepper.js.map +1 -0
- package/lib-esm/components/Tabs/Tab.js +1 -0
- package/lib-esm/components/Tabs/Tab.js.map +1 -0
- package/lib-esm/components/Tabs/Tabs.js +4 -3
- package/lib-esm/components/Tabs/Tabs.js.map +1 -0
- package/lib-esm/components/Toast/Toast.js +4 -3
- package/lib-esm/components/Toast/Toast.js.map +1 -0
- package/lib-esm/components/Tooltip/Tooltip.js +3 -2
- package/lib-esm/components/Tooltip/Tooltip.js.map +1 -0
- package/lib-esm/components/index.js +1 -0
- package/lib-esm/components/index.js.map +1 -0
- package/lib-esm/icons/CheckCircle.js +1 -0
- package/lib-esm/icons/CheckCircle.js.map +1 -0
- package/lib-esm/icons/Close.js +1 -0
- package/lib-esm/icons/Close.js.map +1 -0
- package/lib-esm/icons/DragIndicator.js +1 -0
- package/lib-esm/icons/DragIndicator.js.map +1 -0
- package/lib-esm/icons/ErrorOutline.js +1 -0
- package/lib-esm/icons/ErrorOutline.js.map +1 -0
- package/lib-esm/icons/ExpandMore.js +1 -0
- package/lib-esm/icons/ExpandMore.js.map +1 -0
- package/lib-esm/icons/FiberManualRecord.js +1 -0
- package/lib-esm/icons/FiberManualRecord.js.map +1 -0
- package/lib-esm/icons/Info.js +1 -0
- package/lib-esm/icons/Info.js.map +1 -0
- package/lib-esm/icons/ReportProblem.js +1 -0
- package/lib-esm/icons/ReportProblem.js.map +1 -0
- package/lib-esm/shared/LayerManager.js +2 -1
- package/lib-esm/shared/LayerManager.js.map +1 -0
- package/lib-esm/shared/constants.js +1 -0
- package/lib-esm/shared/constants.js.map +1 -0
- package/lib-esm/shared/styles.js +5 -4
- package/lib-esm/shared/styles.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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';\nimport PropTypes from 'prop-types';\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 = 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\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 PropTypes from 'prop-types';\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\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 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\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 styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport interface CardExtraProps {\n elevated?: boolean;\n}\n\nconst Card = styled.div<CardExtraProps>`\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\nexport default Card;\n","import React, { useState, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from '@emotion/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)<AccordionStepProps>`\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\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\nexport default function AccordionStep(props: React.PropsWithChildren<AccordionStepProps>) {\n const [height, setHeight] = useState(0);\n const { open, disabled, header, errorText, completed, onStepClick, children, ...restProps } =\n props;\n\n // Generate unique IDs for ARIA relationships\n const headerId = useId();\n const regionId = useId();\n\n const ref = (el?: HTMLDivElement) => setHeight(el?.scrollHeight || 0);\n\n return (\n <Step {...restProps} 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 <Badge\n css={css`\n margin-right: 15px;\n `}\n inline\n type={BADGE_TYPE.DANGER}\n >\n {errorText}\n </Badge>\n )}\n <ExpandMore aria-hidden=\"true\" />\n </ExpandContainer>\n </StepHeader>\n <StepBody\n ref={ref}\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\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};\n","import 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\nStyledButton.defaultProps = {\n type: 'button',\n};\n\nexport default StyledButton;\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } 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: ${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","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default 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","import styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport default 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","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default 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","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\nexport default function Chip(props: ChipProps & React.HTMLAttributes<HTMLSpanElement>) {\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} 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","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 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);\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;\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;\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 > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-bottom: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-left: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL && props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-right: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL && 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(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 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> = () => {\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) {\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 (e.key === moveDown && index < totalItems - 1) {\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 && 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 /** 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 /** i18n: Template for item aria-label. Placeholders: {:position}, {:grabKey}, {:moveKeys}, {:dropKey}, {:altDropKey} */\n itemAriaLabelTemplate?: string;\n /** i18n: Aria label for drag handle */\n dragHandleAriaLabel?: string;\n /** i18n: Template for grabbed announcement. Placeholders: {:position}, {:moveKeys}, {:dropKey}, {:altDropKey}, {:cancelKey} */\n grabbedAnnouncementTemplate?: string;\n /** i18n: Template for moved announcement. Placeholders: {:position} */\n movedAnnouncementTemplate?: string;\n /** i18n: Template for dropped announcement. Placeholders: {:position} */\n droppedAnnouncementTemplate?: string;\n /** i18n: Template for cancelled announcement */\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 {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 {\n orientation,\n children,\n onDrop,\n showIndicator,\n itemAriaLabelTemplate,\n dragHandleAriaLabel,\n grabbedAnnouncementTemplate,\n movedAnnouncementTemplate,\n droppedAnnouncementTemplate,\n cancelledAnnouncementTemplate,\n } = props;\n const [startIndex, setStartIndex] = useState<number>(null);\n const [originalIndex, setOriginalIndex] = useState<number>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number>(null);\n const [announcement, setAnnouncement] = useState('');\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) => {\n if (startIndex !== 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 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\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 /** Default item aria-label template */\n itemAriaLabelTemplate:\n 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n /** Default drag handle aria-label */\n dragHandleAriaLabel: 'Drag to reorder',\n /** Default grabbed announcement template */\n grabbedAnnouncementTemplate:\n 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n /** Default moved announcement template */\n movedAnnouncementTemplate: 'Item moved to position {:position}',\n /** Default dropped announcement template */\n droppedAnnouncementTemplate: 'Item dropped at position {:position}',\n /** Default cancelled announcement template */\n cancelledAnnouncementTemplate: 'Drag cancelled, item restored to original position',\n};\n","import React, { useEffect, useId, useState } from 'react';\nimport PropTypes from 'prop-types';\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\ntype ChipInputProps = PropTypes.InferProps<typeof ChipInput.propTypes>;\n\n// Label component for the ChipInput\nconst Label = styled.label<{\n text: string;\n touched?: boolean;\n errorText?: string;\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 &:has(:required) > span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\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 */\nexport default function ChipInput(\n props: ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>,\n) {\n const [text, setText] = useState('');\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState<string[]>(props.value || []);\n const InputRef = React.useRef<HTMLInputElement>(null);\n const [announcement, setAnnouncement] = useState('');\n const errorId = useId();\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(props.value)) {\n setValue(props.value);\n }\n }, [props.value]);\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(props.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(props.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 text={text} touched={touched} errorText={props.errorText}>\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 props.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\nChipInput.propTypes = {\n /** Label for the field */\n label: PropTypes.string.isRequired,\n /** Error message for the field */\n errorText: PropTypes.string,\n /** Values to display as chips */\n value: PropTypes.arrayOf(PropTypes.string),\n /** Callback when chips change */\n onChange: PropTypes.func,\n /** Aria label for the close button on chip. Defaults to \"Remove {label}\" */\n closeButtonAriaLabel: PropTypes.string,\n /** Announcement text when a chip is added. Defaults to \"{label} was added\" */\n addedAnnouncementTemplate: PropTypes.string,\n /** Announcement text when a chip is removed. Defaults to \"{label} was removed\" */\n removedAnnouncementTemplate: PropTypes.string,\n};\n\nChipInput.defaultProps = {\n value: [],\n closeButtonAriaLabel: 'Remove {:label}',\n addedAnnouncementTemplate: '{:label} was added',\n removedAnnouncementTemplate: '{:label} was removed',\n};\n","import React, { ReactPortal, 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;\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>(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 0.3s ease;\n ${(props) => POSITION_STYLE[props.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 = 10000;\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 (e) {\n console.warn(e.message);\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 /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [() => React.ReactPortal | null, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [() => null, () => {}];\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 : 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 = `nf-layer-manager-${currentIndex}`;\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 // Return callback which will trigger the un-mount.\n return [\n (): ReactPortal | null => {\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 onClick={overlayClickHandler} zIndex={currentIndex} {...layerConfig}>\n {layerConfig.component}\n </Container>,\n divElement,\n );\n },\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 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 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.ReactPortal | null;\n}\n\nclass Dialog extends React.Component<\n React.PropsWithChildren<DialogOptions> & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n DialogState\n> {\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?: unknown) => void;\n private onCloseFn: (resp?: unknown) => void;\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;\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 PropTypes from 'prop-types';\nimport { Button } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype AlertOption = PropTypes.InferProps<typeof AlertDialog.propTypes>;\n\nlet dialogCounter = 0;\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 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 PropTypes from 'prop-types';\nimport { Button, ActionButton } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\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 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 PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } 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 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';\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, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface TextAreaProps\n extends\n 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 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\nexport default function TextArea(props: TextAreaProps) {\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<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 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\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, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface SelectProps\n extends\n 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 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\nexport default function Select(props: SelectProps) {\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 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\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 { 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 = Omit<React.HTMLProps<HTMLInputElement>, 'as'> &\n PropTypes.InferProps<typeof Checkbox.propTypes>;\n\nexport default function Checkbox(props: CheckboxProps) {\n const ref = useCallback(\n (node: unknown) => {\n if (node !== null) {\n if (props.indeterminate) {\n (node as HTMLInputElement).indeterminate = true;\n }\n }\n },\n [props.indeterminate],\n );\n\n return (\n <Label>\n <HiddenInput\n {...props}\n ref={ref}\n type=\"checkbox\"\n aria-checked={props.indeterminate ? 'mixed' : props.checked}\n />\n <StyledCheckmark />\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 { 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 = PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes\n>;\n\nfunction Toggle(props: ToggleProps) {\n return (\n <Switch>\n <Input {...props} type=\"checkbox\" role=\"switch\" aria-checked={props.checked} />\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 { 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\nfunction Radio(\n props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Radio.propTypes>,\n) {\n return (\n <Label>\n <HiddenInput {...props} type=\"radio\" />\n <StyledRadio />\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 { 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\nfunction RadioButton(\n props: PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof RadioButton.propTypes\n >,\n) {\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\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: (newVal: T[]) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\nexport default createContext<MenuContextType<object>>(undefined);\n","import React, { useState, ReactNode, 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 */\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 &: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 {MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>} props - The menu properties.\n * @param {ForwardedRef<HTMLDivElement>} ref - The ref forwarded to the menu container.\n */\nconst Menu = React.forwardRef(function <T extends object>(\n props: MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { multiSelect, onChange, value: propValue, ...rest } = props;\n const [value, setValue] = useState(propValue || (multiSelect ? [] : ''));\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: 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 /**\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 <MenuContext.Provider\n value={\n {\n value,\n multiSelect,\n updateValue,\n } as unknown as React.ContextType<typeof MenuContext>\n }\n >\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 {props.children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n});\n\nMenu.displayName = 'Menu';\n\nMenu.defaultProps = {\n multiSelect: false,\n};\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\ninterface MenuItemProps<T> {\n /** Value of the element */\n value: T;\n}\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,>(\n props: MenuItemProps<T> & React.PropsWithChildren,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const context = useContext(MenuContext) as MenuContextType<T>;\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T & T[]);\n };\n\n const selected = context.multiSelect\n ? context.value?.includes?.(value)\n : context.value === value;\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> & React.PropsWithChildren & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\n\nexport default MenuItem;\n","import React, { useCallback, useEffect, useId, 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\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\nexport default function Popover(\n props: React.PropsWithChildren<PropTypes.InferProps<typeof Popover.propTypes>>,\n) {\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 const triggerRef = useRef<HTMLElement | null>(null);\n const closeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const focusTimeoutRef = useRef<NodeJS.Timeout | 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 (props.onClose) {\n props.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 }, [props]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (props.closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, props.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 (props.open) {\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 }, [props.open, open, clickOutsideHandler, close]);\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, props.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 return (\n <PopoverDiv ref={containerRef}>\n {React.createElement(props.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={props.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 {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 { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\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<unknown>;\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 {DropdownProps<T>} props - The properties for the Dropdown component.\n * @returns {JSX.Element} The rendered Dropdown component.\n */\nexport default function Dropdown<T extends object>(props: DropdownProps<T>) {\n const { multiSelect, onChange } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(props.value);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLInputElement>(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 <>\n <Input\n {...passedProps}\n ref={ref}\n type=\"text\"\n value={value && String(value)}\n label={props.label}\n errorText={props.errorText}\n onClick={clickHandler}\n onKeyDown={onKeyDown}\n required={props.required}\n disabled={props.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 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 {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 { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\n\ntype PromptOption = PropTypes.InferProps<typeof PromptDialog.propTypes>;\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 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\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 PropTypes from 'prop-types';\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\nconst drawerPropTypes = {\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\ntype DrawerProps = PropTypes.InferProps<typeof drawerPropTypes>;\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 propTypes = drawerPropTypes;\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 = null;\n this.layer = null;\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 * 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 />;\n }\n\n return null;\n }\n}\n","import React, { useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Container = styled.div<PropTypes.InferProps<typeof Group.propTypes>>`\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\nexport default function Group(\n props: React.PropsWithChildren<PropTypes.InferProps<typeof Group.propTypes>>,\n) {\n const errorId = useId();\n\n return (\n <>\n <Container {...props} aria-describedby={props.errorText ? errorId : undefined}>\n {props.children}\n </Container>\n {props.errorText && <ErrorContainer id={errorId}>{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 { 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 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\nconst modalPropTypes = {\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\ntype ModalProps = PropTypes.InferProps<typeof modalPropTypes>;\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 propTypes = modalPropTypes;\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 = null;\n this.layer = null;\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 = null;\n }\n this.layer = null;\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\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 // 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 {\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 {\n notices: [\n {\n ...notice,\n id,\n },\n ...this.state.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 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 /**\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 React, { type RefCallback } from 'react';\nimport PropTypes from 'prop-types';\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 = 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 /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel: PropTypes.string,\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<\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 PropTypes from 'prop-types';\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\nfunction Spinner(props: SpinnerProp) {\n const { label, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\ntype SpinnerProp = PropTypes.InferProps<typeof Spinner.propTypes>;\n\nSpinner.propTypes = {\n /** Spinner's size */\n size: PropTypes.number,\n /** Accessible label for screen readers */\n label: PropTypes.string,\n};\n\nSpinner.defaultProps = {\n size: 30,\n label: 'Loading',\n};\n\nexport default Spinner;\n","import { Children, PropsWithChildren, useState, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\ntype StepperProps = PropsWithChildren<{\n active: number;\n onStepClick?: (index: number) => void;\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 ${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\nexport default function Stepper(props: StepperProps) {\n const [active, setActive] = useState(props.active);\n const { children, onStepClick } = props;\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>\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\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} />;\n}\n\nStep.defaultProps = {\n disabled: false,\n completed: false,\n};\n","import { useState, Children, useEffect, PropsWithChildren, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\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 active?: number;\n onChange?: (index: number) => void;\n props?: object;\n bodyProps?: object;\n}>;\n\nexport default function Tabs(props: ITabsProps) {\n const [active, setActive] = useState(props.active);\n const { children } = props;\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 props.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 setActive(props.active);\n props.onChange?.(props.active);\n }, [props]);\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 return (\n <>\n <ButtonContainer role=\"tablist\" aria-label=\"Tabs\" {...props.props}>\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 id={panelIds[active]}\n role=\"tabpanel\"\n aria-labelledby={tabIds[active]}\n tabIndex={0}\n {...props.bodyProps}\n >\n {childrenArray[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\nTabs.defaultProps = {\n active: 0,\n};\n","import { 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;\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 = null;\n this.assertiveRegion = null;\n this.ariaLiveContainer = null;\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 region.textContent = '';\n\n if (region) {\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 = null;\n }\n }\n this.toast = null;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = null;\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 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 PropTypes from 'prop-types';\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\nexport default function Tooltip(props: React.PropsWithChildren<TooltipProps>) {\n const { children, position, ...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 position={position} {...rest}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText}\n </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":["Accordion","props","active","setActive","useState","onStepClick","index","disabled","newIndex","_jsx","_Fragment","Children","map","children","child","isValidElement","cloneElement","open","propTypes","PropTypes","number","func","defaultProps","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","Badge","bool","oneOf","css","any","Card","BACKGROUND","elevated","MODAL_SHADOW","SHADOW","Step","StepHeader","TEXT_COLOR_DARK","PRIMARY_LIGHT","HeaderContainer","completed","LIGHT_GREY","ExpandContainer","StepBody","AccordionStepBody","AccordionStepFooter","AccordionStep","setHeight","header","errorText","restProps","headerId","useId","regionId","ref","el","scrollHeight","onClick","aria-expanded","aria-controls","id","aria-hidden","DANGER","role","aria-labelledby","string","isRequired","StyledButton","BORDER_COLOR","DISABLED_BACKGROUND","HOVER_SHADOW","Container","Button","ERROR_LIGHT","Chip","label","onCloseClick","closeButtonAriaLabel","rest","keyUpHandler","e","buttonKeyDownHandler","stopPropagation","onKeyUp","onKeyDown","aria-label","ORIENTATION","DragContext","createContext","Item","showIndicator","orientation","VERTICAL","HORIZONTAL","dragging","DragKnob","DragItem","dragOver","totalItems","setAnnouncement","touchTimerRef","useRef","context","useContext","vibrate","duration","navigator","dragStartHandler","setStartIndex","setIsDragging","dragOverHandler","preventDefault","startIndex","dragExitHandler","dropHandler","drop","touchStartHandler","current","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","useEffect","draggable","data-drag-index","tabIndex","itemAriaLabelTemplate","aria-grabbed","onDragStart","undefined","onDragOver","onDragLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","dragHandleAriaLabel","DragIndicator","VisuallyHidden","DragAndDrop","originalIndex","setOriginalIndex","announcement","childrenArray","React","toArray","length","template","data","replace","String","grabKey","dropKey","altDropKey","cancelKey","moveKeys","Provider","value","aria-live","aria-atomic","Label","DISABLED_BORDER","touched","text","ErrorContainer","ChipInput","setText","setTouched","setValue","InputRef","errorId","replacePlaceholder","Array","isArray","updateValue","newValue","deduped","from","Set","onChange","handleFocus","onFocus","handleChange","target","handleKeyUp","trim","validity","valid","addedAnnouncementTemplate","removeChip","chipToRemove","filter","chip","removedAnnouncementTemplate","start","end","newItems","item","splice","input","required","aria-required","aria-invalid","aria-describedby","div","span","arrayOf","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","console","warn","message","set","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","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","dialogCounter","AlertDialog","titleId","descriptionId","dialogProps","dialog","DialogHeader","DialogBody","DialogFooter","buttonText","Promise","resolve","onClose","object","ConfirmDialog","yesText","noText","ActionButton","confirm","reject","TextField","Input","forwardRef","onChangeHandler","displayName","TextArea","SelectField","ArrowContainer","Select","multiple","option","StyledCheckmark","HiddenInput","Checkbox","useCallback","indeterminate","aria-checked","checked","Switch","Toggle","StyledRadio","Radio","RadioGroup","RadioButton","MenuContainer","Menu","multiSelect","propValue","val","newVal","includes","container","currentTarget","items","indexOf","click","focusHandler","relatedTarget","firstItem","querySelector","MenuContext","aria-multiselectable","selected","multiselect","MenuItemInner","clickHandler","aria-selected","readOnly","MenuItem","POPOVER_POSITION","positionMap","PopoverDiv","Popper","translateX","translateY","Popover","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","Dropdown","menuId","menuRef","timer","changeHandler","TriggerElement","passedProps","aria-haspopup","BOTTOM_LEFT","BodyText","InputContainer","StyledInput","PromptDialog","inputProps","submitText","cancelText","form","onSubmit","submit","valueChange","defaultValue","DRAWER_POSITION","positionStyle","size","before","after","DrawerDiv","drawerPropTypes","TOP_LEFT","TOP_RIGHT","Drawer","getDerivedStateFromProps","componentDidMount","getSnapshotBeforeUpdate","prevProps","setDrawerRef","forceUpdate","drawerRef","Group","modalPropTypes","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","updateLiveRegion","sticky","content","isAssertive","region","textContent","StoryProps","BOTTOM_RIGHT","Notification","containers","options","refCallback","instance","get","manager","createRoot","flushSync","SpinnerDiv","Spinner","aria-busy","HeaderButton","PRIMARY_LIGHTER","MobileHeader","Stepper","stepRefs","stepClickHandler","getBadgeType","onStepKeyDown","next","prev","aria-disabled","name","count","ButtonContainer","TabBody","Tabs","tabRefs","switchTab","onTabKeyDown","sanitize","str","toLowerCase","tabIds","i","panelIds","bodyProps","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","Tooltip","tooltipId","trigger","tooltipText","oneOfType"],"mappings":"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"}
|
|
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';\nimport PropTypes from 'prop-types';\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 = 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\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 PropTypes from 'prop-types';\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\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 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\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 styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport interface CardExtraProps {\n elevated?: boolean;\n}\n\nconst Card = styled.div<CardExtraProps>`\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\nexport default Card;\n","import React, { useState, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from '@emotion/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)<AccordionStepProps>`\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\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\nexport default function AccordionStep(props: React.PropsWithChildren<AccordionStepProps>) {\n const [height, setHeight] = useState(0);\n const { open, disabled, header, errorText, completed, onStepClick, children, ...restProps } =\n props;\n\n // Generate unique IDs for ARIA relationships\n const headerId = useId();\n const regionId = useId();\n\n const ref = (el?: HTMLDivElement) => setHeight(el?.scrollHeight || 0);\n\n return (\n <Step {...restProps} 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 <Badge\n css={css`\n margin-right: 15px;\n `}\n inline\n type={BADGE_TYPE.DANGER}\n >\n {errorText}\n </Badge>\n )}\n <ExpandMore aria-hidden=\"true\" />\n </ExpandContainer>\n </StepHeader>\n <StepBody\n ref={ref}\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\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};\n","import 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\nStyledButton.defaultProps = {\n type: 'button',\n};\n\nexport default StyledButton;\n","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } 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: ${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","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default 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","import styled from '@emotion/styled';\nimport { THEME_NAME, getThemeValue } from '../../shared/constants';\n\nexport default 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","import styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nexport default 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","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\nexport default function Chip(props: ChipProps & React.HTMLAttributes<HTMLSpanElement>) {\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} 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","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 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);\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;\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;\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 > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-bottom: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.VERTICAL && props.active < 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-left: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL && props.active > 0\n ? getThemeValue(THEME_NAME.PRIMARY)\n : 'transparent'};\n border-right: 2px dashed\n ${(props) =>\n props.orientation === ORIENTATION.HORIZONTAL && 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(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 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> = () => {\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) {\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 (e.key === moveDown && index < totalItems - 1) {\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 && 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 /** 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 /** i18n: Template for item aria-label. Placeholders: {:position}, {:grabKey}, {:moveKeys}, {:dropKey}, {:altDropKey} */\n itemAriaLabelTemplate?: string;\n /** i18n: Aria label for drag handle */\n dragHandleAriaLabel?: string;\n /** i18n: Template for grabbed announcement. Placeholders: {:position}, {:moveKeys}, {:dropKey}, {:altDropKey}, {:cancelKey} */\n grabbedAnnouncementTemplate?: string;\n /** i18n: Template for moved announcement. Placeholders: {:position} */\n movedAnnouncementTemplate?: string;\n /** i18n: Template for dropped announcement. Placeholders: {:position} */\n droppedAnnouncementTemplate?: string;\n /** i18n: Template for cancelled announcement */\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 {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 {\n orientation,\n children,\n onDrop,\n showIndicator,\n itemAriaLabelTemplate,\n dragHandleAriaLabel,\n grabbedAnnouncementTemplate,\n movedAnnouncementTemplate,\n droppedAnnouncementTemplate,\n cancelledAnnouncementTemplate,\n } = props;\n const [startIndex, setStartIndex] = useState<number>(null);\n const [originalIndex, setOriginalIndex] = useState<number>(null);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n const [dragOver, setDragOver] = useState<number>(null);\n const [announcement, setAnnouncement] = useState('');\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) => {\n if (startIndex !== 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 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\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 /** Default item aria-label template */\n itemAriaLabelTemplate:\n 'Item {:position}. Press {:grabKey} to grab, {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop',\n /** Default drag handle aria-label */\n dragHandleAriaLabel: 'Drag to reorder',\n /** Default grabbed announcement template */\n grabbedAnnouncementTemplate:\n 'Item {:position} grabbed. Use {:moveKeys} to move, {:dropKey} or {:altDropKey} to drop, {:cancelKey} to cancel',\n /** Default moved announcement template */\n movedAnnouncementTemplate: 'Item moved to position {:position}',\n /** Default dropped announcement template */\n droppedAnnouncementTemplate: 'Item dropped at position {:position}',\n /** Default cancelled announcement template */\n cancelledAnnouncementTemplate: 'Drag cancelled, item restored to original position',\n};\n","import React, { useEffect, useId, useState } from 'react';\nimport PropTypes from 'prop-types';\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\ntype ChipInputProps = PropTypes.InferProps<typeof ChipInput.propTypes>;\n\n// Label component for the ChipInput\nconst Label = styled.label<{\n text: string;\n touched?: boolean;\n errorText?: string;\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 &:has(:required) > span:after {\n content: '*';\n margin-left: 2px;\n color: ${getThemeValue(THEME_NAME.ERROR)};\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 */\nexport default function ChipInput(\n props: ChipInputProps & React.AllHTMLAttributes<HTMLInputElement>,\n) {\n const [text, setText] = useState('');\n const [touched, setTouched] = useState(false);\n const [value, setValue] = useState<string[]>(props.value || []);\n const InputRef = React.useRef<HTMLInputElement>(null);\n const [announcement, setAnnouncement] = useState('');\n const errorId = useId();\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(props.value)) {\n setValue(props.value);\n }\n }, [props.value]);\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(props.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(props.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 text={text} touched={touched} errorText={props.errorText}>\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 props.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\nChipInput.propTypes = {\n /** Label for the field */\n label: PropTypes.string.isRequired,\n /** Error message for the field */\n errorText: PropTypes.string,\n /** Values to display as chips */\n value: PropTypes.arrayOf(PropTypes.string),\n /** Callback when chips change */\n onChange: PropTypes.func,\n /** Aria label for the close button on chip. Defaults to \"Remove {label}\" */\n closeButtonAriaLabel: PropTypes.string,\n /** Announcement text when a chip is added. Defaults to \"{label} was added\" */\n addedAnnouncementTemplate: PropTypes.string,\n /** Announcement text when a chip is removed. Defaults to \"{label} was removed\" */\n removedAnnouncementTemplate: PropTypes.string,\n};\n\nChipInput.defaultProps = {\n value: [],\n closeButtonAriaLabel: 'Remove {:label}',\n addedAnnouncementTemplate: '{:label} was added',\n removedAnnouncementTemplate: '{:label} was removed',\n};\n","import React, { ReactPortal, 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;\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>(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 0.3s ease;\n ${(props) => POSITION_STYLE[props.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 = 10000;\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 (e) {\n console.warn(e.message);\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 /**\n * Renders a layer.\n * @param config\n */\n public renderLayer = (\n config: LayerConfig,\n ): [() => React.ReactPortal | null, (resp?: unknown) => void] => {\n // SSR guard\n if (typeof document === 'undefined') {\n return [() => null, () => {}];\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 : 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 = `nf-layer-manager-${currentIndex}`;\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 // Return callback which will trigger the un-mount.\n return [\n (): ReactPortal | null => {\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 onClick={overlayClickHandler} zIndex={currentIndex} {...layerConfig}>\n {layerConfig.component}\n </Container>,\n divElement,\n );\n },\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 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 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.ReactPortal | null;\n}\n\nclass Dialog extends React.Component<\n React.PropsWithChildren<DialogOptions> & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n DialogState\n> {\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?: unknown) => void;\n private onCloseFn: (resp?: unknown) => void;\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;\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 PropTypes from 'prop-types';\nimport { Button } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\n\ntype AlertOption = PropTypes.InferProps<typeof AlertDialog.propTypes>;\n\nlet dialogCounter = 0;\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 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 PropTypes from 'prop-types';\nimport { Button, ActionButton } from '../Button';\nimport Dialog, { DialogBody, DialogFooter, DialogHeader } from './Dialog';\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 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 PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } 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 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';\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, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface TextAreaProps\n extends\n 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 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\nexport default function TextArea(props: TextAreaProps) {\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<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 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\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, useEffect, useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport ExpandMore from '../../icons/ExpandMore';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\ninterface SelectProps\n extends\n 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 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\nexport default function Select(props: SelectProps) {\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 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\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 { 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 = Omit<React.HTMLProps<HTMLInputElement>, 'as'> &\n PropTypes.InferProps<typeof Checkbox.propTypes>;\n\nexport default function Checkbox(props: CheckboxProps) {\n const ref = useCallback(\n (node: unknown) => {\n if (node !== null) {\n if (props.indeterminate) {\n (node as HTMLInputElement).indeterminate = true;\n }\n }\n },\n [props.indeterminate],\n );\n\n return (\n <Label>\n <HiddenInput\n {...props}\n ref={ref}\n type=\"checkbox\"\n aria-checked={props.indeterminate ? 'mixed' : props.checked}\n />\n <StyledCheckmark />\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 { 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 = PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof Toggle.propTypes\n>;\n\nfunction Toggle(props: ToggleProps) {\n return (\n <Switch>\n <Input {...props} type=\"checkbox\" role=\"switch\" aria-checked={props.checked} />\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 { 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\nfunction Radio(\n props: PropTypes.InferProps<React.AllHTMLAttributes<HTMLInputElement> & typeof Radio.propTypes>,\n) {\n return (\n <Label>\n <HiddenInput {...props} type=\"radio\" />\n <StyledRadio />\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 { 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\nfunction RadioButton(\n props: PropTypes.InferProps<\n React.AllHTMLAttributes<HTMLInputElement> & typeof RadioButton.propTypes\n >,\n) {\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\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: (newVal: T[]) => void;\n};\nexport type MenuContextType<T> = SingleSelect<T> | MultiSelect<T>;\n\nexport default createContext<MenuContextType<object>>(undefined);\n","import React, { useState, ReactNode, 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 */\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 &: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 {MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>} props - The menu properties.\n * @param {ForwardedRef<HTMLDivElement>} ref - The ref forwarded to the menu container.\n */\nconst Menu = React.forwardRef(function <T extends object>(\n props: MenuProps<T> & Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { multiSelect, onChange, value: propValue, ...rest } = props;\n const [value, setValue] = useState(propValue || (multiSelect ? [] : ''));\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: 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 /**\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 <MenuContext.Provider\n value={\n {\n value,\n multiSelect,\n updateValue,\n } as unknown as React.ContextType<typeof MenuContext>\n }\n >\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 {props.children}\n </MenuContainer>\n </MenuContext.Provider>\n );\n});\n\nMenu.displayName = 'Menu';\n\nMenu.defaultProps = {\n multiSelect: false,\n};\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\ninterface MenuItemProps<T> {\n /** Value of the element */\n value: T;\n}\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,>(\n props: MenuItemProps<T> & React.PropsWithChildren,\n ref: React.Ref<HTMLButtonElement>,\n) => {\n const context = useContext(MenuContext) as MenuContextType<T>;\n const { value, children, ...rest } = props;\n const clickHandler = (e: SyntheticEvent) => {\n e.stopPropagation();\n context.updateValue(value as T & T[]);\n };\n\n const selected = context.multiSelect\n ? context.value?.includes?.(value)\n : context.value === value;\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> & React.PropsWithChildren & { ref?: React.Ref<HTMLButtonElement> },\n) => ReturnType<typeof MenuItemInner>;\n\nexport default MenuItem;\n","import React, { useCallback, useEffect, useId, 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\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\nexport default function Popover(\n props: React.PropsWithChildren<PropTypes.InferProps<typeof Popover.propTypes>>,\n) {\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 const triggerRef = useRef<HTMLElement | null>(null);\n const closeTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const focusTimeoutRef = useRef<NodeJS.Timeout | 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 (props.onClose) {\n props.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 }, [props]);\n\n const keyupEventHandler = useCallback(\n (e: KeyboardEvent) => {\n if (props.closeOnEsc && e.keyCode === KEY_CODES.ESC) {\n close();\n }\n },\n [close, props.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 (props.open) {\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 }, [props.open, open, clickOutsideHandler, close]);\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, props.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 return (\n <PopoverDiv ref={containerRef}>\n {React.createElement(props.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={props.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 {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 { ExpandMore } from '../../icons';\nimport { Menu } from '../Menu';\nimport { Popover, POPOVER_POSITION } from '../Popover';\nimport Input from './Input';\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<unknown>;\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 {DropdownProps<T>} props - The properties for the Dropdown component.\n * @returns {JSX.Element} The rendered Dropdown component.\n */\nexport default function Dropdown<T extends object>(props: DropdownProps<T>) {\n const { multiSelect, onChange } = props;\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(props.value);\n const id = React.useId();\n const menuId = `${id}-menu`;\n const menuRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLInputElement>(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 <>\n <Input\n {...passedProps}\n ref={ref}\n type=\"text\"\n value={value && String(value)}\n label={props.label}\n errorText={props.errorText}\n onClick={clickHandler}\n onKeyDown={onKeyDown}\n required={props.required}\n disabled={props.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 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 {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 { Button, ActionButton } from '../Button';\nimport { Input } from '../Input';\nimport Dialog, { DialogHeader, DialogBody, DialogFooter } from './Dialog';\n\ntype PromptOption = PropTypes.InferProps<typeof PromptDialog.propTypes>;\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 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\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 PropTypes from 'prop-types';\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\nconst drawerPropTypes = {\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\ntype DrawerProps = PropTypes.InferProps<typeof drawerPropTypes>;\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 propTypes = drawerPropTypes;\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 = null;\n this.layer = null;\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 * 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 />;\n }\n\n return null;\n }\n}\n","import React, { useId } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\n\nconst Container = styled.div<PropTypes.InferProps<typeof Group.propTypes>>`\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\nexport default function Group(\n props: React.PropsWithChildren<PropTypes.InferProps<typeof Group.propTypes>>,\n) {\n const errorId = useId();\n\n return (\n <>\n <Container {...props} aria-describedby={props.errorText ? errorId : undefined}>\n {props.children}\n </Container>\n {props.errorText && <ErrorContainer id={errorId}>{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 { 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 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\nconst modalPropTypes = {\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\ntype ModalProps = PropTypes.InferProps<typeof modalPropTypes>;\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 propTypes = modalPropTypes;\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 = null;\n this.layer = null;\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 = null;\n }\n this.layer = null;\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\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 // 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 {\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 {\n notices: [\n {\n ...notice,\n id,\n },\n ...this.state.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 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 /**\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 React, { type RefCallback } from 'react';\nimport PropTypes from 'prop-types';\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 = 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 /** Aria label for the close button on the notification. Defaults to \"Close notification\" */\n closeButtonAriaLabel: PropTypes.string,\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<\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 PropTypes from 'prop-types';\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\nfunction Spinner(props: SpinnerProp) {\n const { label, ...rest } = props;\n return (\n <SpinnerDiv\n {...rest}\n role=\"status\"\n aria-label={label}\n aria-live=\"polite\"\n aria-busy=\"true\"\n />\n );\n}\n\ntype SpinnerProp = PropTypes.InferProps<typeof Spinner.propTypes>;\n\nSpinner.propTypes = {\n /** Spinner's size */\n size: PropTypes.number,\n /** Accessible label for screen readers */\n label: PropTypes.string,\n};\n\nSpinner.defaultProps = {\n size: 30,\n label: 'Loading',\n};\n\nexport default Spinner;\n","import { Children, PropsWithChildren, useState, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '@emotion/styled';\nimport { getThemeValue, THEME_NAME } from '../../shared/constants';\nimport { Ellipsis } from '../../shared/styles';\nimport { Badge, BADGE_TYPE } from '../Badge';\n\ntype StepperProps = PropsWithChildren<{\n active: number;\n onStepClick?: (index: number) => void;\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 ${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\nexport default function Stepper(props: StepperProps) {\n const [active, setActive] = useState(props.active);\n const { children, onStepClick } = props;\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>\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\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { name, disabled, completed, ...rest } = props;\n return <Container {...rest} />;\n}\n\nStep.defaultProps = {\n disabled: false,\n completed: false,\n};\n","import { useState, Children, useEffect, PropsWithChildren, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\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 active?: number;\n onChange?: (index: number) => void;\n props?: object;\n bodyProps?: object;\n}>;\n\nexport default function Tabs(props: ITabsProps) {\n const [active, setActive] = useState(props.active);\n const { children } = props;\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 props.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 setActive(props.active);\n props.onChange?.(props.active);\n }, [props]);\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 return (\n <>\n <ButtonContainer role=\"tablist\" aria-label=\"Tabs\" {...props.props}>\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 id={panelIds[active]}\n role=\"tabpanel\"\n aria-labelledby={tabIds[active]}\n tabIndex={0}\n {...props.bodyProps}\n >\n {childrenArray[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\nTabs.defaultProps = {\n active: 0,\n};\n","import { 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;\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 = null;\n this.assertiveRegion = null;\n this.ariaLiveContainer = null;\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 region.textContent = '';\n\n if (region) {\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 = null;\n }\n }\n this.toast = null;\n this.currentOptions = null;\n this.isPaused = false;\n\n setTimeout(() => {\n if (!this.toast && this.root) {\n this.root.unmount();\n this.root = null;\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 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 PropTypes from 'prop-types';\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\nexport default function Tooltip(props: React.PropsWithChildren<TooltipProps>) {\n const { children, position, ...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 position={position} {...rest}>\n {trigger}\n <TooltipDiv id={tooltipId} aria-hidden=\"true\" role=\"tooltip\" position={position}>\n {rest.tooltipText}\n </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":["Accordion","props","active","setActive","useState","onStepClick","index","disabled","newIndex","_jsx","_Fragment","Children","map","children","child","isValidElement","cloneElement","open","propTypes","PropTypes","number","func","defaultProps","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","Badge","bool","oneOf","css","any","Card","BACKGROUND","elevated","MODAL_SHADOW","SHADOW","Step","StepHeader","TEXT_COLOR_DARK","PRIMARY_LIGHT","HeaderContainer","completed","LIGHT_GREY","ExpandContainer","StepBody","AccordionStepBody","AccordionStepFooter","AccordionStep","setHeight","header","errorText","restProps","headerId","useId","regionId","ref","el","scrollHeight","onClick","aria-expanded","aria-controls","id","aria-hidden","DANGER","role","aria-labelledby","string","isRequired","StyledButton","BORDER_COLOR","DISABLED_BACKGROUND","HOVER_SHADOW","Container","Button","ERROR_LIGHT","Chip","label","onCloseClick","closeButtonAriaLabel","rest","keyUpHandler","e","buttonKeyDownHandler","stopPropagation","onKeyUp","onKeyDown","aria-label","ORIENTATION","DragContext","createContext","Item","showIndicator","orientation","VERTICAL","HORIZONTAL","dragging","DragKnob","DragItem","dragOver","totalItems","setAnnouncement","touchTimerRef","useRef","context","useContext","vibrate","duration","navigator","dragStartHandler","setStartIndex","setIsDragging","dragOverHandler","preventDefault","startIndex","dragExitHandler","dropHandler","drop","touchStartHandler","current","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","useEffect","draggable","data-drag-index","tabIndex","itemAriaLabelTemplate","aria-grabbed","onDragStart","undefined","onDragOver","onDragLeave","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","dragHandleAriaLabel","DragIndicator","VisuallyHidden","DragAndDrop","originalIndex","setOriginalIndex","announcement","childrenArray","React","toArray","length","template","data","replace","String","grabKey","dropKey","altDropKey","cancelKey","moveKeys","Provider","value","aria-live","aria-atomic","Label","DISABLED_BORDER","touched","text","ErrorContainer","ChipInput","setText","setTouched","setValue","InputRef","errorId","replacePlaceholder","Array","isArray","updateValue","newValue","deduped","from","Set","onChange","handleFocus","onFocus","handleChange","target","handleKeyUp","trim","validity","valid","addedAnnouncementTemplate","removeChip","chipToRemove","filter","chip","removedAnnouncementTemplate","start","end","newItems","item","splice","input","required","aria-required","aria-invalid","aria-describedby","div","span","arrayOf","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","console","warn","message","set","renderLayer","layerConfig","currentIndex","className","layerId","overlayClickHandler","find","l","closeFn","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","dialogCounter","AlertDialog","titleId","descriptionId","dialogProps","dialog","DialogHeader","DialogBody","DialogFooter","buttonText","Promise","resolve","onClose","object","ConfirmDialog","yesText","noText","ActionButton","confirm","reject","TextField","Input","forwardRef","onChangeHandler","displayName","TextArea","SelectField","ArrowContainer","Select","multiple","option","StyledCheckmark","HiddenInput","Checkbox","useCallback","indeterminate","aria-checked","checked","Switch","Toggle","StyledRadio","Radio","RadioGroup","RadioButton","MenuContainer","Menu","multiSelect","propValue","val","newVal","includes","container","currentTarget","items","indexOf","click","focusHandler","relatedTarget","firstItem","querySelector","MenuContext","aria-multiselectable","selected","multiselect","MenuItemInner","clickHandler","aria-selected","readOnly","MenuItem","POPOVER_POSITION","positionMap","PopoverDiv","Popper","translateX","translateY","Popover","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","Dropdown","menuId","menuRef","timer","changeHandler","TriggerElement","passedProps","aria-haspopup","BOTTOM_LEFT","BodyText","InputContainer","StyledInput","PromptDialog","inputProps","submitText","cancelText","form","onSubmit","submit","valueChange","defaultValue","DRAWER_POSITION","positionStyle","size","before","after","DrawerDiv","drawerPropTypes","TOP_LEFT","TOP_RIGHT","Drawer","getDerivedStateFromProps","componentDidMount","getSnapshotBeforeUpdate","prevProps","setDrawerRef","forceUpdate","drawerRef","Group","modalPropTypes","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","updateLiveRegion","sticky","content","isAssertive","region","textContent","StoryProps","BOTTOM_RIGHT","Notification","containers","options","refCallback","instance","get","manager","createRoot","flushSync","SpinnerDiv","Spinner","aria-busy","HeaderButton","PRIMARY_LIGHTER","MobileHeader","Stepper","stepRefs","stepClickHandler","getBadgeType","onStepKeyDown","next","prev","aria-disabled","name","count","ButtonContainer","TabBody","Tabs","tabRefs","switchTab","onTabKeyDown","sanitize","str","toLowerCase","tabIds","i","panelIds","bodyProps","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","Tooltip","tooltipId","trigger","tooltipText","oneOfType"],"mappings":"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"}
|