@karrotmarket/react-multicolor-icon 1.22.0 → 1.23.0

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,20 @@
1
+ import { type ComponentType, type LazyExoticComponent, type SVGProps } from "react";
2
+ type IconComponent = ComponentType<SVGProps<SVGSVGElement> & {
3
+ size?: number | string;
4
+ }>;
5
+ /**
6
+ * SDUI 토큰 문자열(예: "icon_heart_fill")을 지연 로딩 아이콘 컴포넌트로 변환합니다.
7
+ * 존재하지 않는 토큰이면 null 을 반환합니다.
8
+ *
9
+ * @example
10
+ * const Icon = getIcon(serverToken);
11
+ * return Icon ? (
12
+ * <Suspense fallback={null}>
13
+ * <Icon size={24} />
14
+ * </Suspense>
15
+ * ) : null;
16
+ */
17
+ export declare function getIcon(token: string): LazyExoticComponent<IconComponent> | null;
18
+ /** 사용 가능한 전체 토큰 목록 (예: 아이콘 브라우저 UI). */
19
+ export declare const iconTokens: string[];
20
+ export {};
package/lib/loader.js ADDED
@@ -0,0 +1,117 @@
1
+ import {
2
+ lazy
3
+ } from "react";
4
+ const loaders = {
5
+ "icon_animal_face": () => import("./IconAnimalFace.js"),
6
+ "icon_apple": () => import("./IconApple.js"),
7
+ "icon_arrow_up_right_shoppingbag_tilted": () => import("./IconArrowUpRightShoppingbagTilted.js"),
8
+ "icon_arrowshape_circle2": () => import("./IconArrowshapeCircle2.js"),
9
+ "icon_asterisk_horizrectangle_coolwave3": () => import("./IconAsteriskHorizrectangleCoolwave3.js"),
10
+ "icon_bell": () => import("./IconBell.js"),
11
+ "icon_book": () => import("./IconBook.js"),
12
+ "icon_box_flap": () => import("./IconBoxFlap.js"),
13
+ "icon_building2": () => import("./IconBuilding2.js"),
14
+ "icon_building2_twosize": () => import("./IconBuilding2Twosize.js"),
15
+ "icon_camcorder": () => import("./IconCamcorder.js"),
16
+ "icon_camera": () => import("./IconCamera.js"),
17
+ "icon_car_frontside": () => import("./IconCarFrontside.js"),
18
+ "icon_car_frontside_bubble": () => import("./IconCarFrontsideBubble.js"),
19
+ "icon_card": () => import("./IconCard.js"),
20
+ "icon_cart": () => import("./IconCart.js"),
21
+ "icon_cart_items": () => import("./IconCartItems.js"),
22
+ "icon_cart_load": () => import("./IconCartLoad.js"),
23
+ "icon_chatbubble2": () => import("./IconChatbubble2.js"),
24
+ "icon_checkmark_calendar": () => import("./IconCheckmarkCalendar.js"),
25
+ "icon_clapperboard_star": () => import("./IconClapperboardStar.js"),
26
+ "icon_clover4": () => import("./IconClover4.js"),
27
+ "icon_cup_heatwave": () => import("./IconCupHeatwave.js"),
28
+ "icon_cup_takeout": () => import("./IconCupTakeout.js"),
29
+ "icon_cupcake": () => import("./IconCupcake.js"),
30
+ "icon_daangn_house": () => import("./IconDaangnHouse.js"),
31
+ "icon_diamond": () => import("./IconDiamond.js"),
32
+ "icon_document_seal": () => import("./IconDocumentSeal.js"),
33
+ "icon_dome_pillar3": () => import("./IconDomePillar3.js"),
34
+ "icon_donut": () => import("./IconDonut.js"),
35
+ "icon_duck_leftside": () => import("./IconDuckLeftside.js"),
36
+ "icon_dumbbell": () => import("./IconDumbbell.js"),
37
+ "icon_envelope": () => import("./IconEnvelope.js"),
38
+ "icon_exclamationmark_triangle": () => import("./IconExclamationmarkTriangle.js"),
39
+ "icon_eyebrow": () => import("./IconEyebrow.js"),
40
+ "icon_face_laughing_circle": () => import("./IconFaceLaughingCircle.js"),
41
+ "icon_face_smile_circle": () => import("./IconFaceSmileCircle.js"),
42
+ "icon_figure_walk": () => import("./IconFigureWalk.js"),
43
+ "icon_fish_wave2": () => import("./IconFishWave2.js"),
44
+ "icon_flower": () => import("./IconFlower.js"),
45
+ "icon_fork_spoon": () => import("./IconForkSpoon.js"),
46
+ "icon_fork_spoon_bag": () => import("./IconForkSpoonBag.js"),
47
+ "icon_fraction_1_n_uppercase": () => import("./IconFraction_1NUppercase.js"),
48
+ "icon_gamepad": () => import("./IconGamepad.js"),
49
+ "icon_gift": () => import("./IconGift.js"),
50
+ "icon_glasses": () => import("./IconGlasses.js"),
51
+ "icon_grid_dot5": () => import("./IconGridDot5.js"),
52
+ "icon_hand_drop": () => import("./IconHandDrop.js"),
53
+ "icon_horizline_viewfinder": () => import("./IconHorizlineViewfinder.js"),
54
+ "icon_hospital": () => import("./IconHospital.js"),
55
+ "icon_house_card": () => import("./IconHouseCard.js"),
56
+ "icon_icecreamcone": () => import("./IconIcecreamcone.js"),
57
+ "icon_linechart_up_xaxis": () => import("./IconLinechartUpXaxis.js"),
58
+ "icon_magnifyingglass": () => import("./IconMagnifyingglass.js"),
59
+ "icon_mask2_smile_stacked": () => import("./IconMask2SmileStacked.js"),
60
+ "icon_megaphone_tilted": () => import("./IconMegaphoneTilted.js"),
61
+ "icon_monitor": () => import("./IconMonitor.js"),
62
+ "icon_nailpolish": () => import("./IconNailpolish.js"),
63
+ "icon_paintroller": () => import("./IconPaintroller.js"),
64
+ "icon_palette": () => import("./IconPalette.js"),
65
+ "icon_pencil": () => import("./IconPencil.js"),
66
+ "icon_percent_arrowshape_down": () => import("./IconPercentArrowshapeDown.js"),
67
+ "icon_person2_openarms": () => import("./IconPerson2Openarms.js"),
68
+ "icon_person_magnifyingglass": () => import("./IconPersonMagnifyingglass.js"),
69
+ "icon_picture2_stacked": () => import("./IconPicture2Stacked.js"),
70
+ "icon_pizza_slice": () => import("./IconPizzaSlice.js"),
71
+ "icon_plate_covered": () => import("./IconPlateCovered.js"),
72
+ "icon_post": () => import("./IconPost.js"),
73
+ "icon_rocket": () => import("./IconRocket.js"),
74
+ "icon_roundmeat_bottombone": () => import("./IconRoundmeatBottombone.js"),
75
+ "icon_scissors": () => import("./IconScissors.js"),
76
+ "icon_shoppingbag2_stacked": () => import("./IconShoppingbag2Stacked.js"),
77
+ "icon_shoppingbag_items": () => import("./IconShoppingbagItems.js"),
78
+ "icon_sneaker_lifted_leftside": () => import("./IconSneakerLiftedLeftside.js"),
79
+ "icon_sofa": () => import("./IconSofa.js"),
80
+ "icon_sparkle2": () => import("./IconSparkle2.js"),
81
+ "icon_sparkle_arrow_up": () => import("./IconSparkleArrowUp.js"),
82
+ "icon_spraybottle_sponge": () => import("./IconSpraybottleSponge.js"),
83
+ "icon_squareline2_vertical": () => import("./IconSquareline2Vertical.js"),
84
+ "icon_star_calendar": () => import("./IconStarCalendar.js"),
85
+ "icon_treasure_chest": () => import("./IconTreasureChest.js"),
86
+ "icon_tree": () => import("./IconTree.js"),
87
+ "icon_triangle_right_chatbubble_left": () => import("./IconTriangleRightChatbubbleLeft.js"),
88
+ "icon_trophy": () => import("./IconTrophy.js"),
89
+ "icon_truck": () => import("./IconTruck.js"),
90
+ "icon_tshirt_bubble2": () => import("./IconTshirtBubble2.js"),
91
+ "icon_vertrectangle_tiltedstacked": () => import("./IconVertrectangleTiltedstacked.js"),
92
+ "icon_vest_horizstripe": () => import("./IconVestHorizstripe.js"),
93
+ "icon_wand_plus_circle": () => import("./IconWandPlusCircle.js"),
94
+ "icon_warninglight": () => import("./IconWarninglight.js"),
95
+ "icon_window2_store": () => import("./IconWindow2Store.js"),
96
+ "icon_window2_store_doubleband": () => import("./IconWindow2StoreDoubleband.js"),
97
+ "icon_window4_house": () => import("./IconWindow4House.js"),
98
+ "icon_won_circle": () => import("./IconWonCircle.js"),
99
+ "icon_won_shield": () => import("./IconWonShield.js"),
100
+ "icon_wrench": () => import("./IconWrench.js")
101
+ };
102
+ const cache = /* @__PURE__ */ new Map();
103
+ function getIcon(token) {
104
+ const loader = loaders[token];
105
+ if (!loader) return null;
106
+ let comp = cache.get(token);
107
+ if (!comp) {
108
+ comp = lazy(loader);
109
+ cache.set(token, comp);
110
+ }
111
+ return comp;
112
+ }
113
+ const iconTokens = Object.keys(loaders);
114
+ export {
115
+ getIcon,
116
+ iconTokens
117
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@karrotmarket/react-multicolor-icon",
3
- "version": "1.22.0",
3
+ "version": "1.23.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/daangn/seed-icon-v3.git",
@@ -23,6 +23,10 @@
23
23
  "import": "./lib/index.js",
24
24
  "require": "./lib/index.cjs"
25
25
  },
26
+ "./loader": {
27
+ "types": "./lib/loader.d.ts",
28
+ "import": "./lib/loader.js"
29
+ },
26
30
  "./*": {
27
31
  "types": "./lib/*.d.ts",
28
32
  "import": "./lib/*.js",