feat(admin): 优化用户界面动画与交互体验

- 调整倒计时音效触发时机为剩余5秒并添加新音频文件
- 为SvgIcon组件增加size属性以支持自定义图标尺寸
- 优化ActionButton组件的动画效果和视觉反馈
- 修复游戏页面组件卸载时未停止计时器的问题
- 重构音频控制器,改进音频预加载和播放逻辑
- 优化团队选择页面的卷轴动画和布局跳转逻辑
- 改进小组选择页面的视觉样式和响应式布局
- 增强CompetitionLayout组件的标题动画和内容显示逻辑
This commit is contained in:
2026-03-11 17:58:57 +08:00
parent b9c5886437
commit 41f7ba7b8a
12 changed files with 341 additions and 192 deletions

View File

@ -17,6 +17,8 @@ interface Props {
icon?: string
/** 本地 svg 图标名称 */
localIcon?: string
/** 图标大小 */
size?: string | number
}
const attrs = useAttrs()
@ -44,13 +46,13 @@ const renderLocalIcon = computed(() => props.localIcon || !props.icon)
<template>
<!-- 渲染本地 svg 图标 -->
<template v-if="renderLocalIcon">
<svg aria-hidden="true" width="1em" height="1em" v-bind="bindAttrs">
<svg aria-hidden="true" :width="size || '1em'" :height="size || '1em'" v-bind="bindAttrs">
<use :xlink:href="symbolId" fill="currentColor" />
</svg>
</template>
<template v-else>
<!-- 渲染 iconify 图标 -->
<Icon v-if="icon" :icon="icon" v-bind="bindAttrs" />
<Icon v-if="icon" :icon="icon" :width="size" :height="size" v-bind="bindAttrs" />
</template>
</template>