components/markdown/Alert.vue (79 lines of code) (raw):
<template>
<blockquote :class="`md-alert md-alert-${type}`">
<p>
<slot />
</p>
</blockquote>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
props: {
type: {
type: String,
default: 'info',
validator(value: string) {
return ['info', 'success', 'warning', 'danger'].includes(value)
}
}
}
})
</script>
<style lang="postcss" scoped>
.md-alert {
@apply rounded-lg;
@apply border-l-4;
}
/* Info */
.md-alert-info {
@apply bg-blue-100 border-blue-400;
}
.md-alert-info code {
@apply bg-blue-200 shadow-none border-0 text-current;
}
.md-alert-info .md-alert-icon {
@apply text-blue-400;
}
.md-alert-info .md-alert-content {
@apply text-blue-700;
}
/* Success */
.md-alert-success {
@apply bg-green-100 border-green-400;
}
.md-alert-success code {
@apply bg-green-200 shadow-none border-0 text-current;
}
.md-alert-success .md-alert-icon {
@apply text-green-400;
}
.md-alert-success .md-alert-content {
@apply text-green-700;
}
/* Warning */
.md-alert-warning {
@apply bg-orange-100 border-orange-400;
}
.md-alert-warning code {
@apply bg-orange-200 shadow-none border-0 text-current;
}
.md-alert-warning .md-alert-icon {
@apply text-orange-400;
}
.md-alert-warning .md-alert-content {
@apply text-orange-700;
}
/* Danger */
.md-alert-danger {
@apply bg-red-100 border-red-400;
}
.md-alert-danger code {
@apply bg-red-200 shadow-none border-0 text-current;
}
.md-alert-danger .md-alert-icon {
@apply text-red-400;
}
.md-alert-danger .md-alert-content {
@apply text-red-700;
}
</style>