1<template> 2 <span :class="['status-icon', status]"> 3 <icon-info v-if="status === 'info'" /> 4 <icon-success v-else-if="status === 'success'" /> 5 <icon-warning v-else-if="status === 'warning'" /> 6 <icon-danger v-else-if="status === 'danger'" /> 7 <icon-secondary v-else /> 8 </span> 9</template> 10 11<script> 12import IconInfo from '@carbon/icons-vue/es/information--filled/20'; 13import IconCheckmark from '@carbon/icons-vue/es/checkmark--filled/20'; 14import IconWarning from '@carbon/icons-vue/es/warning--filled/20'; 15import IconError from '@carbon/icons-vue/es/error--filled/20'; 16import IconMisuse from '@carbon/icons-vue/es/misuse/20'; 17 18export default { 19 name: 'StatusIcon', 20 components: { 21 IconInfo: IconInfo, 22 iconSuccess: IconCheckmark, 23 iconDanger: IconMisuse, 24 iconSecondary: IconError, 25 iconWarning: IconWarning, 26 }, 27 props: { 28 status: { 29 type: String, 30 default: '', 31 }, 32 }, 33}; 34</script> 35 36<style lang="scss" scoped> 37.status-icon { 38 vertical-align: text-bottom; 39 40 &.info { 41 color: theme-color('info'); 42 } 43 &.success { 44 color: theme-color('success'); 45 } 46 &.danger { 47 color: theme-color('danger'); 48 } 49 &.secondary { 50 color: gray('600'); 51 transform: rotate(-45deg); 52 } 53 &.warning { 54 color: theme-color('warning'); 55 } 56 57 svg { 58 fill: currentColor; 59 } 60} 61</style> 62