@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,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component Generator Module
|
|
3
|
+
*
|
|
4
|
+
* Handles React component generation from optimized SVG content.
|
|
5
|
+
* Requirements: 4.1, 4.2, 4.3, 4.5, 4.6
|
|
6
|
+
*/
|
|
7
|
+
import { extractSvgInnerContent, extractViewBox, extractSvgRootFill } from './svg-transformer';
|
|
8
|
+
/**
|
|
9
|
+
* Converts a string to PascalCase format
|
|
10
|
+
*
|
|
11
|
+
* Handles various input formats:
|
|
12
|
+
* - kebab-case: "arrow-right" -> "ArrowRight"
|
|
13
|
+
* - snake_case: "arrow_right" -> "ArrowRight"
|
|
14
|
+
* - space separated: "arrow right" -> "ArrowRight"
|
|
15
|
+
* - mixed: "arrow-right_up" -> "ArrowRightUp"
|
|
16
|
+
* - already PascalCase: "ArrowRight" -> "ArrowRight"
|
|
17
|
+
* - camelCase: "arrowRight" -> "ArrowRight"
|
|
18
|
+
*
|
|
19
|
+
* @param str - Input string in any format
|
|
20
|
+
* @returns PascalCase formatted string
|
|
21
|
+
*
|
|
22
|
+
* Requirements: 4.3
|
|
23
|
+
*/
|
|
24
|
+
export function toPascalCase(str) {
|
|
25
|
+
if (!str || str.trim().length === 0) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
// Split by common delimiters: hyphen, underscore, space, and camelCase boundaries
|
|
29
|
+
const words = str
|
|
30
|
+
// Insert space before uppercase letters (for camelCase)
|
|
31
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
32
|
+
// Replace delimiters with spaces
|
|
33
|
+
.replace(/[-_\s]+/g, ' ')
|
|
34
|
+
// Trim and split
|
|
35
|
+
.trim()
|
|
36
|
+
.split(/\s+/)
|
|
37
|
+
// Filter out empty strings
|
|
38
|
+
.filter((word) => word.length > 0);
|
|
39
|
+
// Capitalize first letter of each word, lowercase the rest
|
|
40
|
+
return words
|
|
41
|
+
.map((word) => {
|
|
42
|
+
if (word.length === 0)
|
|
43
|
+
return '';
|
|
44
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
45
|
+
})
|
|
46
|
+
.join('');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Generates a valid React component name from an icon name
|
|
50
|
+
*
|
|
51
|
+
* @param iconName - Original icon name
|
|
52
|
+
* @param prefix - Prefix to add (default: "Icon")
|
|
53
|
+
* @returns Valid React component name
|
|
54
|
+
*
|
|
55
|
+
* Requirements: 4.3
|
|
56
|
+
*/
|
|
57
|
+
export function generateComponentName(iconName, prefix = 'Icon') {
|
|
58
|
+
const pascalName = toPascalCase(iconName);
|
|
59
|
+
if (!pascalName) {
|
|
60
|
+
return prefix;
|
|
61
|
+
}
|
|
62
|
+
return `${prefix}${pascalName}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if SVG content contains multiple colors (multicolor icon)
|
|
66
|
+
* @param svgContent - SVG content to check
|
|
67
|
+
* @returns True if the SVG has multiple colors
|
|
68
|
+
*/
|
|
69
|
+
function isMulticolorSvg(svgContent) {
|
|
70
|
+
// Check for multiple fill colors (excluding none and currentColor)
|
|
71
|
+
const fillMatches = svgContent.match(/fill="(?!none|currentColor)[^"]+"/g) || [];
|
|
72
|
+
const uniqueFills = new Set(fillMatches);
|
|
73
|
+
// Check for multiple stroke colors
|
|
74
|
+
const strokeMatches = svgContent.match(/stroke="(?!none|currentColor)[^"]+"/g) || [];
|
|
75
|
+
const uniqueStrokes = new Set(strokeMatches);
|
|
76
|
+
// Check for gradients or patterns
|
|
77
|
+
const hasGradient = svgContent.includes('<linearGradient') ||
|
|
78
|
+
svgContent.includes('<radialGradient') ||
|
|
79
|
+
svgContent.includes('<pattern');
|
|
80
|
+
return uniqueFills.size > 1 || uniqueStrokes.size > 1 || hasGradient;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 保留颜色列表:这些颜色不会被替换为 currentColor
|
|
84
|
+
* 主要是浅色/白色,用作图标的装饰或镂空效果
|
|
85
|
+
*/
|
|
86
|
+
const PRESERVED_COLORS = [
|
|
87
|
+
'white',
|
|
88
|
+
'#fff',
|
|
89
|
+
'#ffffff',
|
|
90
|
+
'#FFF',
|
|
91
|
+
'#FFFFFF',
|
|
92
|
+
'rgb(255, 255, 255)',
|
|
93
|
+
'rgb(255,255,255)',
|
|
94
|
+
// 也可以保留一些特殊颜色,如需要
|
|
95
|
+
];
|
|
96
|
+
/**
|
|
97
|
+
* 判断颜色是否应该被保留(不替换为 currentColor)
|
|
98
|
+
* @param color - 颜色值
|
|
99
|
+
* @returns true 如果颜色应该被保留
|
|
100
|
+
*/
|
|
101
|
+
function shouldPreserveColor(color) {
|
|
102
|
+
const normalizedColor = color.toLowerCase().replace(/\s/g, '');
|
|
103
|
+
// 检查是否在保留列表中
|
|
104
|
+
for (const preserved of PRESERVED_COLORS) {
|
|
105
|
+
if (normalizedColor === preserved.toLowerCase().replace(/\s/g, '')) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// 检查是否是接近白色的颜色 (#fff, #ffffff 或 rgb 接近 255,255,255)
|
|
110
|
+
const hexMatch = color.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i);
|
|
111
|
+
if (hexMatch) {
|
|
112
|
+
const hex = hexMatch[1];
|
|
113
|
+
let r, g, b;
|
|
114
|
+
if (hex.length === 3) {
|
|
115
|
+
r = parseInt(hex[0] + hex[0], 16);
|
|
116
|
+
g = parseInt(hex[1] + hex[1], 16);
|
|
117
|
+
b = parseInt(hex[2] + hex[2], 16);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
r = parseInt(hex.substring(0, 2), 16);
|
|
121
|
+
g = parseInt(hex.substring(2, 4), 16);
|
|
122
|
+
b = parseInt(hex.substring(4, 6), 16);
|
|
123
|
+
}
|
|
124
|
+
// 如果颜色非常接近白色(所有通道 > 240),保留它
|
|
125
|
+
if (r > 240 && g > 240 && b > 240) {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* 替换 SVG 内容中的主体颜色为 currentColor,保留装饰颜色
|
|
133
|
+
* 适用于多色图标,使其可以通过 color prop 控制主体颜色
|
|
134
|
+
*
|
|
135
|
+
* @param content - SVG 内部内容
|
|
136
|
+
* @returns 处理后的内容
|
|
137
|
+
*/
|
|
138
|
+
function replaceMainColors(content) {
|
|
139
|
+
// 替换 fill 属性中的主体颜色
|
|
140
|
+
let result = content.replace(/fill="(#[0-9A-Fa-f]{3,6}|rgb\([^)]+\)|[a-z]+)"/gi, (match, color) => {
|
|
141
|
+
if (color === 'none' || color === 'currentColor') {
|
|
142
|
+
return match;
|
|
143
|
+
}
|
|
144
|
+
if (shouldPreserveColor(color)) {
|
|
145
|
+
return match;
|
|
146
|
+
}
|
|
147
|
+
return 'fill="currentColor"';
|
|
148
|
+
});
|
|
149
|
+
// 替换 stroke 属性中的主体颜色
|
|
150
|
+
result = result.replace(/stroke="(#[0-9A-Fa-f]{3,6}|rgb\([^)]+\)|[a-z]+)"/gi, (match, color) => {
|
|
151
|
+
if (color === 'none' || color === 'currentColor') {
|
|
152
|
+
return match;
|
|
153
|
+
}
|
|
154
|
+
if (shouldPreserveColor(color)) {
|
|
155
|
+
return match;
|
|
156
|
+
}
|
|
157
|
+
return 'stroke="currentColor"';
|
|
158
|
+
});
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Generates a React component template from icon metadata and JSX content
|
|
163
|
+
*
|
|
164
|
+
* @param icon - Icon metadata
|
|
165
|
+
* @param jsxContent - JSX-compatible SVG content
|
|
166
|
+
* @returns ComponentTemplate with component code and type definitions
|
|
167
|
+
*
|
|
168
|
+
* Requirements: 4.1, 4.2, 4.6
|
|
169
|
+
*/
|
|
170
|
+
export function generateComponent(icon, jsxContent, rawSvgContent) {
|
|
171
|
+
const componentName = generateComponentName(icon.name);
|
|
172
|
+
const propsName = `${componentName}Props`;
|
|
173
|
+
// Extract inner SVG content and viewBox
|
|
174
|
+
const innerContent = extractSvgInnerContent(jsxContent);
|
|
175
|
+
const viewBox = extractViewBox(jsxContent) || '0 0 24 24';
|
|
176
|
+
// Check if this is a multicolor icon
|
|
177
|
+
const isMulticolor = isMulticolorSvg(jsxContent);
|
|
178
|
+
// Check if content has gradient/defs that need unique IDs
|
|
179
|
+
const hasGradients = innerContent.includes('<defs>') &&
|
|
180
|
+
(innerContent.includes('linearGradient') || innerContent.includes('radialGradient'));
|
|
181
|
+
// For gradients, use raw SVG content (not JSX converted) for dangerouslySetInnerHTML
|
|
182
|
+
let rawInnerContent = rawSvgContent ? extractSvgInnerContent(rawSvgContent) : innerContent;
|
|
183
|
+
// Move <defs> to the beginning of SVG content (gradients must be defined before use)
|
|
184
|
+
if (hasGradients) {
|
|
185
|
+
const defsMatch = rawInnerContent.match(/<defs>[\s\S]*?<\/defs>/);
|
|
186
|
+
if (defsMatch) {
|
|
187
|
+
rawInnerContent = defsMatch[0] + rawInnerContent.replace(/<defs>[\s\S]*?<\/defs>/, '');
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Extract the root fill attribute from original SVG (important for icons with stroke paths)
|
|
191
|
+
const rootFill = rawSvgContent ? extractSvgRootFill(rawSvgContent) : null;
|
|
192
|
+
// Determine fill prop based on SVG type and original fill attribute
|
|
193
|
+
// - If original has fill="none", preserve it (stroke-based icons)
|
|
194
|
+
// - For gradient icons with explicit fill, preserve the fill
|
|
195
|
+
// - For multicolor icons, we'll replace main colors with currentColor
|
|
196
|
+
// - For single-color icons, apply fill={color}
|
|
197
|
+
let fillProp;
|
|
198
|
+
if (rootFill === 'none') {
|
|
199
|
+
// Stroke-based icons: preserve fill="none" to prevent default black fill
|
|
200
|
+
fillProp = '\n fill="none"';
|
|
201
|
+
}
|
|
202
|
+
else if (hasGradients && rootFill) {
|
|
203
|
+
fillProp = `\n fill="${rootFill}"`;
|
|
204
|
+
}
|
|
205
|
+
else if (isMulticolor) {
|
|
206
|
+
// 多色图标:不在 SVG 根元素设置 fill,使用 currentColor 继承
|
|
207
|
+
fillProp = '\n fill="none"';
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// fill 类型图标:使用 color 或默认 currentColor
|
|
211
|
+
fillProp = '\n fill={color || \"currentColor\"}';
|
|
212
|
+
}
|
|
213
|
+
// 更新注释:多色图标现在支持通过 color 修改主体颜色
|
|
214
|
+
const colorComment = isMulticolor
|
|
215
|
+
? '/** Icon color (controls the main color, preserves white/light decorations) */'
|
|
216
|
+
: '/** Icon color */';
|
|
217
|
+
let content;
|
|
218
|
+
if (hasGradients) {
|
|
219
|
+
// For icons with gradients, use useId to generate unique IDs
|
|
220
|
+
content = `import React, { forwardRef, useId } from 'react';
|
|
221
|
+
import type { SVGProps } from 'react';
|
|
222
|
+
|
|
223
|
+
export interface ${propsName} extends SVGProps<SVGSVGElement> {
|
|
224
|
+
/** Icon size (width and height) */
|
|
225
|
+
size?: number | string;
|
|
226
|
+
${colorComment}
|
|
227
|
+
color?: string;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* ${componentName} icon component${isMulticolor ? ' (multicolor)' : ''}
|
|
232
|
+
*
|
|
233
|
+
* @param props - Component props including size, color, and SVG attributes
|
|
234
|
+
* @param ref - Forwarded ref to the SVG element
|
|
235
|
+
*/
|
|
236
|
+
export const ${componentName} = forwardRef<SVGSVGElement, ${propsName}>(
|
|
237
|
+
({ size = 24, color, className, style, ...props }, ref) => {
|
|
238
|
+
const uniqueId = useId();
|
|
239
|
+
|
|
240
|
+
// Replace gradient IDs with unique ones
|
|
241
|
+
const svgContent = \`${rawInnerContent.replace(/id="([^"]+)"/g, 'id="${uniqueId}$1"').replace(/url\(#([^)]+)\)/g, 'url(#${uniqueId}$1)')}\`;
|
|
242
|
+
|
|
243
|
+
return (
|
|
244
|
+
<svg
|
|
245
|
+
ref={ref}
|
|
246
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
247
|
+
width={size}
|
|
248
|
+
height={size}
|
|
249
|
+
viewBox="${viewBox}"${fillProp}
|
|
250
|
+
className={className}
|
|
251
|
+
style={style}
|
|
252
|
+
{...props}
|
|
253
|
+
dangerouslySetInnerHTML={{ __html: svgContent }}
|
|
254
|
+
/>
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
${componentName}.displayName = '${componentName}';
|
|
260
|
+
|
|
261
|
+
export default ${componentName};
|
|
262
|
+
`;
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
// For icons without gradients, use the original approach
|
|
266
|
+
// For stroke-based icons (fill="none"), replace hardcoded colors with currentColor
|
|
267
|
+
// and apply color via style prop
|
|
268
|
+
const isStrokeIcon = rootFill === 'none';
|
|
269
|
+
let processedContent = innerContent;
|
|
270
|
+
if (isMulticolor) {
|
|
271
|
+
// 多色图标:替换主体颜色为 currentColor,保留装饰颜色(白色等)
|
|
272
|
+
processedContent = replaceMainColors(innerContent);
|
|
273
|
+
}
|
|
274
|
+
else if (isStrokeIcon) {
|
|
275
|
+
// Replace hardcoded stroke/fill colors with currentColor for single-color stroke icons
|
|
276
|
+
processedContent = innerContent
|
|
277
|
+
.replace(/stroke="#[0-9A-Fa-f]{3,6}"/g, 'stroke="currentColor"')
|
|
278
|
+
.replace(/fill="#[0-9A-Fa-f]{3,6}"/g, 'fill="currentColor"');
|
|
279
|
+
}
|
|
280
|
+
// 对于 stroke 图标和多色图标,使用条件性 style 来应用颜色
|
|
281
|
+
// 只有当用户传入 color prop 时才设置内联样式,否则让 Tailwind 类名生效
|
|
282
|
+
const needsColorStyle = isStrokeIcon || isMulticolor;
|
|
283
|
+
const styleProp = needsColorStyle
|
|
284
|
+
? '\n style={{ ...(color ? { color } : {}), ...style }}'
|
|
285
|
+
: '\n style={style}';
|
|
286
|
+
content = `import React, { forwardRef } from 'react';
|
|
287
|
+
import type { SVGProps } from 'react';
|
|
288
|
+
|
|
289
|
+
export interface ${propsName} extends SVGProps<SVGSVGElement> {
|
|
290
|
+
/** Icon size (width and height) */
|
|
291
|
+
size?: number | string;
|
|
292
|
+
${colorComment}
|
|
293
|
+
color?: string;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* ${componentName} icon component${isMulticolor ? ' (multicolor)' : ''}
|
|
298
|
+
*
|
|
299
|
+
* @param props - Component props including size, color, and SVG attributes
|
|
300
|
+
* @param ref - Forwarded ref to the SVG element
|
|
301
|
+
*/
|
|
302
|
+
export const ${componentName} = forwardRef<SVGSVGElement, ${propsName}>(
|
|
303
|
+
({ size = 24, color, className, style, ...props }, ref) => {
|
|
304
|
+
return (
|
|
305
|
+
<svg
|
|
306
|
+
ref={ref}
|
|
307
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
308
|
+
width={size}
|
|
309
|
+
height={size}
|
|
310
|
+
viewBox="${viewBox}"${fillProp}
|
|
311
|
+
className={className}${styleProp}
|
|
312
|
+
{...props}
|
|
313
|
+
>
|
|
314
|
+
${processedContent}
|
|
315
|
+
</svg>
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
|
|
320
|
+
${componentName}.displayName = '${componentName}';
|
|
321
|
+
|
|
322
|
+
export default ${componentName};
|
|
323
|
+
`;
|
|
324
|
+
}
|
|
325
|
+
const types = `export { ${componentName}, type ${propsName} } from './${componentName}';`;
|
|
326
|
+
return {
|
|
327
|
+
componentName,
|
|
328
|
+
fileName: `${componentName}.tsx`,
|
|
329
|
+
content,
|
|
330
|
+
types,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Generates multiple component templates from a list of icons
|
|
335
|
+
*
|
|
336
|
+
* @param icons - Array of icon metadata with JSX content
|
|
337
|
+
* @returns Array of ComponentTemplate objects
|
|
338
|
+
*
|
|
339
|
+
* Requirements: 4.1, 4.2, 4.6
|
|
340
|
+
*/
|
|
341
|
+
export function generateComponents(icons) {
|
|
342
|
+
return icons.map(({ metadata, jsxContent }) => generateComponent(metadata, jsxContent));
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Generates the index.ts file content that exports all icon components
|
|
346
|
+
*
|
|
347
|
+
* @param components - Array of ComponentTemplate objects
|
|
348
|
+
* @returns IndexFileResult with the generated content
|
|
349
|
+
*
|
|
350
|
+
* Requirements: 4.5
|
|
351
|
+
*/
|
|
352
|
+
export function generateIndexFile(components) {
|
|
353
|
+
// Sort components alphabetically for consistent output
|
|
354
|
+
const sortedComponents = [...components].sort((a, b) => a.componentName.localeCompare(b.componentName));
|
|
355
|
+
const componentNames = sortedComponents.map((c) => c.componentName);
|
|
356
|
+
// Generate imports for allIcons object
|
|
357
|
+
const imports = sortedComponents
|
|
358
|
+
.map((c) => `import { ${c.componentName} } from './icons/${c.componentName}';`)
|
|
359
|
+
.join('\n');
|
|
360
|
+
// Generate re-exports with types
|
|
361
|
+
const reExports = sortedComponents
|
|
362
|
+
.map((c) => `export { ${c.componentName}, type ${c.componentName}Props } from './icons/${c.componentName}';`)
|
|
363
|
+
.join('\n');
|
|
364
|
+
// Generate allIcons object
|
|
365
|
+
const allIconsExport = `
|
|
366
|
+
/**
|
|
367
|
+
* Object containing all icon components
|
|
368
|
+
*/
|
|
369
|
+
export const allIcons = {
|
|
370
|
+
${componentNames.join(',\n ')}
|
|
371
|
+
} as const;`;
|
|
372
|
+
// Generate IconName type
|
|
373
|
+
const iconNameType = `
|
|
374
|
+
/**
|
|
375
|
+
* Union type of all icon component names
|
|
376
|
+
*/
|
|
377
|
+
export type IconName = keyof typeof allIcons;`;
|
|
378
|
+
// Combine all parts
|
|
379
|
+
const content = `/**
|
|
380
|
+
* Icon Library - Auto-generated from Figma
|
|
381
|
+
*
|
|
382
|
+
* This file exports all icon components and related types.
|
|
383
|
+
* Do not edit this file manually - it is generated by the build process.
|
|
384
|
+
*/
|
|
385
|
+
|
|
386
|
+
${imports}
|
|
387
|
+
|
|
388
|
+
${reExports}
|
|
389
|
+
${allIconsExport}
|
|
390
|
+
${iconNameType}
|
|
391
|
+
`;
|
|
392
|
+
return {
|
|
393
|
+
content,
|
|
394
|
+
componentNames,
|
|
395
|
+
allIconsExport,
|
|
396
|
+
iconNameType,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Generates a minimal index file for a subset of icons
|
|
401
|
+
*
|
|
402
|
+
* @param componentNames - Array of component names to export
|
|
403
|
+
* @returns The generated index.ts content
|
|
404
|
+
*
|
|
405
|
+
* Requirements: 4.5
|
|
406
|
+
*/
|
|
407
|
+
export function generateMinimalIndexFile(componentNames) {
|
|
408
|
+
const sortedNames = [...componentNames].sort();
|
|
409
|
+
// Generate imports for allIcons object
|
|
410
|
+
const imports = sortedNames
|
|
411
|
+
.map((name) => `import { ${name} } from './icons/${name}';`)
|
|
412
|
+
.join('\n');
|
|
413
|
+
// Generate re-exports with types
|
|
414
|
+
const reExports = sortedNames
|
|
415
|
+
.map((name) => `export { ${name}, type ${name}Props } from './icons/${name}';`)
|
|
416
|
+
.join('\n');
|
|
417
|
+
const allIconsExport = `
|
|
418
|
+
export const allIcons = {
|
|
419
|
+
${sortedNames.join(',\n ')}
|
|
420
|
+
} as const;
|
|
421
|
+
|
|
422
|
+
export type IconName = keyof typeof allIcons;
|
|
423
|
+
`;
|
|
424
|
+
return `${imports}\n\n${reExports}\n${allIconsExport}`;
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=component-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-generator.js","sourceRoot":"","sources":["../../src/component-generator.ts"],"names":[],"mappings":"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"}
|