packages/components/src/stories/icon_zh.mdx
import { CheckOutlined, UncheckedOutlined, DashboardOutlined, ChartBarStackFilled, ChartBarNormalFilled, ChartColumnStackFilled, StarOutlined, CalenderLeftOutlined } from '@apitable/icons'; import { deepPurple, teal } from 'colors'; import { IconUseInCanvas } from './examples/icon-in-canvas'; import { Meta, Canvas } from '@storybook/addon-docs'; import { useEffect } from 'react'; import { StoryType } from './constants';
<Meta title={${StoryType.Design}/Icons 图标(预发布)} />
# 从维格表拉取 icon
yarn sync:icons
yarn build:icons
拉完 icon 之后注意观察变更。设计可能修改名称,或者删除了某些 icon,需要特别注意。
interface IIconProps {
/**
* Icon 大小,默认 16 px
*/
size?: number | string;
/**
* Icon 颜色
*/
color?: string | string[];
/**
* 覆盖样式传入 className
*/
className?: string;
/**
* 显示与父级元素相同的颜色
*/
currentColor?: boolean;
}
icons 是独立的组件库,在使用前需要引入。
icon 只有基础的 UI 属性,颜色和尺寸,不处理状态。如果 UI 需要处理状态,例如 disabled 灰置、响应点击事件,应该使用 IconButton。
分类
按结构
按颜色
icon 的名称只会体现结构、不会体现颜色。
从 @apitable/icons 中引入需要的 Icon。
import { CheckedOutlined } from '@apitable/icons';
非多色 icon 都可以用 fill 直接修改 svg 的填色。
<style>
.change-color:hover svg {
fill: red;
}
</style>
除了多色 Icon 外,所有的 icon 都经过统一的处理,变成由 Path 绘制的图形。你可以拿到 Path 的 d 属性,在 canvas 中绘制出来。
多个 Path 的 Icon,输出值是将多个 Path 的 d 属性用 \n 拼接起来。
import * as Icons from '@apitable/icons'; const names = Object.keys(Icons);
<ul className="icons-wrap" > { names.map((iconName) => { const Icon = Icons[iconName]; return <li className="icon-wrap" key={iconName}> <Icon size={60} /> <span className="icon-name">{iconName}</span> </li> }) } </ul>