add BaseAlert component

This commit is contained in:
axolotle 2023-08-28 14:44:39 +02:00
parent 4275efe402
commit 7c513154eb

38
components/BaseAlert.vue Normal file
View file

@ -0,0 +1,38 @@
<script setup lang="ts">
const props = withDefaults(
defineProps<{
message?: string
variant?: 'info' | 'success' | 'warning' | 'error'
icon?: string
assertive?: boolean
}>(),
{
message: '',
variant: 'info',
icon: undefined,
assertive: false,
},
)
const classVariant = computed(() => {
return {
info: 'alert-info',
success: 'alert-success',
warning: 'alert-warning',
error: 'alert-error',
}[props.variant]
})
</script>
<template>
<div
:aria-live="assertive ? 'assertive' : 'polite'"
aria-atomic="true"
:class="'mt-10 alert ' + classVariant"
>
<Icon v-if="icon" :name="icon" size="2em" aria-hidden="true" />
<slot name="default">
{{ message }}
</slot>
</div>
</template>