Files
Aether/frontend/src/components/ui/refresh-button.vue
fawney19 44e7117d4a refactor(frontend): 优化 UI 基础组件
- 更新 avatar-image, badge, checkbox, input, switch 等组件
- 优化 dialog, pagination, select-item, tabs 等组件
- 调整 table-card, refresh-button 组件
2025-12-12 16:15:07 +08:00

41 lines
645 B
Vue

<template>
<Button
variant="ghost"
size="icon"
class="h-8 w-8"
:disabled="loading"
:title="title"
@click="handleClick"
>
<RefreshCcw
class="w-3.5 h-3.5"
:class="loading ? 'animate-spin' : ''"
/>
</Button>
</template>
<script setup lang="ts">
import { Button } from '@/components/ui'
import { RefreshCcw } from 'lucide-vue-next'
interface Props {
loading?: boolean
title?: string
}
interface Emits {
(e: 'click'): void
}
withDefaults(defineProps<Props>(), {
loading: false,
title: '刷新'
})
const emit = defineEmits<Emits>()
function handleClick() {
emit('click')
}
</script>