图标登记册
此软件包包含SVG图标,并提供了作为HTML元素加载的方法. 这包含了所有没有具体反应或vue的元素.
使用量
import {
/**
* Array of icons generated by svg-to-ts
* contains the body of each icon
*/
iconSet,
/**
* Record of each icon with is meta data
* key: camel case of the rootId (ex: "action-next")
* value: {
* availableSizes: ['16'],
* hasFillColor: false,
* hasStrokeColor: true,
* hasSecondaryFillColor: false,
* hasSecondaryStrokeColor: false,
* }
*/
iconsMetadata,
compileIcon,
getComponentAttributes,
} from '@cypress-design/icon-registry'
iconSet.forEach((icon) => {
// `icon.name` contains "book-code-x16"
// since we mostly need the rooId we can extract it from the name
const [rootId] = icon.name.split('_x')
// these information sets are intended to be used in a template or a render function
console.log({
body: icon.data,
metaData: icons[rootId],
})
const { size, compiledClasses, body } = compileIcon({
name: rootId,
size: 16,
// colors from the tailwind set of colors
strokeColor: 'red-600',
fillColor: 'amber-300',
})
// size: the size of the icon with the default value if possible,
// compiledClasses: all css classes that we will hav to add to our SVG element becaus eof the color passed,
// body: the interior of the SVG element between the opening and closing SVG tags,
})
构建
生成类型
样本 :
// lists all the colors available from windi classes
export type WindiColors = 'jade-200' | 'jade-300' | 'red-200' | 'red-300'
export type IconProps =
| IconActionDeleteCircleProps
| IconTestingTypeComponentProps
// | ...
interface IconActionDeleteCircleProps {
name: 'action-delete-circle'
color?: keyof typeof colors
}
interface IconTestingTypeComponentProps {
name: 'testing-type-component'
size?: 16 | 24 | 64 | 120
color?: keyof typeof colors
bgColor?: keyof typeof colors
}
//...