<template>
  <div
    class="tw-pl-14 tw-p-1 tw-flex-1 tw-text-sm tw-rounded-full tw-h-12 tw-flex tw-items-center tw-justify-between tw-relative tw-overflow-hidden"
  >
    <AAvatar
      :text="nameData.initials"
      class="tw-absolute tw-inset-y-0 tw-left-0 tw-aspect-square tw-rounded-full"
    />

    <span>
      <span class="tw-block tw-font-semibold">{{ nameData.name || nameData.username }}</span>
      <span v-if="nameData.name" class="tw-text-opacity-75" :data-testid="testId">
        {{ nameData.username }}
      </span>
    </span>

    <slot />
  </div>
</template>

<script lang="ts" setup>
import { usePersonName } from '@/util'
import { SteeringUser } from '@/stores/auth'
import AAvatar from '@/components/generic/AAvatar.vue'

defineOptions({ compatConfig: { MODE: 3 } })

const props = defineProps<{
  user: SteeringUser
  testId?: string
}>()

const nameData = usePersonName(() => props.user)
</script>