vue-emoji-to-icon 1.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ohohOD
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,217 @@
1
+ # vue-emoji-to-icon
2
+
3
+ Universal emoji to Lucide icon converter for Vue 3. Automatically converts emojis and Korean keywords to beautiful Lucide icons.
4
+
5
+ ## โœจ Features
6
+
7
+ - ๐Ÿ”„ **140+ Emoji Mappings**: Covers UI, TRPG, social, nature, food, and more
8
+ - ๐Ÿ‡ฐ๐Ÿ‡ท **Korean Keyword Support**: Use Korean words like '์ง‘' (home), '์‚ฌ๋žŒ' (user)
9
+ - ๐ŸŽจ **Fully Customizable**: Size, color, stroke width, and more
10
+ - ๐Ÿ”Œ **Fallback System**: Shows original emoji if no mapping exists
11
+ - ๐ŸŒณ **Tree-shakeable**: Only bundles icons you actually use
12
+ - ๐ŸŽฏ **Type Safe**: Full TypeScript support
13
+ - ๐Ÿชถ **Lightweight**: Minimal bundle size impact
14
+
15
+ ## ๐Ÿ“ฆ Installation
16
+
17
+ ```bash
18
+ npm install vue-emoji-to-icon
19
+ ```
20
+
21
+ ## ๐Ÿš€ Usage
22
+
23
+ ### Global Installation (Plugin)
24
+
25
+ ```javascript
26
+ // main.js
27
+ import { createApp } from 'vue'
28
+ import App from './App.vue'
29
+ import VueEmojiToIcon from 'vue-emoji-to-icon'
30
+
31
+ const app = createApp(App)
32
+ app.use(VueEmojiToIcon)
33
+ app.mount('#app')
34
+ ```
35
+
36
+ ### Component Import
37
+
38
+ ```vue
39
+ <template>
40
+ <div>
41
+ <!-- Basic usage -->
42
+ <EmojiToIcon emoji="๐Ÿ " />
43
+ <EmojiToIcon emoji="๐Ÿ‘ค" />
44
+ <EmojiToIcon emoji="โค๏ธ" />
45
+
46
+ <!-- With customization -->
47
+ <EmojiToIcon
48
+ emoji="โญ"
49
+ :size="32"
50
+ color="gold"
51
+ :stroke-width="3"
52
+ />
53
+
54
+ <!-- Korean keywords -->
55
+ <EmojiToIcon emoji="์ง‘" />
56
+ <EmojiToIcon emoji="์‚ฌ๋žŒ" />
57
+ <EmojiToIcon emoji="ํ•˜ํŠธ" />
58
+
59
+ <!-- Fallback for unmapped emojis -->
60
+ <EmojiToIcon emoji="๐Ÿฆ„" :show-fallback="true" />
61
+ </div>
62
+ </template>
63
+
64
+ <script>
65
+ import { EmojiToIcon } from 'vue-emoji-to-icon'
66
+
67
+ export default {
68
+ components: {
69
+ EmojiToIcon
70
+ }
71
+ }
72
+ </script>
73
+ ```
74
+
75
+ ## ๐ŸŽ›๏ธ Props
76
+
77
+ | Prop | Type | Default | Description |
78
+ |------|------|---------|-------------|
79
+ | `emoji` | String | **(required)** | Emoji or Korean keyword to convert |
80
+ | `size` | Number | `24` | Icon size in pixels |
81
+ | `color` | String | `'currentColor'` | Icon color |
82
+ | `fill` | String | `'none'` | Fill color |
83
+ | `strokeWidth` | Number | `2` | Stroke width |
84
+ | `showFallback` | Boolean | `true` | Show original emoji if no mapping |
85
+ | `iconClass` | String | `''` | CSS class for icon |
86
+ | `fallbackClass` | String | `'emoji-fallback'` | CSS class for fallback emoji |
87
+
88
+ ## ๐Ÿ“š Emoji Mappings
89
+
90
+ ### UI & Navigation
91
+ - ๐Ÿ  โ†’ Home
92
+ - ๐Ÿ‘ค โ†’ User
93
+ - โญ โ†’ Star
94
+ - ๐Ÿ” โ†’ Search
95
+ - ๐Ÿ’ฌ โ†’ MessageCircle
96
+ - โš™๏ธ โ†’ Settings
97
+ - โ˜ฐ โ†’ Menu
98
+ - โŒ โ†’ X
99
+
100
+ ### TRPG & Gaming
101
+ - ๐ŸŽฒ โ†’ Dice5
102
+ - โš”๏ธ โ†’ Sword
103
+ - ๐Ÿ›ก๏ธ โ†’ Shield
104
+ - ๐Ÿน โ†’ BowArrow
105
+ - ๐ŸŽฏ โ†’ Target
106
+ - ๐Ÿ“œ โ†’ Scroll
107
+ - โš€โšโš‚โšƒโš„โš… โ†’ Dice1-6
108
+
109
+ ### Social & Communication
110
+ - โค๏ธ โ†’ Heart
111
+ - ๐Ÿ‘ โ†’ ThumbsUp
112
+ - ๐Ÿ‘Ž โ†’ ThumbsDown
113
+ - ๐Ÿ“ค โ†’ Send
114
+ - ๐Ÿ‘€ โ†’ Eye
115
+ - ๐Ÿ”— โ†’ Link
116
+
117
+ ### Nature & Weather
118
+ - โ˜€๏ธ โ†’ Sun
119
+ - ๐ŸŒ™ โ†’ Moon
120
+ - โ˜๏ธ โ†’ Cloud
121
+ - ๐Ÿ”ฅ โ†’ Flame
122
+ - โ„๏ธ โ†’ Snowflake
123
+
124
+ ### Korean Keywords
125
+ - ์ง‘ โ†’ Home
126
+ - ์‚ฌ๋žŒ โ†’ User
127
+ - ํ•˜ํŠธ โ†’ Heart
128
+ - ๋ณ„ โ†’ Star
129
+ - ๊ฒ€์ƒ‰ โ†’ Search
130
+ - ๋ฉ”์‹œ์ง€ โ†’ MessageCircle
131
+ - ์„ค์ • โ†’ Settings
132
+
133
+ [See full mapping list in source code]
134
+
135
+ ## ๐Ÿ’ก Why Use This?
136
+
137
+ ### Before (Raw Emojis)
138
+ ```vue
139
+ <span class="icon">๐Ÿ </span> <!-- Inconsistent rendering -->
140
+ <span class="icon">๐Ÿ‘ค</span> <!-- Different styles -->
141
+ <span class="icon">โญ</span> <!-- Platform-dependent -->
142
+ ```
143
+
144
+ ### After (EmojiToIcon)
145
+ ```vue
146
+ <EmojiToIcon emoji="๐Ÿ " :size="16" /> <!-- Consistent Lucide icons -->
147
+ <EmojiToIcon emoji="๐Ÿ‘ค" :size="16" /> <!-- Unified design language -->
148
+ <EmojiToIcon emoji="โญ" :size="16" /> <!-- Beautiful & customizable -->
149
+ ```
150
+
151
+ ## ๐ŸŽจ Advanced Usage
152
+
153
+ ### Custom Styling
154
+
155
+ ```vue
156
+ <template>
157
+ <EmojiToIcon
158
+ emoji="โš”๏ธ"
159
+ :size="48"
160
+ color="red"
161
+ :stroke-width="3"
162
+ icon-class="my-custom-icon"
163
+ />
164
+ </template>
165
+
166
+ <style>
167
+ .my-custom-icon {
168
+ filter: drop-shadow(2px 2px 4px rgba(0,0,0,0.3));
169
+ transition: transform 0.2s;
170
+ }
171
+ .my-custom-icon:hover {
172
+ transform: scale(1.1);
173
+ }
174
+ </style>
175
+ ```
176
+
177
+ ### Dynamic Emoji Selection
178
+
179
+ ```vue
180
+ <template>
181
+ <div>
182
+ <EmojiToIcon
183
+ v-for="emoji in emojiList"
184
+ :key="emoji"
185
+ :emoji="emoji"
186
+ :size="24"
187
+ />
188
+ </div>
189
+ </template>
190
+
191
+ <script>
192
+ export default {
193
+ data() {
194
+ return {
195
+ emojiList: ['๐Ÿ ', '๐Ÿ‘ค', 'โญ', '๐Ÿ”', '๐Ÿ’ฌ']
196
+ }
197
+ }
198
+ }
199
+ </script>
200
+ ```
201
+
202
+ ## ๐Ÿ“ License
203
+
204
+ MIT
205
+
206
+ ## ๐Ÿค Contributing
207
+
208
+ Issues and PRs are welcome!
209
+
210
+ ## ๐Ÿ”— Related
211
+
212
+ - [lucide-vue-next](https://github.com/lucide-icons/lucide) - Beautiful icon library
213
+ - [Vue 3](https://vuejs.org/) - The Progressive JavaScript Framework
214
+
215
+ ## ๐Ÿ™ Credits
216
+
217
+ Built with [Lucide Icons](https://lucide.dev/)
@@ -0,0 +1 @@
1
+ export * from './src/index.js'
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .emoji-fallback[data-v-a28618da]{display:inline-block;line-height:1;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji","Android Emoji",sans-serif}
@@ -0,0 +1,290 @@
1
+ import { X as p, Menu as h, Settings as a, MessageCircle as k, Search as g, Star as r, Heart as t, User as n, Home as i, BadgeQuestionMark as A, Ban as _, Lock as f, Notebook as z, Smile as S, CircleQuestionMarkIcon as j, ClipboardIcon as F, Calendar as w, EyeIcon as E, Package as R, DatabaseIcon as L, Plug as U, Edit as l, Info as y, Bell as c, TrendingDown as T, TrendingUp as s, Dice6 as G, Dice5 as D, Dice4 as H, Dice3 as N, Dice2 as x, Dice1 as W, Sparkle as q, Scroll as O, Target as Q, BowArrow as V, Swords as K, Sword as X, Calculator as Z, Highlighter as J, PenTool as Y, GraduationCap as $, Cross as ee, Stethoscope as oe, Pill as ae, Activity as re, Truck as te, Rocket as ne, Ship as ie, Train as le, Plane as ce, Bike as se, Car as de, DollarSign as ue, CreditCard as Ce, ShoppingBag as me, ShoppingCart as pe, Code as he, Quote as ke, ListOrdered as ge, List as fe, Type as Se, Hourglass as we, TimerIcon as ye, Timer as Te, Building as De, Globe as Be, Navigation as be, Compass as Ie, Map as Me, MapPin as Pe, Wifi as ve, Server as Ae, Database as _e, Shield as B, Key as ze, Unlock as je, HelpCircle as Fe, AlertTriangle as Ee, Diamond as Re, Triangle as Le, Square as Ue, Circle as Ge, Meh as b, Angry as He, Frown as Ne, Banana as xe, Grape as We, Cherry as qe, Apple as Oe, Cake as Qe, Cookie as Ve, Pizza as Ke, Coffee as Xe, Ghost as Ze, Bug as Je, Turtle as Ye, Rabbit as $e, Bird as eo, Fish as oo, Dog as ao, Cat as ro, Flower as to, TreeDeciduousIcon as no, Leaf as io, Flame as lo, Snowflake as co, CloudRain as so, Cloud as uo, Moon as Co, Sun as mo, Edit3Icon as po, Wand2 as ho, Sparkles as ko, Zap as go, Crown as fo, Award as So, Trophy as wo, Gamepad2 as yo, Flag as To, Bookmark as Do, ThumbsDown as Bo, ThumbsUp as bo, RotateCcw as Io, RotateCw as Mo, RefreshCw as Po, Save as vo, Paperclip as Ao, Link as _o, Eye as zo, Share as jo, Send as Fo, ChevronRight as Eo, ChevronLeft as Ro, ChevronDown as Lo, ChevronUp as Uo, ArrowRight as Go, ArrowLeft as Ho, ArrowDown as No, ArrowUp as xo, CheckCircle as Wo, Check as qo, Minus as Oo, Plus as Qo, Trash2 as Vo, Folder as Ko, File as Xo, BookOpen as Zo, Book as Jo, Clock as Yo, CircleStop as $o, Pause as ea, Play as oa, Music as aa, Video as ra, Image as ta, Camera as na, Phone as I, Mail as M, MessageSquare as ia, Users as la } from "lucide-vue-next";
2
+ import { createBlock as ca, createElementBlock as sa, createCommentVNode as da, openBlock as P, resolveDynamicComponent as ua, mergeProps as Ca, normalizeStyle as ma, normalizeClass as pa, toDisplayString as ha } from "vue";
3
+ const ka = (o, d) => {
4
+ const e = o.__vccOpts || o;
5
+ for (const [u, C] of d)
6
+ e[u] = C;
7
+ return e;
8
+ }, ga = {
9
+ name: "EmojiToIcon",
10
+ inheritAttrs: !1,
11
+ props: {
12
+ emoji: {
13
+ type: String,
14
+ required: !0
15
+ },
16
+ size: {
17
+ type: Number,
18
+ default: 24
19
+ },
20
+ color: {
21
+ type: String,
22
+ default: "currentColor"
23
+ },
24
+ fill: {
25
+ type: String,
26
+ default: "none"
27
+ },
28
+ strokeWidth: {
29
+ type: Number,
30
+ default: 2
31
+ },
32
+ showFallback: {
33
+ type: Boolean,
34
+ default: !0
35
+ },
36
+ iconClass: {
37
+ type: String,
38
+ default: ""
39
+ },
40
+ fallbackClass: {
41
+ type: String,
42
+ default: "emoji-fallback"
43
+ }
44
+ },
45
+ computed: {
46
+ iconComponent() {
47
+ return this.emojiToIconMap[this.emoji] || null;
48
+ },
49
+ emojiToIconMap() {
50
+ return {
51
+ // ๊ธฐ๋ณธ UI ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜
52
+ "๐Ÿ ": i,
53
+ "๐Ÿก": i,
54
+ "๐Ÿ‘ค": n,
55
+ "๐Ÿ‘ฅ": la,
56
+ "โค๏ธ": t,
57
+ "๐Ÿ’–": t,
58
+ "โญ": r,
59
+ "๐Ÿ”": g,
60
+ "๐Ÿ’ฌ": k,
61
+ "๐Ÿ“ฑ": ia,
62
+ "๐Ÿ””": c,
63
+ "โš™๏ธ": a,
64
+ "โ˜ฐ": h,
65
+ "โŒ": p,
66
+ "โœ‰๏ธ": M,
67
+ "๐Ÿ“ง": M,
68
+ "โ˜Ž๏ธ": I,
69
+ "๐Ÿ“ž": I,
70
+ "๐Ÿ“ท": na,
71
+ "๐Ÿ–ผ๏ธ": ta,
72
+ "๐Ÿ“น": ra,
73
+ "๐ŸŽต": aa,
74
+ "โ–ถ๏ธ": oa,
75
+ "โธ๏ธ": ea,
76
+ "โน๏ธ": $o,
77
+ "๐Ÿ“…": w,
78
+ "๐Ÿ•": Yo,
79
+ "๐Ÿ“–": Jo,
80
+ "๐Ÿ“š": Zo,
81
+ "๐Ÿ“„": Xo,
82
+ "๐Ÿ“": Ko,
83
+ "โœ๏ธ": l,
84
+ "๐Ÿ—‘๏ธ": Vo,
85
+ "โž•": Qo,
86
+ "โž–": Oo,
87
+ "โœ…": qo,
88
+ "โœ”๏ธ": Wo,
89
+ // ๋ฐฉํ–ฅ ๋ฐ ๋„ค๋น„๊ฒŒ์ด์…˜
90
+ "โฌ†๏ธ": xo,
91
+ "โฌ‡๏ธ": No,
92
+ "โฌ…๏ธ": Ho,
93
+ "โžก๏ธ": Go,
94
+ "๐Ÿ”ผ": Uo,
95
+ "๐Ÿ”ฝ": Lo,
96
+ "โ—€๏ธ": Ro,
97
+ "โ–ถ๏ธ": Eo,
98
+ // ์†Œ์…œ ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜
99
+ "๐Ÿ“ค": Fo,
100
+ "๐Ÿ“ข": jo,
101
+ "๐Ÿ‘€": zo,
102
+ "๐Ÿ”—": _o,
103
+ "๐Ÿ“Ž": Ao,
104
+ "๐Ÿ’พ": vo,
105
+ "๐Ÿ”„": Po,
106
+ "โ†ช๏ธ": Mo,
107
+ "โ†ฉ๏ธ": Io,
108
+ "๐Ÿ‘": bo,
109
+ "๐Ÿ‘Ž": Bo,
110
+ "๐Ÿ”–": Do,
111
+ "๐Ÿšฉ": To,
112
+ // ๋ฏธ๋””์–ด ๋ฐ ์—”ํ„ฐํ…Œ์ธ๋จผํŠธ
113
+ "๐ŸŽฎ": yo,
114
+ "๐ŸŽฒ": D,
115
+ "๐Ÿ†": wo,
116
+ "๐Ÿฅ‡": So,
117
+ "๐Ÿ‘‘": fo,
118
+ "โšก": go,
119
+ "โœจ": ko,
120
+ "๐Ÿช„": ho,
121
+ "๐Ÿ“": po,
122
+ // ์ž์—ฐ ๋ฐ ๋‚ ์”จ
123
+ "โ˜€๏ธ": mo,
124
+ "๐ŸŒ™": Co,
125
+ "โ˜๏ธ": uo,
126
+ "๐ŸŒง๏ธ": so,
127
+ "โ„๏ธ": co,
128
+ "๐Ÿ”ฅ": lo,
129
+ "๐Ÿƒ": io,
130
+ "๐ŸŒณ": no,
131
+ "๐ŸŒธ": to,
132
+ // ๋™๋ฌผ
133
+ "๐Ÿฑ": ro,
134
+ "๐Ÿถ": ao,
135
+ "๐ŸŸ": oo,
136
+ "๐Ÿฆ": eo,
137
+ "๐Ÿฐ": $e,
138
+ "๐Ÿข": Ye,
139
+ "๐Ÿ›": Je,
140
+ "๐Ÿ‘ป": Ze,
141
+ // ์Œ์‹ ๋ฐ ์Œ๋ฃŒ
142
+ "โ˜•": Xe,
143
+ "๐Ÿ•": Ke,
144
+ "๐Ÿช": Ve,
145
+ "๐ŸŽ‚": Qe,
146
+ "๐ŸŽ": Oe,
147
+ "๐Ÿ’": qe,
148
+ "๐Ÿ‡": We,
149
+ "๐ŸŒ": xe,
150
+ // ๊ฐ์ • ๋ฐ ํ‘œํ˜„
151
+ "๐Ÿ˜Š": S,
152
+ "๐Ÿ˜ข": Ne,
153
+ "๐Ÿ˜": b,
154
+ "๐Ÿ˜ ": He,
155
+ "๐Ÿ˜ฒ": b,
156
+ // ๋„ํ˜• ๋ฐ ๊ธฐํ˜ธ
157
+ "โญ•": Ge,
158
+ "โฌœ": Ue,
159
+ "๐Ÿ”บ": Le,
160
+ "๐Ÿ’Ž": Re,
161
+ "โ„น๏ธ": y,
162
+ "โš ๏ธ": Ee,
163
+ "๐Ÿ›ก๏ธ": B,
164
+ "โ“": Fe,
165
+ // ๋ณด์•ˆ ๋ฐ ์‹œ์Šคํ…œ
166
+ "๐Ÿ”’": f,
167
+ "๐Ÿ”“": je,
168
+ "๐Ÿ”‘": ze,
169
+ "๐Ÿ›ก๏ธ": B,
170
+ "๐Ÿ’พ": _e,
171
+ "๐Ÿ–ฅ๏ธ": Ae,
172
+ "๐Ÿ“ถ": ve,
173
+ // ์œ„์น˜ ๋ฐ ์ง€๋„
174
+ "๐Ÿ“": Pe,
175
+ "๐Ÿ—บ๏ธ": Me,
176
+ "๐Ÿงญ": Ie,
177
+ "๐Ÿงญ": be,
178
+ "๐ŸŒ": Be,
179
+ "๐Ÿข": De,
180
+ // ์‹œ๊ฐ„ ๊ด€๋ฆฌ
181
+ "โฐ": Te,
182
+ "โฑ๏ธ": ye,
183
+ "โณ": we,
184
+ // ํ…์ŠคํŠธ ํŽธ์ง‘
185
+ "๐Ÿ”ค": Se,
186
+ "๐Ÿ“": l,
187
+ "๐Ÿ“‹": fe,
188
+ "๐Ÿ”ข": ge,
189
+ "๐Ÿ’ฌ": ke,
190
+ "๐Ÿ’ป": he,
191
+ // ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ ์‡ผํ•‘
192
+ "๐Ÿ›’": pe,
193
+ "๐Ÿ›๏ธ": me,
194
+ "๐Ÿ’ณ": Ce,
195
+ "๐Ÿ’ฐ": ue,
196
+ "๐Ÿ“ˆ": s,
197
+ "๐Ÿ“‰": T,
198
+ // ๊ตํ†ต ๋ฐ ์ด๋™
199
+ "๐Ÿš—": de,
200
+ "๐Ÿšฒ": se,
201
+ "โœˆ๏ธ": ce,
202
+ "๐Ÿš†": le,
203
+ "๐Ÿšข": ie,
204
+ "๐Ÿš€": ne,
205
+ "๐Ÿšš": te,
206
+ // ๊ฑด๊ฐ• ๋ฐ ์˜๋ฃŒ
207
+ "๐Ÿ’“": re,
208
+ "๐Ÿ’Š": ae,
209
+ "๐Ÿฉบ": oe,
210
+ "โž•": ee,
211
+ // ๊ต์œก ๋ฐ ํ•™์Šต
212
+ "๐ŸŽ“": $,
213
+ "โœ๏ธ": Y,
214
+ "๐Ÿ–๏ธ": J,
215
+ "๐Ÿงฎ": Z,
216
+ // TRPG ๋ฐ ํŒํƒ€์ง€ ๊ด€๋ จ
217
+ "โš”๏ธ": X,
218
+ "๐Ÿ—ก๏ธ": K,
219
+ "๐Ÿน": V,
220
+ "๐ŸŽฏ": Q,
221
+ "๐Ÿ“œ": O,
222
+ "โœจ": q,
223
+ // ์ฃผ์‚ฌ์œ„ ํŠน์ˆ˜ ๋งคํ•‘
224
+ "โš€": W,
225
+ "โš": x,
226
+ "โš‚": N,
227
+ "โšƒ": H,
228
+ "โš„": D,
229
+ "โš…": G,
230
+ // ์ถ”๊ฐ€ ์œ ์šฉํ•œ ์ด๋ชจ์ง€๋“ค
231
+ "๐Ÿ”ง": a,
232
+ "๐Ÿ”จ": a,
233
+ "๐Ÿ“Š": s,
234
+ "๐Ÿ“ˆ": s,
235
+ "๐Ÿ“‰": T,
236
+ "๐Ÿ””": c,
237
+ "๐Ÿ”•": c,
238
+ "๐Ÿ’ก": y,
239
+ "๐ŸŽจ": l,
240
+ "๐ŸŽญ": n,
241
+ "๐ŸŽช": r,
242
+ "๐Ÿ”Œ": U,
243
+ "๐Ÿ—„๏ธ": L,
244
+ "๐Ÿ“ฆ": R,
245
+ "๐Ÿ‘๏ธ": E,
246
+ "๐Ÿ“…": w,
247
+ "๐Ÿ“‹": F,
248
+ "โ“": j,
249
+ "๐Ÿง‘": S,
250
+ "๐Ÿ‘จโ€๐Ÿ’ป": z,
251
+ "๐Ÿ”": f,
252
+ "๐Ÿšซ": _,
253
+ "๏ฟฝ": A,
254
+ // ํ•œ๊ตญ์–ด ํ‚ค์›Œ๋“œ ์ง€์›
255
+ ์ง‘: i,
256
+ ์‚ฌ๋žŒ: n,
257
+ ํ•˜ํŠธ: t,
258
+ ๋ณ„: r,
259
+ ๊ฒ€์ƒ‰: g,
260
+ ๋ฉ”์‹œ์ง€: k,
261
+ ์„ค์ •: a,
262
+ ๋ฉ”๋‰ด: h,
263
+ ๋‹ซ๊ธฐ: p
264
+ };
265
+ }
266
+ }
267
+ };
268
+ function fa(o, d, e, u, C, m) {
269
+ return m.iconComponent ? (P(), ca(ua(m.iconComponent), Ca({
270
+ key: 0,
271
+ size: e.size,
272
+ fill: e.fill,
273
+ color: e.color,
274
+ "stroke-width": e.strokeWidth
275
+ }, o.$attrs, { class: e.iconClass }), null, 16, ["size", "fill", "color", "stroke-width", "class"])) : e.showFallback ? (P(), sa("span", {
276
+ key: 1,
277
+ class: pa(e.fallbackClass),
278
+ style: ma({ fontSize: e.size + "px" })
279
+ }, ha(e.emoji), 7)) : da("", !0);
280
+ }
281
+ const v = /* @__PURE__ */ ka(ga, [["render", fa], ["__scopeId", "data-v-a28618da"]]), Sa = (o) => {
282
+ o.component("EmojiToIcon", v);
283
+ }, Ta = {
284
+ install: Sa,
285
+ EmojiToIcon: v
286
+ };
287
+ export {
288
+ v as EmojiToIcon,
289
+ Ta as default
290
+ };
@@ -0,0 +1 @@
1
+ (function(a,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("lucide-vue-next"),require("vue")):typeof define=="function"&&define.amd?define(["exports","lucide-vue-next","vue"],o):(a=typeof globalThis<"u"?globalThis:a||self,o(a.VueEmojiToIcon={},a.LucideVueNext,a.Vue))})(this,function(a,o,r){"use strict";const g=(s,p)=>{const n=s.__vccOpts||s;for(const[m,f]of p)n[m]=f;return n},S={name:"EmojiToIcon",inheritAttrs:!1,props:{emoji:{type:String,required:!0},size:{type:Number,default:24},color:{type:String,default:"currentColor"},fill:{type:String,default:"none"},strokeWidth:{type:Number,default:2},showFallback:{type:Boolean,default:!0},iconClass:{type:String,default:""},fallbackClass:{type:String,default:"emoji-fallback"}},computed:{iconComponent(){return this.emojiToIconMap[this.emoji]||null},emojiToIconMap(){return{"๐Ÿ ":o.Home,"๐Ÿก":o.Home,"๐Ÿ‘ค":o.User,"๐Ÿ‘ฅ":o.Users,"โค๏ธ":o.Heart,"๐Ÿ’–":o.Heart,"โญ":o.Star,"๐Ÿ”":o.Search,"๐Ÿ’ฌ":o.MessageCircle,"๐Ÿ“ฑ":o.MessageSquare,"๐Ÿ””":o.Bell,"โš™๏ธ":o.Settings,"โ˜ฐ":o.Menu,"โŒ":o.X,"โœ‰๏ธ":o.Mail,"๐Ÿ“ง":o.Mail,"โ˜Ž๏ธ":o.Phone,"๐Ÿ“ž":o.Phone,"๐Ÿ“ท":o.Camera,"๐Ÿ–ผ๏ธ":o.Image,"๐Ÿ“น":o.Video,"๐ŸŽต":o.Music,"โ–ถ๏ธ":o.Play,"โธ๏ธ":o.Pause,"โน๏ธ":o.CircleStop,"๐Ÿ“…":o.Calendar,"๐Ÿ•":o.Clock,"๐Ÿ“–":o.Book,"๐Ÿ“š":o.BookOpen,"๐Ÿ“„":o.File,"๐Ÿ“":o.Folder,"โœ๏ธ":o.Edit,"๐Ÿ—‘๏ธ":o.Trash2,"โž•":o.Plus,"โž–":o.Minus,"โœ…":o.Check,"โœ”๏ธ":o.CheckCircle,"โฌ†๏ธ":o.ArrowUp,"โฌ‡๏ธ":o.ArrowDown,"โฌ…๏ธ":o.ArrowLeft,"โžก๏ธ":o.ArrowRight,"๐Ÿ”ผ":o.ChevronUp,"๐Ÿ”ฝ":o.ChevronDown,"โ—€๏ธ":o.ChevronLeft,"โ–ถ๏ธ":o.ChevronRight,"๐Ÿ“ค":o.Send,"๐Ÿ“ข":o.Share,"๐Ÿ‘€":o.Eye,"๐Ÿ”—":o.Link,"๐Ÿ“Ž":o.Paperclip,"๐Ÿ’พ":o.Save,"๐Ÿ”„":o.RefreshCw,"โ†ช๏ธ":o.RotateCw,"โ†ฉ๏ธ":o.RotateCcw,"๐Ÿ‘":o.ThumbsUp,"๐Ÿ‘Ž":o.ThumbsDown,"๐Ÿ”–":o.Bookmark,"๐Ÿšฉ":o.Flag,"๐ŸŽฎ":o.Gamepad2,"๐ŸŽฒ":o.Dice5,"๐Ÿ†":o.Trophy,"๐Ÿฅ‡":o.Award,"๐Ÿ‘‘":o.Crown,"โšก":o.Zap,"โœจ":o.Sparkles,"๐Ÿช„":o.Wand2,"๐Ÿ“":o.Edit3Icon,"โ˜€๏ธ":o.Sun,"๐ŸŒ™":o.Moon,"โ˜๏ธ":o.Cloud,"๐ŸŒง๏ธ":o.CloudRain,"โ„๏ธ":o.Snowflake,"๐Ÿ”ฅ":o.Flame,"๐Ÿƒ":o.Leaf,"๐ŸŒณ":o.TreeDeciduousIcon,"๐ŸŒธ":o.Flower,"๐Ÿฑ":o.Cat,"๐Ÿถ":o.Dog,"๐ŸŸ":o.Fish,"๐Ÿฆ":o.Bird,"๐Ÿฐ":o.Rabbit,"๐Ÿข":o.Turtle,"๐Ÿ›":o.Bug,"๐Ÿ‘ป":o.Ghost,"โ˜•":o.Coffee,"๐Ÿ•":o.Pizza,"๐Ÿช":o.Cookie,"๐ŸŽ‚":o.Cake,"๐ŸŽ":o.Apple,"๐Ÿ’":o.Cherry,"๐Ÿ‡":o.Grape,"๐ŸŒ":o.Banana,"๐Ÿ˜Š":o.Smile,"๐Ÿ˜ข":o.Frown,"๐Ÿ˜":o.Meh,"๐Ÿ˜ ":o.Angry,"๐Ÿ˜ฒ":o.Meh,"โญ•":o.Circle,"โฌœ":o.Square,"๐Ÿ”บ":o.Triangle,"๐Ÿ’Ž":o.Diamond,"โ„น๏ธ":o.Info,"โš ๏ธ":o.AlertTriangle,"๐Ÿ›ก๏ธ":o.Shield,"โ“":o.HelpCircle,"๐Ÿ”’":o.Lock,"๐Ÿ”“":o.Unlock,"๐Ÿ”‘":o.Key,"๐Ÿ›ก๏ธ":o.Shield,"๐Ÿ’พ":o.Database,"๐Ÿ–ฅ๏ธ":o.Server,"๐Ÿ“ถ":o.Wifi,"๐Ÿ“":o.MapPin,"๐Ÿ—บ๏ธ":o.Map,"๐Ÿงญ":o.Compass,"๐Ÿงญ":o.Navigation,"๐ŸŒ":o.Globe,"๐Ÿข":o.Building,"โฐ":o.Timer,"โฑ๏ธ":o.TimerIcon,"โณ":o.Hourglass,"๐Ÿ”ค":o.Type,"๐Ÿ“":o.Edit,"๐Ÿ“‹":o.List,"๐Ÿ”ข":o.ListOrdered,"๐Ÿ’ฌ":o.Quote,"๐Ÿ’ป":o.Code,"๐Ÿ›’":o.ShoppingCart,"๐Ÿ›๏ธ":o.ShoppingBag,"๐Ÿ’ณ":o.CreditCard,"๐Ÿ’ฐ":o.DollarSign,"๐Ÿ“ˆ":o.TrendingUp,"๐Ÿ“‰":o.TrendingDown,"๐Ÿš—":o.Car,"๐Ÿšฒ":o.Bike,"โœˆ๏ธ":o.Plane,"๐Ÿš†":o.Train,"๐Ÿšข":o.Ship,"๐Ÿš€":o.Rocket,"๐Ÿšš":o.Truck,"๐Ÿ’“":o.Activity,"๐Ÿ’Š":o.Pill,"๐Ÿฉบ":o.Stethoscope,"โž•":o.Cross,"๐ŸŽ“":o.GraduationCap,"โœ๏ธ":o.PenTool,"๐Ÿ–๏ธ":o.Highlighter,"๐Ÿงฎ":o.Calculator,"โš”๏ธ":o.Sword,"๐Ÿ—ก๏ธ":o.Swords,"๐Ÿน":o.BowArrow,"๐ŸŽฏ":o.Target,"๐Ÿ“œ":o.Scroll,"โœจ":o.Sparkle,"โš€":o.Dice1,"โš":o.Dice2,"โš‚":o.Dice3,"โšƒ":o.Dice4,"โš„":o.Dice5,"โš…":o.Dice6,"๐Ÿ”ง":o.Settings,"๐Ÿ”จ":o.Settings,"๐Ÿ“Š":o.TrendingUp,"๐Ÿ“ˆ":o.TrendingUp,"๐Ÿ“‰":o.TrendingDown,"๐Ÿ””":o.Bell,"๐Ÿ”•":o.Bell,"๐Ÿ’ก":o.Info,"๐ŸŽจ":o.Edit,"๐ŸŽญ":o.User,"๐ŸŽช":o.Star,"๐Ÿ”Œ":o.Plug,"๐Ÿ—„๏ธ":o.DatabaseIcon,"๐Ÿ“ฆ":o.Package,"๐Ÿ‘๏ธ":o.EyeIcon,"๐Ÿ“…":o.Calendar,"๐Ÿ“‹":o.ClipboardIcon,"โ“":o.CircleQuestionMarkIcon,"๐Ÿง‘":o.Smile,"๐Ÿ‘จโ€๐Ÿ’ป":o.Notebook,"๐Ÿ”":o.Lock,"๐Ÿšซ":o.Ban,"๏ฟฝ":o.BadgeQuestionMark,์ง‘:o.Home,์‚ฌ๋žŒ:o.User,ํ•˜ํŠธ:o.Heart,๋ณ„:o.Star,๊ฒ€์ƒ‰:o.Search,๋ฉ”์‹œ์ง€:o.MessageCircle,์„ค์ •:o.Settings,๋ฉ”๋‰ด:o.Menu,๋‹ซ๊ธฐ:o.X}}}};function k(s,p,n,m,f,h){return h.iconComponent?(r.openBlock(),r.createBlock(r.resolveDynamicComponent(h.iconComponent),r.mergeProps({key:0,size:n.size,fill:n.fill,color:n.color,"stroke-width":n.strokeWidth},s.$attrs,{class:n.iconClass}),null,16,["size","fill","color","stroke-width","class"])):n.showFallback?(r.openBlock(),r.createElementBlock("span",{key:1,class:r.normalizeClass(n.fallbackClass),style:r.normalizeStyle({fontSize:n.size+"px"})},r.toDisplayString(n.emoji),7)):r.createCommentVNode("",!0)}const C=g(S,[["render",k],["__scopeId","data-v-a28618da"]]),T={install:s=>{s.component("EmojiToIcon",C)},EmojiToIcon:C};a.EmojiToIcon=C,a.default=T,Object.defineProperties(a,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "vue-emoji-to-icon",
3
+ "version": "1.0.0",
4
+ "description": "Universal emoji to Lucide icon converter for Vue 3",
5
+ "type": "module",
6
+ "main": "./dist/vue-emoji-to-icon.umd.js",
7
+ "module": "./dist/vue-emoji-to-icon.es.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/vue-emoji-to-icon.es.js",
12
+ "require": "./dist/vue-emoji-to-icon.umd.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "keywords": [
21
+ "vue",
22
+ "vue3",
23
+ "emoji",
24
+ "icon",
25
+ "lucide",
26
+ "lucide-vue-next",
27
+ "converter",
28
+ "component",
29
+ "emoji-to-icon",
30
+ "icon-converter"
31
+ ],
32
+ "author": "ohohOD",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/ohohOD/commu.git"
37
+ },
38
+ "peerDependencies": {
39
+ "vue": "^3.3.0"
40
+ },
41
+ "dependencies": {
42
+ "lucide-vue-next": "^0.548.0"
43
+ },
44
+ "devDependencies": {
45
+ "@vitejs/plugin-vue": "^5.0.0",
46
+ "vite": "^5.0.0",
47
+ "vite-plugin-dts": "^3.6.4",
48
+ "vue": "^3.3.11"
49
+ },
50
+ "scripts": {
51
+ "build": "vite build",
52
+ "prepublishOnly": "npm run build"
53
+ }
54
+ }