From 54ea83b262c2eee87f548b3995ae733047499ef8 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Oct 2026 23:59:06 +0800 Subject: [PATCH] feat(icons): split built-in sprite into per-icon SVG sources and add ticket icon Move the 114 built-in sprite icons out of assets/js/runtime/svg-icon.js into assets/icons/sprite/{key}.svg and generate svg-icon.js with tools/build-svg-sprite.mjs. Add ticket-color and use it for the user center ticket entry. Update sidebar contract tests for the creator card labels. Co-Authored-By: Claude Fable 5 --- assets/icons/sprite/123pan.svg | 1 + assets/icons/sprite/360yunpan.svg | 1 + assets/icons/sprite/add-color.svg | 1 + assets/icons/sprite/add-ring.svg | 1 + assets/icons/sprite/add.svg | 1 + assets/icons/sprite/alipan.svg | 1 + assets/icons/sprite/alipay.svg | 1 + assets/icons/sprite/apple.svg | 1 + assets/icons/sprite/approve.svg | 1 + assets/icons/sprite/baidu.svg | 1 + assets/icons/sprite/bilibili.svg | 1 + assets/icons/sprite/book-color.svg | 1 + assets/icons/sprite/cart-color.svg | 1 + assets/icons/sprite/check-circle.svg | 1 + assets/icons/sprite/circle.svg | 1 + assets/icons/sprite/close.svg | 1 + assets/icons/sprite/comment-color.svg | 1 + assets/icons/sprite/comment-fill.svg | 1 + assets/icons/sprite/comment.svg | 1 + assets/icons/sprite/copy-color.svg | 1 + assets/icons/sprite/ctfile.svg | 1 + assets/icons/sprite/d-email.svg | 1 + assets/icons/sprite/d-qq.svg | 1 + assets/icons/sprite/d-wechat.svg | 1 + assets/icons/sprite/d-weibo.svg | 1 + assets/icons/sprite/deduct-points.svg | 1 + assets/icons/sprite/dingtalk.svg | 1 + assets/icons/sprite/douyin.svg | 1 + assets/icons/sprite/extra-points.svg | 1 + assets/icons/sprite/facebook-color.svg | 1 + assets/icons/sprite/favorite.svg | 1 + assets/icons/sprite/gift-color.svg | 1 + assets/icons/sprite/gift.svg | 1 + assets/icons/sprite/gitee.svg | 1 + assets/icons/sprite/google-color.svg | 1 + assets/icons/sprite/handbag.svg | 1 + assets/icons/sprite/home-color.svg | 1 + assets/icons/sprite/hot-fill.svg | 1 + assets/icons/sprite/hot.svg | 1 + assets/icons/sprite/huawei.svg | 1 + assets/icons/sprite/img-lists.svg | 1 + assets/icons/sprite/lanzou.svg | 1 + assets/icons/sprite/left.svg | 1 + assets/icons/sprite/like.svg | 1 + assets/icons/sprite/line-color.svg | 1 + assets/icons/sprite/linkedin-color.svg | 1 + assets/icons/sprite/manual-service.svg | 1 + assets/icons/sprite/medal-color.svg | 1 + assets/icons/sprite/menu.svg | 1 + assets/icons/sprite/menu_2.svg | 1 + assets/icons/sprite/merchant-color.svg | 1 + assets/icons/sprite/minus.svg | 1 + assets/icons/sprite/money-color-2.svg | 1 + assets/icons/sprite/money-color.svg | 1 + assets/icons/sprite/money.svg | 1 + assets/icons/sprite/msg-color.svg | 1 + assets/icons/sprite/ontop-color.svg | 1 + assets/icons/sprite/order-color.svg | 1 + assets/icons/sprite/pan_baidu.svg | 1 + assets/icons/sprite/plate-fill.svg | 1 + assets/icons/sprite/points-color.svg | 1 + assets/icons/sprite/points.svg | 1 + assets/icons/sprite/post.svg | 1 + assets/icons/sprite/poster-color.svg | 1 + assets/icons/sprite/posts.svg | 1 + assets/icons/sprite/qq-color.svg | 1 + assets/icons/sprite/quark.svg | 1 + assets/icons/sprite/quick-reply.svg | 1 + assets/icons/sprite/qzone-color.svg | 1 + assets/icons/sprite/reddit-color.svg | 1 + assets/icons/sprite/reply.svg | 1 + assets/icons/sprite/return.svg | 1 + assets/icons/sprite/right.svg | 1 + assets/icons/sprite/search.svg | 1 + assets/icons/sprite/security-color.svg | 1 + assets/icons/sprite/set.svg | 1 + assets/icons/sprite/share.svg | 1 + assets/icons/sprite/shop-color.svg | 1 + assets/icons/sprite/shopping-cart.svg | 1 + assets/icons/sprite/signout.svg | 1 + assets/icons/sprite/signup.svg | 1 + assets/icons/sprite/stars.svg | 1 + assets/icons/sprite/tag-color.svg | 1 + assets/icons/sprite/tags.svg | 1 + assets/icons/sprite/telegram-color.svg | 1 + assets/icons/sprite/theme.svg | 1 + assets/icons/sprite/tianyi.svg | 1 + assets/icons/sprite/ticket-color.svg | 1 + assets/icons/sprite/time.svg | 1 + assets/icons/sprite/topic.svg | 1 + assets/icons/sprite/topping.svg | 1 + assets/icons/sprite/transit.svg | 1 + assets/icons/sprite/translate.svg | 1 + assets/icons/sprite/trend-color.svg | 1 + assets/icons/sprite/twitter-color.svg | 1 + assets/icons/sprite/ucpan.svg | 1 + assets/icons/sprite/user-auth.svg | 1 + assets/icons/sprite/user-color-2.svg | 1 + assets/icons/sprite/user-color.svg | 1 + assets/icons/sprite/user.svg | 1 + assets/icons/sprite/user_rp.svg | 1 + assets/icons/sprite/view.svg | 1 + assets/icons/sprite/vip_1.svg | 1 + assets/icons/sprite/vip_2.svg | 1 + assets/icons/sprite/vk-color.svg | 1 + assets/icons/sprite/wallet-color.svg | 1 + assets/icons/sprite/wallet.svg | 1 + assets/icons/sprite/weibo-color.svg | 1 + assets/icons/sprite/weiyun.svg | 1 + assets/icons/sprite/whatsapp-color.svg | 1 + assets/icons/sprite/xiaohongshu.svg | 1 + assets/icons/sprite/xiaomi.svg | 1 + assets/icons/sprite/xunlei.svg | 1 + assets/icons/sprite/yidongyun.svg | 1 + assets/icons/sprite/zhihu.svg | 1 + assets/js/runtime/svg-icon.js | 210 +++++++++--------- .../user-center-renderers/sidebar-nav.php | 2 +- .../ticket-schema-contract.test.cjs | 2 +- ...ser-center-sidebar-icons-contract.test.cjs | 8 +- tools/build-svg-sprite.mjs | 97 ++++++++ 120 files changed, 326 insertions(+), 108 deletions(-) create mode 100644 assets/icons/sprite/123pan.svg create mode 100644 assets/icons/sprite/360yunpan.svg create mode 100644 assets/icons/sprite/add-color.svg create mode 100644 assets/icons/sprite/add-ring.svg create mode 100644 assets/icons/sprite/add.svg create mode 100644 assets/icons/sprite/alipan.svg create mode 100644 assets/icons/sprite/alipay.svg create mode 100644 assets/icons/sprite/apple.svg create mode 100644 assets/icons/sprite/approve.svg create mode 100644 assets/icons/sprite/baidu.svg create mode 100644 assets/icons/sprite/bilibili.svg create mode 100644 assets/icons/sprite/book-color.svg create mode 100644 assets/icons/sprite/cart-color.svg create mode 100644 assets/icons/sprite/check-circle.svg create mode 100644 assets/icons/sprite/circle.svg create mode 100644 assets/icons/sprite/close.svg create mode 100644 assets/icons/sprite/comment-color.svg create mode 100644 assets/icons/sprite/comment-fill.svg create mode 100644 assets/icons/sprite/comment.svg create mode 100644 assets/icons/sprite/copy-color.svg create mode 100644 assets/icons/sprite/ctfile.svg create mode 100644 assets/icons/sprite/d-email.svg create mode 100644 assets/icons/sprite/d-qq.svg create mode 100644 assets/icons/sprite/d-wechat.svg create mode 100644 assets/icons/sprite/d-weibo.svg create mode 100644 assets/icons/sprite/deduct-points.svg create mode 100644 assets/icons/sprite/dingtalk.svg create mode 100644 assets/icons/sprite/douyin.svg create mode 100644 assets/icons/sprite/extra-points.svg create mode 100644 assets/icons/sprite/facebook-color.svg create mode 100644 assets/icons/sprite/favorite.svg create mode 100644 assets/icons/sprite/gift-color.svg create mode 100644 assets/icons/sprite/gift.svg create mode 100644 assets/icons/sprite/gitee.svg create mode 100644 assets/icons/sprite/google-color.svg create mode 100644 assets/icons/sprite/handbag.svg create mode 100644 assets/icons/sprite/home-color.svg create mode 100644 assets/icons/sprite/hot-fill.svg create mode 100644 assets/icons/sprite/hot.svg create mode 100644 assets/icons/sprite/huawei.svg create mode 100644 assets/icons/sprite/img-lists.svg create mode 100644 assets/icons/sprite/lanzou.svg create mode 100644 assets/icons/sprite/left.svg create mode 100644 assets/icons/sprite/like.svg create mode 100644 assets/icons/sprite/line-color.svg create mode 100644 assets/icons/sprite/linkedin-color.svg create mode 100644 assets/icons/sprite/manual-service.svg create mode 100644 assets/icons/sprite/medal-color.svg create mode 100644 assets/icons/sprite/menu.svg create mode 100644 assets/icons/sprite/menu_2.svg create mode 100644 assets/icons/sprite/merchant-color.svg create mode 100644 assets/icons/sprite/minus.svg create mode 100644 assets/icons/sprite/money-color-2.svg create mode 100644 assets/icons/sprite/money-color.svg create mode 100644 assets/icons/sprite/money.svg create mode 100644 assets/icons/sprite/msg-color.svg create mode 100644 assets/icons/sprite/ontop-color.svg create mode 100644 assets/icons/sprite/order-color.svg create mode 100644 assets/icons/sprite/pan_baidu.svg create mode 100644 assets/icons/sprite/plate-fill.svg create mode 100644 assets/icons/sprite/points-color.svg create mode 100644 assets/icons/sprite/points.svg create mode 100644 assets/icons/sprite/post.svg create mode 100644 assets/icons/sprite/poster-color.svg create mode 100644 assets/icons/sprite/posts.svg create mode 100644 assets/icons/sprite/qq-color.svg create mode 100644 assets/icons/sprite/quark.svg create mode 100644 assets/icons/sprite/quick-reply.svg create mode 100644 assets/icons/sprite/qzone-color.svg create mode 100644 assets/icons/sprite/reddit-color.svg create mode 100644 assets/icons/sprite/reply.svg create mode 100644 assets/icons/sprite/return.svg create mode 100644 assets/icons/sprite/right.svg create mode 100644 assets/icons/sprite/search.svg create mode 100644 assets/icons/sprite/security-color.svg create mode 100644 assets/icons/sprite/set.svg create mode 100644 assets/icons/sprite/share.svg create mode 100644 assets/icons/sprite/shop-color.svg create mode 100644 assets/icons/sprite/shopping-cart.svg create mode 100644 assets/icons/sprite/signout.svg create mode 100644 assets/icons/sprite/signup.svg create mode 100644 assets/icons/sprite/stars.svg create mode 100644 assets/icons/sprite/tag-color.svg create mode 100644 assets/icons/sprite/tags.svg create mode 100644 assets/icons/sprite/telegram-color.svg create mode 100644 assets/icons/sprite/theme.svg create mode 100644 assets/icons/sprite/tianyi.svg create mode 100644 assets/icons/sprite/ticket-color.svg create mode 100644 assets/icons/sprite/time.svg create mode 100644 assets/icons/sprite/topic.svg create mode 100644 assets/icons/sprite/topping.svg create mode 100644 assets/icons/sprite/transit.svg create mode 100644 assets/icons/sprite/translate.svg create mode 100644 assets/icons/sprite/trend-color.svg create mode 100644 assets/icons/sprite/twitter-color.svg create mode 100644 assets/icons/sprite/ucpan.svg create mode 100644 assets/icons/sprite/user-auth.svg create mode 100644 assets/icons/sprite/user-color-2.svg create mode 100644 assets/icons/sprite/user-color.svg create mode 100644 assets/icons/sprite/user.svg create mode 100644 assets/icons/sprite/user_rp.svg create mode 100644 assets/icons/sprite/view.svg create mode 100644 assets/icons/sprite/vip_1.svg create mode 100644 assets/icons/sprite/vip_2.svg create mode 100644 assets/icons/sprite/vk-color.svg create mode 100644 assets/icons/sprite/wallet-color.svg create mode 100644 assets/icons/sprite/wallet.svg create mode 100644 assets/icons/sprite/weibo-color.svg create mode 100644 assets/icons/sprite/weiyun.svg create mode 100644 assets/icons/sprite/whatsapp-color.svg create mode 100644 assets/icons/sprite/xiaohongshu.svg create mode 100644 assets/icons/sprite/xiaomi.svg create mode 100644 assets/icons/sprite/xunlei.svg create mode 100644 assets/icons/sprite/yidongyun.svg create mode 100644 assets/icons/sprite/zhihu.svg create mode 100644 tools/build-svg-sprite.mjs diff --git a/assets/icons/sprite/123pan.svg b/assets/icons/sprite/123pan.svg new file mode 100644 index 00000000..8f8e47f5 --- /dev/null +++ b/assets/icons/sprite/123pan.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/360yunpan.svg b/assets/icons/sprite/360yunpan.svg new file mode 100644 index 00000000..a3aa963a --- /dev/null +++ b/assets/icons/sprite/360yunpan.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/add-color.svg b/assets/icons/sprite/add-color.svg new file mode 100644 index 00000000..52ff2a07 --- /dev/null +++ b/assets/icons/sprite/add-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/add-ring.svg b/assets/icons/sprite/add-ring.svg new file mode 100644 index 00000000..003eadb7 --- /dev/null +++ b/assets/icons/sprite/add-ring.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/add.svg b/assets/icons/sprite/add.svg new file mode 100644 index 00000000..552d11a8 --- /dev/null +++ b/assets/icons/sprite/add.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/alipan.svg b/assets/icons/sprite/alipan.svg new file mode 100644 index 00000000..0e0a466d --- /dev/null +++ b/assets/icons/sprite/alipan.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/alipay.svg b/assets/icons/sprite/alipay.svg new file mode 100644 index 00000000..b5193a7b --- /dev/null +++ b/assets/icons/sprite/alipay.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/apple.svg b/assets/icons/sprite/apple.svg new file mode 100644 index 00000000..43bb152f --- /dev/null +++ b/assets/icons/sprite/apple.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/approve.svg b/assets/icons/sprite/approve.svg new file mode 100644 index 00000000..17b169b8 --- /dev/null +++ b/assets/icons/sprite/approve.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/baidu.svg b/assets/icons/sprite/baidu.svg new file mode 100644 index 00000000..0c0b3f63 --- /dev/null +++ b/assets/icons/sprite/baidu.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/bilibili.svg b/assets/icons/sprite/bilibili.svg new file mode 100644 index 00000000..4a1c3cea --- /dev/null +++ b/assets/icons/sprite/bilibili.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/book-color.svg b/assets/icons/sprite/book-color.svg new file mode 100644 index 00000000..e19e2fb5 --- /dev/null +++ b/assets/icons/sprite/book-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/cart-color.svg b/assets/icons/sprite/cart-color.svg new file mode 100644 index 00000000..942ed5d5 --- /dev/null +++ b/assets/icons/sprite/cart-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/check-circle.svg b/assets/icons/sprite/check-circle.svg new file mode 100644 index 00000000..7ae585b6 --- /dev/null +++ b/assets/icons/sprite/check-circle.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/circle.svg b/assets/icons/sprite/circle.svg new file mode 100644 index 00000000..b9df65b8 --- /dev/null +++ b/assets/icons/sprite/circle.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/close.svg b/assets/icons/sprite/close.svg new file mode 100644 index 00000000..6a19aa5b --- /dev/null +++ b/assets/icons/sprite/close.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/comment-color.svg b/assets/icons/sprite/comment-color.svg new file mode 100644 index 00000000..5bfeb66b --- /dev/null +++ b/assets/icons/sprite/comment-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/comment-fill.svg b/assets/icons/sprite/comment-fill.svg new file mode 100644 index 00000000..240fc8f6 --- /dev/null +++ b/assets/icons/sprite/comment-fill.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/comment.svg b/assets/icons/sprite/comment.svg new file mode 100644 index 00000000..775bf38d --- /dev/null +++ b/assets/icons/sprite/comment.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/copy-color.svg b/assets/icons/sprite/copy-color.svg new file mode 100644 index 00000000..18dfe712 --- /dev/null +++ b/assets/icons/sprite/copy-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/ctfile.svg b/assets/icons/sprite/ctfile.svg new file mode 100644 index 00000000..04965bff --- /dev/null +++ b/assets/icons/sprite/ctfile.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/d-email.svg b/assets/icons/sprite/d-email.svg new file mode 100644 index 00000000..a43ce207 --- /dev/null +++ b/assets/icons/sprite/d-email.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/d-qq.svg b/assets/icons/sprite/d-qq.svg new file mode 100644 index 00000000..e71a2a4c --- /dev/null +++ b/assets/icons/sprite/d-qq.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/d-wechat.svg b/assets/icons/sprite/d-wechat.svg new file mode 100644 index 00000000..b021710e --- /dev/null +++ b/assets/icons/sprite/d-wechat.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/d-weibo.svg b/assets/icons/sprite/d-weibo.svg new file mode 100644 index 00000000..67f3ec6d --- /dev/null +++ b/assets/icons/sprite/d-weibo.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/deduct-points.svg b/assets/icons/sprite/deduct-points.svg new file mode 100644 index 00000000..d5a9e1c1 --- /dev/null +++ b/assets/icons/sprite/deduct-points.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/dingtalk.svg b/assets/icons/sprite/dingtalk.svg new file mode 100644 index 00000000..5097befe --- /dev/null +++ b/assets/icons/sprite/dingtalk.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/douyin.svg b/assets/icons/sprite/douyin.svg new file mode 100644 index 00000000..13403577 --- /dev/null +++ b/assets/icons/sprite/douyin.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/extra-points.svg b/assets/icons/sprite/extra-points.svg new file mode 100644 index 00000000..7e99f67e --- /dev/null +++ b/assets/icons/sprite/extra-points.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/facebook-color.svg b/assets/icons/sprite/facebook-color.svg new file mode 100644 index 00000000..7bb5248f --- /dev/null +++ b/assets/icons/sprite/facebook-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/favorite.svg b/assets/icons/sprite/favorite.svg new file mode 100644 index 00000000..46ea3174 --- /dev/null +++ b/assets/icons/sprite/favorite.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/gift-color.svg b/assets/icons/sprite/gift-color.svg new file mode 100644 index 00000000..ac030ea0 --- /dev/null +++ b/assets/icons/sprite/gift-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/gift.svg b/assets/icons/sprite/gift.svg new file mode 100644 index 00000000..572a952e --- /dev/null +++ b/assets/icons/sprite/gift.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/gitee.svg b/assets/icons/sprite/gitee.svg new file mode 100644 index 00000000..49b03660 --- /dev/null +++ b/assets/icons/sprite/gitee.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/google-color.svg b/assets/icons/sprite/google-color.svg new file mode 100644 index 00000000..3713d295 --- /dev/null +++ b/assets/icons/sprite/google-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/handbag.svg b/assets/icons/sprite/handbag.svg new file mode 100644 index 00000000..f495f9d7 --- /dev/null +++ b/assets/icons/sprite/handbag.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/home-color.svg b/assets/icons/sprite/home-color.svg new file mode 100644 index 00000000..da43af98 --- /dev/null +++ b/assets/icons/sprite/home-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/hot-fill.svg b/assets/icons/sprite/hot-fill.svg new file mode 100644 index 00000000..055b6557 --- /dev/null +++ b/assets/icons/sprite/hot-fill.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/hot.svg b/assets/icons/sprite/hot.svg new file mode 100644 index 00000000..76bd7729 --- /dev/null +++ b/assets/icons/sprite/hot.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/huawei.svg b/assets/icons/sprite/huawei.svg new file mode 100644 index 00000000..b1ba661a --- /dev/null +++ b/assets/icons/sprite/huawei.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/img-lists.svg b/assets/icons/sprite/img-lists.svg new file mode 100644 index 00000000..b4d79fba --- /dev/null +++ b/assets/icons/sprite/img-lists.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/lanzou.svg b/assets/icons/sprite/lanzou.svg new file mode 100644 index 00000000..8e975486 --- /dev/null +++ b/assets/icons/sprite/lanzou.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/left.svg b/assets/icons/sprite/left.svg new file mode 100644 index 00000000..e256bd62 --- /dev/null +++ b/assets/icons/sprite/left.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/like.svg b/assets/icons/sprite/like.svg new file mode 100644 index 00000000..a8d327f9 --- /dev/null +++ b/assets/icons/sprite/like.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/line-color.svg b/assets/icons/sprite/line-color.svg new file mode 100644 index 00000000..7ef63dd2 --- /dev/null +++ b/assets/icons/sprite/line-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/linkedin-color.svg b/assets/icons/sprite/linkedin-color.svg new file mode 100644 index 00000000..5a727543 --- /dev/null +++ b/assets/icons/sprite/linkedin-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/manual-service.svg b/assets/icons/sprite/manual-service.svg new file mode 100644 index 00000000..f77bc5b3 --- /dev/null +++ b/assets/icons/sprite/manual-service.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/medal-color.svg b/assets/icons/sprite/medal-color.svg new file mode 100644 index 00000000..57eef466 --- /dev/null +++ b/assets/icons/sprite/medal-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/menu.svg b/assets/icons/sprite/menu.svg new file mode 100644 index 00000000..1ba8954d --- /dev/null +++ b/assets/icons/sprite/menu.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/menu_2.svg b/assets/icons/sprite/menu_2.svg new file mode 100644 index 00000000..d4baf00a --- /dev/null +++ b/assets/icons/sprite/menu_2.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/merchant-color.svg b/assets/icons/sprite/merchant-color.svg new file mode 100644 index 00000000..8a15bbe4 --- /dev/null +++ b/assets/icons/sprite/merchant-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/minus.svg b/assets/icons/sprite/minus.svg new file mode 100644 index 00000000..eb8cf2ac --- /dev/null +++ b/assets/icons/sprite/minus.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/money-color-2.svg b/assets/icons/sprite/money-color-2.svg new file mode 100644 index 00000000..4da0057f --- /dev/null +++ b/assets/icons/sprite/money-color-2.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/money-color.svg b/assets/icons/sprite/money-color.svg new file mode 100644 index 00000000..bf645087 --- /dev/null +++ b/assets/icons/sprite/money-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/money.svg b/assets/icons/sprite/money.svg new file mode 100644 index 00000000..07d62eb9 --- /dev/null +++ b/assets/icons/sprite/money.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/msg-color.svg b/assets/icons/sprite/msg-color.svg new file mode 100644 index 00000000..bfa6d49a --- /dev/null +++ b/assets/icons/sprite/msg-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/ontop-color.svg b/assets/icons/sprite/ontop-color.svg new file mode 100644 index 00000000..0c85031b --- /dev/null +++ b/assets/icons/sprite/ontop-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/order-color.svg b/assets/icons/sprite/order-color.svg new file mode 100644 index 00000000..96634558 --- /dev/null +++ b/assets/icons/sprite/order-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/pan_baidu.svg b/assets/icons/sprite/pan_baidu.svg new file mode 100644 index 00000000..a9282a3a --- /dev/null +++ b/assets/icons/sprite/pan_baidu.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/plate-fill.svg b/assets/icons/sprite/plate-fill.svg new file mode 100644 index 00000000..f6a93bfb --- /dev/null +++ b/assets/icons/sprite/plate-fill.svg @@ -0,0 +1 @@ +< diff --git a/assets/icons/sprite/points-color.svg b/assets/icons/sprite/points-color.svg new file mode 100644 index 00000000..78d57f12 --- /dev/null +++ b/assets/icons/sprite/points-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/points.svg b/assets/icons/sprite/points.svg new file mode 100644 index 00000000..e784be01 --- /dev/null +++ b/assets/icons/sprite/points.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/post.svg b/assets/icons/sprite/post.svg new file mode 100644 index 00000000..ba002d76 --- /dev/null +++ b/assets/icons/sprite/post.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/poster-color.svg b/assets/icons/sprite/poster-color.svg new file mode 100644 index 00000000..777e880b --- /dev/null +++ b/assets/icons/sprite/poster-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/posts.svg b/assets/icons/sprite/posts.svg new file mode 100644 index 00000000..af148fcc --- /dev/null +++ b/assets/icons/sprite/posts.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/qq-color.svg b/assets/icons/sprite/qq-color.svg new file mode 100644 index 00000000..b2e693f7 --- /dev/null +++ b/assets/icons/sprite/qq-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/quark.svg b/assets/icons/sprite/quark.svg new file mode 100644 index 00000000..6a0c4f70 --- /dev/null +++ b/assets/icons/sprite/quark.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/quick-reply.svg b/assets/icons/sprite/quick-reply.svg new file mode 100644 index 00000000..970b8b4e --- /dev/null +++ b/assets/icons/sprite/quick-reply.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/qzone-color.svg b/assets/icons/sprite/qzone-color.svg new file mode 100644 index 00000000..926532e0 --- /dev/null +++ b/assets/icons/sprite/qzone-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/reddit-color.svg b/assets/icons/sprite/reddit-color.svg new file mode 100644 index 00000000..0500d6c5 --- /dev/null +++ b/assets/icons/sprite/reddit-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/reply.svg b/assets/icons/sprite/reply.svg new file mode 100644 index 00000000..e9ea4ceb --- /dev/null +++ b/assets/icons/sprite/reply.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/return.svg b/assets/icons/sprite/return.svg new file mode 100644 index 00000000..e6536092 --- /dev/null +++ b/assets/icons/sprite/return.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/right.svg b/assets/icons/sprite/right.svg new file mode 100644 index 00000000..564a7dbc --- /dev/null +++ b/assets/icons/sprite/right.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/search.svg b/assets/icons/sprite/search.svg new file mode 100644 index 00000000..c972e434 --- /dev/null +++ b/assets/icons/sprite/search.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/security-color.svg b/assets/icons/sprite/security-color.svg new file mode 100644 index 00000000..1f6718c5 --- /dev/null +++ b/assets/icons/sprite/security-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/set.svg b/assets/icons/sprite/set.svg new file mode 100644 index 00000000..91a3d0ca --- /dev/null +++ b/assets/icons/sprite/set.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/share.svg b/assets/icons/sprite/share.svg new file mode 100644 index 00000000..2bd71200 --- /dev/null +++ b/assets/icons/sprite/share.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/shop-color.svg b/assets/icons/sprite/shop-color.svg new file mode 100644 index 00000000..c62e13b7 --- /dev/null +++ b/assets/icons/sprite/shop-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/shopping-cart.svg b/assets/icons/sprite/shopping-cart.svg new file mode 100644 index 00000000..cdbe2cb0 --- /dev/null +++ b/assets/icons/sprite/shopping-cart.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/signout.svg b/assets/icons/sprite/signout.svg new file mode 100644 index 00000000..27e6af55 --- /dev/null +++ b/assets/icons/sprite/signout.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/signup.svg b/assets/icons/sprite/signup.svg new file mode 100644 index 00000000..6a50734e --- /dev/null +++ b/assets/icons/sprite/signup.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/stars.svg b/assets/icons/sprite/stars.svg new file mode 100644 index 00000000..dee1092a --- /dev/null +++ b/assets/icons/sprite/stars.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/tag-color.svg b/assets/icons/sprite/tag-color.svg new file mode 100644 index 00000000..5d8b7ff3 --- /dev/null +++ b/assets/icons/sprite/tag-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/tags.svg b/assets/icons/sprite/tags.svg new file mode 100644 index 00000000..6c947ee4 --- /dev/null +++ b/assets/icons/sprite/tags.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/telegram-color.svg b/assets/icons/sprite/telegram-color.svg new file mode 100644 index 00000000..22b05d4b --- /dev/null +++ b/assets/icons/sprite/telegram-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/theme.svg b/assets/icons/sprite/theme.svg new file mode 100644 index 00000000..85c377a0 --- /dev/null +++ b/assets/icons/sprite/theme.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/tianyi.svg b/assets/icons/sprite/tianyi.svg new file mode 100644 index 00000000..fa7c0839 --- /dev/null +++ b/assets/icons/sprite/tianyi.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/ticket-color.svg b/assets/icons/sprite/ticket-color.svg new file mode 100644 index 00000000..a6149ba4 --- /dev/null +++ b/assets/icons/sprite/ticket-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/time.svg b/assets/icons/sprite/time.svg new file mode 100644 index 00000000..264f9344 --- /dev/null +++ b/assets/icons/sprite/time.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/topic.svg b/assets/icons/sprite/topic.svg new file mode 100644 index 00000000..bd88595f --- /dev/null +++ b/assets/icons/sprite/topic.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/topping.svg b/assets/icons/sprite/topping.svg new file mode 100644 index 00000000..a747d538 --- /dev/null +++ b/assets/icons/sprite/topping.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/transit.svg b/assets/icons/sprite/transit.svg new file mode 100644 index 00000000..f9b55007 --- /dev/null +++ b/assets/icons/sprite/transit.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/translate.svg b/assets/icons/sprite/translate.svg new file mode 100644 index 00000000..bde556be --- /dev/null +++ b/assets/icons/sprite/translate.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/trend-color.svg b/assets/icons/sprite/trend-color.svg new file mode 100644 index 00000000..144959e5 --- /dev/null +++ b/assets/icons/sprite/trend-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/twitter-color.svg b/assets/icons/sprite/twitter-color.svg new file mode 100644 index 00000000..1beed8a3 --- /dev/null +++ b/assets/icons/sprite/twitter-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/ucpan.svg b/assets/icons/sprite/ucpan.svg new file mode 100644 index 00000000..4e24dbf1 --- /dev/null +++ b/assets/icons/sprite/ucpan.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/user-auth.svg b/assets/icons/sprite/user-auth.svg new file mode 100644 index 00000000..7ef3182c --- /dev/null +++ b/assets/icons/sprite/user-auth.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/user-color-2.svg b/assets/icons/sprite/user-color-2.svg new file mode 100644 index 00000000..9bdd10bb --- /dev/null +++ b/assets/icons/sprite/user-color-2.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/user-color.svg b/assets/icons/sprite/user-color.svg new file mode 100644 index 00000000..0fed4a5b --- /dev/null +++ b/assets/icons/sprite/user-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/user.svg b/assets/icons/sprite/user.svg new file mode 100644 index 00000000..20c17048 --- /dev/null +++ b/assets/icons/sprite/user.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/user_rp.svg b/assets/icons/sprite/user_rp.svg new file mode 100644 index 00000000..be56639c --- /dev/null +++ b/assets/icons/sprite/user_rp.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/view.svg b/assets/icons/sprite/view.svg new file mode 100644 index 00000000..c8a78b5f --- /dev/null +++ b/assets/icons/sprite/view.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/vip_1.svg b/assets/icons/sprite/vip_1.svg new file mode 100644 index 00000000..14da28b7 --- /dev/null +++ b/assets/icons/sprite/vip_1.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/vip_2.svg b/assets/icons/sprite/vip_2.svg new file mode 100644 index 00000000..061e00db --- /dev/null +++ b/assets/icons/sprite/vip_2.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/vk-color.svg b/assets/icons/sprite/vk-color.svg new file mode 100644 index 00000000..7ecb2819 --- /dev/null +++ b/assets/icons/sprite/vk-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/wallet-color.svg b/assets/icons/sprite/wallet-color.svg new file mode 100644 index 00000000..a9498afb --- /dev/null +++ b/assets/icons/sprite/wallet-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/wallet.svg b/assets/icons/sprite/wallet.svg new file mode 100644 index 00000000..5c4f3aae --- /dev/null +++ b/assets/icons/sprite/wallet.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/weibo-color.svg b/assets/icons/sprite/weibo-color.svg new file mode 100644 index 00000000..1aa72f4a --- /dev/null +++ b/assets/icons/sprite/weibo-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/weiyun.svg b/assets/icons/sprite/weiyun.svg new file mode 100644 index 00000000..aa492af1 --- /dev/null +++ b/assets/icons/sprite/weiyun.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/whatsapp-color.svg b/assets/icons/sprite/whatsapp-color.svg new file mode 100644 index 00000000..11becb44 --- /dev/null +++ b/assets/icons/sprite/whatsapp-color.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/xiaohongshu.svg b/assets/icons/sprite/xiaohongshu.svg new file mode 100644 index 00000000..c4c66bb5 --- /dev/null +++ b/assets/icons/sprite/xiaohongshu.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/xiaomi.svg b/assets/icons/sprite/xiaomi.svg new file mode 100644 index 00000000..3f48e970 --- /dev/null +++ b/assets/icons/sprite/xiaomi.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/xunlei.svg b/assets/icons/sprite/xunlei.svg new file mode 100644 index 00000000..0a26fb17 --- /dev/null +++ b/assets/icons/sprite/xunlei.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/yidongyun.svg b/assets/icons/sprite/yidongyun.svg new file mode 100644 index 00000000..0b185d45 --- /dev/null +++ b/assets/icons/sprite/yidongyun.svg @@ -0,0 +1 @@ + diff --git a/assets/icons/sprite/zhihu.svg b/assets/icons/sprite/zhihu.svg new file mode 100644 index 00000000..3aed1b33 --- /dev/null +++ b/assets/icons/sprite/zhihu.svg @@ -0,0 +1 @@ + diff --git a/assets/js/runtime/svg-icon.js b/assets/js/runtime/svg-icon.js index cdec16a9..169580b3 100644 --- a/assets/js/runtime/svg-icon.js +++ b/assets/js/runtime/svg-icon.js @@ -1,119 +1,121 @@ +/* Generated by tools/build-svg-sprite.mjs from assets/icons/sprite/*.svg — do not edit by hand. */ 'use strict'; var aksrt_svgs = []; -aksrt_svgs['like'] = ''; -aksrt_svgs['view'] = ''; -aksrt_svgs['comment'] = ''; -aksrt_svgs['time'] = ''; -aksrt_svgs['search'] = ''; -aksrt_svgs['tags'] = ''; -aksrt_svgs['right'] = ''; -aksrt_svgs['left'] = ''; -aksrt_svgs['reply'] = ''; -aksrt_svgs['circle'] = ''; -aksrt_svgs['add'] = ''; -aksrt_svgs['minus'] = ''; +aksrt_svgs['123pan'] = ''; +aksrt_svgs['360yunpan'] = ''; +aksrt_svgs['add-color'] = ''; aksrt_svgs['add-ring'] = ''; -aksrt_svgs['post'] = ''; -aksrt_svgs['favorite'] = ''; -aksrt_svgs['menu'] = ''; -aksrt_svgs['d-qq'] = ''; -aksrt_svgs['d-weibo'] = ''; -aksrt_svgs['d-wechat'] = ''; -aksrt_svgs['d-email'] = ''; -aksrt_svgs['user'] = ''; -aksrt_svgs['theme'] = ''; -aksrt_svgs['signout'] = ''; -aksrt_svgs['set'] = ''; -aksrt_svgs['signup'] = ''; -aksrt_svgs['user_rp'] = ''; -aksrt_svgs['close'] = ''; -aksrt_svgs['pan_baidu'] = ''; -aksrt_svgs['weiyun'] = ''; -aksrt_svgs['lanzou'] = ''; -aksrt_svgs['tianyi'] = ''; -aksrt_svgs['ctfile'] = ''; -aksrt_svgs['vip_2'] = ''; -aksrt_svgs['vip_1'] = ''; -aksrt_svgs['menu_2'] = ''; +aksrt_svgs['add'] = ''; +aksrt_svgs['alipan'] = ''; aksrt_svgs['alipay'] = ''; +aksrt_svgs['apple'] = ''; +aksrt_svgs['approve'] = ''; aksrt_svgs['baidu'] = ''; -aksrt_svgs['gitee'] = ''; +aksrt_svgs['bilibili'] = ''; +aksrt_svgs['book-color'] = ''; +aksrt_svgs['cart-color'] = ''; +aksrt_svgs['check-circle'] = ''; +aksrt_svgs['circle'] = ''; +aksrt_svgs['close'] = ''; +aksrt_svgs['comment-color'] = ''; aksrt_svgs['comment-fill'] = ''; +aksrt_svgs['comment'] = ''; +aksrt_svgs['copy-color'] = ''; +aksrt_svgs['ctfile'] = ''; +aksrt_svgs['d-email'] = ''; +aksrt_svgs['d-qq'] = ''; +aksrt_svgs['d-wechat'] = ''; +aksrt_svgs['d-weibo'] = ''; +aksrt_svgs['deduct-points'] = ''; +aksrt_svgs['dingtalk'] = ''; +aksrt_svgs['douyin'] = ''; +aksrt_svgs['extra-points'] = ''; +aksrt_svgs['facebook-color'] = ''; +aksrt_svgs['favorite'] = ''; +aksrt_svgs['gift-color'] = ''; +aksrt_svgs['gift'] = ''; +aksrt_svgs['gitee'] = ''; +aksrt_svgs['google-color'] = ''; +aksrt_svgs['handbag'] = ''; +aksrt_svgs['home-color'] = ''; aksrt_svgs['hot-fill'] = ''; aksrt_svgs['hot'] = ''; -aksrt_svgs['topping'] = ''; -aksrt_svgs['topic'] = ''; -aksrt_svgs['plate-fill'] = '<'; -aksrt_svgs['extra-points'] = ''; -aksrt_svgs['deduct-points'] = ''; -aksrt_svgs['share'] = ''; -aksrt_svgs['approve'] = ''; -aksrt_svgs['qzone-color'] = ''; -aksrt_svgs['qq-color'] = ''; -aksrt_svgs['weibo-color'] = ''; -aksrt_svgs['poster-color'] = ''; -aksrt_svgs['copy-color'] = ''; -aksrt_svgs['facebook-color'] = ''; -aksrt_svgs['twitter-color'] = ''; -aksrt_svgs['telegram-color'] = ''; -aksrt_svgs['whatsapp-color'] = ''; -aksrt_svgs['linkedin-color'] = ''; -aksrt_svgs['reddit-color'] = ''; -aksrt_svgs['line-color'] = ''; -aksrt_svgs['vk-color'] = ''; -aksrt_svgs['user-auth'] = ''; -aksrt_svgs['money'] = ''; -aksrt_svgs['money-color'] = ''; -aksrt_svgs['order-color'] = ''; -aksrt_svgs['user-color'] = ''; -aksrt_svgs['user-color-2'] = ''; -aksrt_svgs['gift-color'] = ''; -aksrt_svgs['security-color'] = ''; -aksrt_svgs['trend-color'] = ''; -aksrt_svgs['msg-color'] = ''; -aksrt_svgs['shop-color'] = ''; -aksrt_svgs['home-color'] = ''; -aksrt_svgs['add-color'] = ''; -aksrt_svgs['tag-color'] = ' '; -aksrt_svgs['ontop-color'] = ''; -aksrt_svgs['comment-color'] = ''; -aksrt_svgs['wallet-color'] = ''; -aksrt_svgs['book-color'] = ''; -aksrt_svgs['posts'] = ''; -aksrt_svgs['points'] = ''; -aksrt_svgs['points-color'] = ''; -aksrt_svgs['money-color-2'] = ''; -aksrt_svgs['merchant-color'] = ''; -aksrt_svgs['medal-color'] = ''; -aksrt_svgs['dingtalk'] = ''; aksrt_svgs['huawei'] = ''; +aksrt_svgs['img-lists'] = ''; +aksrt_svgs['lanzou'] = ''; +aksrt_svgs['left'] = ''; +aksrt_svgs['like'] = ''; +aksrt_svgs['line-color'] = ''; +aksrt_svgs['linkedin-color'] = ''; +aksrt_svgs['manual-service'] = ''; +aksrt_svgs['medal-color'] = ''; +aksrt_svgs['menu'] = ''; +aksrt_svgs['menu_2'] = ''; +aksrt_svgs['merchant-color'] = ''; +aksrt_svgs['minus'] = ''; +aksrt_svgs['money-color-2'] = ''; +aksrt_svgs['money-color'] = ''; +aksrt_svgs['money'] = ''; +aksrt_svgs['msg-color'] = ''; +aksrt_svgs['ontop-color'] = ''; +aksrt_svgs['order-color'] = ''; +aksrt_svgs['pan_baidu'] = ''; +aksrt_svgs['plate-fill'] = '<'; +aksrt_svgs['points-color'] = ''; +aksrt_svgs['points'] = ''; +aksrt_svgs['post'] = ''; +aksrt_svgs['poster-color'] = ''; +aksrt_svgs['posts'] = ''; +aksrt_svgs['qq-color'] = ''; +aksrt_svgs['quark'] = ''; +aksrt_svgs['quick-reply'] = ''; +aksrt_svgs['qzone-color'] = ''; +aksrt_svgs['reddit-color'] = ''; +aksrt_svgs['reply'] = ''; +aksrt_svgs['return'] = ''; +aksrt_svgs['right'] = ''; +aksrt_svgs['search'] = ''; +aksrt_svgs['security-color'] = ''; +aksrt_svgs['set'] = ''; +aksrt_svgs['share'] = ''; +aksrt_svgs['shop-color'] = ''; +aksrt_svgs['shopping-cart'] = ''; +aksrt_svgs['signout'] = ''; +aksrt_svgs['signup'] = ''; +aksrt_svgs['stars'] = ''; +aksrt_svgs['tag-color'] = ''; +aksrt_svgs['tags'] = ''; +aksrt_svgs['telegram-color'] = ''; +aksrt_svgs['theme'] = ''; +aksrt_svgs['tianyi'] = ''; +aksrt_svgs['ticket-color'] = ''; +aksrt_svgs['time'] = ''; +aksrt_svgs['topic'] = ''; +aksrt_svgs['topping'] = ''; +aksrt_svgs['transit'] = ''; +aksrt_svgs['translate'] = ''; +aksrt_svgs['trend-color'] = ''; +aksrt_svgs['twitter-color'] = ''; +aksrt_svgs['ucpan'] = ''; +aksrt_svgs['user-auth'] = ''; +aksrt_svgs['user-color-2'] = ''; +aksrt_svgs['user-color'] = ''; +aksrt_svgs['user'] = ''; +aksrt_svgs['user_rp'] = ''; +aksrt_svgs['view'] = ''; +aksrt_svgs['vip_1'] = ''; +aksrt_svgs['vip_2'] = ''; +aksrt_svgs['vk-color'] = ''; +aksrt_svgs['wallet-color'] = ''; +aksrt_svgs['wallet'] = ''; +aksrt_svgs['weibo-color'] = ''; +aksrt_svgs['weiyun'] = ''; +aksrt_svgs['whatsapp-color'] = ''; +aksrt_svgs['xiaohongshu'] = ''; aksrt_svgs['xiaomi'] = ''; aksrt_svgs['xunlei'] = ''; -aksrt_svgs['123pan'] = ''; -aksrt_svgs['alipan'] = ''; -aksrt_svgs['quark'] = ''; -aksrt_svgs['360yunpan'] = ''; -aksrt_svgs['quick-reply'] = ''; -aksrt_svgs['xiaohongshu'] = ''; -aksrt_svgs['zhihu'] = ''; -aksrt_svgs['douyin'] = ''; -aksrt_svgs['bilibili'] = ''; -aksrt_svgs['manual-service'] = ''; -aksrt_svgs['cart-color'] = ''; -aksrt_svgs['stars'] = ''; -aksrt_svgs['check-circle'] = ''; -aksrt_svgs['shopping-cart'] = ''; -aksrt_svgs['img-lists'] = ''; -aksrt_svgs['wallet'] = ''; -aksrt_svgs['gift'] = ''; -aksrt_svgs['transit'] = ''; -aksrt_svgs['return'] = ''; -aksrt_svgs['handbag'] = ''; -aksrt_svgs['ucpan'] = ''; aksrt_svgs['yidongyun'] = ''; -aksrt_svgs['translate'] = ''; -aksrt_svgs['google-color'] = ''; -aksrt_svgs['apple'] = ''; +aksrt_svgs['zhihu'] = ''; function show_svg() { jQuery('[data-svg]').each(function () { diff --git a/inc/helpers/user-center-renderers/sidebar-nav.php b/inc/helpers/user-center-renderers/sidebar-nav.php index 74e1a9ea..7e6f25af 100644 --- a/inc/helpers/user-center-renderers/sidebar-nav.php +++ b/inc/helpers/user-center-renderers/sidebar-nav.php @@ -41,7 +41,7 @@ $services = array_values(array_filter([ ], [ 'label' => __('工单中心', 'aksrt'), - 'icon' => 'manual-service', + 'icon' => 'ticket-color', 'url' => $tickets_url, 'tab' => 'tickets', ], diff --git a/tests/widget-system/ticket-schema-contract.test.cjs b/tests/widget-system/ticket-schema-contract.test.cjs index bb3c90fc..e6efff01 100644 --- a/tests/widget-system/ticket-schema-contract.test.cjs +++ b/tests/widget-system/ticket-schema-contract.test.cjs @@ -155,7 +155,7 @@ test('ticket panel is registered across the user-center wiring', () => { const sidebar = read('inc/helpers/user-center-renderers/sidebar-nav.php'); assert.ok(sidebar.includes("'label' => __('工单中心', 'aksrt')"), 'sidebar label missing'); - assert.ok(sidebar.includes("'icon' => 'manual-service'"), 'sidebar icon should reuse the existing headset sprite'); + assert.ok(sidebar.includes("'icon' => 'ticket-color'"), 'sidebar icon should use the built-in ticket sprite'); assert.ok(sidebar.includes("'tab' => 'tickets'"), 'sidebar tab key missing'); const helper = read('inc/helpers/aksrt-user-center.php'); diff --git a/tests/widget-system/user-center-sidebar-icons-contract.test.cjs b/tests/widget-system/user-center-sidebar-icons-contract.test.cjs index 4a43c566..d73ac221 100644 --- a/tests/widget-system/user-center-sidebar-icons-contract.test.cjs +++ b/tests/widget-system/user-center-sidebar-icons-contract.test.cjs @@ -78,9 +78,13 @@ test('其余侧栏部件按参考主题选型替换为 sprite 图标', () => { assert.match(creator, /class="mb10-sm zib-widget padding-10 flex1 pointer"/); assert.match(creator, /flex ab jsb col-ml6/); assert.match(creator, / { const sprite = read('assets/js/runtime/svg-icon.js'); const keys = [ 'trend-color', 'user-auth', 'order-color', 'msg-color', 'user-color', 'security-color', - 'money-color-2', 'points-color', 'merchant-color', 'money-color', 'vip_1', 'time', 'menu', 'right', + 'money-color-2', 'points-color', 'merchant-color', 'money-color', 'vip_1', 'time', 'menu', 'right', 'ticket-color', ]; for (const key of keys) { assert.match(sprite, new RegExp(`aksrt_svgs\\['${key}'\\]\\s*=`), `sprite key missing: ${key}`); diff --git a/tools/build-svg-sprite.mjs b/tools/build-svg-sprite.mjs new file mode 100644 index 00000000..f5ae077b --- /dev/null +++ b/tools/build-svg-sprite.mjs @@ -0,0 +1,97 @@ +#!/usr/bin/env node +/** + * Build the frontend SVG sprite from the single source of truth. + * + * Source: assets/icons/sprite/{key}.svg — one 1024x1024 icon per file. + * The file name (without .svg) is the sprite key used by + * aksrt_icon_markup('zibsvg-{key}') and . + * Output: assets/js/runtime/svg-icon.js — aksrt_svgs['key'] = '' map + * plus the runtime that injects definitions into the page. + * + * Usage: node tools/build-svg-sprite.mjs + * + * Rules for new icons: + * - viewBox must be "0 0 1024 1024" (the runtime hardcodes it on ). + * - File name: lowercase letters, digits, "-" or "_". + * - Only the inner markup of is kept; editor metadata (p-id, t, class, + * width/height, XML prolog, DOCTYPE) is stripped. + */ +import { readdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const root = join(dirname(fileURLToPath(import.meta.url)), '..'); +const srcDir = join(root, 'assets/icons/sprite'); +const outFile = join(root, 'assets/js/runtime/svg-icon.js'); + +const files = readdirSync(srcDir).filter((f) => f.endsWith('.svg')).sort(); +const errors = []; +const entries = []; + +for (const file of files) { + const key = file.slice(0, -4); + if (!/^[a-z0-9_-]+$/.test(key)) { + errors.push(`${file}: invalid key (use a-z, 0-9, "-" or "_")`); + continue; + } + const raw = readFileSync(join(srcDir, file), 'utf8'); + const open = raw.match(/]*>/i); + const close = raw.lastIndexOf(''); + if (!open || close < 0) { + errors.push(`${file}: missing root`); + continue; + } + const viewBox = (open[0].match(/viewBox="([^"]*)"/i) || [])[1]; + if (viewBox !== '0 0 1024 1024') { + errors.push(`${file}: viewBox must be "0 0 1024 1024" (got ${viewBox ?? 'none'})`); + continue; + } + const inner = raw + .slice(open.index + open[0].length, close) + .replace(/\s+p-id="[^"]*"/g, '') + .replace(/\r?\n\s*/g, '') + .trim(); + if (inner === '') { + errors.push(`${file}: empty icon`); + continue; + } + if (/[\\']/.test(inner)) { + errors.push(`${file}: contains a backslash or single quote`); + continue; + } + entries.push(`aksrt_svgs['${key}'] = '${inner}';`); +} + +if (errors.length) { + console.error(errors.join('\n')); + process.exit(1); +} + +const runtime = ` +function show_svg() { + jQuery('[data-svg]').each(function () { + var _t = jQuery(this), + viewbox = _t.attr('data-viewbox'), + svgclass = _t.attr('data-class'), + svgname = _t.attr('data-svg'), + svg_html = '' + aksrt_svgs[svgname] + ''; + _t.html(svg_html); + }); +} + +!(function () { + var svg = ''; + for (let key in aksrt_svgs) { + svg += aksrt_svgs[key] ? '' + aksrt_svgs[key] + '' : ''; + } + + var i = ''; + if (!jQuery('svg#svg-icons').length) { + jQuery('body').prepend(i); + } +})(window); +`; + +const header = `/* Generated by tools/build-svg-sprite.mjs from assets/icons/sprite/*.svg — do not edit by hand. */\n'use strict';\nvar aksrt_svgs = [];\n`; +writeFileSync(outFile, header + entries.join('\n') + '\n' + runtime); +console.log(`Built ${entries.length} sprite icons -> assets/js/runtime/svg-icon.js`);