@zleap-ai/icons 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -0
- package/dist/cjs/changelog-generator.js +300 -0
- package/dist/cjs/changelog-generator.js.map +1 -0
- package/dist/cjs/component-generator.js +434 -0
- package/dist/cjs/component-generator.js.map +1 -0
- package/dist/cjs/figma-client.js +260 -0
- package/dist/cjs/figma-client.js.map +1 -0
- package/dist/cjs/icon-filter.js +278 -0
- package/dist/cjs/icon-filter.js.map +1 -0
- package/dist/cjs/icon-search.js +43 -0
- package/dist/cjs/icon-search.js.map +1 -0
- package/dist/cjs/icon-validator.js +369 -0
- package/dist/cjs/icon-validator.js.map +1 -0
- package/dist/cjs/icons/IconArrowRight.js +17 -0
- package/dist/cjs/icons/IconArrowRight.js.map +1 -0
- package/dist/cjs/icons/IconBack.js +17 -0
- package/dist/cjs/icons/IconBack.js.map +1 -0
- package/dist/cjs/icons/IconBack1.js +17 -0
- package/dist/cjs/icons/IconBack1.js.map +1 -0
- package/dist/cjs/icons/IconBangZhuShuoMing.js +17 -0
- package/dist/cjs/icons/IconBangZhuShuoMing.js.map +1 -0
- package/dist/cjs/icons/IconBaoGaoZhuShou.js +20 -0
- package/dist/cjs/icons/IconBaoGaoZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconCheck.js +17 -0
- package/dist/cjs/icons/IconCheck.js.map +1 -0
- package/dist/cjs/icons/IconCheck1.js +17 -0
- package/dist/cjs/icons/IconCheck1.js.map +1 -0
- package/dist/cjs/icons/IconChengYuanGuanLi.js +20 -0
- package/dist/cjs/icons/IconChengYuanGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconChongXinFaSong.js +17 -0
- package/dist/cjs/icons/IconChongXinFaSong.js.map +1 -0
- package/dist/cjs/icons/IconCloseCircle.js +17 -0
- package/dist/cjs/icons/IconCloseCircle.js.map +1 -0
- package/dist/cjs/icons/IconCuoWu.js +17 -0
- package/dist/cjs/icons/IconCuoWu.js.map +1 -0
- package/dist/cjs/icons/IconDingDing.js +17 -0
- package/dist/cjs/icons/IconDingDing.js.map +1 -0
- package/dist/cjs/icons/IconEdit03.js +17 -0
- package/dist/cjs/icons/IconEdit03.js.map +1 -0
- package/dist/cjs/icons/IconFanHui.js +17 -0
- package/dist/cjs/icons/IconFanHui.js.map +1 -0
- package/dist/cjs/icons/IconFangDa.js +17 -0
- package/dist/cjs/icons/IconFangDa.js.map +1 -0
- package/dist/cjs/icons/IconFrame.js +17 -0
- package/dist/cjs/icons/IconFrame.js.map +1 -0
- package/dist/cjs/icons/IconFrame1261156242.js +17 -0
- package/dist/cjs/icons/IconFrame1261156242.js.map +1 -0
- package/dist/cjs/icons/IconGuanBi.js +17 -0
- package/dist/cjs/icons/IconGuanBi.js.map +1 -0
- package/dist/cjs/icons/IconGuanBi1.js +17 -0
- package/dist/cjs/icons/IconGuanBi1.js.map +1 -0
- package/dist/cjs/icons/IconGuanBiXiao.js +17 -0
- package/dist/cjs/icons/IconGuanBiXiao.js.map +1 -0
- package/dist/cjs/icons/IconGuanBiXiao1.js +17 -0
- package/dist/cjs/icons/IconGuanBiXiao1.js.map +1 -0
- package/dist/cjs/icons/IconLianJie.js +17 -0
- package/dist/cjs/icons/IconLianJie.js.map +1 -0
- package/dist/cjs/icons/IconLianJie1.js +17 -0
- package/dist/cjs/icons/IconLianJie1.js.map +1 -0
- package/dist/cjs/icons/IconQiWeiJiQiRen.js +17 -0
- package/dist/cjs/icons/IconQiWeiJiQiRen.js.map +1 -0
- package/dist/cjs/icons/IconQiYeBan.js +20 -0
- package/dist/cjs/icons/IconQiYeBan.js.map +1 -0
- package/dist/cjs/icons/IconRss.js +17 -0
- package/dist/cjs/icons/IconRss.js.map +1 -0
- package/dist/cjs/icons/IconSearch.js +17 -0
- package/dist/cjs/icons/IconSearch.js.map +1 -0
- package/dist/cjs/icons/IconSearch1.js +17 -0
- package/dist/cjs/icons/IconSearch1.js.map +1 -0
- package/dist/cjs/icons/IconSheZhi.js +17 -0
- package/dist/cjs/icons/IconSheZhi.js.map +1 -0
- package/dist/cjs/icons/IconShengCheng.js +17 -0
- package/dist/cjs/icons/IconShengCheng.js.map +1 -0
- package/dist/cjs/icons/IconShiBai.js +17 -0
- package/dist/cjs/icons/IconShiBai.js.map +1 -0
- package/dist/cjs/icons/IconShouQi.js +17 -0
- package/dist/cjs/icons/IconShouQi.js.map +1 -0
- package/dist/cjs/icons/IconSouSuoZhuShou.js +20 -0
- package/dist/cjs/icons/IconSouSuoZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconSuoXiao.js +17 -0
- package/dist/cjs/icons/IconSuoXiao.js.map +1 -0
- package/dist/cjs/icons/IconTianJia.js +17 -0
- package/dist/cjs/icons/IconTianJia.js.map +1 -0
- package/dist/cjs/icons/IconTongZhi.js +17 -0
- package/dist/cjs/icons/IconTongZhi.js.map +1 -0
- package/dist/cjs/icons/IconTongZhi1.js +17 -0
- package/dist/cjs/icons/IconTongZhi1.js.map +1 -0
- package/dist/cjs/icons/IconTuiChu.js +17 -0
- package/dist/cjs/icons/IconTuiChu.js.map +1 -0
- package/dist/cjs/icons/IconWangLuoJianSuo.js +17 -0
- package/dist/cjs/icons/IconWangLuoJianSuo.js.map +1 -0
- package/dist/cjs/icons/IconWangYeXiaZai.js +17 -0
- package/dist/cjs/icons/IconWangYeXiaZai.js.map +1 -0
- package/dist/cjs/icons/IconWeiBiaoTi1HuaBan11.js +17 -0
- package/dist/cjs/icons/IconWeiBiaoTi1HuaBan11.js.map +1 -0
- package/dist/cjs/icons/IconWenDaZhuShou.js +20 -0
- package/dist/cjs/icons/IconWenDaZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconWenDang.js +17 -0
- package/dist/cjs/icons/IconWenDang.js.map +1 -0
- package/dist/cjs/icons/IconWenDang1.js +17 -0
- package/dist/cjs/icons/IconWenDang1.js.map +1 -0
- package/dist/cjs/icons/IconWenJian.js +17 -0
- package/dist/cjs/icons/IconWenJian.js.map +1 -0
- package/dist/cjs/icons/IconXiTongPeiZhi.js +20 -0
- package/dist/cjs/icons/IconXiTongPeiZhi.js.map +1 -0
- package/dist/cjs/icons/IconXiaZai.js +17 -0
- package/dist/cjs/icons/IconXiaZai.js.map +1 -0
- package/dist/cjs/icons/IconXiaZaiZhuShou.js +20 -0
- package/dist/cjs/icons/IconXiaZaiZhuShou.js.map +1 -0
- package/dist/cjs/icons/IconXiaoXi.js +17 -0
- package/dist/cjs/icons/IconXiaoXi.js.map +1 -0
- package/dist/cjs/icons/IconXinXiGuanLi.js +20 -0
- package/dist/cjs/icons/IconXinXiGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconXinZeng.js +17 -0
- package/dist/cjs/icons/IconXinZeng.js.map +1 -0
- package/dist/cjs/icons/IconYanZhengMa.js +17 -0
- package/dist/cjs/icons/IconYanZhengMa.js.map +1 -0
- package/dist/cjs/icons/IconYunYingGuanLi.js +20 -0
- package/dist/cjs/icons/IconYunYingGuanLi.js.map +1 -0
- package/dist/cjs/icons/IconZengJia.js +17 -0
- package/dist/cjs/icons/IconZengJia.js.map +1 -0
- package/dist/cjs/icons/IconZhanKai.js +17 -0
- package/dist/cjs/icons/IconZhanKai.js.map +1 -0
- package/dist/cjs/icons/IconZhanKai1.js +17 -0
- package/dist/cjs/icons/IconZhanKai1.js.map +1 -0
- package/dist/cjs/icons/IconZhengQue.js +17 -0
- package/dist/cjs/icons/IconZhengQue.js.map +1 -0
- package/dist/cjs/icons/IconZhiShiKu.js +17 -0
- package/dist/cjs/icons/IconZhiShiKu.js.map +1 -0
- package/dist/cjs/icons/IconZhiShiKu1.js +17 -0
- package/dist/cjs/icons/IconZhiShiKu1.js.map +1 -0
- package/dist/cjs/index.js +95 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/manifest-generator.js +281 -0
- package/dist/cjs/manifest-generator.js.map +1 -0
- package/dist/cjs/multi-format-output.js +233 -0
- package/dist/cjs/multi-format-output.js.map +1 -0
- package/dist/cjs/svg-exporter.js +283 -0
- package/dist/cjs/svg-exporter.js.map +1 -0
- package/dist/cjs/svg-transformer.js +327 -0
- package/dist/cjs/svg-transformer.js.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/version-manager.js +175 -0
- package/dist/cjs/version-manager.js.map +1 -0
- package/dist/esm/changelog-generator.js +288 -0
- package/dist/esm/changelog-generator.js.map +1 -0
- package/dist/esm/component-generator.js +426 -0
- package/dist/esm/component-generator.js.map +1 -0
- package/dist/esm/figma-client.js +254 -0
- package/dist/esm/figma-client.js.map +1 -0
- package/dist/esm/icon-filter.js +268 -0
- package/dist/esm/icon-filter.js.map +1 -0
- package/dist/esm/icon-search.js +39 -0
- package/dist/esm/icon-search.js.map +1 -0
- package/dist/esm/icon-validator.js +358 -0
- package/dist/esm/icon-validator.js.map +1 -0
- package/dist/esm/icons/IconArrowRight.js +14 -0
- package/dist/esm/icons/IconArrowRight.js.map +1 -0
- package/dist/esm/icons/IconBack.js +14 -0
- package/dist/esm/icons/IconBack.js.map +1 -0
- package/dist/esm/icons/IconBack1.js +14 -0
- package/dist/esm/icons/IconBack1.js.map +1 -0
- package/dist/esm/icons/IconBangZhuShuoMing.js +14 -0
- package/dist/esm/icons/IconBangZhuShuoMing.js.map +1 -0
- package/dist/esm/icons/IconBaoGaoZhuShou.js +17 -0
- package/dist/esm/icons/IconBaoGaoZhuShou.js.map +1 -0
- package/dist/esm/icons/IconCheck.js +14 -0
- package/dist/esm/icons/IconCheck.js.map +1 -0
- package/dist/esm/icons/IconCheck1.js +14 -0
- package/dist/esm/icons/IconCheck1.js.map +1 -0
- package/dist/esm/icons/IconChengYuanGuanLi.js +17 -0
- package/dist/esm/icons/IconChengYuanGuanLi.js.map +1 -0
- package/dist/esm/icons/IconChongXinFaSong.js +14 -0
- package/dist/esm/icons/IconChongXinFaSong.js.map +1 -0
- package/dist/esm/icons/IconCloseCircle.js +14 -0
- package/dist/esm/icons/IconCloseCircle.js.map +1 -0
- package/dist/esm/icons/IconCuoWu.js +14 -0
- package/dist/esm/icons/IconCuoWu.js.map +1 -0
- package/dist/esm/icons/IconDingDing.js +14 -0
- package/dist/esm/icons/IconDingDing.js.map +1 -0
- package/dist/esm/icons/IconEdit03.js +14 -0
- package/dist/esm/icons/IconEdit03.js.map +1 -0
- package/dist/esm/icons/IconFanHui.js +14 -0
- package/dist/esm/icons/IconFanHui.js.map +1 -0
- package/dist/esm/icons/IconFangDa.js +14 -0
- package/dist/esm/icons/IconFangDa.js.map +1 -0
- package/dist/esm/icons/IconFrame.js +14 -0
- package/dist/esm/icons/IconFrame.js.map +1 -0
- package/dist/esm/icons/IconFrame1261156242.js +14 -0
- package/dist/esm/icons/IconFrame1261156242.js.map +1 -0
- package/dist/esm/icons/IconGuanBi.js +14 -0
- package/dist/esm/icons/IconGuanBi.js.map +1 -0
- package/dist/esm/icons/IconGuanBi1.js +14 -0
- package/dist/esm/icons/IconGuanBi1.js.map +1 -0
- package/dist/esm/icons/IconGuanBiXiao.js +14 -0
- package/dist/esm/icons/IconGuanBiXiao.js.map +1 -0
- package/dist/esm/icons/IconGuanBiXiao1.js +14 -0
- package/dist/esm/icons/IconGuanBiXiao1.js.map +1 -0
- package/dist/esm/icons/IconLianJie.js +14 -0
- package/dist/esm/icons/IconLianJie.js.map +1 -0
- package/dist/esm/icons/IconLianJie1.js +14 -0
- package/dist/esm/icons/IconLianJie1.js.map +1 -0
- package/dist/esm/icons/IconQiWeiJiQiRen.js +14 -0
- package/dist/esm/icons/IconQiWeiJiQiRen.js.map +1 -0
- package/dist/esm/icons/IconQiYeBan.js +17 -0
- package/dist/esm/icons/IconQiYeBan.js.map +1 -0
- package/dist/esm/icons/IconRss.js +14 -0
- package/dist/esm/icons/IconRss.js.map +1 -0
- package/dist/esm/icons/IconSearch.js +14 -0
- package/dist/esm/icons/IconSearch.js.map +1 -0
- package/dist/esm/icons/IconSearch1.js +14 -0
- package/dist/esm/icons/IconSearch1.js.map +1 -0
- package/dist/esm/icons/IconSheZhi.js +14 -0
- package/dist/esm/icons/IconSheZhi.js.map +1 -0
- package/dist/esm/icons/IconShengCheng.js +14 -0
- package/dist/esm/icons/IconShengCheng.js.map +1 -0
- package/dist/esm/icons/IconShiBai.js +14 -0
- package/dist/esm/icons/IconShiBai.js.map +1 -0
- package/dist/esm/icons/IconShouQi.js +14 -0
- package/dist/esm/icons/IconShouQi.js.map +1 -0
- package/dist/esm/icons/IconSouSuoZhuShou.js +17 -0
- package/dist/esm/icons/IconSouSuoZhuShou.js.map +1 -0
- package/dist/esm/icons/IconSuoXiao.js +14 -0
- package/dist/esm/icons/IconSuoXiao.js.map +1 -0
- package/dist/esm/icons/IconTianJia.js +14 -0
- package/dist/esm/icons/IconTianJia.js.map +1 -0
- package/dist/esm/icons/IconTongZhi.js +14 -0
- package/dist/esm/icons/IconTongZhi.js.map +1 -0
- package/dist/esm/icons/IconTongZhi1.js +14 -0
- package/dist/esm/icons/IconTongZhi1.js.map +1 -0
- package/dist/esm/icons/IconTuiChu.js +14 -0
- package/dist/esm/icons/IconTuiChu.js.map +1 -0
- package/dist/esm/icons/IconWangLuoJianSuo.js +14 -0
- package/dist/esm/icons/IconWangLuoJianSuo.js.map +1 -0
- package/dist/esm/icons/IconWangYeXiaZai.js +14 -0
- package/dist/esm/icons/IconWangYeXiaZai.js.map +1 -0
- package/dist/esm/icons/IconWeiBiaoTi1HuaBan11.js +14 -0
- package/dist/esm/icons/IconWeiBiaoTi1HuaBan11.js.map +1 -0
- package/dist/esm/icons/IconWenDaZhuShou.js +17 -0
- package/dist/esm/icons/IconWenDaZhuShou.js.map +1 -0
- package/dist/esm/icons/IconWenDang.js +14 -0
- package/dist/esm/icons/IconWenDang.js.map +1 -0
- package/dist/esm/icons/IconWenDang1.js +14 -0
- package/dist/esm/icons/IconWenDang1.js.map +1 -0
- package/dist/esm/icons/IconWenJian.js +14 -0
- package/dist/esm/icons/IconWenJian.js.map +1 -0
- package/dist/esm/icons/IconXiTongPeiZhi.js +17 -0
- package/dist/esm/icons/IconXiTongPeiZhi.js.map +1 -0
- package/dist/esm/icons/IconXiaZai.js +14 -0
- package/dist/esm/icons/IconXiaZai.js.map +1 -0
- package/dist/esm/icons/IconXiaZaiZhuShou.js +17 -0
- package/dist/esm/icons/IconXiaZaiZhuShou.js.map +1 -0
- package/dist/esm/icons/IconXiaoXi.js +14 -0
- package/dist/esm/icons/IconXiaoXi.js.map +1 -0
- package/dist/esm/icons/IconXinXiGuanLi.js +17 -0
- package/dist/esm/icons/IconXinXiGuanLi.js.map +1 -0
- package/dist/esm/icons/IconXinZeng.js +14 -0
- package/dist/esm/icons/IconXinZeng.js.map +1 -0
- package/dist/esm/icons/IconYanZhengMa.js +14 -0
- package/dist/esm/icons/IconYanZhengMa.js.map +1 -0
- package/dist/esm/icons/IconYunYingGuanLi.js +17 -0
- package/dist/esm/icons/IconYunYingGuanLi.js.map +1 -0
- package/dist/esm/icons/IconZengJia.js +14 -0
- package/dist/esm/icons/IconZengJia.js.map +1 -0
- package/dist/esm/icons/IconZhanKai.js +14 -0
- package/dist/esm/icons/IconZhanKai.js.map +1 -0
- package/dist/esm/icons/IconZhanKai1.js +14 -0
- package/dist/esm/icons/IconZhanKai1.js.map +1 -0
- package/dist/esm/icons/IconZhengQue.js +14 -0
- package/dist/esm/icons/IconZhengQue.js.map +1 -0
- package/dist/esm/icons/IconZhiShiKu.js +14 -0
- package/dist/esm/icons/IconZhiShiKu.js.map +1 -0
- package/dist/esm/icons/IconZhiShiKu1.js +14 -0
- package/dist/esm/icons/IconZhiShiKu1.js.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/manifest-generator.js +267 -0
- package/dist/esm/manifest-generator.js.map +1 -0
- package/dist/esm/multi-format-output.js +221 -0
- package/dist/esm/multi-format-output.js.map +1 -0
- package/dist/esm/svg-exporter.js +244 -0
- package/dist/esm/svg-exporter.js.map +1 -0
- package/dist/esm/svg-transformer.js +314 -0
- package/dist/esm/svg-transformer.js.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/version-manager.js +167 -0
- package/dist/esm/version-manager.js.map +1 -0
- package/dist/types/changelog-generator.d.ts +112 -0
- package/dist/types/changelog-generator.d.ts.map +1 -0
- package/dist/types/component-generator.d.ts +88 -0
- package/dist/types/component-generator.d.ts.map +1 -0
- package/dist/types/figma-client.d.ts +107 -0
- package/dist/types/figma-client.d.ts.map +1 -0
- package/dist/types/icon-filter.d.ts +126 -0
- package/dist/types/icon-filter.d.ts.map +1 -0
- package/dist/types/icon-search.d.ts +31 -0
- package/dist/types/icon-search.d.ts.map +1 -0
- package/dist/types/icon-validator.d.ts +110 -0
- package/dist/types/icon-validator.d.ts.map +1 -0
- package/dist/types/icons/IconArrowRight.d.ts +17 -0
- package/dist/types/icons/IconArrowRight.d.ts.map +1 -0
- package/dist/types/icons/IconBack.d.ts +17 -0
- package/dist/types/icons/IconBack.d.ts.map +1 -0
- package/dist/types/icons/IconBack1.d.ts +17 -0
- package/dist/types/icons/IconBack1.d.ts.map +1 -0
- package/dist/types/icons/IconBangZhuShuoMing.d.ts +17 -0
- package/dist/types/icons/IconBangZhuShuoMing.d.ts.map +1 -0
- package/dist/types/icons/IconBaoGaoZhuShou.d.ts +17 -0
- package/dist/types/icons/IconBaoGaoZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconCheck.d.ts +17 -0
- package/dist/types/icons/IconCheck.d.ts.map +1 -0
- package/dist/types/icons/IconCheck1.d.ts +17 -0
- package/dist/types/icons/IconCheck1.d.ts.map +1 -0
- package/dist/types/icons/IconChengYuanGuanLi.d.ts +17 -0
- package/dist/types/icons/IconChengYuanGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconChongXinFaSong.d.ts +17 -0
- package/dist/types/icons/IconChongXinFaSong.d.ts.map +1 -0
- package/dist/types/icons/IconCloseCircle.d.ts +17 -0
- package/dist/types/icons/IconCloseCircle.d.ts.map +1 -0
- package/dist/types/icons/IconCuoWu.d.ts +17 -0
- package/dist/types/icons/IconCuoWu.d.ts.map +1 -0
- package/dist/types/icons/IconDingDing.d.ts +17 -0
- package/dist/types/icons/IconDingDing.d.ts.map +1 -0
- package/dist/types/icons/IconEdit03.d.ts +17 -0
- package/dist/types/icons/IconEdit03.d.ts.map +1 -0
- package/dist/types/icons/IconFanHui.d.ts +17 -0
- package/dist/types/icons/IconFanHui.d.ts.map +1 -0
- package/dist/types/icons/IconFangDa.d.ts +17 -0
- package/dist/types/icons/IconFangDa.d.ts.map +1 -0
- package/dist/types/icons/IconFrame.d.ts +17 -0
- package/dist/types/icons/IconFrame.d.ts.map +1 -0
- package/dist/types/icons/IconFrame1261156242.d.ts +17 -0
- package/dist/types/icons/IconFrame1261156242.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBi.d.ts +17 -0
- package/dist/types/icons/IconGuanBi.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBi1.d.ts +17 -0
- package/dist/types/icons/IconGuanBi1.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBiXiao.d.ts +17 -0
- package/dist/types/icons/IconGuanBiXiao.d.ts.map +1 -0
- package/dist/types/icons/IconGuanBiXiao1.d.ts +17 -0
- package/dist/types/icons/IconGuanBiXiao1.d.ts.map +1 -0
- package/dist/types/icons/IconLianJie.d.ts +17 -0
- package/dist/types/icons/IconLianJie.d.ts.map +1 -0
- package/dist/types/icons/IconLianJie1.d.ts +17 -0
- package/dist/types/icons/IconLianJie1.d.ts.map +1 -0
- package/dist/types/icons/IconQiWeiJiQiRen.d.ts +17 -0
- package/dist/types/icons/IconQiWeiJiQiRen.d.ts.map +1 -0
- package/dist/types/icons/IconQiYeBan.d.ts +17 -0
- package/dist/types/icons/IconQiYeBan.d.ts.map +1 -0
- package/dist/types/icons/IconRss.d.ts +17 -0
- package/dist/types/icons/IconRss.d.ts.map +1 -0
- package/dist/types/icons/IconSearch.d.ts +17 -0
- package/dist/types/icons/IconSearch.d.ts.map +1 -0
- package/dist/types/icons/IconSearch1.d.ts +17 -0
- package/dist/types/icons/IconSearch1.d.ts.map +1 -0
- package/dist/types/icons/IconSheZhi.d.ts +17 -0
- package/dist/types/icons/IconSheZhi.d.ts.map +1 -0
- package/dist/types/icons/IconShengCheng.d.ts +17 -0
- package/dist/types/icons/IconShengCheng.d.ts.map +1 -0
- package/dist/types/icons/IconShiBai.d.ts +17 -0
- package/dist/types/icons/IconShiBai.d.ts.map +1 -0
- package/dist/types/icons/IconShouQi.d.ts +17 -0
- package/dist/types/icons/IconShouQi.d.ts.map +1 -0
- package/dist/types/icons/IconSouSuoZhuShou.d.ts +17 -0
- package/dist/types/icons/IconSouSuoZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconSuoXiao.d.ts +17 -0
- package/dist/types/icons/IconSuoXiao.d.ts.map +1 -0
- package/dist/types/icons/IconTianJia.d.ts +17 -0
- package/dist/types/icons/IconTianJia.d.ts.map +1 -0
- package/dist/types/icons/IconTongZhi.d.ts +17 -0
- package/dist/types/icons/IconTongZhi.d.ts.map +1 -0
- package/dist/types/icons/IconTongZhi1.d.ts +17 -0
- package/dist/types/icons/IconTongZhi1.d.ts.map +1 -0
- package/dist/types/icons/IconTuiChu.d.ts +17 -0
- package/dist/types/icons/IconTuiChu.d.ts.map +1 -0
- package/dist/types/icons/IconWangLuoJianSuo.d.ts +17 -0
- package/dist/types/icons/IconWangLuoJianSuo.d.ts.map +1 -0
- package/dist/types/icons/IconWangYeXiaZai.d.ts +17 -0
- package/dist/types/icons/IconWangYeXiaZai.d.ts.map +1 -0
- package/dist/types/icons/IconWeiBiaoTi1HuaBan11.d.ts +17 -0
- package/dist/types/icons/IconWeiBiaoTi1HuaBan11.d.ts.map +1 -0
- package/dist/types/icons/IconWenDaZhuShou.d.ts +17 -0
- package/dist/types/icons/IconWenDaZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconWenDang.d.ts +17 -0
- package/dist/types/icons/IconWenDang.d.ts.map +1 -0
- package/dist/types/icons/IconWenDang1.d.ts +17 -0
- package/dist/types/icons/IconWenDang1.d.ts.map +1 -0
- package/dist/types/icons/IconWenJian.d.ts +17 -0
- package/dist/types/icons/IconWenJian.d.ts.map +1 -0
- package/dist/types/icons/IconXiTongPeiZhi.d.ts +17 -0
- package/dist/types/icons/IconXiTongPeiZhi.d.ts.map +1 -0
- package/dist/types/icons/IconXiaZai.d.ts +17 -0
- package/dist/types/icons/IconXiaZai.d.ts.map +1 -0
- package/dist/types/icons/IconXiaZaiZhuShou.d.ts +17 -0
- package/dist/types/icons/IconXiaZaiZhuShou.d.ts.map +1 -0
- package/dist/types/icons/IconXiaoXi.d.ts +17 -0
- package/dist/types/icons/IconXiaoXi.d.ts.map +1 -0
- package/dist/types/icons/IconXinXiGuanLi.d.ts +17 -0
- package/dist/types/icons/IconXinXiGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconXinZeng.d.ts +17 -0
- package/dist/types/icons/IconXinZeng.d.ts.map +1 -0
- package/dist/types/icons/IconYanZhengMa.d.ts +17 -0
- package/dist/types/icons/IconYanZhengMa.d.ts.map +1 -0
- package/dist/types/icons/IconYunYingGuanLi.d.ts +17 -0
- package/dist/types/icons/IconYunYingGuanLi.d.ts.map +1 -0
- package/dist/types/icons/IconZengJia.d.ts +17 -0
- package/dist/types/icons/IconZengJia.d.ts.map +1 -0
- package/dist/types/icons/IconZhanKai.d.ts +17 -0
- package/dist/types/icons/IconZhanKai.d.ts.map +1 -0
- package/dist/types/icons/IconZhanKai1.d.ts +17 -0
- package/dist/types/icons/IconZhanKai1.d.ts.map +1 -0
- package/dist/types/icons/IconZhengQue.d.ts +17 -0
- package/dist/types/icons/IconZhengQue.d.ts.map +1 -0
- package/dist/types/icons/IconZhiShiKu.d.ts +17 -0
- package/dist/types/icons/IconZhiShiKu.d.ts.map +1 -0
- package/dist/types/icons/IconZhiShiKu1.d.ts +17 -0
- package/dist/types/icons/IconZhiShiKu1.d.ts.map +1 -0
- package/dist/types/index.d.ts +56 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/manifest-generator.d.ts +113 -0
- package/dist/types/manifest-generator.d.ts.map +1 -0
- package/dist/types/multi-format-output.d.ts +151 -0
- package/dist/types/multi-format-output.d.ts.map +1 -0
- package/dist/types/svg-exporter.d.ts +103 -0
- package/dist/types/svg-exporter.d.ts.map +1 -0
- package/dist/types/svg-transformer.d.ts +103 -0
- package/dist/types/svg-transformer.d.ts.map +1 -0
- package/dist/types/types.d.ts +346 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/version-manager.d.ts +82 -0
- package/dist/types/version-manager.d.ts.map +1 -0
- package/icons.json +227 -0
- package/package.json +66 -0
- package/svg/back.svg +1 -0
- package/svg/back1.svg +1 -0
- package/svg/check.svg +1 -0
- package/svg/check1.svg +1 -0
- package/svg/search.svg +1 -0
- package/svg/search1.svg +1 -0
- package/svg//345/205/263/351/227/255-/345/260/217.svg +1 -0
- package/svg//345/205/263/351/227/255-/345/260/2171.svg +1 -0
- package/svg//345/205/263/351/227/255.svg +1 -0
- package/svg//345/205/263/351/227/2551.svg +1 -0
- package/svg//345/261/225/345/274/200.svg +1 -0
- package/svg//345/261/225/345/274/2001.svg +1 -0
- package/svg//346/226/207/346/241/243.svg +1 -0
- package/svg//346/226/207/346/241/2431.svg +1 -0
- package/svg//347/237/245/350/257/206/345/272/223.svg +1 -0
- package/svg//347/237/245/350/257/206/345/272/2231.svg +1 -0
- package/svg//351/200/232/347/237/245.svg +1 -0
- package/svg//351/200/232/347/237/2451.svg +1 -0
- package/svg//351/223/276/346/216/245.svg +1 -0
- package/svg//351/223/276/346/216/2451.svg +1 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icon Library - Auto-generated from Figma
|
|
3
|
+
*
|
|
4
|
+
* This file exports all icon components and related types.
|
|
5
|
+
* Do not edit this file manually - it is generated by the build process.
|
|
6
|
+
*/
|
|
7
|
+
import { IconBack } from './icons/IconBack';
|
|
8
|
+
import { IconBack1 } from './icons/IconBack1';
|
|
9
|
+
import { IconCheck } from './icons/IconCheck';
|
|
10
|
+
import { IconCheck1 } from './icons/IconCheck1';
|
|
11
|
+
import { IconGuanBi } from './icons/IconGuanBi';
|
|
12
|
+
import { IconGuanBi1 } from './icons/IconGuanBi1';
|
|
13
|
+
import { IconGuanBiXiao } from './icons/IconGuanBiXiao';
|
|
14
|
+
import { IconGuanBiXiao1 } from './icons/IconGuanBiXiao1';
|
|
15
|
+
import { IconLianJie } from './icons/IconLianJie';
|
|
16
|
+
import { IconLianJie1 } from './icons/IconLianJie1';
|
|
17
|
+
import { IconSearch } from './icons/IconSearch';
|
|
18
|
+
import { IconSearch1 } from './icons/IconSearch1';
|
|
19
|
+
import { IconTongZhi } from './icons/IconTongZhi';
|
|
20
|
+
import { IconTongZhi1 } from './icons/IconTongZhi1';
|
|
21
|
+
import { IconWenDang } from './icons/IconWenDang';
|
|
22
|
+
import { IconWenDang1 } from './icons/IconWenDang1';
|
|
23
|
+
import { IconZhanKai } from './icons/IconZhanKai';
|
|
24
|
+
import { IconZhanKai1 } from './icons/IconZhanKai1';
|
|
25
|
+
import { IconZhiShiKu } from './icons/IconZhiShiKu';
|
|
26
|
+
import { IconZhiShiKu1 } from './icons/IconZhiShiKu1';
|
|
27
|
+
export { IconBack } from './icons/IconBack';
|
|
28
|
+
export { IconBack1 } from './icons/IconBack1';
|
|
29
|
+
export { IconCheck } from './icons/IconCheck';
|
|
30
|
+
export { IconCheck1 } from './icons/IconCheck1';
|
|
31
|
+
export { IconGuanBi } from './icons/IconGuanBi';
|
|
32
|
+
export { IconGuanBi1 } from './icons/IconGuanBi1';
|
|
33
|
+
export { IconGuanBiXiao } from './icons/IconGuanBiXiao';
|
|
34
|
+
export { IconGuanBiXiao1 } from './icons/IconGuanBiXiao1';
|
|
35
|
+
export { IconLianJie } from './icons/IconLianJie';
|
|
36
|
+
export { IconLianJie1 } from './icons/IconLianJie1';
|
|
37
|
+
export { IconSearch } from './icons/IconSearch';
|
|
38
|
+
export { IconSearch1 } from './icons/IconSearch1';
|
|
39
|
+
export { IconTongZhi } from './icons/IconTongZhi';
|
|
40
|
+
export { IconTongZhi1 } from './icons/IconTongZhi1';
|
|
41
|
+
export { IconWenDang } from './icons/IconWenDang';
|
|
42
|
+
export { IconWenDang1 } from './icons/IconWenDang1';
|
|
43
|
+
export { IconZhanKai } from './icons/IconZhanKai';
|
|
44
|
+
export { IconZhanKai1 } from './icons/IconZhanKai1';
|
|
45
|
+
export { IconZhiShiKu } from './icons/IconZhiShiKu';
|
|
46
|
+
export { IconZhiShiKu1 } from './icons/IconZhiShiKu1';
|
|
47
|
+
/**
|
|
48
|
+
* Object containing all icon components
|
|
49
|
+
*/
|
|
50
|
+
export const allIcons = {
|
|
51
|
+
IconBack,
|
|
52
|
+
IconBack1,
|
|
53
|
+
IconCheck,
|
|
54
|
+
IconCheck1,
|
|
55
|
+
IconGuanBi,
|
|
56
|
+
IconGuanBi1,
|
|
57
|
+
IconGuanBiXiao,
|
|
58
|
+
IconGuanBiXiao1,
|
|
59
|
+
IconLianJie,
|
|
60
|
+
IconLianJie1,
|
|
61
|
+
IconSearch,
|
|
62
|
+
IconSearch1,
|
|
63
|
+
IconTongZhi,
|
|
64
|
+
IconTongZhi1,
|
|
65
|
+
IconWenDang,
|
|
66
|
+
IconWenDang1,
|
|
67
|
+
IconZhanKai,
|
|
68
|
+
IconZhanKai1,
|
|
69
|
+
IconZhiShiKu,
|
|
70
|
+
IconZhiShiKu1
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icon Manifest Generator Module
|
|
3
|
+
*
|
|
4
|
+
* Generates IconManifest containing all icon metadata.
|
|
5
|
+
* The manifest serves as the source of truth for the icon library.
|
|
6
|
+
*
|
|
7
|
+
* Requirements: 2.6
|
|
8
|
+
*/
|
|
9
|
+
import { toPascalCase } from './component-generator';
|
|
10
|
+
/**
|
|
11
|
+
* Default manifest generator options
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_OPTIONS = {
|
|
14
|
+
version: '1.0.0',
|
|
15
|
+
includeSvgContent: false,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Normalizes an icon name to PascalCase format with Icon prefix
|
|
19
|
+
*
|
|
20
|
+
* @param name - Original icon name
|
|
21
|
+
* @returns Normalized PascalCase name
|
|
22
|
+
*/
|
|
23
|
+
export function normalizeIconName(name) {
|
|
24
|
+
const pascalName = toPascalCase(name);
|
|
25
|
+
if (!pascalName) {
|
|
26
|
+
return 'Icon';
|
|
27
|
+
}
|
|
28
|
+
return `Icon${pascalName}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates IconMetadata from a FilteredIconComponent
|
|
32
|
+
*
|
|
33
|
+
* @param component - Filtered icon component from Figma
|
|
34
|
+
* @param svgContent - Optional SVG content
|
|
35
|
+
* @returns IconMetadata object
|
|
36
|
+
*/
|
|
37
|
+
export function createIconMetadata(component, svgContent) {
|
|
38
|
+
return {
|
|
39
|
+
id: component.id,
|
|
40
|
+
name: component.name,
|
|
41
|
+
originalName: component.name,
|
|
42
|
+
normalizedName: normalizeIconName(component.name),
|
|
43
|
+
width: component.width,
|
|
44
|
+
height: component.height,
|
|
45
|
+
svgContent,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates IconMetadata from an export result
|
|
50
|
+
*
|
|
51
|
+
* @param exportResult - Result from SVG export
|
|
52
|
+
* @param component - Original filtered component
|
|
53
|
+
* @returns IconMetadata object or null if export failed
|
|
54
|
+
*/
|
|
55
|
+
export function createIconMetadataFromExport(exportResult, component) {
|
|
56
|
+
if (!exportResult.success) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
id: exportResult.id,
|
|
61
|
+
name: exportResult.name,
|
|
62
|
+
originalName: exportResult.name,
|
|
63
|
+
normalizedName: normalizeIconName(exportResult.name),
|
|
64
|
+
width: component.width,
|
|
65
|
+
height: component.height,
|
|
66
|
+
svgContent: exportResult.svgContent,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generates an IconManifest from filtered icon components
|
|
71
|
+
*
|
|
72
|
+
* @param components - Array of filtered icon components
|
|
73
|
+
* @param options - Manifest generation options
|
|
74
|
+
* @returns IconManifest object
|
|
75
|
+
*/
|
|
76
|
+
export function generateManifest(components, options = {}) {
|
|
77
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
78
|
+
const icons = components.map((component) => createIconMetadata(component, opts.includeSvgContent ? undefined : undefined));
|
|
79
|
+
return {
|
|
80
|
+
version: opts.version,
|
|
81
|
+
generatedAt: new Date().toISOString(),
|
|
82
|
+
totalCount: icons.length,
|
|
83
|
+
icons,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Generates an IconManifest from export results
|
|
88
|
+
*
|
|
89
|
+
* @param exportResults - Array of export results
|
|
90
|
+
* @param components - Original filtered components (for dimension info)
|
|
91
|
+
* @param options - Manifest generation options
|
|
92
|
+
* @returns IconManifest object
|
|
93
|
+
*/
|
|
94
|
+
export function generateManifestFromExports(exportResults, components, options = {}) {
|
|
95
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
96
|
+
// Create a map of component ID to component for quick lookup
|
|
97
|
+
const componentMap = new Map();
|
|
98
|
+
for (const component of components) {
|
|
99
|
+
componentMap.set(component.id, component);
|
|
100
|
+
}
|
|
101
|
+
const icons = [];
|
|
102
|
+
for (const result of exportResults) {
|
|
103
|
+
if (result.success) {
|
|
104
|
+
const component = componentMap.get(result.id);
|
|
105
|
+
if (component) {
|
|
106
|
+
icons.push({
|
|
107
|
+
id: result.id,
|
|
108
|
+
name: result.name,
|
|
109
|
+
originalName: result.name,
|
|
110
|
+
normalizedName: normalizeIconName(result.name),
|
|
111
|
+
width: component.width,
|
|
112
|
+
height: component.height,
|
|
113
|
+
svgContent: opts.includeSvgContent ? result.svgContent : undefined,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
version: opts.version,
|
|
120
|
+
generatedAt: new Date().toISOString(),
|
|
121
|
+
totalCount: icons.length,
|
|
122
|
+
icons,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Validates that a manifest has all required fields
|
|
127
|
+
*
|
|
128
|
+
* @param manifest - Manifest to validate
|
|
129
|
+
* @returns True if manifest is valid
|
|
130
|
+
*/
|
|
131
|
+
export function isValidManifest(manifest) {
|
|
132
|
+
if (!manifest || typeof manifest !== 'object') {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
const m = manifest;
|
|
136
|
+
if (typeof m.version !== 'string') {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
if (typeof m.generatedAt !== 'string') {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
if (typeof m.totalCount !== 'number') {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
if (!Array.isArray(m.icons)) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
// Validate each icon has required fields
|
|
149
|
+
for (const icon of m.icons) {
|
|
150
|
+
if (!isValidIconMetadata(icon)) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Validates that an icon metadata object has all required fields
|
|
158
|
+
*
|
|
159
|
+
* @param icon - Icon metadata to validate
|
|
160
|
+
* @returns True if icon metadata is valid
|
|
161
|
+
*/
|
|
162
|
+
export function isValidIconMetadata(icon) {
|
|
163
|
+
if (!icon || typeof icon !== 'object') {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
const i = icon;
|
|
167
|
+
const requiredStringFields = ['id', 'name', 'originalName', 'normalizedName'];
|
|
168
|
+
for (const field of requiredStringFields) {
|
|
169
|
+
if (typeof i[field] !== 'string' || i[field] === '') {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const requiredNumberFields = ['width', 'height'];
|
|
174
|
+
for (const field of requiredNumberFields) {
|
|
175
|
+
if (typeof i[field] !== 'number' || i[field] <= 0) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Merges two manifests, preferring icons from the newer manifest
|
|
183
|
+
*
|
|
184
|
+
* @param oldManifest - Previous manifest
|
|
185
|
+
* @param newManifest - New manifest
|
|
186
|
+
* @returns Merged manifest
|
|
187
|
+
*/
|
|
188
|
+
export function mergeManifests(oldManifest, newManifest) {
|
|
189
|
+
// Create a map of old icons by normalized name
|
|
190
|
+
const oldIconMap = new Map();
|
|
191
|
+
for (const icon of oldManifest.icons) {
|
|
192
|
+
oldIconMap.set(icon.normalizedName, icon);
|
|
193
|
+
}
|
|
194
|
+
// Create a map of new icons by normalized name
|
|
195
|
+
const newIconMap = new Map();
|
|
196
|
+
for (const icon of newManifest.icons) {
|
|
197
|
+
newIconMap.set(icon.normalizedName, icon);
|
|
198
|
+
}
|
|
199
|
+
// Merge: new icons take precedence
|
|
200
|
+
const mergedIcons = [];
|
|
201
|
+
const seenNames = new Set();
|
|
202
|
+
// Add all new icons
|
|
203
|
+
for (const icon of newManifest.icons) {
|
|
204
|
+
mergedIcons.push(icon);
|
|
205
|
+
seenNames.add(icon.normalizedName);
|
|
206
|
+
}
|
|
207
|
+
// Add old icons that aren't in the new manifest
|
|
208
|
+
for (const icon of oldManifest.icons) {
|
|
209
|
+
if (!seenNames.has(icon.normalizedName)) {
|
|
210
|
+
mergedIcons.push(icon);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
version: newManifest.version,
|
|
215
|
+
generatedAt: newManifest.generatedAt,
|
|
216
|
+
totalCount: mergedIcons.length,
|
|
217
|
+
icons: mergedIcons,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Serializes a manifest to JSON string
|
|
222
|
+
*
|
|
223
|
+
* @param manifest - Manifest to serialize
|
|
224
|
+
* @param pretty - Whether to format with indentation
|
|
225
|
+
* @returns JSON string
|
|
226
|
+
*/
|
|
227
|
+
export function serializeManifest(manifest, pretty = true) {
|
|
228
|
+
return JSON.stringify(manifest, null, pretty ? 2 : undefined);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Parses a manifest from JSON string
|
|
232
|
+
*
|
|
233
|
+
* @param json - JSON string to parse
|
|
234
|
+
* @returns Parsed manifest or null if invalid
|
|
235
|
+
*/
|
|
236
|
+
export function parseManifest(json) {
|
|
237
|
+
try {
|
|
238
|
+
const parsed = JSON.parse(json);
|
|
239
|
+
if (isValidManifest(parsed)) {
|
|
240
|
+
return parsed;
|
|
241
|
+
}
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Gets icon metadata by normalized name from a manifest
|
|
250
|
+
*
|
|
251
|
+
* @param manifest - Manifest to search
|
|
252
|
+
* @param normalizedName - Normalized icon name to find
|
|
253
|
+
* @returns IconMetadata or undefined if not found
|
|
254
|
+
*/
|
|
255
|
+
export function getIconByName(manifest, normalizedName) {
|
|
256
|
+
return manifest.icons.find((icon) => icon.normalizedName === normalizedName);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Gets all icon names from a manifest
|
|
260
|
+
*
|
|
261
|
+
* @param manifest - Manifest to extract names from
|
|
262
|
+
* @returns Array of normalized icon names
|
|
263
|
+
*/
|
|
264
|
+
export function getIconNames(manifest) {
|
|
265
|
+
return manifest.icons.map((icon) => icon.normalizedName);
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=manifest-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-generator.js","sourceRoot":"","sources":["../../src/manifest-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Format Output Module
|
|
3
|
+
*
|
|
4
|
+
* Generates multiple output formats from icon metadata:
|
|
5
|
+
* - SVG Sprite file with symbol elements
|
|
6
|
+
* - JSON metadata file
|
|
7
|
+
*
|
|
8
|
+
* Requirements: 11.2, 11.3, 11.5
|
|
9
|
+
*/
|
|
10
|
+
import { extractSvgInnerContent, extractViewBox } from './svg-transformer';
|
|
11
|
+
/**
|
|
12
|
+
* Default sprite generator options
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_SPRITE_OPTIONS = {
|
|
15
|
+
defaultViewBox: '0 0 24 24',
|
|
16
|
+
includeComments: false,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Converts an icon name to a valid symbol ID
|
|
20
|
+
* Uses lowercase kebab-case format
|
|
21
|
+
*
|
|
22
|
+
* @param name - Icon name (can be PascalCase, camelCase, etc.)
|
|
23
|
+
* @returns Lowercase kebab-case ID
|
|
24
|
+
*/
|
|
25
|
+
export function toSymbolId(name) {
|
|
26
|
+
if (!name || name.trim().length === 0) {
|
|
27
|
+
return 'icon';
|
|
28
|
+
}
|
|
29
|
+
// Remove "Icon" prefix if present
|
|
30
|
+
let cleanName = name;
|
|
31
|
+
if (cleanName.startsWith('Icon') && cleanName.length > 4) {
|
|
32
|
+
cleanName = cleanName.slice(4);
|
|
33
|
+
}
|
|
34
|
+
// Convert PascalCase/camelCase to kebab-case
|
|
35
|
+
return cleanName
|
|
36
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
37
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
38
|
+
.replace(/[\s_]+/g, '-')
|
|
39
|
+
.toLowerCase();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a sprite symbol from icon metadata
|
|
43
|
+
*
|
|
44
|
+
* @param icon - Icon metadata with SVG content
|
|
45
|
+
* @param options - Sprite generator options
|
|
46
|
+
* @returns SpriteSymbol object or null if no SVG content
|
|
47
|
+
*/
|
|
48
|
+
export function createSpriteSymbol(icon, options = DEFAULT_SPRITE_OPTIONS) {
|
|
49
|
+
if (!icon.svgContent) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const id = toSymbolId(icon.normalizedName);
|
|
53
|
+
const viewBox = extractViewBox(icon.svgContent) || options.defaultViewBox || '0 0 24 24';
|
|
54
|
+
const content = extractSvgInnerContent(icon.svgContent);
|
|
55
|
+
return {
|
|
56
|
+
id,
|
|
57
|
+
viewBox,
|
|
58
|
+
content,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Generates an SVG sprite from a list of icons
|
|
63
|
+
*
|
|
64
|
+
* @param icons - Array of icon metadata with SVG content
|
|
65
|
+
* @param options - Sprite generator options
|
|
66
|
+
* @returns SvgSprite object with full sprite content and symbols
|
|
67
|
+
*
|
|
68
|
+
* Requirements: 11.2
|
|
69
|
+
*/
|
|
70
|
+
export function generateSprite(icons, options = {}) {
|
|
71
|
+
const opts = { ...DEFAULT_SPRITE_OPTIONS, ...options };
|
|
72
|
+
// Create symbols from icons that have SVG content
|
|
73
|
+
const symbols = [];
|
|
74
|
+
for (const icon of icons) {
|
|
75
|
+
const symbol = createSpriteSymbol(icon, opts);
|
|
76
|
+
if (symbol) {
|
|
77
|
+
symbols.push(symbol);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Sort symbols alphabetically by ID for consistent output
|
|
81
|
+
symbols.sort((a, b) => a.id.localeCompare(b.id));
|
|
82
|
+
// Generate sprite content
|
|
83
|
+
const symbolsContent = symbols
|
|
84
|
+
.map((s) => ` <symbol id="${s.id}" viewBox="${s.viewBox}">
|
|
85
|
+
${s.content}
|
|
86
|
+
</symbol>`)
|
|
87
|
+
.join('\n');
|
|
88
|
+
const content = `<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
|
89
|
+
${symbolsContent}
|
|
90
|
+
</svg>`;
|
|
91
|
+
return {
|
|
92
|
+
content,
|
|
93
|
+
symbols,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generates an SVG sprite from an IconManifest
|
|
98
|
+
*
|
|
99
|
+
* @param manifest - Icon manifest with icons
|
|
100
|
+
* @param options - Sprite generator options
|
|
101
|
+
* @returns SvgSprite object
|
|
102
|
+
*
|
|
103
|
+
* Requirements: 11.2
|
|
104
|
+
*/
|
|
105
|
+
export function generateSpriteFromManifest(manifest, options = {}) {
|
|
106
|
+
return generateSprite(manifest.icons, options);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Default JSON metadata options
|
|
110
|
+
*/
|
|
111
|
+
const DEFAULT_JSON_OPTIONS = {
|
|
112
|
+
svgBasePath: 'svg',
|
|
113
|
+
componentBasePath: 'src/icons',
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Creates a JSON entry for an icon
|
|
117
|
+
*
|
|
118
|
+
* @param icon - Icon metadata
|
|
119
|
+
* @param options - JSON metadata options
|
|
120
|
+
* @returns IconJsonEntry object
|
|
121
|
+
*/
|
|
122
|
+
export function createIconJsonEntry(icon, options = DEFAULT_JSON_OPTIONS) {
|
|
123
|
+
// Use originalName for SVG file (preserves Chinese characters)
|
|
124
|
+
const svgFileName = icon.originalName + '.svg';
|
|
125
|
+
const componentFileName = icon.normalizedName + '.tsx';
|
|
126
|
+
return {
|
|
127
|
+
name: icon.normalizedName,
|
|
128
|
+
originalName: icon.originalName,
|
|
129
|
+
svgPath: `${options.svgBasePath}/${svgFileName}`,
|
|
130
|
+
componentPath: `${options.componentBasePath}/${componentFileName}`,
|
|
131
|
+
size: {
|
|
132
|
+
width: icon.width,
|
|
133
|
+
height: icon.height,
|
|
134
|
+
},
|
|
135
|
+
createdAt: icon.createdAt,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Generates JSON metadata from a list of icons
|
|
140
|
+
*
|
|
141
|
+
* @param icons - Array of icon metadata
|
|
142
|
+
* @param version - Version string
|
|
143
|
+
* @param options - JSON metadata options
|
|
144
|
+
* @returns IconsJsonMetadata object
|
|
145
|
+
*
|
|
146
|
+
* Requirements: 11.3, 11.5
|
|
147
|
+
*/
|
|
148
|
+
export function generateJsonMetadata(icons, version, options = {}) {
|
|
149
|
+
const opts = { ...DEFAULT_JSON_OPTIONS, ...options };
|
|
150
|
+
const iconEntries = icons.map((icon) => createIconJsonEntry(icon, opts));
|
|
151
|
+
// Sort entries alphabetically by name for consistent output
|
|
152
|
+
// Removed internal sorting to respect the order passed from generate-outputs.ts (which sorts by date)
|
|
153
|
+
// iconEntries.sort((a, b) => a.name.localeCompare(b.name))
|
|
154
|
+
return {
|
|
155
|
+
version,
|
|
156
|
+
generatedAt: new Date().toISOString(),
|
|
157
|
+
totalCount: iconEntries.length,
|
|
158
|
+
icons: iconEntries,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Generates JSON metadata from an IconManifest
|
|
163
|
+
*
|
|
164
|
+
* @param manifest - Icon manifest
|
|
165
|
+
* @param options - JSON metadata options
|
|
166
|
+
* @returns IconsJsonMetadata object
|
|
167
|
+
*
|
|
168
|
+
* Requirements: 11.3, 11.5
|
|
169
|
+
*/
|
|
170
|
+
export function generateJsonMetadataFromManifest(manifest, options = {}) {
|
|
171
|
+
return generateJsonMetadata(manifest.icons, manifest.version, options);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Serializes JSON metadata to a formatted string
|
|
175
|
+
*
|
|
176
|
+
* @param metadata - JSON metadata object
|
|
177
|
+
* @param pretty - Whether to format with indentation
|
|
178
|
+
* @returns JSON string
|
|
179
|
+
*/
|
|
180
|
+
export function serializeJsonMetadata(metadata, pretty = true) {
|
|
181
|
+
return JSON.stringify(metadata, null, pretty ? 2 : undefined);
|
|
182
|
+
}
|
|
183
|
+
// ============================================
|
|
184
|
+
// Validation Helpers
|
|
185
|
+
// ============================================
|
|
186
|
+
/**
|
|
187
|
+
* Validates that a sprite has all expected symbols
|
|
188
|
+
*
|
|
189
|
+
* @param sprite - Generated sprite
|
|
190
|
+
* @param expectedIconNames - Expected icon names
|
|
191
|
+
* @returns Array of missing icon names
|
|
192
|
+
*/
|
|
193
|
+
export function validateSpriteCompleteness(sprite, expectedIconNames) {
|
|
194
|
+
const symbolIds = new Set(sprite.symbols.map((s) => s.id));
|
|
195
|
+
const missing = [];
|
|
196
|
+
for (const name of expectedIconNames) {
|
|
197
|
+
const expectedId = toSymbolId(name);
|
|
198
|
+
if (!symbolIds.has(expectedId)) {
|
|
199
|
+
missing.push(name);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return missing;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Validates that JSON metadata has all expected icons
|
|
206
|
+
*
|
|
207
|
+
* @param metadata - Generated JSON metadata
|
|
208
|
+
* @param expectedIconNames - Expected icon names
|
|
209
|
+
* @returns Array of missing icon names
|
|
210
|
+
*/
|
|
211
|
+
export function validateJsonMetadataCompleteness(metadata, expectedIconNames) {
|
|
212
|
+
const metadataNames = new Set(metadata.icons.map((i) => i.name));
|
|
213
|
+
const missing = [];
|
|
214
|
+
for (const name of expectedIconNames) {
|
|
215
|
+
if (!metadataNames.has(name)) {
|
|
216
|
+
missing.push(name);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return missing;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=multi-format-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-format-output.js","sourceRoot":"","sources":["../../src/multi-format-output.ts"],"names":[],"mappings":"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"}
|