{"version":3,"file":"js/7811-a2f7fd80b99bdc65e2ab.js","mappings":"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","sources":["webpack://halo/./app/client/src/components/StatusCircle/StatusCircle.tsx","webpack://halo/./app/client/src/components/Toast/Toast.tsx","webpack://halo/./app/client/src/components/Tooltip/Tooltip.jsx","webpack://halo/./app/client/src/components/Tooltip/index.jsx","webpack://halo/./app/client/src/components/library/Buttons/Button.tsx","webpack://halo/./app/client/src/components/library/Buttons/IconButton.tsx","webpack://halo/./app/client/src/components/library/Buttons/SortButton.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/DropdownGroup.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/DropdownOption.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/EmailDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/KeywordsDropdown/KeywordsDropdownCreateLabel.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/KeywordsDropdown/KeywordsDropdownOption.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/KeywordsDropdown/KeywordsDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/MoreActionsDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/MultiSelectDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/UserDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/dropdownStyles.ts","webpack://halo/./app/client/src/components/library/Icon/Icon.tsx","webpack://halo/./app/client/src/components/library/Inputs/ChipsInput.tsx","webpack://halo/./app/client/src/components/library/Inputs/TextInput.tsx","webpack://halo/./app/client/src/components/library/Menus/Tabs.tsx","webpack://halo/./app/client/src/components/library/ModalBases/BlankModal.tsx","webpack://halo/./app/client/src/components/library/ModalBases/SlideModalBase.tsx","webpack://halo/./app/client/src/components/library/ProfilePicture/InvitedUserProfilePicture.tsx","webpack://halo/./app/client/src/components/library/ProfilePicture/ProfilePicture.tsx","webpack://halo/./app/client/src/components/library/Tags/Tag.tsx","webpack://halo/./app/client/src/components/library/Tags/users/AdminTag.tsx","webpack://halo/./app/client/src/components/library/Tags/users/LicenseTagTooltip.tsx","webpack://halo/./app/client/src/components/library/Tags/users/LicenseTag.tsx","webpack://halo/./app/client/src/components/library/Tags/users/SuperAdminTag.tsx","webpack://halo/./app/client/src/components/library/Texts/FormLabel.tsx","webpack://halo/./app/client/src/components/library/Tooltips/TagTooltip.tsx","webpack://halo/./app/client/src/components/library/Tooltips/Tooltip.tsx","webpack://halo/./app/client/src/components/library/Attachments/MessageAttachment.tsx","webpack://halo/./app/client/src/components/library/Banners/StandardBanner.tsx","webpack://halo/./app/client/src/components/library/BlueBox/BlueBox.tsx","webpack://halo/./app/client/src/components/library/Buttons/ButtonGroup.tsx","webpack://halo/./app/client/src/components/library/Tags/InfoTag.tsx","webpack://halo/./app/client/src/components/library/Buttons/FiltersButton.tsx","webpack://halo/./app/client/src/components/library/Buttons/GradientButton.tsx","webpack://halo/./app/client/src/components/library/Buttons/TextButton.tsx","webpack://halo/./app/client/src/components/library/Buttons/TextLink.tsx","webpack://halo/./app/client/src/components/library/Card/Card.tsx","webpack://halo/./app/client/src/components/library/CompanyAvatar/CompanyAvatar.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/SelectableDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/SelectOrCreateDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/SingleSelectDropdown.tsx","webpack://halo/./app/client/src/components/library/Dropdowns/UniversityDropdown.tsx","webpack://halo/./app/client/src/components/library/InfoBanner/InfoBanner.tsx","webpack://halo/./app/client/src/components/library/Inputs/Checkbox.tsx","webpack://halo/./app/client/src/components/library/Inputs/ChipCheckbox.tsx","webpack://halo/./app/client/src/components/library/Inputs/CollapsibleInputWrapper.tsx","webpack://halo/./app/client/src/components/library/Inputs/MultiTextInput.tsx","webpack://halo/./app/client/src/components/library/Inputs/RemovableInputWrapper.tsx","webpack://halo/./app/client/src/components/library/Inputs/SearchBarDropdown.tsx","webpack://halo/./app/client/src/components/library/Inputs/Switch.tsx","webpack://halo/./app/client/src/components/library/Inputs/UserChipCheckbox.tsx","webpack://halo/./app/client/src/components/library/layout/CenteredContainer.tsx","webpack://halo/./app/client/src/components/library/layout/PageContainer.tsx","webpack://halo/./app/client/src/components/library/Menus/ProgressStep.tsx","webpack://halo/./app/client/src/components/library/Modals/ErrorModal.tsx","webpack://halo/./app/client/src/components/library/Modals/SimpleConfirmationModal.tsx","webpack://halo/./app/client/src/components/library/OneLineSpan/OneLineSpan.tsx","webpack://halo/./app/client/src/components/library/Pagination/Pagination.tsx","webpack://halo/./app/client/src/components/library/RequestStatusIcon/RequestStatusIcon.tsx","webpack://halo/./app/client/src/components/library/Tags/XMoreWrapper.tsx","webpack://halo/./app/client/src/components/library/Thumbnail/Thumbnail.tsx","webpack://halo/./app/client/src/components/library/Tooltips/InputTooltip.tsx","webpack://halo/./app/client/src/components/library/Tooltips/TruncatedText.tsx","webpack://halo/./app/client/src/components/library/UserPreview/MultiUserPreview.tsx","webpack://halo/./app/client/src/components/library/UserPreview/UserPreview.tsx","webpack://halo/./app/client/src/constants/featureFlags.ts","webpack://halo/./app/client/src/constants/colors.ts","webpack://halo/./app/client/src/constants/__generated__/base_colors.ts","webpack://halo/./app/client/src/constants/proposalStatuses.js.erb","webpack://halo/./app/client/src/constants/credentials.js.erb","webpack://halo/./app/client/src/constants/CharLimitConst.js","webpack://halo/./app/client/src/constants/ably_channels.ts","webpack://halo/./app/client/src/constants/blockedEmailDomains.js","webpack://halo/./app/client/src/constants/companies.js.erb","webpack://halo/./app/client/src/constants/company_headers.js","webpack://halo/./app/client/src/constants/countryOptions.ts","webpack://halo/./app/client/src/constants/env.ts","webpack://halo/./app/client/src/constants/fonts.ts","webpack://halo/./app/client/src/constants/hubspot.js","webpack://halo/./app/client/src/constants/links.ts","webpack://halo/./app/client/src/constants/proposalTypes.js","webpack://halo/./app/client/src/constants/requestForMaterials.js","webpack://halo/./app/client/src/constants/styles.ts","webpack://halo/./app/client/src/constants/windowDimensions.js","webpack://halo/./app/client/src/constants/characterLimits.js.erb","webpack://halo/./app/client/src/constants/scientistRoles.js.erb","webpack://halo/./app/client/src/locales/index.ts","webpack://halo/./app/client/src/redux/actions/messengerActions.tsx","webpack://halo/./app/client/src/redux/reducers/messengerReducer.tsx","webpack://halo/./app/client/src/requests/companies.ts","webpack://halo/./app/client/src/requests/companyNetworkScientists.ts","webpack://halo/./app/client/src/requests/keywords.ts","webpack://halo/./app/client/src/requests/messages.ts","webpack://halo/./app/client/src/requests/request.ts","webpack://halo/./app/client/src/requests/requests.ts","webpack://halo/./app/client/src/routes/utils.ts","webpack://halo/./app/client/src/tsTypes/__generated__/enums/segment_event_object.ts","webpack://halo/./app/client/src/tsTypes/__generated__/enums/segment_event_name.ts","webpack://halo/./app/client/src/tsTypes/__generated__/enums/tour_identifier.ts","webpack://halo/./app/client/src/tsTypes/requests.ts","webpack://halo/./app/client/src/tsTypes/rfps.ts","webpack://halo/./app/client/src/tsTypes/sponsorProfiles.ts","webpack://halo/./app/client/src/tsTypes/users.ts","webpack://halo/./app/client/src/utils/appUtils.ts","webpack://halo/./app/client/src/utils/appsignal.ts","webpack://halo/./app/client/src/utils/dropdownUtils.ts","webpack://halo/./app/client/src/utils/i18n.tsx","webpack://halo/./app/client/src/utils/redux.js","webpack://halo/./app/client/src/utils/requests.ts","webpack://halo/./app/client/src/utils/rfpUtils.ts","webpack://halo/./app/client/src/utils/textUtils.tsx","webpack://halo/./app/client/src/views/Onboarding/Hooks/useCompanyOptions.ts","webpack://halo/./app/client/src/views/Onboarding/Hooks/useUniversityOptions.ts"],"sourcesContent":["import { COLORS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n color?: string;\n margin?: string;\n children?: ReactNode;\n}\n\nconst StatusCircle = ({ color, margin, children }: Props) => {\n return (\n \n {children}\n \n );\n};\n\nconst StyledStatusCircle = styled.div<{ color?: string; margin?: string }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n ${({ margin }) => margin && `margin: ${margin};`}\n\n width: 16px;\n height: 16px;\n\n border-radius: 50%;\n\n background-color: ${({ color }) => color || COLORS.GREEN_400};\n`;\n\nexport default StatusCircle;\n","/**\n * USAGE:\n * import toast from '@components/Toast';\n * toast.success(\"success message\");\n * toast.error(\"error message\");\n */\n\nimport { COLORS, FONTS } from \"@constants\";\nimport { ReactElement } from \"react\";\nimport { ToastContainer, toast as toastify } from \"react-toastify\";\nimport styled from \"styled-components\";\n\nexport const Toaster = styled(ToastContainer).attrs(() => ({\n enableMultiContainer: true,\n containerId: \"new\",\n position: \"top-center\",\n autoClose: 5000,\n hideProgressBar: true,\n closeOnClick: true,\n closeButton: false,\n rtl: false,\n pauseOnFocusLoss: false,\n theme: \"colored\",\n draggable: true,\n pauseOnHover: true,\n}))`\n && {\n &.Toastify__toast-container {\n z-index: 1005;\n width: 658px;\n text-align: center;\n transform: translateX(-50%);\n }\n .Toastify__toast {\n border-radius: 4px;\n border-color: ${COLORS.GREEN};\n }\n .Toastify__toast-body {\n ${FONTS.MEDIUM_1}\n color: ${COLORS.WHITE};\n margin: 0 auto;\n flex: none;\n max-width: 100%;\n\n a {\n color: ${COLORS.WHITE};\n text-decoration: underline;\n }\n }\n .success {\n background-color: ${COLORS.GREEN};\n }\n .error {\n background-color: ${COLORS.RED};\n }\n }\n`;\n\nconst toast = {\n success: (message: string | ReactElement) => {\n toastify.success(message, { containerId: \"new\", className: \"success\" });\n },\n error: (message: string | ReactElement) => {\n toastify.error(message, { containerId: \"new\", className: \"error\" });\n },\n};\n\nexport default toast;\n","import { COLORS, JS_FONTS } from \"@constants\";\nimport blueQuestionIcon from \"@images/icons/question_mark_blue.svg\";\nimport purpleQuestionIcon from \"@images/icons/question_mark_purple.svg\";\nimport { css, StyleSheet } from \"aphrodite/no-important\";\nimport { PureComponent } from \"react\";\nimport { Icon, Popup } from \"semantic-ui-react\";\n\nimport PropTypes from \"prop-types\";\n\nconst styles = StyleSheet.create({\n Tooltip: {\n height: \"15px\",\n position: \"relative\",\n right: \"2px\",\n top: \"-1px\",\n },\n Tooltip_popupContents: {\n ...JS_FONTS.REGULAR_3,\n padding: \"12px 16px\",\n },\n\n Tooltip_link: {\n color: COLORS.HALO_BLUE,\n \":hover\": {\n color: COLORS.HALO_BLUE,\n },\n },\n});\n\nconst popupStyles = {\n borderColor: COLORS.WHITE,\n maxWidth: \"280px\",\n borderRadius: 0,\n padding: 0,\n zIndex: \"1000000\",\n};\n\nconst mouseLeaveDelay = 175;\n\nclass Tooltip extends PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: false,\n };\n }\n\n toggle = (isOpen) => {\n return () => {\n this.setState({ isOpen });\n };\n };\n\n renderLearnMoreLink() {\n const { linkUrl, linkText } = this.props;\n\n return (\n \n {linkText}\n \n );\n }\n\n timeoutToggle = (isOpen, timeout = mouseLeaveDelay) => {\n return () => {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(this.toggle(isOpen), timeout);\n };\n };\n\n renderTrigger = () => {\n const { customTrigger, iconColor, customTriggerStyle } = this.props;\n\n if (customTrigger) {\n const iconName = customTrigger === \"incomplete\" ? \"clock outline\" : \"pause circle outline\";\n return (\n \n );\n }\n const questionIcon = iconColor === \"purple\" ? purpleQuestionIcon : blueQuestionIcon;\n\n return (\n \n );\n };\n\n render() {\n const { linkUrl, text, position } = this.props;\n\n return (\n \n
\n {text} {linkUrl && this.renderLearnMoreLink()}\n
\n \n );\n }\n}\n\nTooltip.propTypes = {\n text: PropTypes.string.isRequired,\n linkUrl: PropTypes.string,\n linkText: PropTypes.string,\n iconColor: PropTypes.string,\n position: PropTypes.string,\n};\n\nexport default Tooltip;\n","import Tooltip from \"./Tooltip\";\n\nexport default Tooltip;\n","import Icon from \"@components/library/Icon\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { Link } from \"react-router-dom\";\nimport styled, { css } from \"styled-components\";\nimport { IconName } from \"../Icon/Icon\";\n\nexport interface BaseButtonProps {\n id?: string;\n name?: string;\n disabled?: boolean;\n type?: \"submit\" | \"button\" | \"reset\";\n form?: string;\n onClick?: (...args: any[]) => any;\n onMouseEnter?: (...args: any[]) => any;\n onMouseLeave?: (...args: any[]) => any;\n onFocus?: (...args: any[]) => any;\n onBlur?: (...args: any[]) => any;\n margin?: string | 0;\n \"data-testid\"?: string;\n}\n\nexport interface ButtonProps extends BaseButtonProps {\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"secondary-dark\"\n | \"ghost\"\n | \"destructive-primary\"\n | \"destructive-secondary\"\n | \"destructive-ghost\"\n | \"orange\"\n | \"marketing\";\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n // This sets a min-width in case the button is intended to extend past its contents. A minimum padding will be maintained\n width?: string;\n /**\n * Add a `to` prop similar to a Link tag. This will use a tag instead of a button.\n */\n to?: string;\n isExternalLink?: boolean;\n openInNewTab?: boolean;\n iconName?: IconName;\n iconPosition?: \"left\" | \"right\";\n children: any;\n}\n\nconst Button = ({\n variant = \"primary\",\n to,\n isExternalLink = false,\n openInNewTab = false,\n size = \"md\",\n width,\n margin = 0,\n iconName,\n iconPosition = \"left\",\n children,\n id,\n name,\n type = \"submit\",\n disabled,\n form,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n \"data-testid\": dataTestId,\n}: ButtonProps) => {\n let iconColor = COLORS.WHITE;\n\n if (variant === \"destructive-ghost\" || variant === \"destructive-secondary\") {\n iconColor = COLORS.RED;\n } else if (variant === \"secondary\" || variant === \"ghost\") {\n iconColor = COLORS.HALO_BLUE;\n }\n\n const StyledComponent = to ? StyledLink : StyledButton;\n\n return (\n \n \n {iconName ? (\n \n ) : null}\n {children}\n \n \n );\n};\n\nexport default Button;\n\nexport const BaseStyles = css`\n height: ${({ size }) => {\n switch (size) {\n case \"xs\":\n return \"24px\";\n case \"sm\":\n return \"36px\";\n case \"l\":\n return \"64px\";\n default:\n return \"42px\";\n }\n }};\n min-width: ${({ width }) => width ?? \"initial\"};\n background-color: transparent;\n border: none;\n border-radius: 4px;\n padding: 0;\n margin: ${({ margin }) => margin};\n\n &:hover > div {\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-primary\": {\n return COLORS.RED_600;\n }\n case \"destructive-secondary\": {\n return COLORS.RED_200;\n }\n case \"destructive-ghost\": {\n return COLORS.RED_100;\n }\n case \"secondary\":\n case \"secondary-dark\": {\n return COLORS.BLUE_LIGHT_400;\n }\n case \"ghost\": {\n return COLORS.BLUE_LIGHT_300;\n }\n case \"orange\": {\n return COLORS.ORANGE_700;\n }\n case \"marketing\": {\n return COLORS.PINK_700;\n }\n default: {\n return COLORS.BLUE_600;\n }\n }\n }};\n }\n\n &:active {\n outline: none;\n\n & > div {\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-primary\": {\n return COLORS.RED_700;\n }\n case \"destructive-secondary\": {\n return COLORS.RED_300;\n }\n case \"destructive-ghost\": {\n return COLORS.RED_200;\n }\n case \"secondary\": {\n return COLORS.BLUE_LIGHT_500;\n }\n case \"secondary-dark\": {\n return COLORS.BLUE_LIGHT_350;\n }\n case \"ghost\": {\n return COLORS.BLUE_LIGHT_400;\n }\n case \"orange\": {\n return COLORS.ORANGE;\n }\n case \"marketing\": {\n return COLORS.PINK_600;\n }\n default: {\n return COLORS.BLUE_650;\n }\n }\n }};\n }\n }\n\n &:focus:not(:active) {\n outline: 2px solid ${COLORS.WHITE};\n box-shadow: 0 0 0 3px\n ${({ variant }) => (variant.includes(\"destructive\") ? COLORS.RED : COLORS.HALO_BLUE)};\n }\n\n &:disabled {\n opacity: 0.4;\n pointer-events: none;\n }\n`;\n\nconst StyledButton = styled.button`\n ${BaseStyles}\n`;\n\nconst ButtonContent = styled.div`\n display: flex;\n flex-direction: ${({ iconPosition }) => (iconPosition === \"left\" ? \"row\" : \"row-reverse\")};\n justify-content: center;\n align-items: center;\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-primary\": {\n return COLORS.RED;\n }\n case \"destructive-secondary\": {\n return COLORS.RED_100;\n }\n case \"secondary\": {\n return COLORS.BLUE_LIGHT_300;\n }\n case \"secondary-dark\": {\n return COLORS.BLUE_LIGHT_350;\n }\n case \"ghost\":\n case \"destructive-ghost\": {\n return \"transparent\";\n }\n case \"orange\": {\n return COLORS.ORANGE_700;\n }\n case \"marketing\": {\n return COLORS.PINK_600;\n }\n default: {\n return COLORS.HALO_BLUE;\n }\n }\n }};\n color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-secondary\":\n case \"destructive-ghost\": {\n return COLORS.RED;\n }\n case \"secondary-dark\": {\n return COLORS.HALO_BLUE;\n }\n case \"secondary\":\n case \"ghost\": {\n return COLORS.HALO_BLUE;\n }\n default: {\n return COLORS.WHITE;\n }\n }\n }};\n width: 100%;\n height: 100%;\n border-radius: 4px;\n ${({ size }) => {\n switch (size) {\n case \"md\":\n return FONTS.BUTTON_1;\n case \"lg\":\n return FONTS.HEADING_5_MEDIUM;\n default:\n return FONTS.BUTTON_2;\n }\n }}\n padding: ${({ size }) => (size === \"md\" ? \"0 24px\" : \"0 20px\")};\n transition: background-color 0.1s ease;\n`;\n\n// TODO: (overload119) Add support for various font sizes on StyledLink.\nconst StyledLink = styled(Link)`\n display: inline-block;\n ${BaseStyles}\n &:hover {\n text-decoration: none;\n }\n ${ButtonContent} {\n &:hover {\n text-decoration: none;\n }\n }\n`;\n","import { Tooltip } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport styled from \"styled-components\";\nimport Icon, { IconName } from \"../Icon/Icon\";\nimport { BaseButtonProps } from \"./Button\";\n\ninterface Props extends BaseButtonProps {\n iconName: IconName;\n tooltipText?: string;\n tooltipWidth?: string;\n tooltipPosition?: \"top\" | \"bottom\";\n hideTooltip?: boolean;\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"ghost\"\n | \"fourth\"\n | \"fifth\"\n | \"ghost-white\"\n | \"destructive-secondary\"\n | \"destructive-ghost\"\n | \"magic\";\n size?: \"xs\" | \"sm\" | \"md\";\n margin?: string | 0;\n shouldPortalTooltip?: boolean;\n \"data-testid\"?: string;\n}\n\nconst IconButton = ({\n iconName,\n tooltipText,\n tooltipWidth,\n tooltipPosition,\n hideTooltip = false,\n variant = \"primary\",\n size = \"sm\",\n margin = 0,\n shouldPortalTooltip = false,\n id,\n name,\n disabled,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n \"data-testid\": dataTestId,\n}: Props) => {\n let color = COLORS.WHITE;\n if (variant.includes(\"destructive\")) {\n color = COLORS.RED;\n } else if (variant === \"secondary\" || variant === \"ghost\") {\n color = COLORS.HALO_BLUE;\n } else if (variant === \"fourth\" || variant === \"fifth\") {\n color = COLORS.BLACK;\n } else if (variant === \"magic\") {\n color = COLORS.PINK_800;\n }\n\n const iconButton = (\n \n \n \n );\n\n return hideTooltip ? (\n iconButton\n ) : (\n \n {iconButton}\n \n );\n};\n\nexport default IconButton;\n\nconst SIZES = {\n xs: \"26px\",\n sm: \"36px\",\n md: \"42px\",\n};\n\nconst Button = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n height: ${({ size }) => SIZES[size]};\n width: ${({ size }) => SIZES[size]};\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-secondary\": {\n return COLORS.RED_50;\n }\n case \"primary\": {\n return COLORS.HALO_BLUE;\n }\n case \"secondary\": {\n return COLORS.BLUE_LIGHT_250;\n }\n case \"fifth\": {\n return COLORS.WHITE;\n }\n case \"magic\": {\n return COLORS.PINK_50;\n }\n default: {\n return \"transparent\";\n }\n }\n }};\n border: ${({ variant }) => (variant === \"fifth\" ? `0.5px solid ${COLORS.NEUTRAL_300}` : \"none\")};\n border-radius: 4px;\n margin: ${({ margin }) => margin};\n\n &:hover {\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-secondary\":\n case \"destructive-ghost\": {\n return COLORS.RED_100;\n }\n case \"secondary\": {\n return COLORS.BLUE_LIGHT_400;\n }\n case \"ghost\": {\n return COLORS.BLUE_LIGHT_300;\n }\n case \"fourth\": {\n return COLORS.NEUTRAL_200;\n }\n case \"fifth\": {\n return COLORS.NEUTRAL_50;\n }\n case \"ghost-white\": {\n return `${COLORS.WHITE}19`;\n }\n case \"magic\": {\n return COLORS.PINK_100;\n }\n default: {\n return COLORS.BLUE_600;\n }\n }\n }};\n }\n\n &:active {\n outline: none;\n background-color: ${({ variant }) => {\n switch (variant) {\n case \"destructive-secondary\":\n case \"destructive-ghost\": {\n return COLORS.RED_200;\n }\n case \"secondary\": {\n return COLORS.BLUE_LIGHT_500;\n }\n case \"ghost\": {\n return COLORS.BLUE_LIGHT_400;\n }\n case \"fourth\": {\n return COLORS.NEUTRAL_300;\n }\n case \"fifth\": {\n return COLORS.NEUTRAL_100;\n }\n case \"ghost-white\": {\n return `${COLORS.WHITE}33`;\n }\n case \"magic\": {\n return COLORS.PINK_200;\n }\n default: {\n return COLORS.BLUE_650;\n }\n }\n }};\n }\n\n &:focus:not(:active) {\n outline: 2px solid ${COLORS.WHITE};\n box-shadow: 0 0 0 3px ${COLORS.HALO_BLUE};\n\n ${({ variant }) =>\n variant === \"ghost-white\" &&\n `\n outline: none;\n box-shadow: 0 0 0 1px ${COLORS.HALO_BLUE};\n background-color: ${COLORS.WHITE}19;\n `}\n\n ${({ variant }) =>\n variant.includes(\"destructive\") &&\n `\n outline: none;\n box-shadow: 0 0 0 1px ${COLORS.RED};\n background-color: ${COLORS.RED_100};\n `}\n }\n\n &:disabled {\n opacity: 0.4;\n pointer-events: none;\n }\n`;\n","import { COLORS } from \"@constants\";\nimport styled from \"styled-components\";\nimport Icon from \"../Icon/Icon\";\n\nexport type SortDirection = \"NONE\" | \"DESC\" | \"ASC\";\n\ninterface SortState {\n color: string;\n inverted: boolean;\n next: SortDirection;\n}\n\nconst SORT_STATES = new Map([\n [\n \"NONE\",\n {\n color: COLORS.NEUTRAL_300,\n inverted: false,\n next: \"DESC\",\n },\n ],\n [\n \"DESC\",\n {\n color: COLORS.BLACK,\n inverted: false,\n next: \"ASC\",\n },\n ],\n [\n \"ASC\",\n {\n color: COLORS.BLACK,\n inverted: true,\n next: \"NONE\",\n },\n ],\n]);\n\ninterface SortButtonProps {\n sortDirection: SortDirection;\n setSortDirection: (newSortDirection: SortDirection) => any;\n margin?: string;\n}\n\nconst SortButton = ({ sortDirection = \"NONE\", setSortDirection, margin }: SortButtonProps) => {\n const state = SORT_STATES.get(sortDirection);\n return (\n setSortDirection(state!.next)}\n title=\"Change Sort\"\n >\n \n \n );\n};\n\nexport default SortButton;\n\nconst IconContainer = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: inherit;\n ${({ inverted }) => inverted && \"transform: scaleY(-1);\"}\n`;\n","import { COLORS } from \"@constants\";\nimport styled from \"styled-components\";\nimport Icon from \"../Icon\";\nimport { DropdownOptionGroup } from \"./DropdownOption\";\n\nconst DropdownGroup = (data: DropdownOptionGroup) => (\n <>\n {data.hasDivider && }\n \n \n);\n\nexport default DropdownGroup;\n\nconst Divider = styled.div`\n width: calc(100% + 24px);\n height: 1px;\n background-color: ${COLORS.NEUTRAL_200};\n margin: 12px -12px;\n`;\n\nconst Label = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n margin-top: 5px;\n`;\n","import Icon, { IconName } from \"@components/library/Icon/Icon\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { ReactElement } from \"react\";\nimport styled from \"styled-components\";\n\nexport interface DropdownOption {\n value: string;\n label: string;\n}\n\nexport interface DropdownOptionGroup {\n label: string;\n hasDivider?: boolean;\n iconName?: IconName;\n options: DropdownOption[];\n}\n\nexport type DropdownOptionOrGroup = DropdownOption | DropdownOptionGroup;\n\nexport interface ExtendedDropdownOption extends DropdownOption {\n onSelect?: (...args: any[]) => any;\n iconName?: IconName;\n optionDescription?: string;\n optionColor?: string;\n rightLabelEl?: ReactElement;\n isDisabled?: boolean;\n}\n\nexport interface ExtendedDropdownOptionGroup extends DropdownOptionGroup {\n options: ExtendedDropdownOption[];\n}\n\nexport type ExtendedDropdownOptionOrGroup = ExtendedDropdownOption | ExtendedDropdownOptionGroup;\n\n// Only used in SelectableDropdown\nexport const OptionLabel = (option: ExtendedDropdownOption, metaData) => {\n const isActive = metaData.selectValue[0]?.value === option.value;\n\n return (\n \n );\n};\n\n// Only used in MoreActionsDropdown\nexport const MoreActionsOptionLabel = (option: ExtendedDropdownOption) => {\n return (\n \n {option.iconName ? (\n \n ) : null}\n \n \n {option.label}\n {option.rightLabelEl}\n \n {option.optionDescription && (\n \n {option.optionDescription}\n \n )}\n \n \n );\n};\n\nconst Option = styled.div`\n display: flex;\n color: ${({ color }) => color};\n align-items: ${({ optionDescription }) => (optionDescription ? \"flex-start\" : \"center\")};\n ${FONTS.REGULAR_2};\n`;\n\nconst MoreActionsOption = styled(Option)`\n ${FONTS.SEMIBOLD_2};\n`;\n\nconst Content = styled.div`\n width: 100%;\n`;\n\nconst LabelContainer = styled.div`\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n`;\n\nconst OptionDescription = styled.div`\n ${FONTS.REGULAR_3};\n color: ${({ isDisabled }) => (isDisabled ? COLORS.NEUTRAL_350 : COLORS.NEUTRAL_400)};\n\n ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n display: none;\n }\n`;\n","import { usedPersonalEmail } from \"@utils/appUtils\";\nimport { Dispatch, FunctionComponent, SetStateAction } from \"react\";\nimport { OnChangeValue } from \"react-select\";\nimport Validator from \"validator\";\nimport UserDropdown, { UserOption } from \"./UserDropdown\";\n\ninterface DropdownProps {\n options: UserOption[];\n value: UserOption[];\n placeholder?: string;\n maxMenuHeight?: string;\n maxValueContainerHeight?: string;\n onChange: (any) => void;\n setError: Dispatch>;\n formatCreateLabel?: (input: string) => string;\n isPortal?: boolean;\n}\n\nconst EmailDropdown: FunctionComponent = ({\n options,\n value,\n maxMenuHeight = \"250px\",\n maxValueContainerHeight = \"unset\",\n placeholder = \"Search for teammates by name or email\",\n onChange,\n setError,\n formatCreateLabel = (input: string) => `Share with '${input}'`,\n isPortal = false,\n}) => {\n const handleChange = (newValue: OnChangeValue) => {\n const emails: string[] = newValue.map((e) => e.value);\n onChange(emails);\n\n // Check for invalid emails to set error\n let errorMsg = \"\";\n emails.forEach((email) => {\n if (!Validator.isEmail(email)) {\n errorMsg = `'${email}' is not a valid email address.`;\n } else if (usedPersonalEmail(email)) {\n errorMsg = `Please use a company email.`;\n }\n });\n\n setError(errorMsg);\n };\n\n return (\n \n );\n};\n\nexport default EmailDropdown;\n","import { COLORS, FONTS } from \"@constants\";\nimport styled from \"styled-components\";\n\nconst KeywordsDropdownCreateLabel = (inputValue: string) => (\n \n);\n\nexport default KeywordsDropdownCreateLabel;\n\nconst Label = styled.div`\n ${FONTS.REGULAR_3}\n color: ${COLORS.NEUTRAL_400};\n`;\n\nconst Add = styled.button`\n text-decoration: underline;\n border: none;\n background: none;\n &:hover {\n cursor: pointer;\n }\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport styled from \"styled-components\";\nimport { Checkbox, CheckboxText } from \"../MultiSelectDropdown\";\n\nconst KeywordsDropdownOption = ({\n innerRef,\n innerProps,\n isSelected,\n label,\n data: { __isNew__ },\n}) => {\n return (\n // eslint-disable-next-line\n \n {!__isNew__ && (\n \n {isSelected && (\n \n \n \n )}\n \n )}\n {label}\n \n );\n};\n\nexport default KeywordsDropdownOption;\n\nconst CheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n ${({ isSelected }) => (isSelected ? FONTS.MEDIUM_2 : FONTS.REGULAR_2)};\n color: ${({ isSelected }) => (isSelected ? COLORS.HALO_BLUE : COLORS.BLACK)};\n margin: 0;\n padding: 10px 14px;\n border-radius: 4px;\n\n ${({ isNew }) =>\n isNew\n ? `padding: 6px 14px 0;`\n : `\n cursor: pointer;\n &:hover {\n background-color: ${COLORS.NEUTRAL_100};\n }\n `}\n`;\n","import IconButton from \"@components/library/Buttons/IconButton\";\nimport MultiSelectDropdown from \"@components/library/Dropdowns/MultiSelectDropdown\";\nimport { COLORS, FONTS } from \"@constants\";\nimport {\n createKeyword,\n getAreasOfExpertise,\n getDisciplines,\n getKeywordSuggestionsBySimilarity,\n} from \"@requests/keywords\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { KeywordType } from \"@tsTypes/keywords\";\nimport { track } from \"@utils/appUtils\";\nimport { getOptionFromValue, getValueFromOption } from \"@utils/dropdownUtils\";\nimport { t } from \"@utils/i18n\";\nimport debounce from \"debounce-promise\";\nimport Fuse from \"fuse.js\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionMeta } from \"react-select\";\nimport styled from \"styled-components\";\nimport type { DropdownOption, DropdownOptionOrGroup } from \"../DropdownOption\";\nimport KeywordsDropdownCreateLabel from \"./KeywordsDropdownCreateLabel\";\nimport KeywordsDropdownOption from \"./KeywordsDropdownOption\";\n\ntype SuggestedDropdownOption = DropdownOption & { suggested?: boolean };\n\nconst KEYWORD_TYPE_TO_CLASS = {\n discipline: \"Discipline\",\n area_of_expertise: \"AreaOfExpertise\",\n} as const;\n\nconst ANALYTICS_UI_COMPONENT = \"keywords_dropdown\";\nenum SuggestionType {\n INPUT_SUGGESTION = \"input_suggestion\", // AI-suggested keywords based on input\n VALUE_SUGGESTION = \"value_suggestion\", // AI-suggested keywords based on selected values\n CREATED = \"created\", // User-created keyword\n NONE = \"none\", // From normal dropdown options\n}\n\nconst MAX_DISCIPLINES = 3;\nconst MAX_AREAS_OF_EXPERTISE = 10;\n// Keyword minimums only apply to scientists and requests\nconst MIN_DISCIPLINES = 1;\nconst MIN_AREAS_OF_EXPERTISE = 3;\n\ninterface Props {\n keywordType: KeywordType;\n targetType:\n | \"scientist\"\n | \"sponsor\"\n | \"university_admin\"\n | \"request\"\n | \"company_research_interest\";\n currentUserKeywords?: {\n disciplines?: string[];\n areas_of_expertise?: string[];\n };\n value: string[];\n onChange: (selection: string[]) => void;\n label?: string;\n labelFont?: string;\n instructionText?: string;\n placeholder?: string;\n // NOTE: withSuggestions and autoPopulateFn are mutually exclusive, in order to not confuse/overwhelm users with both features\n withSuggestions?: boolean;\n autoPopulateFn?: () => void;\n menuPlacement?: \"top\" | \"auto\" | \"bottom\";\n isPortal?: boolean;\n maxMenuHeight?: string;\n maxValueContainerHeight?: string;\n helpText?: string;\n errors?: { hasError: boolean; errorMessage: string }[];\n isDisabled?: boolean;\n}\n\nconst KeywordsDropdown = ({\n keywordType,\n targetType,\n currentUserKeywords,\n value,\n onChange,\n label,\n labelFont,\n instructionText,\n placeholder,\n withSuggestions = true,\n autoPopulateFn,\n menuPlacement,\n isPortal = false,\n maxMenuHeight,\n maxValueContainerHeight = \"unset\",\n helpText,\n errors,\n isDisabled = false,\n}: Props) => {\n const [allKeywords, setAllKeywords] = useState([]);\n const [suggestions, setSuggestions] = useState([]);\n const [defaultOptions, setDefaultOptions] = useState([]);\n const [options, setOptions] = useState([]);\n const [isInputSuggestionsLoading, setIsInputSuggestionsLoading] = useState(false);\n\n // Grab set of raw keywords\n useEffect(() => {\n (async () => {\n let keywords: string[] = [];\n switch (keywordType) {\n case \"discipline\":\n keywords = await getDisciplines();\n break;\n case \"area_of_expertise\":\n keywords = await getAreasOfExpertise();\n break;\n }\n setAllKeywords(keywords);\n\n let _options: DropdownOptionOrGroup[] = [];\n const usedKeywords: string[] = [];\n if (currentUserKeywords?.disciplines?.length) {\n _options.push({\n label: \"Your disciplines\",\n options: currentUserKeywords.disciplines.map(getOptionFromValue) as DropdownOption[],\n });\n usedKeywords.push(...currentUserKeywords.disciplines);\n }\n if (currentUserKeywords?.areas_of_expertise?.length) {\n _options.push({\n label: \"Your areas of expertise\",\n options: currentUserKeywords.areas_of_expertise.map(\n getOptionFromValue\n ) as DropdownOption[],\n });\n usedKeywords.push(...currentUserKeywords.areas_of_expertise);\n }\n\n // Add normal keywords excluding extra groups\n if (usedKeywords.length) {\n _options.push({\n label: \"All options\",\n options: keywords\n .filter((keyword) => !usedKeywords.includes(keyword))\n .map(getOptionFromValue) as DropdownOption[],\n });\n } else {\n // Add options without group label if no extra groups were created\n _options = keywords.map(getOptionFromValue) as DropdownOption[];\n }\n setDefaultOptions(_options);\n setOptions(_options);\n })();\n }, []);\n\n // Suggestions\n const debouncedGetKeywordSuggestionsForValue = useCallback(\n debounce(getKeywordSuggestionsBySimilarity, 500),\n []\n );\n const debouncedGetKeywordSuggestionsForInput = useCallback(\n debounce(getKeywordSuggestionsBySimilarity, 500),\n []\n );\n const getSuggestionsForValue = async (values: string[], withDebounce = true) => {\n if (!withSuggestions) return;\n\n if (values.length === 0) {\n setSuggestions([]);\n return;\n }\n setSuggestions(\n withDebounce\n ? await debouncedGetKeywordSuggestionsForValue(values, KEYWORD_TYPE_TO_CLASS[keywordType])\n : await getKeywordSuggestionsBySimilarity(values, KEYWORD_TYPE_TO_CLASS[keywordType])\n );\n };\n const getSuggestionsForInput = async (input: string): Promise => {\n if (input.length === 0 || !withSuggestions) {\n return [];\n }\n return debouncedGetKeywordSuggestionsForInput([input], KEYWORD_TYPE_TO_CLASS[keywordType]);\n };\n\n // Format options into groups\n const formatOptionsWithSuggestions = (keywords: string[], querySuggestions: string[]) => {\n const _options: DropdownOptionOrGroup[] = keywords.map(getOptionFromValue) as DropdownOption[];\n if (querySuggestions.length > 0) {\n _options.push({\n hasDivider: keywords.length > 0,\n iconName: \"Magic\",\n label: \"Alternative terms\",\n options: querySuggestions\n .filter((keyword) => !keywords.includes(keyword) && !value.includes(keyword))\n .map((v) => ({\n ...getOptionFromValue(v),\n suggested: true,\n })) as SuggestedDropdownOption[],\n });\n }\n return _options;\n };\n\n // Filtering - fuzzy match + input suggestions\n // We're manually controlling options to allow for async input suggestions\n const fuse = useMemo(() => new Fuse(allKeywords, { threshold: 0.4 }), [allKeywords]);\n const handleInputChange = (input: string): void => {\n if (input.length === 0) {\n setOptions(defaultOptions);\n return;\n }\n\n // Immediately populate fuzzy match filtered options\n const result = fuse.search(input);\n\n const keywords = result.map((r: any) => r.item).slice(0, 50);\n setOptions(formatOptionsWithSuggestions(keywords, []));\n\n if (keywords.length > 10) return;\n\n // Fetch suggestions (async and debounced) and populate at bottom later\n if (keywords.length === 0) setIsInputSuggestionsLoading(true);\n getSuggestionsForInput(input).then((inputSuggestions: string[]) => {\n setOptions(formatOptionsWithSuggestions(keywords, inputSuggestions));\n setIsInputSuggestionsLoading(false);\n });\n };\n\n const handleChange = (e: SuggestedDropdownOption[], actionMeta?: ActionMeta) => {\n const newValues = e.map(getValueFromOption) as string[];\n\n if (withSuggestions) getSuggestionsForValue(newValues);\n\n onChange(newValues);\n\n if (actionMeta?.action === \"select-option\") {\n track(SegmentEventName.Click, {\n ui_component: ANALYTICS_UI_COMPONENT,\n suggestion_type: e.at(-1)!.suggested ? \"input_suggestion\" : \"none\",\n keyword: e.at(-1)!.value,\n });\n }\n };\n\n const handleCreateOption = async (input: string) => {\n await createKeyword(input, KEYWORD_TYPE_TO_CLASS[keywordType]);\n const newValues = [...value, input];\n getSuggestionsForValue(newValues);\n onChange(newValues);\n\n track(SegmentEventName.Click, {\n ui_component: ANALYTICS_UI_COMPONENT,\n suggestion_type: SuggestionType.CREATED,\n keyword: input,\n });\n };\n\n const testid = `${keywordType}-dropdown`;\n\n let minValues = 0;\n if ([\"scientist\", \"request\"].includes(targetType)) {\n minValues = keywordType === \"discipline\" ? MIN_DISCIPLINES : MIN_AREAS_OF_EXPERTISE;\n }\n const maxValues = keywordType === \"discipline\" ? MAX_DISCIPLINES : MAX_AREAS_OF_EXPERTISE;\n\n const labelEl = (\n <>\n {label ?? \"\"}\n {Boolean(instructionText ?? (minValues || maxValues)) && (\n \n {instructionText ?? \"\"}\n {`${instructionText ? \" \" : \"\"}${(() => {\n if (minValues && maxValues) {\n return t(\"components.keywords_dropdown.instructions.min_and_max\", {\n min: minValues,\n max: maxValues,\n });\n }\n if (minValues)\n return t(\"components.keywords_dropdown.instructions.min\", { min: minValues });\n if (maxValues)\n return t(\"components.keywords_dropdown.instructions.max\", { max: maxValues });\n })()}`}\n \n )}\n \n );\n\n const placeholderText =\n placeholder ?? t([\"components.keywords_dropdown.placeholder\", keywordType]);\n\n return (\n
\n {\n autoPopulateFn?.();\n\n track(SegmentEventName.Click, {\n ui_component: \"Auto-Populate Refresh Button\",\n react_component: \"KeywordsDropdown\",\n keyword_type: keywordType,\n target_type: targetType,\n });\n }}\n />\n ) : undefined\n }\n formatCreateLabel={KeywordsDropdownCreateLabel}\n onChange={handleChange}\n options={options}\n label={labelEl}\n labelFont={labelFont}\n placeholder={placeholderText}\n value={value.map((text) => ({ value: text, label: text }))}\n helpText={helpText}\n errors={errors}\n onInputChange={handleInputChange}\n filterOption={() => true} // Allow all options to pass filter since we're manually controlling them\n isLoading={isInputSuggestionsLoading}\n isCreatable\n onCreateOption={handleCreateOption}\n withSearchIcon\n withChevronIcon={false}\n data-testid={testid}\n isDisabled={isDisabled}\n />\n {withSuggestions &&\n (suggestions ?? []).length > 0 &&\n value.length > 0 &&\n (!maxValues || value.length < maxValues) && (\n \n
\n Suggested:{\" \"}\n {suggestions.map((suggestion, index) => (\n \n {index > 0 && \", \"}\n {\n setSuggestions(suggestions.filter((s) => s !== suggestion));\n onChange([...value, suggestion]);\n track(SegmentEventName.Click, {\n ui_component: ANALYTICS_UI_COMPONENT,\n suggestion_type: SuggestionType.VALUE_SUGGESTION,\n keyword: suggestion,\n });\n }}\n >\n {suggestion}\n \n \n ))}\n
\n {\n getSuggestionsForValue(value, false);\n track(SegmentEventName.Click, {\n ui_component: \"Refresh Button\",\n react_component: \"KeywordsDropdown\",\n num_remaining_suggestions: suggestions.length,\n });\n }}\n margin=\"0 0 0 auto\"\n />\n
\n )}\n
\n );\n};\n\nexport default KeywordsDropdown;\n\nconst InstructionText = styled.div`\n ${FONTS.REGULAR_2};\n color: ${COLORS.BLACK};\n`;\nconst SuggestionsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-grow: 1;\n margin-top: 10px;\n height: 36px;\n ${FONTS.REGULAR_3};\n`;\nconst Suggestion = styled.button`\n padding: 0;\n text-decoration: underline;\n color: ${COLORS.BLACK};\n border: none;\n background: none;\n`;\n","import { IconButton } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { track } from \"@utils/appUtils\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport Select, { components } from \"react-select\";\nimport styled from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport DropdownGroup from \"./DropdownGroup\";\nimport { ExtendedDropdownOptionOrGroup, MoreActionsOptionLabel } from \"./DropdownOption\";\nimport DROPDOWN_STYLES from \"./dropdownStyles\";\n\ninterface Props {\n children?: ReactNode; // Trigger component. Defaults to a \"More Actions\" IconButton\n options: ExtendedDropdownOptionOrGroup[];\n margin?: string | 0;\n menuHorizontalPosition?: \"right\" | \"left\";\n menuWidth?: string;\n portal?: boolean;\n}\n\nconst DropdownIndicator = (props) => {\n return (\n // This is the recommended approach via the React-Select docs\n /* eslint-disable-next-line */ //@ts-ignore\n \n {props.selectProps.children ?? (\n \n )}\n \n );\n};\n\n// This dropdown is used when dropdown's value isn't tied to the selected option, as it is with\n// SelectableDropdown. Options can have various effects that may or may not be related to the\n// dropdown\nconst MoreActionsDropdown = ({\n children,\n options,\n margin = 0,\n menuHorizontalPosition,\n menuWidth,\n portal,\n}: Props) => {\n const [portalOffsetRight, setPortalOffsetRight] = useState(0);\n\n useEffect(() => {\n if (!portal) return;\n\n const element = document.getElementById(id);\n\n setPortalOffsetRight(window.innerWidth - Number(element?.getBoundingClientRect().right));\n }, [portal]);\n\n const id = uuidv4();\n\n return (\n {\n if (\"options\" in e) return;\n track(SegmentEventName.Click, {\n ui_component: \"Option\",\n react_component: \"MoreActionsDropdown\",\n option: e.value,\n });\n e.onSelect!();\n }}\n margin={margin}\n menuPlacement=\"auto\"\n menuPosition={portal ? \"fixed\" : \"absolute\"}\n menuHorizontalPosition={menuHorizontalPosition}\n menuPortalTarget={portal && document.body}\n menuWidth={menuWidth ?? \"300px\"}\n styles={\n portal && {\n menu: (base) => ({\n ...base,\n padding: \"8px 0\",\n width: menuWidth,\n ...(menuHorizontalPosition === \"right\" && { right: 0 }),\n }),\n menuList: (base) => ({\n ...base,\n display: \"flex\",\n flexDirection: \"column\",\n }),\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n ...(menuHorizontalPosition === \"right\" && { right: portalOffsetRight, left: \"unset\" }),\n }),\n option: (base) => ({\n ...base,\n width: \"unset\",\n margin: \"0 12px\",\n cursor: \"pointer\",\n }),\n }\n }\n menuShouldBlockScroll={portal}\n >\n {children}\n \n );\n};\n\nexport default MoreActionsDropdown;\n\nconst Dropdown = styled(Select)`\n ${DROPDOWN_STYLES};\n margin: ${({ margin }) => margin};\n\n .Select__control {\n background-color: transparent;\n border: none;\n min-height: unset;\n &:hover {\n &:not(.Select__control--is-focused) {\n border: none;\n }\n &.Select__control--is-focused {\n border: none;\n }\n }\n }\n .Select__control--is-focused {\n /* react-select uses !important for outline */\n outline: none !important;\n box-shadow: none;\n }\n .Select__control--menu-is-open {\n min-height: 0;\n height: inherit;\n }\n .Select__value-container {\n height: 0;\n width: 0;\n padding: 0;\n }\n .Select__indicator {\n margin-right: 0;\n }\n .Select__option {\n min-width: unset;\n }\n .Select__option--is-selected {\n ${FONTS.REGULAR_2};\n color: ${COLORS.BLACK};\n }\n .Select__indicators {\n align-items: flex-start;\n height: fit-content;\n }\n .Select__menu {\n width: fit-content;\n padding: 8px 0;\n ${({ menuWidth }) =>\n menuWidth &&\n `\n width: ${menuWidth};\n white-space: normal;\n `}\n ${({ menuHorizontalPosition }) =>\n menuHorizontalPosition &&\n `\n position: absolute;\n ${menuHorizontalPosition}: 0;\n `}\n }\n .Select__control:hover:not(.Select__control--is-focused) {\n border: none;\n }\n`;\n","/* eslint-disable react/jsx-props-no-spreading */\nimport { Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { isAsyncFunction } from \"@utils/appUtils\";\nimport debounce from \"debounce-promise\";\nimport { ReactElement, ReactNode, useRef } from \"react\";\nimport Select, {\n ActionMeta,\n ClearIndicatorProps,\n DropdownIndicatorProps,\n MultiValueRemoveProps,\n ValueContainerProps,\n components,\n createFilter,\n} from \"react-select\";\nimport AsyncSelect from \"react-select/async\";\nimport AsyncCreatableSelect from \"react-select/async-creatable\";\nimport CreatableSelect from \"react-select/creatable\";\nimport styled, { css } from \"styled-components\";\nimport FormLabel from \"../Texts/FormLabel\";\nimport DropdownGroup from \"./DropdownGroup\";\nimport type { DropdownOption, DropdownOptionOrGroup } from \"./DropdownOption\";\nimport DROPDOWN_STYLES, { MULTI_SELECT_TAG_STYLES } from \"./dropdownStyles\";\n\ninterface SelectProps {\n placeholder?: string;\n placeholderColor?: string;\n label?: string | ReactElement;\n labelFont?: string;\n labelBottomMargin?: string;\n isOptional?: boolean;\n // Height of menu (default 250px)\n maxMenuHeight?: string;\n // Height of value container\n maxValueContainerHeight?: string;\n maxValues?: number;\n menuPlacement?: \"bottom\" | \"auto\" | \"top\";\n // Custom rendering\n withSearchIcon?: boolean;\n withChevronIcon?: boolean;\n withCheckbox?: boolean;\n components?: any;\n indicatorButton?: ReactElement;\n formatCreateLabel?: (inputValue: string) => ReactNode;\n // For multi select (defaults true)\n isMulti?: boolean;\n // For sync search and single select\n closeOnMenuSelect?: boolean;\n options?: DropdownOptionOrGroup[];\n noOptionsMessage?: string;\n // For async search\n searchFn?: (query: string) => Promise;\n defaultOptions?: DropdownOptionOrGroup[];\n // For async and sync createable search\n isCreatable?: boolean;\n onCreateOption?: (value: string) => void;\n // For portal for dropdowns in modals or containers with hidden/scrollable overflow\n isPortal?: boolean;\n isClearable?: boolean;\n isDisabled?: boolean;\n helpText?: string;\n errors?: { hasError: boolean; errorMessage: string }[];\n filterOption?: (\n option: { value: string; label: string; data: any },\n inputValue: string\n ) => boolean;\n onInputChange?: (value: string, action: any) => void;\n isLoading?: boolean;\n \"data-testid\"?: string;\n}\n\ntype MultipleSelectProps = SelectProps & {\n value: DropdownOption[];\n onChange: (value: DropdownOption[], actionMeta?: ActionMeta) => void;\n};\n\nexport type SingleSelectProps = SelectProps & {\n value: DropdownOption | null;\n onChange: (value: DropdownOption | null, actionMeta?: ActionMeta) => void;\n};\n\ntype Props = MultipleSelectProps | SingleSelectProps;\n\nexport const Option = ({ innerRef, innerProps, isSelected, label, isFocused }) => {\n return (\n // From React-Select docs\n // eslint-disable-next-line\n \n \n {isSelected && (\n \n \n \n )}\n \n {label}\n \n );\n};\n\nexport const NoCheckboxOption = ({ innerRef, innerProps, isSelected, isFocused, label }) => {\n return (\n \n {label}\n \n );\n};\n\nconst ValueContainer = ({\n withSearchIcon,\n indicatorButton,\n}: {\n withSearchIcon?: boolean;\n indicatorButton?: ReactElement;\n}) => {\n const valueContainer = ({ children, ...props }: ValueContainerProps) => (\n \n {withSearchIcon && (\n \n )}\n {children}\n {indicatorButton && {indicatorButton}}\n \n );\n\n return valueContainer;\n};\n\nconst DropdownIndicator = (props: DropdownIndicatorProps) => {\n return (\n \n \n \n );\n};\n\nexport const MultiValueRemove = (props: MultiValueRemoveProps) => {\n return (\n \n \n \n );\n};\n\nconst ClearIndicator = (props: ClearIndicatorProps) => {\n return (\n \n \n \n );\n};\n\nconst MultiSelectDropdown = ({\n options,\n value,\n onChange,\n placeholder = \"All\",\n placeholderColor = COLORS.NEUTRAL_500,\n isOptional = false,\n noOptionsMessage = \"No options\",\n label,\n labelFont = FONTS.SEMIBOLD_2,\n labelBottomMargin = \"8px\",\n maxMenuHeight = \"250px\",\n maxValueContainerHeight = \"unset\",\n maxValues,\n menuPlacement = \"auto\",\n withSearchIcon = false,\n withChevronIcon = true,\n withCheckbox = true,\n components: _components = {},\n indicatorButton,\n formatCreateLabel,\n isMulti = true,\n closeOnMenuSelect = false,\n searchFn,\n defaultOptions,\n isCreatable = false,\n onCreateOption,\n isPortal = false,\n isClearable = false,\n isDisabled = false,\n helpText,\n errors,\n filterOption = createFilter({ ignoreAccents: false }),\n onInputChange,\n isLoading = false,\n \"data-testid\": dataTestId,\n}: Props) => {\n const loadOptions = async (query: string, callback): Promise => {\n if (!searchFn) {\n return;\n }\n if (isAsyncFunction(searchFn)) {\n const results = await searchFn(query);\n callback(results);\n } else {\n searchFn(query).then(callback);\n }\n };\n\n /**\n * Optimization: This will make the search feel faster in the instances when we use Fuse on the frontend\n * since the network call was fetched only once and the searchFn is not async.\n */\n const debouncedLoadOptions = isAsyncFunction(searchFn) ? debounce(loadOptions, 500) : loadOptions;\n\n const shouldHideOptions = maxValues && value instanceof Array && value.length >= maxValues;\n\n const hasAnyError = errors?.map((error) => error.hasError).includes(true);\n\n const AsyncDropdownComponent = isCreatable ? AsyncCreatableDropdown : AsyncDropdown;\n const SyncDropdownComponent = isCreatable ? SyncCreatableDropdown : SyncDropdown;\n\n const valueContainerRef = useRef(ValueContainer({ withSearchIcon, indicatorButton }));\n\n const dropdown = searchFn ? (\n \n inputValue ? noOptionsMessage : \"Start typing to search\"\n }\n creatable={isCreatable}\n menuPlacement={menuPlacement}\n menuPosition={isPortal && \"absolute\"}\n menuPortalTarget={isPortal && document.body}\n menuShouldBlockScroll={isPortal}\n isClearable={isClearable}\n isDisabled={isDisabled}\n styles={{\n menuPortal: (base) => ({\n ...base,\n // Portalled dropdown menu list should display over everything\n zIndex: 9999,\n }),\n menuList: (base) => ({\n ...base,\n maxHeight: maxMenuHeight,\n }),\n }}\n hasError={hasAnyError}\n />\n ) : (\n null,\n MultiValueRemove,\n ClearIndicator,\n ValueContainer: valueContainerRef.current,\n },\n ..._components,\n }}\n formatGroupLabel={DropdownGroup}\n formatCreateLabel={formatCreateLabel}\n options={options}\n value={value}\n onChange={onChange}\n onInputChange={onInputChange}\n isLoading={isLoading}\n filterOption={filterOption}\n isMulti={isMulti}\n hideSelectedOptions={false}\n noOptionsMessage={() => noOptionsMessage}\n closeMenuOnSelect={closeOnMenuSelect}\n maxMenuHeight={maxMenuHeight}\n maxValueContainerHeight={maxValueContainerHeight}\n menuIsOpen={shouldHideOptions ? false : undefined}\n menuPlacement={menuPlacement}\n menuPosition={isPortal && \"absolute\"}\n menuPortalTarget={isPortal && document.body}\n menuShouldBlockScroll={isPortal}\n isClearable={isClearable}\n isDisabled={isDisabled}\n onCreateOption={onCreateOption}\n styles={{\n menuPortal: (base) => ({\n ...base,\n // Portalled dropdown menu list should display over everything\n zIndex: 9999,\n }),\n menuList: (base) => ({\n ...base,\n maxHeight: maxMenuHeight,\n }),\n }}\n hasError={hasAnyError}\n />\n );\n\n return (\n \n {label ? (\n \n \n {dropdown}\n \n ) : (\n {dropdown}\n )}\n {Number(helpText?.length) > 0 && {helpText}}\n {hasAnyError &&\n errors?.map(\n (error) =>\n error.hasError && (\n \n \n {error.errorMessage}\n \n )\n )}\n \n );\n};\n\nexport default MultiSelectDropdown;\n\nconst IndicatorButtonContainer = styled.div`\n margin: 4px 8px 4px 0;\n`;\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n`;\nconst CheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n ${({ isSelected }) => (isSelected ? FONTS.MEDIUM_2 : FONTS.REGULAR_2)};\n color: ${({ isSelected }) => (isSelected ? COLORS.HALO_BLUE : COLORS.BLACK)};\n margin: 0;\n padding: 10px 14px;\n border-radius: 4px;\n cursor: pointer;\n background-color: ${({ isFocused }) => (isFocused ? COLORS.NEUTRAL_100 : \"inherit\")};\n`;\n// Also used in KeywordsDropdownOption\nexport const Checkbox = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 18px;\n width: 18px;\n min-width: 18px;\n border-radius: 3px;\n border: 1px solid ${({ isSelected }) => (isSelected ? COLORS.HALO_BLUE : COLORS.BLACK)};\n margin-right: 10px;\n background-color: ${({ isSelected }) => (isSelected ? COLORS.HALO_BLUE : \"transparent\")};\n`;\nexport const CheckboxText = styled.span`\n overflow-wrap: break-word;\n white-space: normal;\n`;\n// Also used in SelectOrCreateDropdown\nexport const MultiSelectDropdownBaseStyles = css`\n .Select__control {\n flex-wrap: nowrap;\n border-radius: 6px;\n margin-top: 8px;\n ${({ hasError }) =>\n hasError &&\n `\n border-color: ${COLORS.RED_600};\n background-color: ${COLORS.RED_100};\n &:hover {\n &:not(.Select__control--is-focused) {\n border-color: ${COLORS.RED_600};\n }\n &.Select__control--is-focused {\n border-color: ${COLORS.RED_600};\n }\n }\n `}\n ${FONTS.REGULAR_2};\n }\n .Select__clear-indicator {\n ${({ isClearable }) => !isClearable && \"display: none;\"}\n }\n .Select__menu {\n ${FONTS.REGULAR_2};\n z-index: 9999;\n }\n .Select__menu-list {\n max-height: ${({ maxMenuHeight }) => maxMenuHeight};\n }\n ${({ maxValueContainerHeight }) => `\n .Select__value-container {\n max-height: ${maxValueContainerHeight};\n overflow-y: auto;\n }\n `}\n .Select__placeholder {\n color: ${({ placeholderColor }) => placeholderColor};\n }\n`;\nconst AsyncDropdown = styled(AsyncSelect)`\n ${DROPDOWN_STYLES};\n ${MULTI_SELECT_TAG_STYLES};\n ${MultiSelectDropdownBaseStyles};\n\n .Select__dropdown-indicator {\n display: none;\n }\n .Select__indicators {\n &:hover {\n opacity: 0.5;\n }\n }\n`;\nconst AsyncCreatableDropdown = styled(AsyncCreatableSelect)`\n ${DROPDOWN_STYLES};\n ${MULTI_SELECT_TAG_STYLES};\n ${MultiSelectDropdownBaseStyles};\n\n .Select__single-value {\n ${FONTS.REGULAR_2};\n }\n .Select__indicators {\n &:hover {\n opacity: 0.5;\n }\n }\n`;\nconst SyncDropdown = styled(Select)`\n ${DROPDOWN_STYLES};\n ${MULTI_SELECT_TAG_STYLES};\n ${MultiSelectDropdownBaseStyles};\n`;\nconst SyncCreatableDropdown = styled(CreatableSelect)`\n ${DROPDOWN_STYLES};\n ${MULTI_SELECT_TAG_STYLES};\n ${MultiSelectDropdownBaseStyles};\n`;\nconst DropdownLabel = styled.label`\n display: flex;\n flex-direction: column;\n width: 100%;\n margin: 0;\n ${({ labelFont }) => labelFont && labelFont};\n`;\nexport const Optional = styled.span`\n position: relative;\n ${FONTS.MEDIUM_2};\n height: 21px;\n color: ${COLORS.NEUTRAL_500};\n margin-left: 16px;\n`;\nconst HelpText = styled.div`\n margin-top: 8px;\n ${FONTS.REGULAR_2};\n`;\nconst ErrorMessage = styled.div`\n display: flex;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.RED_600};\n`;\nconst StyledValueContainer = styled.div`\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n`;\n","import { Icon, ProfilePicture } from \"@components/library\";\nimport DROPDOWN_STYLES from \"@components/library/Dropdowns/dropdownStyles\";\nimport { COLORS, FONTS, STYLES } from \"@constants\";\nimport { User } from \"@tsTypes/schema\";\nimport { SponsorLicenseType } from \"@tsTypes/sponsorProfiles\";\nimport { Dispatch, FunctionComponent, SetStateAction } from \"react\";\nimport Select_, { MultiValueGenericProps, MultiValueRemoveProps, components } from \"react-select\";\nimport { default as CreatableSelect_ } from \"react-select/creatable\";\nimport styled from \"styled-components\";\nimport Validator from \"validator\";\nimport { AdminTag, LicenseTag } from \"../Tags/users\";\n\nexport interface UserOption {\n value: string; // email or user.id\n label: string; // email or name\n user: Pick & {\n image: {\n medium: {\n url: string | null;\n };\n };\n name: string;\n profile_info: {\n license: SponsorLicenseType | null;\n isAdmin: boolean;\n };\n };\n __isNew__?: boolean;\n}\n\n// Customize label components both in value and menu\nconst formatOptionLabel = (option: UserOption, meta: any) => {\n if (meta.context === \"menu\") {\n if (option.__isNew__) {\n // Create label\n return {option.label};\n }\n // Menu label\n return (\n \n );\n }\n // Value label\n return (\n \n {option.label}\n \n );\n};\n\n// Customize value remove icon\nconst MultiValueRemove = (props: MultiValueRemoveProps) => {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n \n \n );\n};\n\n// Customize value label with premium icon\nconst MultiValueLabel = (props: MultiValueGenericProps) => {\n const { children, ...otherProps } = props;\n // TODO: (justinpchang) Show premium tooltip\n return {children};\n};\n\ninterface DropdownProps {\n options: UserOption[];\n value: UserOption[];\n placeholder?: string;\n maxMenuHeight?: string;\n maxValueContainerHeight?: string;\n creatable?: boolean;\n onChange?: (any) => void;\n setError?: Dispatch>;\n formatCreateLabel?: (input: string) => string;\n isPortal?: boolean;\n}\n\nconst UserDropdown: FunctionComponent = ({\n options,\n value,\n onChange,\n maxMenuHeight = \"250px\",\n maxValueContainerHeight = \"unset\",\n formatCreateLabel,\n placeholder = \"Search for teammates by name or email\",\n creatable = false,\n isPortal = false,\n}) => {\n const Container = creatable ? CreatableSelect : Select;\n return (\n
\n null,\n IndicatorSeparator: () => null,\n MultiValueRemove,\n MultiValueLabel,\n }}\n formatOptionLabel={formatOptionLabel}\n formatCreateLabel={formatCreateLabel}\n noOptionsMessage={() => null}\n menuPosition={isPortal && \"absolute\"}\n menuPortalTarget={isPortal && document.body}\n styles={{\n multiValue: (base) => ({\n ...base,\n borderRadius: \"100px\",\n padding: \"0 3px\",\n fontSize: 14,\n }),\n multiValueRemove: (base) => ({\n ...base,\n borderRadius: \"100px\",\n \"&:hover\": {\n backgroundColor: COLORS.NEUTRAL_200,\n },\n }),\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n }),\n }}\n />\n
\n );\n};\n\nconst Select = styled(Select_)`\n ${DROPDOWN_STYLES};\n .Select__control {\n ${({ maxValueContainerHeight }) =>\n maxValueContainerHeight && `max-height: ${maxValueContainerHeight};`}\n overflow-y: auto;\n }\n .Select__menu-list {\n ${({ maxMenuHeight }) => `max-height: ${maxMenuHeight}`};\n }\n`;\n\nconst CreatableSelect = styled(CreatableSelect_)`\n ${DROPDOWN_STYLES};\n .Select__control {\n ${({ maxValueContainerHeight }) =>\n maxValueContainerHeight && `max-height: ${maxValueContainerHeight};`}\n overflow-y: auto;\n }\n .Select__menu-list {\n ${({ maxMenuHeight }) => `max-height: ${maxMenuHeight}`};\n }\n`;\n\nconst Option = styled.div`\n display: grid;\n grid-template-columns: 36px 1fr;\n grid-gap: 0 10px;\n align-items: flex-start;\n margin: 10px 8px;\n`;\n\nconst OptionName = styled.div`\n flex-grow: 1;\n ${FONTS.SEMIBOLD_2}\n ${STYLES.ONE_LINE}\n`;\n\nconst OptionEmail = styled.div`\n ${FONTS.REGULAR_3}\n ${STYLES.ONE_LINE}\n`;\n\nconst LabelText = styled.p`\n ${(props) => props.error && `color: ${COLORS.RED}`};\n`;\n\nconst CreateLabel = styled.span`\n ${FONTS.REGULAR_2}\n`;\n\nconst LabelContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst TagContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n pointer-events: none;\n`;\n\nexport default UserDropdown;\n","import { COLORS, FONTS, STYLES } from \"@constants\";\nimport { css } from \"styled-components\";\n\n// Only make changes here that are intended to be applicable to all standard dropdowns!\n// This should go first in a dropdown's styles. If a particular dropdown needs specific\n// styles, that should go into that dropdown's styles\n\nconst DROPDOWN_STYLES = css`\n .Select__control {\n border: 1px solid ${COLORS.NEUTRAL_300};\n min-height: 36px;\n transition: initial;\n &:hover {\n &:not(.Select__control--is-focused) {\n border: 1px solid ${COLORS.NEUTRAL_400};\n cursor: pointer;\n }\n &.Select__control--is-focused {\n border: 1px solid ${COLORS.HALO_BLUE};\n }\n cursor: pointer;\n }\n }\n .Select__control--is-focused {\n box-shadow: none;\n border: 1px solid ${COLORS.HALO_BLUE};\n }\n .Select__placeholder {\n color: ${COLORS.NEUTRAL_500};\n ${FONTS.REGULAR_2};\n }\n .Select__input-container {\n ${FONTS.REGULAR_2};\n }\n .Select__indicator-separator {\n display: none;\n }\n .Select__indicator {\n color: ${COLORS.BLACK};\n margin-right: 10px;\n padding: 0;\n &:hover {\n color: ${COLORS.BLACK};\n }\n }\n .Select__menu {\n white-space: nowrap;\n width: 100%;\n border-radius: 8px;\n padding: 16px 12px;\n box-shadow: ${STYLES.SHADOW_B};\n cursor: default;\n }\n .Select__menu-list {\n max-height: unset;\n }\n .Select__group {\n padding: 0;\n }\n .Select__option {\n min-width: 225px;\n margin: 0 12px;\n width: calc(100% - 24px);\n border-radius: 4px;\n background-color: ${COLORS.WHITE};\n ${FONTS.REGULAR_2};\n cursor: pointer;\n &:hover {\n background-color: ${COLORS.NEUTRAL_100};\n }\n &:active {\n background-color: ${COLORS.NEUTRAL_200};\n }\n }\n .Select__option--is-selected {\n ${FONTS.MEDIUM_2};\n color: ${COLORS.HALO_BLUE};\n }\n`;\n\nexport default DROPDOWN_STYLES;\n\nexport const MULTI_SELECT_TAG_STYLES = css`\n .Select__input-container {\n margin: 0 2px;\n }\n .Select__multi-value {\n display: flex;\n align-items: center;\n height: 24px;\n background-color: ${COLORS.NEUTRAL_100};\n padding: 0 14px;\n border-radius: 100px;\n &:not(:last-of-type) {\n margin-right: 8px;\n }\n }\n .Select__multi-value__label {\n ${FONTS.MEDIUM_3};\n padding: 0;\n }\n .Select__multi-value__remove {\n padding: 0;\n &:hover {\n opacity: 0.4;\n background-color: transparent;\n }\n }\n`;\n","// USAGE:\n// 1. Copy the medium icon SVG code from Figma and add it as a new case to the switch statement in getSvg\n// 2. The icon's name is also listed in Figma and should be added to the IconName type (camelCase)\n// 3. Replace height and width with {size} and instances of hex color codes with {color}\n\nimport { COLORS } from \"@constants\";\nimport styled from \"styled-components\";\n\nexport interface IconProps {\n name: IconName;\n color?: string;\n size?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\" | number;\n margin?: string | 0;\n display?: string;\n \"data-testid\"?: string;\n}\n\nconst SIZES = {\n xxs: 10,\n xs: 16,\n sm: 20,\n md: 24,\n lg: 32,\n xl: 40,\n xxl: 56,\n};\n\nconst Icon = ({\n name,\n color = COLORS.BLACK,\n size = \"md\",\n margin = 0,\n display = \"flex\",\n \"data-testid\": dataTestId,\n}: IconProps) => {\n const numericSize = typeof size === \"number\" ? size : SIZES[size];\n\n const svg = getSvg(name, color, numericSize);\n\n if (!svg) return null;\n\n return (\n \n {svg}\n \n );\n};\n\nexport default Icon;\n\nconst IconContainer = styled.div`\n height: ${({ size }) => `${size}px`};\n width: ${({ size }) => `${size}px`};\n margin: ${({ margin }) => margin};\n display: ${({ display }) => display};\n align-items: center;\n`;\n\nexport type IconName =\n | \"3D Printing\"\n | \"Accelerator\"\n | \"Accelerator Complete\"\n | \"Add\"\n | \"Add to collection\"\n | \"Adhesives\"\n | \"Agriculture\"\n | \"Arrow Left\"\n | \"Arrow Right\"\n | \"Arrow Right Filled\"\n | \"Arrow Up\"\n | \"Attachment\"\n | \"Attention\"\n | \"Attention Filled\"\n | \"Audio Mute\"\n | \"Audio Unmute\"\n | \"Australia\"\n | \"Avatar Edit\"\n | \"Bell\"\n | \"Burger\"\n | \"Calendar\"\n | \"Canada\"\n | \"Change\"\n | \"Checkup\"\n | \"Chevron Down\"\n | \"Chevron Left\"\n | \"Chevron Right\"\n | \"Chevron Up\"\n | \"China\"\n | \"Close\"\n | \"Compounds\"\n | \"Copy\"\n | \"Crown\"\n | \"Data\"\n | \"Delete\"\n | \"Diamond\"\n | \"Download\"\n | \"Dot\"\n | \"Easy Apply\"\n | \"Edit\"\n | \"Employees\"\n | \"Evaluate\"\n | \"Expand\"\n | \"Expertise\"\n | \"Facebook\"\n | \"Filter\"\n | \"Filter & sort\"\n | \"Followers\"\n | \"Food\"\n | \"Frame\"\n | \"Funding\"\n | \"Help\"\n | \"Hide\"\n | \"History\"\n | \"Hygiene\"\n | \"Idea\"\n | \"India\"\n | \"Info\"\n | \"Info Small\"\n | \"Info Inverted\"\n | \"Invite\" // From a mockup, not the design system\n | \"Jewel\"\n | \"Lead Reviewer\"\n | \"LinkedIn\"\n | \"Location\"\n | \"Lock\"\n | \"Magic\"\n | \"Magic Full\"\n | \"Magic Refresh\"\n | \"Malaysia\"\n | \"Materials\"\n | \"Medal\"\n | \"Medicine\"\n | \"Message\"\n | \"Messaging\"\n | \"Mexico\"\n | \"Minimize\"\n | \"More Actions\"\n | \"Notification Filled\"\n | \"Open Call\"\n | \"Open Call Paused\"\n | \"Open Call Complete\"\n | \"Open in a new tab\"\n | \"Opportunity\"\n | \"Organization\"\n | \"Packaging\"\n | \"Paused\"\n | \"Play\" // From a mockup, not the design system\n | \"Private\"\n | \"Private Company\"\n | \"Profile\"\n | \"Proposal\"\n | \"Proposal Privacy\"\n | \"Publication\"\n | \"Public\"\n | \"Quota-Based RFP\"\n | \"Radio Small\"\n | \"Radio Small Filled\"\n | \"Reduce\"\n | \"Refresh\"\n | \"Reorder\"\n | \"Request for experts\"\n | \"RFP\"\n | \"RFP Complete\"\n | \"RFP Filled\"\n | \"Row height\"\n | \"Row height - short\"\n | \"Row height - medium\"\n | \"Row height - full\"\n | \"Save\"\n | \"Search\"\n | \"Send Message\"\n | \"Share\"\n | \"Sort\"\n | \"Sort By\"\n | \"Star\"\n | \"Status\"\n | \"Success\"\n | \"Technology\"\n | \"Thumb Down\"\n | \"Thumb Down Filled\"\n | \"Thumb Up\"\n | \"Thumb Up Filled\"\n | \"Tick\"\n | \"Twitter\"\n | \"Unlocked\"\n | \"Unsave\"\n | \"USA\"\n | \"Verified\"\n | \"View\"\n | \"Water\"\n | \"X\"\n | \"X Filled\"\n | undefined;\n\nconst getSvg = (name: IconName, color: string, size: number) => {\n switch (name) {\n case \"Request for experts\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Radio Small\": {\n return (\n \n \n \n \n \n );\n }\n case \"Radio Small Filled\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Accelerator\": {\n return (\n \n \n \n \n \n );\n }\n case \"Accelerator Complete\": {\n return (\n \n \n \n \n \n );\n }\n case \"Add to collection\": {\n return (\n \n \n \n );\n }\n case \"More Actions\": {\n return (\n \n \n \n );\n }\n case \"View\": {\n return (\n \n \n \n );\n }\n case \"Paused\": {\n return (\n \n \n \n );\n }\n case \"Play\": {\n return (\n \n \n \n );\n }\n case \"Tick\": {\n return (\n \n \n \n );\n }\n case \"Messaging\": {\n return (\n \n \n \n \n );\n }\n case \"Location\": {\n return (\n \n \n \n \n );\n }\n case \"Filter\": {\n return (\n \n \n \n );\n }\n case \"Filter & sort\": {\n return (\n \n \n \n \n \n );\n }\n case \"Notification Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Open Call\": {\n return (\n \n \n \n \n );\n }\n case \"Open Call Paused\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Open Call Complete\": {\n return (\n \n \n \n \n \n );\n }\n case \"Medal\": {\n return (\n \n \n \n );\n }\n case \"Send Message\": {\n return (\n \n \n \n );\n }\n case \"X\": {\n return (\n \n \n \n );\n }\n case \"Change\": {\n return (\n \n \n \n );\n }\n case \"Twitter\": {\n return (\n \n \n \n \n );\n }\n case \"LinkedIn\": {\n return (\n \n \n \n \n );\n }\n case \"Facebook\": {\n return (\n \n \n \n \n );\n }\n case \"Delete\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Download\": {\n return (\n \n \n \n \n );\n }\n case \"Dot\": {\n return (\n \n \n \n );\n }\n case \"Lead Reviewer\": {\n return (\n \n \n \n \n );\n }\n case \"Add\": {\n return (\n \n \n \n );\n }\n case \"Arrow Left\": {\n return (\n \n \n \n );\n }\n case \"Arrow Up\": {\n return (\n \n \n \n );\n }\n case \"Private\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Employees\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Proposal Privacy\": {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Proposal\": {\n return (\n \n \n \n );\n }\n case \"Minimize\": {\n return (\n \n \n \n );\n }\n case \"Expand\": {\n return (\n \n \n \n );\n }\n case \"Reduce\": {\n return (\n \n \n \n );\n }\n case \"Calendar\": {\n return (\n \n \n \n );\n }\n case \"Share\": {\n return (\n \n \n \n );\n }\n case \"Open in a new tab\": {\n return (\n \n \n \n );\n }\n case \"Profile\": {\n return (\n \n \n \n );\n }\n case \"Message\": {\n return (\n \n \n \n );\n }\n case \"Chevron Down\": {\n return (\n \n \n \n );\n }\n case \"Chevron Up\": {\n return (\n \n \n \n );\n }\n case \"Chevron Left\": {\n return (\n \n \n \n );\n }\n case \"Chevron Right\": {\n return (\n \n \n \n );\n }\n case \"Copy\": {\n return (\n \n \n \n \n \n \n \n );\n }\n case \"Data\": {\n return (\n \n \n \n );\n }\n case \"Refresh\": {\n return (\n \n \n \n \n );\n }\n case \"Close\": {\n return (\n \n \n \n );\n }\n case \"Search\": {\n return (\n \n \n \n );\n }\n case \"Verified\": {\n return (\n \n \n \n \n );\n }\n case \"Agriculture\": {\n return (\n \n \n \n );\n }\n case \"Hygiene\": {\n return (\n \n \n \n );\n }\n case \"Water\": {\n return (\n \n \n \n );\n }\n case \"Bell\": {\n return (\n \n \n \n \n );\n }\n case \"Success\": {\n return (\n \n \n \n \n );\n }\n case \"Opportunity\": {\n return (\n \n \n \n \n \n );\n }\n case \"3D Printing\": {\n return (\n \n \n \n \n \n );\n }\n case \"Packaging\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Adhesives\": {\n return (\n \n \n \n \n );\n }\n case \"Food\": {\n return (\n \n \n \n );\n }\n case \"Medicine\": {\n return (\n \n \n \n );\n }\n case \"Private Company\": {\n return (\n \n \n \n \n \n \n \n \n );\n }\n case \"Easy Apply\": {\n return (\n \n \n \n );\n }\n case \"Attention\": {\n return (\n \n \n \n );\n }\n case \"Idea\": {\n return (\n \n \n \n \n \n \n \n \n );\n }\n case \"Info\": {\n return (\n \n \n \n \n \n );\n }\n case \"Info Small\": {\n return (\n \n \n \n \n \n );\n }\n case \"Info Inverted\": {\n return (\n \n \n \n \n \n );\n }\n case \"Invite\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Jewel\": {\n return (\n \n \n \n \n \n );\n }\n case \"Materials\": {\n return (\n \n \n \n );\n }\n case \"Arrow Right\": {\n return (\n \n \n \n );\n }\n case \"Attachment\": {\n return (\n \n \n \n );\n }\n case \"Help\": {\n return (\n \n \n \n \n \n \n \n );\n }\n case \"History\": {\n return (\n \n \n \n );\n }\n case \"USA\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Australia\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"China\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"India\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Canada\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Malaysia\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Mexico\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Burger\": {\n return (\n \n \n \n \n \n );\n }\n case \"Technology\": {\n return (\n \n \n \n );\n }\n case \"Funding\": {\n return (\n \n \n \n );\n }\n case \"Expertise\": {\n return (\n \n \n \n );\n }\n case \"Organization\": {\n return (\n \n \n \n );\n }\n case \"Compounds\": {\n return (\n \n \n \n );\n }\n case \"Checkup\": {\n return (\n \n \n \n \n \n \n \n \n );\n }\n case \"Publication\": {\n // Have to use unoptimized SVG otherwise the middle bar of the book disappears at small sizes\n return (\n \n \n \n \n \n \n );\n }\n case \"Star\": {\n return (\n \n \n \n );\n }\n case \"Status\": {\n return (\n \n \n \n );\n }\n case \"Edit\": {\n return (\n \n \n \n \n );\n }\n case \"RFP\": {\n return (\n \n \n \n );\n }\n case \"RFP Complete\": {\n return (\n \n \n \n );\n }\n case \"RFP Filled\": {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n }\n case \"Row height\": {\n return (\n \n \n \n );\n }\n case \"Row height - short\": {\n return (\n \n \n \n );\n }\n case \"Row height - medium\": {\n return (\n \n \n \n \n \n \n \n );\n }\n case \"Row height - full\": {\n return (\n \n \n \n );\n }\n case \"Save\": {\n return (\n \n \n \n );\n }\n case \"Sort\": {\n return (\n \n \n \n );\n }\n case \"Public\": {\n return (\n \n \n \n );\n }\n case \"Quota-Based RFP\": {\n return (\n \n \n \n );\n }\n case \"Hide\": {\n return (\n \n \n \n );\n }\n case \"Followers\": {\n return (\n \n \n \n \n );\n }\n case \"Reorder\": {\n return (\n \n \n \n );\n }\n case \"Sort By\": {\n return (\n \n \n \n );\n }\n case \"Thumb Up\": {\n return (\n \n \n \n );\n }\n case \"Thumb Up Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Thumb Down\": {\n return (\n \n \n \n );\n }\n case \"Thumb Down Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Attention Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Audio Mute\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Audio Unmute\": {\n return (\n \n \n \n \n \n \n \n );\n }\n case \"Lock\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Unlocked\": {\n return (\n \n \n \n \n \n \n );\n }\n case \"Unsave\": {\n return (\n \n \n \n );\n }\n case \"Crown\": {\n return (\n \n \n \n \n );\n }\n case \"Magic\": {\n return (\n \n \n \n \n );\n }\n case \"Magic Full\": {\n return (\n \n \n \n \n );\n }\n case \"Magic Refresh\": {\n return (\n \n \n \n \n \n );\n }\n case \"Diamond\": {\n return (\n \n \n \n );\n }\n case \"Evaluate\": {\n return (\n \n \n \n );\n }\n case \"Avatar Edit\": {\n return (\n \n \n \n \n \n );\n }\n case \"X Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Arrow Right Filled\": {\n return (\n \n \n \n \n );\n }\n case \"Frame\": {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n }\n default: {\n return null;\n }\n }\n};\n","import { ChipCheckbox, RemovableInputWrapper } from \"@components/library\";\nimport { ChangeEvent, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n label?: string;\n options: { value: string; label: string }[];\n selectedValues: string[] | null;\n disabledValues?: string[];\n onChange: (values: string[] | null) => void;\n gap?: string;\n hideAll?: boolean;\n \"data-testid\"?: string;\n}\n\nconst ChipsInput = ({\n label,\n options,\n selectedValues,\n disabledValues = [],\n onChange,\n gap = \"16px 8px\",\n hideAll = false,\n \"data-testid\": dataTestId,\n}: Props) => {\n const [isExpanded, setIsExpanded] = useState(Number(selectedValues?.length) > 0);\n\n const handleChange = (e: ChangeEvent, value: string) => {\n let newValues: string[];\n if (e.target.checked) {\n newValues = [...(selectedValues ?? []), value];\n } else {\n newValues = (selectedValues ?? []).filter((selectedValue) => selectedValue !== value);\n }\n onChange(newValues);\n };\n\n const areAllSelected = selectedValues?.length === options.length - disabledValues.length;\n\n const handleAllChange = () => {\n if (areAllSelected) {\n onChange([]);\n } else {\n const nonDisabledValues = options\n .map((option) => option.value)\n .filter((value) => !disabledValues.includes(value));\n onChange(nonDisabledValues);\n }\n };\n\n const chips = (\n \n {!hideAll && }\n {options.map((option) => (\n handleChange(e, option.value)}\n />\n ))}\n \n );\n\n return (\n
\n {label ? (\n onChange(null)}\n isExpanded={isExpanded}\n setIsExpanded={setIsExpanded}\n data-testid={`${dataTestId}-wrapper`}\n >\n {chips}\n \n ) : (\n chips\n )}\n
\n );\n};\n\nexport default ChipsInput;\n\nconst Chips = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: ${({ gap }) => gap};\n`;\n","import { Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport resizeGrabber from \"@images/icons/resize_grabber.svg\";\nimport { ChangeEvent, ForwardedRef, ReactNode, forwardRef } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport FormLabel from \"../Texts/FormLabel\";\n\nexport type TextInputError = { hasError: boolean; errorMessage: string };\n\ninterface Props {\n id?: string;\n value: string;\n onChange:\n | ((e: ChangeEvent) => void)\n | ((e: ChangeEvent) => void);\n name?: string;\n label?: ReactNode;\n labelFont?: string;\n placeholder?: string;\n placeholderColor?: string;\n onBlur?: (...args: any[]) => void;\n optional?: boolean;\n characterLimit?: number;\n warningLimit?: number;\n errors?: TextInputError[];\n textarea?: boolean;\n rows?: number; // applicable if textarea\n type?: string;\n hideClearButton?: boolean;\n resize?: string;\n disabled?: boolean;\n startingHeight?: string;\n min?: number;\n max?: number;\n \"data-testid\"?: string;\n}\n\nconst TextInput = (\n {\n id,\n value,\n onChange,\n name,\n label,\n labelFont,\n placeholder,\n placeholderColor = COLORS.NEUTRAL_500,\n type = \"text\",\n onBlur,\n optional = false,\n characterLimit,\n warningLimit,\n errors,\n hideClearButton = false,\n textarea = false,\n rows,\n resize = \"vertical\",\n disabled,\n startingHeight = \"84px\",\n min,\n max,\n \"data-testid\": dataTestId,\n }: Props,\n ref: ForwardedRef\n) => {\n const hasExceededCharacterLimit = characterLimit && value.length > characterLimit;\n const hasExceededWarningLimit = warningLimit && value.length > warningLimit;\n const hasAnyError =\n // If the other error conditions are all false, we still want to check the character limit\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n Boolean(errors?.map((error) => error.hasError).includes(true) || hasExceededCharacterLimit);\n\n const handleClear = (e) => {\n const newEvent = {\n ...e,\n target: {\n ...e.target,\n value: type === \"number\" ? undefined : \"\",\n },\n };\n\n onChange(newEvent);\n };\n\n const input = textarea ? (\n ) =>\n (onChange as (e: ChangeEvent) => void)(e)\n }\n onBlur={onBlur}\n ref={ref}\n startingHeight={startingHeight}\n rows={rows}\n disabled={disabled}\n resize={resize}\n hasError={hasAnyError}\n data-testid={dataTestId}\n />\n ) : (\n \n ) =>\n (onChange as (e: ChangeEvent) => void)(e)\n }\n onBlur={onBlur}\n disabled={disabled}\n ref={ref}\n hasError={hasAnyError}\n hideClearButton={hideClearButton}\n min={min}\n max={max}\n data-testid={dataTestId}\n />\n {value && !hideClearButton && (\n handleClear(e)}>\n \n \n )}\n \n );\n\n const errorIcon = ;\n\n return (\n \n {label ? (\n \n ) : (\n input\n )}\n {characterLimit && (\n \n {hasExceededCharacterLimit && errorIcon}\n {value?.length} of {characterLimit} characters including spaces\n \n )}\n {errors?.map(\n (error) =>\n error.hasError && (\n \n {errorIcon}\n {error.errorMessage}\n \n )\n )}\n \n );\n};\n\nexport default forwardRef(TextInput);\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n`;\n// These styles are also used in MultiTextInput and SelectOrCreateDropdown\nexport const Label = styled.label`\n ${({ labelFont }) => labelFont ?? FONTS.SEMIBOLD_2};\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 0;\n`;\n// export const Optional = styled.span`\n// position: relative;\n// top: 2px;\n// ${FONTS.MEDIUM_2};\n// color: ${COLORS.NEUTRAL_500};\n// margin-left: 16px;\n// `;\nconst inputStyles = css`\n ${FONTS.REGULAR_2};\n border: 1px solid ${({ hasError }) => (hasError ? COLORS.RED_600 : COLORS.NEUTRAL_300)};\n border-radius: 6px;\n width: 100%;\n ${({ hasError }) => hasError && `background-color: ${COLORS.RED_100}`};\n &::placeholder {\n ${FONTS.REGULAR_2};\n color: ${({ placeholderColor }) => placeholderColor};\n }\n &:focus {\n border: 1px solid ${({ hasError }) => (hasError ? COLORS.RED_600 : COLORS.HALO_BLUE)};\n }\n`;\nconst TextArea = styled.textarea`\n ${inputStyles};\n padding: 6px 10px;\n ${({ rows, startingHeight }) => typeof rows === \"undefined\" && `height: ${startingHeight}`};\n min-height: 38px;\n resize: ${({ disabled, resize }) => (disabled ? \"none\" : resize)};\n &::-webkit-resizer {\n background-image: url(${resizeGrabber});\n background-repeat: no-repeat;\n background-size: 100%;\n background-position: bottom right;\n }\n &::-webkit-scrollbar-corner {\n height: unset;\n }\n &:hover:not(:focus) {\n border: 1px solid ${({ hasError }) => (hasError ? COLORS.RED_600 : COLORS.NEUTRAL_500)};\n }\n ${({ disabled }) =>\n disabled &&\n `\n color: ${COLORS.NEUTRAL_500};\n background-color: ${COLORS.NEUTRAL_50};\n &:hover, &:hover:not(:focus) {\n border: 1px solid ${COLORS.NEUTRAL_300};\n }\n `}\n`;\nconst InputContainer = styled.div`\n position: relative;\n &:hover input:not(:focus) {\n border: 1px solid ${({ hasError }) => (hasError ? COLORS.RED_600 : COLORS.NEUTRAL_500)};\n }\n`;\nconst Input = styled.input`\n ${inputStyles};\n height: 36px;\n padding: ${({ hideClearButton }) => (hideClearButton ? \"6px 10px\" : \"6px 36px 6px 10px\")};\n`;\nconst ClearButton = styled.button`\n position: absolute;\n top: calc(50% - 8px);\n right: 15px;\n border: none;\n background: none;\n padding: 0;\n &:hover {\n opacity: 0.5;\n }\n &:focus {\n outline: none;\n }\n`;\nconst CharacterLimit = styled.div`\n display: flex;\n ${({ hasError, hasWarning }) => (hasError || hasWarning ? FONTS.MEDIUM_3 : FONTS.REGULAR_3)};\n color: ${({ hasError, hasWarning }) => {\n if (hasError) return COLORS.RED_600;\n else if (hasWarning) return COLORS.ORANGE;\n return COLORS.NEUTRAL_500;\n }};\n`;\nconst ErrorRow = styled.div`\n display: flex;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.RED_600};\n`;\n","import { InfoTag } from \"@components/library\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { ReactNode, useState } from \"react\";\nimport styled, { css } from \"styled-components\";\n\nexport interface TabsProps {\n activeTab: string;\n setActiveTab: (newTab: string) => void;\n tabs: {\n key: string;\n label: string | ReactNode;\n count?: number;\n withNewTag?: boolean;\n onClick?: () => void;\n \"data-testid\"?: string;\n }[];\n variant?: \"normal\" | \"attention\";\n activeColor?: string;\n font?: string;\n tabDistance?: string;\n margin?: string | 0;\n}\n\nconst Tabs = ({\n activeTab,\n setActiveTab,\n tabs,\n variant = \"normal\",\n activeColor,\n font = FONTS.SEMIBOLD_2,\n tabDistance = \"24px\",\n margin,\n}: TabsProps) => {\n const [hoveredTab, setHoveredTab] = useState();\n\n return (\n \n \n \n {tabs.map((tab) => {\n const isActive = activeTab === tab.key;\n return (\n \n {\n setActiveTab(tab.key);\n if (tab.onClick) tab.onClick();\n }}\n onMouseEnter={() => setHoveredTab(tab.key)}\n onMouseLeave={() => setHoveredTab(null)}\n variant={variant}\n activeColor={activeColor}\n font={font}\n data-testid={tab[\"data-testid\"]}\n >\n {tab.label}\n {typeof tab.count === \"number\" && (\n {\n if (isActive) {\n return (\n activeColor ?? (variant === \"normal\" ? COLORS.BLACK : COLORS.ORANGE_900)\n );\n } else if (hoveredTab === tab.key) {\n return variant === \"normal\" ? COLORS.NEUTRAL_500 : COLORS.ORANGE_900;\n }\n return variant === \"normal\" ? COLORS.NEUTRAL_400 : COLORS.ORANGE;\n })()}\n >\n {tab.count}\n \n )}\n \n {tab.withNewTag && (\n \n NEW\n \n )}\n \n );\n })}\n \n \n );\n};\n\nexport default Tabs;\n\nconst Container = styled.div`\n position: relative;\n`;\n\nconst TabsContainer = styled.div`\n display: flex;\n gap: ${({ tabDistance }) => tabDistance};\n ${({ margin }) => margin && `margin: ${margin}`};\n overflow-x: auto;\n min-height: 16px;\n\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n padding-right: 40px;\n\n /* Hide horizontal scrollbar for mobile */\n ::-webkit-scrollbar {\n display: none;\n }\n }\n`;\nconst TabWrapper = styled.div`\n display: flex;\n white-space: nowrap;\n`;\nconst Tab = styled.button`\n flex-shrink: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 0 0 5px;\n border: none;\n border-bottom: ${({ isActive, variant, activeColor }) =>\n `2px solid ${(() => {\n if (isActive) {\n if (activeColor) return activeColor;\n if (variant === \"normal\") return COLORS.BLACK;\n if (variant === \"attention\") return COLORS.ORANGE_900;\n } else {\n return \"transparent\";\n }\n })()}`};\n background-color: transparent;\n ${({ font }) => font};\n color: ${({ isActive, variant, activeColor }) => {\n if (isActive) {\n if (activeColor) return activeColor;\n if (variant === \"normal\") return COLORS.BLACK;\n if (variant === \"attention\") return COLORS.ORANGE_900;\n }\n return variant === \"normal\" ? COLORS.NEUTRAL_400 : COLORS.ORANGE;\n }};\n ${({ isActive, variant }) =>\n !isActive &&\n css`\n &:hover {\n color: ${variant === \"normal\" ? COLORS.NEUTRAL_500 : COLORS.ORANGE_900};\n border-bottom: 2px solid ${variant === \"normal\" ? COLORS.NEUTRAL_500 : COLORS.ORANGE_900};\n }\n `}\n &:active {\n outline: none;\n }\n`;\nconst NewTagContainer = styled.div`\n display: flex;\n margin: 4px 0 0 0;\n`;\n\nconst Shadow = styled.div`\n display: none;\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n display: block;\n\n pointer-events: none;\n\n position: absolute;\n top: 0;\n bottom: 0;\n right: -1px; // hack because 1px of the content under the shadow is visible on the right side\n\n width: 100%;\n height: 101%; // hack because 1px of the content under the shadow is visible on the bottom\n\n background: linear-gradient(90deg, rgba(255, 255, 255, 0) 83%, rgb(255, 255, 255) 93%);\n }\n`;\n","import Icon from \"@components/library/Icon\";\nimport { COLORS, FONTS, STYLES, WINDOW_DIMENSIONS } from \"@constants\";\nimport { MouseEvent, ReactElement, ReactNode, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport styled from \"styled-components\";\nimport IconButton from \"../Buttons/IconButton\";\nimport { IconName } from \"../Icon/Icon\";\n\nexport interface BlankModalProps {\n isOpen: boolean;\n onClose: () => void;\n closeOnDimmerClick?: boolean;\n headerText?: string | ReactElement;\n headerIconName?: IconName;\n subHeaderText?: string;\n subHeaderIconName?: IconName;\n hideCloseButton?: boolean;\n disableBackgroundScroll?: boolean;\n width?: string;\n height?: string;\n backgroundMode?: \"dim\" | \"blur\";\n children?: ReactNode;\n zIndexBase?: number;\n}\n\nconst BlankModal = ({\n isOpen,\n onClose,\n closeOnDimmerClick = true,\n headerText,\n headerIconName,\n subHeaderText,\n subHeaderIconName,\n hideCloseButton = false,\n disableBackgroundScroll = true,\n width,\n height,\n backgroundMode = \"dim\",\n children,\n zIndexBase = 500,\n}: BlankModalProps) => {\n const handleDimmerClick = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (closeOnDimmerClick) {\n onClose();\n }\n };\n\n const handleOnClose = (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onClose();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.code === \"Escape\" && isOpen) {\n if (closeOnDimmerClick) {\n onClose();\n }\n }\n };\n\n useEffect(() => {\n // Close on Escape\n document.addEventListener(\"keydown\", onKeyDown, false);\n\n // Disable background scroll of anchor\n // Targets the top modal (not including the current one) if it exists\n // Targets html element otherwise\n const modals = document.querySelectorAll(\"[role=dialog]\");\n const anchor = (modals[modals.length - (isOpen ? 2 : 1)] ||\n document.querySelector(\"html\")) as HTMLElement;\n if (disableBackgroundScroll && isOpen) anchor.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", onKeyDown, false);\n\n if (disableBackgroundScroll) anchor.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n const modal = (\n <>\n \n \n \n {!hideCloseButton && (\n \n \n \n )}\n {headerText && (\n <>\n
\n {headerIconName && }\n \n {headerText}\n {subHeaderText && (\n \n {subHeaderIconName && (\n \n )}\n
{subHeaderText}
\n
\n )}\n
\n
\n \n \n )}\n {children}\n
\n \n \n );\n\n return isOpen ? ReactDOM.createPortal(modal, document.body) : null;\n};\n\nconst Background = styled.div`\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n ${({ mode }) =>\n (mode === \"blur\" && \"backdrop-filter: blur(6px);\") ||\n (mode === \"dim\" &&\n `\n background-color: ${COLORS.BLACK};\n opacity: 0.7;\n `)}\n z-index: ${({ zIndexBase }) => zIndexBase + 1};\n`;\n\nconst Wrapper = styled.div`\n z-index: ${({ zIndexBase }) => zIndexBase + 2};\n position: fixed;\n top: 50%;\n right: 50%;\n transform: translate(50%, -50%);\n display: flex;\n justify-content: center;\n align-items: center;\n\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n align-items: flex-start;\n }\n\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n width: 90%;\n }\n\n ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n width: 100%;\n }\n`;\n\nconst StyledModal = styled.div`\n z-index: ${({ zIndexBase }) => zIndexBase + 3};\n background: white;\n position: relative;\n border-radius: 12px;\n width: ${(props) => props.width};\n height: ${(props) => props.height};\n display: flex;\n flex-direction: column;\n box-shadow: ${STYLES.SHADOW_D};\n\n max-height: 90vh;\n overflow: visible;\n\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n width: 90%;\n }\n`;\n\nconst Header = styled.div`\n border-radius: 8px 8px 0 0;\n padding: 24px 20px;\n display: flex;\n align-items: center;\n`;\n\nconst HeaderContent = styled.div`\n width: 100%;\n`;\n\nconst SubHeader = styled.div`\n display: flex;\n padding-top: 4px;\n max-width: 90%;\n ${FONTS.REGULAR_3};\n align-items: center;\n gap: 8px;\n > div:last-child {\n ${STYLES.ONE_LINE_ALT};\n }\n flex-direction: row;\n`;\n\nconst HeaderText = styled.div`\n ${FONTS.HEADING_4_SEMIBOLD}\n color: ${COLORS.BLACK};\n align-self: center;\n display: flex;\n justify-content: space-between;\n`;\n\nconst Divider = styled.hr`\n margin: 0;\n border-color: ${COLORS.NEUTRAL_300};\n`;\n\nconst Content = styled.div`\n max-height: ${({ hasHeader }) => (hasHeader ? \"calc(100% - 76px)\" : \"100%\")};\n overflow-y: auto;\n overflow-x: hidden;\n`;\n\nconst CloseButton = styled.div`\n width: fit-content;\n position: absolute;\n top: 20px;\n right: 20px;\n cursor: pointer;\n`;\n\nexport default BlankModal;\n","import { IconButton } from \"@components/library\";\nimport { COLORS, STYLES } from \"@constants\";\nimport { setMessengerOffsetRight } from \"@redux/actions/messengerActions\";\nimport { DEFAULT_MESSENGER_OFFSET_RIGHT } from \"@redux/reducers/messengerReducer\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { useDispatch } from \"react-redux\";\nimport styled, { css } from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nexport interface SlideModalBaseProps {\n isOpen: boolean;\n onClose: () => void;\n direction?: \"bottom\" | \"right\";\n hideCloseButton?: boolean;\n customCloseButton?: ReactNode;\n closeOnDimmerClick?: boolean;\n hideBackdrop?: boolean;\n children?: ReactNode;\n}\n\nconst SlideModalBase = ({\n isOpen,\n onClose,\n direction = \"right\",\n hideCloseButton = false,\n customCloseButton,\n closeOnDimmerClick = true,\n hideBackdrop = false,\n children,\n}: SlideModalBaseProps) => {\n // Used for the slide in/out animation\n const [shouldShowModal, setShouldShowModal] = useState(false);\n\n const dispatch = useDispatch();\n\n const handleClose = () => {\n setShouldShowModal(false);\n setTimeout(() => onClose(), 300);\n dispatch(setMessengerOffsetRight(DEFAULT_MESSENGER_OFFSET_RIGHT));\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.code === \"Escape\" && isOpen) {\n if (closeOnDimmerClick) {\n handleClose();\n }\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n setTimeout(() => setShouldShowModal(true), 0);\n\n document.querySelector(\"html\")!.style.overflow = \"hidden\";\n\n if (direction === \"right\") {\n const modalEl = document.getElementById(id);\n dispatch(setMessengerOffsetRight(modalEl?.clientWidth));\n }\n }\n\n // Close on Escape\n document.addEventListener(\"keydown\", onKeyDown, false);\n\n return () => {\n document.querySelector(\"html\")!.style.overflow = \"unset\";\n\n document.removeEventListener(\"keydown\", onKeyDown, false);\n };\n }, [isOpen]);\n\n const id = uuidv4();\n\n const modal = (\n <>\n {!hideBackdrop && }\n \n {!hideCloseButton && (\n \n {customCloseButton ?? (\n \n )}\n \n )}\n {children}\n \n \n );\n\n return isOpen ? ReactDOM.createPortal(modal, document.body) : null;\n};\n\nexport default SlideModalBase;\n\nconst Background = styled.div`\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background-color: ${COLORS.BLACK};\n opacity: 0.7;\n z-index: 400;\n`;\nconst Modal = styled.div`\n position: fixed;\n ${({ direction }) =>\n direction === \"right\"\n ? css`\n top: 0;\n right: ${({ isOpen }) => (isOpen ? 0 : \"-100%\")};\n height: 100vh;\n border-radius: 12px 0px 0px 12px;\n `\n : css`\n left: 0;\n bottom: ${({ isOpen }) => (isOpen ? 0 : \"-100%\")};\n width: 100vw;\n max-height: calc(100vh - 54px);\n border-radius: 12px 12px 0px 0px;\n `};\n z-index: 401;\n background: white;\n ${({ hideBackdrop }) => hideBackdrop && `box-shadow: ${STYLES.SHADOW_D}`};\n margin: auto;\n transition: ${({ direction }) => direction} 0.25s ease-out;\n max-width: 100%;\n`;\nconst CloseButton = styled.div`\n position: absolute;\n top: 20px;\n right: 20px;\n z-index: 1;\n`;\nconst Content = styled.div`\n height: 100%;\n`;\n","import { COLORS } from \"@constants\";\n\nimport styled from \"styled-components\";\nimport Icon from \"../Icon\";\nimport { PROFILE_PICTURE_SIZE_STYLES, ProfilePictureProps } from \"./ProfilePicture\";\n\ninterface Props {\n size?: ProfilePictureProps[\"size\"];\n}\n\nconst InvitedUserProfilePicture = ({ size = \"sm\" }: Props) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default InvitedUserProfilePicture;\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst Outline = styled.div`\n border: 1px dashed ${COLORS.BLACK};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n ${PROFILE_PICTURE_SIZE_STYLES}\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { getInitials } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport Icon from \"../Icon\";\n\nexport interface ProfilePictureProps {\n user?: {\n image: {\n medium: {\n url: string | null;\n };\n };\n name: string;\n };\n size: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n margin?: string | 0;\n forMulti?: boolean;\n isUserHidden?: boolean;\n color?: string;\n bgColor?: string;\n}\n\nconst ProfilePicture = ({\n user,\n size,\n margin = 0,\n forMulti = false,\n isUserHidden = false,\n color = COLORS.BLACK,\n bgColor,\n}: ProfilePictureProps) => {\n const [didImageError, setDidImageError] = useState(false);\n const defaultBgColor = size === \"lg\" ? COLORS.NEUTRAL_100 : COLORS.NEUTRAL_200;\n\n return (\n \n {(() => {\n if (isUserHidden || !user)\n return ;\n if (user.image?.medium?.url && !didImageError)\n return (\n {\n setDidImageError(true);\n }}\n />\n );\n return getInitials(user.name);\n })()}\n \n );\n};\n\nexport default ProfilePicture;\n\nexport const PROFILE_PICTURE_SIZE_STYLES = css`\n ${({ size }) => {\n switch (size) {\n case \"xxs\": {\n return css`\n font-size: 10px;\n height: 20px;\n width: 20px;\n min-width: 20px;\n `;\n }\n case \"xs\": {\n return css`\n font-size: 12px;\n height: 28px;\n width: 28px;\n min-width: 28px;\n `;\n }\n case \"sm\": {\n return css`\n font-size: 16px;\n height: 36px;\n width: 36px;\n min-width: 36px;\n `;\n }\n case \"md\": {\n return css`\n font-size: 23px;\n height: 50px;\n width: 50px;\n min-width: 50px;\n `;\n }\n case \"lg\": {\n return css`\n font-size: 23px;\n font-weight: 600;\n height: 68px;\n width: 68px;\n min-width: 68px;\n `;\n }\n case \"xl\": {\n return css`\n font-size: 32px;\n font-weight: 600;\n height: 96px;\n width: 96px;\n min-width: 96px;\n `;\n }\n }\n }};\n`;\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n background-color: ${({ bgColor }) => bgColor};\n color: ${({ color }) => color};\n border: ${({ forMulti }) => (forMulti ? `1px solid ${COLORS.WHITE}` : \"none\")};\n margin: ${({ margin }) => margin};\n font-weight: 500;\n ${PROFILE_PICTURE_SIZE_STYLES};\n line-height: 0;\n`;\n\nconst Picture = styled.img`\n height: 100%;\n width: 100%;\n ${FONTS.REGULAR_4};\n border-radius: 50%;\n`;\n","// Note: SearchBarDropdown and MultiSelectDropdown are not using this component, though are styled\n// to look the same, due to the way React-Select handles multi-select tags\n\nimport { Icon } from \"@components/library\";\nimport { COLORS, FONTS, STYLES } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\nimport { IconName } from \"../Icon/Icon\";\n\nexport type TagTheme = \"light\" | \"dark\" | \"neutral\";\n\nexport interface TagProps {\n content: ReactNode;\n iconName?: IconName;\n iconPosition?: \"left\" | \"right\";\n size?: \"xs\" | \"sm\" | \"md\";\n font?: string;\n theme?: TagTheme;\n isValid?: boolean;\n onRemove?: (...args: any[]) => any;\n id?: string;\n \"data-testid\"?: string;\n // Style override props\n backgroundColor?: string;\n color?: string;\n margin?: string | 0;\n padding?: string;\n border?: string;\n width?: string;\n shouldTruncate?: boolean;\n}\n\nconst ICON_SIZE = {\n xs: \"xxs\",\n sm: \"xs\",\n md: \"sm\",\n};\n\nconst LEFT_ICON_MARGIN = {\n xs: \"0 3px 0 -2px\",\n sm: \"0 4px 0 0\",\n md: \"0 6px 0 0\",\n};\n\nconst RIGHT_ICON_MARGIN = {\n xs: \"0 0 0 3px\",\n sm: \"0 0 0 4px\",\n md: \"0 0 0 6px\",\n};\n\nconst Tag = ({\n content,\n iconName,\n iconPosition = \"left\",\n size = \"sm\",\n font,\n theme = \"neutral\",\n isValid = true,\n onRemove,\n id,\n \"data-testid\": dataTestId,\n backgroundColor,\n color,\n margin = 0,\n padding,\n border,\n width,\n shouldTruncate = false,\n}: TagProps) => (\n \n {iconName && iconPosition === \"left\" && (\n \n )}\n \n {content}\n \n {iconName && iconPosition === \"right\" && (\n \n )}\n {onRemove && (\n
\n \n
\n )}\n \n);\n\nconst BACKGROUND_TYPE = {\n light: COLORS.WHITE,\n dark: COLORS.NEUTRAL_200,\n neutral: COLORS.NEUTRAL_100,\n};\n\nconst XS_STYLES = `\n height: 16px;\n padding: 0 8px;\n ${FONTS.TAG_MEDIUM_3}\n`;\n\nconst SM_STYLES = `\n height: 24px;\n padding: 0 14px;\n ${FONTS.TAG_MEDIUM_2}\n`;\n\nconst MD_STYLES = `\n height: 32px;\n padding: 0 16px;\n ${FONTS.TAG_SEMIBOLD_1}\n`;\n\nconst StyledTag = styled.div`\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n width: ${({ width }) => (width ? width : \"fit-content\")};\n border: none;\n border-radius: 100px;\n background-color: ${({ backgroundColor, theme, isValid }) =>\n (!isValid && COLORS.RED_100) || backgroundColor || BACKGROUND_TYPE[theme]};\n color: ${({ color, isValid }) => (!isValid && COLORS.RED) || color || COLORS.BLACK};\n ${({ size }) => {\n switch (size) {\n case \"xs\":\n return XS_STYLES;\n case \"sm\":\n return SM_STYLES;\n case \"md\":\n return MD_STYLES;\n }\n }}\n white-space: nowrap;\n margin: ${({ margin }) => margin};\n border: ${({ border }) => border};\n ${({ font }) => font && font};\n ${({ shouldTruncate }) =>\n shouldTruncate &&\n `\n max-width: 100%;\n cursor: default;\n `}\n\n ${({ padding }) => padding && `padding: ${padding};`}\n\n &:not(:last-of-type) {\n margin-right: 8px;\n }\n`;\n\nconst Content = styled.div`\n ${({ shouldTruncate }) => (shouldTruncate ? STYLES.ONE_LINE_ALT : \"display: flex\")}\n`;\n\nexport default Tag;\n","import { COLORS } from \"@constants\";\nimport Tag from \"../Tag\";\n\nexport function AdminTag() {\n return (\n \n );\n}\n","import Tooltip from \"@components/library/Tooltips/Tooltip\";\nimport { COLORS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\ninterface Props {\n content: string;\n width: string;\n children: ReactNode;\n}\nexport function LicenseTagTooltip({ content, children, width = \"190px\" }: Props) {\n return (\n
\n \n {children}\n \n
\n );\n}\n\nexport const WhiteLink = styled(Link)`\n color: ${COLORS.WHITE};\n text-decoration: underline;\n\n &:hover,\n &:focus,\n &:active {\n color: ${COLORS.WHITE};\n }\n`;\n","import { COLORS } from \"@constants\";\nimport { RootState } from \"@redux/store\";\nimport { SponsorLicenseType } from \"@tsTypes/sponsorProfiles\";\nimport { t } from \"@utils/i18n\";\nimport { useSelector } from \"react-redux\";\nimport Tag from \"../Tag\";\nimport { LicenseTagTooltip } from \"./LicenseTagTooltip\";\n\ninterface Props {\n type: SponsorLicenseType;\n}\n\nexport function LicenseTag({ type }: Props) {\n const subscription = useSelector((state: RootState) => state.company.subscription);\n\n if (subscription?.plan !== \"seats_based\") return null;\n\n return (\n \n \n \n );\n}\n","import { Icon, Tooltip } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport { t } from \"@utils/i18n\";\n\ninterface Props {\n size?: \"xs\" | \"sm\";\n}\n\nexport function SuperAdminTag({ size = \"xs\" }: Props) {\n return (\n
\n {t(\"components.super_admin_tag.text\")} } tooltipWidth=\"290px\">\n \n \n
\n );\n}\n","import { Tag } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n label: ReactNode;\n isOptional?: boolean;\n hasError?: boolean;\n isMissingRequired?: boolean;\n font?: string;\n margin?: string | 0;\n withFlexDirectionColumn?: boolean;\n}\n\nconst FormLabel = ({\n label,\n isOptional,\n hasError,\n isMissingRequired,\n font = FONTS.HEADING_5_SEMIBOLD,\n margin,\n withFlexDirectionColumn,\n}: Props) => (\n \n \n {label}\n \n {isOptional ? (\n \n ) : (\n isMissingRequired && Required\n )}\n \n);\n\nexport default FormLabel;\n\nconst Container = styled.div`\n display: flex;\n ${({ withFlexDirectionColumn }) =>\n withFlexDirectionColumn ? \"flex-direction: column\" : \"align-items: flex-end\"};\n ${({ margin }) => margin && `margin: ${margin}`};\n`;\nconst LabelText = styled.span`\n ${({ font }) => font};\n color: ${({ hasError }) => (hasError ? COLORS.RED_600 : COLORS.BLACK)};\n`;\nconst Required = styled.span`\n margin-left: 16px;\n ${FONTS.MEDIUM_2};\n color: ${COLORS.RED_600};\n`;\n","import { COLORS, STYLES } from \"@constants\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { track } from \"@utils/appUtils\";\nimport { ReactElement, cloneElement, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n // The element(s) over which the tooltip should show when hovered\n children: ReactElement | ReactElement[];\n tags: ReactElement[];\n}\n\nconst TooltipWrapper = ({ children, tags }: Props) => {\n const [isHovered, setIsHovered] = useState(false);\n const [displayedTags, setDisplayedTags] = useState([]);\n\n // Make sure the proper tag theme is used\n useEffect(() => {\n const updatedTags: ReactElement[] = [];\n\n for (const tag of tags) {\n const updatedTag = cloneElement(tag, {\n theme: \"neutral\",\n });\n\n updatedTags.push(updatedTag);\n\n setDisplayedTags(updatedTags);\n }\n }, [tags]);\n\n // This is used to prevent the tooltip from flashing if a user passes over the child element(s)\n const timeoutRef = useRef>();\n const toggleShow = (newState) => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setIsHovered(newState), 100);\n };\n\n const size = tags[0]?.props?.size;\n\n return (\n {\n track(SegmentEventName.View, {\n ui_component: \"TagTooltip\",\n });\n toggleShow(true);\n }}\n onMouseLeave={() => toggleShow(false)}\n >\n {children}\n \n {displayedTags.map((tag) => (\n \n {tag}\n \n ))}\n \n \n );\n};\n\nexport default TooltipWrapper;\n\nconst Wrapper = styled.div`\n position: relative;\n`;\nconst Container = styled.div`\n position: absolute;\n display: ${({ isHovered }) => (isHovered ? \"grid\" : \"none\")};\n grid-template-columns: repeat(${({ columns }) => columns}, auto);\n gap: 0 20px;\n top: 5%;\n left: 50%;\n transform: translate(-50%, -100%);\n padding: 10px 22px 18px;\n padding: ${({ size }) => (size === \"xs\" ? \"5px 11px 9px\" : \"10px 22px 18px\")};\n border-radius: 8px;\n box-shadow: ${STYLES.SHADOW_B};\n background-color: ${COLORS.WHITE};\n z-index: 1;\n`;\nconst TagContainer = styled.div`\n margin-top: ${({ size }) => (size === \"xs\" ? \"0\" : \"8px\")};\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children: ReactNode;\n content: string | ReactNode;\n tooltipWidth?: string;\n contentWidth?: string;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n arrowOffsetTop?: string | 0;\n remainOnHover?: boolean;\n shouldWrap?: boolean;\n isActive?: boolean;\n shouldFlex?: boolean;\n asPortal?: boolean;\n \"data-testid\"?: string;\n}\n\nconst Tooltip = ({\n children,\n content,\n tooltipWidth,\n contentWidth,\n position = \"top\",\n arrowOffsetTop,\n remainOnHover = true,\n shouldWrap = true,\n isActive = true,\n shouldFlex = false,\n asPortal = false,\n \"data-testid\": dataTestId,\n}: Props) => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n const childrenRef = useRef(null);\n const timeoutRef = useRef>();\n const toggleShow = (newState) => {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setShowTooltip(newState), 100);\n };\n\n useEffect(() => {\n return () => {\n clearTimeout(timeoutRef.current);\n };\n }, []);\n\n const childrenHeight = childrenRef.current?.clientHeight ?? 0;\n\n if (asPortal) {\n const childrenWidth = childrenRef.current?.clientWidth ?? 0;\n\n const clientRect = childrenRef.current?.getBoundingClientRect();\n\n // position === 'top'\n let tooltipVerticalOffset =\n window.innerHeight - Number(clientRect?.top) - document.documentElement.scrollTop + 12;\n let tooltipHorizontalOffset =\n Number(clientRect?.left) + document.documentElement.scrollLeft + childrenWidth / 2;\n\n if (position === \"bottom\") {\n tooltipVerticalOffset =\n Number(clientRect?.top) + document.documentElement.scrollTop + childrenHeight + 12;\n } else if (position === \"left\" || position === \"right\") {\n tooltipVerticalOffset =\n Number(clientRect?.top) + document.documentElement.scrollTop + childrenHeight / 2;\n\n if (position === \"left\") {\n tooltipHorizontalOffset =\n window.innerWidth - Number(clientRect?.left) + document.documentElement.scrollLeft;\n } else {\n tooltipHorizontalOffset =\n Number(clientRect?.right) - document.documentElement.scrollLeft + 12;\n }\n }\n\n return (\n <>\n toggleShow(true)}\n onMouseLeave={() => toggleShow(false)}\n ref={childrenRef}\n shouldFlex={shouldFlex}\n contentWidth={contentWidth}\n asPortal={asPortal}\n >\n {children}\n \n {showTooltip &&\n createPortal(\n {\n e.stopPropagation();\n e.preventDefault();\n }}\n onMouseEnter={() => remainOnHover && toggleShow(true)}\n onMouseLeave={() => toggleShow(false)}\n data-testid={dataTestId}\n tooltipVerticalOffset={tooltipVerticalOffset}\n tooltipHorizontalOffset={tooltipHorizontalOffset}\n >\n {content}\n \n ,\n document.body\n )}\n \n );\n }\n\n const childrenVerticalCenter = `${childrenHeight / 2 - 8}px`;\n const top = arrowOffsetTop ?? childrenVerticalCenter;\n\n return (\n \n toggleShow(true)}\n onMouseLeave={() => toggleShow(false)}\n ref={childrenRef}\n shouldFlex={shouldFlex}\n >\n {children}\n \n {showTooltip && (\n {\n e.stopPropagation();\n e.preventDefault();\n }}\n onMouseEnter={() => remainOnHover && toggleShow(true)}\n onMouseLeave={() => toggleShow(false)}\n data-testid={dataTestId}\n >\n {content}\n \n \n )}\n \n );\n};\n\nexport default Tooltip;\n\nconst Container = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n height: fit-content;\n ${({ contentWidth }) => `width: ${contentWidth}`}\n`;\nconst ChildrenContainer = styled.div`\n ${({ shouldFlex }) => shouldFlex && \"display: flex;\"}\n ${({ contentWidth, asPortal }) =>\n asPortal\n ? `\n height: fit-content;\n width: ${contentWidth ?? \"fit-content\"};\n `\n : `\n width: 100%;\n `}\n`;\nconst StyledTooltip = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n position: absolute;\n background-color: ${COLORS.BLACK};\n color: ${COLORS.WHITE};\n ${({ width }) => width && `width: ${width};`}\n ${({ shouldWrap }) => !shouldWrap && `white-space: nowrap;`}\n border-radius: 6px;\n padding: 12px;\n text-align: left;\n ${FONTS.REGULAR_3};\n cursor: auto;\n`;\nconst PortaledTooltip = styled(StyledTooltip)`\n ${({ position, tooltipVerticalOffset, tooltipHorizontalOffset }) => {\n switch (position) {\n case \"top\":\n return `\n bottom: ${tooltipVerticalOffset}px;\n left: ${tooltipHorizontalOffset}px;\n transform: translate(-50%, 0); \n `;\n case \"bottom\":\n return `\n top: ${tooltipVerticalOffset}px;\n left: ${tooltipHorizontalOffset}px;\n transform: translate(-50%, 0); \n `;\n case \"left\":\n return `\n top: ${tooltipVerticalOffset}px;\n right: ${tooltipHorizontalOffset}px;\n transform: translate(0, -50%);\n `;\n case \"right\":\n return `\n top: ${tooltipVerticalOffset}px;\n left: ${tooltipHorizontalOffset}px;\n transform: translate(0, -50%); \n `;\n }\n }}\n z-index: 510;\n`;\nconst NonPortaledTooltip = styled(StyledTooltip)`\n ${({ position }) => {\n switch (position) {\n case \"top\":\n return `\n bottom: calc(100% + 12px);\n `;\n case \"bottom\":\n return `\n top: calc(100% + 12px);\n `;\n case \"left\":\n return `\n right: calc(100% + 12px);\n `;\n case \"right\":\n return `\n left: calc(100% + 12px);\n `;\n }\n }}\n z-index: 1;\n`;\nconst ContentContainer = styled.div`\n width: 100%;\n white-space: ${({ shouldWrap }) => (shouldWrap ? \"normal\" : \"no-wrap\")};\n`;\nconst Arrow = styled.div`\n width: 0;\n height: 0;\n position: absolute;\n ${({ position, arrowOffsetTop, isPortal }) => {\n switch (position) {\n case \"top\":\n return `\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid ${COLORS.BLACK};\n bottom: -8px;\n `;\n case \"bottom\":\n return `\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid ${COLORS.BLACK};\n top: -8px;\n `;\n case \"left\":\n return `\n border-top: 8px solid transparent;\n border-bottom: 8px solid transparent;\n border-left: 8px solid ${COLORS.BLACK};\n right: -8px;\n ${\n !isPortal || arrowOffsetTop\n ? `top: ${arrowOffsetTop}`\n : `\n top: 50%;\n transform: translateY(-50%);\n `\n }\n `;\n case \"right\":\n return `\n border-top: 8px solid transparent;\n border-bottom: 8px solid transparent;\n border-right: 8px solid ${COLORS.BLACK};\n left: -8px;\n ${\n !isPortal || arrowOffsetTop\n ? `top: ${arrowOffsetTop}`\n : `\n top: 50%;\n transform: translateY(-50%);\n `\n } \n `;\n }\n }}\n`;\n","import { COLORS, FONTS, STYLES } from \"@constants\";\nimport { MessageAttachmentAsJson } from \"@requests/messages\";\nimport { formatBytes, formatMIMEContentType } from \"@utils/textUtils\";\nimport { MouseEvent } from \"react\";\nimport styled from \"styled-components\";\n\nimport { ProposalRequestRequirementAttachmentAsJson } from \"@requests/proposalRequestRequirement\";\nimport IconButton from \"../Buttons/IconButton\";\n\nexport type AttachmentForDisplay = Partial<\n MessageAttachmentAsJson | ProposalRequestRequirementAttachmentAsJson\n>;\n\ninterface Props {\n attachment: AttachmentForDisplay;\n isInbox?: boolean;\n size?: \"sm\" | \"md\" | \"lg\";\n uploadPercentage?: number; // integer within [0, 100]; undefined means the attachment is sent\n onRemove?: () => void;\n onClick?: () => void;\n}\n\nconst MessageAttachment = ({\n attachment,\n isInbox,\n size = \"md\",\n uploadPercentage,\n onRemove,\n onClick,\n}: Props) => {\n const handleRemove = (event: MouseEvent) => {\n event.stopPropagation();\n onRemove?.();\n };\n\n const isForUpload = typeof uploadPercentage !== \"undefined\";\n\n const { filename, size_in_bytes, mime_content_type, thumbnail_url } = attachment;\n\n const name = filename;\n const fileSize = formatBytes(size_in_bytes);\n const type = formatMIMEContentType(mime_content_type);\n const isImage = mime_content_type?.startsWith(\"image/\");\n\n return (\n \n \n {(() => {\n // Display thumbnail if thumbnail exists\n if (thumbnail_url) return ;\n // Otherwise, display loading bar (max out at 95% until thumbnail is done loading too)\n return ;\n })()}\n \n
\n {name}\n \n {type} • {fileSize}\n \n
\n {isForUpload && (\n \n \n \n )}\n \n );\n};\n\nconst Preview = styled.div`\n display: flex;\n align-items: center;\n flex: none;\n width: 60px;\n height: 60px;\n background: ${COLORS.NEUTRAL_300};\n border-radius: 4px;\n position: relative;\n overflow-x: hidden;\n`;\n\nconst ProgressBar = styled.div`\n position: absolute;\n bottom: 0;\n display: block;\n background: ${COLORS.HALO_BLUE};\n height: 3px;\n transition: width 0.1s linear;\n width: ${({ percentage }) => percentage}%;\n`;\n\nconst Thumbnail = styled.img`\n background: ${COLORS.WHITE};\n border-radius: 4px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nconst Name = styled.div`\n ${FONTS.MEDIUM_3}\n ${STYLES.ONE_LINE}\n max-width: 188px;\n`;\n\nconst Info = styled.div`\n ${FONTS.REGULAR_3}\n ${STYLES.ONE_LINE}\n color: ${COLORS.NEUTRAL_600};\n`;\n\nconst RemoveButtonContainer = styled.div`\n &&& {\n position: absolute;\n top: -10px;\n right: -10px;\n }\n`;\n\nconst Container = styled.div`\n position: relative;\n width: 280px;\n height: 76px;\n display: flex;\n gap: 12px;\n padding: 0 12px 0 8px;\n align-items: center;\n border-radius: 8px;\n background: ${({ isInbox, isForUpload }) =>\n !isInbox && isForUpload ? COLORS.WHITE : COLORS.NEUTRAL_100};\n\n &:hover {\n cursor: pointer;\n\n & ${Name} {\n text-decoration: underline;\n }\n }\n\n ${({ isForUpload, isImage, size }) =>\n !isForUpload &&\n isImage &&\n `\n height: 255px;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: 8px; \n\n & ${Preview} {\n width: 264px;\n height: 187px;\n }\n\n & ${Name} {\n max-width: 264px;\n }\n `}\n\n ${({ size }) =>\n size === \"sm\" &&\n `\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n gap: 6px;\n height: 28px;\n padding: 2px;\n border-radius: 6px;\n width: initial;\n background: ${COLORS.NEUTRAL_100};\n\n & ${Preview} {\n width: 24px;\n height: 24px;\n }\n\n & ${Info} {\n display: none;\n }\n\n & ${Name} {\n max-width: unset;\n }\n `}\n`;\n\nexport default MessageAttachment;\n","import { MouseEventHandler, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\nimport { COLORS, FONTS } from \"@constants\";\n\nconst MARGIN_TOP = 110;\nconst MARGIN_TOP_STICKY = 20;\n\nexport interface StandardBannerProps {\n text: string;\n icon?: SVGElement;\n link?: {\n text: string;\n url: string;\n isExternal?: boolean; // Defaults to true, uses React Router if false\n };\n}\n\nconst StandardBanner = ({ text, icon, link }: StandardBannerProps) => {\n const history = useHistory();\n const [isSticky, setIsSticky] = useState(false);\n\n const onScrollSticky: EventListener = () => {\n if (window.scrollY >= MARGIN_TOP - MARGIN_TOP_STICKY) {\n setIsSticky(true);\n } else {\n setIsSticky(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener(\"scroll\", onScrollSticky);\n return () => {\n window.removeEventListener(\"scroll\", onScrollSticky);\n };\n });\n\n const handleLinkClick =\n (url: string): MouseEventHandler =>\n () => {\n if (link?.isExternal) {\n window.location.href = url;\n } else {\n history.push(url);\n }\n };\n\n return (\n \n {icon && }\n {text}\n {link?.text && link?.url && {link.text}}\n \n );\n};\n\nconst Banner = styled.div`\n ${({ isSticky }) =>\n isSticky\n ? `\n position: fixed;\n margin-top: ${MARGIN_TOP_STICKY}px;\n `\n : `\n position: absolute;\n margin-top: ${MARGIN_TOP}px;\n `}\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n min-width: 60%;\n padding: 15px 20px;\n text-align: center;\n z-index: 999;\n border-radius: 4px;\n box-shadow: 0px 4px 10px -4px rgba(28, 50, 79, 0.28);\n background-color: ${COLORS.HALO_BLUE};\n color: ${COLORS.WHITE};\n`;\n\nconst Icon = styled.img`\n height: 24px;\n margin-top: -2px;\n margin-right: 10px;\n fill: ${COLORS.WHITE};\n`;\n\nconst Text = styled.span`\n ${FONTS.REGULAR_2}\n`;\n\nconst Link = styled.span`\n ${FONTS.SEMIBOLD_2}\n text-decoration: underline;\n margin-left: 15px;\n cursor: pointer;\n`;\n\nexport default StandardBanner;\n","import { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n title?: string | ReactNode | null;\n subtitle?: string | ReactNode | null;\n children: ReactNode;\n}\n\nfunction BlueBox({ title, subtitle, children }: Props) {\n return (\n \n {title && {title}}\n {subtitle && {subtitle}}\n {children}\n \n );\n}\n\nexport default BlueBox;\n\nconst Container = styled.div`\n padding: 64px;\n background-color: ${COLORS.BLUE_LIGHT_100};\n border-radius: 8px;\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n padding: 24px;\n }\n`;\n\nconst Title = styled.div`\n ${FONTS.MEDIUM_1}\n color: ${COLORS.NEUTRAL_500};\n margin-bottom: 16px;\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n text-align: center;\n }\n`;\nconst Subtitle = styled.div`\n ${FONTS.HEADING_3_REGULAR}\n color: ${COLORS.BLACK};\n margin-bottom: 32px;\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n text-align: center;\n }\n`;\n","import { WINDOW_DIMENSIONS } from \"@constants\";\nimport styled from \"styled-components\";\n\nexport default styled.div`\n display: flex;\n flex-direction: row;\n gap: 19px;\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n flex-direction: column;\n gap: 16px;\n }\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children: number | string;\n marginLeft?: string;\n accent?: boolean;\n backgroundColor?: string;\n \"data-testid\"?: string;\n}\n\nconst InfoTag = ({\n children,\n marginLeft = \"12px\",\n accent = false,\n backgroundColor,\n \"data-testid\": dataTestId,\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nexport default InfoTag;\n\nconst Container = styled.div`\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: 18px;\n min-width: 20px;\n width: auto;\n background: ${({ accent, backgroundColor }) =>\n backgroundColor || (accent && COLORS.BLUE_GRADIENT) || COLORS.NEUTRAL_400};\n color: ${COLORS.WHITE};\n border-radius: 100px;\n padding: ${({ accent }) => (accent ? \"2px 8px\" : \"2px 6px\")};\n margin-left: ${({ marginLeft }) => marginLeft};\n ${({ accent }) => (accent ? FONTS.TAG_ACCENT : FONTS.TAG_BOLD_2)};\n`;\n","import { COLORS, FONTS } from \"@constants\";\n\nimport styled from \"styled-components\";\nimport Icon from \"../Icon\";\nimport InfoTag from \"../Tags/InfoTag\";\n\ninterface Props {\n variant: \"ghost\" | \"fourth\";\n count: number;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n hideText?: boolean;\n}\n\nfunction FiltersButton({ variant, count, isOpen, setIsOpen, hideText = false }: Props) {\n const hasFilters = count > 0;\n\n let iconColor: string;\n let countTagBackgroundColor: string;\n switch (variant) {\n case \"ghost\": {\n iconColor = COLORS.HALO_BLUE;\n countTagBackgroundColor = COLORS.BLUE_650;\n break;\n }\n case \"fourth\": {\n iconColor = COLORS.BLACK;\n countTagBackgroundColor = COLORS.BLACK;\n break;\n }\n }\n\n return (\n setIsOpen(!isOpen)}\n >\n \n \n {!hideText && \"Filters\"}\n {hasFilters && (\n \n {count}\n \n )}\n \n \n );\n}\n\nexport default FiltersButton;\n\nconst Button = styled.button`\n height: 36px;\n border: none;\n border-radius: 4px;\n padding: 0;\n background-color: ${({ hasFilters, variant }) => {\n if (!hasFilters) return \"transparent\";\n switch (variant) {\n case \"ghost\": {\n return COLORS.BLUE_LIGHT_300;\n }\n case \"fourth\": {\n return COLORS.NEUTRAL_200;\n }\n }\n }};\n outline: 1px solid\n ${({ hasFilters, isOpen, variant }) => {\n if (!(hasFilters || isOpen)) return \"transparent\";\n switch (variant) {\n case \"ghost\": {\n return COLORS.HALO_BLUE;\n }\n case \"fourth\": {\n return COLORS.BLACK;\n }\n }\n }};\n\n &:hover > div {\n background-color: ${({ variant, hasFilters }) => {\n switch (variant) {\n case \"ghost\": {\n return hasFilters ? COLORS.BLUE_LIGHT_500 : COLORS.BLUE_LIGHT_300;\n }\n case \"fourth\": {\n return hasFilters ? COLORS.NEUTRAL_350 : COLORS.NEUTRAL_200;\n }\n }\n }};\n }\n\n &:active {\n & > div {\n background-color: ${({ variant, hasFilters }) => {\n switch (variant) {\n case \"ghost\": {\n return hasFilters ? COLORS.BLUE_LIGHT_600 : COLORS.BLUE_LIGHT_400;\n }\n case \"fourth\": {\n return hasFilters ? COLORS.NEUTRAL_400 : COLORS.NEUTRAL_300;\n }\n }\n }};\n }\n }\n`;\n\nconst Content = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 4px;\n\n width: 100%;\n height: 100%;\n\n ${FONTS.BUTTON_2}\n border-radius: 4px;\n color: ${({ variant }) => {\n switch (variant) {\n case \"ghost\": {\n return COLORS.HALO_BLUE;\n }\n case \"fourth\": {\n return COLORS.BLACK;\n }\n }\n }};\n padding: ${({ hideText }) => (hideText ? \"0 8px\" : \"0 20px 0 12px\")};\n transition: background-color 0.1s ease;\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { ReactElement } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport styled, { css } from \"styled-components\";\nimport { BaseButtonProps } from \"./Button\";\n\ninterface Props extends BaseButtonProps {\n size?: \"md\" | \"lg\";\n // This sets a min-width in case the button is intended to extend past its contents. A minimum padding will be maintained\n width?: string;\n maxHeight?: string;\n icon?: HTMLImageElement | ReactElement | null;\n iconPosition?: \"left\" | \"right\";\n children: any;\n to?: string;\n className?: string;\n}\n\nconst GradientButton = ({\n size = \"lg\",\n width,\n maxHeight,\n to,\n margin = 0,\n icon,\n iconPosition = \"left\",\n children,\n id,\n disabled,\n type = \"button\",\n onClick,\n \"data-testid\": dataTestId,\n className,\n}: Props) => {\n const StyledComponent = to ? StyledLink : StyledButton;\n\n return (\n \n {icon ? {icon} : null}\n {children}\n \n );\n};\n\nexport default GradientButton;\n\nconst BaseStyles = css`\n display: flex;\n flex-direction: ${({ iconPosition }) => (iconPosition === \"left\" ? \"row\" : \"row-reverse\")};\n justify-content: center;\n align-items: center;\n height: ${({ size }) => (size === \"md\" ? \"42px\" : \"64px\")};\n min-width: ${({ width }) => width ?? \"initial\"};\n max-height: ${({ maxHeight }) => maxHeight ?? \"initial\"};\n background: ${COLORS.BLUE_GRADIENT};\n color: ${COLORS.WHITE};\n font-size: ${({ size }) => (size === \"md\" ? \"16px\" : \"18px\")};\n font-weight: 500;\n line-height: ${({ size }) => (size === \"md\" ? \"16px\" : \"18px\")};\n border: none;\n border-radius: ${({ size }) => (size === \"md\" ? \"4px\" : \"6px\")};\n box-shadow: 0px 10px ${({ size }) => (size === \"md\" ? 16 : 32)}px -4px #016aaa54;\n padding: 0 24px;\n margin: ${({ margin }) => margin};\n &:hover {\n background: linear-gradient(92.65deg, #004980 0%, #0085cc 92%);\n }\n &:focus:not(:active) {\n outline: none;\n }\n &:disabled {\n opacity: 0.4;\n pointer-events: none;\n }\n`;\n\nconst StyledLink = styled(Link)`\n display: inline-block;\n ${BaseStyles}\n ${FONTS.HEADING_5_MEDIUM}\n &:hover {\n color: white;\n text-decoration: none;\n }\n`;\n\nconst StyledButton = styled.button`\n ${BaseStyles}\n`;\nconst IconContainer = styled.div`\n margin: ${({ iconPosition }) => (iconPosition === \"left\" ? \"0 4px 0 0\" : \"0 0 0 4px\")};\n width: 24px;\n height: 24px;\n`;\n","import Icon, { IconName } from \"@components/library/Icon/Icon\";\nimport { COLORS, FONTS, STYLES } from \"@constants\";\nimport { Size } from \"@tsTypes/ui\";\nimport styled from \"styled-components\";\nimport { BaseButtonProps } from \"./Button\";\n\ninterface Props extends BaseButtonProps {\n text: string;\n size?: \"xs\" | \"sm\" | \"md\";\n color?: string;\n iconName?: IconName | null;\n iconPosition?: \"right\" | \"left\";\n iconSize?: Size;\n width?: string;\n}\n\nconst TextButton = ({\n text,\n size = \"md\",\n color = COLORS.HALO_BLUE,\n iconName = \"Chevron Down\",\n iconPosition = \"right\",\n iconSize,\n margin,\n id,\n name,\n type = \"button\",\n disabled,\n width,\n onClick,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n \"data-testid\": dataTestId,\n}: Props) => {\n return (\n \n {text}\n {iconName && (\n \n )}\n \n );\n};\n\nexport default TextButton;\n\nconst Button = styled.button`\n display: flex;\n flex-direction: ${({ iconPosition }) => (iconPosition === \"right\" ? \"row\" : \"row-reverse\")};\n align-items: center;\n height: ${({ size }) => (size === \"sm\" ? 16 : 24)}px;\n ${({ width }) =>\n width\n ? `\n width: ${width};\n span {\n ${STYLES.ONE_LINE_ALT};\n }\n `\n : \"fit-content\"};\n ${({ margin }) => margin && `margin: ${margin}`};\n padding: 0;\n ${({ size }) => {\n if (size === \"xs\") return FONTS.BUTTON_4;\n if (size === \"sm\") return FONTS.BUTTON_3;\n return FONTS.BUTTON_2;\n }};\n color: ${({ color }) => (color ? color : COLORS.HALO_BLUE)};\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 4px;\n &:hover {\n text-decoration: underline ${({ color }) => color};\n text-underline-offset: 4px;\n }\n &:focus {\n outline: none;\n }\n &:disabled {\n opacity: 0.4;\n }\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\ninterface Props {\n to: string | { pathname: string };\n children: any;\n color?: string;\n font?: string;\n underline?: boolean;\n newTab?: boolean;\n onClick?: () => void;\n margin?: string | 0;\n}\n\nconst TextLink = ({\n to,\n children,\n color = COLORS.BLACK,\n font = FONTS.MEDIUM_2,\n underline = false,\n newTab = false,\n onClick,\n margin,\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nexport default TextLink;\n\nconst StyledLink = styled(Link)`\n display: inline-flex;\n align-items: center;\n width: fit-content;\n ${({ margin }) => margin && `margin: ${margin}`};\n color: ${({ color }) => color};\n ${({ font }) => font};\n ${({ $underline }) => $underline && `text-decoration: underline;`};\n &:hover,\n &:focus {\n color: ${({ color }) => color};\n }\n`;\n","import { COLORS, STYLES, WINDOW_DIMENSIONS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children?: ReactNode;\n minHeight?: string;\n showHoverBorder?: boolean;\n padding?: string | 0;\n onClick?: (...args: any[]) => any;\n onMouseEnter?: (...args: any[]) => any;\n onMouseLeave?: (...args: any[]) => any;\n \"data-testid\"?: string;\n}\n\nconst Card = ({\n children,\n minHeight,\n showHoverBorder = true,\n padding,\n onClick,\n onMouseEnter,\n onMouseLeave,\n \"data-testid\": dataTestId,\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Card;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n min-width: 0;\n outline: 1px solid ${COLORS.NEUTRAL_250};\n border: none;\n background-color: ${COLORS.WHITE};\n text-align: left;\n border-radius: ${({ showHoverBorder }) => (showHoverBorder ? \"4px\" : \"12px 12px 4px 4px\")};\n box-shadow: ${STYLES.SHADOW_CARD};\n cursor: pointer;\n\n ${({ showHoverBorder }) => showHoverBorder && \"border-top: 4px solid transparent;\"}\n padding: ${({ padding }) => padding || \"16px\"};\n ${({ minHeight }) => minHeight && `min-height: ${minHeight};`}\n\n &:hover {\n background-color: ${COLORS.NEUTRAL_50};\n outline: none;\n ${({ showHoverBorder }) => showHoverBorder && `border-top: 4px solid ${COLORS.HALO_BLUE};`}\n box-shadow: ${STYLES.SHADOW_C};\n }\n\n &:nth-of-type(3n) .Select__menu {\n right: 0;\n }\n ${WINDOW_DIMENSIONS.EXTRA_WIDE_MEDIA_QUERY} {\n &:nth-of-type(3n) .Select__menu {\n right: auto;\n }\n &:nth-of-type(4n) .Select__menu {\n right: 0;\n }\n }\n ${WINDOW_DIMENSIONS.DESKTOP_MEDIA_QUERY} {\n &:nth-of-type(3n) .Select__menu {\n right: auto;\n }\n &:nth-of-type(2n) .Select__menu {\n right: 0;\n }\n }\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n &:nth-of-type(3n) .Select__menu {\n right: 0;\n }\n & .Select__menu {\n right: 0;\n }\n }\n ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n &:nth-of-type(3n) .Select__menu {\n right: 0;\n }\n & .Select__menu {\n right: 0;\n }\n }\n`;\n","import { Icon } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport { Size } from \"@tsTypes/index\";\nimport { useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n imageUrl?: string | null;\n isPrivate?: boolean;\n size?: Extract;\n}\n\nconst CompanyAvatar = ({ imageUrl, isPrivate = false, size = \"lg\" }: Props) => {\n const [hasError, setHasError] = useState(false);\n\n return (\n \n {(() => {\n if (isPrivate) return ;\n if (imageUrl && !hasError)\n return setHasError(true)} />;\n return ;\n })()}\n \n );\n};\n\nexport default CompanyAvatar;\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n border: 1px solid ${COLORS.NEUTRAL_250};\n background-color: ${COLORS.WHITE};\n ${({ size }) => {\n if (size === \"xs\") {\n return `\n width: 24px;\n height: 24px;\n border-radius: 4px;\n `;\n } else if (size === \"sm\") {\n return `\n width: 40px;\n height: 40px;\n border-radius: 4px;\n `;\n } else if (size === \"md\") {\n return `\n width: 48px;\n height: 48px;\n border-radius: 12px;\n `;\n }\n return `\n width: 64px;\n height: 64px;\n border-radius: 12px;\n `;\n }}\n`;\nconst Avatar = styled.img`\n ${({ size }) => {\n if (size === \"xs\") {\n return `\n max-width: 18px;\n max-height: 18px;\n `;\n } else if (size === \"sm\") {\n return `\n max-width: 30px;\n max-height: 30px;\n `;\n } else if (size === \"md\") {\n return `\n max-width: 36px;\n max-height: 36px;\n `;\n }\n return `\n max-width: 48px;\n max-height: 48px;\n `;\n }}\n`;\n","import { TextButton } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { ReactNode, useEffect, useState } from \"react\";\nimport Select, { components } from \"react-select\";\nimport styled from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { DropdownOption, ExtendedDropdownOption, OptionLabel } from \"./DropdownOption\";\nimport DROPDOWN_STYLES from \"./dropdownStyles\";\n\ninterface Props {\n children?: ReactNode; // Trigger component. Defaults to a TextButton with the value label\n options: readonly ExtendedDropdownOption[];\n value: DropdownOption;\n onChange: (...args: any[]) => any;\n isSearchable?: boolean;\n menuWidth?: string;\n maxMenuHeight?: string;\n menuHorizontalPosition?: \"right\" | \"left\";\n // Portal the menu with width if using within a scrollable overflow\n isPortal?: boolean;\n portalMenuWidth?: string;\n isDisabled?: boolean;\n}\n\nconst DropdownIndicator = (props) => {\n const { children, value } = props.selectProps;\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n {children ?? }\n \n );\n};\n\n/**\n * This dropdown is used when a selected option becomes the value of the dropdown. Often times, the\n * display will directly reflect the selected option. A typical use case would be a \"sort by\" menu\n *\n * menuWidth: When specified, the component will not bleed through the right edge of the screen.\n */\nconst SelectableDropdown = ({\n children,\n options,\n value,\n onChange,\n isSearchable = false,\n menuWidth,\n maxMenuHeight,\n menuHorizontalPosition,\n isPortal,\n portalMenuWidth = \"300px\",\n isDisabled = false,\n}: Props) => {\n const [portalOffsetRight, setPortalOffsetRight] = useState(0);\n\n useEffect(() => {\n if (!isPortal) return;\n\n const element = document.getElementById(id);\n\n setPortalOffsetRight(window.innerWidth - Number(element?.getBoundingClientRect().right));\n }, [isPortal]);\n\n const id = uuidv4();\n\n return (\n onChange(e)}\n isSearchable={isSearchable}\n isDisabled={isDisabled}\n menuWidth={menuWidth}\n maxMenuHeight={maxMenuHeight}\n menuHorizontalPosition={menuHorizontalPosition}\n menuPosition={isPortal ? \"fixed\" : \"absolute\"}\n menuPortalTarget={isPortal && document.body}\n styles={\n isPortal && {\n menu: (base) => ({\n ...base,\n padding: \"8px 0\",\n width: menuWidth,\n ...(menuHorizontalPosition === \"right\" && { right: 0 }),\n }),\n menuList: (base) => ({\n ...base,\n display: \"flex\",\n flexDirection: \"column\",\n }),\n menuPortal: (base) => ({\n ...base,\n zIndex: 9999,\n width: portalMenuWidth,\n ...(menuHorizontalPosition === \"right\" && { right: portalOffsetRight, left: \"unset\" }),\n }),\n option: (base, { isSelected }) => ({\n ...base,\n width: \"unset\",\n margin: \"0 12px\",\n cursor: \"pointer\",\n ...(isSelected && { backgroundColor: COLORS.BLUE_LIGHT_400, color: COLORS.HALO_BLUE }),\n }),\n }\n }\n menuShouldBlockScroll={isPortal}\n >\n {children}\n \n );\n};\n\nexport default SelectableDropdown;\n\nconst Dropdown = styled(Select)`\n ${DROPDOWN_STYLES};\n\n ${({ menuWidth }) =>\n menuWidth &&\n `\n .Select__menu {\n white-space: normal;\n width: ${menuWidth};\n\n position: absolute;\n right: 0;\n }\n `}\n .Select__control {\n padding: 0 2px 0 4px;\n min-height: unset;\n border: none;\n &:hover {\n &:not(.Select__control--is-focused) {\n border: none;\n }\n &.Select__control--is-focused {\n border: none;\n }\n }\n }\n .Select__control--is-disabled {\n ${({ isDisabled }) => isDisabled && \"background-color: transparent;\"}\n }\n .Select__placeholder {\n color: ${COLORS.BLACK};\n ${FONTS.MEDIUM_2};\n }\n .Select__value-container {\n height: 0;\n width: 0;\n padding: 0;\n }\n .Select__indicator {\n margin: 0px;\n }\n .Select__option {\n min-width: unset;\n }\n .Select__menu {\n min-width: fit-content;\n ${({ menuHorizontalPosition }) =>\n menuHorizontalPosition &&\n `\n position: absolute;\n ${menuHorizontalPosition}: 0;\n `}\n }\n .Select__menu-list {\n max-height: ${({ maxMenuHeight }) => maxMenuHeight};\n }\n .Select__control:hover:not(.Select__control--is-focused) {\n border: none;\n }\n`;\nconst DropdownIndicatorComponent = styled(components.DropdownIndicator)`\n ${({ isDisabled }) => isDisabled && \"opacity: 0.6;\"}\n`;\n","import { Icon } from \"@components/library\";\nimport type { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport Select, { ClearIndicatorProps, components } from \"react-select\";\nimport styled from \"styled-components\";\nimport FormLabel from \"../Texts/FormLabel\";\nimport { MultiSelectDropdownBaseStyles } from \"./MultiSelectDropdown\";\nimport DROPDOWN_STYLES from \"./dropdownStyles\";\n\ninterface Props {\n value: DropdownOption | null;\n options: DropdownOption[];\n onChange: (...args: any[]) => any;\n placeholder: string;\n label?: string;\n labelFont?: string;\n isOptional?: boolean;\n isClearable?: boolean;\n createOptionComponent?: ReactNode;\n onCreate?: (...args: any[]) => any;\n menuPlacement?: \"bottom\" | \"auto\" | \"top\";\n maxValueContainerHeight?: string;\n maxMenuHeight?: string;\n helpText?: string;\n errors?: { hasError: boolean; errorMessage: string }[];\n}\n\nconst ClearIndicator = (props: ClearIndicatorProps) => {\n return (\n \n \n \n );\n};\n\nconst SelectOrCreateDropdown = ({\n value,\n options,\n onChange,\n placeholder,\n label,\n labelFont = FONTS.SEMIBOLD_2,\n isOptional = false,\n isClearable = false,\n createOptionComponent = (\n \n \n Create new\n \n ),\n onCreate,\n menuPlacement = \"auto\",\n maxValueContainerHeight = \"unset\",\n maxMenuHeight = \"250px\",\n helpText,\n errors,\n}: Props) => {\n const handleChange = (option) => {\n if (option?.value === \"_CREATE\" && onCreate) {\n onCreate();\n }\n onChange(option);\n };\n\n const hasAnyError = errors?.map((error) => error.hasError).includes(true);\n\n const optionsWithCreate = onCreate\n ? [\n ...options,\n {\n value: \"_CREATE\",\n label: createOptionComponent,\n },\n ]\n : options;\n\n const dropdown = (\n \n );\n\n return (\n
\n {label ? (\n \n \n {dropdown}\n \n ) : (\n dropdown\n )}\n {Number(helpText?.length) > 0 && {helpText}}\n {hasAnyError &&\n errors?.map(\n (error) =>\n error.hasError && (\n \n \n {error.errorMessage}\n \n )\n )}\n
\n );\n};\n\nexport default SelectOrCreateDropdown;\n\nconst CreateLabel = styled.div`\n display: flex;\n align-items: center;\n`;\nconst Dropdown = styled(Select)`\n ${DROPDOWN_STYLES};\n ${MultiSelectDropdownBaseStyles};\n\n .Select__control {\n margin-top: 0;\n }\n ${({ hasCreateOption }) =>\n hasCreateOption &&\n `\n .Select__option:last-of-type {\n color: ${COLORS.HALO_BLUE};\n ${FONTS.MEDIUM_2};\n }\n `}\n`;\nconst DropdownLabel = styled.label`\n display: flex;\n flex-direction: column;\n gap: 10px;\n width: 100%;\n ${({ labelFont }) => labelFont};\n`;\nconst HelpText = styled.div`\n margin-top: 8px;\n ${FONTS.REGULAR_3};\n`;\nconst ErrorMessage = styled.div`\n display: flex;\n margin-top: 8px;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.RED_600};\n`;\n","import MultiSelectDropdown, { SingleSelectProps } from \"./MultiSelectDropdown\";\n\nconst SingleSelectDropdown = ({ placeholder = \"None\", ...props }: SingleSelectProps) => (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n);\n\nexport default SingleSelectDropdown;\n","import { useUniversityOptions } from \"src/views/Onboarding/Hooks\";\n\nimport Fuse from \"fuse.js\";\nimport { DropdownOption } from \"./DropdownOption\";\nimport MultiSelectDropdown from \"./MultiSelectDropdown\";\n\ninterface Props {\n value: DropdownOption | null;\n onChange: (newValue: DropdownOption | null) => void;\n}\n\nexport default function UniversityDropdown({ value, onChange }: Props) {\n const universityOptions = useUniversityOptions();\n\n const searchUniversities = async (query: string): Promise => {\n const fuse = new Fuse(universityOptions, {\n keys: [\"value\"],\n });\n const result = fuse.search(query);\n const values = result.map((r: any) => r.item).slice(0, 500);\n return values;\n };\n\n return (\n \n );\n}\n","import { Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n shouldDisplay?: boolean;\n text: ReactNode;\n font?: string;\n type?: \"info\" | \"attention-dark\" | \"attention-orange\" | \"ghost\" | \"magic\";\n width?: string;\n margin?: string;\n padding?: string;\n hideIcon?: boolean;\n \"data-testid\"?: string;\n}\n\nconst InfoBanner = ({\n shouldDisplay = true,\n text,\n font,\n type = \"info\",\n width = \"fit-content\",\n margin,\n padding = \"16px\",\n hideIcon = false,\n \"data-testid\": dataTestId,\n}: Props) => {\n let icon: ReactNode = (\n \n );\n if (type === \"ghost\") {\n icon = ;\n }\n if (type.includes(\"attention\")) {\n icon = (\n \n );\n }\n if (type === \"magic\") {\n icon = ;\n }\n\n return shouldDisplay ? (\n \n {!hideIcon && icon}\n {text}\n \n ) : null;\n};\n\nexport default InfoBanner;\n\nconst Container = styled.div`\n display: flex;\n width: ${({ width }) => width};\n ${({ margin }) => margin && `margin: ${margin}`};\n padding: ${({ padding }) => padding};\n border-radius: 6px;\n ${({ type }) => {\n switch (type) {\n case \"info\":\n return `\n color: ${COLORS.BLACK};\n background-color: ${COLORS.NEUTRAL_100};\n ${FONTS.REGULAR_3}\n `;\n case \"attention-orange\":\n return `\n color: ${COLORS.ORANGE_900};\n background-color: ${COLORS.ORANGE_100};\n ${FONTS.MEDIUM_2}\n `;\n case \"attention-dark\":\n return `\n color: ${COLORS.BLACK};\n background-color: ${COLORS.NEUTRAL_100};\n ${FONTS.MEDIUM_2}\n `;\n case \"ghost\":\n return `\n color: ${COLORS.BLACK};\n background-color: ${COLORS.WHITE};\n ${FONTS.MEDIUM_2}\n `;\n case \"magic\": {\n return `\n color: ${COLORS.PINK_800};\n background-color: ${COLORS.PINK_50};\n ${FONTS.REGULAR_2}\n `;\n }\n }\n }}\n ${({ font }) => font && font};\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { ChangeEvent, ReactNode, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\ntype InputType = \"checkbox\" | \"radio\";\n\ninterface Props {\n label: ReactNode;\n labelFont?: string;\n isChecked: boolean;\n // Used for instances where the checkbox is responsible for select/deselect all.\n // When some, but not all are selected, this checkbox will show the partially-checked state\n isPartiallyChecked?: boolean;\n isDisabled?: boolean;\n isReversed?: boolean;\n onChange: (e: ChangeEvent) => void;\n size?: \"md\" | \"sm\";\n type?: InputType;\n \"data-testid\"?: string;\n}\n\nconst Checkbox = ({\n label,\n labelFont,\n isChecked,\n isPartiallyChecked,\n isDisabled,\n isReversed = false,\n onChange,\n size = \"md\",\n type = \"checkbox\",\n \"data-testid\": dataTestId,\n}: Props) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const checkboxRef = useRef(null);\n const isFocusedRef = useRef(false);\n\n const onKeyDown = (e) => {\n if (e.code === \"Enter\" && isFocusedRef.current) {\n checkboxRef.current?.click();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, []);\n\n return (\n setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n isDisabled={isDisabled}\n >\n \n {\n isFocusedRef.current = true;\n setIsFocused(true);\n }}\n onBlur={() => {\n isFocusedRef.current = false;\n setIsFocused(false);\n }}\n onChange={onChange}\n checked={isChecked}\n disabled={isDisabled}\n />\n {(() => {\n if (isChecked) return renderCheckIcon(type, size);\n if (isPartiallyChecked || type === \"radio\") return renderPartialCheckIcon(type, size);\n })()}\n \n {label}\n \n );\n};\n\nexport default Checkbox;\n\nconst Label = styled.label`\n display: flex;\n align-items: center;\n ${({ isReversed }) => isReversed && \"flex-direction: row-reverse;\"}\n ${({ isDisabled }) => isDisabled && \"opacity: 0.5;\"}\n gap: 8px;\n margin: 0;\n ${({ size }) => (size === \"md\" ? FONTS.REGULAR_1 : FONTS.REGULAR_2)};\n ${({ labelFont }) => labelFont && labelFont}\n color: ${COLORS.BLACK};\n cursor: pointer;\n`;\nconst CheckboxContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n ${({ size }) =>\n size === \"md\"\n ? `\n height: 24px;\n width: 24px;\n `\n : `\n height: 18px;\n width: 18px;\n `}\n border: 1px solid ${({\n isDisabled,\n isHovered,\n isFocused,\n isChecked,\n isPartiallyChecked,\n type,\n }) => {\n if (type !== \"checkbox\") return \"transparent\";\n if (isFocused || isChecked || isPartiallyChecked) return COLORS.BLUE_600;\n if (isHovered && !isDisabled) return COLORS.BLACK;\n return COLORS.NEUTRAL_300;\n }};\n border-radius: 4px;\n background-color: ${({ isChecked, isPartiallyChecked, type }) =>\n type === \"checkbox\" && (isChecked || isPartiallyChecked)\n ? COLORS.BLUE_LIGHT_400\n : COLORS.WHITE};\n`;\nconst Input = styled.input`\n position: absolute;\n height: 0;\n width: 0;\n opacity: 0;\n`;\n\n// These two icons don't seem to be used anywhere else\n// (There is a \"Tick\" icon in the design system, but it is different than this one)\nconst renderCheckIcon = (type: InputType, size: \"md\" | \"sm\") =>\n type === \"checkbox\" ? (\n \n \n \n ) : (\n \n \n \n \n );\nconst renderPartialCheckIcon = (type: InputType, size: \"md\" | \"sm\") =>\n type === \"checkbox\" ? (\n \n \n \n ) : (\n \n \n \n );\n","import { Icon, OneLineSpan } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { ChangeEvent, ReactElement, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n label: string | ReactElement;\n checked: boolean;\n disabled?: boolean;\n onChange: (e: ChangeEvent) => void;\n borderColor?: string;\n dataTestId?: string;\n className?: string; // this prop is required if we want to restyle it using `styled(ChipCheckbox)`\n}\n\nconst ChipCheckbox = ({\n label,\n checked,\n disabled,\n onChange,\n borderColor = COLORS.NEUTRAL_300,\n dataTestId,\n className,\n}: Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const checkboxRef = useRef(null);\n const isFocusedRef = useRef(false);\n const isLabelString = typeof label === \"string\";\n\n const onKeyDown = (e) => {\n if (e.code === \"Enter\" && isFocusedRef.current) {\n checkboxRef.current?.click();\n }\n };\n\n useEffect(() => {\n document.addEventListener(\"keydown\", onKeyDown);\n\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, []);\n\n return (\n \n {isLabelString ? : label}\n {\n isFocusedRef.current = true;\n setIsFocused(true);\n }}\n onBlur={() => {\n isFocusedRef.current = false;\n setIsFocused(false);\n }}\n />\n {checked && }\n \n );\n};\n\nexport default ChipCheckbox;\n\nconst Label = styled.label`\n margin-bottom: 0;\n display: flex;\n align-items: center;\n width: fit-content;\n height: 32px;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.BLACK};\n padding: 0 14px;\n border: 1px solid ${({ borderColor }) => borderColor};\n border-radius: 100px;\n background-color: transparent;\n cursor: ${({ disabled }) => (disabled ? \"default\" : \"pointer\")};\n user-select: none;\n &&& {\n ${({ checked, disabled, isFocused }) => {\n if (checked) {\n return `\n background-color: ${COLORS.BLUE_LIGHT_300};\n border-color: ${COLORS.HALO_BLUE};\n color: ${COLORS.HALO_BLUE};\n :hover {\n & > :last-child {\n opacity: 0.4;\n }\n }\n `;\n } else if (disabled) {\n return `\n background-color: ${COLORS.NEUTRAL_200};\n border-color: ${COLORS.NEUTRAL_400};\n opacity: 0.5;\n `;\n } else if (isFocused) {\n return `\n background-color: ${COLORS.NEUTRAL_100};\n border-color: ${COLORS.NEUTRAL_400};\n `;\n }\n }}\n }\n :hover {\n background-color: ${COLORS.NEUTRAL_100};\n border-color: ${COLORS.NEUTRAL_400};\n }\n`;\n\nconst Checkbox = styled.input`\n display: none;\n`;\n","import { Icon, InfoTag } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { Dispatch, ReactNode, SetStateAction } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children: ReactNode;\n label: string;\n isExpanded: boolean;\n setIsExpanded: Dispatch>;\n areAllSelected: boolean;\n tagText: string; // Content of the tag to the right of the input label\n shouldShowInfoText?: boolean;\n infoText?: string;\n}\n\nconst CollapsibleInputWrapper = ({\n children,\n label,\n isExpanded,\n setIsExpanded,\n areAllSelected,\n tagText,\n shouldShowInfoText,\n infoText,\n}: Props) => {\n return (\n \n setIsExpanded(!isExpanded)}>\n {label}\n \n {areAllSelected ? \"All\" : tagText}\n \n \n \n {isExpanded && (\n <>\n {children}\n {shouldShowInfoText && infoText && (\n \n \n {infoText}\n \n )}\n \n )}\n \n );\n};\n\nexport default CollapsibleInputWrapper;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 18px;\n padding: 16px;\n background-color: ${COLORS.NEUTRAL_50};\n border-radius: 8px;\n color: ${COLORS.BLACK};\n`;\nconst Top = styled.div`\n display: flex;\n align-items: center;\n border: none;\n background-color: transparent;\n ${FONTS.SEMIBOLD_1};\n cursor: pointer;\n :focus {\n outline: none;\n }\n`;\nconst Info = styled.div`\n display: flex;\n ${FONTS.REGULAR_3};\n`;\n","import {\n Button,\n Checkbox,\n Icon,\n InputTooltip,\n TextButton,\n TextInput,\n Tooltip,\n} from \"@components/library\";\nimport { Label } from \"@components/library/Inputs/TextInput\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { startsWithVowel } from \"@utils/textUtils\";\nimport { ChangeEvent, ReactNode, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport FormLabel from \"../Texts/FormLabel\";\n\ninterface Props {\n values: string[];\n onChange: (values: string[]) => void;\n label?: string;\n labelFont?: string;\n sublabel?: ReactNode;\n placeholder?: string;\n itemName?: string; // e.g. \"requirement,\" \"out-of-scope item,\" etc.\n isOptional?: boolean;\n asTextArea?: boolean;\n characterLimit?: number;\n errors?: { hasError: boolean; errorMessage: string }[];\n resize?: string;\n startingHeight?: string;\n tooltipContent?: string | ReactNode;\n tooltipWidth?: string;\n tooltipOffsetTop?: string;\n tooltipArrowOffsetTop?: string;\n checkbox?: {\n label: string;\n labelFont: string;\n isValueChecked: (valueIndex: number) => boolean;\n onChange: (changedValueIndex: number, isChecked: boolean) => void;\n tooltipContent?: string | ReactNode;\n tooltipWidth?: string;\n };\n \"data-testid\"?: string;\n}\n\nconst MultiTextInput = ({\n values,\n onChange,\n label,\n labelFont,\n sublabel,\n placeholder,\n itemName,\n isOptional = false,\n asTextArea = true,\n characterLimit,\n errors,\n resize = \"vertical\",\n startingHeight,\n tooltipContent,\n tooltipWidth,\n tooltipOffsetTop,\n tooltipArrowOffsetTop,\n checkbox,\n \"data-testid\": dataTestId,\n}: Props) => {\n const inputKeysRef = useRef(values.map(() => uuidv4()));\n const didAddOrRemoveRef = useRef(false);\n const hiddenInputRef = useRef(null);\n\n useEffect(() => {\n if (didAddOrRemoveRef.current) {\n if (values.length === 0) {\n // This is needed because without a focusable element (e.g. input), the tooltip wrapper can't\n // be blurred, and the tooltip will persist. So, we add a non-visible input that can take the\n // focus when the last \"real\" input is removed, then blur it to hide the tooltip\n hiddenInputRef.current?.focus();\n hiddenInputRef.current?.blur();\n } else {\n const lastInputId = inputKeysRef.current[inputKeysRef.current.length - 1];\n const lastInput = document.getElementById(lastInputId);\n lastInput?.focus();\n }\n\n didAddOrRemoveRef.current = false;\n }\n }, [values]);\n\n const handleInputChange = (e: ChangeEvent, i: number) => {\n const newValues = [...values];\n newValues.splice(i, 1, e.target.value);\n onChange(newValues);\n };\n\n const handleAdd = () => {\n const uniqueId = uuidv4();\n inputKeysRef.current.push(uniqueId);\n\n onChange([...values, \"\"]);\n didAddOrRemoveRef.current = true;\n };\n\n const handleRemove = (e: ChangeEvent, i: number) => {\n e.preventDefault();\n const currentKey = inputKeysRef.current[i];\n inputKeysRef.current = inputKeysRef.current.filter((key) => key !== currentKey);\n\n const newValues = [...values];\n newValues.splice(i, 1);\n onChange(newValues);\n didAddOrRemoveRef.current = true;\n };\n\n const hasAnyError = Boolean(\n errors?.map((error) => error.hasError).includes(true) ||\n (characterLimit && values.some((entry) => entry.length > characterLimit))\n );\n\n const addButtonText =\n values.length === 0\n ? `Add${itemName && startsWithVowel(itemName) ? ` an ${itemName}` : ` a ${itemName}`}`\n : `Add another${itemName && ` ${itemName}`}`;\n\n const inputs = (\n \n \n {values.map((value, i) => {\n const inputComponent = (\n handleInputChange(e, i)}\n textarea={asTextArea}\n placeholder={placeholder}\n characterLimit={characterLimit}\n errors={errors}\n resize={resize}\n startingHeight={startingHeight}\n data-testid=\"input\"\n />\n );\n return (\n
\n \n {tooltipContent ? (\n \n {inputComponent}\n \n ) : (\n inputComponent\n )}\n \n handleRemove(e, i)}\n data-testid=\"remove-button\"\n />\n \n \n {checkbox && (\n \n checkbox.onChange(i, e.target.checked)}\n />\n {Boolean(checkbox.tooltipContent) && (\n \n \n \n )}\n \n )}\n
\n );\n })}\n
\n );\n\n return (\n \n {label ? (\n \n ) : (\n Boolean(values.length) && inputs\n )}\n \n {addButtonText}\n \n \n );\n};\n\nexport default MultiTextInput;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n`;\nconst Inputs = styled.div`\n display: flex;\n flex-direction: column;\n gap: 32px;\n position: relative;\n`;\nconst HiddenInput = styled.input`\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n`;\nconst InputContainer = styled.div`\n position: relative;\n width: 100%;\n`;\nconst CheckboxContainer = styled.div`\n display: flex;\n align-items: center;\n margin-top: 8px;\n`;\nconst RemoveButtonContainer = styled.div`\n position: absolute;\n bottom: -4px;\n right: 0;\n`;\nconst SublabelText = styled.div`\n ${FONTS.REGULAR_2}\n margin-bottom: ${({ hasItems }) => (hasItems ? \"24px\" : \"0\")};\n`;\n","import { Icon, TextButton } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { LegacyRef, ReactNode, useEffect, useRef, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children: ReactNode;\n label: ReactNode;\n isExpanded: boolean;\n setIsExpanded: (isExpanded: boolean) => void;\n onOpen?: () => void;\n onRemove: () => void;\n errors?: { hasError: boolean; errorMessage: string }[];\n \"data-testid\"?: string;\n}\n\nconst RemovableInputWrapper = ({\n children,\n label,\n isExpanded,\n setIsExpanded,\n onOpen,\n onRemove,\n errors,\n \"data-testid\": dataTestId,\n}: Props) => {\n const [isInitiallyOpen] = useState(isExpanded);\n\n const inputRef = useRef(null);\n const isExpandedRef = useRef(isInitiallyOpen);\n\n useEffect(() => {\n if (!isExpandedRef.current && isExpanded) {\n const textInput = inputRef.current?.querySelector('input[type=\"text\"], textarea');\n\n if (textInput) {\n inputRef.current = textInput as HTMLInputElement | HTMLTextAreaElement;\n inputRef.current.focus();\n }\n }\n\n isExpandedRef.current = isExpanded;\n }, [isExpanded]);\n\n const hasAnyError = errors?.map((error) => error.hasError).includes(true);\n const errorIcon = ;\n\n return (\n \n \n {label}\n {isExpanded ? (\n {\n onRemove();\n setIsExpanded(false);\n }}\n data-testid=\"remove-button\"\n />\n ) : (\n {\n onOpen?.();\n setIsExpanded(true);\n }}\n iconPosition=\"left\"\n data-testid=\"add-button\"\n />\n )}\n \n {isExpanded && (\n <>\n
}>{children}
\n {hasAnyError && (\n \n {errors?.map(\n (error) =>\n error.hasError && (\n \n {errorIcon}\n {error.errorMessage}\n \n )\n )}\n \n )}\n \n )}\n
\n );\n};\n\nexport default RemovableInputWrapper;\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n gap: 18px;\n width: 100%;\n padding: 16px;\n background: ${COLORS.NEUTRAL_50};\n border-radius: 8px;\n`;\nconst Top = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n ${FONTS.SEMIBOLD_1}\n color: ${({ hasAnyError }) => (hasAnyError ? COLORS.RED_600 : COLORS.BLACK)};\n`;\nconst ErrorsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\nconst ErrorRow = styled.div`\n display: flex;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.RED_600};\n`;\n","import { Icon } from \"@components/library\";\nimport type { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { searchSuggest } from \"@requests/companyNetworkScientists\";\nimport { getValueFromOption } from \"@utils/dropdownUtils\";\nimport debounce from \"debounce-promise\";\nimport { useCallback, useState } from \"react\";\nimport { components } from \"react-select\";\nimport AsyncCreatableSelect from \"react-select/async-creatable\";\nimport CreatableSelect from \"react-select/creatable\";\nimport styled, { css } from \"styled-components\";\nimport { ConnectionType } from \"../../../tsTypes/__generated__/enums/connection_type\";\nimport DROPDOWN_STYLES, { MULTI_SELECT_TAG_STYLES } from \"../Dropdowns/dropdownStyles\";\n\ninterface Props {\n renderLocation: \"proposal_library\" | \"scientist_network\";\n value: DropdownOption[];\n onChange: (...args: any[]) => any;\n placeholder: string;\n createOptionText?: string; // e.g. \"Search proposals for\"\n suggestedOptions?: DropdownOption[];\n connectionType?: ConnectionType;\n}\n\nconst CustomOption = ({ innerRef, innerProps, isSelected, label, isFocused }) => {\n return (\n // Allow JSX innerProps to be pass in as spread.\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n {label}\n \n );\n};\n\nconst CreateOptionLabel = (input: string, createOptionText?: string) => {\n return (\n \n \n {`${createOptionText ?? \"Search for\"} \"${input}\"`}\n \n );\n};\n\nconst NoOptionsMessage = ({\n children,\n getValue,\n selectOption,\n}: {\n children: DropdownOption[];\n getValue: () => DropdownOption[];\n selectOption: (newValue: DropdownOption) => void;\n}) => {\n const values = getValue().map(getValueFromOption) as string[];\n const filteredChildren = children?.filter(({ value }: DropdownOption) => !values.includes(value));\n\n if (!filteredChildren?.length)\n return (\n \n \n Search by title, content, keywords, researcher, or organization\n \n );\n\n return (\n
\n Try searching for\n {children\n .filter(({ value }: DropdownOption) => !values.includes(value))\n .map(({ value, label }: DropdownOption) => (\n selectOption({ label, value })}>\n \n {value}\n \n ))}\n
\n );\n};\n\nexport const ClearIndicator = (props) => {\n const {\n getStyles,\n innerProps: { ref, ...restInnerProps },\n } = props;\n\n return (\n \n \n \n );\n};\n\nconst MultiValueRemove = ({ ...props }) => {\n return (\n // From the React-Select docs\n /* eslint-disable-next-line */ //@ts-ignore\n \n \n \n );\n};\n\nconst SearchBarDropdown = ({\n value,\n placeholder,\n onChange,\n createOptionText,\n suggestedOptions,\n connectionType,\n renderLocation,\n}: Props) => {\n const [inputValue, setInputValue] = useState(\"\");\n\n const searchOptions = async (query: string) => {\n return searchSuggest(query, connectionType);\n };\n\n const debouncedSearchOptions = useCallback(debounce(searchOptions, 500), [connectionType]);\n\n const Component =\n renderLocation === \"scientist_network\" ? (\n {\n return CreateOptionLabel(input, createOptionText);\n }}\n inputValue={inputValue}\n isMulti\n loadOptions={debouncedSearchOptions}\n noOptionsMessage={() => suggestedOptions}\n onChange={onChange}\n onInputChange={(e) => setInputValue(e)}\n openMenuOnFocus={true}\n placeholder={placeholder}\n value={value}\n />\n ) : (\n CreateOptionLabel(input, createOptionText)}\n inputValue={inputValue}\n isMulti\n noOptionsMessage={() => suggestedOptions}\n onChange={onChange}\n onInputChange={(e) => setInputValue(e)}\n openMenuOnFocus={true}\n placeholder={placeholder}\n value={value}\n />\n );\n\n return (\n \n \n \n \n {Component}\n \n );\n};\n\nexport default SearchBarDropdown;\n\nconst CreateLabel = styled.div`\n display: flex;\n align-items: center;\n`;\nconst NoOptionsLabel = styled.div`\n display: flex;\n align-items: center;\n color: ${COLORS.NEUTRAL_500};\n`;\nconst SuggestedOptionsHeader = styled.div`\n display: flex;\n align-items: center;\n height: 30px;\n`;\nconst SuggestedOptionLabel = styled.div`\n display: flex;\n align-items: center;\n ${({ isSelected }) => (isSelected ? FONTS.MEDIUM_2 : FONTS.REGULAR_2)};\n color: ${({ isSelected }) => (isSelected ? COLORS.HALO_BLUE : COLORS.BLACK)};\n margin: 0;\n padding: 10px 14px;\n border-radius: 4px;\n cursor: pointer;\n &:hover {\n background-color: ${COLORS.NEUTRAL_100};\n }\n`;\nconst SuggestedOptionText = styled.span`\n overflow-wrap: break-word;\n white-space: normal;\n`;\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n width: 100%;\n`;\nexport const IconContainer = styled.div`\n position: absolute;\n z-index: 1;\n`;\nexport const Option = styled.div`\n position: absolute;\n z-index: 1;\n`;\nconst SearchSuggestionLabel = styled.label`\n display: flex;\n align-items: center;\n background-color: ${({ isFocused }) => (isFocused ? COLORS.NEUTRAL_100 : \"inherit\")};\n color: ${COLORS.HALO_BLUE};\n ${FONTS.MEDIUM_2};\n padding: 10px 0;\n border-radius: 4px;\n`;\nconst SearchSuggestion = styled.div`\n padding: 0 14px;\n`;\nconst DropdownStyles = css`\n ${DROPDOWN_STYLES};\n ${MULTI_SELECT_TAG_STYLES};\n width: 100%;\n\n .Select__control {\n min-height: 54px;\n }\n .Select__value-container {\n padding-left: 42px;\n cursor: text;\n }\n .Select__dropdown-indicator {\n display: none;\n }\n .Select__indicators {\n height: 52px;\n &:hover {\n opacity: 0.5;\n }\n }\n .Select__menu {\n padding: 8px 12px;\n }\n .Select__option {\n color: ${COLORS.HALO_BLUE};\n ${FONTS.MEDIUM_2};\n padding-right: 16px;\n }\n`;\nconst AsyncDropdown = styled(AsyncCreatableSelect)`\n ${DropdownStyles}\n`;\nexport const Dropdown = styled(CreatableSelect)`\n ${DropdownStyles}\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport ReactSwitch from \"react-switch\";\nimport styled from \"styled-components\";\n\ninterface Props {\n checked: boolean;\n onChange: (checked: boolean) => any;\n size?: \"sm\" | \"lg\";\n labelLeft?: string;\n labelRight?: string | ReactNode;\n disabled?: boolean;\n margin?: string | 0;\n disabledColor?: string;\n}\n\nconst Switch = ({\n checked,\n onChange,\n size = \"sm\",\n labelLeft,\n labelRight,\n disabled,\n disabledColor = COLORS.BLACK,\n margin,\n}: Props) => {\n return (\n \n {labelLeft}\n \n \n \n {labelRight}\n \n );\n};\n\nexport default Switch;\n\nconst Container = styled.div`\n ${FONTS.MEDIUM_2}\n display: flex;\n align-items: center;\n justify-content: start;\n gap: ${({ hasTwoLabels }) => (hasTwoLabels ? \"6px\" : \"11px\")};\n height: fit-content;\n ${({ margin }) => margin && `margin: ${margin}`};\n`;\nconst SwitchContainer = styled.span`\n display: flex;\n`;\n","import { ChipCheckbox, OneLineSpan, ProfilePicture } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport { ChangeEvent } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n user: {\n image: {\n medium: {\n url: string | null;\n };\n };\n name: string;\n };\n checked: boolean;\n disabled?: boolean;\n onChange: (e: ChangeEvent) => void;\n borderColor?: string;\n dataTestId?: string;\n}\n\nconst UserChipCheckbox = (props: Props) => {\n const { user, ...restProps } = props;\n\n return (\n \n \n \n \n \n \n }\n />\n );\n};\n\nexport default UserChipCheckbox;\n\nconst AltChipCheckbox = styled(ChipCheckbox)`\n height: 36px;\n &&& {\n ${({ checked }) => {\n if (checked) {\n return `\n border-color: ${COLORS.BLUE_600};\n color: ${COLORS.BLUE_600};\n `;\n }\n }}\n }\n`;\n\nconst ProfilePictureContainer = styled.div`\n margin-left: -10px;\n margin-right: 8px;\n`;\n","import styled from \"styled-components\";\n\nexport default styled.div`\n display: flex;\n justify-content: center;\n`;\n","// Note: Not all pages should be wrapped in this component. This component assumes that there is\n// even padding along the sides of the entire page, but some pages (e.g. inbox, proposal review\n// system, pages with banners, etc.) are meant to have some or all of the contents extend across\n// the entire width of the browser window.\n\nimport { COLORS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n hasTopDivider?: boolean;\n hasPaddingTop?: boolean;\n hasPaddingBottom?: boolean;\n hasOverflowHidden?: boolean;\n maxWidth?: string; // Should not be used; used only for a hacky approach for RFS requested by Kevin\n children: ReactNode;\n}\n\ninterface ContainerProps {\n hasTopDivider: boolean;\n hasPaddingTop: boolean;\n hasPaddingBottom: boolean;\n hasOverflowHidden?: boolean;\n}\n\nconst PageContainer = ({\n hasTopDivider = false,\n hasPaddingTop = true,\n hasPaddingBottom = true,\n hasOverflowHidden = false,\n maxWidth,\n children,\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nexport default PageContainer;\n\nconst {\n TABLET_MEDIA_QUERY,\n DESKTOP_MIN_WIDTH_MEDIA_QUERY,\n DESKTOP_MIN_CONTENT_WIDTH,\n DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY,\n DEFAULT_MAX_WIDTH,\n PAGE_SIDE_PADDING,\n TABLET_SIDE_PADDING,\n} = WINDOW_DIMENSIONS;\nconst Container = styled.div`\n ${({ hasPaddingTop }) => hasPaddingTop && \"padding-top: 69px\"};\n ${({ hasPaddingBottom }) => hasPaddingBottom && \"padding-bottom: 69px\"};\n ${({ hasOverflowHidden }) => hasOverflowHidden && \"overflow: hidden\"};\n\n ${({ hasTopDivider }: ContainerProps) =>\n hasTopDivider && `border-top: 1px solid ${COLORS.NEUTRAL_100};`}\n\n padding-right: ${PAGE_SIDE_PADDING}px;\n padding-left: ${PAGE_SIDE_PADDING}px;\n ${DESKTOP_MIN_WIDTH_MEDIA_QUERY} {\n padding-right: unset;\n padding-left: unset;\n }\n ${DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY} {\n padding-right: ${PAGE_SIDE_PADDING}px;\n padding-left: ${PAGE_SIDE_PADDING}px;\n }\n\n ${TABLET_MEDIA_QUERY} {\n padding: ${TABLET_SIDE_PADDING}px;\n }\n`;\nconst Children = styled.div`\n max-width: ${({ maxWidth }) => maxWidth ?? `${DEFAULT_MAX_WIDTH}px`};\n margin: 0 auto;\n\n ${DESKTOP_MIN_WIDTH_MEDIA_QUERY} {\n width: ${DESKTOP_MIN_CONTENT_WIDTH}px;\n }\n ${DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY} {\n width: unset;\n }\n`;\n","import { Icon } from \"@components/library\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport styled from \"styled-components\";\n\ninterface Props {\n stepNumber: number;\n label: string;\n onClick?: () => void;\n isCurrent: boolean;\n isComplete: boolean;\n isDisabled?: boolean;\n needsUpdate?: boolean;\n formVariant: \"request\" | \"proposal\";\n}\n\nconst ProgressStep = ({\n stepNumber,\n label,\n onClick,\n isCurrent,\n isComplete,\n isDisabled,\n needsUpdate,\n formVariant,\n}: Props) => {\n let stepStyle: \"default\" | \"current\" | \"complete\" | \"needsUpdate\" = \"default\";\n if (isCurrent) stepStyle = \"current\";\n else if (needsUpdate) stepStyle = \"needsUpdate\";\n else if (isComplete) stepStyle = \"complete\";\n\n return (\n \n {(() => {\n if (stepStyle === \"complete\")\n return ;\n if (stepStyle === \"needsUpdate\") return Attention;\n return {stepNumber};\n })()}\n {label}\n \n );\n};\n\nexport default ProgressStep;\n\nconst Container = styled.button`\n display: flex;\n justify-content: ${({ formVariant }) => (formVariant === \"proposal\" ? \"center\" : \"flex-start\")};\n align-items: center;\n gap: ${({ formVariant }) => (formVariant === \"proposal\" ? 6 : 12)}px;\n padding: 0;\n background-color: transparent;\n border: none;\n text-align: left;\n color: ${({ stepStyle, formVariant }) => {\n if (stepStyle === \"current\") return COLORS.HALO_BLUE;\n if (stepStyle === \"complete\") {\n return formVariant === \"proposal\" ? COLORS.GREEN : COLORS.BLACK;\n }\n if (stepStyle === \"needsUpdate\") return COLORS.ORANGE_900;\n return COLORS.NEUTRAL_500;\n }};\n ${({ formVariant }) => {\n if (formVariant === \"proposal\") return FONTS.MEDIUM_1;\n return FONTS.MEDIUM_2;\n }};\n &:focus:not(:active) {\n outline: none;\n & > span {\n ${({ stepStyle, formVariant }) =>\n formVariant !== \"proposal\" &&\n `\n padding-top: 1px;\n border-bottom: 1px solid ${(() => {\n if (stepStyle === \"current\") return COLORS.HALO_BLUE;\n if (stepStyle === \"complete\") return COLORS.BLACK;\n if (stepStyle === \"needsUpdate\") return COLORS.ORANGE_900;\n return COLORS.NEUTRAL_500;\n })()};\n `}\n }\n }\n ${({ formVariant }) =>\n formVariant === \"proposal\" &&\n `\n ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n flex-direction: column;\n gap: 0;\n font-size: 14px;\n }\n `}\n ${({ onClick }) => !onClick && \"cursor: default;\"}\n`;\nconst StepNumber = styled.div`\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n height: 24px;\n width: 24px;\n margin: 4px;\n border-radius: 50%;\n background-color: ${COLORS.NEUTRAL_200};\n ${({ stepStyle }) =>\n stepStyle === \"current\" &&\n `\n border: 1.5px solid ${COLORS.HALO_BLUE};\n background-color: transparent;\n `}\n ${FONTS.SEMIBOLD_2};\n`;\n\n// This doesn't quite match any icons from the design system and doesn't appear to be used anywhere else\nconst Attention = (\n \n \n \n \n);\n","import { ReactNode } from \"react\";\nimport styled from \"styled-components\";\n\nimport { COLORS, FONTS } from \"@constants\";\nimport Button from \"../Buttons/Button\";\nimport Icon from \"../Icon\";\nimport BlankModal, { BlankModalProps } from \"../ModalBases/BlankModal\";\n\ninterface Props {\n message?: ReactNode;\n}\n\nconst ErrorModal = ({\n message,\n isOpen,\n onClose,\n}: Props & Pick) => {\n if (!isOpen || !message) return null;\n\n return (\n \n \n \n \n
\n {message}\n
\n \n \n \n \n
\n \n );\n};\n\nexport default ErrorModal;\n\nconst Content = styled.div`\n padding: 40px 40px 24px;\n`;\n\nconst Body = styled.div`\n display: grid;\n grid-template-columns: 44px 1fr;\n grid-gap: 12px;\n`;\n\nconst Message = styled.div`\n ${FONTS.HEADING_5_SEMIBOLD}\n line-height: 28px;\n color: ${COLORS.RED_600};\n`;\n\nconst ButtonContainer = styled.div`\n margin-top: 56px;\n width: 100%;\n display: flex;\n justify-content: flex-end;\n`;\n","import styled from \"styled-components\";\n\nimport { FONTS } from \"@constants\";\nimport Button from \"../Buttons/Button\";\nimport { IconName } from \"../Icon/Icon\";\nimport BlankModal, { BlankModalProps } from \"../ModalBases/BlankModal\";\n\ninterface Props {\n confirmButtonText?: string;\n onConfirm: () => void;\n confirmIconName: IconName;\n type?: \"positive\" | \"negative\";\n \"data-testid\"?: string;\n}\n\nconst SimpleConfirmationModal = ({\n children,\n isOpen,\n onConfirm,\n confirmIconName,\n onClose,\n headerText,\n subHeaderText,\n confirmButtonText,\n type = \"negative\",\n \"data-testid\": dataTestId,\n zIndexBase = 1000,\n}: Props &\n Pick<\n BlankModalProps,\n \"isOpen\" | \"onClose\" | \"headerText\" | \"subHeaderText\" | \"children\" | \"zIndexBase\"\n >) => {\n if (!isOpen) return null;\n\n return (\n \n \n {headerText}\n {subHeaderText}\n {children}\n \n \n \n {confirmButtonText ?? \"Confirm\"}\n \n \n \n \n );\n};\n\nexport default SimpleConfirmationModal;\n\nconst Content = styled.div`\n padding: 72px 80px 48px;\n`;\n\nconst HeaderText = styled.div`\n ${FONTS.HEADING_3_SEMIBOLD}\n margin: 0 0 16px;\n`;\n\nconst SubHeader = styled.div`\n ${FONTS.REGULAR_1}\n`;\n\nconst ButtonContainer = styled.div`\n margin-top: 56px;\n width: 100%;\n\n display: flex;\n gap: 16px;\n`;\n","import { STYLES } from \"@constants\";\nimport styled from \"styled-components\";\n\ntype Props = {\n content: string;\n};\n\nconst OneLineSpan = ({ content }: Props) => {\n return {content};\n};\n\nexport default OneLineSpan;\n\nconst Span = styled.span`\n ${STYLES.ONE_LINE_ALT}\n`;\n","import { Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport styled from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\n\ninterface Props {\n currentPage: number;\n setCurrentPage: (page: number) => void;\n totalPages: number;\n marginTop?: string | 0;\n}\n\nconst getPageButtonNumbers = (currentPage: number, totalPages: number): (number | string)[] => {\n const pageNumbers: (number | string)[] = Array.from({ length: totalPages }, (_, i) => i + 1);\n\n pageNumbers.filter((pageNumber) => Number(pageNumber) > 0 && Number(pageNumber) <= totalPages);\n\n if (currentPage + 4 < totalPages) {\n pageNumbers.splice(currentPage + 2, totalPages - (currentPage + 3), \"...\");\n }\n\n // This must come after the previous block\n if (currentPage > 5) {\n pageNumbers.splice(1, currentPage - 4, \"...\");\n }\n\n return pageNumbers;\n};\n\nconst Pagination = ({ currentPage, setCurrentPage, totalPages, marginTop = 0 }: Props) => {\n const pageNumbers = getPageButtonNumbers(currentPage, totalPages);\n\n return (\n \n {currentPage > 5 && (\n \n )}\n {pageNumbers.map((pageNumber) => (\n typeof pageNumber === \"number\" && setCurrentPage(pageNumber)}\n >\n {pageNumber}\n \n ))}\n {totalPages > currentPage + 4 && (\n \n )}\n \n );\n};\n\nexport default Pagination;\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n margin: 0 auto;\n margin-top: ${({ marginTop }) => marginTop};\n`;\nconst Button = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 40px;\n width: 40px;\n border-radius: 6px;\n border: none;\n background-color: ${({ isCurrent }) => (isCurrent ? COLORS.BLUE_LIGHT_300 : \"transparent\")};\n color: ${COLORS.HALO_BLUE};\n pointer-events: ${({ isCurrent, children }) =>\n isCurrent || children === \"...\" ? \"none\" : \"auto\"};\n ${({ isCurrent }) => (isCurrent ? FONTS.BOLD_2 : FONTS.MEDIUM_2)};\n &:active {\n background-color: ${COLORS.BLUE_LIGHT_400};\n }\n`;\n","import { Icon } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport styled from \"styled-components\";\n\ninterface Props {\n status:\n | \"active\"\n | \"inactive\"\n | \"coming soon\"\n | \"trial\"\n | \"complete\"\n | \"open call\"\n | \"open call paused\"\n | \"open call complete\";\n}\n\nconst RequestStatusIcon = ({ status }: Props) => {\n switch (status) {\n case \"coming soon\": {\n return (\n \n \n \n );\n }\n case \"trial\": {\n return (\n \n \n \n );\n }\n case \"active\": {\n return (\n \n \n \n );\n }\n case \"inactive\": {\n return (\n \n \n \n );\n }\n case \"complete\": {\n return (\n \n \n \n );\n }\n case \"open call\": {\n return (\n \n \n \n );\n }\n case \"open call paused\": {\n return (\n \n \n \n );\n }\n case \"open call complete\": {\n return (\n \n \n \n );\n }\n default: {\n return null;\n }\n }\n};\n\nexport default RequestStatusIcon;\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n height: 26px;\n min-width: 26px;\n width: 26px;\n border-radius: 50%;\n background-color: ${({ color }) => color};\n`;\n","import { Tag, TagTooltip } from \"@components/library\";\nimport { COLORS } from \"@constants\";\nimport { RootState } from \"@redux/store\";\nimport { ReactElement, cloneElement, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { v4 as uuidv4 } from \"uuid\";\n\ninterface Props {\n children: ReactElement[];\n maxLines?: number;\n maxTags?: number;\n size?: \"xs\" | \"sm\";\n}\n\n// TODO: (TGAP4, justinpchang) Consider consolidating this component and TagWrapper\n\nconst XMoreWrapper = ({ children, maxLines = 1, maxTags, size = \"sm\" }: Props) => {\n const width = useSelector((state: RootState) => state.window.width);\n\n const [invisibleTags, setInvisibleTags] = useState([]);\n const [displayedTags, setDisplayedTags] = useState([]);\n const [debouncedWidth, setDebouncedWidth] = useState(width);\n\n const uniqueId = uuidv4();\n\n // First we need to paint the tags to the DOM with added ids in order to be able to getElementById and\n // calculate the offsetWidths. All of the tags will always exist invisibly so that they can be used for\n // calculations, then another set of just the visible tags will be displayed on top\n useEffect(() => {\n const tagsWithIds: ReactElement[] = [];\n\n for (let i = 0; i < children.length; i += 1) {\n const tagWithId = cloneElement(children[i], {\n id: `${uniqueId}-${children[i].key}`,\n });\n\n tagsWithIds.push(tagWithId);\n }\n\n setInvisibleTags(tagsWithIds);\n }, [children]);\n\n // We debounce the calculation of the tags when the user resizes in order to avoid large CPU spikes\n let timer: ReturnType;\n useEffect(() => {\n clearInterval(timer);\n timer = setTimeout(() => setDebouncedWidth(width), 50);\n }, [width]);\n\n useEffect(() => {\n const firstTag = document.getElementById(invisibleTags[0]?.props.id);\n const firstTagTopOffset = window.pageYOffset + Number(firstTag?.getBoundingClientRect().top);\n\n const tagsToDisplay: ReactElement[] = [];\n const finalRowTags: ReactElement[] = [];\n\n // First we select the tags that would fit in the given number of rows if there weren't an \"X More\" tag\n for (let i = 0; i < invisibleTags.length; i += 1) {\n const currentTag = document.getElementById(invisibleTags[i]?.props.id);\n const currentTagTopOffset =\n window.pageYOffset + Number(currentTag?.getBoundingClientRect().top);\n\n if (currentTagTopOffset && firstTagTopOffset) {\n // Small tags have a height of 24 and margin-top of 6px\n const currentRow = Math.round((currentTagTopOffset - firstTagTopOffset) / 30 + 1);\n\n if (currentRow <= maxLines && (!maxTags || tagsToDisplay.length < maxTags)) {\n tagsToDisplay.push(invisibleTags[i]);\n\n if (currentRow === maxLines) {\n finalRowTags.push(invisibleTags[i]);\n }\n } else {\n break;\n }\n }\n }\n\n const xMoreTagElement = document.getElementById(`${uniqueId}-x-more`);\n\n if (xMoreTagElement && tagsToDisplay.length === children.length) {\n xMoreTagElement.style.display = \"none\";\n } else if (xMoreTagElement) {\n xMoreTagElement.style.display = \"inline-flex\";\n\n const finalRowTagWidths: number[] = [];\n\n for (const tag of finalRowTags) {\n const tagElement = document.getElementById(tag.props.id);\n\n if (tagElement?.offsetWidth) {\n finalRowTagWidths.push(tagElement.offsetWidth);\n }\n }\n\n const container = document.getElementById(`${uniqueId}-container`);\n const containerWidth = Number(container?.offsetWidth);\n\n let remainingTagsCount = children.length - tagsToDisplay.length;\n\n for (let i = finalRowTagWidths.length - 1; i >= 0; i -= 1) {\n // Tags have a margin-right of 8px\n const finalRowTotalTagWidth = finalRowTagWidths.reduce((a, b) => a + b + 8) + 8;\n\n if (xMoreTagElement) {\n xMoreTagElement.textContent = `${remainingTagsCount} more`;\n }\n\n const xMoreTagWidth = xMoreTagElement.offsetWidth;\n\n // There seems to be a CSS rounding issue which is solved by subtracting an extra px for each\n // tag in the final row (i + 1)\n if (finalRowTotalTagWidth + xMoreTagWidth > containerWidth - (i + 1)) {\n remainingTagsCount += 1;\n finalRowTagWidths.pop();\n tagsToDisplay.pop();\n } else {\n break;\n }\n }\n }\n\n setDisplayedTags(tagsToDisplay);\n }, [invisibleTags, debouncedWidth]);\n\n const hiddenTags = children.slice(displayedTags.length);\n\n return (\n \n {invisibleTags}\n {displayedTags}\n {children.length > 0 && (\n \n {/* This needs to be in its own div to prevent the not(:last-of-type) styles */}\n \n \n \n \n )}\n \n );\n};\n\nexport default XMoreWrapper;\n\nconst Container = styled.div`\n display: flex;\n flex-wrap: ${({ maxLines }) => (maxLines > 1 ? \"wrap\" : \"nowrap\")};\n position: relative;\n margin-top: -6px;\n & > div {\n margin-top: 6px;\n }\n`;\nconst InvisibleTags = styled.div`\n visibility: hidden;\n position: absolute;\n top: -6px;\n & > div {\n margin-top: 6px;\n }\n`;\nconst XMore = styled.div`\n display: flex;\n &:hover {\n cursor: default;\n }\n`;\n","// Some things to note:\n// 1. Order users[] before passing them as props\n// 2. displayedUserCount is a count for how many users to be shown in thumbnail\n// 3. set displayedUserCount to 1 if you are working with a size 'md' thumbnail (based on designs)\n\nimport { COLORS } from \"@constants\";\nimport styled, { css } from \"styled-components\";\nimport ProfilePicture from \"../ProfilePicture/ProfilePicture\";\n\ninterface Props {\n users: {\n id: number;\n image: { medium: { url: string | null } };\n name: string;\n }[];\n size: \"xs\" | \"sm\" | \"md\" | \"lg\";\n displayedUserCount?: 1 | 2 | 3 | 4; // default -> 2\n single?: boolean; // default -> false\n}\n\nconst getMargin = (index: number, size: string) => {\n // note: only size medium should have different margins\n if (index === 0 && size !== \"md\") {\n return index;\n } else if (size === \"md\") {\n return \"14px 0 0 0\";\n }\n return \"0 0 0 -9px\";\n};\n\nconst Thumbnail = ({ users, size, displayedUserCount = 2, single = false }: Props) => {\n if (single) {\n return ;\n }\n const displayedUsers = users.slice(0, size === \"md\" ? 1 : displayedUserCount);\n const shouldShowAdditionalUsers = (size === \"md\" ? 1 : displayedUserCount) < users.length;\n\n return (\n \n {displayedUsers.map((user, index) => {\n return (\n
\n \n
\n );\n })}\n {shouldShowAdditionalUsers && (\n \n +{users.length - (size === \"md\" ? 1 : displayedUserCount)}\n \n )}\n
\n );\n};\n\nexport default Thumbnail;\n\nconst MultiReviewersContainter = styled.div`\n position: relative;\n display: inline-flex;\n justify-content: center;\n text-align: center;\n flex-direction: row;\n float: left;\n align-items: ${(props) => (props.size === \"md\" ? \"unset\" : \"center\")};\n height: ${(props) => (props.size === \"md\" ? \"50px\" : \"auto\")};\n width: ${(props) => (props.size === \"md\" ? \"50px\" : \"auto\")};\n`;\n\nconst AdditionalParticipants = styled.div`\n font-weight: 500;\n border: 1px solid ${COLORS.WHITE};\n background: ${COLORS.NEUTRAL_200};\n border-radius: 50%;\n color: ${COLORS.BLACK};\n display: flex;\n justify-content: center;\n align-items: center;\n margin-left: -9px;\n ${({ size }) => {\n switch (size) {\n case \"xs\": {\n return css`\n font-size: 12px;\n height: 28px;\n width: 28px;\n `;\n }\n case \"sm\": {\n return css`\n font-size: 16px;\n height: 36px;\n width: 36px;\n `;\n }\n case \"md\": {\n return css`\n font-size: 16px;\n height: 36px;\n width: 36px;\n margin-left: -21px;\n `;\n }\n case \"lg\": {\n return css`\n font-size: 23px;\n font-weight: 600;\n height: 50px;\n width: 50px;\n `;\n }\n }\n }};\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport { ReactNode, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n children: ReactNode;\n content: string | ReactNode;\n width?: string;\n arrowOffsetTop?: string | 0;\n tooltipOffsetTop?: string | 0;\n \"data-testid\"?: string;\n}\n\nconst InputTooltip = ({\n children,\n content,\n width,\n arrowOffsetTop,\n tooltipOffsetTop,\n \"data-testid\": dataTestId,\n}: Props) => {\n const [isInputFocused, setIsInputFocused] = useState(false);\n\n return (\n setIsInputFocused(true)} onBlur={() => setIsInputFocused(false)}>\n {children}\n \n \n \n {content}\n \n \n \n );\n};\n\nexport default InputTooltip;\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n`;\nconst TooltipContainer = styled.div`\n display: ${({ isInputFocused }) => (isInputFocused ? \"initial\" : \"none\")};\n position: absolute;\n right: -16px;\n transform: translateX(100%);\n ${({ top }) => top && `top: ${top}`};\n`;\nconst Tooltip = styled.div`\n position: relative;\n background-color: ${COLORS.BLACK};\n padding: 16px;\n border-radius: 8px;\n color: ${COLORS.WHITE};\n ${FONTS.REGULAR_2};\n ${({ width }) => width && `width: ${width}`};\n`;\nconst Arrow = styled.div`\n position: absolute;\n left: -7px;\n top: ${({ top }) =>\n top ?? \"44px\"}; // 44px aligns with the top row of an input that includes a label\n border-top: 8px solid transparent;\n border-bottom: 8px solid transparent;\n border-right: 8px solid ${COLORS.BLACK};\n width: 0;\n height: 0;\n`;\n","import { Tooltip } from \"@components/library\";\nimport { FONTS } from \"@constants\";\nimport { RootState } from \"@redux/store\";\nimport { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\n\ninterface Props {\n text: ReactNode;\n lines?: number;\n font?: string;\n textWidth?: string;\n withTooltip?: boolean;\n tooltipWidth?: string;\n tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\nconst TruncatedText = ({\n text,\n lines = 1,\n font = FONTS.REGULAR_2,\n textWidth,\n withTooltip = true,\n tooltipWidth,\n tooltipPosition = \"top\",\n}: Props) => {\n const [isTruncated, setIsTruncated] = useState(false);\n\n const windowWidth = useSelector((state: RootState) => state.window.width);\n\n const textRef = useRef(null);\n\n useEffect(() => {\n if (lines > 1) {\n setIsTruncated(Number(textRef.current?.offsetHeight) < Number(textRef.current?.scrollHeight));\n } else {\n setIsTruncated(Number(textRef.current?.offsetWidth) < Number(textRef.current?.scrollWidth));\n }\n }, [windowWidth]);\n\n let textElement = (\n \n {text}\n \n );\n\n if (isTruncated && withTooltip) {\n textElement = (\n \n {textElement}\n \n );\n }\n\n if (!text) return null;\n\n return isTruncated ? {textElement} : textElement;\n};\n\nexport default TruncatedText;\n\nconst Container = styled.div`\n width: ${({ width }) => width};\n`;\nconst Text = styled.div`\n ${({ font }) => font};\n ${({ lines }) =>\n // Two different mechanics are used to truncate the text, since text-overflow always truncates mid-word, which\n // causes the text to take up the entire space allotted and is generally desirable, whereas webkit-line-clamp\n // does not. However, with text-overflow, we cannot specify the number of lines allowed\n lines > 1\n ? `\n display: -webkit-box;\n -webkit-line-clamp: ${lines};\n -webkit-box-orient: vertical;\n overflow: hidden;\n `\n : `\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n `}\n`;\n","import { FONTS, STYLES } from \"@constants\";\nimport styled from \"styled-components\";\nimport Thumbnail from \"../Thumbnail\";\n\ninterface Props {\n users: {\n id: number;\n name: string;\n image: { medium: { url: string | null } };\n location: string;\n }[];\n}\n\nconst MultiUserPreview = ({ users }: Props) => {\n return (\n \n \n
\n \n {users.map((user, index) => {\n return (\n \n {user.name}\n {/* 4 total can be displayed */}\n {index !== users.length - 1 && index < 3 && \", \"}\n \n );\n })}\n \n {users[0].location}\n
\n
\n );\n};\n\nexport default MultiUserPreview;\n\nconst Container = styled.div`\n display: grid;\n grid-template-columns: 36px 1fr;\n grid-gap: 0 24px;\n`;\nconst StyledName = styled.span`\n ${FONTS.SEMIBOLD_2};\n max-width: 210px;\n white-space: pre;\n display: inline-block;\n`;\nconst UserAssociation = styled.div`\n ${FONTS.REGULAR_3};\n ${STYLES.ONE_LINE};\n`;\nconst NameContainer = styled.div`\n max-width: 241px;\n ${STYLES.ONE_LINE};\n line-height: normal;\n -webkit-line-clamp: 2;\n`;\n","import { TextButton, TruncatedText } from \"@components/library\";\nimport { COLORS, FONTS, STYLES } from \"@constants\";\nimport { setMessengerState } from \"@redux/actions/messengerActions\";\nimport { MessengerData } from \"@redux/reducers/messengerReducer\";\nimport { RootState } from \"@redux/store\";\nimport { User } from \"@tsTypes/schema\";\nimport { SponsorLicenseType } from \"@tsTypes/sponsorProfiles\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { ReactNode, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport ProfilePicture from \"../ProfilePicture/ProfilePicture\";\nimport { LicenseTag, SuperAdminTag } from \"../Tags/users\";\n\ninterface BaseProps {\n user: Pick & {\n name: string;\n title?: string;\n location?: string;\n profile_info?: {\n title: string | null;\n location?: string;\n license?: SponsorLicenseType;\n is_super_admin?: boolean;\n };\n };\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n tooltipPosition?: \"top\" | \"bottom\" | \"left\" | \"right\";\n}\n\ninterface ScientistProps extends BaseProps {\n userRole?: UserRole.SCIENTIST;\n isLinkDisabled?: boolean;\n withMessageButton?: boolean;\n messengerData?: MessengerData;\n}\n\ninterface SponsorProps extends BaseProps {\n userRole: UserRole.SPONSOR;\n isUserHidden?: boolean;\n showSponsorRoles?: boolean;\n isExternalLead?: boolean;\n}\n\nconst UserPreview = ({\n user,\n size = \"sm\",\n userRole = UserRole.SCIENTIST,\n tooltipPosition = \"top\",\n ...props\n}: ScientistProps | SponsorProps) => {\n const [isMessageButtonHovered, setIsMessageButtonHovered] = useState(false);\n\n const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n\n const dispatch = useDispatch();\n\n const { isLinkDisabled, withMessageButton, messengerData } = props as ScientistProps;\n const { isUserHidden, showSponsorRoles, isExternalLead } = props as SponsorProps;\n\n const handleMessageClick = (e) => {\n e.preventDefault();\n\n if (messengerData) {\n dispatch(setMessengerState(messengerData));\n }\n };\n\n let association: ReactNode;\n if (userRole === UserRole.SPONSOR) {\n association = (\n \n {isUserHidden ? \"Reviewer\" : user.profile_info?.title ?? user.title}\n \n );\n }\n\n if (userRole === UserRole.SCIENTIST) {\n association = (\n {\n if (isExternalLead && currentUser.id !== user.id) return \"(Name hidden from innovator)\";\n return `${user.profile_info?.title ?? user.title ?? \"Researcher\"}, ${\n user.profile_info?.location ?? user.location\n }`;\n })()}\n font={size === \"sm\" || size === \"md\" ? FONTS.REGULAR_3 : FONTS.REGULAR_2}\n tooltipPosition={tooltipPosition}\n />\n );\n }\n\n const asLink = userRole === UserRole.SCIENTIST && !isLinkDisabled && \"profile_id\" in user;\n\n return (\n \n \n \n \n \n \n {isUserHidden ? \"Team Member\" : user.name}\n \n {withMessageButton && messengerData ? (\n setIsMessageButtonHovered(true)}\n onMouseLeave={() => setIsMessageButtonHovered(false)}\n onClick={(e) => handleMessageClick(e)}\n data-testid=\"user-preview-message-button\"\n />\n ) : (\n showSponsorRoles && (\n <>\n {user.profile_info?.is_super_admin && (\n \n \n \n )}\n {Boolean(user?.profile_info?.license) && (\n \n \n \n )}\n \n )\n )}\n \n {association}\n \n \n \n );\n};\n\nexport default UserPreview;\n\nconst Container = styled.div`\n width: auto;\n line-height: normal;\n`;\nconst StyledLink = styled(Link)`\n display: inline-grid;\n grid-template-columns: ${({ size }) => {\n switch (size) {\n case \"sm\": {\n return \"36px 1fr\";\n }\n case \"md\": {\n return \"50px 1fr\";\n }\n case \"lg\": {\n return \"68px 1fr\";\n }\n case \"xl\": {\n return \"96px 1fr\";\n }\n }\n }};\n grid-gap: ${({ size }) => {\n switch (size) {\n case \"sm\":\n case \"md\":\n return \"0 8px\";\n case \"lg\":\n case \"xl\":\n return \"0 16px\";\n }\n }};\n align-items: center;\n width: auto;\n color: ${COLORS.BLACK};\n &:hover {\n text-decoration: none;\n color: ${COLORS.BLACK};\n & .name {\n text-decoration: ${({ asLink, isMessageButtonHovered }) =>\n asLink && !isMessageButtonHovered ? \"underline\" : \"none\"};\n }\n }\n &:focus {\n text-decoration: none;\n color: ${COLORS.BLACK};\n }\n`;\nconst Text = styled.div`\n min-width: 0;\n`;\nconst TopRow = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n`;\nconst SuperAdminTagContainer = styled.div`\n margin-bottom: -4px;\n pointer-events: none;\n`;\nconst PremiumTagContainer = styled.div`\n margin-bottom: -4px;\n pointer-events: none;\n`;\nconst Name = styled.div`\n ${STYLES.ONE_LINE}\n ${({ size }) => {\n switch (size) {\n case \"sm\":\n case \"md\": {\n return FONTS.TAG_SEMIBOLD_1;\n }\n case \"lg\":\n case \"xl\": {\n return FONTS.HEADING_5_SEMIBOLD;\n }\n }\n }};\n margin-top: 4px;\n`;\nconst UserAssociation = styled.div`\n ${STYLES.TWO_LINES}\n ${({ size }) => {\n switch (size) {\n case \"sm\":\n case \"md\": {\n return FONTS.REGULAR_3;\n }\n case \"lg\":\n case \"xl\": {\n return FONTS.REGULAR_2;\n }\n }\n }};\n`;\n","import { TourIdentifier } from \"@tsTypes/__generated__/enums/tour_identifier\";\n\n// Note: Make sure to add new flags to `app/services/flipper_gates.rb` too!\nconst FEATURE_FLAGS = [\n \"UNCLAIMED_COMPANY_PAGE\",\n \"SIGN_OUT_ON_ONBOARDING\",\n \"SESSION_TIMEOUT\",\n \"COMPANY_MARKETPLACE_FILTER\",\n \"NEW_PROPOSAL_FORM_UI_WITH_REQUIREMENTS\",\n \"PEPSICO_REVIEWER_DASHBOARD_SORTING\",\n \"RFP_FORM_V2\",\n \"MARKETPLACE_PARTNER_TYPE_FILTER\",\n \"COMMERCIAL_APPLICATIONS\",\n \"RFP_FORM_V2_AUDIENCE\",\n \"KEYWORD_AI_AUTO_POPULATION\",\n] as const;\n\n// Export object of { [name as symbol]: boolean }\nexport default FEATURE_FLAGS.reduce(\n (obj, flag) => ({ ...obj, [flag]: gon.feature_flags?.includes(flag) }),\n {}\n) as { [F in (typeof FEATURE_FLAGS)[number]]: boolean };\n\n/**\n * Tours that are enabled by default.\n */\nconst ENABLED_TOURS = [TourIdentifier.PROPOSAL_REVIEW_SYSTEM_FEEDBACK_DEADLINE_V2_2024_10_31];\nexport const isTourEnabled = (tour: TourIdentifier): boolean =>\n ENABLED_TOURS.includes(tour) || gon.feature_flags?.includes(`TOUR_${tour}`);\n","import COLORS from \"./__generated__/base_colors\";\n\ntype ExtendedColors = typeof COLORS & {\n BLUE_GRADIENT: string;\n};\n\nconst extendedColors: ExtendedColors = {\n ...COLORS,\n BLUE_GRADIENT: \"linear-gradient(91.99deg, #0068a7 0%, #009cea 100%)\",\n};\n\nexport default extendedColors;\n","/* eslint no-unused-vars: 0 */\n\n/**\n * This file was automatically generated by lib/tasks/ruby_to_typescript.rake\n * DO NOT MODIFY IT BY HAND!\n */\nconst COLORS = {\n BLACK: \"#232D38\",\n BLUE_450: \"#2BB3F6\",\n BLUE_500: \"#009CEA\",\n BLUE_600: \"#0088D6\",\n BLUE_650: \"#0C76C4\",\n BLUE_700: \"#006AB8\",\n BLUE_750: \"#0068A7\",\n BLUE_900: \"#004980\",\n BLUE_LIGHT_50: \"#F9FDFF\",\n BLUE_LIGHT_100: \"#F5FBFF\",\n BLUE_LIGHT_250: \"#F2F9FF\",\n BLUE_LIGHT_300: \"#EEF6FD\",\n BLUE_LIGHT_350: \"#DEF0FF\",\n BLUE_LIGHT_400: \"#D9EEFF\",\n BLUE_LIGHT_500: \"#C6E5FF\",\n BLUE_LIGHT_600: \"#93CDFF\",\n BLUE_LIGHT_650: \"#7DC2FD\",\n BLUE_LIGHT_700: \"#6BB1EC\",\n GREEN: \"#1A9A1F\",\n GREEN_50: \"#EFFEF1\",\n GREEN_100: \"#DDF4DE\",\n GREEN_200: \"#CEF6D0\",\n GREEN_300: \"#B0F2B2\",\n GREEN_400: \"#8CED90\",\n GREEN_500: \"#59CD5E\",\n GREEN_600: \"#38B83D\",\n GREEN_700: \"#1A9A1F\",\n GREEN_750: \"#108815\",\n GREEN_800: \"#007C01\",\n HALO_BLUE: \"#009CEA\",\n NEUTRAL_0: \"#FFFFFF\",\n NEUTRAL_50: \"#F8F9FC\",\n NEUTRAL_100: \"#EFF3F7\",\n NEUTRAL_200: \"#E4EBF1\",\n NEUTRAL_250: \"#DCE2E8\",\n NEUTRAL_300: \"#D1D7DB\",\n NEUTRAL_350: \"#C5CAD2\",\n NEUTRAL_400: \"#9CA3AF\",\n NEUTRAL_500: \"#6B7280\",\n NEUTRAL_600: \"#4B5563\",\n NEUTRAL_700: \"#374151\",\n NEUTRAL_800: \"#232D38\",\n NEUTRAL_900: \"#1E252E\",\n NEUTRAL_950: \"#111827\",\n ORANGE: \"#D47200\",\n ORANGE_50: \"#FFF9E9\",\n ORANGE_100: \"#FFF3D3\",\n ORANGE_200: \"#FFEAB1\",\n ORANGE_300: \"#FFD88B\",\n ORANGE_400: \"#FCC457\",\n ORANGE_500: \"#FAB228\",\n ORANGE_600: \"#F89B30\",\n ORANGE_700: \"#E7820E\",\n ORANGE_800: \"#D47200\",\n ORANGE_900: \"#AF5000\",\n PINK_50: \"#FDF5FD\",\n PINK_100: \"#F9E1FA\",\n PINK_200: \"#F6CFEC\",\n PINK_300: \"#E699C9\",\n PINK_400: \"#DC75B1\",\n PINK_500: \"#D35198\",\n PINK_600: \"#C92D80\",\n PINK_700: \"#B22474\",\n PINK_800: \"#9A1A67\",\n RED: \"#DE3957\",\n RED_50: \"#FFF6F8\",\n RED_100: \"#FFE6EB\",\n RED_200: \"#FFCED6\",\n RED_300: \"#FDBFC9\",\n RED_500: \"#DE3957\",\n RED_600: \"#C9334E\",\n RED_700: \"#AC2B42\",\n WHITE: \"#FFFFFF\",\n};\n\nexport default COLORS;\n","const PROPOSAL_STATUSES = {\n // Order\n PENDING: -1, // -1\n OPEN: 0, // 0\n QUALIFIED: 3, // 3\n SHORTLISTED: 4, // 4\n FINALIST: 5, // 5\n DECLINED: 2, // 2\n FUNDED: 6,\n};\n\nconst PROPOSAL_STATUS_TO_TAB = {\n 0: 0,\n 3: 1,\n 4: 2,\n 5: 3,\n 2: 4,\n};\n\nexport { PROPOSAL_STATUS_TO_TAB };\nexport default PROPOSAL_STATUSES;\n","export default {\n APPSIGNAL_FRONTEND_API_KEY: \"196ab6a0-37c5-4ea1-a9ca-a3a710f016ea\",\n ABLY_FRONTEND_API_KEY: \"MG9GsQ.7B7weA:45e9tRNFuuXFfp8Dq36S7trdAvwlJBVFjc5RE7lGdZs\",\n GOOGLE_API_KEY: \"AIzaSyCRL82pWwuBC7XbgvKwENFGgoO0OM_PD7M\",\n};\n","const RFP_MAX_CHAR_COUNT = {\n OPPROTUNITY_TITLE: 75,\n BACKGROUND: 1500,\n INTERESTS: 500,\n INVITE_MESSAGE: 1500,\n RFP_FIELDS_GENERAL: 350,\n};\n\nexport default RFP_MAX_CHAR_COUNT;\n","enum ABLY_CHANNELS {\n NEW_MESSAGE = \"new_message\",\n}\n\nexport default ABLY_CHANNELS;\n","const BLOCKED_EMAIL_DOMAINS = [\n \"gmail.com\",\n \"yahoo.com\",\n \"hotmail.com\",\n \"aol.com\",\n \"msn.com\",\n \"me.com\",\n \"icloud.com\",\n \"ymail.com\",\n \"att.net\",\n \"verizon.net\",\n \"outlook.com\",\n \"proton.com\",\n \"qq.com\",\n \"163.com\",\n \"mac.com\",\n \"proton.me\",\n \"protonmail.com\",\n \"pm.me\",\n \"yahoo.co.uk\",\n];\n\nexport default BLOCKED_EMAIL_DOMAINS;\n","export default {\n HALO_ID: 1,\n BASF_ID: 1710,\n PEPSICO_ID: 1667,\n FUEL_ID: 2772,\n};\n","import beams from \"@images/headers/beams.png\";\nimport drops from \"@images/headers/drops.png\";\nimport hoop from \"@images/headers/hoop.png\";\nimport lines from \"@images/headers/lines.png\";\nimport splash from \"@images/headers/splash.png\";\nimport stars from \"@images/headers/stars.png\";\n\nconst HEADERS = {\n 0: beams,\n 1: drops,\n 2: hoop,\n 3: lines,\n 4: splash,\n 5: stars,\n};\n\nexport default HEADERS;\n","import { getData } from \"country-list\";\n\ninterface CountryData {\n code: string;\n name: string;\n}\n\nconst countriesData: CountryData[] = getData();\n\nconst uk = countriesData.find((country) => country.code === \"GB\");\n\nif (uk) {\n uk.name = \"United Kingdom\";\n}\n\ncountriesData.sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n } else if (a.name > b.name) {\n return 1;\n }\n return 0;\n});\n\nconst COUNTRY_OPTIONS = countriesData.map((countryData) => ({\n value: countryData.code,\n label: countryData.name,\n}));\n\nexport default COUNTRY_OPTIONS;\n","export default {\n WITH_DOWNLOAD_PROPOSAL_AS_PDF: process.env.WITH_DOWNLOAD_PROPOSAL_AS_PDF === \"true\",\n HEROKU_SLUG_COMMIT: process.env.HEROKU_SLUG_COMMIT,\n};\n","export default {\n HEADING_1_BOLD: `\n font-weight: 700;\n font-size: 38px;\n line-height: 1.24;\n`,\n HEADING_1_SEMIBOLD: `\n font-weight: 600;\n font-size: 38px;\n line-height: 1.24;\n `,\n HEADING_2_SEMIBOLD: `\n font-weight: 600;\n font-size: 32px;\n line-height: 1.24;\n `,\n HEADING_3_SEMIBOLD: `\n font-weight: 600;\n font-size: 26px;\n line-height: 32px;\n `,\n HEADING_3_REGULAR: `\n font-weight: 400;\n font-size: 26px;\n line-height: 1.6;\n`,\n HEADING_4_BOLD: `\n font-weight: 700;\n font-size: 22px;\n line-height: 28px;\n `,\n HEADING_4_SEMIBOLD: `\n font-weight: 600;\n font-size: 22px;\n line-height: 28px;\n `,\n HEADING_4_REGULAR: `\n font-weight: 400;\n font-size: 22px;\n line-height: 28px;\n `,\n HEADING_5_BOLD: `\n font-weight: 700;\n font-size: 18px;\n line-height: 28px;\n `,\n HEADING_5_SEMIBOLD: `\n font-weight: 600;\n font-size: 18px;\n line-height: 24px;\n `,\n HEADING_5_MEDIUM: `\n font-weight: 500;\n font-size: 18px;\n line-height: 28px;\n`,\n HEADING_5_REGULAR: `\n font-weight: 400;\n font-size: 18px;\n line-height: 1.7;\n`,\n HEADING_JUMBO: `\n font-weight: 700;\n font-size: 46px;\n line-height: 57px;\n `,\n HEADING_BANNER: `\n font-weight: 700;\n font-size: 64px;\n line-height: 1.2;\n letter-spacing: -0.03em;\n `,\n REGULAR_1: `\n font-weight: 400;\n font-size: 16px;\n line-height: 1.7;\n `,\n REGULAR_2: `\n font-weight: 400;\n font-size: 14px;\n line-height: 1.7;\n `,\n REGULAR_3: `\n font-weight: 400;\n font-size: 12px;\n line-height: 1.7;\n `,\n REGULAR_4: `\n font-weight: 400;\n font-size: 10px;\n line-height: 18px;\n `,\n MEDIUM_1: `\n font-weight: 500;\n font-size: 16px;\n line-height: 1.7;\n `,\n MEDIUM_2: `\n font-weight: 500;\n font-size: 14px;\n line-height: 1.7;\n `,\n MEDIUM_3: `\n font-weight: 500;\n font-size: 12px;\n line-height: 1.7;\n `,\n SEMIBOLD_1: `\n font-weight: 600;\n font-size: 16px;\n line-height: 1.5;\n `,\n SEMIBOLD_2: `\n font-weight: 600;\n font-size: 14px;\n line-height: 1.5;\n `,\n SEMIBOLD_3: `\n font-weight: 600;\n font-size: 12px;\n line-height: 1.7;\n `,\n SEMIBOLD_4: `\n font-weight: 600;\n font-size: 10px;\n line-height: 18px;\n `,\n BOLD_1: `\n font-weight: 700;\n font-size: 16px;\n line-height: 1.7;\n `,\n BOLD_2: `\n font-weight: 700;\n font-size: 14px;\n line-height: 1.7;\n `,\n BOLD_3: `\n font-weight: 700;\n font-size: 12px;\n line-height: 1.7;\n `,\n BUTTON_1: `\n font-weight: 500;\n font-size: 16px;\n line-height: 19px;\n letter-spacing: 0.01em;\n `,\n BUTTON_2: `\n font-weight: 500;\n font-size: 14px;\n line-height: 17px;\n letter-spacing: 0.01em;\n `,\n BUTTON_3: `\n font-weight: 500;\n font-size: 12px;\n line-height: 15px;\n `,\n BUTTON_4: `\n font-weight: 500;\n font-size: 10px;\n line-height: 12px;\n `,\n TAG_MEDIUM_1: `\n font-weight: 500;\n font-size: 14px;\n line-height: 17px;\n `,\n TAG_MEDIUM_2: `\n font-weight: 500;\n font-size: 12px;\n line-height: 15px;\n `,\n TAG_MEDIUM_3: `\n font-weight: 500;\n font-size: 10px;\n line-height: 12px;\n `,\n TAG_SEMIBOLD_1: `\n font-weight: 600;\n font-size: 14px;\n line-height: 17px;\n `,\n TAG_SEMIBOLD_2: `\n font-weight: 600;\n font-size: 12px;\n line-height: normal;\n `,\n TAG_BOLD_2: `\n font-weight: 700;\n font-size: 12px;\n line-height: 15px;\n `,\n TAG_BOLD_3: `\n font-weight: 700;\n font-size: 10px;\n line-height: 12px;\n `,\n TAG_REGULAR_1: `\n font-weight: 400;\n font-size: 14px;\n line-height: 17px;\n `,\n TAG_ACCENT: `\n font-weight: 600;\n font-size: 10px;\n line-height: 12px;\n letter-spacing: 0.08em;\n `,\n};\n\ninterface Font {\n fontWeight: 400 | 500 | 600 | 700;\n fontSize: number;\n lineHeight: number | string;\n}\n\n// Necessary while we still use Aphrodite, but eventually should be phased out\nexport const JS_FONTS: Record = {\n HEADING_1_SEMIBOLD: {\n fontWeight: 600,\n fontSize: 38,\n lineHeight: 1.24,\n },\n HEADING_2_SEMIBOLD: {\n fontWeight: 600,\n fontSize: 32,\n lineHeight: 1.24,\n },\n HEADING_3_SEMIBOLD: {\n fontWeight: 600,\n fontSize: 26,\n lineHeight: \"32px\",\n },\n HEADING_4_SEMIBOLD: {\n fontWeight: 600,\n fontSize: 22,\n lineHeight: \"28px\",\n },\n HEADING_5_SEMIBOLD: {\n fontWeight: 500,\n fontSize: 18,\n lineHeight: 1.4,\n },\n REGULAR_1: {\n fontWeight: 400,\n fontSize: 16,\n lineHeight: 1.7,\n },\n REGULAR_2: {\n fontWeight: 400,\n fontSize: 14,\n lineHeight: 1.7,\n },\n REGULAR_3: {\n fontWeight: 400,\n fontSize: 12,\n lineHeight: 1.7,\n },\n REGULAR_4: {\n fontWeight: 400,\n fontSize: 10,\n lineHeight: \"18px\",\n },\n MEDIUM_1: {\n fontWeight: 500,\n fontSize: 16,\n lineHeight: 1.7,\n },\n MEDIUM_2: {\n fontWeight: 500,\n fontSize: 14,\n lineHeight: 1.7,\n },\n MEDIUM_3: {\n fontWeight: 500,\n fontSize: 12,\n lineHeight: 1.7,\n },\n SEMIBOLD_1: {\n fontWeight: 600,\n fontSize: 16,\n lineHeight: 1.5,\n },\n SEMIBOLD_2: {\n fontWeight: 600,\n fontSize: 14,\n lineHeight: 1.5,\n },\n BOLD_3: {\n fontWeight: 700,\n fontSize: 12,\n lineHeight: 1.7,\n },\n BUTTON_2: {\n fontWeight: 500,\n fontSize: 14,\n lineHeight: \"normal\",\n },\n};\n","const PORTAL_ID = \"6895929\";\n// Research follow\nconst FORM_ID = \"b7f36ac2-2f23-4891-8713-22f1fc2eb7a5\";\n\nconst HUBSPOT = {\n PORTAL_ID,\n FORM_ID,\n};\n\nexport default HUBSPOT;\n","export default {\n HALO_INTRO_LINK: \"https://meetings.hubspot.com/mariko-hodgkinson/connect-with-mariko\",\n GET_MORE_SEATS: \"https://meetings.hubspot.com/mariko-hodgkinson/connect-with-mariko\",\n ROLES_AND_PERMISSIONS_FAQS: \"/\", // TODO: (justinpchang) Fill in\n};\n","const PROPOSAL_TYPES = {\n NORMAL: \"\",\n MATERIALS: \"ChemicalCompoundProposal\",\n};\n\nexport default PROPOSAL_TYPES;\n","const OTHER_SUBMISSION_BULLETS = [\n \"Your proposal is sent to the sponsor\",\n \"Sponsor reviews your proposal and profile\",\n \"Sponsor follows up with next steps or feedback\",\n];\n\nconst CORTEVA = {\n UNIVERSITY_SUBMISSION_BULLETS: OTHER_SUBMISSION_BULLETS,\n STARTUP_SUBMISSION_BULLETS: OTHER_SUBMISSION_BULLETS,\n COMPOUND_EXAMPLES: [\n \"Spirocyclic compounds synthesized through novel methodology\",\n \"Heterocycles with novel substitution that is unprecedented or difficult to access\",\n \"Building block is a bioisostereo for phenyl motif\",\n ],\n DESIGN_PRINCIPLE_EXAMPLES: [\n \"The compounds have been produced using ACS green chemistry principles.\",\n \"The compounds have been synthesized using from nature's chiral pool\",\n \"Unique building blocks with high sp3 character.\",\n ],\n RATIONALE_EXAMPLES: [\n \"Methodologies that follow the green chemistry principles can be potentially scaled up in a sustainable fashion.\",\n \"Utilizing nature's chiral pool potentially removes the need for enantiomer separation or enantioselective methods.\",\n \"Utilizing building blocks with high sp3 character will potentially lead to more sustainable and potent agrochemicals.\",\n ],\n};\n\nconst TESTING4AG = {\n UNIVERSITY_SUBMISSION_BULLETS: [\n \"You will receive two emails - one from Halo and one from Docusign with the MTA\",\n \"Forward the email from Halo to your tech transfer contact that handles MTAs\",\n \"Click “Review Document” in the Docusign email and assign the MTA to the same contact\",\n ],\n STARTUP_SUBMISSION_BULLETS: [\n \"You will receive two emails - one from Halo and one from Docusign with the MTA\",\n \"Click “Review Document” in the Docusign email and sign the MTA\",\n \"Once the MTA is signed, Bayer will contact you to upload your compound to an FTP site\",\n ],\n COMPOUND_EXAMPLES: [\n \"Oxazole derivatives designed to modulate ion channels\",\n \"Spirocyclic compounds synthesized through novel cyclization approach\",\n \"Benzamides with potential herbicidal activity\",\n ],\n DESIGN_PRINCIPLE_EXAMPLES: [\n \"The compounds have been designed to interfere with lipid biosynthesis as inhibitors of the Acetyl-CoA-Carboxylase.\",\n \"\",\n \"The compounds have been produced in a chemistry driven synthesis approach.\",\n ],\n RATIONALE_EXAMPLES: [\n \"4-pyridine amides are known insecticidal compounds acting on sucking and piercing insects. Thus, closely related pyrimidine analogues should exhibit similar biological efficacy.\",\n \"\",\n \"The employed carbocyclization strategies give rise to novel molecular scaffolds that are unprecedented in commercialized active ingredients\",\n ],\n};\n\nexport { TESTING4AG, CORTEVA };\n","export default {\n SHADOW_A: \"0px 1px 5px 0px #1D477B1F, 0px 5px 10px 0px #1D477B0A\",\n SHADOW_B: \"0px 10px 22px rgba(29, 71, 123, 0.08), 0px 2px 12px rgba(29, 71, 123, 0.08)\",\n SHADOW_C: \"0px 4px 10px rgba(28, 50, 79, 0.28)\",\n SHADOW_D: \"0px 6px 24px -4px #1C324F61\",\n SHADOW_E: \"0px 15.1852px 48.5926px -6.07407px rgba(1, 106, 170, 0.15)\",\n SHADOW_CARD: \"0px 1px 3px 0px rgba(4, 11, 19, 0.06)\",\n ONE_LINE: `\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n `,\n // specify max width element for this to work\n ONE_LINE_ALT: `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `,\n TWO_LINES: `\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n `,\n THREE_LINES: `\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n `,\n HERO_MEDIA_QUERY: `@media screen and (max-width: 1440px)`,\n};\n","/* WINDOW DIMENSIONS */\nconst EXTRA_WIDE = 1920;\nconst DESKTOP = 1280;\nconst TABLET_LANDSCAPE = 991;\nconst TABLET = 767;\nconst MOBILE = 479;\n/* MEDIA QUERIES */\nconst EXTRA_WIDE_MEDIA_QUERY = `@media screen and (min-width: ${EXTRA_WIDE}px)`;\nconst DESKTOP_MEDIA_QUERY = `@media screen and (max-width: ${DESKTOP}px)`;\nconst TABLET_LANDSCAPE_MEDIA_QUERY = `@media screen and (max-width: ${TABLET_LANDSCAPE}px)`;\nconst TABLET_MEDIA_QUERY = `@media screen and (max-width: ${TABLET}px)`;\nconst MOBILE_MEDIA_QUERY = `@media screen and (max-width: ${MOBILE}px)`;\n\n// From Erik's research of active users, currently only used for showing\n// a mini version of the RFP page as a preview at the end of the RFP form\nconst BASE_WINDOW_WIDTH = 1350;\n\n// New responsiveness approach based on design system\nconst PAGE_SIDE_PADDING = 82;\nconst TABLET_SIDE_PADDING = 16;\nconst DESKTOP_MIN_CONTENT_WIDTH = 1216;\nconst DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY = `@media screen and (max-width: ${DESKTOP_MIN_CONTENT_WIDTH}px)`;\nconst DESKTOP_MIN_WIDTH = DESKTOP_MIN_CONTENT_WIDTH + 2 * PAGE_SIDE_PADDING;\nconst DESKTOP_MIN_WIDTH_MEDIA_QUERY = `@media screen and (max-width: ${DESKTOP_MIN_WIDTH}px)`;\n// Some components/pages can stretch beyond this on a case-by-case basis\nconst DEFAULT_MAX_WIDTH = 1680;\n\nexport default {\n EXTRA_WIDE,\n DESKTOP,\n TABLET_LANDSCAPE,\n TABLET,\n MOBILE,\n EXTRA_WIDE_MEDIA_QUERY,\n DESKTOP_MEDIA_QUERY,\n TABLET_LANDSCAPE_MEDIA_QUERY,\n TABLET_MEDIA_QUERY,\n MOBILE_MEDIA_QUERY,\n BASE_WINDOW_WIDTH,\n PAGE_SIDE_PADDING,\n TABLET_SIDE_PADDING,\n DESKTOP_MIN_CONTENT_WIDTH,\n DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY,\n DESKTOP_MIN_WIDTH,\n DESKTOP_MIN_WIDTH_MEDIA_QUERY,\n DEFAULT_MAX_WIDTH,\n};\n","export const RFP_FORM_CHARACTER_LIMITS = {\"TITLE\":75,\"PROBLEM_STATEMENT\":1500,\"LOOKING_FOR\":1000,\"SOLUTIONS_OF_INTEREST\":100,\"MUST_HAVE_REQUIREMENTS\":300,\"NICE_TO_HAVE_REQUIREMENTS\":300,\"OUT_OF_SCOPE\":300,\"FUNDING_BENEFIT\":400,\"NON_MONETARY_BENEFIT\":400};","export const SCIENTIST_ROLES = [\"Principal Investigator\",\"Postdoctoral Scientist\",\"PhD Candidate\",\"Research Associate\"];\n","import { I18n } from \"i18n-js\";\nimport en from \"./generated/en.json\";\n\nconst i18n = new I18n(en);\n\nexport default i18n;\n","import type { MessengerData } from \"@redux/reducers/messengerReducer\";\nimport { ProposalyType } from \"@tsTypes/proposaly\";\nimport { payloadActionGenerator } from \"@utils/redux\";\nimport { batch } from \"react-redux\";\n\nimport {\n getMessageThreadByRecipients,\n getMessageThreadByUserProposal,\n} from \"src/requests/messages\";\n\nexport const SET_MESSENGER_DATA = \"SET_MESSENGER_DATA\";\nexport const CLEAR_MESSENGER_STATE = \"CLEAR_MESSENGER_STATE\";\nexport const SET_MESSENGER_THREAD = \"SET_MESSENGER_THREAD\";\nexport const SET_HAS_UNREAD_MESSAGE = \"SET_HAS_UNREAD_MESSAGE\";\nexport const SET_IS_MESSENGER_OPEN = \"SET_IS_MESSENGER_OPEN\";\nexport const SET_IS_MESSENGER_MINIMIZED = \"SET_IS_MESSENGER_MINIMIZED\";\nexport const SET_IS_MESSENGER_EXPANDED = \"SET_IS_MESSENGER_EXPANDED\";\nexport const IS_MESSENGER_THREAD_LOADING = \"IS_MESSENGER_THREAD_LOADING\";\nexport const SET_MESSENGER_OFFSET_RIGHT = \"SET_MESSENGER_OFFSET_RIGHT\";\n\nexport const setMessengerData = payloadActionGenerator(SET_MESSENGER_DATA);\nexport const clearMessengerState = payloadActionGenerator(CLEAR_MESSENGER_STATE);\nexport const setMessengerThread = payloadActionGenerator(SET_MESSENGER_THREAD);\nexport const setHasUnreadMessage = payloadActionGenerator(SET_HAS_UNREAD_MESSAGE);\nexport const setIsMessengerOpen = payloadActionGenerator(SET_IS_MESSENGER_OPEN);\nexport const setIsMessengerMinimized = payloadActionGenerator(SET_IS_MESSENGER_MINIMIZED);\nexport const setIsMessengerExpanded = payloadActionGenerator(SET_IS_MESSENGER_EXPANDED);\nexport const setIsMessengerThreadLoading = payloadActionGenerator(IS_MESSENGER_THREAD_LOADING);\nexport const setMessengerOffsetRight = payloadActionGenerator(SET_MESSENGER_OFFSET_RIGHT);\n\nexport const fetchCurrentThreadByProposal = (\n userId: number,\n proposalyType: ProposalyType,\n proposalyId: number\n) => {\n return async (dispatch) => {\n dispatch(setIsMessengerThreadLoading(true));\n const response = await getMessageThreadByUserProposal({ userId, proposalyType, proposalyId });\n\n batch(() => {\n dispatch(setMessengerThread(response?.message_thread));\n dispatch(setHasUnreadMessage(response?.message_thread.unread_for_current_user ?? false));\n dispatch(setIsMessengerThreadLoading(false));\n });\n\n return response?.message_thread;\n };\n};\n\nexport const fetchCurrentThreadByParticipants = (\n scientistUserId: number,\n recipientUserId: number\n) => {\n return async (dispatch) => {\n dispatch(setIsMessengerThreadLoading(true));\n const response = await getMessageThreadByRecipients({\n scientistUserId,\n recipientUserId,\n });\n\n batch(() => {\n dispatch(setMessengerThread(response?.message_thread));\n dispatch(setHasUnreadMessage(response?.message_thread.unread_for_current_user ?? false));\n dispatch(setIsMessengerThreadLoading(false));\n });\n\n return response?.message_thread;\n };\n};\n\nexport const setMessengerState = (messengerData: MessengerData) => {\n return (dispatch) => {\n batch(() => {\n dispatch(setMessengerData(messengerData));\n dispatch(setIsMessengerOpen(true));\n dispatch(setIsMessengerMinimized(false));\n });\n };\n};\n","import { InboxMessageThread, MessageRecipient } from \"@tsTypes/index\";\nimport { ProposalyType } from \"@tsTypes/proposaly\";\nimport {\n CLEAR_MESSENGER_STATE,\n IS_MESSENGER_THREAD_LOADING,\n SET_HAS_UNREAD_MESSAGE,\n SET_IS_MESSENGER_EXPANDED,\n SET_IS_MESSENGER_MINIMIZED,\n SET_IS_MESSENGER_OPEN,\n SET_MESSENGER_DATA,\n SET_MESSENGER_OFFSET_RIGHT,\n SET_MESSENGER_THREAD,\n} from \"../actions/messengerActions\";\n\nexport interface MessengerData {\n recipient: MessageRecipient;\n proposalTitle?: string | null;\n proposalyId?: number;\n proposalyType?: ProposalyType;\n}\n\ninterface MessengerState {\n messengerData: MessengerData | Record;\n messengerThread?: InboxMessageThread;\n hasUnreadMessage: boolean;\n isMessengerMinimized: boolean;\n isMessengerOpen: boolean;\n isMessengerExpanded: boolean;\n isMessengerThreadLoading: boolean;\n messengerOffsetRight: number;\n}\n\nexport const DEFAULT_MESSENGER_OFFSET_RIGHT = 70;\n\nconst initialState = {\n messengerData: {},\n messengerThread: undefined,\n hasUnreadMessage: false,\n isMessengerMinimized: false,\n isMessengerOpen: false,\n isMessengerExpanded: false,\n isMessengerThreadLoading: true,\n messengerOffsetRight: DEFAULT_MESSENGER_OFFSET_RIGHT,\n};\n\n// eslint-disable-next-line default-param-last\nconst messengerReducer = (state: MessengerState = initialState, action) => {\n switch (action.type) {\n case SET_MESSENGER_DATA:\n return {\n ...state,\n messengerData: action.payload,\n };\n case CLEAR_MESSENGER_STATE:\n return initialState;\n case SET_MESSENGER_THREAD:\n return {\n ...state,\n messengerThread: action.payload,\n };\n case SET_HAS_UNREAD_MESSAGE:\n return {\n ...state,\n hasUnreadMessage: action.payload,\n };\n case SET_IS_MESSENGER_OPEN:\n return {\n ...state,\n isMessengerOpen: action.payload,\n };\n case SET_IS_MESSENGER_MINIMIZED:\n return {\n ...state,\n isMessengerMinimized: action.payload,\n };\n case SET_IS_MESSENGER_EXPANDED:\n return {\n ...state,\n isMessengerExpanded: action.payload,\n };\n case IS_MESSENGER_THREAD_LOADING:\n return {\n ...state,\n isMessengerThreadLoading: action.payload,\n };\n case SET_MESSENGER_OFFSET_RIGHT: {\n return {\n ...state,\n messengerOffsetRight: action.payload,\n };\n }\n default:\n return state;\n }\n};\n\nexport default messengerReducer;\n","import { company_marketplace_filter_options_path, company_marketplace_path } from \"@routes/routes\";\nimport { marketplacePath } from \"@routes/utils\";\nimport { CompanyForCard } from \"@tsTypes/companies/_for_card\";\nimport { CompanyMarketplaceResponse } from \"@tsTypes/companies/company_marketplace\";\nimport { CompanyMarketplaceFilterOptionsResponse } from \"@tsTypes/companies/company_marketplace_filter_options\";\nimport {\n CompaniesShowResponse,\n CompanyPageResponse,\n CompanyResearchInterestsCreateResponse,\n CompanyResearchInterestsDestroyResponse,\n CompanyResearchInterestsUpdateResponse,\n RfpRequestForCard,\n} from \"@tsTypes/index\";\nimport { Company, CompanyResearchInterest, Request, User } from \"@tsTypes/schema\";\nimport api from \"./request\";\n\nexport type CompanyAsJson = Omit<\n Company,\n \"request_for_proposals\" | \"company_page_users\" | \"company_research_interests\"\n> & {\n rfp_requests: RfpRequestForCard[];\n company_research_interests: CompanyResearchInterest &\n {\n rfp_requests: RfpRequestForCard[];\n keywords: string[];\n open_call_request: Request;\n }[];\n super_admin: User;\n company_page_users?: User[];\n opportunity_count: number;\n is_open_calls_accessible: boolean;\n};\n\nexport const getCompanyForCompanyPage = async (\n identifier: string\n): Promise => {\n try {\n const response = await api.get(`/company_info/${identifier.toLocaleLowerCase()}`, {\n params: {\n is_for_company_page: true,\n },\n });\n\n return response.data;\n } catch (error) {\n if (error.response.status === 401) {\n const accessCode = prompt(\"Please enter the access code for this page\");\n\n if (accessCode) {\n try {\n const responseJson = await api.get(`/company_info/${identifier}`, {\n params: {\n access_code: accessCode,\n is_for_company_page: true,\n },\n });\n\n return responseJson.data;\n } catch (secondError) {\n if (secondError.response.status === 401) {\n alert(\"Incorrect password\");\n window.location.href = marketplacePath();\n } else {\n throw secondError;\n }\n }\n }\n\n window.location.href = marketplacePath();\n } else {\n throw error;\n }\n }\n\n throw new Error(\"Unable to fetch company\");\n};\n\nexport async function getCompany(identifier: string): Promise {\n if (!identifier) {\n console.error(`No identifier passed to getCompany!`);\n }\n const response = await api.get(`/company_info/${identifier}`);\n\n return response.data;\n}\n\nexport async function getAllCompanies(\n pageNumber?: number,\n sortBy?: string,\n abortSignal?: AbortSignal\n): Promise<{ companies: CompanyForCard[]; total_count: number }> {\n const request = await api.get(\"/companies\", {\n params: {\n for_marketplace: true,\n page_number: pageNumber,\n sort_by: sortBy,\n },\n signal: abortSignal,\n });\n return request.data;\n}\n\nexport async function getCompanyFollowSuggestions() {\n try {\n const request = await api.get(\"/companies\", { params: { for_suggested_follows: true } });\n const { companies } = request.data;\n return companies;\n } catch {\n return [];\n }\n}\n\nexport async function getCompanyNamesForOnboarding(): Promise<{ companies: string[] }> {\n const response = await api.get(\"/companies\", { params: { for_onboarding: true } });\n return response.data;\n}\n\nexport async function uploadCompanyVideo(id: number, videoBlob: Blob) {\n const formData = new FormData();\n formData.append(\"file\", videoBlob);\n\n const response = await api.post(`/company/${id}/video-upload`, formData);\n const videoUrl: string = response.data.url;\n\n return videoUrl;\n}\n\nexport async function uploadCompanyImage(id: number, identifier: string, imageBlob: Blob) {\n const formData = new FormData();\n formData.append(\"file\", imageBlob, `${identifier}-logo.png`);\n\n const response = await api.post(`/company/${id}/logo-upload`, formData);\n const logoUrl: string = response.data.url;\n\n return logoUrl;\n}\n\nexport async function followUnfollowCompany(identifier?: string | null) {\n if (!identifier) return;\n try {\n const response = await api.post(`/company/${identifier}/follow_unfollow`);\n return response.data;\n } catch (error) {\n return null;\n }\n}\n\nexport async function updateCompanyInfo(\n id: number,\n companyInfo: {\n researcher_count?: string;\n rd_centers_count?: number;\n rd_spend_amount?: string;\n employee_count?: string;\n company_type?: string;\n location?: string;\n description?: string;\n introduction?: string;\n company_page_user_ids?: number[];\n }\n): Promise {\n try {\n const response = await api.put(`/companies/${id}`, companyInfo);\n return response.data;\n } catch (error) {\n return null;\n }\n}\n\nexport async function createCompanyResearchInterest({\n companyId,\n title,\n summary,\n keywords,\n requestForProposalIds,\n isOpenCallActive,\n}: {\n companyId: number;\n title: string;\n summary: string;\n keywords?: string[];\n requestForProposalIds?: number[];\n isOpenCallActive: boolean;\n}): Promise {\n const response = await api.post(`/company_research_interests`, {\n company_id: companyId,\n title,\n summary,\n keywords,\n request_for_proposal_ids: requestForProposalIds,\n is_open_call_active: isOpenCallActive,\n });\n\n return response.data;\n}\n\nexport async function updateCompanyResearchInterest({\n id,\n title,\n summary,\n keywords,\n requestForProposalIds,\n isOpenCallActive,\n}: {\n id: number;\n title: string;\n summary: string;\n keywords: string[];\n requestForProposalIds: number[];\n isOpenCallActive: boolean;\n}): Promise {\n const response = await api.put(`/company_research_interests/${id}`, {\n title,\n summary,\n keywords,\n request_for_proposal_ids: requestForProposalIds,\n is_open_call_active: isOpenCallActive,\n });\n\n return response.data;\n}\n\nexport async function deleteCompanyResearchInterest(\n id: number\n): Promise {\n const response = await api.delete(`/company_research_interests/${id}`);\n\n return response.data;\n}\n\nexport type CompanyResearchInterestForProposalForm = CompanyResearchInterest & {\n request: Pick;\n company: Pick;\n};\n\nexport const getCompanyResearchInterestsBySlug = async (\n slug: string\n): Promise => {\n const response = await api.get(`/company_research_interests`, {\n params: { company_identifier: slug },\n });\n return response.data.company_research_interests;\n};\n\nexport const getCompanyMarketplaceCompanies = async ({\n keywordsFilter,\n withActiveRfpsFilter,\n withActiveOpenCallsFilter,\n withActiveRfsFilter,\n sortBy,\n pageNumber,\n}: {\n keywordsFilter: string[];\n withActiveRfpsFilter: boolean;\n withActiveOpenCallsFilter: boolean;\n withActiveRfsFilter: boolean;\n sortBy: \"PREFERRED\" | \"NAME\";\n pageNumber: number;\n}): Promise => {\n const response = await api.get(company_marketplace_path(), {\n params: {\n options: {\n keywords_filter: keywordsFilter,\n with_active_rfps_filter: withActiveRfpsFilter,\n with_active_open_calls_filter: withActiveOpenCallsFilter,\n with_active_rfs_filter: withActiveRfsFilter,\n sort_by: sortBy,\n page_number: pageNumber,\n },\n },\n });\n return response.data;\n};\n\nexport const getCompanyMarketplaceFilterOptions =\n async (): Promise => {\n const response = await api.get(company_marketplace_filter_options_path());\n return response.data;\n };\n","import toast from \"@components/Toast\";\nimport { ConnectionType } from \"@tsTypes/__generated__/enums/connection_type.js\";\nimport { CompanyNetworkScientistsAccountSettingsResponse } from \"@tsTypes/company_network_scientists/account_settings\";\nimport {\n CompanyNetworkScientistPartial,\n CompanyNetworkScientistsCreateResponse,\n} from \"@tsTypes/index\";\nimport appsignal from \"@utils/appsignal\";\nimport { t } from \"@utils/i18n\";\nimport { search_suggest_company_network_scientists_path } from \"../routes/routes.js\";\nimport request from \"./request\";\n\nexport const requestToJoinCompanyNetwork = async (\n companyId: number\n): Promise => {\n const response = await request.post(\"/company_network_scientists\", {\n company_id: companyId,\n is_from_digest: false,\n });\n return response.data;\n};\n\nexport const requestToJoinCompanyNetworkFromDigest = async (\n companyIdentifier: string\n): Promise => {\n try {\n const response = await request.post(\"/company_network_scientists\", {\n company_identifier: companyIdentifier,\n is_from_digest: true,\n });\n const {\n company_network_scientist: { company_name },\n } = response.data;\n toast.success(\n t(\"models.company_network_scientist.sponsor_digest.join_success\", { company_name })\n );\n } catch (error) {\n switch (error.response?.status) {\n case 401:\n break;\n case 409:\n toast.success(\n t(\"models.company_network_scientist.sponsor_digest.join_duplicate\", {\n company_name: error.response.data.company_name,\n })\n );\n break;\n default:\n toast.error(t(\"error.default\"));\n appsignal.sendError(error, (span) => {\n span.setAction(\"companyNetworkScientists#requestToJoinCompanyNetworkFromDigest\");\n span.setTags({\n companyIdentifier,\n });\n });\n }\n }\n};\n\nexport const getCompanyNetworkScientist = async ({\n scientistProfileId,\n companyId,\n}): Promise => {\n try {\n const response = await request.get(\"/company_network_scientist\", {\n params: {\n scientist_profile_id: scientistProfileId,\n company_id: companyId,\n },\n });\n\n return response?.data;\n } catch (error) {\n switch (error.response?.status) {\n case 404:\n break;\n default:\n appsignal.sendError(error, (span) => {\n span.setAction(\"getCompanyNetworkScientist\");\n span.setTags({\n scientistProfileId,\n companyId,\n });\n });\n }\n\n return null;\n }\n};\n\nexport const searchSuggest = async (query: string, connectionType: ConnectionType | undefined) => {\n const response = await request.get(search_suggest_company_network_scientists_path(), {\n params: {\n query,\n connection_type: connectionType,\n },\n });\n return response.data;\n};\n\nexport const getCompanyNetworkScientistsForAccountSettings =\n async (): Promise => {\n const response = await request.get(\"/company_network_scientists\", {\n params: {\n for_account_settings: true,\n },\n });\n return response.data;\n };\n\nexport const inviteScientistsToCompanyNetwork = async (\n emails: string[],\n message: string\n): Promise<{\n immediately_added: number;\n sent_invitation: number;\n already_in_network: number;\n}> => {\n const response = await request.post(\"/notifications/invite_scientists_to_network\", {\n emails: emails,\n message: message,\n });\n return response.data;\n};\n\nexport const addScientistToCompanyNetwork = async (\n scientistProfileId: string\n): Promise => {\n const response = await request.post(\n \"/company_network_scientist/sponsor_add_scientist_to_network\",\n {\n scientist_profile_id: scientistProfileId,\n }\n );\n return response.data;\n};\n","import { suggestions_keywords_path } from \"@routes/routes\";\nimport { KeywordType } from \"@tsTypes/keywords\";\nimport { RequestableType } from \"@tsTypes/requests\";\nimport appsignal from \"@utils/appsignal\";\nimport api from \"./request\";\n\nexport const getDisciplines = async (): Promise => {\n const response = await api.get(\"/disciplines\");\n return response.data;\n};\n\nexport const getAreasOfExpertise = async (): Promise => {\n const response = await api.get(\"/areas_of_expertise\");\n return response.data;\n};\n\nexport const getKeywords = async (): Promise<{\n disciplines: string[];\n areas_of_expertise: string[];\n}> => {\n const response = await api.get(\"/keywords\");\n return response.data;\n};\n\nexport const createKeyword = async (\n name: string,\n type: \"Discipline\" | \"AreaOfExpertise\"\n): Promise => {\n try {\n await api.post(\"/keywords\", { name, type });\n } catch (err) {\n appsignal.sendError(err, (span) => {\n span.setAction(\"keywords#create\");\n span.setTags({\n name,\n });\n });\n }\n};\n\nexport const getKeywordSuggestionsBySimilarity = async (\n keywords: string[],\n type: \"All\" | \"Discipline\" | \"AreaOfExpertise\"\n): Promise => {\n try {\n const response = await api.get(\"/keywords/suggestions\", {\n params: {\n keywords,\n type,\n by_similarity: true,\n },\n });\n\n if (!response) return [];\n\n return response.data.suggestions;\n } catch (err) {\n if (err?.code !== \"ECONNABORTED\") {\n appsignal.sendError(err, (span) => {\n span.setAction(\"keywords#getKeywordsSuggestion\");\n span.setTags({\n keywords: keywords.join(\";\"),\n });\n });\n }\n return [];\n }\n};\n\nexport const getKeywordSuggestionsByContent = async (\n requestData: {\n title: string;\n request_solutions: string[];\n request_requirements: {\n description: string;\n allowAttachments: boolean;\n }[];\n requestable_type: RequestableType;\n requestable: {\n background: string;\n looking_for: string;\n };\n },\n keywordType: KeywordType\n) => {\n const response = await api.get(\n suggestions_keywords_path({\n request_data: requestData,\n keyword_type: keywordType,\n })\n );\n return response.data.suggestions;\n};\n","import {\n MessageAttachmentPartial,\n MessageThreadLookupResponse,\n MessageThreadsShowResponse,\n} from \"@tsTypes/index\";\nimport { MessageThreadsIndexResponse } from \"@tsTypes/message_threads\";\nimport { ProposalyType } from \"@tsTypes/proposaly\";\nimport { MessageAttachment } from \"@tsTypes/schema\";\nimport { Dispatch, SetStateAction } from \"react\";\nimport { InboxFilterOptions } from \"src/views/Inbox/Sidebar/Sidebar\";\nimport request from \"./request\";\n\nexport type MessageAttachmentAsJson = MessageAttachment & {\n file_url: string;\n thumbnail_url: string;\n download_url: string;\n};\n\nexport const getMessageThreads = async (\n options: InboxFilterOptions\n): Promise => {\n const response = await request.get(\"/message_threads\", {\n params: {\n options: {\n sort_by: options.sortBy,\n search_filter: options.searchFilter,\n message_type_filter: options.requestIdFilter,\n page_number: options.pageNumber,\n },\n },\n });\n\n return response.data;\n};\n\nexport const getMessages = async (messageThreadId: number): Promise => {\n const response = await request.get(`/message_threads/${messageThreadId}`);\n\n return response.data;\n};\n\nexport const addMessageToThread = async ({\n messageThreadId,\n content,\n attachmentIds,\n}: {\n messageThreadId: number;\n content: string;\n attachmentIds: number[];\n}) => {\n const response = await request.post(`/message_threads/${messageThreadId}/add_message`, {\n message_thread_id: messageThreadId,\n content,\n attachment_ids: attachmentIds,\n source: window.location.pathname,\n });\n\n return response.data;\n};\n\nexport const setDraftMessage = async ({\n proposalyId,\n proposalyType,\n content,\n attachmentIds,\n}: {\n proposalyId: number;\n proposalyType: ProposalyType;\n content: string;\n attachmentIds: number[];\n}) => {\n const response = await request.post(`/draft_messages`, {\n proposaly_id: proposalyId,\n proposaly_type: proposalyType,\n content,\n attachment_ids: attachmentIds,\n });\n\n return response.data;\n};\n\nexport const getDraftMessage = async ({\n proposalyId,\n proposalyType,\n}: {\n proposalyId: number;\n proposalyType: ProposalyType;\n}): Promise<\n | undefined\n | {\n id: number;\n content: number;\n message_attachments: MessageAttachmentPartial[];\n }\n> => {\n try {\n const response = await request.get(`/draft_messages`, {\n params: {\n proposaly_id: proposalyId,\n proposaly_type: proposalyType,\n },\n });\n\n return response.data;\n } catch (error) {\n if (error.response?.status === 404) {\n return undefined;\n }\n throw error;\n }\n};\n\n// Returns message_thread and messages or undefined if no message thread exists\nexport const getMessageThreadByUserProposal = async ({\n userId,\n proposalyType,\n proposalyId,\n}: {\n userId: number;\n proposalyType: ProposalyType;\n proposalyId: number;\n}): Promise => {\n try {\n const response = await request.get(`/message_threads/lookup`, {\n params: {\n user_id: userId,\n proposaly_type: proposalyType,\n proposaly_id: proposalyId,\n },\n });\n return response.data;\n } catch (error) {\n if (error.response?.status === 404) {\n return undefined;\n }\n\n throw error;\n }\n};\n\nexport const getMessageThreadByRecipients = async ({\n scientistUserId,\n recipientUserId,\n}): Promise => {\n try {\n const response = await request.get(\"/message_threads/lookup\", {\n params: {\n scientist_user_id: scientistUserId,\n recipient_user_id: recipientUserId,\n },\n });\n return response?.data;\n } catch (error) {\n if (error.response?.status === 404) {\n return undefined;\n }\n\n throw error;\n }\n};\n\nexport const createMessageThread = async ({\n proposalyType,\n proposalyId,\n userId,\n content,\n attachmentIds,\n}: {\n proposalyType?: ProposalyType;\n proposalyId?: number;\n userId: number;\n content: string;\n attachmentIds: number[];\n}): Promise => {\n const response = await request.post(`/message_threads`, {\n proposaly_type: proposalyType,\n proposaly_id: proposalyId,\n user_id: userId,\n content,\n attachment_ids: attachmentIds,\n });\n return response.data;\n};\n\nexport const uploadAttachment = async (\n file: File,\n abortSignal: AbortSignal,\n setUploadPercentage: Dispatch>\n): Promise => {\n try {\n const formData = new FormData();\n formData.append(\"file\", file);\n formData.append(\"filename\", file.name);\n const response = await request.post(\"/message_attachments\", formData, {\n signal: abortSignal,\n onUploadProgress: (progressEvent) => {\n const uploadPercentage = (progressEvent.loaded / progressEvent.total) * 100;\n setUploadPercentage(uploadPercentage);\n },\n });\n\n return response.data;\n } catch (error) {\n if (!abortSignal.aborted) {\n throw error;\n }\n }\n};\n","import { FEATURE_FLAGS } from \"@constants\";\nimport { authenticityToken } from \"@utils/requests\";\nimport axios, { AxiosError } from \"axios\";\nimport { toast } from \"react-toastify\";\n\nexport const DEFAULT_RETRY_COUNT = 3;\n\nconst api = axios.create({\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": authenticityToken()!,\n },\n});\n\n// Redirect to reauthenticate.\nif (FEATURE_FLAGS.SESSION_TIMEOUT) {\n api.interceptors.response.use(\n (res) => res,\n (error: AxiosError) => {\n if (error.response?.status !== 401) {\n throw error;\n }\n toast.error(\"You have been logged out. Please login again.\");\n window.location.href = \"/login\";\n }\n );\n}\n\nexport default api;\n","import {\n request_path,\n requests_path,\n review_system_proposals_request_for_expert_proposals_path,\n review_system_proposals_request_for_startup_proposals_path,\n} from \"@routes/routes\";\nimport { ProposalReviewStatus } from \"@tsTypes/__generated__/enums/proposal_review_status\";\nimport {\n AddReviewersResponse,\n CommercialApplicationPageRequestsResponse,\n MarketplaceRequestsResponse,\n RequestsShowResponse,\n ResearchAreaPageResponse,\n ReviewerDashboardRequestsResponse,\n SponsorDropdownRequest,\n SponsorDropdownRequestsResponse,\n} from \"@tsTypes/index\";\nimport { ReviewSystemProposalsResponse } from \"@tsTypes/proposals/review_system_proposals\";\nimport {\n RequestPartnerTypes,\n RequestProposalSortBy,\n RequestProposalSortDirection,\n RequestableType,\n} from \"@tsTypes/requests\";\nimport { default as api } from \"./request\";\n\nexport const getRequest = async (slug: string): Promise => {\n const response = await api.get(request_path(slug));\n return response.data;\n};\n\nexport const getRequestsForReviewerDashboard =\n async (): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n for_reviewer_dashboard: true,\n },\n });\n return response.data;\n };\n\nexport const toggleRequestEnabled = async (\n requestId: number,\n shouldEnable: boolean\n): Promise => {\n const response = await api.put(request_path(requestId), {\n enabled: shouldEnable,\n });\n return response.data.request_id;\n};\n\nexport const getMarketplaceRequests = async (\n {\n searchFilter,\n requestTypesFilter,\n partnerTypesFilter,\n }: {\n searchFilter: string[];\n requestTypesFilter: RequestableType[];\n partnerTypesFilter: RequestPartnerTypes[];\n } = {\n searchFilter: [],\n requestTypesFilter: [],\n partnerTypesFilter: [],\n }\n): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n for_marketplace: true,\n options: {\n search_filter: searchFilter,\n request_type_filter: requestTypesFilter,\n partner_type_filter: partnerTypesFilter,\n },\n },\n });\n if (!response) return { requests: [], scores: [] };\n return response.data;\n};\n\nexport const getCommercialApplicationPageRequests = async (\n commercialApplicationId: number,\n pageNum: number\n): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n commercial_application_id: commercialApplicationId,\n page_num: pageNum,\n },\n });\n\n return response.data;\n};\n\n// Delete after FlipperGates::Gate::COMMERCIAL_APPLICATIONS is enabled\nexport const getResearchAreaPageRequests = async (\n rfpProgramIdentifier: string\n): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n rfp_program_identifier: rfpProgramIdentifier,\n },\n });\n\n return response.data;\n};\n\nexport const getRequestsForSponsorDropdowns = async (\n filterByReviewTeamAccess = false\n): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n for_sponsor_dropdowns: true,\n filter_by_review_team_access: filterByReviewTeamAccess,\n },\n });\n return response.data;\n};\n\nexport const getExpertRequests = async (): Promise => {\n const response = await api.get(requests_path(), {\n params: {\n for_expert: true,\n },\n });\n return response.data;\n};\n\nexport const addReviewers = async ({\n requestId,\n emails,\n role,\n message,\n}: {\n requestId: number;\n emails: string[];\n role: string;\n message?: string;\n}): Promise => {\n const response = await api.post(`/requests/add_reviewers`, {\n request_id: requestId,\n emails,\n role,\n message,\n });\n\n return response.data;\n};\n\nexport const getRequestProposalsForReviewSystem = async (\n request: SponsorDropdownRequest | null,\n status: number | ProposalReviewStatus,\n options: {\n proposalId: number | null;\n searchFilter: string;\n countryFilter: string[];\n organizationTypeFilter: string[];\n organizationNameFilter: string[];\n keywordsFilter: string[];\n requestSolutionsFilter: string[];\n trlFilter: number[];\n evaluationStatusFilter: string[];\n bookmarkedOnlyFilter: boolean;\n criterionLeadersOnlyFilter: boolean;\n sortBy?: RequestProposalSortBy;\n sortDirection?: RequestProposalSortDirection;\n }\n): Promise => {\n let requestPath = \"\";\n switch (request?.requestable_type) {\n case RequestableType.RFP:\n case RequestableType.OPEN_CALL: {\n requestPath = \"/proposals\";\n break;\n }\n case RequestableType.REQUEST_FOR_STARTUP: {\n requestPath = review_system_proposals_request_for_startup_proposals_path();\n break;\n }\n case RequestableType.REQUEST_FOR_EXPERT: {\n requestPath = review_system_proposals_request_for_expert_proposals_path();\n break;\n }\n default: {\n throw new Error(\"Invalid request\");\n }\n }\n\n const response = await api.get(requestPath, {\n params: {\n is_for_review_system: true,\n request_id: request.id,\n status,\n proposal_id: options.proposalId,\n search_filter: options.searchFilter,\n country_filter: options.countryFilter,\n organization_type_filter: options.organizationTypeFilter,\n organization_name_filter: options.organizationNameFilter,\n keywords_filter: options.keywordsFilter,\n request_solutions_filter: options.requestSolutionsFilter,\n trl_filter: options.trlFilter,\n evaluation_status_filter: options.evaluationStatusFilter,\n bookmarked_only_filter: options.bookmarkedOnlyFilter,\n criterion_leaders_only_filter: options.criterionLeadersOnlyFilter,\n sort_by: options.sortBy ?? \"submission_date\",\n sort_direction: options.sortDirection ?? \"desc\",\n },\n });\n\n return response.data;\n};\n\nexport const setRequestFeedbackDeadline = async (\n requestId: number,\n deadline: Date\n): Promise => {\n const response = await api.put(request_path(requestId), {\n feedback_deadline: deadline,\n });\n return response.data.feedback_deadline;\n};\n\nexport const getCanSubmitProposal = async (requestId: number): Promise => {\n const response = await api.post(`/requests/${requestId}/can_submit_proposal`);\n return response.data.can_submit;\n};\n","import { request_for_expert_proposal_path, tabbed_marketplace_path } from \"@routes/routes\";\nimport { RequestableType } from \"@tsTypes/requests\";\n\nexport const formatPathForRouter = (url) => {\n return url.toString().replace(\"(.:format)\", \"\");\n};\n\n// Helper to manage Flipper-conditional marketplace route\nexport const marketplacePath = (tab = \"requests\", options = {}) => {\n return tabbed_marketplace_path(tab, options);\n};\n\nexport const proposalyPagePath = (slug: string, requestable_type: RequestableType) => {\n switch (requestable_type) {\n case RequestableType.REQUEST_FOR_STARTUP:\n return `/startup_program_proposal/${slug}`;\n case RequestableType.REQUEST_FOR_EXPERT:\n return request_for_expert_proposal_path(slug);\n default:\n return `/proposal/${slug}`;\n }\n};\n","/* eslint no-unused-vars: 0 */\n\n/**\n * This file was automatically generated by ruby_to_typescript.rake.\n * Do not modify it by hand.\n */\nexport enum SegmentEventObject {\n Company = \"Company\",\n InvitedUser = \"InvitedUser\",\n Message = \"Message\",\n Notification = \"Notification\",\n NotificationSettings = \"NotificationSettings\",\n Proposal = \"Proposal\",\n ProposalDiscussion = \"ProposalDiscussion\",\n Request = \"Request\",\n RequestComment = \"RequestComment\",\n RequestForStartupProposal = \"RequestForStartupProposal\",\n RequestForExpertProposal = \"RequestForExpertProposal\",\n User = \"User\",\n}\n","/* eslint no-unused-vars: 0 */\n\n/**\n * This file was automatically generated by ruby_to_typescript.rake.\n * Do not modify it by hand.\n */\nexport enum SegmentEventName {\n Abandon = \"Abandon\",\n Accept = \"Accept\",\n AddToNetwork = \"AddToNetwork\",\n Advance = \"Advance\",\n Bounce = \"Bounce\",\n ClaimProfile = \"ClaimProfile\",\n Click = \"Click\",\n CompleteOnboarding = \"CompleteOnboarding\",\n Create = \"Create\",\n Decline = \"Decline\",\n Downvote = \"Downvote\",\n Follow = \"Follow\",\n Invite = \"Invite\",\n Login = \"Login\",\n Logout = \"Logout\",\n SendMessage = \"SendMessage\",\n ReceiveMessage = \"ReceiveMessage\",\n Open = \"Open\",\n ReceiveAnswer = \"ReceiveAnswer\",\n Refer = \"Refer\",\n Reply = \"Reply\",\n RequestToJoinNetwork = \"RequestToJoinNetwork\",\n Resubscribe = \"Resubscribe\",\n Review = \"Review\",\n Search = \"Search\",\n Send = \"Send\",\n Share = \"Share\",\n SpamComplaint = \"SpamComplaint\",\n Submit = \"Submit\",\n Unfollow = \"Unfollow\",\n Unsubscribe = \"Unsubscribe\",\n Update = \"Update\",\n UpdateKeywords = \"UpdateKeywords\",\n UpdateInterest = \"UpdateInterest\",\n Upvote = \"Upvote\",\n View = \"View\",\n}\n","/* eslint no-unused-vars: 0 */\n\n/**\n * This file was automatically generated by ruby_to_typescript.rake.\n * Do not modify it by hand.\n */\nexport enum TourIdentifier {\n PROPOSAL_REVIEW_SYSTEM_2024_01_22 = \"PROPOSAL_REVIEW_SYSTEM_2024_01_22\",\n PROPOSAL_REVIEW_SYSTEM_FEEDBACK_DEADLINE_V2_2024_10_31 = \"PROPOSAL_REVIEW_SYSTEM_FEEDBACK_DEADLINE_V2_2024_10_31\",\n PROPOSAL_EVALUATION_2024_02_29 = \"PROPOSAL_EVALUATION_2024_02_29\",\n SCIENTIST_NETWORK_2024_03_01 = \"SCIENTIST_NETWORK_2024_03_01\",\n PROPOSAL_EVALUATION_SCORECARD_FORM_2024_11_06 = \"PROPOSAL_EVALUATION_SCORECARD_FORM_2024_11_06\",\n PROPOSAL_EVALUATION_SIMPLE_FORM_2024_11_06 = \"PROPOSAL_EVALUATION_SIMPLE_FORM_2024_11_06\",\n PROPOSAL_REVIEW_SYSTEM_FILTER_2024_11_06 = \"PROPOSAL_REVIEW_SYSTEM_FILTER_2024_11_06\",\n}\n","import { Name } from \"@tsTypes/__generated__/enums/requests/feedback_deadline_reminder/name\";\nimport { Stage } from \"@tsTypes/__generated__/enums/requests/feedback_deadline_reminder/stage\";\n\n// NOTE: Also update config/initializers/request_custom_data_data_type.rb\nexport interface RequestCustomData {\n is_from_pepsico_procurement: boolean;\n}\n\nexport enum RequestableType {\n OPEN_CALL = \"OpenCall\",\n RFP = \"Rfp\",\n REQUEST_FOR_STARTUP = \"RequestForStartup\",\n REQUEST_FOR_EXPERT = \"RequestForExpert\",\n}\n\nexport enum LaunchableRequestStatus {\n ACTIVE = \"ACTIVE\",\n CLOSED = \"CLOSED\",\n COMING_SOON = \"COMING_SOON\",\n IN_EXTENSION = \"IN_EXTENSION\",\n}\n\nexport enum RequestFeedbackDeadlineStatus {\n NOT_APPLICABLE = \"NOT_APPLICABLE\",\n NEEDS_DEADLINE = \"NEEDS_DEADLINE\",\n BEFORE_DEADLINE = \"BEFORE_DEADLINE\",\n DEADLINE_APPROACHING = \"DEADLINE_APPROACHING\",\n PAST_DEADLINE = \"PAST_DEADLINE\",\n}\n\nexport enum RequestPartnerTypes {\n ACADEMIC_RESEARCHERS = \"ACADEMIC_RESEARCHERS\",\n STARTUPS = \"STARTUPS\",\n SUPPLIERS = \"SUPPLIERS\",\n}\n\nexport enum RequestProposalSortBy {\n SUBMISSION_DATE = \"submission_date\",\n NAME = \"name\",\n TRL = \"trl\",\n SCORE = \"score\",\n}\n\nexport type RequestProposalSortDirection = \"asc\" | \"desc\";\n\n// Keep in sync with app/structs/requests/feedback_deadline_reminder.rb\nexport type FeedbackDeadlineReminder = {\n stage: Stage;\n name: Name;\n title: string;\n text: string;\n deadline_date?: string;\n};\n","export enum RfpPartnershipModel {\n SPONSORED_RESEARCH = \"SPONSORED_RESEARCH\",\n GIFT = \"GIFT\",\n CO_DEVELOPMENT = \"CO_DEVELOPMENT\",\n EQUITY_INVESTMENT = \"EQUITY_INVESTMENT\",\n SUPPLY_PURCHASE = \"SUPPLY_PURCHASE\",\n LICENSING = \"LICENSING\",\n MATERIAL_TRANSFER = \"MATERIAL_TRANSFER\",\n SERVICES_AGREEMENT = \"SERVICES_AGREEMENT\",\n CAPSTONE_PROJECT = \"CAPSTONE_PROJECT\",\n CONSULTING_PROJECT = \"CONSULTING_PROJECT\",\n}\n\nexport const PARTNERSHIP_MODEL_LABELS = {\n [RfpPartnershipModel.SPONSORED_RESEARCH]: \"Sponsored research\",\n [RfpPartnershipModel.GIFT]: \"Gift (Unrestricted grant)\",\n [RfpPartnershipModel.CO_DEVELOPMENT]: \"Co-development\",\n [RfpPartnershipModel.EQUITY_INVESTMENT]: \"Equity investment\",\n [RfpPartnershipModel.SUPPLY_PURCHASE]: \"Supply/purchase\",\n [RfpPartnershipModel.LICENSING]: \"Licensing\",\n [RfpPartnershipModel.MATERIAL_TRANSFER]: \"Material transfer\",\n [RfpPartnershipModel.SERVICES_AGREEMENT]: \"Services agreement\",\n [RfpPartnershipModel.CAPSTONE_PROJECT]: \"Capstone project\",\n [RfpPartnershipModel.CONSULTING_PROJECT]: \"Consulting project\",\n};\n\nexport enum RfpBenefitType {\n SPONSORED_RESEARCH = \"sponsored_research\",\n GIFT = \"gift\",\n INVESTMENT = \"investment\",\n EXPERTISE = \"expertise\",\n TOOLS_AND_TECHNOLOGY = \"tools_and_technology\",\n COMPOUNDS_AND_REAGENTS = \"compounds_and_reagents\",\n FACILITIES_AND_SERVICES = \"facilities_and_services\",\n DATA = \"data\",\n NETWORKING = \"networking\",\n SERVICES_AGREEMENT = \"services_agreement\",\n PAYMENT = \"payment\",\n EXPOSURE = \"exposure\",\n EARLY_ACCESS = \"early_access\",\n MARKET_ACCESS = \"market_access\",\n}\n\nexport enum RfpStatus {\n ACTIVE = \"ACTIVE\",\n CLOSED = \"CLOSED\",\n COMING_SOON = \"COMING_SOON\",\n IN_EXTENSION = \"IN_EXTENSION\",\n}\n","export enum SponsorRole {\n SME = \"Subject Matter Expert\",\n EXTERNAL_INNOVATION = \"External Innovation\",\n C_LEVEL = \"C-Level\",\n CORPORATE_DEVELOPMENT = \"Corporate Development\",\n VENTURE_CAPITAL = \"Venture Capital\",\n}\n\nexport enum SponsorLicenseType {\n PREMIUM = \"premium\",\n STANDARD = \"standard\",\n}\n","import { AnyTypeCurrentUser } from \"./users/show\";\n\nexport enum UserRole {\n SCIENTIST = 0,\n SPONSOR = 1,\n UNIVERSITY_ADMIN = 2,\n}\n\nexport type LoggedOutUser = {\n profile_info: Record;\n};\n\n// Note: We exclude UnfinishedOnboardingCurrentUser because those users will be redirected to onboarding when accessing the app\nexport type AnyUser = LoggedOutUser | AnyTypeCurrentUser;\n","import { BLOCKED_EMAIL_DOMAINS } from \"@constants\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { MouseEvent, lazy, useRef } from \"react\";\n\ndeclare global {\n interface Window {\n __skipJsPageTitleGeneration: boolean;\n analytics: any;\n hj: any;\n Canny: any;\n }\n const analytics: any;\n const hj: any;\n const Canny: any;\n}\n\nexport const isAsyncFunction = (fn) => {\n if (!fn) {\n return false;\n }\n\n if (fn.constructor.name === \"AsyncFunction\") {\n return true;\n }\n return false;\n};\n\nexport const getUserInfo = (currentUser) => {\n if (!currentUser) return {};\n\n const userInfo = Object.assign({}, currentUser);\n const profileInfo = Object.assign({}, currentUser.profile_info);\n\n profileInfo.profile_role = profileInfo?.role;\n profileInfo.profile_verified = profileInfo?.verified;\n\n delete userInfo.profile_info;\n delete userInfo.image;\n delete userInfo.verification_code;\n\n delete profileInfo.id;\n delete profileInfo.user_id;\n delete profileInfo.updated_at;\n delete profileInfo.created_at;\n delete profileInfo.role;\n delete profileInfo.followed_companies_info;\n delete profileInfo.followed_research_interests;\n delete profileInfo.followed_rfp_programs;\n delete profileInfo.followed_request_ids;\n delete profileInfo.proposals;\n delete profileInfo.verified;\n\n const userProperties = {\n ...userInfo,\n ...profileInfo,\n };\n\n return userProperties;\n};\n\n/**\n * Helper singleton that does nothing for methods that require a function input.\n */\nexport const emptyFunction = () => {};\n\nexport const identify = (currentUser) => {\n window?.analytics?.identify(currentUser.id, getUserInfo(currentUser));\n if ([\"development\", \"staging\"].some((s) => gon?.global?.env?.includes(s))) {\n console.debug(`Analytics: identify() %o`, getUserInfo(currentUser));\n }\n};\n\nexport const page = () => {\n window?.analytics?.page();\n if ([\"development\", \"staging\"].some((s) => gon?.global?.env?.includes(s))) {\n console.debug(`Analytics: page()`);\n }\n};\n\n/**\n * TODO: Replace eventName with SegmentEventName once all callers have been migrated.\n */\nexport const track = (eventName: string, info: any = {}) => {\n if (eventName === SegmentEventName.View || eventName === SegmentEventName.Click) {\n info.current_url = window.location.href;\n }\n\n window?.analytics?.track(eventName, info);\n if ([\"development\", \"staging\"].some((s) => gon?.global?.env?.includes(s))) {\n console.debug(`Analytics: track(%s) %o`, eventName, info);\n }\n};\n\nexport const waypoint = (eventName: string) => {\n window?.hj?.(\"event\", eventName);\n};\n\nexport const isJson = (str) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n};\n\nexport const setSearchParam = (history, name, value, push = false) => {\n const searchParams = new URLSearchParams(location.search);\n searchParams.set(name, value);\n\n if (push) {\n history.push({\n pathname: location.pathname,\n search: searchParams.toString(),\n });\n } else {\n history.replace({\n pathname: location.pathname,\n search: searchParams.toString(),\n });\n }\n};\n\nexport const deleteSearchParam = (history, name) => {\n const searchParams = new URLSearchParams(location.search);\n if (searchParams.has(name)) {\n searchParams.delete(name);\n history.replace({ search: searchParams.toString() });\n }\n};\n\nexport const usedPersonalEmail = (email) => {\n for (const domain of BLOCKED_EMAIL_DOMAINS) {\n if (email.endsWith(`@${domain}`)) {\n return true;\n }\n }\n return false;\n};\n\nexport const debounce = (functionToDebounce, delay = 300) => {\n let timer;\n\n const debounceRef = useRef((...args) => {\n clearTimeout(timer);\n\n timer = setTimeout(() => functionToDebounce(...args), delay);\n });\n\n return debounceRef.current;\n};\n\n/**\n * @deprecated - Move to Rails https://www.notion.so/halodotscience/Move-page-title-setting-to-Rails-side-9c6592da85e644dca8fea1fb413c03c1?pvs=4\n */\nexport const setPageTitle = (pathname: string): void => {\n if (window.__skipJsPageTitleGeneration) {\n return;\n }\n\n const format = (param: string, ignoreNum = false): string =>\n param\n .replace(/-/g, \" \")\n .split(\" \")\n .flatMap((word: string): string[] => {\n if (parseInt(word) && ignoreNum) return [];\n return [word.charAt(0).toUpperCase() + word.slice(1)];\n })\n .join(\" \");\n\n const path = pathname.split(/[/,?]+/);\n let title = \"Funding Opportunities with Industry\";\n\n if (path[1] === \"company\" && path[2]) {\n title = `Funding Opportunities with ${format(path[2], false)}`;\n }\n if (path[1] === \"research\" && path[2] && !path[3]) {\n title = `Funding Opportunities in ${format(path[2])}`;\n }\n if (path[1] === \"research\" && path[2] && path[3]) {\n // Rfp pages set their own title\n return;\n }\n if (path[1] === \"profile\" && path[2]) {\n const formattedName = format(path[2].slice(0, path[2].lastIndexOf(\"-\")));\n title = `${formattedName}'s profile`;\n }\n\n document.title = title;\n};\n\n// Fix for ChunkLoadError\n// https://gist.github.com/raphael-leger/4d703dea6c845788ff9eb36142374bdb\nexport const lazyWithRetry = (componentimport) =>\n lazy(async () => {\n const pageHasAlreadyBeenForceRefreshed = JSON.parse(\n window.localStorage?.getItem(\"page-has-been-force-refreshed\") ?? \"false\"\n );\n\n try {\n const component = await componentimport();\n\n window.localStorage?.setItem(\"page-has-been-force-refreshed\", \"false\");\n\n return component;\n } catch (error) {\n if (!pageHasAlreadyBeenForceRefreshed) {\n // Assuming that the user is not on the latest version of the application.\n // Let's refresh the page immediately.\n window.localStorage?.setItem(\"page-has-been-force-refreshed\", \"true\");\n return window.location.reload();\n }\n\n // The page has already been reloaded\n // Assuming that user is already using the latest version of the application.\n // Let's let the application crash and raise the error.\n throw error;\n }\n });\n\nexport const stopPropagation = (event: MouseEvent) => event.stopPropagation();\n\nexport const compactStringArray = (array: string[]): string[] => {\n if (typeof array !== \"object\") return [];\n\n const compactedArray = array.filter((item) => typeof item === \"string\" && item.trim().length > 0);\n\n return compactedArray;\n};\n\nexport const getArrayFromRubyRange = (range: string): [number, number] => {\n if (!range?.includes(\"...\")) throw new Error(\"Invalid Ruby range\");\n\n return [Number(range[0]), Number(range.split(\"...\")[1]) - 1];\n};\n\nexport const getRubyRangeFromArray = (array: [number, number]): string => {\n return `${array[0]}...${array[1] + 1}`;\n};\n\n// Currently only works with scalar members\nexport const areUnorderedArraysEqual = (a: any[], b: any[]): boolean => {\n if (a.length !== b.length) return false;\n\n a.sort();\n b.sort();\n\n for (let i = 0; i < a.length; i += 1) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n};\n","import Appsignal from \"@appsignal/javascript\";\nimport { CREDENTIALS, ENV } from \"@constants\";\n\nimport { plugin as breadcrumbsPlugin } from \"@appsignal/plugin-breadcrumbs-console\";\nimport { plugin as networkBreadcrumbsPlugin } from \"@appsignal/plugin-breadcrumbs-network\";\nimport { plugin as pathDecoratorPlugin } from \"@appsignal/plugin-path-decorator\";\nimport { plugin as windowEventsPlugin } from \"@appsignal/plugin-window-events\";\nimport toast from \"@components/Toast\";\n\nconst appsignal = new Appsignal({\n key: CREDENTIALS.APPSIGNAL_FRONTEND_API_KEY,\n ignoreErrors: [/Can't verify CSRF token authenticity\\./, /Illegal invocation/],\n revision: ENV.HEROKU_SLUG_COMMIT,\n});\n\nappsignal.use(breadcrumbsPlugin);\nappsignal.use(networkBreadcrumbsPlugin);\nappsignal.use(windowEventsPlugin);\nappsignal.use(pathDecoratorPlugin);\n\nappsignal.addDecorator((span) => {\n return span.setTags({ currentUserId: gon.current_user_id, url: window.location.href });\n});\n\nif (gon?.global?.env === \"development\") {\n appsignal.addOverride((span: any) => {\n console.error(\"Appsignal error: \", span._data);\n toast.error(\"Appsignal error reported. Printed details to console.\");\n return span;\n });\n}\n\nexport default appsignal;\n","import type { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { UserOption } from \"@components/library/Dropdowns/UserDropdown\";\nimport { CompanyMember } from \"@tsTypes/users/_company_member\";\n\nexport const getOptionFromValue = (value: string | undefined | null): DropdownOption | null =>\n value\n ? {\n value: value,\n label: value,\n }\n : null;\n\nexport const getValueFromOption = (option: DropdownOption | null): string | undefined =>\n option?.value ?? undefined;\n\nexport const generateEmailDropdownOptions = (\n companyMembers: CompanyMember[],\n excludedEmails: string[] = [],\n onlyLicensed = false\n): UserOption[] => {\n if (companyMembers.length > 0) {\n return companyMembers.flatMap((sponsorUser) => {\n // Skip if missing info\n if (\n !(sponsorUser.email && sponsorUser.first_name && sponsorUser.last_name && sponsorUser.image)\n ) {\n return [];\n }\n\n // Skip if user is already in the list\n if (excludedEmails.some((excludedEmail) => excludedEmail === sponsorUser.email)) {\n return [];\n }\n\n // Skip if only showing premium and user is not premium\n if (onlyLicensed && !sponsorUser.profile_info.license) {\n return [];\n }\n\n return {\n value: sponsorUser.email,\n label: sponsorUser.first_name + \" \" + sponsorUser.last_name,\n user: {\n name: sponsorUser.first_name + \" \" + sponsorUser.last_name,\n image: {\n medium: {\n url: sponsorUser.image.medium.url,\n },\n },\n id: sponsorUser.id,\n email: sponsorUser.email,\n profile_info: {\n isAdmin: sponsorUser.profile_info.is_admin,\n license: sponsorUser.profile_info.license,\n },\n },\n };\n });\n }\n\n return [];\n};\n\n// Returns array of dropdown options in descending order\nexport const getYearOptions = (top = new Date().getFullYear(), bottom = 1950): DropdownOption[] => {\n return Array.from({ length: top - bottom + 1 }, (_, i) => top - i).map((year) => ({\n label: String(year),\n value: String(year),\n }));\n};\n","import i18n from \"@locales\";\nimport { ShowSubscription } from \"@tsTypes/subscriptions/show\";\nimport { ReactElement } from \"react\";\nimport ReactDOMServer from \"react-dom/server\";\nimport { Link } from \"react-router-dom\";\n\nexport const t = (\n scope: string | string[],\n interpolations?: { [k: string]: string | number | null }\n): string => {\n const finalScope = typeof scope === \"string\" ? scope : scope[scope.length - 1];\n if (finalScope.endsWith(\"_html\"))\n throw new Error(\"HTML interpolation not allowed. Use t_html instead.\");\n\n return i18n.t(scope, interpolations);\n};\n\nexport const scientistNetworkName = (subscription: ShowSubscription | null) => {\n if (subscription?.features.global_network_search) {\n return t(\"models.company_network_scientist.scientist_public_network_name\");\n }\n return t(\"models.company_network_scientist.scientist_network_name\");\n};\n\n// Custom wrapper around t that allows for safe HTML interpolation of _html suffixed scopes\nexport const t_html = (\n scope: string | string[],\n interpolations?: { [k: string]: string | number | ReactElement | null }\n): ReactElement => {\n const finalScope = typeof scope === \"string\" ? scope : scope[scope.length - 1];\n if (!finalScope.endsWith(\"_html\")) throw new Error(\"No HTML interpolation. Use t instead.\");\n\n const escapedInterpolations = interpolations\n ? Object.fromEntries(\n Object.entries(interpolations).map(([k, v]) => [k, ReactDOMServer.renderToString(v as any)])\n )\n : {};\n\n // eslint-disable-next-line react/no-danger\n return ;\n};\n\nexport const t_link = (\n scope: string | string[],\n link: Link | HTMLAnchorElement,\n interpolations?: { [k: string]: string | number | null }\n): ReactElement => {\n if (!link || (!(\"to\" in link.props) && !(link.type !== \"a\")))\n throw new Error(\"`link` must be a Link or anchor element\");\n\n const finalScope = typeof scope === \"string\" ? scope : scope[scope.length - 1];\n\n const translation = finalScope.endsWith(\"_html\")\n ? t_html(scope, interpolations).props.dangerouslySetInnerHTML.__html\n : t(scope, interpolations);\n\n if (!translation.includes('[missing \"%{link}\" value]'))\n throw new Error(\"Translation must include %{link}\");\n\n const parts = translation.split('[missing \"%{link}\" value]');\n\n return (\n \n {parts[0]}\n {link}\n {parts[1]}\n \n );\n};\n","// Generates a redux action with type only (no payload)\nexport const emptyActionGenerator = (type) => () => ({ type });\n\n// Generates a redux action with type and payload\nexport const payloadActionGenerator = (type) => (payload) => ({ type, payload });\n","import toast from \"@components/Toast\";\nimport { t } from \"@utils/i18n\";\n\nexport const authenticityToken = (): string | undefined => {\n const token = document.querySelector('meta[name=\"csrf-token\"]');\n if (token && token instanceof window.HTMLMetaElement) {\n return token.content;\n }\n return undefined;\n};\n\nexport const getCookie = (name) => {\n const v = document.cookie.match(\"(^|;) ?\" + name + \"=([^;]*)(;|$)\");\n return v ? v[2] : null;\n};\n\nexport const getUrlParameter = (name) => {\n const trimmed = name.replace(/[[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\n const regex = new RegExp(\"[\\\\?&]\" + trimmed + \"=([^&#]*)\");\n const results = regex.exec(location.search);\n return results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\n};\n\nexport const toastErrorHandler = (error, _variables?, _context?): void => {\n toast.error(\n t([\"error\", error.status ? \"default_with_code\" : \"default\"], { status: error.status })\n );\n};\n","import { IconName } from \"@components/library/Icon/Icon\";\nimport { RfpStatus } from \"@tsTypes/rfps\";\nimport { Request, Rfp } from \"@tsTypes/schema\";\nimport dayjs from \"dayjs\";\n\nexport const getRfpProgramName = (\n rfpProgramIdentifier: string | undefined | null\n): IconName | undefined => {\n switch (rfpProgramIdentifier) {\n case \"agriculture\": {\n return \"Agriculture\";\n }\n case \"hygiene\": {\n return \"Hygiene\";\n }\n case \"food\": {\n return \"Food\";\n }\n case \"materials\": {\n return \"Materials\";\n }\n case \"medicine\": {\n return \"Medicine\";\n }\n case \"water\": {\n return \"Water\";\n }\n default: {\n return undefined;\n }\n }\n};\n\nexport const checkRfpCompanyHidden = (rfp, user) => {\n if (!rfp.company.company_name) {\n return true;\n }\n if (!rfp.confidential) {\n return false;\n }\n const rfpProposals = user.profile_info?.proposals?.filter(\n (proposal) => proposal.request_for_proposal_id === rfp.id\n );\n if (rfpProposals?.length) {\n for (const proposal of rfpProposals) {\n if (!checkRfpCompanyHiddenForProposal(rfp, proposal)) return false;\n }\n }\n return true;\n};\n\nexport const checkRfpCompanyHiddenForProposal = (rfp, proposal) => {\n if (!rfp?.confidential) {\n return false;\n }\n return true;\n};\n\n/**\n * @deprecated (justinpchang) Use getLaunchableRequestStatus instead\n */\nexport const getRfpStatus = (request) => {\n const isBeforeLaunchDate = dayjs().isBefore(request.requestable.launch_date ?? 0);\n const isPastDeadline =\n Boolean(request.requestable.deadline) && dayjs().isAfter(request.requestable.deadline ?? 0);\n\n if (isBeforeLaunchDate) return RfpStatus.COMING_SOON;\n if (request.enabled)\n if (isPastDeadline) return RfpStatus.IN_EXTENSION;\n else return RfpStatus.ACTIVE;\n return RfpStatus.CLOSED;\n};\n\nexport const getRfpStatusText = (request, { comingSoon, active, inExtension, pastDeadline }) => {\n switch (getRfpStatus(request)) {\n case RfpStatus.COMING_SOON: {\n return comingSoon;\n }\n case RfpStatus.ACTIVE: {\n return active;\n }\n case RfpStatus.IN_EXTENSION: {\n return inExtension;\n }\n case RfpStatus.CLOSED: {\n return pastDeadline;\n }\n default: {\n return null;\n }\n }\n};\n\nexport const sortRfps = <\n T extends Pick & {\n requestable: Pick &\n Record;\n } & Record\n>(\n rfps: T[],\n withDisplayPriority = false\n): T[] => {\n const sortByDisplayPriority = (_rfps: T[]) =>\n _rfps.sort(\n (a, b) =>\n b.requestable.display_priority - a.requestable.display_priority ||\n new Date(a.requestable.deadline!).getTime() - new Date(b.requestable.deadline!).getTime() ||\n new Date(a.requestable.launch_date!).getTime() -\n new Date(b.requestable.launch_date!).getTime()\n );\n\n const activeRfps = rfps.filter((rfp) => getRfpStatus(rfp) === RfpStatus.ACTIVE);\n if (withDisplayPriority) sortByDisplayPriority(activeRfps);\n else\n activeRfps.sort(\n (a, b) =>\n new Date(a.requestable.deadline!).getTime() - new Date(b.requestable.deadline!).getTime()\n );\n\n const comingSoonRfps = rfps.filter((rfp) => getRfpStatus(rfp) === RfpStatus.COMING_SOON);\n if (withDisplayPriority) sortByDisplayPriority(comingSoonRfps);\n else\n comingSoonRfps.sort(\n (a, b) =>\n new Date(a.requestable.launch_date!).getTime() -\n new Date(b.requestable.launch_date!).getTime()\n );\n\n const pastDeadlineRfps = rfps.filter((rfp) => getRfpStatus(rfp) === RfpStatus.IN_EXTENSION);\n if (withDisplayPriority) sortByDisplayPriority(pastDeadlineRfps);\n else\n pastDeadlineRfps.sort(\n (a, b) =>\n new Date(b.requestable.deadline!).getTime() - new Date(a.requestable.deadline!).getTime()\n );\n\n const inactiveRfps = rfps.filter((rfp) => getRfpStatus(rfp) === RfpStatus.CLOSED);\n if (withDisplayPriority) sortByDisplayPriority(inactiveRfps);\n else\n inactiveRfps.sort(\n (a, b) =>\n new Date(b.requestable.deadline!).getTime() - new Date(a.requestable.deadline!).getTime()\n );\n\n return [...activeRfps, ...comingSoonRfps, ...pastDeadlineRfps, ...inactiveRfps];\n};\n","import { COLORS, JS_FONTS } from \"@constants\";\nimport ReactMarkdown from \"react-markdown\";\nimport gfm from \"remark-gfm\";\nimport Tooltip from \"../components/Tooltip\";\nimport { compactStringArray } from \"./appUtils\";\n\nexport const renderNewlines = (text) =>\n text?.split(\"\\n\").map((m, i) => (\n \n {i ?
: <>}\n {m}\n
\n ));\n\nexport const fixMarkdownNewlines = (text) => text?.trim().split(\"\\r\\n\").join(\" \\n\\n\");\n\nconst matchTooltip = (text) => {\n // searches for tooltips in the form of ????tooltip text ?learnmore=LINK_HERE????\n return text?.match(/\\?\\?\\?\\?(.*?)\\?\\?\\?\\?/s);\n};\n\nexport const withoutTooltip = (text) => {\n // remove all tooltip signifiers and contents (????????)\n return text?.replace(/~~\\?\\?\\?\\?.*?\\?\\?\\?\\?~~/gs, \"\");\n};\n\nconst renderTooltip = (text) => {\n if (!matchTooltip(text)) {\n return ;\n }\n\n const toolTipString = matchTooltip(text) && matchTooltip(text)[1];\n const toolTipWithoutLink = toolTipString.replace(/\\?learnmore=.*/i, \"\");\n\n const linkMatch = toolTipString.match(/\\?learnmore=(.*)/i);\n const linkString = linkMatch && linkMatch[1];\n\n return (\n \n \n \n );\n};\n\nexport const renderMarkdownText = (section: string | null, customStyle?) => {\n if (section?.length) {\n // markdown styles\n const styles = {\n heading: {\n marginTop: \"1em\",\n marginBottom: \"1em\",\n },\n p: {\n ...JS_FONTS.REGULAR_1,\n },\n li: {\n lineHeight: \"30px\",\n },\n ul: {\n marginLeft: \"18px\",\n width: \"100%\",\n ...JS_FONTS.REGULAR_1,\n },\n hr: {\n marginTop: \"45px\",\n marginBottom: \"45px\",\n borderTop: `2px solid ${COLORS.NEUTRAL_200}`,\n },\n bold: {\n fontWeight: 600,\n },\n img: {\n maxWidth: \"100%\",\n height: \"auto\",\n marginTop: \"1em\",\n marginBottom: \"1em\",\n },\n ...customStyle, // overwrite defaults\n };\n // split for tooltip here\n /* eslint-disable react/no-children-prop */\n return (\n {\n return

;\n },\n h2: ({ node, ...props }) => {\n return

;\n },\n h3: ({ node, ...props }) => {\n return

;\n },\n h4: ({ node, ...props }) => {\n return
;\n },\n h5: ({ node, ...props }) => {\n return
;\n },\n h6: ({ node, ...props }) => {\n return
;\n },\n // update p style\n p: ({ node, children, ...props }) => {\n return

;\n },\n // Open anchor links in new tab\n a: ({ node, children, ...props }) => {\n return ;\n },\n strong: ({ node, children, ...props }) => {\n return ;\n },\n // update horizontal line style\n hr: ({ node, ...props }) => {\n return


;\n },\n // Apply special styles to li and ul with correct spacing.\n li: ({ node, ...props }) => (\n // @ts-ignore\n // eslint-disable-next-line react/no-unknown-property\n
  • \n ),\n // @ts-ignore\n // eslint-disable-next-line react/no-unknown-property\n ul: ({ node, ...props }) =>
      ,\n // @ts-ignore\n // eslint-disable-next-line react/no-unknown-property\n ol: ({ node, ...props }) =>
        ,\n // custom tooltip in strikethrough block\n del: ({ node, children, ...props }) => {\n if (children.length === 3 && matchTooltip(children.join(\"\"))) {\n const rawText = children[0] + (children[1] as any)?.props.href + children[2];\n return renderTooltip(rawText);\n }\n return renderTooltip(children[0]);\n },\n img: ({ node, src, alt, ...props }) => {\n return {alt;\n },\n }}\n >\n {section}\n \n );\n }\n};\n\nexport const convertToSnakeCase = (text) => text?.replace(/ /g, \"_\").toLowerCase();\n\nexport const truncate = (str, n) => {\n return str?.substr(0, n - 1) + (str.length > n ? \"...\" : \"\");\n};\n\nexport const bulletTextToStringArray = (bulletText: string | null): string[] => {\n if (!bulletText?.startsWith(\"* \")) return [];\n\n return compactStringArray(bulletText.substring(2).split(\"\\n* \"));\n};\n\nexport const stringArrayToBulletText = (list: string[]): string => {\n return `* ${compactStringArray(list).join(\"\\n* \")}`;\n};\n\nexport const getInitials = (text) => {\n if (!text) return;\n\n const allNames = text.trim().split(\" \");\n const initials = allNames.reduce((acc, curr, index) => {\n return index === 0 || index === allNames.length - 1\n ? `${acc}${curr.charAt(0).toUpperCase()}`\n : acc;\n }, \"\");\n return initials;\n};\n\nexport const isValidURL = (url) =>\n RegExp(/^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/).test(\n url\n );\n\nexport const formatBytes = (bytes, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n};\n\nexport const formatMIMEContentType = (type) => {\n switch (type) {\n case \"image/jpeg\":\n return \"JPG\";\n case \"image/png\":\n return \"PNG\";\n case \"application/pdf\":\n return \"PDF\";\n default:\n return type;\n }\n};\n\nexport const startsWithVowel = (text: string): boolean => {\n if (typeof text !== \"string\" || text.length === 0) return false;\n\n const firstLetterLowercase = text[0].toLowerCase();\n if ([\"a\", \"e\", \"i\", \"o\", \"u\"].includes(firstLetterLowercase)) return true;\n return false;\n};\n\nexport const isTrimmedLengthInRange = (\n text: string,\n lowerBound: number,\n upperBound?: number\n): boolean => {\n if (typeof text !== \"string\") return false;\n\n const trimmedText = text.trim();\n if (upperBound && trimmedText.length >= lowerBound && trimmedText.length <= upperBound) {\n return true;\n }\n if (!upperBound && trimmedText.length >= lowerBound) {\n return true;\n }\n return false;\n};\n\nexport const listArrayElements = (array: any[]): string => {\n switch (array.length) {\n case 0: {\n return \"\";\n }\n case 1: {\n return String(array[0]);\n }\n case 2: {\n return `${String(array[0])} and ${String(array[1])}`;\n }\n default: {\n const lastElement = array.slice(-1);\n return `${array.slice(0, array.length - 1).join(\", \")} and ${String(lastElement)}`;\n }\n }\n};\n\nexport const capitalize = (string: string): string => {\n return `${string[0].toUpperCase()}${string.slice(1)}`;\n};\n\nexport const copyLinkToClipboard = async (currentUserId?: number, link?: string) => {\n const text = constructLinkWithReferrer(currentUserId, link);\n\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch (error) {\n console.error(\"Failed to copy text: \", error);\n throw error;\n }\n};\n\nconst constructLinkWithReferrer = (currentUserId?: number, link?: string): string => {\n let url = link ?? window.location.href;\n\n if (currentUserId) {\n const urlObj = new URL(url);\n urlObj.searchParams.set(\"referrer_id\", currentUserId.toString());\n url = urlObj.toString();\n }\n\n return url;\n};\n","import { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { getCompanyNamesForOnboarding } from \"@requests/companies\";\nimport { getOptionFromValue } from \"@utils/dropdownUtils\";\nimport { useEffect, useState } from \"react\";\n\nfunction useCompanyOptions(): [DropdownOption[], (e, { value }) => void] {\n const [companyOptions, setCompanyOptions] = useState([]);\n\n const addCompanyOption = (e, { value }) => {\n const newOption = getOptionFromValue(value);\n if (newOption) setCompanyOptions([newOption, ...companyOptions]);\n };\n\n useEffect(() => {\n (async () => {\n const { companies } = await getCompanyNamesForOnboarding();\n\n setCompanyOptions(companies.map(getOptionFromValue) as DropdownOption[]);\n })();\n }, []);\n\n return [companyOptions, addCompanyOption];\n}\n\nexport default useCompanyOptions;\n","import { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport api from \"@requests/request\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useEffect, useState } from \"react\";\n\nfunction useUniversityOptions(): DropdownOption[] {\n const [universitiesOptions, setUniversitiesOptions] = useState([]);\n\n useEffect(() => {\n (async () => {\n const responseJson = await api.get(\"/universities\");\n\n const universities = (responseJson?.data?.universities ?? []).map((text) => ({\n key: convertToSnakeCase(text),\n text: text,\n value: text,\n label: text,\n }));\n\n setUniversitiesOptions(universities);\n })();\n }, []);\n\n return universitiesOptions;\n}\n\nexport default useUniversityOptions;\n"],"names":["StyledStatusCircle","styled","div","margin","color","COLORS","GREEN_400","StatusCircle","children","_jsx","Toaster","ToastContainer","attrs","enableMultiContainer","containerId","position","autoClose","hideProgressBar","closeOnClick","closeButton","rtl","pauseOnFocusLoss","theme","draggable","pauseOnHover","GREEN","FONTS","MEDIUM_1","WHITE","RED","toast","success","message","toastify","className","error","styles","StyleSheet","create","Tooltip","height","right","top","Tooltip_popupContents","_objectSpread","JS_FONTS","REGULAR_3","padding","Tooltip_link","HALO_BLUE","popupStyles","borderColor","maxWidth","borderRadius","zIndex","PureComponent","constructor","props","super","toggle","isOpen","this","setState","timeoutToggle","timeout","clearTimeout","setTimeout","renderTrigger","_this$props","customTrigger","iconColor","customTriggerStyle","iconName","Icon","name","onMouseLeave","questionIcon","purpleQuestionIcon","blueQuestionIcon","src","css","state","renderLearnMoreLink","_this$props2","linkUrl","linkText","href","target","rel","render","_this$props3","text","Popup","hoverable","onMouseEnter","trigger","open","onClose","onOpen","style","_jsxs","Button","variant","to","isExternalLink","openInNewTab","size","width","iconPosition","id","type","disabled","form","onClick","onFocus","onBlur","dataTestId","StyledComponent","StyledLink","StyledButton","undefined","as","ButtonContent","BaseStyles","RED_600","RED_200","RED_100","BLUE_LIGHT_400","BLUE_LIGHT_300","ORANGE_700","PINK_700","BLUE_600","RED_700","RED_300","BLUE_LIGHT_500","BLUE_LIGHT_350","ORANGE","PINK_600","BLUE_650","includes","button","BUTTON_1","HEADING_5_MEDIUM","BUTTON_2","Link","IconButton","tooltipText","tooltipWidth","tooltipPosition","hideTooltip","shouldPortalTooltip","BLACK","PINK_800","iconButton","content","remainOnHover","asPortal","SIZES","xs","sm","md","RED_50","BLUE_LIGHT_250","PINK_50","NEUTRAL_300","NEUTRAL_200","NEUTRAL_50","PINK_100","NEUTRAL_100","PINK_200","SORT_STATES","Map","inverted","next","SortButton","sortDirection","setSortDirection","get","IconContainer","title","data","_Fragment","hasDivider","Divider","Label","NEUTRAL_350","label","OptionLabel","option","metaData","isActive","selectValue","value","Option","optionColor","optionDescription","Content","LabelContainer","rightLabelEl","OptionDescription","isDisabled","MoreActionsOptionLabel","MoreActionsOption","REGULAR_2","SEMIBOLD_2","NEUTRAL_400","WINDOW_DIMENSIONS","MOBILE_MEDIA_QUERY","EmailDropdown","options","maxMenuHeight","maxValueContainerHeight","placeholder","onChange","setError","formatCreateLabel","input","isPortal","UserDropdown","newValue","emails","map","e","errorMsg","forEach","email","Validator","usedPersonalEmail","creatable","inputValue","Add","KeywordsDropdownOption","innerRef","innerProps","isSelected","__isNew__","CheckboxLabel","ref","isNew","Checkbox","viewBox","fill","xmlns","fillRule","clipRule","d","stroke","strokeLinecap","strokeLinejoin","CheckboxText","MEDIUM_2","KEYWORD_TYPE_TO_CLASS","discipline","area_of_expertise","ANALYTICS_UI_COMPONENT","SuggestionType","KeywordsDropdown","keywordType","targetType","currentUserKeywords","labelFont","instructionText","withSuggestions","autoPopulateFn","menuPlacement","helpText","errors","_useState2","_slicedToArray","useState","allKeywords","setAllKeywords","_useState4","suggestions","setSuggestions","_useState6","defaultOptions","setDefaultOptions","_useState8","setOptions","_useState10","isInputSuggestionsLoading","setIsInputSuggestionsLoading","useEffect","keywords","getDisciplines","getAreasOfExpertise","_options","usedKeywords","disciplines","length","push","getOptionFromValue","areas_of_expertise","filter","keyword","debouncedGetKeywordSuggestionsForValue","useCallback","debounce","getKeywordSuggestionsBySimilarity","debouncedGetKeywordSuggestionsForInput","getSuggestionsForValue","async","values","withDebounce","formatOptionsWithSuggestions","querySuggestions","v","suggested","fuse","useMemo","Fuse","threshold","testid","minValues","maxValues","labelEl","Boolean","InstructionText","t","min","max","placeholderText","MultiSelectDropdown","components","indicatorButton","track","SegmentEventName","Click","ui_component","react_component","keyword_type","target_type","KeywordsDropdownCreateLabel","handleChange","actionMeta","newValues","getValueFromOption","action","suggestion_type","at","onInputChange","search","r","item","slice","getSuggestionsForInput","then","inputSuggestions","filterOption","isLoading","isCreatable","onCreateOption","createKeyword","CREATED","withSearchIcon","withChevronIcon","SuggestionsContainer","suggestion","index","Suggestion","s","VALUE_SUGGESTION","num_remaining_suggestions","DropdownIndicator","selectProps","MoreActionsDropdown","menuHorizontalPosition","menuWidth","portal","portalOffsetRight","setPortalOffsetRight","element","document","getElementById","window","innerWidth","Number","getBoundingClientRect","uuidv4","Dropdown","classNamePrefix","formatOptionLabel","formatGroupLabel","DropdownGroup","onSelect","menuPosition","menuPortalTarget","body","menu","base","menuList","display","flexDirection","menuPortal","left","cursor","menuShouldBlockScroll","Select","DROPDOWN_STYLES","isFocused","NoCheckboxOption","ValueContainer","_ref","_objectWithoutProperties","_excluded","StyledValueContainer","NEUTRAL_500","IndicatorButtonContainer","MultiValueRemove","ClearIndicator","placeholderColor","isOptional","noOptionsMessage","labelBottomMargin","withCheckbox","_components","isMulti","closeOnMenuSelect","searchFn","isClearable","createFilter","ignoreAccents","loadOptions","query","callback","isAsyncFunction","debouncedLoadOptions","shouldHideOptions","Array","hasAnyError","hasError","AsyncDropdownComponent","AsyncCreatableDropdown","AsyncDropdown","SyncDropdownComponent","SyncCreatableDropdown","SyncDropdown","valueContainerRef","useRef","dropdown","current","cacheOptions","hideSelectedOptions","closeMenuOnSelect","menuIsOpen","maxHeight","Container","DropdownLabel","FormLabel","HelpText","ErrorMessage","errorMessage","span","MultiSelectDropdownBaseStyles","AsyncSelect","MULTI_SELECT_TAG_STYLES","AsyncCreatableSelect","CreatableSelect","MEDIUM_3","meta","context","CreateLabel","ProfilePicture","user","OptionName","TagContainer","profile_info","isAdmin","AdminTag","license","LicenseTag","OptionEmail","LabelText","MultiValueLabel","otherProps","Select_","CreatableSelect_","STYLES","ONE_LINE","p","IndicatorSeparator","multiValue","fontSize","multiValueRemove","backgroundColor","SHADOW_B","xxs","lg","xl","xxl","numericSize","svg","getSvg","strokeWidth","cx","cy","x","y","rx","x1","y1","x2","y2","mask","maskType","maskUnits","gradientUnits","stopColor","offset","transform","clipPath","ChipsInput","selectedValues","disabledValues","gap","hideAll","isExpanded","setIsExpanded","areAllSelected","chips","Chips","ChipCheckbox","checked","handleAllChange","nonDisabledValues","selectedValue","RemovableInputWrapper","onRemove","TextInput","optional","characterLimit","warningLimit","hideClearButton","textarea","rows","resize","startingHeight","hasExceededCharacterLimit","hasExceededWarningLimit","TextArea","autoComplete","InputContainer","Input","ClearButton","newEvent","handleClear","errorIcon","CharacterLimit","hasWarning","ErrorRow","forwardRef","inputStyles","resizeGrabber","Tabs","activeTab","setActiveTab","tabs","activeColor","font","tabDistance","hoveredTab","setHoveredTab","Shadow","TabsContainer","tab","key","TabWrapper","Tab","count","InfoTag","ORANGE_900","withNewTag","NewTagContainer","accent","TABLET_LANDSCAPE_MEDIA_QUERY","Background","mode","zIndexBase","Wrapper","TABLET_MEDIA_QUERY","StyledModal","SHADOW_D","Header","HeaderContent","SubHeader","ONE_LINE_ALT","HeaderText","HEADING_4_SEMIBOLD","hr","hasHeader","CloseButton","BlankModal","closeOnDimmerClick","headerText","headerIconName","subHeaderText","subHeaderIconName","hideCloseButton","disableBackgroundScroll","backgroundMode","onKeyDown","event","code","addEventListener","modals","querySelectorAll","anchor","querySelector","overflow","removeEventListener","modal","preventDefault","stopPropagation","tabIndex","role","ReactDOM","SlideModalBase","direction","customCloseButton","hideBackdrop","shouldShowModal","setShouldShowModal","dispatch","useDispatch","handleClose","setMessengerOffsetRight","DEFAULT_MESSENGER_OFFSET_RIGHT","modalEl","clientWidth","Modal","InvitedUserProfilePicture","Outline","PROFILE_PICTURE_SIZE_STYLES","forMulti","isUserHidden","bgColor","didImageError","setDidImageError","defaultBgColor","image","medium","url","Picture","alt","onError","getInitials","img","REGULAR_4","ICON_SIZE","LEFT_ICON_MARGIN","RIGHT_ICON_MARGIN","BACKGROUND_TYPE","light","dark","neutral","XS_STYLES","TAG_MEDIUM_3","SM_STYLES","TAG_MEDIUM_2","MD_STYLES","TAG_SEMIBOLD_1","StyledTag","isValid","border","shouldTruncate","Tag","LicenseTagTooltip","shouldFlex","subscription","useSelector","company","plan","SponsorLicenseType","PREMIUM","SuperAdminTag","ORANGE_500","isMissingRequired","HEADING_5_SEMIBOLD","withFlexDirectionColumn","ORANGE_100","SEMIBOLD_3","Required","TooltipWrapper","tags","isHovered","setIsHovered","displayedTags","setDisplayedTags","updatedTags","tag","updatedTag","cloneElement","timeoutRef","toggleShow","newState","View","columns","Math","ceil","contentWidth","arrowOffsetTop","shouldWrap","showTooltip","setShowTooltip","childrenRef","childrenHeight","clientHeight","childrenWidth","clientRect","tooltipVerticalOffset","innerHeight","documentElement","scrollTop","tooltipHorizontalOffset","scrollLeft","ChildrenContainer","createPortal","PortaledTooltip","ContentContainer","Arrow","NonPortaledTooltip","StyledTooltip","Preview","ProgressBar","percentage","Thumbnail","Name","Info","NEUTRAL_600","RemoveButtonContainer","isInbox","isForUpload","isImage","MessageAttachment","attachment","uploadPercentage","filename","size_in_bytes","mime_content_type","thumbnail_url","fileSize","formatBytes","formatMIMEContentType","startsWith","Banner","isSticky","Text","StandardBanner","icon","link","history","useHistory","setIsSticky","onScrollSticky","scrollY","MARGIN_TOP","isExternal","location","subtitle","Title","Subtitle","BLUE_LIGHT_100","HEADING_3_REGULAR","marginLeft","BLUE_GRADIENT","TAG_ACCENT","TAG_BOLD_2","setIsOpen","hideText","hasFilters","countTagBackgroundColor","BLUE_LIGHT_600","GradientButton","TextButton","iconSize","BUTTON_4","BUTTON_3","TextLink","underline","newTab","$underline","Card","minHeight","showHoverBorder","NEUTRAL_250","SHADOW_CARD","SHADOW_C","EXTRA_WIDE_MEDIA_QUERY","DESKTOP_MEDIA_QUERY","CompanyAvatar","imageUrl","isPrivate","setHasError","Avatar","_props$selectProps","DropdownIndicatorComponent","SelectableDropdown","isSearchable","portalMenuWidth","SelectOrCreateDropdown","createOptionComponent","onCreate","optionsWithCreate","hasCreateOption","_ref$placeholder","UniversityDropdown","universityOptions","useUniversityOptions","keys","InfoBanner","shouldDisplay","hideIcon","isChecked","isPartiallyChecked","isReversed","setIsFocused","checkboxRef","isFocusedRef","click","CheckboxContainer","renderCheckIcon","renderPartialCheckIcon","REGULAR_1","isLabelString","OneLineSpan","SEMIBOLD_1","MultiTextInput","sublabel","itemName","asTextArea","tooltipContent","tooltipOffsetTop","tooltipArrowOffsetTop","checkbox","inputKeysRef","didAddOrRemoveRef","hiddenInputRef","focus","blur","lastInputId","lastInput","some","entry","addButtonText","startsWithVowel","inputs","Inputs","HiddenInput","i","inputComponent","handleInputChange","splice","InputTooltip","handleRemove","currentKey","isValueChecked","SublabelText","hasItems","handleAdd","uniqueId","isInitiallyOpen","inputRef","isExpandedRef","textInput","Top","ErrorsContainer","CustomOption","SearchSuggestionLabel","SearchSuggestion","CreateOptionLabel","createOptionText","NoOptionsMessage","getValue","selectOption","filteredChildren","SuggestedOptionsHeader","SuggestedOptionLabel","SuggestedOptionText","NoOptionsLabel","getStyles","_props$innerProps","restInnerProps","_extends","_objectDestructuringEmpty","SearchBarDropdown","suggestedOptions","connectionType","renderLocation","setInputValue","debouncedSearchOptions","searchSuggest","Component","allowCreateWhileLoading","openMenuOnFocus","DropdownStyles","Switch","labelLeft","labelRight","disabledColor","hasTwoLabels","SwitchContainer","ReactSwitch","onColor","offColor","uncheckedIcon","checkedIcon","activeBoxShadow","handleDiameter","restProps","AltChipCheckbox","ProfilePictureContainer","PageContainer","hasTopDivider","hasPaddingTop","hasPaddingBottom","hasOverflowHidden","Children","DESKTOP_MIN_WIDTH_MEDIA_QUERY","DESKTOP_MIN_CONTENT_WIDTH","DESKTOP_MIN_CONTENT_WIDTH_MEDIA_QUERY","DEFAULT_MAX_WIDTH","PAGE_SIDE_PADDING","TABLET_SIDE_PADDING","ProgressStep","stepNumber","isCurrent","isComplete","needsUpdate","formVariant","stepStyle","Attention","StepNumber","ORANGE_300","ErrorModal","Body","Message","ButtonContainer","SimpleConfirmationModal","onConfirm","confirmIconName","confirmButtonText","HEADING_3_SEMIBOLD","Span","Pagination","currentPage","setCurrentPage","totalPages","marginTop","pageNumbers","getPageButtonNumbers","from","_","pageNumber","BOLD_2","RequestStatusIcon","status","ORANGE_200","GREEN_200","GREEN_800","XMoreWrapper","maxLines","maxTags","invisibleTags","setInvisibleTags","debouncedWidth","setDebouncedWidth","timer","tagsWithIds","tagWithId","clearInterval","firstTag","firstTagTopOffset","pageYOffset","tagsToDisplay","finalRowTags","currentTag","currentTagTopOffset","currentRow","round","xMoreTagElement","finalRowTagWidths","tagElement","offsetWidth","container","containerWidth","remainingTagsCount","finalRowTotalTagWidth","reduce","a","b","textContent","pop","hiddenTags","InvisibleTags","TagTooltip","XMore","getMargin","users","displayedUserCount","single","displayedUsers","shouldShowAdditionalUsers","MultiReviewersContainter","AdditionalParticipants","isInputFocused","setIsInputFocused","TooltipContainer","TruncatedText","lines","textWidth","withTooltip","isTruncated","setIsTruncated","windowWidth","textRef","offsetHeight","scrollHeight","scrollWidth","textElement","MultiUserPreview","NameContainer","StyledName","UserAssociation","_ref$size","_ref$userRole","userRole","UserRole","SCIENTIST","_ref$tooltipPosition","isMessageButtonHovered","setIsMessageButtonHovered","currentUser","profiles","_ref2","isLinkDisabled","withMessageButton","messengerData","_ref3","showSponsorRoles","isExternalLead","association","SPONSOR","asLink","profile_id","TopRow","setMessengerState","handleMessageClick","is_super_admin","SuperAdminTagContainer","PremiumTagContainer","TWO_LINES","obj","flag","gon","feature_flags","ENABLED_TOURS","TourIdentifier","PROPOSAL_REVIEW_SYSTEM_FEEDBACK_DEADLINE_V2_2024_10_31","isTourEnabled","tour","BLUE_450","BLUE_500","BLUE_700","BLUE_750","BLUE_900","BLUE_LIGHT_50","BLUE_LIGHT_650","BLUE_LIGHT_700","GREEN_50","GREEN_100","GREEN_300","GREEN_500","GREEN_600","GREEN_700","GREEN_750","NEUTRAL_0","NEUTRAL_700","NEUTRAL_800","NEUTRAL_900","NEUTRAL_950","ORANGE_50","ORANGE_400","ORANGE_600","ORANGE_800","PINK_300","PINK_400","PINK_500","RED_500","PENDING","OPEN","QUALIFIED","SHORTLISTED","FINALIST","DECLINED","FUNDED","APPSIGNAL_FRONTEND_API_KEY","ABLY_FRONTEND_API_KEY","GOOGLE_API_KEY","ABLY_CHANNELS","HALO_ID","BASF_ID","PEPSICO_ID","FUEL_ID","countriesData","getData","uk","find","country","sort","countryData","WITH_DOWNLOAD_PROPOSAL_AS_PDF","process","HEROKU_SLUG_COMMIT","HEADING_1_BOLD","HEADING_1_SEMIBOLD","HEADING_2_SEMIBOLD","HEADING_4_BOLD","HEADING_4_REGULAR","HEADING_5_BOLD","HEADING_5_REGULAR","HEADING_JUMBO","HEADING_BANNER","SEMIBOLD_4","BOLD_1","BOLD_3","TAG_MEDIUM_1","TAG_SEMIBOLD_2","TAG_BOLD_3","TAG_REGULAR_1","fontWeight","lineHeight","HALO_INTRO_LINK","GET_MORE_SEATS","ROLES_AND_PERMISSIONS_FAQS","NORMAL","MATERIALS","OTHER_SUBMISSION_BULLETS","CORTEVA","UNIVERSITY_SUBMISSION_BULLETS","STARTUP_SUBMISSION_BULLETS","COMPOUND_EXAMPLES","DESIGN_PRINCIPLE_EXAMPLES","RATIONALE_EXAMPLES","TESTING4AG","SHADOW_A","SHADOW_E","THREE_LINES","HERO_MEDIA_QUERY","EXTRA_WIDE","DESKTOP","TABLET_LANDSCAPE","TABLET","MOBILE","BASE_WINDOW_WIDTH","DESKTOP_MIN_WIDTH","RFP_FORM_CHARACTER_LIMITS","SCIENTIST_ROLES","I18n","en","SET_MESSENGER_DATA","CLEAR_MESSENGER_STATE","SET_MESSENGER_THREAD","SET_HAS_UNREAD_MESSAGE","SET_IS_MESSENGER_OPEN","SET_IS_MESSENGER_MINIMIZED","SET_IS_MESSENGER_EXPANDED","IS_MESSENGER_THREAD_LOADING","SET_MESSENGER_OFFSET_RIGHT","setMessengerData","payloadActionGenerator","clearMessengerState","setMessengerThread","setHasUnreadMessage","setIsMessengerOpen","setIsMessengerMinimized","setIsMessengerExpanded","setIsMessengerThreadLoading","fetchCurrentThreadByProposal","userId","proposalyType","proposalyId","response","getMessageThreadByUserProposal","batch","message_thread","unread_for_current_user","fetchCurrentThreadByParticipants","scientistUserId","recipientUserId","getMessageThreadByRecipients","initialState","messengerThread","hasUnreadMessage","isMessengerMinimized","isMessengerOpen","isMessengerExpanded","isMessengerThreadLoading","messengerOffsetRight","messengerReducer","payload","getCompanyForCompanyPage","api","identifier","toLocaleLowerCase","params","is_for_company_page","accessCode","prompt","access_code","secondError","alert","marketplacePath","Error","getCompany","console","getAllCompanies","sortBy","abortSignal","for_marketplace","page_number","sort_by","signal","getCompanyFollowSuggestions","request","for_suggested_follows","companies","getCompanyNamesForOnboarding","for_onboarding","uploadCompanyVideo","videoBlob","formData","FormData","append","post","uploadCompanyImage","imageBlob","followUnfollowCompany","updateCompanyInfo","companyInfo","put","createCompanyResearchInterest","companyId","summary","requestForProposalIds","isOpenCallActive","company_id","request_for_proposal_ids","is_open_call_active","updateCompanyResearchInterest","deleteCompanyResearchInterest","delete","getCompanyResearchInterestsBySlug","company_identifier","slug","company_research_interests","getCompanyMarketplaceCompanies","keywordsFilter","withActiveRfpsFilter","withActiveOpenCallsFilter","withActiveRfsFilter","company_marketplace_path","keywords_filter","with_active_rfps_filter","with_active_open_calls_filter","with_active_rfs_filter","getCompanyMarketplaceFilterOptions","company_marketplace_filter_options_path","requestToJoinCompanyNetwork","is_from_digest","requestToJoinCompanyNetworkFromDigest","company_name","companyIdentifier","company_network_scientist","appsignal","sendError","setAction","setTags","getCompanyNetworkScientist","scientistProfileId","scientist_profile_id","search_suggest_company_network_scientists_path","connection_type","getCompanyNetworkScientistsForAccountSettings","for_account_settings","inviteScientistsToCompanyNetwork","addScientistToCompanyNetwork","getKeywords","err","by_similarity","join","getKeywordSuggestionsByContent","requestData","suggestions_keywords_path","request_data","getMessageThreads","search_filter","searchFilter","message_type_filter","requestIdFilter","getMessages","messageThreadId","addMessageToThread","attachmentIds","message_thread_id","attachment_ids","source","pathname","setDraftMessage","proposaly_id","proposaly_type","getDraftMessage","user_id","scientist_user_id","recipient_user_id","createMessageThread","uploadAttachment","file","setUploadPercentage","onUploadProgress","progressEvent","loaded","total","aborted","DEFAULT_RETRY_COUNT","axios","headers","Accept","authenticityToken","FEATURE_FLAGS","SESSION_TIMEOUT","interceptors","use","res","getRequest","request_path","getRequestsForReviewerDashboard","requests_path","for_reviewer_dashboard","toggleRequestEnabled","requestId","shouldEnable","enabled","request_id","getMarketplaceRequests","requestTypesFilter","partnerTypesFilter","request_type_filter","partner_type_filter","requests","scores","getCommercialApplicationPageRequests","commercialApplicationId","pageNum","commercial_application_id","page_num","getResearchAreaPageRequests","rfp_program_identifier","rfpProgramIdentifier","getRequestsForSponsorDropdowns","filterByReviewTeamAccess","for_sponsor_dropdowns","filter_by_review_team_access","getExpertRequests","for_expert","addReviewers","getRequestProposalsForReviewSystem","requestPath","requestable_type","RequestableType","RFP","OPEN_CALL","REQUEST_FOR_STARTUP","review_system_proposals_request_for_startup_proposals_path","REQUEST_FOR_EXPERT","review_system_proposals_request_for_expert_proposals_path","is_for_review_system","proposal_id","proposalId","country_filter","countryFilter","organization_type_filter","organizationTypeFilter","organization_name_filter","organizationNameFilter","request_solutions_filter","requestSolutionsFilter","trl_filter","trlFilter","evaluation_status_filter","evaluationStatusFilter","bookmarked_only_filter","bookmarkedOnlyFilter","criterion_leaders_only_filter","criterionLeadersOnlyFilter","sort_direction","setRequestFeedbackDeadline","deadline","feedback_deadline","getCanSubmitProposal","can_submit","formatPathForRouter","toString","replace","tabbed_marketplace_path","proposalyPagePath","request_for_expert_proposal_path","SegmentEventObject","LaunchableRequestStatus","RequestFeedbackDeadlineStatus","RequestPartnerTypes","RequestProposalSortBy","RfpPartnershipModel","PARTNERSHIP_MODEL_LABELS","SPONSORED_RESEARCH","GIFT","CO_DEVELOPMENT","EQUITY_INVESTMENT","SUPPLY_PURCHASE","LICENSING","MATERIAL_TRANSFER","SERVICES_AGREEMENT","CAPSTONE_PROJECT","CONSULTING_PROJECT","RfpBenefitType","RfpStatus","SponsorRole","fn","getUserInfo","userInfo","Object","assign","profileInfo","profile_role","profile_verified","verified","verification_code","updated_at","created_at","followed_companies_info","followed_research_interests","followed_rfp_programs","followed_request_ids","proposals","emptyFunction","identify","analytics","global","env","debug","page","eventName","info","current_url","waypoint","hj","isJson","str","JSON","parse","deleteSearchParam","searchParams","URLSearchParams","has","domain","BLOCKED_EMAIL_DOMAINS","endsWith","functionToDebounce","delay","args","setPageTitle","__skipJsPageTitleGeneration","format","param","ignoreNum","split","flatMap","word","parseInt","charAt","toUpperCase","path","lastIndexOf","lazyWithRetry","componentimport","lazy","pageHasAlreadyBeenForceRefreshed","localStorage","getItem","component","setItem","reload","compactStringArray","array","trim","getArrayFromRubyRange","range","getRubyRangeFromArray","areUnorderedArraysEqual","Appsignal","CREDENTIALS","ignoreErrors","revision","ENV","breadcrumbsPlugin","networkBreadcrumbsPlugin","windowEventsPlugin","pathDecoratorPlugin","addDecorator","currentUserId","current_user_id","addOverride","_data","generateEmailDropdownOptions","companyMembers","excludedEmails","onlyLicensed","sponsorUser","first_name","last_name","excludedEmail","is_admin","getYearOptions","Date","getFullYear","bottom","year","String","scope","interpolations","i18n","scientistNetworkName","features","global_network_search","t_html","escapedInterpolations","fromEntries","entries","k","ReactDOMServer","dangerouslySetInnerHTML","__html","t_link","translation","parts","emptyActionGenerator","token","HTMLMetaElement","getCookie","cookie","match","toastErrorHandler","_variables","_context","getRfpProgramName","checkRfpCompanyHidden","rfp","confidential","rfpProposals","proposal","request_for_proposal_id","checkRfpCompanyHiddenForProposal","getRfpStatus","isBeforeLaunchDate","dayjs","isBefore","requestable","launch_date","isPastDeadline","isAfter","COMING_SOON","IN_EXTENSION","ACTIVE","CLOSED","getRfpStatusText","comingSoon","active","inExtension","pastDeadline","sortRfps","rfps","withDisplayPriority","sortByDisplayPriority","_rfps","display_priority","getTime","activeRfps","comingSoonRfps","pastDeadlineRfps","inactiveRfps","renderNewlines","m","fixMarkdownNewlines","matchTooltip","withoutTooltip","renderTooltip","toolTipString","toolTipWithoutLink","linkMatch","linkString","renderMarkdownText","section","customStyle","heading","marginBottom","li","ul","borderTop","bold","ReactMarkdown","remarkPlugins","gfm","disallowedElements","h1","node","h2","_excluded2","h3","_excluded3","h4","_ref4","_excluded4","h5","_ref5","_excluded5","h6","_ref6","_excluded6","_ref7","_excluded7","_ref8","_excluded8","strong","_ref9","_excluded9","_ref10","_excluded10","_ref11","_excluded11","ordered","_ref12","_excluded12","ol","_ref13","_excluded13","del","_ref14","_excluded14","rawText","_ref15","_excluded15","convertToSnakeCase","toLowerCase","truncate","n","substr","bulletTextToStringArray","bulletText","substring","stringArrayToBulletText","list","allNames","acc","curr","isValidURL","RegExp","test","bytes","decimals","dm","floor","log","parseFloat","pow","toFixed","firstLetterLowercase","isTrimmedLengthInRange","lowerBound","upperBound","trimmedText","listArrayElements","lastElement","capitalize","string","copyLinkToClipboard","constructLinkWithReferrer","navigator","clipboard","writeText","urlObj","URL","set","companyOptions","setCompanyOptions","addCompanyOption","newOption","universitiesOptions","setUniversitiesOptions","responseJson","universities"],"sourceRoot":""}