<script setup>
    const props = defineProps({
        isVisible: Boolean,
        type: {
            type: String,
            default: 'inline'
        },
        message: {
            type: String,
            default: 'commons.generating_otp'
        }
    })
</script>

<template>
    <div v-if="isVisible">
        <div v-if="type == 'fullscreen'" class="spinner-container">
            <div class="spinner-wrapper">
                <span id="icnSpinnerFull" class="is-size-1 spinner">
                    <FontAwesomeIcon :icon="['fas', 'spinner']" spin />
                </span>
                <span>{{ $t(message) }}</span>
            </div>
        </div>
        <div v-if="type == 'fullscreen-overlay'" class="spinner-overlay-container">
            <div class="spinner-wrapper">
                <span id="icnSpinnerFull" class="is-size-1 spinner">
                    <FontAwesomeIcon :icon="['fas', 'spinner']" spin />
                </span>
                <span>{{ $t(message) }}</span>
            </div>
        </div>
        <FontAwesomeIcon v-else-if="type == 'raw'" :icon="['fas', 'spinner']" spin />
        <div v-else class="has-text-centered mt-6">
            <span id="icnSpinner" class="is-size-4">
                <FontAwesomeIcon :icon="['fas', 'spinner']" spin />
            </span>
        </div>
    </div>
</template>

<style scoped>
.spinner-container,
.spinner-overlay-container {
    text-align: center;
    z-index: 100000;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.spinner-container,
.spinner-overlay-container {
    top: 25%;
    height: 50%;
}
.spinner {
    display: block;
}
</style>