{"version":3,"file":"js/9760-76323d7f6ce1175214ab.chunk.js","mappings":"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","sources":["webpack://halo/./app/client/src/components/Cards/BaseCardWide.tsx","webpack://halo/./app/client/src/components/Cards/CompanyCardWide.tsx","webpack://halo/./app/client/src/components/CompanyNetworkCta/RequestToJoinNetworkModal.tsx","webpack://halo/./app/client/src/tsTypes/companyNetworkScientists.ts","webpack://halo/./app/client/src/components/CompanyNetworkCta/CompanyNetworkCta.tsx"],"sourcesContent":["import { CompanyAvatar, Tag, XMoreWrapper } from \"@components/library\";\nimport { COLORS, FONTS, STYLES, WINDOW_DIMENSIONS } from \"@constants\";\nimport { RootState } from \"@redux/store\";\nimport { ReactNode, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\ninterface Props {\n to: string | Record<string, unknown>;\n isExternalLink?: boolean;\n openInNewTab?: boolean;\n title: string | ReactNode;\n subtitle: string | ReactNode;\n imageUrl: string | null;\n cornerContent?: ReactNode;\n tags: string[];\n buttons?: ReactNode;\n \"data-testid\"?: string;\n}\n\nexport default function BaseCardWide({\n to,\n isExternalLink = false,\n openInNewTab = false,\n title,\n subtitle,\n imageUrl,\n cornerContent,\n tags,\n buttons,\n \"data-testid\": dataTestId,\n}: Props) {\n const [areButtonsHovered, setAreButtonsHovered] = useState(false);\n const isMobile = useSelector((state: RootState) => state.window.isMobile);\n const windowWidth = useSelector((state: RootState) => state.window.width);\n const isCompactLayout = windowWidth <= WINDOW_DIMENSIONS.TABLET_LANDSCAPE;\n\n return (\n <CardLink\n to={!isExternalLink && !areButtonsHovered && !isMobile && to}\n href={isExternalLink && to}\n as={isExternalLink ? \"a\" : undefined}\n target={isExternalLink && openInNewTab ? \"_blank\" : undefined}\n rel={isExternalLink && openInNewTab ? \"noopener noreferrer\" : undefined}\n >\n <Container data-testid={dataTestId}>\n <Top onMouseOver={() => setAreButtonsHovered(false)}>\n <Content>\n <AvatarWrapper>\n <CompanyAvatar imageUrl={imageUrl} size={isCompactLayout ? \"md\" : \"lg\"} />\n </AvatarWrapper>\n <Text>\n <TitleGroup>\n <Title>{title}</Title>\n <Subtitle>{subtitle}</Subtitle>\n </TitleGroup>\n <CornerContent shouldWrap={isCompactLayout}>{cornerContent}</CornerContent>\n </Text>\n </Content>\n </Top>\n <Bottom>\n <Tags onMouseOver={() => setAreButtonsHovered(false)} data-testid=\"keywords\">\n <XMoreWrapper maxLines={isCompactLayout ? 2 : 1} maxTags={5}>\n {tags.map((tag) => (\n <Tag key={`${title}-tag-${tag}`} content={tag} />\n ))}\n </XMoreWrapper>\n </Tags>\n <Buttons\n onMouseEnter={() => setAreButtonsHovered(true)}\n onMouseLeave={() => setAreButtonsHovered(false)}\n data-testid=\"buttons\"\n >\n {buttons}\n </Buttons>\n </Bottom>\n </Container>\n </CardLink>\n );\n}\n\nconst CardLink = styled(Link)`\n display: block;\n :visited,\n :link {\n color: ${COLORS.BLACK};\n text-decoration: none;\n }\n`;\n\nconst Container = styled.div`\n border: 1px solid ${COLORS.NEUTRAL_250};\n border-radius: 8px;\n box-shadow: ${STYLES.SHADOW_CARD};\n min-width: 0;\n transition: box-shadow 0.2s ease;\n &:hover {\n box-shadow: ${STYLES.SHADOW_A};\n }\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n &:hover {\n box-shadow: ${STYLES.SHADOW_CARD};\n }\n }\n`;\n\nconst Top = styled.div`\n display: flex;\n padding: 24px;\n gap: 16px;\n margin-bottom: 32px;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n padding: 16px;\n }\n`;\n\nconst Content = styled.div`\n display: flex;\n gap: 32px;\n align-items: flex-start;\n flex: 1;\n padding: 8px 8px;\n min-width: 0;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n gap: 16px;\n }\n`;\n\nconst AvatarWrapper = styled.div`\n flex-shrink: 0;\n width: 50px;\n height: 50px;\n display: flex;\n align-items: center;\n min-width: 50px;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n width: 40px;\n height: 40px;\n min-width: 40px;\n }\n`;\n\nconst Text = styled.div`\n min-width: 0;\n flex: 1;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n gap: 8px;\n @media (min-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE + 1}px) {\n min-width: 200px;\n }\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n flex-wrap: wrap;\n align-items: flex-start;\n }\n`;\n\nconst TitleGroup = styled.div`\n display: flex;\n flex-direction: column;\n min-width: 0;\n flex: 1;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n min-width: 100px;\n flex: 1 1 100px;\n align-items: flex-start;\n\n }\n`;\n\nconst Title = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: nowrap;\n ${FONTS.HEADING_5_SEMIBOLD};\n overflow: hidden;\n margin-bottom: 8px;\n line-height: 1.4;\n white-space: normal;\n > span {\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n }\n > svg, > div {\n flex-shrink: 0;\n }\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n width: 100%;\n }\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET}px) {\n ${FONTS.SEMIBOLD_1};\n line-height: 1.2;\n width: 100%;\n }\n`;\n\nconst Subtitle = styled.div`\n display: flex;\n align-items: center;\n text-overflow: ellipsis;\n ${FONTS.SEMIBOLD_3};\n color: ${COLORS.NEUTRAL_500};\n margin-bottom: 0;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n width: 100%;\n justify-content: flex-start;\n }\n`;\n\nconst CornerContent = styled.div`\n height: fit-content;\n flex-shrink: 0;\n white-space: nowrap; \n font-size: 14px;\n color: ${COLORS.NEUTRAL_500};\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n flex: 0 0 max-content;\n margin-top: 8px;\n align-self: flex-start;\n text-align: left;\n width: 100%;\n }\n`;\n\nconst Bottom = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 32px;\n border-top: 1px solid ${COLORS.NEUTRAL_200};\n gap: 24px;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n flex-direction: column;\n align-items: flex-start;\n padding: 16px 24px;\n gap: 16px;\n }\n`;\n\nconst Tags = styled.div`\n flex: 1;\n min-width: 0;\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n order: 1;\n width: 100%;\n > div {\n justify-content: flex-start;\n > div {\n justify-content: flex-start;\n }\n }\n }\n`;\n\nconst Buttons = styled.div`\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n flex-shrink: 0;\n @media (min-width: 961px) {\n margin-left: auto;\n }\n @media (max-width: ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE}px) {\n order: 3;\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n width: 100%;\n margin-top: 8px;\n justify-content: flex-start;\n > * {\n flex: 0 0 auto;\n white-space: nowrap;\n }\n }\n @media (max-width: ${WINDOW_DIMENSIONS.MOBILE}px) {\n flex-direction: column;\n align-items: flex-start;\n width: 100%;\n > * {\n width: auto;\n }\n }\n`;","import CompanyNetworkCta from \"@components/CompanyNetworkCta\";\nimport { Button, Icon, Thumbnail } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { toggleLoginModal } from \"@redux/actions/profileActions\";\nimport { RootState } from \"@redux/store\";\nimport { MouseEvent } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport styled from \"styled-components\";\n// @ts-ignore\nimport { CompanyForCompanyCard, CompanyVerificationStatus } from \"@tsTypes/companies.js.erb\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { t } from \"@utils/i18n\";\nimport BaseCardWide from \"./BaseCardWide\";\n\ninterface Props {\n company: CompanyForCompanyCard;\n hideNetworkButton?: boolean;\n fromHref?: string;\n}\n\nconst CompanyCardWide = ({ company, hideNetworkButton = false, fromHref }: Props) => {\n const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n const isMobile = useSelector((state: RootState) => state.window.isMobile);\n\n const dispatch = useDispatch();\n const history = useHistory();\n\n const {\n company_name,\n identifier,\n verification_status,\n avatar,\n is_partner,\n members,\n research_interests,\n has_open_call,\n } = company;\n\n const handleOpenCallSubmitClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (currentUser.id) {\n history.push(`/submit/open_call/${identifier}?select=true`);\n } else {\n dispatch(\n toggleLoginModal({\n open: true,\n })\n );\n }\n };\n\n const isUnverified = verification_status !== CompanyVerificationStatus.VERIFIED;\n\n return (\n <BaseCardWide\n data-testid=\"company-card\"\n to={{ pathname: `/company/${identifier}`, fromHref }}\n title={\n <>\n <span data-testid=\"company-name\">{company_name}</span>\n {verification_status === CompanyVerificationStatus.VERIFIED && (\n <Icon name=\"Verified\" size=\"sm\" color={COLORS.HALO_BLUE} />\n )}\n </>\n }\n subtitle={\n is_partner && t(\"pages.marketplace.find_partners.company_card_wide.preferred_partner_badge\")\n }\n imageUrl={isUnverified ? null : avatar.url}\n cornerContent={\n !isUnverified &&\n members.length > 0 && (\n <Members>\n <Thumbnail users={members} size=\"xs\" displayedUserCount={3} />\n Team member{members.length > 1 ? \"s\" : \"\"}\n </Members>\n )\n }\n tags={research_interests}\n buttons={\n <>\n {isMobile && (\n <Link to={`/company/${identifier}`}>\n <Button type=\"button\" variant=\"secondary\" width=\"100%\">\n Learn more\n </Button>\n </Link>\n )}\n {has_open_call &&\n is_partner &&\n currentUser.role !== UserRole.SPONSOR &&\n currentUser.role !== UserRole.UNIVERSITY_ADMIN &&\n !isMobile && (\n <Button\n type=\"button\"\n onClick={handleOpenCallSubmitClick}\n variant=\"secondary\"\n size=\"sm\"\n width=\"fit-content\"\n >\n {t(\"components.buttons.open_call_submit\")}\n </Button>\n )}\n {!hideNetworkButton && (\n <CompanyNetworkCta\n company={company}\n buttonProps={{\n size: isMobile ? \"md\" : \"sm\",\n iconName: undefined,\n width: isMobile ? \"100%\" : \"fit-content\",\n }}\n />\n )}\n </>\n }\n />\n );\n};\n\nexport default CompanyCardWide;\n\nconst Members = styled.div`\n display: flex;\n align-items: center;\n gap: 6px;\n ${FONTS.MEDIUM_3};\n color: ${COLORS.NEUTRAL_500};\n`;\n","import { BlankModal, Button, Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { t, t_html } from \"@utils/i18n\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\nconst TIPS = [\n \"Include a short summary about your research\",\n \"Add at least five publications, patents or grants\",\n \"Upload a profile photo so they know it's you\",\n];\n\ninterface Props {\n isOpen: boolean;\n onClose: () => void;\n companyName: string;\n isCompanyVerified: boolean;\n profileId: string;\n}\n\nconst RequestToJoinNetworkModal = ({\n isOpen,\n onClose,\n companyName,\n isCompanyVerified,\n profileId,\n}: Props) => {\n return (\n <BlankModal isOpen={isOpen} onClose={onClose} width=\"620px\">\n <Container data-testid=\"join-network-modal\">\n <Content>\n <Header>\n <Icon name=\"Success\" color={COLORS.GREEN} size=\"xl\" />\n {t([\n \"components.scientist_network_cta.confirmation_modal.header\",\n isCompanyVerified ? \"verified\" : \"unverified\",\n ])}\n </Header>\n <Subheader>\n {t_html(\n [\n \"components.scientist_network_cta.confirmation_modal.subheader\",\n isCompanyVerified ? \"verified_html\" : \"unverified_html\",\n ],\n {\n company_name: companyName,\n }\n )}\n </Subheader>\n <List>\n Here are some tips to be more successful:\n {TIPS.map((tip: string) => (\n <Item key={tip}>\n <Icon name=\"Success\" color={COLORS.HALO_BLUE} size=\"md\" />\n {tip}\n </Item>\n ))}\n </List>\n <ButtonContainer>\n <Link to={`/profile/${profileId}`}>\n <Button size=\"md\" iconName=\"Arrow Right\" iconPosition=\"right\">\n Go to my profile\n </Button>\n </Link>\n </ButtonContainer>\n </Content>\n </Container>\n </BlankModal>\n );\n};\n\nexport default RequestToJoinNetworkModal;\n\nconst Container = styled.div`\n margin: 50px 50px 40px 50px;\n`;\n\nconst Content = styled.div`\n display: flex;\n flex-direction: column;\n gap: 30px;\n`;\n\nconst Header = styled.div`\n ${FONTS.HEADING_4_SEMIBOLD}\n\n display: flex;\n align-items: center;\n gap: 12px;\n`;\n\nconst Subheader = styled.div`\n ${FONTS.SEMIBOLD_2}\n`;\n\nconst List = styled.div`\n ${FONTS.REGULAR_2}\n`;\n\nconst Item = styled.div`\n display: grid;\n grid-template-columns: 30px auto;\n margin-top: 8px;\n`;\n\nconst ButtonContainer = styled.div`\n display: flex;\n justify-content: center;\n`;\n","export enum CompanyNetworkScientistStatus {\n PENDING = \"pending\",\n ACCEPTED = \"accepted\",\n REJECTED = \"rejected\",\n}\n\nexport enum CompanyNetworkScientistSource {\n SCIENTIST_REQUEST = \"scientist_request\",\n PROPOSAL_SUBMISSION = \"proposal_submission\",\n SPONSOR_INVITE = \"sponsor_invite\",\n SPONSOR_ADD_FROM_DIGEST = \"sponsor_add_from_digest\",\n SCIENTIST_REQUEST_FROM_DIGEST = \"scientist_request_from_digest\",\n}\n","import RequestToJoinNetworkModal from \"@components/CompanyNetworkCta/RequestToJoinNetworkModal\";\nimport toast from \"@components/Toast\";\nimport { Button, Icon, Tooltip } from \"@components/library\";\nimport { ButtonProps } from \"@components/library/Buttons/Button\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { finishFollowUnfollowCompany, toggleLoginModal } from \"@redux/actions/profileActions\";\nimport { RootState } from \"@redux/store\";\nimport { followUnfollowCompany } from \"@requests/companies\";\nimport {\n getCompanyNetworkScientist,\n requestToJoinCompanyNetwork,\n} from \"@requests/companyNetworkScientists\";\nimport { SegmentEventName, SegmentEventObject } from \"@tsTypes/__generated__/enums\";\n// @ts-ignore\nimport { CompanyVerificationStatus } from \"@tsTypes/companies.js.erb\";\nimport { CompanyForCard } from \"@tsTypes/companies/_for_card\";\nimport { CompanyNetworkScientistStatus } from \"@tsTypes/companyNetworkScientists\";\nimport { CompanyForCompanyPage } from \"@tsTypes/index\";\nimport { CompanyNetworkScientist } from \"@tsTypes/schema\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { track } from \"@utils/appUtils\";\nimport appsignal from \"@utils/appsignal\";\nimport { setPrevUrlCookie } from \"@utils/authUtils\";\nimport { t, t_link } from \"@utils/i18n\";\nimport { MouseEvent, useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport styled from \"styled-components\";\n\ninterface Props {\n company: CompanyForCompanyPage | CompanyForCard;\n buttonProps?: Pick<ButtonProps, \"size\" | \"width\" | \"iconName\">;\n}\n\nfunction CompanyPageNetworkCTA({ company, buttonProps }: Props) {\n const [requestToJoinNetworkModalOpen, setRequestToJoinNetworkModalOpen] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [companyNetworkScientist, setCompanyNetworkScientist] = useState<CompanyNetworkScientist>();\n\n const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n const dispatch = useDispatch();\n\n const { id, identifier, company_name, verification_status } = company;\n\n useEffect(() => {\n (async () => {\n if (currentUser.role === UserRole.SCIENTIST) {\n const response = await getCompanyNetworkScientist({\n scientistProfileId: currentUser.profile_info.id,\n companyId: company.id,\n });\n setCompanyNetworkScientist((response as any) ?? undefined);\n }\n })();\n }, []);\n\n const joinNetwork = async () => {\n setIsSubmitting(true);\n track(SegmentEventName.Click, {\n ...company,\n ui_component: \"Join Network Button\",\n react_component: \"CompanyPageNetworkCTA\",\n });\n\n try {\n const { company_network_scientist } = await requestToJoinCompanyNetwork(company.id);\n setRequestToJoinNetworkModalOpen(true);\n setCompanyNetworkScientist(company_network_scientist as any);\n } catch (e) {\n console.error(e.message);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const toggleFollow = async () => {\n setIsSubmitting(true);\n\n try {\n const response = await followUnfollowCompany(identifier);\n\n if (response.is_following) {\n toast.success(\n t_link(\n \"components.scientist_network_cta.toast_success\",\n <Link to=\"/account/?q=following\">Account Settings</Link>\n )\n );\n track(SegmentEventName.Follow, {\n ...company,\n object: SegmentEventObject.Company,\n });\n } else {\n track(SegmentEventName.Unfollow, {\n ...company,\n object: SegmentEventObject.Company,\n });\n }\n\n dispatch(\n finishFollowUnfollowCompany({\n company: response.company,\n isFollowing: response.is_following,\n })\n );\n } catch (e) {\n appsignal.sendError(e, (span) => {\n span.setAction(\"CompanyNetworkCta#toggleFollow\");\n span.setTags({\n companyIdentifier: String(identifier),\n currentUserId: currentUser.id,\n });\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n switch (currentUser.role) {\n case UserRole.SCIENTIST: {\n joinNetwork();\n break;\n }\n case UserRole.SPONSOR: {\n return;\n }\n case UserRole.UNIVERSITY_ADMIN: {\n toggleFollow();\n break;\n }\n default: {\n setPrevUrlCookie(window.location.href, 0);\n\n dispatch(toggleLoginModal({ open: true }));\n }\n }\n };\n\n const followedCompaniesInfo = currentUser.profile_info.followed_companies_info as {\n id: number;\n company_name: string;\n identifier: string;\n is_partner: boolean;\n }[];\n\n const isFollowing = followedCompaniesInfo\n ? followedCompaniesInfo.some((followedCompany) => followedCompany.id === id)\n : false;\n\n return (\n <>\n <RequestToJoinNetworkModal\n isOpen={requestToJoinNetworkModalOpen}\n onClose={() => setRequestToJoinNetworkModalOpen(false)}\n companyName={company_name ?? \"\"}\n isCompanyVerified={verification_status === CompanyVerificationStatus.VERIFIED}\n profileId={currentUser.profile_id}\n />\n <Container>\n {(() => {\n if (currentUser.role === UserRole.SPONSOR) return null;\n if (\n verification_status !== CompanyVerificationStatus.VERIFIED &&\n (companyNetworkScientist || isFollowing)\n ) {\n return (\n <BannerCtaSuccess>\n <Icon name=\"History\" color={COLORS.BLUE_LIGHT_600} size=\"xs\" />\n {t(\"components.scientist_network_cta.status.unverified\", {\n company_name: company_name,\n })}\n </BannerCtaSuccess>\n );\n }\n if (companyNetworkScientist) {\n return (\n <BannerCtaSuccess>\n <Icon name=\"Success\" color={COLORS.BLUE_LIGHT_600} size=\"xs\" />\n {t([\n \"components.scientist_network_cta.status\",\n companyNetworkScientist.status === CompanyNetworkScientistStatus.ACCEPTED\n ? \"accepted\"\n : \"pending\",\n ])}\n </BannerCtaSuccess>\n );\n }\n return (\n <Tooltip\n position=\"bottom\"\n contentWidth=\"100%\"\n shouldWrap={false}\n isActive={!(currentUser.role === UserRole.UNIVERSITY_ADMIN && isFollowing)}\n content={\n <TooltipText>\n {(() => {\n if (verification_status !== CompanyVerificationStatus.VERIFIED) {\n return t(\"components.scientist_network_cta.tooltip.unverified\", {\n company_name,\n });\n }\n if (currentUser.role === UserRole.UNIVERSITY_ADMIN) {\n return t(\"components.scientist_network_cta.tooltip.university_admin\");\n }\n return t(\"components.scientist_network_cta.tooltip.scientist\", {\n company_name,\n });\n })()}\n </TooltipText>\n }\n >\n <Button\n type=\"button\"\n size={buttonProps?.size ?? \"sm\"}\n iconName={buttonProps?.iconName}\n iconPosition=\"right\"\n width={buttonProps?.width ?? \"100%\"}\n onClick={handleClick}\n disabled={isSubmitting || currentUser.role === UserRole.SPONSOR}\n >\n {(() => {\n if (verification_status !== CompanyVerificationStatus.VERIFIED) {\n return t(\"components.scientist_network_cta.join_network_button.unverified\");\n }\n if (currentUser.role === UserRole.UNIVERSITY_ADMIN) {\n return t([\n \"components.scientist_network_cta.join_network_button.university_admin\",\n isFollowing ? \"unfollow\" : \"follow\",\n ]);\n }\n return t(\"components.scientist_network_cta.join_network_button.scientist\");\n })()}\n </Button>\n </Tooltip>\n );\n })()}\n </Container>\n </>\n );\n}\n\nconst Container = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n max-width: fit-content;\n padding: 0px;\n ${FONTS.REGULAR_2}\n text-align: center;\n`;\n\nconst BannerCtaSuccess = styled.div`\n ${FONTS.MEDIUM_3}\n color: ${COLORS.BLUE_900};\n display: flex;\n align-items: center;\n gap: 4px;\n margin-top: 8px;\n`;\n\nconst TooltipText = styled.div`\n text-align: center;\n`;\n\nexport default CompanyPageNetworkCTA;\n"],"names":["BaseCardWide","to","isExternalLink","openInNewTab","title","subtitle","imageUrl","cornerContent","tags","buttons","dataTestId","_useState2","_slicedToArray","useState","areButtonsHovered","setAreButtonsHovered","isMobile","useSelector","state","window","isCompactLayout","width","WINDOW_DIMENSIONS","TABLET_LANDSCAPE","_jsx","CardLink","href","as","undefined","target","rel","children","_jsxs","Container","Top","onMouseOver","Content","AvatarWrapper","CompanyAvatar","size","Text","TitleGroup","Title","Subtitle","CornerContent","shouldWrap","Bottom","Tags","XMoreWrapper","maxLines","maxTags","map","tag","Tag","content","Buttons","onMouseEnter","onMouseLeave","styled","Link","COLORS","BLACK","div","NEUTRAL_250","STYLES","SHADOW_CARD","SHADOW_A","FONTS","HEADING_5_SEMIBOLD","TABLET","SEMIBOLD_1","SEMIBOLD_3","NEUTRAL_500","NEUTRAL_200","MOBILE","CompanyCardWide","company","hideNetworkButton","fromHref","currentUser","profiles","dispatch","useDispatch","history","useHistory","company_name","identifier","verification_status","avatar","is_partner","members","research_interests","has_open_call","isUnverified","CompanyVerificationStatus","VERIFIED","pathname","_Fragment","Icon","name","color","HALO_BLUE","t","url","length","Members","Thumbnail","users","displayedUserCount","Button","type","variant","role","UserRole","SPONSOR","UNIVERSITY_ADMIN","onClick","e","preventDefault","id","push","toggleLoginModal","open","CompanyNetworkCta","buttonProps","iconName","MEDIUM_3","TIPS","RequestToJoinNetworkModal","isOpen","onClose","companyName","isCompanyVerified","profileId","BlankModal","Header","GREEN","Subheader","t_html","List","tip","Item","ButtonContainer","iconPosition","HEADING_4_SEMIBOLD","SEMIBOLD_2","REGULAR_2","CompanyNetworkScientistStatus","BannerCtaSuccess","BLUE_900","TooltipText","requestToJoinNetworkModalOpen","setRequestToJoinNetworkModalOpen","_useState4","isSubmitting","setIsSubmitting","_useState6","companyNetworkScientist","setCompanyNetworkScientist","useEffect","SCIENTIST","response","getCompanyNetworkScientist","scientistProfileId","profile_info","companyId","handleClick","stopPropagation","async","track","SegmentEventName","Click","_objectSpread","ui_component","react_component","company_network_scientist","requestToJoinCompanyNetwork","console","error","message","joinNetwork","followUnfollowCompany","is_following","toast","success","t_link","Follow","object","SegmentEventObject","Company","Unfollow","finishFollowUnfollowCompany","isFollowing","appsignal","sendError","span","setAction","setTags","companyIdentifier","String","currentUserId","toggleFollow","setPrevUrlCookie","location","followedCompaniesInfo","followed_companies_info","some","followedCompany","profile_id","BLUE_LIGHT_600","status","ACCEPTED","Tooltip","position","contentWidth","isActive","disabled"],"sourceRoot":""}