<!-- Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/ -->

<script setup lang="ts">
import { computed } from 'vue'

interface Props {
  rounded?: boolean
  label?: string
}

const props = withDefaults(defineProps<Props>(), {
  label: __('Content loader'),
})

const roundedClass = computed(() =>
  props.rounded ? 'rounded-full' : 'rounded-lg',
)
</script>

<template>
  <div
    tabindex="0"
    role="progressbar"
    aria-busy="true"
    aria-valuemin="0"
    aria-valuemax="100"
    :aria-label="$t(label)"
    :aria-valuetext="$t('Please wait until content is loaded')"
    class="bg-primary animate-pulse bg-blue-200 focus:outline-none focus-visible:rounded-sm focus-visible:outline-none focus-visible:outline-1 focus-visible:outline-offset-1 focus-visible:outline-blue-800 dark:bg-gray-700"
    :class="[roundedClass]"
  />
</template>