41 lines
826 B
Vue
Raw Normal View History

2023-04-03 00:26:04 +08:00
<template>
<svg :class="svgClass" aria-hidden="true">
<use :xlink:href="iconName" :fill="color" />
</svg>
</template>
2023-04-02 01:01:56 +08:00
<script setup lang="ts">
import { propTypes } from '@/utils/propTypes';
2023-04-02 01:01:56 +08:00
const props = defineProps({
iconClass: propTypes.string.isRequired,
className: propTypes.string.def(''),
color: propTypes.string.def(''),
2023-04-02 01:01:56 +08:00
})
const iconName = computed(() => `#icon-${props.iconClass}`);
const svgClass = computed(() => {
2023-04-03 00:26:04 +08:00
if (props.className) {
return `svg-icon ${props.className}`
}
return 'svg-icon'
2023-03-15 15:59:21 +08:00
})
</script>
<style scope lang="scss">
.sub-el-icon,
.nav-icon {
display: inline-block;
font-size: 15px;
margin-right: 12px;
position: relative;
}
.svg-icon {
width: 1em;
height: 1em;
position: relative;
fill: currentColor;
vertical-align: -2px;
}
</style>