<script setup>
import { computed } from 'vue'
import { mdiTrendingDown, mdiTrendingUp, mdiTrendingNeutral } from '@mdi/js'
import CardBox from '@/Components/CardBox.vue'
import BaseLevel from '@/Components/BaseLevel.vue'
import PillTag from '@/Components/PillTag.vue'
import UserAvatar from '@/Components/UserAvatar.vue'

const props = defineProps({
  name: {
    type: String,
    required: true
  },
  login: {
    type: String,
    required: false
  },
  email: {
    type: String,
    required: false
  },
  date: {
    type: String,
    required: false
  },
  progress: {
    type: Number,
    default: 0
  },
  text: {
    type: String,
    default: null
  },
  type: {
    type: String,
    default: null
  }
})


const pillType = computed(() => {
  if (props.type) {
    return props.type
  }

  if (props.progress) {
    if (props.progress >= 60) {
      return 'success'
    }
    if (props.progress >= 40) {
      return 'warning'
    }

    return 'danger'
  }

  return 'info'
})

const pillIcon = computed(() => {
  return {
    success: mdiTrendingUp,
    warning: mdiTrendingNeutral,
    danger: mdiTrendingDown,
    info: mdiTrendingNeutral,
  }[pillType.value]
})

const pillText = computed(() => props.text ?? `${props.progress}%`)
</script>

<template>
  <CardBox
    class="mb-6 last:mb-0"
    hoverable
  >
    <BaseLevel>
      <BaseLevel type="justify-start">
        <UserAvatar
          class="w-12 h-12 mr-6"
          :username="props.name"
        />
        <div class="text-center md:text-left overflow-hidden">
          <h4 class="text-xl text-ellipsis ">
            {{ name }}
          </h4>
          <p class="text-gray-500 dark:text-slate-400">
            <!-- {{ date }} @ {{ login }} -->
            {{ email }}
          </p>
        </div>
      </BaseLevel>
      <PillTag
        :type="pillType"
        :text="pillText"
        small
        :icon="pillIcon"
      />
    </BaseLevel>
  </CardBox>
</template>
