mirror of
https://github.com/Moe-Sakura/frontend.git
synced 2026-03-18 05:33:18 +08:00
Enhance component visuals and functionality across multiple files
- Updated CommentsModal.vue to include additional icons and improved title display for better user engagement. - Enhanced KeyboardHelpPanel.vue by adding icons next to navigation and operation shortcuts for improved clarity. - Refactored ResultItem.vue to include a copy link feature with visual feedback, enhancing user interaction. - Improved SearchHistoryModal.vue by adding icons and additional text for better user guidance on search history. - Updated StatsCorner.vue to replace the gamepad icon and add status indicators for online/offline status. - Refactored icons management in icons.ts for better organization and maintainability.
This commit is contained in:
@@ -29,10 +29,17 @@
|
||||
|
||||
<!-- 标题 -->
|
||||
<div class="flex items-center gap-2 md:ml-0">
|
||||
<div class="w-8 h-8 rounded-lg bg-gradient-to-br from-[#ff1493] to-[#d946ef] flex items-center justify-center shadow-lg shadow-pink-500/30">
|
||||
<div class="w-8 h-8 rounded-lg bg-gradient-to-br from-[#ff1493] to-[#d946ef] flex items-center justify-center shadow-lg shadow-pink-500/30 relative">
|
||||
<MessageCircle :size="16" class="text-white" />
|
||||
<Send :size="8" class="text-white/80 absolute -bottom-0.5 -right-0.5" />
|
||||
</div>
|
||||
<div>
|
||||
<h1 class="text-base sm:text-lg font-bold text-gray-800 dark:text-white flex items-center gap-1.5">
|
||||
评论区
|
||||
<Sparkles :size="14" class="text-amber-400" />
|
||||
</h1>
|
||||
<p class="text-xs text-gray-500 dark:text-slate-400 hidden md:block">欢迎留下你的想法 💬</p>
|
||||
</div>
|
||||
<h1 class="text-base sm:text-lg font-bold text-gray-800 dark:text-white">评论区</h1>
|
||||
</div>
|
||||
|
||||
<!-- 右侧按钮组 -->
|
||||
@@ -67,7 +74,7 @@ import { watch, onMounted, onUnmounted, nextTick } from 'vue'
|
||||
import { useUIStore } from '@/stores/ui'
|
||||
import { playTransitionUp, playTransitionDown } from '@/composables/useSound'
|
||||
import Artalk from 'artalk/dist/Artalk.mjs'
|
||||
import { MessageCircle, ChevronLeft, X } from 'lucide-vue-next'
|
||||
import { MessageCircle, ChevronLeft, X, Sparkles, Send } from 'lucide-vue-next'
|
||||
|
||||
interface ArtalkInstance {
|
||||
destroy(): void
|
||||
|
||||
@@ -42,34 +42,58 @@
|
||||
<div class="px-5 py-4 max-h-[60vh] overflow-y-auto custom-scrollbar">
|
||||
<!-- 导航 -->
|
||||
<div class="mb-4">
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2">导航</h3>
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2 flex items-center gap-1.5">
|
||||
<Navigation :size="12" />
|
||||
导航
|
||||
</h3>
|
||||
<div class="space-y-2">
|
||||
<div class="shortcut-row">
|
||||
<span>关闭当前面板</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<X :size="14" class="text-gray-400" />
|
||||
关闭当前面板
|
||||
</span>
|
||||
<kbd>Esc</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>返回首页</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<Home :size="14" class="text-blue-400" />
|
||||
返回首页
|
||||
</span>
|
||||
<kbd>H</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>打开/关闭设置</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<Settings :size="14" class="text-gray-400" />
|
||||
打开/关闭设置
|
||||
</span>
|
||||
<kbd>,</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>打开/关闭评论</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<MessageSquare :size="14" class="text-pink-400" />
|
||||
打开/关闭评论
|
||||
</span>
|
||||
<kbd>C</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>打开/关闭作品介绍</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<BookOpen :size="14" class="text-purple-400" />
|
||||
打开/关闭作品介绍
|
||||
</span>
|
||||
<kbd>V</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>打开/关闭搜索历史</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<History :size="14" class="text-amber-400" />
|
||||
打开/关闭搜索历史
|
||||
</span>
|
||||
<kbd>Y</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>站点导航</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<Grid3x3 :size="14" class="text-cyan-400" />
|
||||
站点导航
|
||||
</span>
|
||||
<kbd>N</kbd>
|
||||
</div>
|
||||
</div>
|
||||
@@ -77,14 +101,23 @@
|
||||
|
||||
<!-- 操作 -->
|
||||
<div class="mb-4">
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2">操作</h3>
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2 flex items-center gap-1.5">
|
||||
<Zap :size="12" />
|
||||
操作
|
||||
</h3>
|
||||
<div class="space-y-2">
|
||||
<div class="shortcut-row">
|
||||
<span>聚焦搜索框</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<Search :size="14" class="text-green-400" />
|
||||
聚焦搜索框
|
||||
</span>
|
||||
<kbd>/</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>显示/隐藏快捷键帮助</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<HelpCircle :size="14" class="text-indigo-400" />
|
||||
显示/隐藏快捷键帮助
|
||||
</span>
|
||||
<kbd>?</kbd>
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,18 +125,30 @@
|
||||
|
||||
<!-- 滚动 -->
|
||||
<div>
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2">滚动</h3>
|
||||
<h3 class="text-xs font-semibold text-gray-400 dark:text-slate-500 uppercase tracking-wider mb-2 flex items-center gap-1.5">
|
||||
<Command :size="12" />
|
||||
滚动
|
||||
</h3>
|
||||
<div class="space-y-2">
|
||||
<div class="shortcut-row">
|
||||
<span>回到顶部</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<ArrowUp :size="14" class="text-rose-400" />
|
||||
回到顶部
|
||||
</span>
|
||||
<kbd>T</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>上一个平台</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<ChevronLeft :size="14" class="text-orange-400" />
|
||||
上一个平台
|
||||
</span>
|
||||
<kbd>[</kbd>
|
||||
</div>
|
||||
<div class="shortcut-row">
|
||||
<span>下一个平台</span>
|
||||
<span class="flex items-center gap-2">
|
||||
<ChevronRight :size="14" class="text-orange-400" />
|
||||
下一个平台
|
||||
</span>
|
||||
<kbd>]</kbd>
|
||||
</div>
|
||||
</div>
|
||||
@@ -119,7 +164,12 @@
|
||||
import { ref } from 'vue'
|
||||
import { useUIStore } from '@/stores/ui'
|
||||
import { playTransitionDown } from '@/composables/useSound'
|
||||
import { Keyboard, X } from 'lucide-vue-next'
|
||||
import {
|
||||
Keyboard, X,
|
||||
Home, Settings, MessageSquare, BookOpen, History, Grid3x3, Search, HelpCircle,
|
||||
ArrowUp, ChevronLeft, ChevronRight,
|
||||
Navigation, Command, Zap
|
||||
} from 'lucide-vue-next'
|
||||
|
||||
const uiStore = useUIStore()
|
||||
const panelRef = ref<HTMLElement | null>(null)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { Link as LinkIcon } from 'lucide-vue-next'
|
||||
import { Link as LinkIcon, ExternalLink, FileText, Copy, Check } from 'lucide-vue-next'
|
||||
import { ref } from 'vue'
|
||||
import { playTap, playNotification } from '@/composables/useSound'
|
||||
|
||||
defineProps<{
|
||||
index: number
|
||||
@@ -9,6 +11,8 @@ defineProps<{
|
||||
}
|
||||
}>()
|
||||
|
||||
const copied = ref(false)
|
||||
|
||||
// 从URL中提取路径
|
||||
function extractPath(url: string): string {
|
||||
try {
|
||||
@@ -18,6 +22,21 @@ function extractPath(url: string): string {
|
||||
return url
|
||||
}
|
||||
}
|
||||
|
||||
// 复制链接
|
||||
async function copyLink(url: string) {
|
||||
playTap()
|
||||
try {
|
||||
await navigator.clipboard.writeText(url)
|
||||
playNotification()
|
||||
copied.value = true
|
||||
setTimeout(() => {
|
||||
copied.value = false
|
||||
}, 2000)
|
||||
} catch {
|
||||
// 静默处理
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -30,22 +49,42 @@ function extractPath(url: string): string {
|
||||
>
|
||||
<!-- 标题行 -->
|
||||
<div class="flex items-start gap-2 sm:gap-3">
|
||||
<span class="text-theme-primary dark:text-theme-accent text-sm font-bold mt-0.5 shrink-0 opacity-60 group-hover:opacity-100">
|
||||
{{ index + 1 }}.
|
||||
</span>
|
||||
<!-- 序号 + 文件图标 -->
|
||||
<div class="flex items-center gap-1.5 shrink-0 mt-0.5">
|
||||
<FileText :size="14" class="text-theme-primary/60 dark:text-theme-accent/60 group-hover:text-theme-primary dark:group-hover:text-theme-accent transition-colors" />
|
||||
<span class="text-theme-primary dark:text-theme-accent text-sm font-bold opacity-60 group-hover:opacity-100 transition-opacity">
|
||||
{{ index + 1 }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 标题链接 -->
|
||||
<a
|
||||
:href="source.url"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="text-gray-800 dark:text-slate-200 group-hover:text-theme-primary dark:group-hover:text-theme-accent font-semibold flex-1 text-sm sm:text-base break-words leading-relaxed"
|
||||
class="flex-1 flex items-start gap-1.5 text-gray-800 dark:text-slate-200 group-hover:text-theme-primary dark:group-hover:text-theme-accent font-semibold text-sm sm:text-base break-words leading-relaxed transition-colors"
|
||||
>
|
||||
{{ source.title }}
|
||||
<span class="flex-1">{{ source.title }}</span>
|
||||
<ExternalLink :size="14" class="shrink-0 mt-1 opacity-0 group-hover:opacity-70 transition-opacity" />
|
||||
</a>
|
||||
|
||||
<!-- 复制按钮 -->
|
||||
<button
|
||||
class="shrink-0 p-1.5 rounded-lg opacity-0 group-hover:opacity-100
|
||||
text-gray-400 hover:text-theme-primary dark:hover:text-theme-accent
|
||||
hover:bg-theme-primary/10 dark:hover:bg-theme-accent/10
|
||||
transition-all"
|
||||
:class="{ '!opacity-100 !text-green-500': copied }"
|
||||
:title="copied ? '已复制' : '复制链接'"
|
||||
@click.stop="copyLink(source.url)"
|
||||
>
|
||||
<component :is="copied ? Check : Copy" :size="14" />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- 资源相对路径(从URL中提取) -->
|
||||
<div v-if="source.url" class="flex items-center gap-2 mt-2 ml-6 sm:ml-8">
|
||||
<LinkIcon :size="12" class="text-theme-primary/50 dark:text-theme-accent/50" />
|
||||
<div v-if="source.url" class="flex items-center gap-2 mt-2 ml-7 sm:ml-9">
|
||||
<LinkIcon :size="12" class="text-theme-primary/50 dark:text-theme-accent/50 shrink-0" />
|
||||
<span class="text-xs text-gray-500 dark:text-slate-400 break-all font-mono bg-gray-100/80 dark:bg-slate-800/80 px-2 py-1 rounded">
|
||||
{{ extractPath(source.url) }}
|
||||
</span>
|
||||
|
||||
@@ -57,11 +57,14 @@
|
||||
class="flex flex-col items-center justify-center py-8 text-center"
|
||||
>
|
||||
<div class="w-12 h-12 rounded-xl bg-amber-50 dark:bg-amber-900/20 flex items-center justify-center mb-3">
|
||||
<History :size="24" class="text-amber-400/50" />
|
||||
<Clock :size="24" class="text-amber-400/50" />
|
||||
</div>
|
||||
<p class="text-sm text-gray-500 dark:text-gray-400">
|
||||
暂无搜索历史
|
||||
</p>
|
||||
<p class="text-xs text-gray-400 dark:text-gray-500 mt-1">
|
||||
搜索后会自动记录
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- 历史记录列表 -->
|
||||
@@ -86,29 +89,35 @@
|
||||
@keydown.enter="handleSelectHistory(item)"
|
||||
@keydown.space.prevent="handleSelectHistory(item)"
|
||||
>
|
||||
<!-- 模式标签 -->
|
||||
<!-- 模式标签 + 图标 -->
|
||||
<span
|
||||
class="text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide flex-shrink-0"
|
||||
class="flex items-center gap-1 text-[10px] font-bold px-1.5 py-0.5 rounded uppercase tracking-wide flex-shrink-0"
|
||||
:class="item.mode === 'game'
|
||||
? 'bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400'
|
||||
: 'bg-amber-100 text-amber-600 dark:bg-amber-900/30 dark:text-amber-400'"
|
||||
>
|
||||
<component :is="item.mode === 'game' ? Gamepad2 : Wrench" :size="10" />
|
||||
{{ item.mode === 'game' ? '游戏' : '补丁' }}
|
||||
</span>
|
||||
|
||||
<!-- 搜索关键词 -->
|
||||
<span
|
||||
v-text-scroll
|
||||
class="flex-1 text-sm font-medium text-gray-700 dark:text-slate-200 text-left group-hover:text-amber-600 dark:group-hover:text-amber-400 transition-colors"
|
||||
>
|
||||
{{ item.query }}
|
||||
</span>
|
||||
<!-- 搜索图标 + 关键词 -->
|
||||
<div class="flex-1 flex items-center gap-1.5 min-w-0">
|
||||
<Search :size="12" class="text-gray-400 dark:text-slate-500 shrink-0 group-hover:text-amber-500 transition-colors" />
|
||||
<span
|
||||
v-text-scroll
|
||||
class="flex-1 text-sm font-medium text-gray-700 dark:text-slate-200 text-left group-hover:text-amber-600 dark:group-hover:text-amber-400 transition-colors"
|
||||
>
|
||||
{{ item.query }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- 结果数 -->
|
||||
<!-- 结果数 + 图标 -->
|
||||
<span
|
||||
v-if="item.resultCount"
|
||||
class="text-[10px] text-gray-400 dark:text-gray-500 flex-shrink-0"
|
||||
class="flex items-center gap-1 text-[10px] text-gray-400 dark:text-gray-500 flex-shrink-0"
|
||||
:title="`${item.resultCount} 条结果`"
|
||||
>
|
||||
<Hash :size="10" />
|
||||
{{ item.resultCount }}
|
||||
</span>
|
||||
|
||||
@@ -135,7 +144,7 @@ import { ref, watch, onMounted, onUnmounted } from 'vue'
|
||||
import { useUIStore } from '@/stores/ui'
|
||||
import { loadSearchHistory, clearSearchHistory as clearHistoryStorage, type SearchHistory } from '@/utils/persistence'
|
||||
import { playSelect, playTap, playCaution, playTransitionUp, playTransitionDown } from '@/composables/useSound'
|
||||
import { History, Trash2, X } from 'lucide-vue-next'
|
||||
import { History, Trash2, X, Gamepad2, Wrench, Hash, Clock, Search } from 'lucide-vue-next'
|
||||
|
||||
const uiStore = useUIStore()
|
||||
const history = ref<SearchHistory[]>([])
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="fixed top-4 left-4 z-40 flex items-center gap-2">
|
||||
<!-- Gamepad 图标 - 品牌标识 -->
|
||||
<div class="glassmorphism-card rounded-2xl shadow-lg p-2.5 flex items-center justify-center">
|
||||
<GamepadDirectional
|
||||
<Gamepad2
|
||||
:size="22"
|
||||
class="text-theme-primary dark:text-theme-accent"
|
||||
/>
|
||||
@@ -23,6 +23,19 @@
|
||||
: 'text-red-600 dark:text-red-400'
|
||||
]"
|
||||
>
|
||||
<!-- 状态图标 -->
|
||||
<component
|
||||
:is="statusOnline === null ? Activity : statusOnline ? Wifi : WifiOff"
|
||||
:size="14"
|
||||
:class="[
|
||||
statusOnline === null ? 'animate-pulse' : '',
|
||||
statusOnline === null
|
||||
? 'text-gray-400'
|
||||
: statusOnline
|
||||
? 'text-green-500'
|
||||
: 'text-red-500'
|
||||
]"
|
||||
/>
|
||||
<span
|
||||
class="w-2 h-2 rounded-full"
|
||||
:class="[
|
||||
@@ -45,15 +58,17 @@
|
||||
>
|
||||
<div class="stats-card glassmorphism-card rounded-2xl shadow-lg px-4 py-3 flex flex-col gap-2">
|
||||
<!-- 访问量 -->
|
||||
<div class="flex items-center gap-2">
|
||||
<div class="flex items-center gap-2" title="总访问量">
|
||||
<Eye :size="16" class="text-theme-primary dark:text-theme-accent" />
|
||||
<span class="text-xs text-gray-500 dark:text-slate-400">PV</span>
|
||||
<span id="busuanzi_value_site_pv" class="font-semibold text-gray-800 dark:text-slate-100">0</span>
|
||||
</div>
|
||||
<!-- 分隔线 -->
|
||||
<div class="h-px bg-gray-300 dark:bg-slate-600" />
|
||||
<div class="h-px bg-gray-300/50 dark:bg-slate-600/50" />
|
||||
<!-- 访客数 -->
|
||||
<div class="flex items-center gap-2">
|
||||
<div class="flex items-center gap-2" title="独立访客">
|
||||
<Users :size="16" class="text-theme-primary dark:text-theme-accent" />
|
||||
<span class="text-xs text-gray-500 dark:text-slate-400">UV</span>
|
||||
<span id="busuanzi_value_site_uv" class="font-semibold text-gray-800 dark:text-slate-100">0</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,7 +77,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onUnmounted } from 'vue'
|
||||
import { GamepadDirectional, Eye, Users } from 'lucide-vue-next'
|
||||
import { Gamepad2, Eye, Users, Activity, Wifi, WifiOff } from 'lucide-vue-next'
|
||||
|
||||
const statusOnline = ref<boolean | null>(null)
|
||||
const showStats = ref(false)
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
/**
|
||||
* Lucide Icons 映射
|
||||
* 用于替代 Font Awesome
|
||||
* 集中管理所有图标导出,方便维护和 tree-shaking
|
||||
*/
|
||||
|
||||
// 导出所有需要的 Lucide 图标
|
||||
export {
|
||||
// ============================================
|
||||
// 通用图标
|
||||
// ============================================
|
||||
Search,
|
||||
Settings,
|
||||
Moon,
|
||||
@@ -22,7 +24,9 @@ export {
|
||||
Info,
|
||||
HelpCircle,
|
||||
|
||||
// ============================================
|
||||
// 操作图标
|
||||
// ============================================
|
||||
Download,
|
||||
Upload,
|
||||
Share2,
|
||||
@@ -32,100 +36,617 @@ export {
|
||||
Copy,
|
||||
ExternalLink,
|
||||
Link,
|
||||
Link2,
|
||||
ArrowDown,
|
||||
ArrowUp,
|
||||
ArrowLeft,
|
||||
ArrowRight,
|
||||
ArrowLeftRight,
|
||||
RotateCw,
|
||||
RotateCcw,
|
||||
RefreshCw,
|
||||
RefreshCcw,
|
||||
CornerDownLeft,
|
||||
Undo,
|
||||
Redo,
|
||||
|
||||
// ============================================
|
||||
// 缩放/变换
|
||||
// ============================================
|
||||
ZoomIn,
|
||||
ZoomOut,
|
||||
Maximize,
|
||||
Maximize2,
|
||||
Minimize,
|
||||
Minimize2,
|
||||
FlipHorizontal,
|
||||
FlipVertical,
|
||||
Move,
|
||||
|
||||
// ============================================
|
||||
// 社交/通信
|
||||
// ============================================
|
||||
MessageCircle,
|
||||
MessageSquare,
|
||||
Heart,
|
||||
Star,
|
||||
Crown,
|
||||
Github,
|
||||
Quote,
|
||||
Reply,
|
||||
Send,
|
||||
Mail,
|
||||
AtSign,
|
||||
|
||||
// ============================================
|
||||
// 文件/文档
|
||||
// ============================================
|
||||
File,
|
||||
FileText,
|
||||
FileCode,
|
||||
Folder,
|
||||
FolderOpen,
|
||||
Image,
|
||||
Images,
|
||||
|
||||
// ============================================
|
||||
// 用户/账户
|
||||
// ============================================
|
||||
User,
|
||||
Users,
|
||||
UserPlus,
|
||||
UserMinus,
|
||||
UserCheck,
|
||||
LogIn,
|
||||
LogOut,
|
||||
|
||||
// ============================================
|
||||
// 商业/支付
|
||||
// ============================================
|
||||
DollarSign,
|
||||
CreditCard,
|
||||
ShoppingCart,
|
||||
Coins,
|
||||
Wallet,
|
||||
|
||||
// ============================================
|
||||
// 媒体/内容
|
||||
// ============================================
|
||||
Play,
|
||||
Pause,
|
||||
Square, // 用作 Stop 图标
|
||||
SkipForward,
|
||||
SkipBack,
|
||||
FastForward,
|
||||
Rewind,
|
||||
Volume,
|
||||
Volume1,
|
||||
Volume2,
|
||||
VolumeX,
|
||||
|
||||
// ============================================
|
||||
// 状态/标记
|
||||
// ============================================
|
||||
CheckCircle,
|
||||
CheckCircle2,
|
||||
XCircle,
|
||||
Circle,
|
||||
CircleDot,
|
||||
Loader,
|
||||
Loader2,
|
||||
Zap,
|
||||
|
||||
// ============================================
|
||||
// 网络/数据
|
||||
// ============================================
|
||||
Wifi,
|
||||
WifiOff,
|
||||
Server,
|
||||
Database,
|
||||
Cloud,
|
||||
CloudDownload,
|
||||
CloudUpload,
|
||||
Globe,
|
||||
|
||||
// ============================================
|
||||
// 导航/地图
|
||||
// ============================================
|
||||
MapPin,
|
||||
Navigation,
|
||||
Compass,
|
||||
Home,
|
||||
|
||||
// 工具
|
||||
// ============================================
|
||||
// 工具/设置
|
||||
// ============================================
|
||||
Wrench,
|
||||
Gauge,
|
||||
Package,
|
||||
Tag,
|
||||
Tags,
|
||||
Hash,
|
||||
Filter,
|
||||
SlidersHorizontal,
|
||||
Cog,
|
||||
Terminal,
|
||||
Code,
|
||||
Code2,
|
||||
|
||||
// ============================================
|
||||
// 速度/性能
|
||||
// ============================================
|
||||
Rocket,
|
||||
Turtle,
|
||||
Layers,
|
||||
Layers2,
|
||||
|
||||
// 磁力/特殊
|
||||
// ============================================
|
||||
// 特殊/魔法
|
||||
// ============================================
|
||||
Magnet,
|
||||
Sparkles,
|
||||
Wand2,
|
||||
Reply,
|
||||
Bot,
|
||||
|
||||
// ============================================
|
||||
// 布局/视图
|
||||
// ============================================
|
||||
List,
|
||||
LayoutGrid,
|
||||
LayoutList,
|
||||
Grid2x2,
|
||||
Grid3x3,
|
||||
AlignLeft,
|
||||
AlignCenter,
|
||||
AlignRight,
|
||||
AlignJustify,
|
||||
|
||||
// ============================================
|
||||
// 眼睛/可见性
|
||||
// ============================================
|
||||
Eye,
|
||||
EyeOff,
|
||||
|
||||
// ============================================
|
||||
// 安全/锁定
|
||||
// ============================================
|
||||
Lock,
|
||||
Unlock,
|
||||
Shield,
|
||||
Home,
|
||||
ShieldCheck,
|
||||
ShieldAlert,
|
||||
ShieldOff,
|
||||
Key,
|
||||
|
||||
// ============================================
|
||||
// 游戏/娱乐
|
||||
// ============================================
|
||||
Gamepad,
|
||||
Gamepad2,
|
||||
MessageSquare,
|
||||
|
||||
// ============================================
|
||||
// 书籍/阅读
|
||||
// ============================================
|
||||
Bookmark,
|
||||
BookOpen,
|
||||
BookMarked,
|
||||
Library,
|
||||
|
||||
// ============================================
|
||||
// 音乐/音频
|
||||
// ============================================
|
||||
Music,
|
||||
Music2,
|
||||
Music3,
|
||||
Music4,
|
||||
Headphones,
|
||||
Mic,
|
||||
Mic2,
|
||||
MicOff,
|
||||
|
||||
// ============================================
|
||||
// 艺术/设计
|
||||
// ============================================
|
||||
Palette,
|
||||
Paintbrush,
|
||||
Brush,
|
||||
Pipette,
|
||||
|
||||
// ============================================
|
||||
// 时间/日历
|
||||
// ============================================
|
||||
Clock,
|
||||
Clock2,
|
||||
Clock3,
|
||||
Clock4,
|
||||
Timer,
|
||||
TimerOff,
|
||||
Calendar,
|
||||
CalendarDays,
|
||||
History,
|
||||
Hourglass,
|
||||
|
||||
// ============================================
|
||||
// 建筑/办公
|
||||
// ============================================
|
||||
Building,
|
||||
Building2,
|
||||
Factory,
|
||||
Store,
|
||||
|
||||
// ============================================
|
||||
// 显示器/设备
|
||||
// ============================================
|
||||
Monitor,
|
||||
Laptop,
|
||||
Tablet,
|
||||
Smartphone,
|
||||
Tv,
|
||||
|
||||
// ============================================
|
||||
// 语言/翻译
|
||||
// ============================================
|
||||
Languages,
|
||||
|
||||
// ============================================
|
||||
// Git/版本控制
|
||||
// ============================================
|
||||
GitBranch,
|
||||
GitCommit,
|
||||
GitMerge,
|
||||
GitPullRequest,
|
||||
GitPullRequestArrow,
|
||||
|
||||
// ============================================
|
||||
// 灯光/提示
|
||||
// ============================================
|
||||
Lightbulb,
|
||||
LightbulbOff,
|
||||
|
||||
// ============================================
|
||||
// 键盘/输入
|
||||
// ============================================
|
||||
Keyboard,
|
||||
Type,
|
||||
|
||||
// ============================================
|
||||
// 电源/开关
|
||||
// ============================================
|
||||
Power,
|
||||
PowerOff,
|
||||
ToggleLeft,
|
||||
ToggleRight,
|
||||
|
||||
// ============================================
|
||||
// 其他常用
|
||||
// ============================================
|
||||
Plus,
|
||||
Minus,
|
||||
PlusCircle,
|
||||
MinusCircle,
|
||||
MoreHorizontal,
|
||||
MoreVertical,
|
||||
Grip,
|
||||
GripVertical,
|
||||
GripHorizontal,
|
||||
SeparatorHorizontal,
|
||||
SeparatorVertical,
|
||||
Slash,
|
||||
Activity,
|
||||
TrendingUp,
|
||||
TrendingDown,
|
||||
BarChart,
|
||||
BarChart2,
|
||||
PieChart,
|
||||
LineChart,
|
||||
Target,
|
||||
Crosshair,
|
||||
Scan,
|
||||
QrCode,
|
||||
Printer,
|
||||
Archive,
|
||||
Box,
|
||||
Boxes,
|
||||
Gift,
|
||||
Award,
|
||||
Trophy,
|
||||
Medal,
|
||||
Bell,
|
||||
BellOff,
|
||||
BellRing,
|
||||
Flag,
|
||||
Bookmark as BookmarkIcon,
|
||||
Pin,
|
||||
PinOff,
|
||||
Paperclip,
|
||||
Scissors,
|
||||
Eraser,
|
||||
Pencil,
|
||||
PenTool,
|
||||
Highlighter,
|
||||
Ruler,
|
||||
Crop,
|
||||
Frame,
|
||||
FrameIcon,
|
||||
Camera,
|
||||
Aperture,
|
||||
Focus,
|
||||
SunMedium,
|
||||
CloudSun,
|
||||
CloudMoon,
|
||||
Sunrise,
|
||||
Sunset,
|
||||
Wind,
|
||||
Droplet,
|
||||
Droplets,
|
||||
Thermometer,
|
||||
Umbrella,
|
||||
Snowflake,
|
||||
Flame,
|
||||
Leaf,
|
||||
TreeDeciduous,
|
||||
Flower,
|
||||
Flower2,
|
||||
Bug,
|
||||
Cat,
|
||||
Dog,
|
||||
Bird,
|
||||
Fish,
|
||||
Rabbit,
|
||||
Squirrel,
|
||||
Rat,
|
||||
Snail,
|
||||
PawPrint,
|
||||
Footprints,
|
||||
Accessibility,
|
||||
Baby,
|
||||
PersonStanding,
|
||||
Contact,
|
||||
Contact2,
|
||||
Fingerprint,
|
||||
ScanFace,
|
||||
Skull,
|
||||
Ghost,
|
||||
Laugh,
|
||||
Smile,
|
||||
Frown,
|
||||
Meh,
|
||||
Angry,
|
||||
Annoyed,
|
||||
PartyPopper,
|
||||
Gem,
|
||||
Diamond,
|
||||
Shapes,
|
||||
Triangle,
|
||||
Pentagon,
|
||||
Hexagon,
|
||||
Octagon,
|
||||
CircleDashed,
|
||||
SquareDashed,
|
||||
BadgeCheck,
|
||||
BadgeAlert,
|
||||
BadgeX,
|
||||
BadgePlus,
|
||||
BadgeMinus,
|
||||
BadgePercent,
|
||||
BadgeDollarSign,
|
||||
BadgeHelp,
|
||||
BadgeInfo,
|
||||
Verified,
|
||||
ShieldQuestion,
|
||||
FileQuestion,
|
||||
HelpingHand,
|
||||
HandMetal,
|
||||
Hand,
|
||||
ThumbsUp,
|
||||
ThumbsDown,
|
||||
MousePointer,
|
||||
MousePointer2,
|
||||
MousePointerClick,
|
||||
Pointer,
|
||||
Move3d,
|
||||
Grab,
|
||||
GalleryVertical,
|
||||
GalleryHorizontal,
|
||||
GalleryVerticalEnd,
|
||||
GalleryHorizontalEnd,
|
||||
Columns,
|
||||
Columns2,
|
||||
Columns3,
|
||||
Rows,
|
||||
Rows2,
|
||||
Rows3,
|
||||
LayoutDashboard,
|
||||
LayoutPanelLeft,
|
||||
LayoutPanelTop,
|
||||
LayoutTemplate,
|
||||
PanelLeft,
|
||||
PanelLeftClose,
|
||||
PanelLeftOpen,
|
||||
PanelRight,
|
||||
PanelRightClose,
|
||||
PanelRightOpen,
|
||||
PanelTop,
|
||||
PanelTopClose,
|
||||
PanelTopOpen,
|
||||
PanelBottom,
|
||||
PanelBottomClose,
|
||||
PanelBottomOpen,
|
||||
SidebarOpen,
|
||||
SidebarClose,
|
||||
Sidebar,
|
||||
TableProperties,
|
||||
Table,
|
||||
Table2,
|
||||
Sheet,
|
||||
FileSpreadsheet,
|
||||
FormInput,
|
||||
TextCursor,
|
||||
TextCursorInput,
|
||||
Text,
|
||||
CaseSensitive,
|
||||
CaseUpper,
|
||||
CaseLower,
|
||||
Strikethrough,
|
||||
Underline,
|
||||
Italic,
|
||||
Bold,
|
||||
Subscript,
|
||||
Superscript,
|
||||
RemoveFormatting,
|
||||
IndentIncrease,
|
||||
IndentDecrease,
|
||||
WrapText,
|
||||
Pilcrow,
|
||||
ListOrdered,
|
||||
ListTodo,
|
||||
ListChecks,
|
||||
ListMinus,
|
||||
ListPlus,
|
||||
ListFilter,
|
||||
ListRestart,
|
||||
ListX,
|
||||
ListTree,
|
||||
ListCollapse,
|
||||
ListVideo,
|
||||
ListMusic,
|
||||
ListEnd,
|
||||
ListStart,
|
||||
SortAsc,
|
||||
SortDesc,
|
||||
ArrowUpDown,
|
||||
ArrowDownUp,
|
||||
ArrowUpNarrowWide,
|
||||
ArrowDownNarrowWide,
|
||||
ArrowUpWideNarrow,
|
||||
ArrowDownWideNarrow,
|
||||
MoveUp,
|
||||
MoveDown,
|
||||
MoveLeft,
|
||||
MoveRight,
|
||||
ArrowBigUp,
|
||||
ArrowBigDown,
|
||||
ArrowBigLeft,
|
||||
ArrowBigRight,
|
||||
ChevronsUp,
|
||||
ChevronsDown,
|
||||
ChevronsLeft,
|
||||
ChevronsRight,
|
||||
ChevronsUpDown,
|
||||
ChevronsLeftRight,
|
||||
ArrowUpRight,
|
||||
ArrowUpLeft,
|
||||
ArrowDownRight,
|
||||
ArrowDownLeft,
|
||||
CornerUpLeft,
|
||||
CornerUpRight,
|
||||
CornerDownRight,
|
||||
CornerLeftUp,
|
||||
CornerLeftDown,
|
||||
CornerRightUp,
|
||||
CornerRightDown,
|
||||
Repeat,
|
||||
Repeat1,
|
||||
Repeat2,
|
||||
Shuffle,
|
||||
Infinity,
|
||||
IterationCw,
|
||||
IterationCcw,
|
||||
Replace,
|
||||
ReplaceAll,
|
||||
Split,
|
||||
Merge,
|
||||
GitFork,
|
||||
Network,
|
||||
Workflow,
|
||||
Waypoints,
|
||||
Route,
|
||||
Orbit,
|
||||
Radar,
|
||||
Radio,
|
||||
RadioReceiver,
|
||||
RadioTower,
|
||||
Signal,
|
||||
SignalHigh,
|
||||
SignalLow,
|
||||
SignalMedium,
|
||||
SignalZero,
|
||||
Rss,
|
||||
Podcast,
|
||||
Antenna,
|
||||
Satellite,
|
||||
SatelliteDish,
|
||||
Bluetooth,
|
||||
BluetoothConnected,
|
||||
BluetoothOff,
|
||||
BluetoothSearching,
|
||||
Cable,
|
||||
Plug,
|
||||
PlugZap,
|
||||
Unplug,
|
||||
Usb,
|
||||
Cpu,
|
||||
HardDrive,
|
||||
HardDriveDownload,
|
||||
HardDriveUpload,
|
||||
MemoryStick,
|
||||
CircuitBoard,
|
||||
Binary,
|
||||
Braces,
|
||||
BracesIcon,
|
||||
Brackets,
|
||||
ParenthesesIcon,
|
||||
Regex,
|
||||
Variable,
|
||||
Component,
|
||||
Webhook,
|
||||
WebhookOff,
|
||||
Blocks,
|
||||
Puzzle,
|
||||
AppWindow,
|
||||
Globe2,
|
||||
LocateFixed,
|
||||
Locate,
|
||||
MapPinned,
|
||||
MapPinOff,
|
||||
Map,
|
||||
Milestone,
|
||||
FlagTriangleLeft,
|
||||
FlagTriangleRight,
|
||||
Construction,
|
||||
HardHat,
|
||||
Axe,
|
||||
Hammer,
|
||||
Pickaxe,
|
||||
Shovel,
|
||||
Drill,
|
||||
Scale,
|
||||
Scale3d,
|
||||
Scaling,
|
||||
Expand,
|
||||
Shrink,
|
||||
FoldVertical,
|
||||
FoldHorizontal,
|
||||
UnfoldVertical,
|
||||
UnfoldHorizontal,
|
||||
ScanLine,
|
||||
ScanSearch,
|
||||
ScanText,
|
||||
ScanEye,
|
||||
ScanBarcode,
|
||||
Barcode,
|
||||
Receipt,
|
||||
ReceiptText,
|
||||
Ticket,
|
||||
TicketCheck,
|
||||
TicketMinus,
|
||||
TicketPlus,
|
||||
TicketSlash,
|
||||
TicketX,
|
||||
Tags as TagsIcon,
|
||||
Bookmark as BookmarkFilled,
|
||||
Heart as HeartFilled,
|
||||
Star as StarFilled,
|
||||
} from 'lucide-vue-next'
|
||||
|
||||
/**
|
||||
@@ -155,3 +676,47 @@ export const tagIcons = {
|
||||
magic: 'Wand2',
|
||||
} as const
|
||||
|
||||
/**
|
||||
* 主题模式图标映射
|
||||
*/
|
||||
export const themeModeIcons = {
|
||||
light: 'Sun',
|
||||
dark: 'Moon',
|
||||
system: 'Monitor',
|
||||
} as const
|
||||
|
||||
/**
|
||||
* 文件类型图标映射
|
||||
*/
|
||||
export const fileTypeIcons = {
|
||||
image: 'Image',
|
||||
document: 'FileText',
|
||||
code: 'FileCode',
|
||||
folder: 'Folder',
|
||||
archive: 'Archive',
|
||||
video: 'Play',
|
||||
audio: 'Music',
|
||||
default: 'File',
|
||||
} as const
|
||||
|
||||
/**
|
||||
* 状态图标映射
|
||||
*/
|
||||
export const statusIcons = {
|
||||
success: 'CheckCircle',
|
||||
error: 'XCircle',
|
||||
warning: 'AlertTriangle',
|
||||
info: 'Info',
|
||||
loading: 'Loader2',
|
||||
pending: 'Clock',
|
||||
} as const
|
||||
|
||||
/**
|
||||
* 社交平台图标映射
|
||||
*/
|
||||
export const socialIcons = {
|
||||
github: 'Github',
|
||||
message: 'MessageCircle',
|
||||
mail: 'Mail',
|
||||
share: 'Share2',
|
||||
} as const
|
||||
|
||||
Reference in New Issue
Block a user