Preview Updated 2026-05-10

Icon

ChuFix's built-in SVG icon component. Type-safe `name`, inline rendering by default, no separate sprite mounting required.

Basic usage

name uses the IconName type, drawn from the 231 built-in icon names in @chufix-design/icons. Renders as a decorative icon by default; pass title or label when an accessible name is needed.

search
check-circle
alert-circle
calendar
table
layout
modal
component
theme-token
schema
diff
sandbox
Demo source
src/App.vue vue
<CfIcon name="search" />
<CfIcon name="calendar" size="lg" />
<CfIcon name="component" :size="28" />
<CfIcon name="check-circle" color="var(--status-success)" />
<CfIcon name="loader" motion="spin" />
<CfIcon name="alert-circle" title="Error" />
src/App.tsx tsx
<CfIcon name="search" />
<CfIcon name="calendar" size="lg" />
<CfIcon name="component" size={28} />
<CfIcon name="check-circle" color="var(--status-success)" />
<CfIcon name="loader" motion="spin" />
<CfIcon name="alert-circle" title="Error" />

Sizes

size accepts a preset tier (xs / sm / md / lg / xl) or a number / string (custom px / em).

xs sm md lg xl 32px
Demo source
src/App.vue vue
<CfIcon name="search" size="xs" />
<CfIcon name="search" size="sm" />
<CfIcon name="search" size="md" />
<CfIcon name="search" size="lg" />
<CfIcon name="search" size="xl" />
<CfIcon name="search" :size="32" />
src/App.tsx tsx
<CfIcon name="search" size="xs" />
<CfIcon name="search" size="sm" />
<CfIcon name="search" size="md" />
<CfIcon name="search" size="lg" />
<CfIcon name="search" size="xl" />
<CfIcon name="search" size={32} />

Color

When color is not passed, the icon uses currentColor and inherits the parent text color — this is the default and the most flexible option. For semantic colors, pass a token directly: var(--status-success) / var(--accent-1), etc.

继承父级颜色
Demo source
src/App.vue vue
<CfIcon name="check-circle" color="var(--status-success)" size="lg" />
<CfIcon name="alert-triangle" color="var(--status-warning)" size="lg" />
<CfIcon name="x-circle" color="var(--status-error)" size="lg" />
<CfIcon name="info" color="var(--status-info)" size="lg" />
src/App.tsx tsx
<CfIcon name="check-circle" color="var(--status-success)" size="lg" />
<CfIcon name="alert-triangle" color="var(--status-warning)" size="lg" />
<CfIcon name="x-circle" color="var(--status-error)" size="lg" />
<CfIcon name="info" color="var(--status-info)" size="lg" />

Motion

motion adds a simple looping animation — spin (for loaders), pulse (breathing emphasis), bounce (strong cue). All motion respects prefers-reduced-motion and stops automatically when the user opts in.

spin加载中motion="spin"
pulse状态呼吸motion="pulse"
bounce引导方向motion="bounce"
Demo source
src/App.vue vue
<CfIcon name="loader" motion="spin" size="lg" />
<CfIcon name="circle" motion="pulse" size="lg" />
<CfIcon name="arrow-down" motion="bounce" size="lg" />
src/App.tsx tsx
<CfIcon name="loader" motion="spin" size="lg" />
<CfIcon name="circle" motion="pulse" size="lg" />
<CfIcon name="arrow-down" motion="bounce" size="lg" />

API

PropTypeDefaultDescription
nameIconNameIcon name with typed validation
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | number | string'md'Size
strokeWidthnumber1.5Stroke width
colorstringIcon color; inherits currentColor by default
motion'spin' | 'pulse' | 'bounce'Simple animation effect; respects prefers-reduced-motion
titlestringSVG title; also gives the icon img semantics
labelstringVue-only aria-label

In React you can pass aria-label directly:

<CfIcon name="search" aria-label="Search" />

Icon catalog

The full list of built-in icons. Click an entry to copy its prefixed component usage, e.g. <CfIcon name="search" />.

反馈与讨论

Icon · Discussion

0
0 / 600
一键发送
正在加载评论...