33 lines
705 B
Vue
33 lines
705 B
Vue
<script lang="ts" setup>
|
|
import { theme } from "ant-design-vue";
|
|
const { useToken } = theme;
|
|
const { token } = useToken();
|
|
|
|
const col = token.value.colorText;
|
|
const propo = defineProps<{
|
|
name: string;
|
|
icolor?: string;
|
|
istyle: "regular" | "light" | "solid" | "thin";
|
|
size?: number;
|
|
proportionate?: boolean;
|
|
}>();
|
|
const propUnit = propo.proportionate ? "em" : "px";
|
|
const styleMap = {
|
|
regular: "r",
|
|
light: "l",
|
|
solid: "s",
|
|
thin: "t",
|
|
};
|
|
const pixi = propo.size ? `${propo.size}${propUnit}` : "inherit";
|
|
</script>
|
|
|
|
<template>
|
|
<i
|
|
:style="{
|
|
fontSize: `${size}${propUnit}`,
|
|
color: icolor || 'currentcolor',
|
|
}"
|
|
:class="`fa${styleMap[istyle]} fa-${name}`"
|
|
/>
|
|
</template>
|