@bimdos/icon
Version:
跨框架图标库,支持 React、Vue、Angular、AngularJS、小程序等多种使用方式
66 lines (56 loc) • 1.38 kB
JavaScript
/**
* Bimdos Icon Library - ESM 入口文件
*/
import iconData from './icons.json' assert { type: 'json' };
/**
* 获取图标数据
* @param {string} name - 图标名称
* @returns {object|null} 图标数据
*/
export function getIcon(name) {
return iconData.find(icon => icon.name === name) || null;
}
/**
* 获取所有图标名称
* @returns {string[]} 图标名称数组
*/
export function getIconNames() {
return iconData.map(icon => icon.name);
}
/**
* 检查图标是否存在
* @param {string} name - 图标名称
* @returns {boolean} 是否存在
*/
export function hasIcon(name) {
return iconData.some(icon => icon.name === name);
}
/**
* 生成 SVG 字符串
* @param {string} name - 图标名称
* @param {object} options - 配置选项
* @returns {string} SVG 字符串
*/
export function generateSvg(name, options = {}) {
const icon = getIcon(name);
if (!icon) {
console.warn(`Icon "${name}" not found`);
return '';
}
const {
size = 16,
color = 'currentColor',
className = ''
} = options;
return `<svg class="bimdos-icon ${className}" width="${size}" height="${size}" viewBox="0 0 24 24" fill="${color}">
<path d="${icon.path}"></path>
</svg>`;
}
/**
* 所有图标数据
*/
export const icons = iconData;
/**
* 图标名称常量
*/
export const ICON_NAMES = iconData.map(icon => icon.name);