{"version":3,"file":"LoginForm.cjs","sources":["../../common/LoginForm/LoginForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, VNode } from \"vue\";\n\nimport { Button } from \"../Button\";\nimport { Icon } from \"../Icon\";\nimport { TextField } from \"../TextField\";\nimport Image from \"./Image.vue\";\nimport { ExistingLoginObj, LoginFormClassesKey, LoginFormProps, SocialLoginObj } from \"./types\";\n\nconst {\n  socialLogins = [],\n  pill = false,\n  expandLabel = \"View More\",\n  collapseLabel = \"View Less\",\n  socialLoginMessage = \"We do not store any data related to your social logins.\",\n  showInput = true,\n  inputBtnLabel = \"\",\n  inputProps = {},\n  inputExpandBtnProps = {},\n  gridCols = 3,\n  inputBtnProps = {},\n  primaryBtn = \"social\",\n  classes = {} as Partial<Record<LoginFormClassesKey, string>>,\n  isExistingLogin = false,\n  existingLoginProps = {},\n  existingLabelInline = false,\n  divider = false,\n} = defineProps<LoginFormProps>();\nconst viewMoreOptions = ref(false);\nconst imagesLoaded = ref(false);\n\nconst emits = defineEmits<{\n  (e: \"onSocialLoginClick\", item: SocialLoginObj, index: number): void;\n  (e: \"onExistingLoginClick\", existingLoginDetails: ExistingLoginObj): void;\n  (e: \"onInputBtnClick\"): void;\n}>();\n\ndefineSlots<{\n  existingButton(): VNode;\n  formBody(): VNode;\n}>();\n\nconst getIcon = (provider: string) => {\n  if (provider === \"twitter\") {\n    return \"twitter-x\";\n  }\n  return provider;\n};\n\nconst toggleViewMoreOptions = () => {\n  viewMoreOptions.value = !viewMoreOptions.value;\n  if (viewMoreOptions.value) {\n    imagesLoaded.value = true;\n  }\n};\n\nconst isHiddenIcon = (index: number) => {\n  if (imagesLoaded.value) return false;\n  return !viewMoreOptions.value && index > 3;\n};\n</script>\n\n<template>\n  <div :class=\"['flex w-full flex-col', classes?.container]\">\n    <!-- TODO: update this to secondary button as per latest design system -->\n    <Button\n      v-if=\"isExistingLogin && existingLoginProps?.authConnection\"\n      :size=\"existingLabelInline ? 'xl' : 'md'\"\n      :pill=\"pill\"\n      :class=\"['mb-4', classes?.existingBtn]\"\n      data-testid=\"existing-login-btn\"\n      @click=\"emits('onExistingLoginClick', existingLoginProps)\"\n    >\n      <div v-if=\"!$slots?.existingButton\" class=\"flex items-center justify-center gap-3\">\n        <Icon\n          :name=\"existingLoginProps?.icon || ''\"\n          :class=\"['w-6', existingLoginProps?.iconStyle || '']\"\n          :size=\"existingLoginProps?.iconSize || '24'\"\n          data-testid=\"existing-login-icon\"\n        />\n        <p :class=\"['flex items-center gap-1 text-sm font-medium', { 'flex-col': existingLabelInline }]\" data-testid=\"existing-login-hint\">\n          <span class=\"capitalize\">{{ existingLoginProps?.label || \"Continue With\" }} {{ existingLoginProps?.authConnection || \"\" }}</span>\n          <span v-if=\"!existingLabelInline\" class=\"font-semibold\">{{ existingLoginProps.loginHint }}</span>\n          <span v-else class=\"font-semibold\">{{ existingLoginProps.loginHint }}</span>\n        </p>\n      </div>\n      <slot v-if=\"$slots?.existingButton\" name=\"existingButton\" />\n    </Button>\n    <div\n      v-if=\"socialLogins.length > 0\"\n      :class=\"[\n        'login-list -m-1 grid gap-4 overflow-y-hidden p-1',\n        { 'login-list--expand': viewMoreOptions, 'grid-cols-3': gridCols === 3, 'grid-cols-4': gridCols === 2 },\n        classes?.loginItemContainer,\n      ]\"\n      data-testid=\"login-factor-list\"\n    >\n      <div\n        v-for=\"(item, index) in socialLogins\"\n        :key=\"item.icon\"\n        :class=\"[\n          'group',\n          {\n            'col-span-3': !isExistingLogin && (item?.block || index === 0),\n            'col-span-2': gridCols === 2,\n            'col-span-4': gridCols === 2 && (item?.block || index === 0),\n          },\n        ]\"\n      >\n        <Button\n          type=\"button\"\n          :pill=\"pill\"\n          block\n          :aria-label=\"`${item.icon} Login Button`\"\n          variant=\"secondary\"\n          data-testid=\"login-factor\"\n          @click=\"emits('onSocialLoginClick', item, index)\"\n        >\n          <div v-if=\"index !== 0 || (index === 0 && primaryBtn !== 'social')\">\n            <Image :is-hidden=\"isHiddenIcon(index)\" :icon=\"getIcon(item.icon)\" />\n          </div>\n          <div v-if=\"primaryBtn === 'social' && index === 0\">\n            <Image :is-hidden=\"isHiddenIcon(index)\" :icon=\"getIcon(item.icon)\" :is-primary=\"!isExistingLogin\" />\n          </div>\n          <div v-if=\"item?.description && !isExistingLogin\" :class=\"['ml-2 flex flex-col items-center']\">\n            {{ item?.description }}\n          </div>\n        </Button>\n      </div>\n    </div>\n    <p\n      v-if=\"socialLoginMessage\"\n      :class=\"['text-app-gray-500 dark:text-app-gray-200 mt-4 text-xs font-medium', classes?.socialLoginMsg]\"\n      data-testid=\"social-login-msg\"\n    >\n      {{ socialLoginMessage }}\n    </p>\n    <div\n      v-if=\"socialLogins.length > 0 && socialLogins.length > 4\"\n      :class=\"['my-4 flex items-center justify-end', { 'my-2': divider }, classes?.expandBtnContainer]\"\n    >\n      <Button\n        variant=\"text\"\n        :pill=\"pill\"\n        v-bind=\"inputExpandBtnProps\"\n        :class=\"['text-sm font-medium', classes?.expandBtn]\"\n        data-testid=\"expand-collapse-btn\"\n        @click.stop=\"toggleViewMoreOptions\"\n      >\n        {{ viewMoreOptions ? collapseLabel : expandLabel }}\n      </Button>\n    </div>\n    <div v-if=\"divider\" class=\"mb-2 flex items-center gap-2\" data-testid=\"login-divider\">\n      <div class=\"bg-app-gray-200 dark:bg-app-gray-600 h-px w-full\" />\n      <span class=\"text-app-gray-600 dark:text-app-gray-200 text-sm font-normal\">or</span>\n      <div class=\"bg-app-gray-200 dark:bg-app-gray-600 h-px w-full\" />\n    </div>\n    <slot name=\"formBody\" />\n    <div v-if=\"showInput\" data-testid=\"login-input\">\n      <TextField v-bind=\"inputProps\" :pill=\"pill\" />\n      <Button\n        class=\"my-4\"\n        v-bind=\"inputBtnProps\"\n        :variant=\"!isExistingLogin && primaryBtn === 'input' ? 'primary' : 'tertiary'\"\n        :pill=\"pill\"\n        block\n        @click.stop=\"emits('onInputBtnClick')\"\n      >\n        {{ inputBtnLabel }}\n      </Button>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n.login-list {\n  max-height: 106px;\n  transition: max-height 0.3s;\n  transition-timing-function: cubic-bezier(0, 0.73, 0.71, 1);\n}\n\n.login-list--expand {\n  max-height: 500px;\n  transition: max-height 0.35s;\n  transition-timing-function: cubic-bezier(0.92, 0, 0.74, 1);\n}\n</style>\n"],"names":["viewMoreOptions","ref","imagesLoaded","emits","__emit","getIcon","provider","toggleViewMoreOptions","isHiddenIcon","index","_createElementBlock","_normalizeClass","__props","_createBlock","_unref","Button","_cache","$event","$slots","_openBlock","_hoisted_1","_createVNode","Icon","_createElementVNode","_hoisted_2","_toDisplayString","_hoisted_4","_hoisted_3","_renderSlot","_ctx","_Fragment","_renderList","item","_hoisted_5","Image","_hoisted_6","_hoisted_7","_mergeProps","_hoisted_8","_hoisted_9"],"mappings":"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"}