组件/Icon 图标
自 1.0.0BETA

Icon 图标

UnoCSS 图标体系与 TuffIcon 组件

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

Icon 图标

TuffEx 使用 UnoCSS preset-icons 方案,提供丰富的图标支持,并通过 TuffIcon 统一渲染与管理。

基础用法

UnoCSS 图标类名

EXAMPLE.VUE
<template>
  <!-- Remix Icon -->
  <i class="i-ri-home-line" />
  <i class="i-ri-search-line" />
  <i class="i-ri-settings-3-line" />
  <!-- Carbon -->
  <i class="i-carbon-user" />
  <i class="i-carbon-folder" />

  <!-- Simple Icons (品牌) -->
  <i class="i-simple-icons-github" />
  <i class="i-simple-icons-visualstudiocode" />
</template>

TuffIcon 组件

EXAMPLE.VUE
<template>
  <TuffIcon name="i-ri-home-line" />
  <TuffIcon name="chevron-down" />
  <TuffIcon :icon="{ type: 'emoji', value: '🚀' }" />
  <TuffIcon :icon="{ type: 'url', value: '/app.svg', colorful: true }" />
</template>

TuffIcons 常量

@talex-touch/utils 提供预定义的图标常量,确保一致性:

EXAMPLE.TS
import { TuffIcons, AppIcons } from '@talex-touch/utils'

// 通用 UI 图标
TuffIcons.Home // 'i-ri-home-line'
TuffIcons.Search // 'i-ri-search-line'
TuffIcons.Settings // 'i-ri-settings-3-line'

// 应用品牌图标
AppIcons.VSCode // 'i-simple-icons-visualstudiocode'
AppIcons.GitHub // 'i-simple-icons-github'

图标分类

导航图标

名称类名预览
Homei-ri-home-line
Backi-ri-arrow-left-line
Forwardi-ri-arrow-right-line
Menui-ri-menu-line

操作图标

名称类名预览
Searchi-ri-search-line
Addi-ri-add-line
Deletei-ri-delete-bin-line
Editi-ri-edit-line
Copyi-ri-file-copy-line
Savei-ri-save-line
Downloadi-ri-download-line
Uploadi-ri-upload-line
Refreshi-ri-refresh-line

状态图标

名称类名预览
Checki-ri-check-line
Closei-ri-close-line
Warningi-ri-error-warning-line
Infoi-ri-information-line
Errori-ri-close-circle-line

文件图标

名称类名预览
Filei-ri-file-line
Folderi-ri-folder-line
FileCodei-ri-file-code-line
FileImagei-ri-image-line

UI 元素图标

名称类名预览
Settingsi-ri-settings-3-line
Useri-ri-user-line
Stari-ri-star-line
Hearti-ri-heart-line
Locki-ri-lock-line
Eyei-ri-eye-line

品牌图标

名称类名预览
GitHubi-simple-icons-github
VSCodei-simple-icons-visualstudiocode
Chromei-simple-icons-googlechrome
Discordi-simple-icons-discord

自定义样式

EXAMPLE.VUE
<template>
  <!-- 尺寸 -->
  <i class="i-ri-home-line text-sm" />
  <i class="i-ri-home-line text-base" />
  <i class="i-ri-home-line text-xl" />
  <i class="i-ri-home-line text-2xl" />

  <!-- 颜色 -->
  <i class="i-ri-star-line text-yellow-500" />
  <i class="i-ri-heart-fill text-red-500" />
  <i class="i-ri-check-circle-fill text-green-500" />

  <!-- 动画 -->
  <i class="i-ri-loader-4-line animate-spin" />
</template>

TxStatusIcon

用于在图标右下角叠加状态指示器(如插件运行状态/健康状态)。

TxStatusIcon

在角标上展示不同状态。

示例即将加载...
<template>
  <TxStatusIcon name="i-ri-translate-2" :size="22" tone="success" />
  <TxStatusIcon name="i-ri-translate-2" :size="22" tone="warning" />
  <TxStatusIcon name="i-ri-translate-2" :size="22" tone="error" />
  <TxStatusIcon name="i-ri-translate-2" :size="22" tone="info" />
  <TxStatusIcon name="i-ri-translate-2" :size="22" tone="loading" />
</template>

类型与来源

  • class:使用图标类名(推荐)。
  • emoji:用于轻量强调。
  • file / url:本地或远程图标。
  • builtin:内置常用图标。
  • colorful 可在组件 prop 或 icon.colorful 中声明;SVG 默认使用 currentColor mask,colorful=true 时保留原色。

API(简版)

属性名类型默认值说明
icon-图标对象(type/value)
name-图标名称或类名
size图标尺寸
colorful是否保留原色
urlResolverurlfile-覆盖 URL/file 路径解析
svgFetcher-覆盖 SVG 内容获取逻辑

TxStatusIcon API(简版)

属性名类型默认值说明
tonenoneloadingwarningsuccesserrorinfo状态角标
indicatorSize角标尺寸
indicatorOffset角标偏移

渲染契约

  • namei- 开头时按图标 class 渲染;命中内置名时按 builtin SVG 渲染。
  • file 与本地绝对 url 可通过注入的 fileProtocolurlResolver 转换。
  • SVG 在 colorful=false 时通过 mask 使用 currentColorcolorful=trueicon.colorful=true 时渲染为原图。
  • status='loading' | 'error' 会优先展示加载或错误状态。

图标集

图标集前缀描述
Remix Iconi-ri-通用 UI 图标,线条/填充风格
Carboni-carbon-IBM 设计系统图标
Simple Iconsi-simple-icons-品牌/Logo 图标

图标搜索

访问 Icônes 在线浏览和搜索所有可用图标。

API 参考

classIcon / getIcon

EXAMPLE.TS
import { classIcon, getIcon } from '@talex-touch/utils'

const icon = classIcon('i-ri-star-line')
// { type: 'class', value: 'i-ri-star-line' }

const searchIcon = getIcon('Search')
// { type: 'class', value: 'i-ri-search-line' }