{"version":3,"file":"SSOButton.mjs","sources":["../../../../../../../../../web/src/ui/b2b/components/SSOButton.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport React from 'react';\n\nimport { SSOIcon } from '../../../assets';\nimport { SsoKnownIdp } from '../../../utils/KnownIdp';\nimport Button from '../../components/atoms/Button';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport type { ssoIcons } from './Icons';\n\ntype SsoIconNames = keyof typeof ssoIcons;\n\nconst iconMap: Record<string, SsoIconNames> = {\n  'google-workspace': 'google',\n  'microsoft-entra': 'microsoft',\n  okta: 'okta',\n} satisfies Record<Exclude<SsoKnownIdp, 'generic'>, SsoIconNames>;\n\nexport interface SSOButtonProps {\n  connection: SSOActiveConnection;\n  onStart?: (connection: SSOActiveConnection) => void;\n}\n\nexport const SSOButton = ({ connection, onStart }: SSOButtonProps) => {\n  const { t } = useLingui();\n  const stytchClient = useStytch();\n  const { ssoOptions } = useConfig();\n  const { iconRegistry, options } = usePresentation();\n\n  const { connection_id, display_name, identity_provider } = connection;\n\n  const id = getButtonId(`sso-${display_name}`, options);\n\n  const onButtonClick = () =>\n    stytchClient.sso\n      .start({\n        connection_id,\n        signup_redirect_url: ssoOptions?.signupRedirectURL,\n        login_redirect_url: ssoOptions?.loginRedirectURL,\n        provider_params: ssoOptions?.providerParams,\n      })\n      .then(() => {\n        onStart?.(connection);\n      });\n\n  const iconName = iconMap[identity_provider];\n  const Icon = iconRegistry[iconName] ?? SSOIcon;\n\n  return (\n    <Button variant=\"outline\" onClick={onButtonClick} icon={<Icon />} id={id}>\n      {t({ id: 'provider.continueWith', message: `Continue with ${display_name}` })}\n    </Button>\n  );\n};\n"],"names":["iconMap","okta","SSOButton","connection","onStart","useLingui","stytchClient","useStytch","ssoOptions","useConfig","iconRegistry","options","usePresentation","connection_id","display_name","identity_provider","id","getButtonId","onButtonClick","sso","start","signup_redirect_url","signupRedirectURL","login_redirect_url","loginRedirectURL","provider_params","providerParams","then","iconName","Icon","SSOIcon","React","Button","variant","onClick","icon"],"mappings":";;;;;;;AAaA,MAAMA,OAAAA,GAAwC;IAC5C,kBAAA,EAAoB,QAAA;IACpB,iBAAA,EAAmB,WAAA;IACnBC,IAAAA,EAAM;AACR,CAAA;MAOaC,SAAAA,GAAY,CAAC,EAAEC,UAAU,EAAEC,OAAO,EAAkB,GAAA;AAC/D,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQC,SAAAA,EAAAA;AACd,IAAA,MAAMC,YAAAA,GAAeC,SAAAA,EAAAA;IACrB,MAAM,EAAEC,UAAU,EAAE,GAAGC,SAAAA,EAAAA;AACvB,IAAA,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAAE,GAAGC,eAAAA,EAAAA;AAElC,IAAA,MAAM,EAAEC,aAAa,EAAEC,YAAY,EAAEC,iBAAiB,EAAE,GAAGZ,UAAAA;AAE3D,IAAA,MAAMa,KAAKC,WAAAA,CAAY,CAAC,IAAI,EAAEH,cAAc,EAAEH,OAAAA,CAAAA;AAE9C,IAAA,MAAMO,gBAAgB,IACpBZ,YAAAA,CAAaa,GAAG,CACbC,KAAK,CAAC;AACLP,YAAAA,aAAAA;AACAQ,YAAAA,mBAAAA,EAAqBb,UAAAA,EAAYc,iBAAAA;AACjCC,YAAAA,kBAAAA,EAAoBf,UAAAA,EAAYgB,gBAAAA;AAChCC,YAAAA,eAAAA,EAAiBjB,UAAAA,EAAYkB;AAC/B,SAAA,CAAA,CACCC,IAAI,CAAC,IAAA;YACJvB,OAAAA,GAAUD,UAAAA,CAAAA;AACZ,QAAA,CAAA,CAAA;IAEJ,MAAMyB,QAAAA,GAAW5B,OAAO,CAACe,iBAAAA,CAAkB;AAC3C,IAAA,MAAMc,IAAAA,GAAOnB,YAAY,CAACkB,QAAAA,CAAS,IAAIE,OAAAA;AAEvC,IAAA,qBACEC,EAAA,CAAA,aAAA,CAACC,MAAAA,EAAAA;QAAOC,OAAAA,EAAQ,SAAA;QAAUC,OAAAA,EAAShB,aAAAA;AAAeiB,QAAAA,IAAAA,gBAAMJ,EAAA,CAAA,aAAA,CAACF,IAAAA,EAAAA,IAAAA,CAAAA;QAASb,EAAAA,EAAIA;;;;;AACRF,YAAAA,YAAAA,EAAAA;;;AAGlE;;;;"}