@nice2dev/icons 1.0.0 → 1.0.3

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.
Files changed (152) hide show
  1. package/CHANGELOG.md +169 -7
  2. package/README.md +247 -2
  3. package/bin/ntd-icons.mjs +732 -0
  4. package/dist/cjs/NtdIconBadge.js +375 -0
  5. package/dist/cjs/NtdIconBadge.js.map +1 -0
  6. package/dist/cjs/NtdIconMorph.js +386 -0
  7. package/dist/cjs/NtdIconMorph.js.map +1 -0
  8. package/dist/cjs/NtdStateMorph.js +177 -0
  9. package/dist/cjs/NtdStateMorph.js.map +1 -0
  10. package/dist/cjs/createIcon.js +51 -4
  11. package/dist/cjs/createIcon.js.map +1 -1
  12. package/dist/cjs/figmaSync.js +308 -0
  13. package/dist/cjs/figmaSync.js.map +1 -0
  14. package/dist/cjs/iconAnalytics.js +189 -0
  15. package/dist/cjs/iconAnalytics.js.map +1 -0
  16. package/dist/cjs/iconMetadata.js +523 -0
  17. package/dist/cjs/iconMetadata.js.map +1 -0
  18. package/dist/cjs/iconStyles.js +597 -0
  19. package/dist/cjs/iconStyles.js.map +1 -0
  20. package/dist/cjs/icons/accessibility.js +168 -0
  21. package/dist/cjs/icons/accessibility.js.map +1 -0
  22. package/dist/cjs/icons/ai.js +191 -0
  23. package/dist/cjs/icons/ai.js.map +1 -0
  24. package/dist/cjs/icons/brand.js +70 -0
  25. package/dist/cjs/icons/brand.js.map +1 -1
  26. package/dist/cjs/icons/education.js +212 -0
  27. package/dist/cjs/icons/education.js.map +1 -0
  28. package/dist/cjs/icons/food.js +198 -0
  29. package/dist/cjs/icons/food.js.map +1 -0
  30. package/dist/cjs/icons/gaming.js +191 -0
  31. package/dist/cjs/icons/gaming.js.map +1 -0
  32. package/dist/cjs/icons/index.js +520 -0
  33. package/dist/cjs/icons/index.js.map +1 -0
  34. package/dist/cjs/icons/legal.js +168 -0
  35. package/dist/cjs/icons/legal.js.map +1 -0
  36. package/dist/cjs/icons/realestate.js +212 -0
  37. package/dist/cjs/icons/realestate.js.map +1 -0
  38. package/dist/cjs/icons/science.js +201 -0
  39. package/dist/cjs/icons/science.js.map +1 -0
  40. package/dist/cjs/icons/sports.js +176 -0
  41. package/dist/cjs/icons/sports.js.map +1 -0
  42. package/dist/cjs/icons/sustainability.js +193 -0
  43. package/dist/cjs/icons/sustainability.js.map +1 -0
  44. package/dist/cjs/icons/travel.js +184 -0
  45. package/dist/cjs/icons/travel.js.map +1 -0
  46. package/dist/cjs/index.js +265 -2
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/lottieIntegration.js +286 -0
  49. package/dist/cjs/lottieIntegration.js.map +1 -0
  50. package/dist/cjs/nicetodev-icons.css +1 -1
  51. package/dist/cjs/particleEffects.js +259 -0
  52. package/dist/cjs/particleEffects.js.map +1 -0
  53. package/dist/cjs/resolver.js +224 -0
  54. package/dist/cjs/resolver.js.map +1 -0
  55. package/dist/cjs/tailwind-plugin.js +340 -0
  56. package/dist/cjs/tailwind-plugin.js.map +1 -0
  57. package/dist/cjs/types.js +38 -0
  58. package/dist/cjs/types.js.map +1 -1
  59. package/dist/cjs/variantProps.js +78 -0
  60. package/dist/cjs/variantProps.js.map +1 -0
  61. package/dist/esm/NtdIconBadge.js +370 -0
  62. package/dist/esm/NtdIconBadge.js.map +1 -0
  63. package/dist/esm/NtdIconMorph.js +381 -0
  64. package/dist/esm/NtdIconMorph.js.map +1 -0
  65. package/dist/esm/NtdStateMorph.js +174 -0
  66. package/dist/esm/NtdStateMorph.js.map +1 -0
  67. package/dist/esm/createIcon.js +53 -6
  68. package/dist/esm/createIcon.js.map +1 -1
  69. package/dist/esm/figmaSync.js +304 -0
  70. package/dist/esm/figmaSync.js.map +1 -0
  71. package/dist/esm/iconAnalytics.js +185 -0
  72. package/dist/esm/iconAnalytics.js.map +1 -0
  73. package/dist/esm/iconMetadata.js +510 -0
  74. package/dist/esm/iconMetadata.js.map +1 -0
  75. package/dist/esm/iconStyles.js +585 -0
  76. package/dist/esm/iconStyles.js.map +1 -0
  77. package/dist/esm/icons/accessibility.js +153 -0
  78. package/dist/esm/icons/accessibility.js.map +1 -0
  79. package/dist/esm/icons/ai.js +174 -0
  80. package/dist/esm/icons/ai.js.map +1 -0
  81. package/dist/esm/icons/brand.js +67 -1
  82. package/dist/esm/icons/brand.js.map +1 -1
  83. package/dist/esm/icons/education.js +193 -0
  84. package/dist/esm/icons/education.js.map +1 -0
  85. package/dist/esm/icons/food.js +180 -0
  86. package/dist/esm/icons/food.js.map +1 -0
  87. package/dist/esm/icons/gaming.js +174 -0
  88. package/dist/esm/icons/gaming.js.map +1 -0
  89. package/dist/esm/icons/index.js +31 -0
  90. package/dist/esm/icons/index.js.map +1 -0
  91. package/dist/esm/icons/legal.js +153 -0
  92. package/dist/esm/icons/legal.js.map +1 -0
  93. package/dist/esm/icons/realestate.js +193 -0
  94. package/dist/esm/icons/realestate.js.map +1 -0
  95. package/dist/esm/icons/science.js +183 -0
  96. package/dist/esm/icons/science.js.map +1 -0
  97. package/dist/esm/icons/sports.js +160 -0
  98. package/dist/esm/icons/sports.js.map +1 -0
  99. package/dist/esm/icons/sustainability.js +176 -0
  100. package/dist/esm/icons/sustainability.js.map +1 -0
  101. package/dist/esm/icons/travel.js +167 -0
  102. package/dist/esm/icons/travel.js.map +1 -0
  103. package/dist/esm/index.js +27 -5
  104. package/dist/esm/index.js.map +1 -1
  105. package/dist/esm/lottieIntegration.js +282 -0
  106. package/dist/esm/lottieIntegration.js.map +1 -0
  107. package/dist/esm/nicetodev-icons.css +1 -1
  108. package/dist/esm/particleEffects.js +257 -0
  109. package/dist/esm/particleEffects.js.map +1 -0
  110. package/dist/esm/resolver.js +221 -0
  111. package/dist/esm/resolver.js.map +1 -0
  112. package/dist/esm/tailwind-plugin.js +337 -0
  113. package/dist/esm/tailwind-plugin.js.map +1 -0
  114. package/dist/esm/types.js +37 -1
  115. package/dist/esm/types.js.map +1 -1
  116. package/dist/esm/variantProps.js +68 -0
  117. package/dist/esm/variantProps.js.map +1 -0
  118. package/dist/types/NtdIconBadge.d.ts +209 -0
  119. package/dist/types/NtdIconMorph.d.ts +183 -0
  120. package/dist/types/NtdStateMorph.d.ts +100 -0
  121. package/dist/types/client.d.ts +27 -0
  122. package/dist/types/design-tokens.d.ts +281 -0
  123. package/dist/types/figmaSync.d.ts +135 -0
  124. package/dist/types/headless-ui.d.ts +462 -0
  125. package/dist/types/iconAnalytics.d.ts +131 -0
  126. package/dist/types/iconMetadata.d.ts +123 -0
  127. package/dist/types/iconStyles.d.ts +104 -0
  128. package/dist/types/icons/accessibility.d.ts +39 -0
  129. package/dist/types/icons/ai.d.ts +43 -0
  130. package/dist/types/icons/brand.d.ts +4 -0
  131. package/dist/types/icons/education.d.ts +47 -0
  132. package/dist/types/icons/food.d.ts +45 -0
  133. package/dist/types/icons/gaming.d.ts +42 -0
  134. package/dist/types/icons/index.d.ts +12 -1
  135. package/dist/types/icons/legal.d.ts +39 -0
  136. package/dist/types/icons/realestate.d.ts +47 -0
  137. package/dist/types/icons/science.d.ts +45 -0
  138. package/dist/types/icons/sports.d.ts +41 -0
  139. package/dist/types/icons/sustainability.d.ts +43 -0
  140. package/dist/types/icons/travel.d.ts +43 -0
  141. package/dist/types/index.d.ts +28 -6
  142. package/dist/types/lottieIntegration.d.ts +173 -0
  143. package/dist/types/micro-interactions.d.ts +146 -0
  144. package/dist/types/microInteractions.d.ts +174 -0
  145. package/dist/types/particleEffects.d.ts +69 -0
  146. package/dist/types/resolver.d.ts +58 -0
  147. package/dist/types/rsc.d.ts +159 -0
  148. package/dist/types/tailwind-plugin.d.ts +100 -0
  149. package/dist/types/types.d.ts +100 -0
  150. package/dist/types/utilities.d.ts +221 -0
  151. package/dist/types/variantProps.d.ts +122 -0
  152. package/package.json +58 -5
@@ -0,0 +1,510 @@
1
+ /**
2
+ * @file iconMetadata.ts
3
+ * @description Icon metadata and search system
4
+ *
5
+ * Features:
6
+ * - Tags for each icon (keywords, aliases)
7
+ * - Fuzzy search with weighted ranking
8
+ * - Category metadata
9
+ * - Icon discovery API
10
+ *
11
+ * @version 1.0.0
12
+ * @since 2026-03
13
+ * @license MIT
14
+ */
15
+ /* ────────────────────────────────────────────────────────────────────────────
16
+ CATEGORY METADATA
17
+ ───────────────────────────────────────────────────────────────────────────── */
18
+ const CATEGORY_INFO = {
19
+ actions: {
20
+ label: 'Actions',
21
+ description: 'Interactive action icons like play, pause, edit, delete',
22
+ color: '#3b82f6',
23
+ },
24
+ navigation: {
25
+ label: 'Navigation',
26
+ description: 'Arrows, chevrons, and directional icons',
27
+ color: '#8b5cf6',
28
+ },
29
+ ui: {
30
+ label: 'UI Elements',
31
+ description: 'Common interface elements and controls',
32
+ color: '#06b6d4',
33
+ },
34
+ media: {
35
+ label: 'Media',
36
+ description: 'Audio, video, and image related icons',
37
+ color: '#ec4899',
38
+ },
39
+ files: {
40
+ label: 'Files & Documents',
41
+ description: 'File types, folders, and document icons',
42
+ color: '#f59e0b',
43
+ },
44
+ social: {
45
+ label: 'Social',
46
+ description: 'Social media and communication icons',
47
+ color: '#10b981',
48
+ },
49
+ brand: {
50
+ label: 'Brands',
51
+ description: 'Company and service logos',
52
+ color: '#6366f1',
53
+ },
54
+ business: {
55
+ label: 'Business',
56
+ description: 'Office, work, and professional icons',
57
+ color: '#64748b',
58
+ },
59
+ weather: {
60
+ label: 'Weather',
61
+ description: 'Weather conditions and climate icons',
62
+ color: '#0ea5e9',
63
+ },
64
+ health: {
65
+ label: 'Health',
66
+ description: 'Medical and wellness icons',
67
+ color: '#ef4444',
68
+ },
69
+ shapes: {
70
+ label: 'Shapes',
71
+ description: 'Geometric shapes and patterns',
72
+ color: '#a855f7',
73
+ },
74
+ ecommerce: {
75
+ label: 'E-Commerce',
76
+ description: 'Shopping, cart, and retail icons',
77
+ color: '#f97316',
78
+ },
79
+ fintech: {
80
+ label: 'Fintech',
81
+ description: 'Crypto, blockchain, and financial technology',
82
+ color: '#eab308',
83
+ },
84
+ saas: {
85
+ label: 'SaaS',
86
+ description: 'Software as a service and analytics icons',
87
+ color: '#14b8a6',
88
+ },
89
+ smarthome: {
90
+ label: 'Smart Home',
91
+ description: 'IoT and home automation icons',
92
+ color: '#22c55e',
93
+ },
94
+ devtech: {
95
+ label: 'DevTech',
96
+ description: 'Developer tools and technology logos',
97
+ color: '#f43f5e',
98
+ },
99
+ fun: {
100
+ label: 'Fun',
101
+ description: 'Emoji, entertainment, and playful icons',
102
+ color: '#fbbf24',
103
+ },
104
+ gaming: {
105
+ label: 'Gaming',
106
+ description: 'Video games, esports, and entertainment',
107
+ color: '#8b5cf6',
108
+ },
109
+ ai: {
110
+ label: 'AI & ML',
111
+ description: 'Artificial intelligence and machine learning',
112
+ color: '#06b6d4',
113
+ },
114
+ sustainability: {
115
+ label: 'Sustainability',
116
+ description: 'Eco-friendly and environmental icons',
117
+ color: '#22c55e',
118
+ },
119
+ accessibility: {
120
+ label: 'Accessibility',
121
+ description: 'Accessibility features and inclusive design',
122
+ color: '#3b82f6',
123
+ },
124
+ legal: {
125
+ label: 'Legal',
126
+ description: 'Legal, compliance, and regulatory icons',
127
+ color: '#64748b',
128
+ },
129
+ };
130
+ /* ────────────────────────────────────────────────────────────────────────────
131
+ ICON METADATA REGISTRY
132
+ ───────────────────────────────────────────────────────────────────────────── */
133
+ // Registry for all icon metadata
134
+ const iconRegistry = new Map();
135
+ /**
136
+ * Register an icon with its metadata.
137
+ * Called during icon module initialization.
138
+ */
139
+ function registerIcon(name, icon, metadata) {
140
+ iconRegistry.set(name, {
141
+ icon,
142
+ metadata: { ...metadata, name },
143
+ });
144
+ }
145
+ /**
146
+ * Get icon by name.
147
+ */
148
+ function getIcon(name) {
149
+ var _a;
150
+ return (_a = iconRegistry.get(name)) === null || _a === void 0 ? void 0 : _a.icon;
151
+ }
152
+ /**
153
+ * Get icon metadata by name.
154
+ */
155
+ function getIconMetadata(name) {
156
+ var _a;
157
+ return (_a = iconRegistry.get(name)) === null || _a === void 0 ? void 0 : _a.metadata;
158
+ }
159
+ /**
160
+ * Get all registered icons.
161
+ */
162
+ function getAllIcons() {
163
+ return new Map(iconRegistry);
164
+ }
165
+ /**
166
+ * Get icons by category.
167
+ */
168
+ function getIconsByCategory(category) {
169
+ const results = [];
170
+ iconRegistry.forEach(({ icon, metadata }, name) => {
171
+ if (metadata.category === category) {
172
+ results.push({ name, icon, metadata });
173
+ }
174
+ });
175
+ return results.sort((a, b) => a.name.localeCompare(b.name));
176
+ }
177
+ /**
178
+ * Get all categories with icon counts.
179
+ */
180
+ function getCategoryCounts() {
181
+ const counts = {};
182
+ iconRegistry.forEach(({ metadata }) => {
183
+ counts[metadata.category] = (counts[metadata.category] || 0) + 1;
184
+ });
185
+ return counts;
186
+ }
187
+ /* ────────────────────────────────────────────────────────────────────────────
188
+ SEARCH ENGINE
189
+ ───────────────────────────────────────────────────────────────────────────── */
190
+ /**
191
+ * Calculate fuzzy match score between query and target string.
192
+ * Returns 0-1 score, higher is better match.
193
+ */
194
+ function fuzzyMatch(query, target) {
195
+ const q = query.toLowerCase();
196
+ const t = target.toLowerCase();
197
+ // Exact match
198
+ if (t === q) {
199
+ return { score: 1, indices: [[0, t.length - 1]] };
200
+ }
201
+ // Starts with query
202
+ if (t.startsWith(q)) {
203
+ return { score: 0.9, indices: [[0, q.length - 1]] };
204
+ }
205
+ // Contains query
206
+ const idx = t.indexOf(q);
207
+ if (idx !== -1) {
208
+ return { score: 0.7, indices: [[idx, idx + q.length - 1]] };
209
+ }
210
+ // Fuzzy character matching
211
+ let qIdx = 0;
212
+ let score = 0;
213
+ const indices = [];
214
+ let matchStart = -1;
215
+ for (let tIdx = 0; tIdx < t.length && qIdx < q.length; tIdx++) {
216
+ if (t[tIdx] === q[qIdx]) {
217
+ if (matchStart === -1)
218
+ matchStart = tIdx;
219
+ qIdx++;
220
+ score += 1;
221
+ // Bonus for consecutive matches
222
+ if (tIdx > 0 && matchStart === tIdx - 1) {
223
+ score += 0.5;
224
+ }
225
+ // Bonus for word boundary match
226
+ if (tIdx === 0 || /[\s\-_]/.test(t[tIdx - 1])) {
227
+ score += 0.3;
228
+ }
229
+ }
230
+ else if (matchStart !== -1) {
231
+ indices.push([matchStart, tIdx - 1]);
232
+ matchStart = -1;
233
+ }
234
+ }
235
+ if (matchStart !== -1) {
236
+ indices.push([matchStart, q.length - 1]);
237
+ }
238
+ // All characters must be matched
239
+ if (qIdx < q.length) {
240
+ return { score: 0, indices: [] };
241
+ }
242
+ // Normalize score
243
+ const normalizedScore = Math.min(score / (q.length * 2), 0.6);
244
+ return { score: normalizedScore, indices };
245
+ }
246
+ /**
247
+ * Search icons by query string.
248
+ *
249
+ * @example
250
+ * ```ts
251
+ * const results = searchIcons('home', { limit: 10 });
252
+ * const filteredResults = searchIcons('cart', { categories: ['ecommerce'] });
253
+ * ```
254
+ */
255
+ function searchIcons(query, options = {}) {
256
+ const { limit = 50, categories, threshold = 0.3, fuzzy = true, sortBy = 'score', } = options;
257
+ if (!query.trim()) {
258
+ return [];
259
+ }
260
+ const q = query.toLowerCase().trim();
261
+ const results = [];
262
+ iconRegistry.forEach(({ icon, metadata }, name) => {
263
+ // Category filter
264
+ if (categories && categories.length > 0 && !categories.includes(metadata.category)) {
265
+ return;
266
+ }
267
+ let bestScore = 0;
268
+ const matches = [];
269
+ // Match name (highest weight)
270
+ const nameMatch = fuzzyMatch(q, name);
271
+ if (nameMatch.score > 0) {
272
+ bestScore = Math.max(bestScore, nameMatch.score * 1.0);
273
+ matches.push({ field: 'name', value: name, indices: nameMatch.indices });
274
+ }
275
+ // Match tags (high weight)
276
+ for (const tag of metadata.tags) {
277
+ const tagMatch = fuzzyMatch(q, tag);
278
+ if (tagMatch.score > 0) {
279
+ bestScore = Math.max(bestScore, tagMatch.score * 0.9);
280
+ matches.push({ field: 'tags', value: tag, indices: tagMatch.indices });
281
+ }
282
+ }
283
+ // Match aliases (medium weight)
284
+ if (metadata.aliases) {
285
+ for (const alias of metadata.aliases) {
286
+ const aliasMatch = fuzzyMatch(q, alias);
287
+ if (aliasMatch.score > 0) {
288
+ bestScore = Math.max(bestScore, aliasMatch.score * 0.85);
289
+ matches.push({ field: 'aliases', value: alias, indices: aliasMatch.indices });
290
+ }
291
+ }
292
+ }
293
+ // Match category (low weight)
294
+ const categoryMatch = fuzzyMatch(q, metadata.category);
295
+ if (categoryMatch.score > 0) {
296
+ bestScore = Math.max(bestScore, categoryMatch.score * 0.5);
297
+ matches.push({ field: 'category', value: metadata.category, indices: categoryMatch.indices });
298
+ }
299
+ // Match description (lowest weight)
300
+ if (metadata.description) {
301
+ const descMatch = fuzzyMatch(q, metadata.description);
302
+ if (descMatch.score > 0) {
303
+ bestScore = Math.max(bestScore, descMatch.score * 0.4);
304
+ matches.push({ field: 'description', value: metadata.description, indices: descMatch.indices });
305
+ }
306
+ }
307
+ if (bestScore >= threshold) {
308
+ results.push({
309
+ icon,
310
+ name,
311
+ metadata,
312
+ score: bestScore,
313
+ matches,
314
+ });
315
+ }
316
+ });
317
+ // Sort results
318
+ results.sort((a, b) => {
319
+ if (sortBy === 'score') {
320
+ return b.score - a.score;
321
+ }
322
+ else if (sortBy === 'name') {
323
+ return a.name.localeCompare(b.name);
324
+ }
325
+ else {
326
+ return a.metadata.category.localeCompare(b.metadata.category);
327
+ }
328
+ });
329
+ return results.slice(0, limit);
330
+ }
331
+ /**
332
+ * Get suggestions for incomplete search queries.
333
+ */
334
+ function getSearchSuggestions(partialQuery, limit = 5) {
335
+ if (!partialQuery.trim()) {
336
+ // Return popular tags
337
+ return ['home', 'user', 'settings', 'search', 'heart'];
338
+ }
339
+ const q = partialQuery.toLowerCase().trim();
340
+ const suggestions = new Set();
341
+ iconRegistry.forEach(({ metadata }, name) => {
342
+ // Suggest matching icon names
343
+ if (name.toLowerCase().startsWith(q)) {
344
+ suggestions.add(name);
345
+ }
346
+ // Suggest matching tags
347
+ for (const tag of metadata.tags) {
348
+ if (tag.toLowerCase().startsWith(q)) {
349
+ suggestions.add(tag);
350
+ }
351
+ }
352
+ });
353
+ return Array.from(suggestions).slice(0, limit);
354
+ }
355
+ /* ────────────────────────────────────────────────────────────────────────────
356
+ PRE-DEFINED ICON METADATA
357
+ This will be populated when icons are imported
358
+ ───────────────────────────────────────────────────────────────────────────── */
359
+ // Example metadata definitions (actual ones will be in icon files)
360
+ const UI_ICON_METADATA = {
361
+ NtdHome: {
362
+ category: 'ui',
363
+ tags: ['home', 'house', 'main', 'start', 'dashboard'],
364
+ aliases: ['house', 'residence'],
365
+ description: 'Home or main page icon',
366
+ useCases: ['navigation', 'home button', 'main page link'],
367
+ related: ['NtdBuilding', 'NtdDoor'],
368
+ },
369
+ NtdUser: {
370
+ category: 'ui',
371
+ tags: ['user', 'person', 'profile', 'account', 'avatar'],
372
+ aliases: ['person', 'profile', 'account'],
373
+ description: 'Single user or profile icon',
374
+ useCases: ['user profile', 'account settings', 'avatar placeholder'],
375
+ related: ['NtdUsers', 'NtdUserPlus', 'NtdUserMinus'],
376
+ },
377
+ NtdUsers: {
378
+ category: 'ui',
379
+ tags: ['users', 'people', 'group', 'team', 'multiple'],
380
+ aliases: ['people', 'group', 'team'],
381
+ description: 'Multiple users or team icon',
382
+ useCases: ['team management', 'group selection', 'participants'],
383
+ related: ['NtdUser', 'NtdUserPlus'],
384
+ },
385
+ NtdSettings: {
386
+ category: 'ui',
387
+ tags: ['settings', 'gear', 'cog', 'preferences', 'config', 'options'],
388
+ aliases: ['gear', 'cog', 'preferences', 'configuration'],
389
+ description: 'Settings or configuration icon',
390
+ useCases: ['settings menu', 'preferences', 'system configuration'],
391
+ related: ['NtdSliders', 'NtdTool'],
392
+ },
393
+ NtdSearch: {
394
+ category: 'ui',
395
+ tags: ['search', 'find', 'magnifier', 'lookup', 'query'],
396
+ aliases: ['find', 'magnifying glass', 'lookup'],
397
+ description: 'Search or find icon',
398
+ useCases: ['search bar', 'find function', 'global search'],
399
+ related: ['NtdFilter', 'NtdZoomIn'],
400
+ },
401
+ NtdHeart: {
402
+ category: 'ui',
403
+ tags: ['heart', 'love', 'favorite', 'like', 'wishlist'],
404
+ aliases: ['love', 'favorite', 'like'],
405
+ description: 'Heart or favorite icon',
406
+ useCases: ['like button', 'favorites', 'wishlist', 'health'],
407
+ related: ['NtdHeartBroken', 'NtdStar', 'NtdThumbUp'],
408
+ },
409
+ NtdStar: {
410
+ category: 'ui',
411
+ tags: ['star', 'favorite', 'rating', 'bookmark', 'important'],
412
+ aliases: ['favorite', 'rating', 'bookmark'],
413
+ description: 'Star icon for ratings or favorites',
414
+ useCases: ['rating system', 'favorites', 'bookmarks', 'featured'],
415
+ related: ['NtdHeart', 'NtdBookmark'],
416
+ },
417
+ NtdBell: {
418
+ category: 'ui',
419
+ tags: ['bell', 'notification', 'alert', 'alarm', 'ring'],
420
+ aliases: ['notification', 'alert', 'alarm'],
421
+ description: 'Bell for notifications or alerts',
422
+ useCases: ['notifications', 'alerts', 'reminders'],
423
+ related: ['NtdBellOff', 'NtdAlarm'],
424
+ },
425
+ };
426
+ const ACTION_ICON_METADATA = {
427
+ NtdPlay: {
428
+ category: 'actions',
429
+ tags: ['play', 'start', 'begin', 'media', 'video', 'audio'],
430
+ aliases: ['start', 'begin'],
431
+ description: 'Play media or start action',
432
+ useCases: ['media player', 'start button', 'begin process'],
433
+ related: ['NtdPause', 'NtdStop'],
434
+ },
435
+ NtdPause: {
436
+ category: 'actions',
437
+ tags: ['pause', 'stop', 'hold', 'media', 'wait'],
438
+ aliases: ['hold', 'wait'],
439
+ description: 'Pause media or action',
440
+ useCases: ['media player', 'pause button'],
441
+ related: ['NtdPlay', 'NtdStop'],
442
+ },
443
+ NtdPlus: {
444
+ category: 'actions',
445
+ tags: ['plus', 'add', 'new', 'create', 'increase'],
446
+ aliases: ['add', 'new', 'create'],
447
+ description: 'Add or increase',
448
+ useCases: ['add item', 'create new', 'increase value'],
449
+ related: ['NtdMinus', 'NtdX'],
450
+ },
451
+ NtdMinus: {
452
+ category: 'actions',
453
+ tags: ['minus', 'remove', 'delete', 'decrease', 'subtract'],
454
+ aliases: ['remove', 'subtract'],
455
+ description: 'Remove or decrease',
456
+ useCases: ['remove item', 'decrease value'],
457
+ related: ['NtdPlus', 'NtdTrash'],
458
+ },
459
+ NtdCheck: {
460
+ category: 'actions',
461
+ tags: ['check', 'done', 'complete', 'success', 'confirm', 'tick'],
462
+ aliases: ['done', 'complete', 'tick', 'confirm'],
463
+ description: 'Checkmark for completion or confirmation',
464
+ useCases: ['confirm action', 'task complete', 'selection'],
465
+ related: ['NtdX', 'NtdCheckCircle'],
466
+ },
467
+ NtdX: {
468
+ category: 'actions',
469
+ tags: ['x', 'close', 'cancel', 'remove', 'delete', 'cross'],
470
+ aliases: ['close', 'cancel', 'cross'],
471
+ description: 'Close or cancel action',
472
+ useCases: ['close modal', 'cancel action', 'remove item'],
473
+ related: ['NtdCheck', 'NtdTrash'],
474
+ },
475
+ NtdMenu: {
476
+ category: 'actions',
477
+ tags: ['menu', 'hamburger', 'navigation', 'sidebar', 'drawer'],
478
+ aliases: ['hamburger', 'nav', 'drawer'],
479
+ description: 'Hamburger menu icon',
480
+ useCases: ['mobile menu', 'sidebar toggle', 'navigation'],
481
+ related: ['NtdClose', 'NtdMoreVertical'],
482
+ },
483
+ NtdClose: {
484
+ category: 'actions',
485
+ tags: ['close', 'x', 'exit', 'dismiss', 'cancel'],
486
+ aliases: ['exit', 'dismiss'],
487
+ description: 'Close or exit',
488
+ useCases: ['close modal', 'dismiss notification', 'exit view'],
489
+ related: ['NtdMenu', 'NtdX'],
490
+ },
491
+ };
492
+ /* ────────────────────────────────────────────────────────────────────────────
493
+ INITIALIZATION
494
+ Auto-register metadata when icons are imported
495
+ ───────────────────────────────────────────────────────────────────────────── */
496
+ /**
497
+ * Initialize metadata for a set of icons.
498
+ * Called in icon module files.
499
+ */
500
+ function initializeIconMetadata(icons, metadata) {
501
+ Object.entries(icons).forEach(([name, icon]) => {
502
+ const meta = metadata[name];
503
+ if (meta) {
504
+ registerIcon(name, icon, meta);
505
+ }
506
+ });
507
+ }
508
+
509
+ export { ACTION_ICON_METADATA, CATEGORY_INFO, UI_ICON_METADATA, getAllIcons, getCategoryCounts, getIcon, getIconMetadata, getIconsByCategory, getSearchSuggestions, initializeIconMetadata, registerIcon, searchIcons };
510
+ //# sourceMappingURL=iconMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconMetadata.js","sources":["../../src/iconMetadata.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}