@allbluecn/web-app 0.11.4 → 0.12.1

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.
@@ -0,0 +1,463 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later
2
+ // AllBlue - 理想之海
3
+ // Copyright (C) 2026 AllBlue Contributors
4
+ //
5
+ // This program is free software: you can redistribute it and/or modify
6
+ // it under the terms of the GNU Affero General Public License as published by
7
+ // the Free Software Foundation, either version 3 of the License, or
8
+ // (at your option) any later version.
9
+ //
10
+ // This program is distributed in the hope that it will be useful,
11
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ // GNU Affero General Public License for more details.
14
+ //
15
+ // You should have received a copy of the GNU Affero General Public License
16
+ // along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+
18
+ // Lucide Lab(实验性)图标名单:@lucide/lab 全量减去 *-off 关闭变体。
19
+ // category 取自 lucide monorepo tag @lucide/lab@0.2.0 的 lab/<name>.json 官方 categories,
20
+ // 取优先级分类(FOOD/GAMING/HOME/ANIMALS/NATURE/PEOPLE/SEASONS)中的首个;无命中为 "other"。
21
+ // 图标节点用 createLucideIcon 包装成标准 LucideIcon 组件,与精选集渲染路径一致。
22
+ // zh 关键词人工校对,机械禁则由 lucide-lab-icons.test.ts 校验。
23
+
24
+ import { createLucideIcon } from "lucide-react";
25
+ import {
26
+ ampersandSquare, appleCore, arrowsUpDownSquare, astronautHelmet, atSignCircle, atSignSquare, avocado, babyPacifier,
27
+ bacon, bagHand, barbecue, barberPole, barn, baseball, baselineSquare, basketball, batBall, bathBubble, beachBall,
28
+ bearFace, bedBunk, bee, beeHive, beetleScarab, bellConciergeDot, belt, boldSquare, bottleBaby, bottleChampagne,
29
+ bottleDispenser, bottlePerfume, bottlePlastic, bottleSpray, bottleToothbrushComb, bowlChopsticks, bowlOverflow,
30
+ bowling, braSports, briefcasePlus, broom, bucket, bullHead, burger, butterfly, cabin, cabinetFiling, cactus,
31
+ candleHolder, candleHolderLit, candleTealight, candleTealightLit, candlestick, candlestickBig, candlestickBigLit,
32
+ candlestickLit, cardCredit, cardSd, carton, caseCamel, caseKebab, caseSnake, caseSnakeUpper, catBig, cauldron, cent,
33
+ centCircle, centSquare, chairsTableParasol, chairsTablePlatter, chameleon, cheese, chest, chevronsUpDownSquare, cloth,
34
+ coatHanger, cocktail, coconut, coffeeBean, coffeemaker, coinsExchange, coinsStack, copyCode, copyDown, copyFilePath,
35
+ copyImage, copyText, copyType, cowHead, cowUdderDroplets, crab, cricketBall, cricketWicket, crossSquare, crosshair2,
36
+ crosshair2Dot, crosshairPlus, crosshairPlusDot, crosshairSquare, cupSaucer, cupToGo, currencySquare, deskLamp, diaper,
37
+ dishwasher, dollarSignSquare, doorbellIntercom, dress, eggCup, elephant, elephantFace, escalatorArrowDownLeft,
38
+ escalatorArrowUpRight, euroCircle, euroSquare, faceAlien, fanHandheld, farm, faucet, featherPlus, featherSquare,
39
+ featherText, flippers, floorPlan, floppyDisk2, floppyDiskRear, floppyDisks2, floppyDisksRear, flowerLotus, flowerPot,
40
+ flowerRose, flowerRoseSingle, flowerTulip, football, footballGoal, footballHelmet, foxFaceTail, frogFace, fruit,
41
+ garlic, gearbox, gearboxSquare, gemRing, glassesSquare, glassesSun, goalNet, goblet, gobletCrack, golfDriver,
42
+ gridLines, gridLinesOffset, hairdryer, hatBaseball, hatBeanie, hatBowler, hatTop, headingCircle, headingSquare,
43
+ hedgehog, helmetDiving, hexagons3, hexagons7, highHeel, hockey, hockeyMask, horseHead, hotDog, houseManor, houseRoof,
44
+ houses, iceHockey, iceSkate, igloo, indianRupeeCircle, indianRupeeSquare, intercom, iron, ironingBoard, italicSquare,
45
+ jacket, jacketSports, japaneseYenCircle, japaneseYenSquare, jar, jug, kebab, kettle, kettleElectric, kiwi,
46
+ layoutGridMoveHorizontal, layoutGridMoveVertical, layoutGridPlus, layoutListMove, lemon, lifeJacket, ligatureSquare,
47
+ lightSwitch, lingerie, locateSquare, luggageCabin, lunchBox, mailboxFlag, maskSnorkel, mealBox, mortarPestle,
48
+ motorRacingHelmet, mugTeabag, mustache, olive, onion, owl, pacMan, pacManGhost, pancakes, peace, peach, pear, penguin,
49
+ pepperChilli, pie, pig, pigHead, pillow, pilot, pinSafety, pinSafetyOpen, pineappleRing, planet, policeCap, pond,
50
+ poundSterlingCircle, poundSterlingSquare, pram, pretzel, pumpkin, razor, razorBlade, reelThread, refrigeratorFreezer,
51
+ removeFormattingSquare, rugby, russianRubleCircle, russianRubleSquare, sausage, scarf, scissorsHairComb, shark,
52
+ shaveFace, shirtFoldedButtons, shirtLongSleeve, shirtTRuler, shirtTVNeck, shorts, shortsBoxer, shovelDig, shower,
53
+ skirt, skis, slotCard, slotCardCredit, slotDisc, sneaker, snowboard, snowman, soapBar, soccerBall, soccerPitch,
54
+ socketEu, socketUk, socketUsa, socks, spider, spiderWeb, stairs, stairsArch, stairsArrowDownLeft, stairsArrowUpRight,
55
+ starNorth, steeringWheel, strawberry, strikethroughSquare, stroller, sunloungerParasolSun,
56
+ sunloungerParasolSunPalmTree, sunloungerParasolTable, surfboard, sushi, sushi2, sushi3, sushiChopsticks, sweater,
57
+ swissFrancCircle, swissFrancSquare, tab, tabArrowDown, tabArrowUpRight, tabDot, tabPlus, tabSlash, tabText, tabX,
58
+ targetArrow, tennisBall, tennisRacket, textSquare, tie, tieBow, tieBowRibbon, tire, toast, toaster, toiletRoll,
59
+ toolbox2, topCrop, towelFolded, treePalmIslandSun, treesForest, triangleStripes, trousers, tuxedo, typeSquare, ufo,
60
+ underlineSquare, unicornHead, venn, vest, waffle, wardrobe, watchActivity, watchAlarm, watchBars, watchCharging,
61
+ watchCheck, watchLoader, watchMusic, watchSquare, watchSquareAlarm, watchText, watermelon, waveCircle, wavesBirds,
62
+ wavesSharkFin, whale, whaleNarwhal, wheel, whisk, whiskForkKnife, whisks, windmill, wineGlassBottle, yarnBall, yinYang,
63
+ } from "@lucide/lab";
64
+
65
+ import type { CuratedIcon } from "./icon-data";
66
+
67
+ /** Lab 图标分类:优先级分类(靠前显示)+ other(其余) */
68
+ export type LabCategory =
69
+ | "food-beverage"
70
+ | "gaming"
71
+ | "home"
72
+ | "animals"
73
+ | "nature"
74
+ | "people"
75
+ | "seasons"
76
+ | "other";
77
+
78
+ export interface LabIcon extends CuratedIcon {
79
+ /** lucide.dev 官方分类(优先级分类取首个命中) */
80
+ category: LabCategory;
81
+ }
82
+
83
+ /** 优先级分类展示顺序(用户指定:食物 / 游戏 / 家居 / 动物 / 自然 / 人物 / 季节) */
84
+ export const LAB_PRIORITY_CATEGORIES: LabCategory[] = [
85
+ "food-beverage",
86
+ "gaming",
87
+ "home",
88
+ "animals",
89
+ "nature",
90
+ "people",
91
+ "seasons",
92
+ ];
93
+
94
+ export const LAB_ICONS: LabIcon[] = [
95
+ { name: "apple-core", Icon: createLucideIcon("apple-core", appleCore), category: "food-beverage", zh: ["苹果核", "果核"] },
96
+ { name: "avocado", Icon: createLucideIcon("avocado", avocado), category: "food-beverage", zh: ["鳄梨", "牛油果"] },
97
+ { name: "bacon", Icon: createLucideIcon("bacon", bacon), category: "food-beverage", zh: ["培根", "火腿片"] },
98
+ { name: "barbecue", Icon: createLucideIcon("barbecue", barbecue), category: "food-beverage", zh: ["烧烤", "烤肉"] },
99
+ { name: "bee-hive", Icon: createLucideIcon("bee-hive", beeHive), category: "food-beverage", zh: ["蜂窝", "蜂巢"] },
100
+ { name: "belt", Icon: createLucideIcon("belt", belt), category: "food-beverage", zh: ["腰带", "皮带"] },
101
+ { name: "bottle-champagne", Icon: createLucideIcon("bottle-champagne", bottleChampagne), category: "food-beverage", zh: ["香槟瓶", "酒瓶"] },
102
+ { name: "bottle-plastic", Icon: createLucideIcon("bottle-plastic", bottlePlastic), category: "food-beverage", zh: ["塑料瓶", "矿泉水瓶"] },
103
+ { name: "bowl-chopsticks", Icon: createLucideIcon("bowl-chopsticks", bowlChopsticks), category: "food-beverage", zh: ["碗筷", "筷子"] },
104
+ { name: "bowl-overflow", Icon: createLucideIcon("bowl-overflow", bowlOverflow), category: "food-beverage", zh: ["满碗", "盛满"] },
105
+ { name: "bull-head", Icon: createLucideIcon("bull-head", bullHead), category: "food-beverage", zh: ["牛头"] },
106
+ { name: "burger", Icon: createLucideIcon("burger", burger), category: "food-beverage", zh: ["汉堡", "汉堡包"] },
107
+ { name: "carton", Icon: createLucideIcon("carton", carton), category: "food-beverage", zh: ["纸盒", "牛奶盒"] },
108
+ { name: "cauldron", Icon: createLucideIcon("cauldron", cauldron), category: "food-beverage", zh: ["大锅", "坩埚"] },
109
+ { name: "chairs-table-platter", Icon: createLucideIcon("chairs-table-platter", chairsTablePlatter), category: "food-beverage", zh: ["桌椅餐盘", "餐桌"] },
110
+ { name: "cheese", Icon: createLucideIcon("cheese", cheese), category: "food-beverage", zh: ["奶酪", "芝士"] },
111
+ { name: "cocktail", Icon: createLucideIcon("cocktail", cocktail), category: "food-beverage", zh: ["鸡尾酒"] },
112
+ { name: "coconut", Icon: createLucideIcon("coconut", coconut), category: "food-beverage", zh: ["椰子"] },
113
+ { name: "coffee-bean", Icon: createLucideIcon("coffee-bean", coffeeBean), category: "food-beverage", zh: ["咖啡豆"] },
114
+ { name: "coffeemaker", Icon: createLucideIcon("coffeemaker", coffeemaker), category: "food-beverage", zh: ["咖啡机"] },
115
+ { name: "cow-head", Icon: createLucideIcon("cow-head", cowHead), category: "food-beverage", zh: ["牛头", "奶牛"] },
116
+ { name: "cow-udder-droplets", Icon: createLucideIcon("cow-udder-droplets", cowUdderDroplets), category: "food-beverage", zh: ["挤奶", "奶牛"] },
117
+ { name: "cup-saucer", Icon: createLucideIcon("cup-saucer", cupSaucer), category: "food-beverage", zh: ["茶杯托盘"] },
118
+ { name: "cup-to-go", Icon: createLucideIcon("cup-to-go", cupToGo), category: "food-beverage", zh: ["外带杯", "纸杯"] },
119
+ { name: "egg-cup", Icon: createLucideIcon("egg-cup", eggCup), category: "food-beverage", zh: ["蛋杯"] },
120
+ { name: "farm", Icon: createLucideIcon("farm", farm), category: "food-beverage", zh: ["农场"] },
121
+ { name: "faucet", Icon: createLucideIcon("faucet", faucet), category: "food-beverage", zh: ["水龙头", "水阀"] },
122
+ { name: "fruit", Icon: createLucideIcon("fruit", fruit), category: "food-beverage", zh: ["水果"] },
123
+ { name: "garlic", Icon: createLucideIcon("garlic", garlic), category: "food-beverage", zh: ["大蒜"] },
124
+ { name: "goblet", Icon: createLucideIcon("goblet", goblet), category: "food-beverage", zh: ["高脚杯", "酒杯"] },
125
+ { name: "goblet-crack", Icon: createLucideIcon("goblet-crack", gobletCrack), category: "food-beverage", zh: ["裂杯"] },
126
+ { name: "hexagons-3", Icon: createLucideIcon("hexagons-3", hexagons3), category: "food-beverage", zh: ["蜂巢", "六边形"] },
127
+ { name: "hexagons-7", Icon: createLucideIcon("hexagons-7", hexagons7), category: "food-beverage", zh: ["蜂巢", "六边形"] },
128
+ { name: "hot-dog", Icon: createLucideIcon("hot-dog", hotDog), category: "food-beverage", zh: ["热狗"] },
129
+ { name: "jar", Icon: createLucideIcon("jar", jar), category: "food-beverage", zh: ["罐子", "玻璃罐"] },
130
+ { name: "jug", Icon: createLucideIcon("jug", jug), category: "food-beverage", zh: ["水壶", "水罐"] },
131
+ { name: "kebab", Icon: createLucideIcon("kebab", kebab), category: "food-beverage", zh: ["烤串", "羊肉串"] },
132
+ { name: "kettle", Icon: createLucideIcon("kettle", kettle), category: "food-beverage", zh: ["水壶", "茶壶"] },
133
+ { name: "kettle-electric", Icon: createLucideIcon("kettle-electric", kettleElectric), category: "food-beverage", zh: ["电水壶"] },
134
+ { name: "kiwi", Icon: createLucideIcon("kiwi", kiwi), category: "food-beverage", zh: ["猕猴桃", "奇异果"] },
135
+ { name: "lemon", Icon: createLucideIcon("lemon", lemon), category: "food-beverage", zh: ["柠檬"] },
136
+ { name: "lunch-box", Icon: createLucideIcon("lunch-box", lunchBox), category: "food-beverage", zh: ["饭盒"] },
137
+ { name: "meal-box", Icon: createLucideIcon("meal-box", mealBox), category: "food-beverage", zh: ["餐盒"] },
138
+ { name: "mortar-pestle", Icon: createLucideIcon("mortar-pestle", mortarPestle), category: "food-beverage", zh: ["研钵", "捣药罐"] },
139
+ { name: "mug-teabag", Icon: createLucideIcon("mug-teabag", mugTeabag), category: "food-beverage", zh: ["茶包杯", "茶杯"] },
140
+ { name: "olive", Icon: createLucideIcon("olive", olive), category: "food-beverage", zh: ["橄榄"] },
141
+ { name: "onion", Icon: createLucideIcon("onion", onion), category: "food-beverage", zh: ["洋葱"] },
142
+ { name: "pancakes", Icon: createLucideIcon("pancakes", pancakes), category: "food-beverage", zh: ["煎饼", "松饼"] },
143
+ { name: "peach", Icon: createLucideIcon("peach", peach), category: "food-beverage", zh: ["桃子"] },
144
+ { name: "pear", Icon: createLucideIcon("pear", pear), category: "food-beverage", zh: ["梨"] },
145
+ { name: "pepper-chilli", Icon: createLucideIcon("pepper-chilli", pepperChilli), category: "food-beverage", zh: ["辣椒"] },
146
+ { name: "pie", Icon: createLucideIcon("pie", pie), category: "food-beverage", zh: ["派", "馅饼"] },
147
+ { name: "pig", Icon: createLucideIcon("pig", pig), category: "food-beverage", zh: ["猪"] },
148
+ { name: "pig-head", Icon: createLucideIcon("pig-head", pigHead), category: "food-beverage", zh: ["猪头"] },
149
+ { name: "pineapple-ring", Icon: createLucideIcon("pineapple-ring", pineappleRing), category: "food-beverage", zh: ["菠萝圈", "凤梨"] },
150
+ { name: "pretzel", Icon: createLucideIcon("pretzel", pretzel), category: "food-beverage", zh: ["椒盐卷饼", "扭结饼"] },
151
+ { name: "pumpkin", Icon: createLucideIcon("pumpkin", pumpkin), category: "food-beverage", zh: ["南瓜"] },
152
+ { name: "refrigerator-freezer", Icon: createLucideIcon("refrigerator-freezer", refrigeratorFreezer), category: "food-beverage", zh: ["冰箱", "冰柜"] },
153
+ { name: "sausage", Icon: createLucideIcon("sausage", sausage), category: "food-beverage", zh: ["香肠"] },
154
+ { name: "strawberry", Icon: createLucideIcon("strawberry", strawberry), category: "food-beverage", zh: ["草莓"] },
155
+ { name: "sushi", Icon: createLucideIcon("sushi", sushi), category: "food-beverage", zh: ["寿司"] },
156
+ { name: "sushi-2", Icon: createLucideIcon("sushi-2", sushi2), category: "food-beverage", zh: ["寿司"] },
157
+ { name: "sushi-3", Icon: createLucideIcon("sushi-3", sushi3), category: "food-beverage", zh: ["寿司"] },
158
+ { name: "sushi-chopsticks", Icon: createLucideIcon("sushi-chopsticks", sushiChopsticks), category: "food-beverage", zh: ["寿司筷子"] },
159
+ { name: "toast", Icon: createLucideIcon("toast", toast), category: "food-beverage", zh: ["吐司", "面包片"] },
160
+ { name: "toaster", Icon: createLucideIcon("toaster", toaster), category: "food-beverage", zh: ["烤面包机"] },
161
+ { name: "waffle", Icon: createLucideIcon("waffle", waffle), category: "food-beverage", zh: ["华夫饼"] },
162
+ { name: "watermelon", Icon: createLucideIcon("watermelon", watermelon), category: "food-beverage", zh: ["西瓜"] },
163
+ { name: "whisk", Icon: createLucideIcon("whisk", whisk), category: "food-beverage", zh: ["打蛋器"] },
164
+ { name: "whisk-fork-knife", Icon: createLucideIcon("whisk-fork-knife", whiskForkKnife), category: "food-beverage", zh: ["餐具组合"] },
165
+ { name: "whisks", Icon: createLucideIcon("whisks", whisks), category: "food-beverage", zh: ["打蛋器"] },
166
+ { name: "wine-glass-bottle", Icon: createLucideIcon("wine-glass-bottle", wineGlassBottle), category: "food-beverage", zh: ["酒瓶酒杯"] },
167
+ { name: "astronaut-helmet", Icon: createLucideIcon("astronaut-helmet", astronautHelmet), category: "gaming", zh: ["宇航头盔"] },
168
+ { name: "baseball", Icon: createLucideIcon("baseball", baseball), category: "gaming", zh: ["棒球"] },
169
+ { name: "basketball", Icon: createLucideIcon("basketball", basketball), category: "gaming", zh: ["篮球"] },
170
+ { name: "bat-ball", Icon: createLucideIcon("bat-ball", batBall), category: "gaming", zh: ["球棒", "棒球棒"] },
171
+ { name: "beach-ball", Icon: createLucideIcon("beach-ball", beachBall), category: "gaming", zh: ["沙滩球"] },
172
+ { name: "bowling", Icon: createLucideIcon("bowling", bowling), category: "gaming", zh: ["保龄球"] },
173
+ { name: "briefcase-plus", Icon: createLucideIcon("briefcase-plus", briefcasePlus), category: "gaming", zh: ["急救箱", "医疗包"] },
174
+ { name: "chest", Icon: createLucideIcon("chest", chest), category: "gaming", zh: ["宝箱"] },
175
+ { name: "coins-stack", Icon: createLucideIcon("coins-stack", coinsStack), category: "gaming", zh: ["金币堆", "钱堆"] },
176
+ { name: "cricket-ball", Icon: createLucideIcon("cricket-ball", cricketBall), category: "gaming", zh: ["板球"] },
177
+ { name: "cricket-wicket", Icon: createLucideIcon("cricket-wicket", cricketWicket), category: "gaming", zh: ["板球门柱"] },
178
+ { name: "cross-square", Icon: createLucideIcon("cross-square", crossSquare), category: "gaming", zh: ["急救十字"] },
179
+ { name: "crosshair-2", Icon: createLucideIcon("crosshair-2", crosshair2), category: "gaming", zh: ["准星", "瞄准镜"] },
180
+ { name: "crosshair-2-dot", Icon: createLucideIcon("crosshair-2-dot", crosshair2Dot), category: "gaming", zh: ["准星"] },
181
+ { name: "crosshair-plus", Icon: createLucideIcon("crosshair-plus", crosshairPlus), category: "gaming", zh: ["准星"] },
182
+ { name: "crosshair-plus-dot", Icon: createLucideIcon("crosshair-plus-dot", crosshairPlusDot), category: "gaming", zh: ["准星"] },
183
+ { name: "crosshair-square", Icon: createLucideIcon("crosshair-square", crosshairSquare), category: "gaming", zh: ["方框准星"] },
184
+ { name: "face-alien", Icon: createLucideIcon("face-alien", faceAlien), category: "gaming", zh: ["外星人"] },
185
+ { name: "flower-pot", Icon: createLucideIcon("flower-pot", flowerPot), category: "gaming", zh: ["花盆", "盆栽"] },
186
+ { name: "flower-tulip", Icon: createLucideIcon("flower-tulip", flowerTulip), category: "gaming", zh: ["郁金香"] },
187
+ { name: "football", Icon: createLucideIcon("football", football), category: "gaming", zh: ["足球"] },
188
+ { name: "football-goal", Icon: createLucideIcon("football-goal", footballGoal), category: "gaming", zh: ["球门"] },
189
+ { name: "football-helmet", Icon: createLucideIcon("football-helmet", footballHelmet), category: "gaming", zh: ["橄榄球头盔"] },
190
+ { name: "gearbox", Icon: createLucideIcon("gearbox", gearbox), category: "gaming", zh: ["换挡杆", "变速箱"] },
191
+ { name: "gearbox-square", Icon: createLucideIcon("gearbox-square", gearboxSquare), category: "gaming", zh: ["方框换挡"] },
192
+ { name: "goal-net", Icon: createLucideIcon("goal-net", goalNet), category: "gaming", zh: ["球网"] },
193
+ { name: "golf-driver", Icon: createLucideIcon("golf-driver", golfDriver), category: "gaming", zh: ["高尔夫球杆"] },
194
+ { name: "grid-lines", Icon: createLucideIcon("grid-lines", gridLines), category: "gaming", zh: ["网格线"] },
195
+ { name: "hockey", Icon: createLucideIcon("hockey", hockey), category: "gaming", zh: ["曲棍球"] },
196
+ { name: "hockey-mask", Icon: createLucideIcon("hockey-mask", hockeyMask), category: "gaming", zh: ["冰球面罩"] },
197
+ { name: "horse-head", Icon: createLucideIcon("horse-head", horseHead), category: "gaming", zh: ["马头"] },
198
+ { name: "ice-hockey", Icon: createLucideIcon("ice-hockey", iceHockey), category: "gaming", zh: ["冰球"] },
199
+ { name: "locate-square", Icon: createLucideIcon("locate-square", locateSquare), category: "gaming", zh: ["方框定位"] },
200
+ { name: "motor-racing-helmet", Icon: createLucideIcon("motor-racing-helmet", motorRacingHelmet), category: "gaming", zh: ["赛车头盔"] },
201
+ { name: "pac-man", Icon: createLucideIcon("pac-man", pacMan), category: "gaming", zh: ["吃豆人"] },
202
+ { name: "pac-man-ghost", Icon: createLucideIcon("pac-man-ghost", pacManGhost), category: "gaming", zh: ["吃豆人幽灵"] },
203
+ { name: "planet", Icon: createLucideIcon("planet", planet), category: "gaming", zh: ["星球"] },
204
+ { name: "rugby", Icon: createLucideIcon("rugby", rugby), category: "gaming", zh: ["橄榄球"] },
205
+ { name: "shovel-dig", Icon: createLucideIcon("shovel-dig", shovelDig), category: "gaming", zh: ["铲子"] },
206
+ { name: "soccer-ball", Icon: createLucideIcon("soccer-ball", soccerBall), category: "gaming", zh: ["足球"] },
207
+ { name: "soccer-pitch", Icon: createLucideIcon("soccer-pitch", soccerPitch), category: "gaming", zh: ["足球场"] },
208
+ { name: "steering-wheel", Icon: createLucideIcon("steering-wheel", steeringWheel), category: "gaming", zh: ["方向盘"] },
209
+ { name: "surfboard", Icon: createLucideIcon("surfboard", surfboard), category: "gaming", zh: ["冲浪板"] },
210
+ { name: "target-arrow", Icon: createLucideIcon("target-arrow", targetArrow), category: "gaming", zh: ["靶心箭头"] },
211
+ { name: "tennis-ball", Icon: createLucideIcon("tennis-ball", tennisBall), category: "gaming", zh: ["网球"] },
212
+ { name: "tennis-racket", Icon: createLucideIcon("tennis-racket", tennisRacket), category: "gaming", zh: ["网球拍"] },
213
+ { name: "ufo", Icon: createLucideIcon("ufo", ufo), category: "gaming", zh: ["不明飞行物"] },
214
+ { name: "unicorn-head", Icon: createLucideIcon("unicorn-head", unicornHead), category: "gaming", zh: ["独角兽"] },
215
+ { name: "baby-pacifier", Icon: createLucideIcon("baby-pacifier", babyPacifier), category: "home", zh: ["婴儿奶嘴"] },
216
+ { name: "bath-bubble", Icon: createLucideIcon("bath-bubble", bathBubble), category: "home", zh: ["浴缸泡泡"] },
217
+ { name: "bed-bunk", Icon: createLucideIcon("bed-bunk", bedBunk), category: "home", zh: ["上下铺"] },
218
+ { name: "bottle-baby", Icon: createLucideIcon("bottle-baby", bottleBaby), category: "home", zh: ["婴儿奶瓶"] },
219
+ { name: "bottle-dispenser", Icon: createLucideIcon("bottle-dispenser", bottleDispenser), category: "home", zh: ["分配瓶"] },
220
+ { name: "bottle-spray", Icon: createLucideIcon("bottle-spray", bottleSpray), category: "home", zh: ["喷雾瓶"] },
221
+ { name: "bottle-toothbrush-comb", Icon: createLucideIcon("bottle-toothbrush-comb", bottleToothbrushComb), category: "home", zh: ["洗漱瓶"] },
222
+ { name: "broom", Icon: createLucideIcon("broom", broom), category: "home", zh: ["扫帚"] },
223
+ { name: "bucket", Icon: createLucideIcon("bucket", bucket), category: "home", zh: ["水桶"] },
224
+ { name: "cabin", Icon: createLucideIcon("cabin", cabin), category: "home", zh: ["小屋", "木屋"] },
225
+ { name: "candle-holder", Icon: createLucideIcon("candle-holder", candleHolder), category: "home", zh: ["烛台"] },
226
+ { name: "candle-holder-lit", Icon: createLucideIcon("candle-holder-lit", candleHolderLit), category: "home", zh: ["点燃烛台"] },
227
+ { name: "candle-tealight", Icon: createLucideIcon("candle-tealight", candleTealight), category: "home", zh: ["茶蜡"] },
228
+ { name: "candle-tealight-lit", Icon: createLucideIcon("candle-tealight-lit", candleTealightLit), category: "home", zh: ["点燃茶蜡"] },
229
+ { name: "candlestick", Icon: createLucideIcon("candlestick", candlestick), category: "home", zh: ["蜡烛"] },
230
+ { name: "candlestick-big", Icon: createLucideIcon("candlestick-big", candlestickBig), category: "home", zh: ["大蜡烛"] },
231
+ { name: "candlestick-big-lit", Icon: createLucideIcon("candlestick-big-lit", candlestickBigLit), category: "home", zh: ["点燃大蜡烛"] },
232
+ { name: "candlestick-lit", Icon: createLucideIcon("candlestick-lit", candlestickLit), category: "home", zh: ["点燃蜡烛"] },
233
+ { name: "chairs-table-parasol", Icon: createLucideIcon("chairs-table-parasol", chairsTableParasol), category: "home", zh: ["桌椅遮阳伞"] },
234
+ { name: "cloth", Icon: createLucideIcon("cloth", cloth), category: "home", zh: ["布", "毛巾"] },
235
+ { name: "coat-hanger", Icon: createLucideIcon("coat-hanger", coatHanger), category: "home", zh: ["衣架"] },
236
+ { name: "desk-lamp", Icon: createLucideIcon("desk-lamp", deskLamp), category: "home", zh: ["台灯"] },
237
+ { name: "diaper", Icon: createLucideIcon("diaper", diaper), category: "home", zh: ["尿布"] },
238
+ { name: "dishwasher", Icon: createLucideIcon("dishwasher", dishwasher), category: "home", zh: ["洗碗机"] },
239
+ { name: "doorbell-intercom", Icon: createLucideIcon("doorbell-intercom", doorbellIntercom), category: "home", zh: ["门铃对讲"] },
240
+ { name: "flower-rose", Icon: createLucideIcon("flower-rose", flowerRose), category: "home", zh: ["玫瑰"] },
241
+ { name: "flower-rose-single", Icon: createLucideIcon("flower-rose-single", flowerRoseSingle), category: "home", zh: ["单枝玫瑰"] },
242
+ { name: "hairdryer", Icon: createLucideIcon("hairdryer", hairdryer), category: "home", zh: ["吹风机"] },
243
+ { name: "house-manor", Icon: createLucideIcon("house-manor", houseManor), category: "home", zh: ["庄园", "宅邸"] },
244
+ { name: "house-roof", Icon: createLucideIcon("house-roof", houseRoof), category: "home", zh: ["屋顶"] },
245
+ { name: "intercom", Icon: createLucideIcon("intercom", intercom), category: "home", zh: ["对讲机"] },
246
+ { name: "iron", Icon: createLucideIcon("iron", iron), category: "home", zh: ["熨斗"] },
247
+ { name: "ironing-board", Icon: createLucideIcon("ironing-board", ironingBoard), category: "home", zh: ["烫衣板"] },
248
+ { name: "pillow", Icon: createLucideIcon("pillow", pillow), category: "home", zh: ["枕头"] },
249
+ { name: "pin-safety", Icon: createLucideIcon("pin-safety", pinSafety), category: "home", zh: ["别针", "安全别针"] },
250
+ { name: "pin-safety-open", Icon: createLucideIcon("pin-safety-open", pinSafetyOpen), category: "home", zh: ["打开的别针"] },
251
+ { name: "razor", Icon: createLucideIcon("razor", razor), category: "home", zh: ["剃须刀"] },
252
+ { name: "razor-blade", Icon: createLucideIcon("razor-blade", razorBlade), category: "home", zh: ["刀片"] },
253
+ { name: "reel-thread", Icon: createLucideIcon("reel-thread", reelThread), category: "home", zh: ["线轴"] },
254
+ { name: "shave-face", Icon: createLucideIcon("shave-face", shaveFace), category: "home", zh: ["刮脸"] },
255
+ { name: "shower", Icon: createLucideIcon("shower", shower), category: "home", zh: ["淋浴"] },
256
+ { name: "soap-bar", Icon: createLucideIcon("soap-bar", soapBar), category: "home", zh: ["香皂"] },
257
+ { name: "stairs-arrow-down-left", Icon: createLucideIcon("stairs-arrow-down-left", stairsArrowDownLeft), category: "home", zh: ["楼梯下行"] },
258
+ { name: "stairs-arrow-up-right", Icon: createLucideIcon("stairs-arrow-up-right", stairsArrowUpRight), category: "home", zh: ["楼梯上行"] },
259
+ { name: "toilet-roll", Icon: createLucideIcon("toilet-roll", toiletRoll), category: "home", zh: ["厕纸"] },
260
+ { name: "toolbox-2", Icon: createLucideIcon("toolbox-2", toolbox2), category: "home", zh: ["工具箱"] },
261
+ { name: "towel-folded", Icon: createLucideIcon("towel-folded", towelFolded), category: "home", zh: ["折叠毛巾"] },
262
+ { name: "yarn-ball", Icon: createLucideIcon("yarn-ball", yarnBall), category: "home", zh: ["毛线球"] },
263
+ { name: "barn", Icon: createLucideIcon("barn", barn), category: "animals", zh: ["谷仓", "牲口棚"] },
264
+ { name: "bear-face", Icon: createLucideIcon("bear-face", bearFace), category: "animals", zh: ["熊脸"] },
265
+ { name: "bee", Icon: createLucideIcon("bee", bee), category: "animals", zh: ["蜜蜂"] },
266
+ { name: "beetle-scarab", Icon: createLucideIcon("beetle-scarab", beetleScarab), category: "animals", zh: ["圣甲虫", "甲虫"] },
267
+ { name: "butterfly", Icon: createLucideIcon("butterfly", butterfly), category: "animals", zh: ["蝴蝶"] },
268
+ { name: "cat-big", Icon: createLucideIcon("cat-big", catBig), category: "animals", zh: ["猫"] },
269
+ { name: "chameleon", Icon: createLucideIcon("chameleon", chameleon), category: "animals", zh: ["变色龙"] },
270
+ { name: "crab", Icon: createLucideIcon("crab", crab), category: "animals", zh: ["螃蟹"] },
271
+ { name: "elephant", Icon: createLucideIcon("elephant", elephant), category: "animals", zh: ["大象"] },
272
+ { name: "elephant-face", Icon: createLucideIcon("elephant-face", elephantFace), category: "animals", zh: ["大象脸"] },
273
+ { name: "fox-face-tail", Icon: createLucideIcon("fox-face-tail", foxFaceTail), category: "animals", zh: ["狐狸"] },
274
+ { name: "frog-face", Icon: createLucideIcon("frog-face", frogFace), category: "animals", zh: ["青蛙脸"] },
275
+ { name: "hedgehog", Icon: createLucideIcon("hedgehog", hedgehog), category: "animals", zh: ["刺猬"] },
276
+ { name: "owl", Icon: createLucideIcon("owl", owl), category: "animals", zh: ["猫头鹰"] },
277
+ { name: "penguin", Icon: createLucideIcon("penguin", penguin), category: "animals", zh: ["企鹅"] },
278
+ { name: "shark", Icon: createLucideIcon("shark", shark), category: "animals", zh: ["鲨鱼"] },
279
+ { name: "spider", Icon: createLucideIcon("spider", spider), category: "animals", zh: ["蜘蛛"] },
280
+ { name: "spider-web", Icon: createLucideIcon("spider-web", spiderWeb), category: "animals", zh: ["蜘蛛网"] },
281
+ { name: "waves-shark-fin", Icon: createLucideIcon("waves-shark-fin", wavesSharkFin), category: "animals", zh: ["鲨鳍海浪"] },
282
+ { name: "whale", Icon: createLucideIcon("whale", whale), category: "animals", zh: ["鲸鱼"] },
283
+ { name: "whale-narwhal", Icon: createLucideIcon("whale-narwhal", whaleNarwhal), category: "animals", zh: ["独角鲸"] },
284
+ { name: "cactus", Icon: createLucideIcon("cactus", cactus), category: "nature", zh: ["仙人掌"] },
285
+ { name: "flower-lotus", Icon: createLucideIcon("flower-lotus", flowerLotus), category: "nature", zh: ["莲花"] },
286
+ { name: "pond", Icon: createLucideIcon("pond", pond), category: "nature", zh: ["池塘"] },
287
+ { name: "tree-palm-island-sun", Icon: createLucideIcon("tree-palm-island-sun", treePalmIslandSun), category: "nature", zh: ["棕榈树小岛"] },
288
+ { name: "trees-forest", Icon: createLucideIcon("trees-forest", treesForest), category: "nature", zh: ["森林"] },
289
+ { name: "barber-pole", Icon: createLucideIcon("barber-pole", barberPole), category: "people", zh: ["理发转灯"] },
290
+ { name: "mustache", Icon: createLucideIcon("mustache", mustache), category: "people", zh: ["胡子", "八字胡"] },
291
+ { name: "police-cap", Icon: createLucideIcon("police-cap", policeCap), category: "people", zh: ["警帽"] },
292
+ { name: "pram", Icon: createLucideIcon("pram", pram), category: "people", zh: ["婴儿车"] },
293
+ { name: "scissors-hair-comb", Icon: createLucideIcon("scissors-hair-comb", scissorsHairComb), category: "people", zh: ["剪刀梳子"] },
294
+ { name: "stroller", Icon: createLucideIcon("stroller", stroller), category: "people", zh: ["婴儿推车"] },
295
+ { name: "hat-beanie", Icon: createLucideIcon("hat-beanie", hatBeanie), category: "seasons", zh: ["毛线帽"] },
296
+ { name: "ice-skate", Icon: createLucideIcon("ice-skate", iceSkate), category: "seasons", zh: ["冰鞋"] },
297
+ { name: "igloo", Icon: createLucideIcon("igloo", igloo), category: "seasons", zh: ["冰屋"] },
298
+ { name: "scarf", Icon: createLucideIcon("scarf", scarf), category: "seasons", zh: ["围巾"] },
299
+ { name: "skis", Icon: createLucideIcon("skis", skis), category: "seasons", zh: ["滑雪板"] },
300
+ { name: "snowboard", Icon: createLucideIcon("snowboard", snowboard), category: "seasons", zh: ["单板滑雪"] },
301
+ { name: "snowman", Icon: createLucideIcon("snowman", snowman), category: "seasons", zh: ["雪人"] },
302
+ { name: "sweater", Icon: createLucideIcon("sweater", sweater), category: "seasons", zh: ["毛衣"] },
303
+ { name: "ampersand-square", Icon: createLucideIcon("ampersand-square", ampersandSquare), category: "other", zh: ["方框与号"] },
304
+ { name: "arrows-up-down-square", Icon: createLucideIcon("arrows-up-down-square", arrowsUpDownSquare), category: "other", zh: ["方框上下箭头"] },
305
+ { name: "at-sign-circle", Icon: createLucideIcon("at-sign-circle", atSignCircle), category: "other", zh: ["圆形at符号"] },
306
+ { name: "at-sign-square", Icon: createLucideIcon("at-sign-square", atSignSquare), category: "other", zh: ["方框at符号"] },
307
+ { name: "bag-hand", Icon: createLucideIcon("bag-hand", bagHand), category: "other", zh: ["提包"] },
308
+ { name: "baseline-square", Icon: createLucideIcon("baseline-square", baselineSquare), category: "other", zh: ["方框基线"] },
309
+ { name: "bell-concierge-dot", Icon: createLucideIcon("bell-concierge-dot", bellConciergeDot), category: "other", zh: ["礼宾铃"] },
310
+ { name: "bold-square", Icon: createLucideIcon("bold-square", boldSquare), category: "other", zh: ["方框粗体"] },
311
+ { name: "bottle-perfume", Icon: createLucideIcon("bottle-perfume", bottlePerfume), category: "other", zh: ["香水瓶"] },
312
+ { name: "bra-sports", Icon: createLucideIcon("bra-sports", braSports), category: "other", zh: ["运动内衣"] },
313
+ { name: "cabinet-filing", Icon: createLucideIcon("cabinet-filing", cabinetFiling), category: "other", zh: ["文件柜"] },
314
+ { name: "card-credit", Icon: createLucideIcon("card-credit", cardCredit), category: "other", zh: ["银行卡"] },
315
+ { name: "card-sd", Icon: createLucideIcon("card-sd", cardSd), category: "other", zh: ["SD卡"] },
316
+ { name: "case-camel", Icon: createLucideIcon("case-camel", caseCamel), category: "other", zh: ["驼峰命名"] },
317
+ { name: "case-kebab", Icon: createLucideIcon("case-kebab", caseKebab), category: "other", zh: ["短横线命名"] },
318
+ { name: "case-snake", Icon: createLucideIcon("case-snake", caseSnake), category: "other", zh: ["下划线命名"] },
319
+ { name: "case-snake-upper", Icon: createLucideIcon("case-snake-upper", caseSnakeUpper), category: "other", zh: ["大写下划线命名"] },
320
+ { name: "cent", Icon: createLucideIcon("cent", cent), category: "other", zh: ["分币"] },
321
+ { name: "cent-circle", Icon: createLucideIcon("cent-circle", centCircle), category: "other", zh: ["圆形分币"] },
322
+ { name: "cent-square", Icon: createLucideIcon("cent-square", centSquare), category: "other", zh: ["方框分币"] },
323
+ { name: "chevrons-up-down-square", Icon: createLucideIcon("chevrons-up-down-square", chevronsUpDownSquare), category: "other", zh: ["方框上下双箭头"] },
324
+ { name: "coins-exchange", Icon: createLucideIcon("coins-exchange", coinsExchange), category: "other", zh: ["货币兑换"] },
325
+ { name: "copy-code", Icon: createLucideIcon("copy-code", copyCode), category: "other", zh: ["复制代码"] },
326
+ { name: "copy-down", Icon: createLucideIcon("copy-down", copyDown), category: "other", zh: ["下载复制"] },
327
+ { name: "copy-file-path", Icon: createLucideIcon("copy-file-path", copyFilePath), category: "other", zh: ["复制文件路径"] },
328
+ { name: "copy-image", Icon: createLucideIcon("copy-image", copyImage), category: "other", zh: ["复制图片"] },
329
+ { name: "copy-text", Icon: createLucideIcon("copy-text", copyText), category: "other", zh: ["复制文本"] },
330
+ { name: "copy-type", Icon: createLucideIcon("copy-type", copyType), category: "other", zh: ["复制文字"] },
331
+ { name: "currency-square", Icon: createLucideIcon("currency-square", currencySquare), category: "other", zh: ["方框货币"] },
332
+ { name: "dollar-sign-square", Icon: createLucideIcon("dollar-sign-square", dollarSignSquare), category: "other", zh: ["方框美元"] },
333
+ { name: "dress", Icon: createLucideIcon("dress", dress), category: "other", zh: ["连衣裙"] },
334
+ { name: "escalator-arrow-down-left", Icon: createLucideIcon("escalator-arrow-down-left", escalatorArrowDownLeft), category: "other", zh: ["扶梯下行"] },
335
+ { name: "escalator-arrow-up-right", Icon: createLucideIcon("escalator-arrow-up-right", escalatorArrowUpRight), category: "other", zh: ["扶梯上行"] },
336
+ { name: "euro-circle", Icon: createLucideIcon("euro-circle", euroCircle), category: "other", zh: ["圆形欧元"] },
337
+ { name: "euro-square", Icon: createLucideIcon("euro-square", euroSquare), category: "other", zh: ["方框欧元"] },
338
+ { name: "fan-handheld", Icon: createLucideIcon("fan-handheld", fanHandheld), category: "other", zh: ["手持风扇"] },
339
+ { name: "feather-plus", Icon: createLucideIcon("feather-plus", featherPlus), category: "other", zh: ["羽毛新增"] },
340
+ { name: "feather-square", Icon: createLucideIcon("feather-square", featherSquare), category: "other", zh: ["方框羽毛"] },
341
+ { name: "feather-text", Icon: createLucideIcon("feather-text", featherText), category: "other", zh: ["羽毛文字"] },
342
+ { name: "flippers", Icon: createLucideIcon("flippers", flippers), category: "other", zh: ["蛙鞋", "脚蹼"] },
343
+ { name: "floor-plan", Icon: createLucideIcon("floor-plan", floorPlan), category: "other", zh: ["楼层平面图"] },
344
+ { name: "floppy-disk-2", Icon: createLucideIcon("floppy-disk-2", floppyDisk2), category: "other", zh: ["软盘"] },
345
+ { name: "floppy-disk-rear", Icon: createLucideIcon("floppy-disk-rear", floppyDiskRear), category: "other", zh: ["软盘"] },
346
+ { name: "floppy-disks-2", Icon: createLucideIcon("floppy-disks-2", floppyDisks2), category: "other", zh: ["多软盘"] },
347
+ { name: "floppy-disks-rear", Icon: createLucideIcon("floppy-disks-rear", floppyDisksRear), category: "other", zh: ["多软盘"] },
348
+ { name: "gem-ring", Icon: createLucideIcon("gem-ring", gemRing), category: "other", zh: ["宝石戒指"] },
349
+ { name: "glasses-square", Icon: createLucideIcon("glasses-square", glassesSquare), category: "other", zh: ["方框眼镜"] },
350
+ { name: "glasses-sun", Icon: createLucideIcon("glasses-sun", glassesSun), category: "other", zh: ["墨镜"] },
351
+ { name: "grid-lines-offset", Icon: createLucideIcon("grid-lines-offset", gridLinesOffset), category: "other", zh: ["偏移网格线"] },
352
+ { name: "hat-baseball", Icon: createLucideIcon("hat-baseball", hatBaseball), category: "other", zh: ["棒球帽"] },
353
+ { name: "hat-bowler", Icon: createLucideIcon("hat-bowler", hatBowler), category: "other", zh: ["圆顶礼帽"] },
354
+ { name: "hat-top", Icon: createLucideIcon("hat-top", hatTop), category: "other", zh: ["高顶礼帽"] },
355
+ { name: "heading-circle", Icon: createLucideIcon("heading-circle", headingCircle), category: "other", zh: ["圆形标题"] },
356
+ { name: "heading-square", Icon: createLucideIcon("heading-square", headingSquare), category: "other", zh: ["方框标题"] },
357
+ { name: "helmet-diving", Icon: createLucideIcon("helmet-diving", helmetDiving), category: "other", zh: ["潜水头盔"] },
358
+ { name: "high-heel", Icon: createLucideIcon("high-heel", highHeel), category: "other", zh: ["高跟鞋"] },
359
+ { name: "houses", Icon: createLucideIcon("houses", houses), category: "other", zh: ["房屋群"] },
360
+ { name: "indian-rupee-circle", Icon: createLucideIcon("indian-rupee-circle", indianRupeeCircle), category: "other", zh: ["圆形卢比"] },
361
+ { name: "indian-rupee-square", Icon: createLucideIcon("indian-rupee-square", indianRupeeSquare), category: "other", zh: ["方框卢比"] },
362
+ { name: "italic-square", Icon: createLucideIcon("italic-square", italicSquare), category: "other", zh: ["方框斜体"] },
363
+ { name: "jacket", Icon: createLucideIcon("jacket", jacket), category: "other", zh: ["夹克"] },
364
+ { name: "jacket-sports", Icon: createLucideIcon("jacket-sports", jacketSports), category: "other", zh: ["运动夹克"] },
365
+ { name: "japanese-yen-circle", Icon: createLucideIcon("japanese-yen-circle", japaneseYenCircle), category: "other", zh: ["圆形日元"] },
366
+ { name: "japanese-yen-square", Icon: createLucideIcon("japanese-yen-square", japaneseYenSquare), category: "other", zh: ["方框日元"] },
367
+ { name: "layout-grid-move-horizontal", Icon: createLucideIcon("layout-grid-move-horizontal", layoutGridMoveHorizontal), category: "other", zh: ["横向移动网格"] },
368
+ { name: "layout-grid-move-vertical", Icon: createLucideIcon("layout-grid-move-vertical", layoutGridMoveVertical), category: "other", zh: ["纵向移动网格"] },
369
+ { name: "layout-grid-plus", Icon: createLucideIcon("layout-grid-plus", layoutGridPlus), category: "other", zh: ["网格新增"] },
370
+ { name: "layout-list-move", Icon: createLucideIcon("layout-list-move", layoutListMove), category: "other", zh: ["列表移动"] },
371
+ { name: "life-jacket", Icon: createLucideIcon("life-jacket", lifeJacket), category: "other", zh: ["救生衣"] },
372
+ { name: "ligature-square", Icon: createLucideIcon("ligature-square", ligatureSquare), category: "other", zh: ["方框连字"] },
373
+ { name: "light-switch", Icon: createLucideIcon("light-switch", lightSwitch), category: "other", zh: ["电灯开关"] },
374
+ { name: "lingerie", Icon: createLucideIcon("lingerie", lingerie), category: "other", zh: ["内衣"] },
375
+ { name: "luggage-cabin", Icon: createLucideIcon("luggage-cabin", luggageCabin), category: "other", zh: ["登机箱"] },
376
+ { name: "mailbox-flag", Icon: createLucideIcon("mailbox-flag", mailboxFlag), category: "other", zh: ["带旗邮箱"] },
377
+ { name: "mask-snorkel", Icon: createLucideIcon("mask-snorkel", maskSnorkel), category: "other", zh: ["潜水镜"] },
378
+ { name: "peace", Icon: createLucideIcon("peace", peace), category: "other", zh: ["和平手势"] },
379
+ { name: "pilot", Icon: createLucideIcon("pilot", pilot), category: "other", zh: ["飞行员"] },
380
+ { name: "pound-sterling-circle", Icon: createLucideIcon("pound-sterling-circle", poundSterlingCircle), category: "other", zh: ["圆形英镑"] },
381
+ { name: "pound-sterling-square", Icon: createLucideIcon("pound-sterling-square", poundSterlingSquare), category: "other", zh: ["方框英镑"] },
382
+ { name: "remove-formatting-square", Icon: createLucideIcon("remove-formatting-square", removeFormattingSquare), category: "other", zh: ["方框清除格式"] },
383
+ { name: "russian-ruble-circle", Icon: createLucideIcon("russian-ruble-circle", russianRubleCircle), category: "other", zh: ["圆形卢布"] },
384
+ { name: "russian-ruble-square", Icon: createLucideIcon("russian-ruble-square", russianRubleSquare), category: "other", zh: ["方框卢布"] },
385
+ { name: "shirt-folded-buttons", Icon: createLucideIcon("shirt-folded-buttons", shirtFoldedButtons), category: "other", zh: ["折叠衬衫"] },
386
+ { name: "shirt-long-sleeve", Icon: createLucideIcon("shirt-long-sleeve", shirtLongSleeve), category: "other", zh: ["长袖衬衫"] },
387
+ { name: "shirt-t-ruler", Icon: createLucideIcon("shirt-t-ruler", shirtTRuler), category: "other", zh: ["尺码T恤"] },
388
+ { name: "shirt-t-v-neck", Icon: createLucideIcon("shirt-t-v-neck", shirtTVNeck), category: "other", zh: ["V领T恤"] },
389
+ { name: "shorts", Icon: createLucideIcon("shorts", shorts), category: "other", zh: ["短裤"] },
390
+ { name: "shorts-boxer", Icon: createLucideIcon("shorts-boxer", shortsBoxer), category: "other", zh: ["平角内裤"] },
391
+ { name: "skirt", Icon: createLucideIcon("skirt", skirt), category: "other", zh: ["裙子"] },
392
+ { name: "slot-card", Icon: createLucideIcon("slot-card", slotCard), category: "other", zh: ["卡槽"] },
393
+ { name: "slot-card-credit", Icon: createLucideIcon("slot-card-credit", slotCardCredit), category: "other", zh: ["银行卡槽"] },
394
+ { name: "slot-disc", Icon: createLucideIcon("slot-disc", slotDisc), category: "other", zh: ["光盘槽"] },
395
+ { name: "sneaker", Icon: createLucideIcon("sneaker", sneaker), category: "other", zh: ["运动鞋"] },
396
+ { name: "socket-eu", Icon: createLucideIcon("socket-eu", socketEu), category: "other", zh: ["欧标插座"] },
397
+ { name: "socket-uk", Icon: createLucideIcon("socket-uk", socketUk), category: "other", zh: ["英标插座"] },
398
+ { name: "socket-usa", Icon: createLucideIcon("socket-usa", socketUsa), category: "other", zh: ["美标插座"] },
399
+ { name: "socks", Icon: createLucideIcon("socks", socks), category: "other", zh: ["袜子"] },
400
+ { name: "stairs", Icon: createLucideIcon("stairs", stairs), category: "other", zh: ["楼梯"] },
401
+ { name: "stairs-arch", Icon: createLucideIcon("stairs-arch", stairsArch), category: "other", zh: ["拱形楼梯"] },
402
+ { name: "star-north", Icon: createLucideIcon("star-north", starNorth), category: "other", zh: ["北极星"] },
403
+ { name: "strikethrough-square", Icon: createLucideIcon("strikethrough-square", strikethroughSquare), category: "other", zh: ["方框删除线"] },
404
+ { name: "sunlounger-parasol-sun", Icon: createLucideIcon("sunlounger-parasol-sun", sunloungerParasolSun), category: "other", zh: ["遮阳伞躺椅"] },
405
+ { name: "sunlounger-parasol-sun-palm-tree", Icon: createLucideIcon("sunlounger-parasol-sun-palm-tree", sunloungerParasolSunPalmTree), category: "other", zh: ["遮阳伞躺椅棕榈树"] },
406
+ { name: "sunlounger-parasol-table", Icon: createLucideIcon("sunlounger-parasol-table", sunloungerParasolTable), category: "other", zh: ["遮阳伞桌椅"] },
407
+ { name: "swiss-franc-circle", Icon: createLucideIcon("swiss-franc-circle", swissFrancCircle), category: "other", zh: ["圆形瑞士法郎"] },
408
+ { name: "swiss-franc-square", Icon: createLucideIcon("swiss-franc-square", swissFrancSquare), category: "other", zh: ["方框瑞士法郎"] },
409
+ { name: "tab", Icon: createLucideIcon("tab", tab), category: "other", zh: ["标签页"] },
410
+ { name: "tab-arrow-down", Icon: createLucideIcon("tab-arrow-down", tabArrowDown), category: "other", zh: ["标签页下箭头"] },
411
+ { name: "tab-arrow-up-right", Icon: createLucideIcon("tab-arrow-up-right", tabArrowUpRight), category: "other", zh: ["标签页右上箭头"] },
412
+ { name: "tab-dot", Icon: createLucideIcon("tab-dot", tabDot), category: "other", zh: ["标签页圆点"] },
413
+ { name: "tab-plus", Icon: createLucideIcon("tab-plus", tabPlus), category: "other", zh: ["标签页新增"] },
414
+ { name: "tab-slash", Icon: createLucideIcon("tab-slash", tabSlash), category: "other", zh: ["标签页斜杠"] },
415
+ { name: "tab-text", Icon: createLucideIcon("tab-text", tabText), category: "other", zh: ["标签页文字"] },
416
+ { name: "tab-x", Icon: createLucideIcon("tab-x", tabX), category: "other", zh: ["标签页关闭"] },
417
+ { name: "text-square", Icon: createLucideIcon("text-square", textSquare), category: "other", zh: ["方框文字"] },
418
+ { name: "tie", Icon: createLucideIcon("tie", tie), category: "other", zh: ["领带"] },
419
+ { name: "tie-bow", Icon: createLucideIcon("tie-bow", tieBow), category: "other", zh: ["领结"] },
420
+ { name: "tie-bow-ribbon", Icon: createLucideIcon("tie-bow-ribbon", tieBowRibbon), category: "other", zh: ["丝带领结"] },
421
+ { name: "tire", Icon: createLucideIcon("tire", tire), category: "other", zh: ["轮胎"] },
422
+ { name: "top-crop", Icon: createLucideIcon("top-crop", topCrop), category: "other", zh: ["短上衣"] },
423
+ { name: "triangle-stripes", Icon: createLucideIcon("triangle-stripes", triangleStripes), category: "other", zh: ["条纹三角形"] },
424
+ { name: "trousers", Icon: createLucideIcon("trousers", trousers), category: "other", zh: ["长裤"] },
425
+ { name: "tuxedo", Icon: createLucideIcon("tuxedo", tuxedo), category: "other", zh: ["燕尾服"] },
426
+ { name: "type-square", Icon: createLucideIcon("type-square", typeSquare), category: "other", zh: ["方框文字"] },
427
+ { name: "underline-square", Icon: createLucideIcon("underline-square", underlineSquare), category: "other", zh: ["方框下划线"] },
428
+ { name: "venn", Icon: createLucideIcon("venn", venn), category: "other", zh: ["文氏图"] },
429
+ { name: "vest", Icon: createLucideIcon("vest", vest), category: "other", zh: ["背心"] },
430
+ { name: "wardrobe", Icon: createLucideIcon("wardrobe", wardrobe), category: "other", zh: ["衣柜"] },
431
+ { name: "watch-activity", Icon: createLucideIcon("watch-activity", watchActivity), category: "other", zh: ["运动手表"] },
432
+ { name: "watch-alarm", Icon: createLucideIcon("watch-alarm", watchAlarm), category: "other", zh: ["闹钟手表"] },
433
+ { name: "watch-bars", Icon: createLucideIcon("watch-bars", watchBars), category: "other", zh: ["手表条形"] },
434
+ { name: "watch-charging", Icon: createLucideIcon("watch-charging", watchCharging), category: "other", zh: ["充电手表"] },
435
+ { name: "watch-check", Icon: createLucideIcon("watch-check", watchCheck), category: "other", zh: ["手表确认"] },
436
+ { name: "watch-loader", Icon: createLucideIcon("watch-loader", watchLoader), category: "other", zh: ["手表加载"] },
437
+ { name: "watch-music", Icon: createLucideIcon("watch-music", watchMusic), category: "other", zh: ["手表音乐"] },
438
+ { name: "watch-square", Icon: createLucideIcon("watch-square", watchSquare), category: "other", zh: ["方框手表"] },
439
+ { name: "watch-square-alarm", Icon: createLucideIcon("watch-square-alarm", watchSquareAlarm), category: "other", zh: ["方框闹钟手表"] },
440
+ { name: "watch-text", Icon: createLucideIcon("watch-text", watchText), category: "other", zh: ["手表文字"] },
441
+ { name: "wave-circle", Icon: createLucideIcon("wave-circle", waveCircle), category: "other", zh: ["圆形波纹"] },
442
+ { name: "waves-birds", Icon: createLucideIcon("waves-birds", wavesBirds), category: "other", zh: ["海浪飞鸟"] },
443
+ { name: "wheel", Icon: createLucideIcon("wheel", wheel), category: "other", zh: ["车轮"] },
444
+ { name: "windmill", Icon: createLucideIcon("windmill", windmill), category: "other", zh: ["风车"] },
445
+ { name: "yin-yang", Icon: createLucideIcon("yin-yang", yinYang), category: "other", zh: ["阴阳"] },
446
+ ];
447
+
448
+ /** name → 条目 查找表(LucideIconByName 渲染用) */
449
+ export const LAB_ICON_MAP: Record<string, LabIcon> = Object.fromEntries(
450
+ LAB_ICONS.map((icon) => [icon.name, icon])
451
+ );
452
+
453
+ /** 优先级分类 → 图标(靠前显示) */
454
+ export const LAB_ICONS_BY_CATEGORY: Record<LabCategory, LabIcon[]> = {
455
+ "food-beverage": LAB_ICONS.filter((i) => i.category === "food-beverage"),
456
+ gaming: LAB_ICONS.filter((i) => i.category === "gaming"),
457
+ home: LAB_ICONS.filter((i) => i.category === "home"),
458
+ animals: LAB_ICONS.filter((i) => i.category === "animals"),
459
+ nature: LAB_ICONS.filter((i) => i.category === "nature"),
460
+ people: LAB_ICONS.filter((i) => i.category === "people"),
461
+ seasons: LAB_ICONS.filter((i) => i.category === "seasons"),
462
+ other: LAB_ICONS.filter((i) => i.category === "other"),
463
+ };
@@ -15,11 +15,12 @@
15
15
  // You should have received a copy of the GNU Affero General Public License
16
16
  // along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
 
18
- import type { ReactNode } from "react";
18
+ import { useEffect, useState, type ReactNode } from "react";
19
19
  import { FaceSlightlySmilingPlus } from "lucide-react";
20
20
  import { cn } from "@/lib/utils";
21
21
  import { CURATED_ICON_MAP } from "./curated-icons";
22
22
  import { pascalToKebab } from "./icon-data";
23
+ import type { LabIcon } from "./lab-icons";
23
24
 
24
25
  /**
25
26
  * 旧数据兼容:PROJECT_ICONS 时代存的名字与 Lucide 官方名不一致的映射
@@ -44,7 +45,7 @@ function resolveIconName(name: string): string {
44
45
  }
45
46
 
46
47
  interface LucideIconByNameProps {
47
- /** kebab-case 精选名单内的图标名;无效/精选外渲染 fallback */
48
+ /** kebab-case 图标名(精选常规集 + Lab 集);无效渲染 fallback */
48
49
  name?: string;
49
50
  size?: number;
50
51
  className?: string;
@@ -58,8 +59,33 @@ export function LucideIconByName({
58
59
  className,
59
60
  fallback,
60
61
  }: LucideIconByNameProps) {
61
- const name = rawName ? resolveIconName(rawName) : rawName;
62
- const found = name ? CURATED_ICON_MAP[name] : undefined;
62
+ const name = rawName ? resolveIconName(rawName) : undefined;
63
+ const curated = name ? CURATED_ICON_MAP[name] : undefined;
64
+ const [labEntry, setLabEntry] = useState<LabIcon | undefined>(undefined);
65
+
66
+ // Lab 图标按需加载:lab-icons.ts 含 351 个图标组件,
67
+ // 静态引入会把整包拖进主 bundle(本组件在 providers 层被同步引用)
68
+ useEffect(() => {
69
+ if (!name || curated) return;
70
+ let alive = true;
71
+ const candidates = [name, /[a-z][A-Z]/.test(name) ? pascalToKebab(name) : name];
72
+ void import("./lab-icons").then((mod) => {
73
+ if (!alive) return;
74
+ for (const candidate of candidates) {
75
+ const hit = mod.LAB_ICON_MAP[candidate];
76
+ if (hit) {
77
+ setLabEntry(hit);
78
+ return;
79
+ }
80
+ }
81
+ setLabEntry(undefined);
82
+ });
83
+ return () => {
84
+ alive = false;
85
+ };
86
+ }, [name, curated]);
87
+
88
+ const found = curated ?? labEntry;
63
89
  if (!found) {
64
90
  return (
65
91
  <>