43 lines
777 B
Vue
43 lines
777 B
Vue
<template>
|
|
<div class="alert" :style="{ 'border-color': color }">
|
|
<slot></slot>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
const { color } = defineProps({
|
|
color: {
|
|
type: String,
|
|
default: 'orange'
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped>
|
|
.alert {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 1rem;
|
|
border: 2px solid;
|
|
border-radius: 0.5rem;
|
|
background-color: var(--bg-elevated);
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.alert:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
.alert {
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.4);
|
|
}
|
|
|
|
.alert:hover {
|
|
box-shadow: 0 6px 8px rgba(0, 0, 0, 0.5);
|
|
}
|
|
}
|
|
</style>
|