@nice2dev/icons 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.
Files changed (132) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/LICENSE +21 -0
  3. package/README.md +581 -0
  4. package/dist/cjs/NiceIconPicker.js +387 -0
  5. package/dist/cjs/NiceIconPicker.js.map +1 -0
  6. package/dist/cjs/NiceVectorEditor.js +675 -0
  7. package/dist/cjs/NiceVectorEditor.js.map +1 -0
  8. package/dist/cjs/animationControls.js +690 -0
  9. package/dist/cjs/animationControls.js.map +1 -0
  10. package/dist/cjs/createIcon.js +142 -0
  11. package/dist/cjs/createIcon.js.map +1 -0
  12. package/dist/cjs/figmaExport.js +288 -0
  13. package/dist/cjs/figmaExport.js.map +1 -0
  14. package/dist/cjs/icons/actions.js +257 -0
  15. package/dist/cjs/icons/actions.js.map +1 -0
  16. package/dist/cjs/icons/brand.js +128 -0
  17. package/dist/cjs/icons/brand.js.map +1 -0
  18. package/dist/cjs/icons/business.js +228 -0
  19. package/dist/cjs/icons/business.js.map +1 -0
  20. package/dist/cjs/icons/devtech.js +374 -0
  21. package/dist/cjs/icons/devtech.js.map +1 -0
  22. package/dist/cjs/icons/ecommerce.js +171 -0
  23. package/dist/cjs/icons/ecommerce.js.map +1 -0
  24. package/dist/cjs/icons/files.js +286 -0
  25. package/dist/cjs/icons/files.js.map +1 -0
  26. package/dist/cjs/icons/fintech.js +151 -0
  27. package/dist/cjs/icons/fintech.js.map +1 -0
  28. package/dist/cjs/icons/fun.js +124 -0
  29. package/dist/cjs/icons/fun.js.map +1 -0
  30. package/dist/cjs/icons/health.js +132 -0
  31. package/dist/cjs/icons/health.js.map +1 -0
  32. package/dist/cjs/icons/media.js +219 -0
  33. package/dist/cjs/icons/media.js.map +1 -0
  34. package/dist/cjs/icons/navigation.js +147 -0
  35. package/dist/cjs/icons/navigation.js.map +1 -0
  36. package/dist/cjs/icons/saas.js +141 -0
  37. package/dist/cjs/icons/saas.js.map +1 -0
  38. package/dist/cjs/icons/shapes.js +205 -0
  39. package/dist/cjs/icons/shapes.js.map +1 -0
  40. package/dist/cjs/icons/smarthome.js +141 -0
  41. package/dist/cjs/icons/smarthome.js.map +1 -0
  42. package/dist/cjs/icons/social.js +159 -0
  43. package/dist/cjs/icons/social.js.map +1 -0
  44. package/dist/cjs/icons/ui.js +262 -0
  45. package/dist/cjs/icons/ui.js.map +1 -0
  46. package/dist/cjs/icons/weather.js +187 -0
  47. package/dist/cjs/icons/weather.js.map +1 -0
  48. package/dist/cjs/index.js +362 -0
  49. package/dist/cjs/index.js.map +1 -0
  50. package/dist/cjs/nicetodev-icons.css +1 -0
  51. package/dist/cjs/smilAnimations.js +182 -0
  52. package/dist/cjs/smilAnimations.js.map +1 -0
  53. package/dist/cjs/types.js +47 -0
  54. package/dist/cjs/types.js.map +1 -0
  55. package/dist/esm/NiceIconPicker.js +385 -0
  56. package/dist/esm/NiceIconPicker.js.map +1 -0
  57. package/dist/esm/NiceVectorEditor.js +673 -0
  58. package/dist/esm/NiceVectorEditor.js.map +1 -0
  59. package/dist/esm/animationControls.js +680 -0
  60. package/dist/esm/animationControls.js.map +1 -0
  61. package/dist/esm/createIcon.js +140 -0
  62. package/dist/esm/createIcon.js.map +1 -0
  63. package/dist/esm/figmaExport.js +279 -0
  64. package/dist/esm/figmaExport.js.map +1 -0
  65. package/dist/esm/icons/actions.js +231 -0
  66. package/dist/esm/icons/actions.js.map +1 -0
  67. package/dist/esm/icons/brand.js +124 -0
  68. package/dist/esm/icons/brand.js.map +1 -0
  69. package/dist/esm/icons/business.js +209 -0
  70. package/dist/esm/icons/business.js.map +1 -0
  71. package/dist/esm/icons/devtech.js +342 -0
  72. package/dist/esm/icons/devtech.js.map +1 -0
  73. package/dist/esm/icons/ecommerce.js +154 -0
  74. package/dist/esm/icons/ecommerce.js.map +1 -0
  75. package/dist/esm/icons/files.js +254 -0
  76. package/dist/esm/icons/files.js.map +1 -0
  77. package/dist/esm/icons/fintech.js +136 -0
  78. package/dist/esm/icons/fintech.js.map +1 -0
  79. package/dist/esm/icons/fun.js +110 -0
  80. package/dist/esm/icons/fun.js.map +1 -0
  81. package/dist/esm/icons/health.js +118 -0
  82. package/dist/esm/icons/health.js.map +1 -0
  83. package/dist/esm/icons/media.js +195 -0
  84. package/dist/esm/icons/media.js.map +1 -0
  85. package/dist/esm/icons/navigation.js +132 -0
  86. package/dist/esm/icons/navigation.js.map +1 -0
  87. package/dist/esm/icons/saas.js +127 -0
  88. package/dist/esm/icons/saas.js.map +1 -0
  89. package/dist/esm/icons/shapes.js +182 -0
  90. package/dist/esm/icons/shapes.js.map +1 -0
  91. package/dist/esm/icons/smarthome.js +127 -0
  92. package/dist/esm/icons/smarthome.js.map +1 -0
  93. package/dist/esm/icons/social.js +150 -0
  94. package/dist/esm/icons/social.js.map +1 -0
  95. package/dist/esm/icons/ui.js +233 -0
  96. package/dist/esm/icons/ui.js.map +1 -0
  97. package/dist/esm/icons/weather.js +166 -0
  98. package/dist/esm/icons/weather.js.map +1 -0
  99. package/dist/esm/index.js +25 -0
  100. package/dist/esm/index.js.map +1 -0
  101. package/dist/esm/nicetodev-icons.css +1 -0
  102. package/dist/esm/smilAnimations.js +176 -0
  103. package/dist/esm/smilAnimations.js.map +1 -0
  104. package/dist/esm/types.js +44 -0
  105. package/dist/esm/types.js.map +1 -0
  106. package/dist/types/NiceIconPicker.d.ts +149 -0
  107. package/dist/types/NiceVectorEditor.d.ts +75 -0
  108. package/dist/types/animationControls.d.ts +307 -0
  109. package/dist/types/createIcon.d.ts +76 -0
  110. package/dist/types/figmaExport.d.ts +243 -0
  111. package/dist/types/icons/actions.d.ts +25 -0
  112. package/dist/types/icons/brand.d.ts +3 -0
  113. package/dist/types/icons/business.d.ts +25 -0
  114. package/dist/types/icons/devtech.d.ts +39 -0
  115. package/dist/types/icons/ecommerce.d.ts +16 -0
  116. package/dist/types/icons/files.d.ts +31 -0
  117. package/dist/types/icons/fintech.d.ts +14 -0
  118. package/dist/types/icons/fun.d.ts +13 -0
  119. package/dist/types/icons/health.d.ts +14 -0
  120. package/dist/types/icons/index.d.ts +17 -0
  121. package/dist/types/icons/media.d.ts +23 -0
  122. package/dist/types/icons/navigation.d.ts +14 -0
  123. package/dist/types/icons/saas.d.ts +13 -0
  124. package/dist/types/icons/shapes.d.ts +22 -0
  125. package/dist/types/icons/smarthome.d.ts +13 -0
  126. package/dist/types/icons/social.d.ts +18 -0
  127. package/dist/types/icons/ui.d.ts +28 -0
  128. package/dist/types/icons/weather.d.ts +20 -0
  129. package/dist/types/index.d.ts +69 -0
  130. package/dist/types/smilAnimations.d.ts +102 -0
  131. package/dist/types/types.d.ts +179 -0
  132. package/package.json +86 -0
@@ -0,0 +1,387 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+
6
+ const MAX_HISTORY_ITEMS = 20;
7
+ /* ─── Chevron SVG ─── */
8
+ const Chevron = () => (jsxRuntime.jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntime.jsx("polyline", { points: "6 9 12 15 18 9" }) }));
9
+ /* ─── Search SVG ─── */
10
+ const SearchIcon = () => (jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntime.jsx("circle", { cx: "11", cy: "11", r: "8" }), jsxRuntime.jsx("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })] }));
11
+ /* ─── Star SVG (favorites) ─── */
12
+ const StarIcon = ({ filled }) => (jsxRuntime.jsx("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: filled ? 'currentColor' : 'none', stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntime.jsx("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) }));
13
+ /* ─── Clock SVG (history) ─── */
14
+ const ClockIcon = () => (jsxRuntime.jsxs("svg", { width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }), jsxRuntime.jsx("polyline", { points: "12 6 12 12 16 14" })] }));
15
+ /* ─── Check SVG (multi-select) ─── */
16
+ const CheckIcon = () => (jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) }));
17
+ /* ─── localStorage helpers ─── */
18
+ function loadFromStorage(key, fallback) {
19
+ if (typeof window === 'undefined')
20
+ return fallback;
21
+ try {
22
+ const stored = localStorage.getItem(key);
23
+ return stored ? JSON.parse(stored) : fallback;
24
+ }
25
+ catch (_a) {
26
+ return fallback;
27
+ }
28
+ }
29
+ function saveToStorage(key, value) {
30
+ if (typeof window === 'undefined')
31
+ return;
32
+ try {
33
+ localStorage.setItem(key, JSON.stringify(value));
34
+ }
35
+ catch (_a) {
36
+ // Storage full or disabled
37
+ }
38
+ }
39
+ /* ═══════════════════════════════════════════════════════
40
+ NiceIconPicker Component
41
+ ═══════════════════════════════════════════════════════ */
42
+ /**
43
+ * A fully-featured icon picker dropdown component.
44
+ *
45
+ * Provides a trigger button that opens a searchable, categorized icon grid.
46
+ * Supports controlled selection, keyboard navigation (Escape to close),
47
+ * click-outside dismissal, and an imperative handle for programmatic control.
48
+ *
49
+ * **Styling:** Uses CSS variables for theming (see `NiceIconPicker.css`).
50
+ * Override `--ntd-picker-bg`, `--ntd-picker-accent`, etc. on a parent element.
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * import { NiceIconPicker } from '@nicetodev/icons';
55
+ *
56
+ * function IconSelectField({ icons }) {
57
+ * const [selected, setSelected] = useState<string | null>(null);
58
+ *
59
+ * return (
60
+ * <NiceIconPicker
61
+ * icons={icons}
62
+ * value={selected}
63
+ * onChange={(name) => setSelected(name)}
64
+ * variant="solid"
65
+ * placeholder="Pick icon..."
66
+ * />
67
+ * );
68
+ * }
69
+ * ```
70
+ */
71
+ const NiceIconPicker = React.forwardRef(function NiceIconPicker({ icons, value = null, values = [], onChange, onChangeMulti, multiSelect = false, maxSelections, placeholder = 'Select icon…', variant = 'solid', gridIconSize = 'md', triggerIconSize = 'sm', categories: categoriesProp, className, disabled = false, clearable = true, virtualized = false, virtualizedItemCount = 100, showHistory = false, showFavorites = false, storageKeyPrefix = 'ntd-icon-picker', enableDragAndDrop = false, onDragStart, onDragEnd, }, ref) {
72
+ var _a;
73
+ const [isOpen, setIsOpen] = React.useState(false);
74
+ const [search, setSearch] = React.useState('');
75
+ const [activeCategory, setActiveCategory] = React.useState(null);
76
+ // Virtualization state
77
+ const [visibleRange, setVisibleRange] = React.useState({ start: 0, end: virtualizedItemCount });
78
+ const gridWrapRef = React.useRef(null);
79
+ // Favorites & History state
80
+ const favoritesKey = `${storageKeyPrefix}-favorites`;
81
+ const historyKey = `${storageKeyPrefix}-history`;
82
+ const [favorites, setFavorites] = React.useState(() => loadFromStorage(favoritesKey, []));
83
+ const [history, setHistory] = React.useState(() => loadFromStorage(historyKey, []));
84
+ // Multi-select state (internal when uncontrolled)
85
+ const [internalValues, setInternalValues] = React.useState([]);
86
+ const selectedValues = multiSelect ? (values.length > 0 ? values : internalValues) : (value ? [value] : []);
87
+ const rootRef = React.useRef(null);
88
+ const searchInputRef = React.useRef(null);
89
+ /* ─── Favorites helpers ─── */
90
+ const addFavorite = React.useCallback((name) => {
91
+ setFavorites(prev => {
92
+ if (prev.includes(name))
93
+ return prev;
94
+ const next = [...prev, name];
95
+ saveToStorage(favoritesKey, next);
96
+ return next;
97
+ });
98
+ }, [favoritesKey]);
99
+ const removeFavorite = React.useCallback((name) => {
100
+ setFavorites(prev => {
101
+ const next = prev.filter(n => n !== name);
102
+ saveToStorage(favoritesKey, next);
103
+ return next;
104
+ });
105
+ }, [favoritesKey]);
106
+ const toggleFavorite = React.useCallback((name) => {
107
+ if (favorites.includes(name)) {
108
+ removeFavorite(name);
109
+ }
110
+ else {
111
+ addFavorite(name);
112
+ }
113
+ }, [favorites, addFavorite, removeFavorite]);
114
+ const clearFavorites = React.useCallback(() => {
115
+ setFavorites([]);
116
+ saveToStorage(favoritesKey, []);
117
+ }, [favoritesKey]);
118
+ /* ─── History helpers ─── */
119
+ const addToHistory = React.useCallback((name) => {
120
+ setHistory(prev => {
121
+ const filtered = prev.filter(n => n !== name);
122
+ const next = [name, ...filtered].slice(0, MAX_HISTORY_ITEMS);
123
+ saveToStorage(historyKey, next);
124
+ return next;
125
+ });
126
+ }, [historyKey]);
127
+ const clearHistory = React.useCallback(() => {
128
+ setHistory([]);
129
+ saveToStorage(historyKey, []);
130
+ }, [historyKey]);
131
+ /* ─── Imperative handle ─── */
132
+ React.useImperativeHandle(ref, () => ({
133
+ open: () => setIsOpen(true),
134
+ close: () => setIsOpen(false),
135
+ toggle: () => setIsOpen((o) => !o),
136
+ getFavorites: () => favorites,
137
+ addFavorite,
138
+ removeFavorite,
139
+ toggleFavorite,
140
+ clearFavorites,
141
+ getHistory: () => history,
142
+ clearHistory,
143
+ }));
144
+ /* ─── Derive categories ─── */
145
+ const allCategories = React.useMemo(() => {
146
+ if (categoriesProp)
147
+ return categoriesProp;
148
+ const seen = new Set();
149
+ const result = [];
150
+ for (const icon of icons) {
151
+ if (!seen.has(icon.category)) {
152
+ seen.add(icon.category);
153
+ result.push(icon.category);
154
+ }
155
+ }
156
+ return result;
157
+ }, [icons, categoriesProp]);
158
+ /* ─── Filter icons ─── */
159
+ const filtered = React.useMemo(() => {
160
+ let items = icons;
161
+ if (search.trim()) {
162
+ const q = search.toLowerCase();
163
+ items = items.filter((i) => i.name.toLowerCase().includes(q) ||
164
+ i.category.toLowerCase().includes(q));
165
+ }
166
+ if (activeCategory === '__favorites__') {
167
+ items = items.filter((i) => favorites.includes(i.name));
168
+ }
169
+ else if (activeCategory === '__history__') {
170
+ const historySet = new Set(history);
171
+ items = items.filter((i) => historySet.has(i.name));
172
+ // Sort by history order
173
+ items.sort((a, b) => history.indexOf(a.name) - history.indexOf(b.name));
174
+ }
175
+ else if (activeCategory) {
176
+ items = items.filter((i) => i.category === activeCategory);
177
+ }
178
+ return items;
179
+ }, [icons, search, activeCategory, favorites, history]);
180
+ /* ─── Virtualized items ─── */
181
+ const virtualizedFiltered = React.useMemo(() => {
182
+ if (!virtualized)
183
+ return filtered;
184
+ return filtered.slice(visibleRange.start, visibleRange.end);
185
+ }, [filtered, virtualized, visibleRange]);
186
+ /* ─── Group by category ─── */
187
+ const grouped = React.useMemo(() => {
188
+ const items = virtualized ? virtualizedFiltered : filtered;
189
+ const map = new Map();
190
+ for (const icon of items) {
191
+ const list = map.get(icon.category);
192
+ if (list) {
193
+ list.push(icon);
194
+ }
195
+ else {
196
+ map.set(icon.category, [icon]);
197
+ }
198
+ }
199
+ return map;
200
+ }, [filtered, virtualized, virtualizedFiltered]);
201
+ /* ─── Selected entries ─── */
202
+ const selectedEntries = React.useMemo(() => {
203
+ return selectedValues
204
+ .map(v => icons.find(i => i.name === v))
205
+ .filter((e) => e !== undefined);
206
+ }, [icons, selectedValues]);
207
+ const selectedEntry = (_a = selectedEntries[0]) !== null && _a !== void 0 ? _a : null;
208
+ /* ─── Click outside ─── */
209
+ React.useEffect(() => {
210
+ if (!isOpen)
211
+ return;
212
+ function onClickOutside(e) {
213
+ if (rootRef.current && !rootRef.current.contains(e.target)) {
214
+ setIsOpen(false);
215
+ }
216
+ }
217
+ document.addEventListener('mousedown', onClickOutside);
218
+ return () => document.removeEventListener('mousedown', onClickOutside);
219
+ }, [isOpen]);
220
+ /* ─── Focus search on open ─── */
221
+ React.useEffect(() => {
222
+ if (isOpen) {
223
+ requestAnimationFrame(() => { var _a; return (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });
224
+ }
225
+ else {
226
+ setSearch('');
227
+ setActiveCategory(null);
228
+ setVisibleRange({ start: 0, end: virtualizedItemCount });
229
+ }
230
+ }, [isOpen, virtualizedItemCount]);
231
+ /* ─── Keyboard ─── */
232
+ React.useEffect(() => {
233
+ if (!isOpen)
234
+ return;
235
+ function onKeyDown(e) {
236
+ if (e.key === 'Escape') {
237
+ setIsOpen(false);
238
+ }
239
+ }
240
+ document.addEventListener('keydown', onKeyDown);
241
+ return () => document.removeEventListener('keydown', onKeyDown);
242
+ }, [isOpen]);
243
+ /* ─── Virtualization scroll handler ─── */
244
+ React.useEffect(() => {
245
+ if (!virtualized || !isOpen || !gridWrapRef.current)
246
+ return;
247
+ const handleScroll = () => {
248
+ const el = gridWrapRef.current;
249
+ if (!el)
250
+ return;
251
+ const scrollTop = el.scrollTop;
252
+ const itemHeight = 48; // Approximate cell height
253
+ const itemsPerRow = 6; // Approximate items per row
254
+ const rowHeight = itemHeight;
255
+ const visibleRows = Math.ceil(el.clientHeight / rowHeight);
256
+ const startRow = Math.floor(scrollTop / rowHeight);
257
+ const buffer = 2; // Extra rows to render
258
+ const start = Math.max(0, (startRow - buffer) * itemsPerRow);
259
+ const end = Math.min(filtered.length, (startRow + visibleRows + buffer) * itemsPerRow);
260
+ setVisibleRange({ start, end });
261
+ };
262
+ const el = gridWrapRef.current;
263
+ el.addEventListener('scroll', handleScroll, { passive: true });
264
+ return () => el.removeEventListener('scroll', handleScroll);
265
+ }, [virtualized, isOpen, filtered.length]);
266
+ /* ─── Handlers ─── */
267
+ const handleSelect = React.useCallback((entry) => {
268
+ // Add to history
269
+ if (showHistory) {
270
+ addToHistory(entry.name);
271
+ }
272
+ if (multiSelect) {
273
+ const isSelected = selectedValues.includes(entry.name);
274
+ let newValues;
275
+ if (isSelected) {
276
+ newValues = selectedValues.filter(v => v !== entry.name);
277
+ }
278
+ else {
279
+ if (maxSelections && selectedValues.length >= maxSelections) {
280
+ return; // Max selections reached
281
+ }
282
+ newValues = [...selectedValues, entry.name];
283
+ }
284
+ if (onChangeMulti) {
285
+ const entries = newValues
286
+ .map(v => icons.find(i => i.name === v))
287
+ .filter((e) => e !== undefined);
288
+ onChangeMulti(newValues, entries);
289
+ }
290
+ setInternalValues(newValues);
291
+ // Don't close in multi-select mode
292
+ }
293
+ else {
294
+ onChange === null || onChange === void 0 ? void 0 : onChange(entry.name, entry);
295
+ setIsOpen(false);
296
+ }
297
+ }, [multiSelect, selectedValues, maxSelections, icons, onChange, onChangeMulti, showHistory, addToHistory]);
298
+ const handleClear = React.useCallback((e) => {
299
+ e.stopPropagation();
300
+ if (multiSelect) {
301
+ onChangeMulti === null || onChangeMulti === void 0 ? void 0 : onChangeMulti([], []);
302
+ setInternalValues([]);
303
+ }
304
+ else {
305
+ onChange === null || onChange === void 0 ? void 0 : onChange(null, null);
306
+ }
307
+ }, [multiSelect, onChange, onChangeMulti]);
308
+ const handleToggle = React.useCallback(() => {
309
+ if (!disabled)
310
+ setIsOpen((o) => !o);
311
+ }, [disabled]);
312
+ const handleFavoriteClick = React.useCallback((e, name) => {
313
+ e.stopPropagation();
314
+ toggleFavorite(name);
315
+ }, [toggleFavorite]);
316
+ /* ─── Drag & Drop handlers ─── */
317
+ const handleDragStart = React.useCallback((entry, e) => {
318
+ if (!enableDragAndDrop)
319
+ return;
320
+ // Set various data formats for maximum compatibility
321
+ const name = entry.name;
322
+ const readName = readableName(name);
323
+ // Plain text - icon name
324
+ e.dataTransfer.setData('text/plain', readName);
325
+ // JSON data with full icon info
326
+ const iconData = {
327
+ name: entry.name,
328
+ readableName: readName,
329
+ category: entry.category,
330
+ variant,
331
+ };
332
+ e.dataTransfer.setData('application/json', JSON.stringify(iconData));
333
+ e.dataTransfer.setData('text/x-ntd-icon', JSON.stringify(iconData));
334
+ // Try to render SVG to data URL for image dragging
335
+ try {
336
+ const tempContainer = document.createElement('div');
337
+ tempContainer.style.position = 'absolute';
338
+ tempContainer.style.left = '-9999px';
339
+ document.body.appendChild(tempContainer);
340
+ // Use dynamic import workaround - render to string
341
+ const svgElement = document.querySelector(`[data-name="${readName}"] svg`);
342
+ if (svgElement) {
343
+ const svgClone = svgElement.cloneNode(true);
344
+ svgClone.setAttribute('width', '64');
345
+ svgClone.setAttribute('height', '64');
346
+ const svgString = new XMLSerializer().serializeToString(svgClone);
347
+ const svgBlob = new Blob([svgString], { type: 'image/svg+xml' });
348
+ e.dataTransfer.setData('text/html', `<img src="data:image/svg+xml;base64,${btoa(svgString)}" alt="${readName}" />`);
349
+ // Create drag image
350
+ const img = new Image(64, 64);
351
+ img.src = URL.createObjectURL(svgBlob);
352
+ e.dataTransfer.setDragImage(img, 32, 32);
353
+ }
354
+ document.body.removeChild(tempContainer);
355
+ }
356
+ catch (_a) {
357
+ // Fallback - use default drag image
358
+ }
359
+ e.dataTransfer.effectAllowed = 'copy';
360
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(entry, e);
361
+ }, [enableDragAndDrop, variant, onDragStart]);
362
+ const handleDragEnd = React.useCallback((entry, e) => {
363
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(entry, e);
364
+ }, [onDragEnd]);
365
+ const readableName = (name) => name.replace(/^Ntd/, '');
366
+ const triggerLabel = React.useMemo(() => {
367
+ if (multiSelect && selectedEntries.length > 0) {
368
+ if (selectedEntries.length === 1) {
369
+ return readableName(selectedEntries[0].name);
370
+ }
371
+ return `${selectedEntries.length} icons selected`;
372
+ }
373
+ return selectedEntry ? readableName(selectedEntry.name) : placeholder;
374
+ }, [multiSelect, selectedEntries, selectedEntry, placeholder]);
375
+ return (jsxRuntime.jsxs("div", { ref: rootRef, className: `ntd-picker${isOpen ? ' open' : ''}${disabled ? ' disabled' : ''}${multiSelect ? ' multi' : ''}${className ? ` ${className}` : ''}`, children: [jsxRuntime.jsxs("button", { type: "button", className: "ntd-picker-trigger", onClick: handleToggle, disabled: disabled, "aria-haspopup": "listbox", "aria-expanded": isOpen, children: [jsxRuntime.jsx("span", { className: "ntd-picker-trigger-icon", children: selectedEntry ? (jsxRuntime.jsx(selectedEntry.Component, { size: triggerIconSize, variant: variant })) : multiSelect && selectedEntries.length > 1 ? (jsxRuntime.jsx("span", { className: "ntd-picker-multi-badge", children: selectedEntries.length })) : (jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: [jsxRuntime.jsx("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1" }), jsxRuntime.jsx("rect", { x: "14", y: "3", width: "7", height: "7", rx: "1" }), jsxRuntime.jsx("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }), jsxRuntime.jsx("rect", { x: "14", y: "14", width: "7", height: "7", rx: "1" })] })) }), jsxRuntime.jsx("span", { className: `ntd-picker-trigger-label${!selectedEntry && selectedEntries.length === 0 ? ' ntd-picker-trigger-placeholder' : ''}`, children: triggerLabel }), jsxRuntime.jsx("span", { className: "ntd-picker-trigger-chevron", children: jsxRuntime.jsx(Chevron, {}) })] }), isOpen && (jsxRuntime.jsxs("div", { className: "ntd-picker-dropdown", role: "listbox", children: [jsxRuntime.jsxs("div", { className: "ntd-picker-search", children: [jsxRuntime.jsx("span", { className: "ntd-picker-search-icon", children: jsxRuntime.jsx(SearchIcon, {}) }), jsxRuntime.jsx("input", { ref: searchInputRef, type: "text", placeholder: "Search icons\u2026", value: search, onChange: (e) => setSearch(e.target.value), "aria-label": "Search icons" })] }), (allCategories.length > 1 || showFavorites || showHistory) && (jsxRuntime.jsxs("div", { className: "ntd-picker-tabs", role: "tablist", children: [jsxRuntime.jsx("button", { type: "button", className: `ntd-picker-tab${activeCategory === null ? ' active' : ''}`, onClick: () => setActiveCategory(null), role: "tab", "aria-selected": activeCategory === null, children: "All" }), showFavorites && (jsxRuntime.jsxs("button", { type: "button", className: `ntd-picker-tab ntd-picker-tab-special${activeCategory === '__favorites__' ? ' active' : ''}`, onClick: () => setActiveCategory('__favorites__'), role: "tab", "aria-selected": activeCategory === '__favorites__', title: "Favorites", children: [jsxRuntime.jsx(StarIcon, { filled: true }), " Favorites", favorites.length > 0 && (jsxRuntime.jsx("span", { className: "ntd-picker-tab-count", children: favorites.length }))] })), showHistory && history.length > 0 && (jsxRuntime.jsxs("button", { type: "button", className: `ntd-picker-tab ntd-picker-tab-special${activeCategory === '__history__' ? ' active' : ''}`, onClick: () => setActiveCategory('__history__'), role: "tab", "aria-selected": activeCategory === '__history__', title: "Recently used", children: [jsxRuntime.jsx(ClockIcon, {}), " Recent"] })), allCategories.map((cat) => (jsxRuntime.jsx("button", { type: "button", className: `ntd-picker-tab${activeCategory === cat ? ' active' : ''}`, onClick: () => setActiveCategory(cat), role: "tab", "aria-selected": activeCategory === cat, children: cat }, cat)))] })), jsxRuntime.jsx("div", { className: "ntd-picker-grid-wrap", ref: gridWrapRef, children: filtered.length === 0 ? (jsxRuntime.jsxs("div", { className: "ntd-picker-empty", children: [jsxRuntime.jsx("div", { className: "ntd-picker-empty-icon", children: "\u2205" }), activeCategory === '__favorites__'
376
+ ? 'No favorites yet. Click the star icon to add.'
377
+ : activeCategory === '__history__'
378
+ ? 'No recent icons.'
379
+ : 'No icons found'] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [virtualized && visibleRange.start > 0 && (jsxRuntime.jsx("div", { style: { height: Math.floor(visibleRange.start / 6) * 48 } })), Array.from(grouped.entries()).map(([category, entries]) => (jsxRuntime.jsxs("div", { children: [!activeCategory && !(activeCategory === null || activeCategory === void 0 ? void 0 : activeCategory.startsWith('__')) && (jsxRuntime.jsx("div", { className: "ntd-picker-category-label", children: category })), jsxRuntime.jsx("div", { className: "ntd-picker-grid", children: entries.map((entry) => {
380
+ const isSelected = selectedValues.includes(entry.name);
381
+ const isFavorite = favorites.includes(entry.name);
382
+ return (jsxRuntime.jsxs("button", { type: "button", className: `ntd-picker-cell${isSelected ? ' selected' : ''}${multiSelect ? ' multi-select' : ''}${enableDragAndDrop ? ' draggable' : ''}`, onClick: () => handleSelect(entry), "data-name": readableName(entry.name), role: "option", "aria-selected": isSelected, title: readableName(entry.name), draggable: enableDragAndDrop, onDragStart: enableDragAndDrop ? (e) => handleDragStart(entry, e) : undefined, onDragEnd: enableDragAndDrop ? (e) => handleDragEnd(entry, e) : undefined, children: [jsxRuntime.jsx(entry.Component, { size: gridIconSize, variant: variant }), multiSelect && isSelected && (jsxRuntime.jsx("span", { className: "ntd-picker-cell-check", children: jsxRuntime.jsx(CheckIcon, {}) })), showFavorites && (jsxRuntime.jsx("button", { type: "button", className: `ntd-picker-cell-fav${isFavorite ? ' active' : ''}`, onClick: (e) => handleFavoriteClick(e, entry.name), title: isFavorite ? 'Remove from favorites' : 'Add to favorites', children: jsxRuntime.jsx(StarIcon, { filled: isFavorite }) }))] }, entry.name));
383
+ }) })] }, category))), virtualized && visibleRange.end < filtered.length && (jsxRuntime.jsx("div", { style: { height: Math.ceil((filtered.length - visibleRange.end) / 6) * 48 } }))] })) }), jsxRuntime.jsxs("div", { className: "ntd-picker-footer", children: [jsxRuntime.jsxs("span", { className: "ntd-picker-count", children: [filtered.length, " icon", filtered.length !== 1 ? 's' : '', multiSelect && selectedValues.length > 0 && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [" \u2022 ", selectedValues.length, " selected"] })), maxSelections && multiSelect && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [" (max ", maxSelections, ")"] }))] }), clearable && selectedValues.length > 0 && (jsxRuntime.jsxs("button", { type: "button", className: "ntd-picker-clear", onClick: handleClear, children: ["Clear", multiSelect ? ' all' : ' selection'] })), multiSelect && (jsxRuntime.jsx("button", { type: "button", className: "ntd-picker-done", onClick: () => setIsOpen(false), children: "Done" }))] })] }))] }));
384
+ });
385
+
386
+ exports.NiceIconPicker = NiceIconPicker;
387
+ //# sourceMappingURL=NiceIconPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NiceIconPicker.js","sources":["../../src/NiceIconPicker.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","forwardRef","useState","useRef","useCallback","useImperativeHandle","useMemo","useEffect","_Fragment"],"mappings":"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"}