{"version":3,"file":"UAvatar.mjs","names":["makeComponentProps","makeTagProps","genericComponent","propsFactory","computed","Sizes","AvatarVariant","UIcon","makeUAvatarProps","_objectSpread","size","type","String","sm","required","variant","imagePath","avatarIcon","UAvatar","name","props","emits","click","e","setup","_ref","emit","slots","iconSize","sizeMapping","xs","md","lg","xl","classes","xxs","xxl","sizeClass","_defineProperty","_slots$default","_createVNode","value","onClick","concat","call"],"sources":["../../../src/components/UAvatar/UAvatar.tsx"],"sourcesContent":["import { makeComponentProps } from '@/composables/component'\nimport { makeTagProps } from '@/composables/tag'\nimport { genericComponent, propsFactory } from '@/utils'\nimport { ExtractPropTypes, PropType, computed } from 'vue'\nimport Sizes from '@/types/sizes'\nimport AvatarVariant from '@/types/avatarVariants'\nimport { UIcon } from '@/components/UIcon/UIcon'\n\nexport const makeUAvatarProps = propsFactory(\n  {\n    size: {\n      type: String,\n      default: Sizes.sm,\n      required: false,\n    },\n    variant: {\n      type: String,\n      default: AvatarVariant.default,\n      required: false,\n    },\n    imagePath: {\n      type: String,\n      default: '',\n      required: false,\n    },\n    avatarIcon: {\n      type: [String, null] as PropType<string | null>,\n      default: 'imageUser',\n      required: false,\n    },\n\n    ...makeComponentProps(),\n    ...makeTagProps(),\n  },\n  'UAvatar'\n)\n\nexport type UAvatarProps = ExtractPropTypes<typeof makeUAvatarProps>\n\nexport type UAvatarSlots = {\n  default: never\n}\n\nexport const UAvatar = genericComponent<UAvatarSlots>()({\n  name: 'UAvatar',\n\n  props: makeUAvatarProps(),\n\n  emits: {\n    click: (e: MouseEvent) => true,\n  },\n\n  setup(props, { emit, slots }) {\n    const avatarIcon = computed(() => {\n      return props.avatarIcon ? props.avatarIcon : ''\n    })\n\n    const iconSize = computed(() => {\n      const sizeMapping: Record<string, string> = {\n        xs: '16',\n        sm: '20',\n        md: '24',\n        lg: '28',\n        xl: '32',\n      }\n\n      return sizeMapping[props.size] || '32'\n    })\n\n    const classes = computed(() => {\n      const sizeMapping: Record<string, string> = {\n        xxs: 'h-[16px] w-[16px] text-[12px]',\n        xs: 'h-[24px] w-[24px] text-[12px]',\n        sm: 'h-[32px] w-[32px] text-[14px]',\n        md: 'h-[40px] w-[40px] text-[16px]',\n        lg: 'h-[48px] w-[48px] text-[18px]',\n        xl: 'h-[56px] w-[56px] text-[20px]',\n        xxl: 'h-[64px] w-[64px] text-[24px]',\n      }\n\n      const sizeClass =\n        sizeMapping[props.size] || 'h-[24px] w-[24px] text-[12px]'\n\n      return {\n        // eslint-disable-next-line max-len\n        'box-border flex items-center justify-center rounded-full overflow-hidden select-none cursor-pointer bg-gray-100 font-medium text-gray-600 active:shadow-xs-btn active:shadow-primary-100':\n          true,\n        [sizeClass]: true,\n      }\n    })\n\n    return () => (\n      <div class={['avatar', classes.value]} onClick={(e) => emit('click', e)}>\n        <img src={props.imagePath} alt=\"\" />\n        {avatarIcon.value && !props.imagePath ? (\n          <UIcon\n            icon={`$${props.avatarIcon}`}\n            color=\"gray-600\"\n            size={iconSize.value}\n          ></UIcon>\n        ) : null}\n        {props.imagePath === '' && !props.avatarIcon ? slots.default?.() : null}\n      </div>\n    )\n  },\n})\n"],"mappings":"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"}