@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.
- package/CHANGELOG.md +124 -0
- package/LICENSE +21 -0
- package/README.md +581 -0
- package/dist/cjs/NiceIconPicker.js +387 -0
- package/dist/cjs/NiceIconPicker.js.map +1 -0
- package/dist/cjs/NiceVectorEditor.js +675 -0
- package/dist/cjs/NiceVectorEditor.js.map +1 -0
- package/dist/cjs/animationControls.js +690 -0
- package/dist/cjs/animationControls.js.map +1 -0
- package/dist/cjs/createIcon.js +142 -0
- package/dist/cjs/createIcon.js.map +1 -0
- package/dist/cjs/figmaExport.js +288 -0
- package/dist/cjs/figmaExport.js.map +1 -0
- package/dist/cjs/icons/actions.js +257 -0
- package/dist/cjs/icons/actions.js.map +1 -0
- package/dist/cjs/icons/brand.js +128 -0
- package/dist/cjs/icons/brand.js.map +1 -0
- package/dist/cjs/icons/business.js +228 -0
- package/dist/cjs/icons/business.js.map +1 -0
- package/dist/cjs/icons/devtech.js +374 -0
- package/dist/cjs/icons/devtech.js.map +1 -0
- package/dist/cjs/icons/ecommerce.js +171 -0
- package/dist/cjs/icons/ecommerce.js.map +1 -0
- package/dist/cjs/icons/files.js +286 -0
- package/dist/cjs/icons/files.js.map +1 -0
- package/dist/cjs/icons/fintech.js +151 -0
- package/dist/cjs/icons/fintech.js.map +1 -0
- package/dist/cjs/icons/fun.js +124 -0
- package/dist/cjs/icons/fun.js.map +1 -0
- package/dist/cjs/icons/health.js +132 -0
- package/dist/cjs/icons/health.js.map +1 -0
- package/dist/cjs/icons/media.js +219 -0
- package/dist/cjs/icons/media.js.map +1 -0
- package/dist/cjs/icons/navigation.js +147 -0
- package/dist/cjs/icons/navigation.js.map +1 -0
- package/dist/cjs/icons/saas.js +141 -0
- package/dist/cjs/icons/saas.js.map +1 -0
- package/dist/cjs/icons/shapes.js +205 -0
- package/dist/cjs/icons/shapes.js.map +1 -0
- package/dist/cjs/icons/smarthome.js +141 -0
- package/dist/cjs/icons/smarthome.js.map +1 -0
- package/dist/cjs/icons/social.js +159 -0
- package/dist/cjs/icons/social.js.map +1 -0
- package/dist/cjs/icons/ui.js +262 -0
- package/dist/cjs/icons/ui.js.map +1 -0
- package/dist/cjs/icons/weather.js +187 -0
- package/dist/cjs/icons/weather.js.map +1 -0
- package/dist/cjs/index.js +362 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nicetodev-icons.css +1 -0
- package/dist/cjs/smilAnimations.js +182 -0
- package/dist/cjs/smilAnimations.js.map +1 -0
- package/dist/cjs/types.js +47 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/NiceIconPicker.js +385 -0
- package/dist/esm/NiceIconPicker.js.map +1 -0
- package/dist/esm/NiceVectorEditor.js +673 -0
- package/dist/esm/NiceVectorEditor.js.map +1 -0
- package/dist/esm/animationControls.js +680 -0
- package/dist/esm/animationControls.js.map +1 -0
- package/dist/esm/createIcon.js +140 -0
- package/dist/esm/createIcon.js.map +1 -0
- package/dist/esm/figmaExport.js +279 -0
- package/dist/esm/figmaExport.js.map +1 -0
- package/dist/esm/icons/actions.js +231 -0
- package/dist/esm/icons/actions.js.map +1 -0
- package/dist/esm/icons/brand.js +124 -0
- package/dist/esm/icons/brand.js.map +1 -0
- package/dist/esm/icons/business.js +209 -0
- package/dist/esm/icons/business.js.map +1 -0
- package/dist/esm/icons/devtech.js +342 -0
- package/dist/esm/icons/devtech.js.map +1 -0
- package/dist/esm/icons/ecommerce.js +154 -0
- package/dist/esm/icons/ecommerce.js.map +1 -0
- package/dist/esm/icons/files.js +254 -0
- package/dist/esm/icons/files.js.map +1 -0
- package/dist/esm/icons/fintech.js +136 -0
- package/dist/esm/icons/fintech.js.map +1 -0
- package/dist/esm/icons/fun.js +110 -0
- package/dist/esm/icons/fun.js.map +1 -0
- package/dist/esm/icons/health.js +118 -0
- package/dist/esm/icons/health.js.map +1 -0
- package/dist/esm/icons/media.js +195 -0
- package/dist/esm/icons/media.js.map +1 -0
- package/dist/esm/icons/navigation.js +132 -0
- package/dist/esm/icons/navigation.js.map +1 -0
- package/dist/esm/icons/saas.js +127 -0
- package/dist/esm/icons/saas.js.map +1 -0
- package/dist/esm/icons/shapes.js +182 -0
- package/dist/esm/icons/shapes.js.map +1 -0
- package/dist/esm/icons/smarthome.js +127 -0
- package/dist/esm/icons/smarthome.js.map +1 -0
- package/dist/esm/icons/social.js +150 -0
- package/dist/esm/icons/social.js.map +1 -0
- package/dist/esm/icons/ui.js +233 -0
- package/dist/esm/icons/ui.js.map +1 -0
- package/dist/esm/icons/weather.js +166 -0
- package/dist/esm/icons/weather.js.map +1 -0
- package/dist/esm/index.js +25 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nicetodev-icons.css +1 -0
- package/dist/esm/smilAnimations.js +176 -0
- package/dist/esm/smilAnimations.js.map +1 -0
- package/dist/esm/types.js +44 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/NiceIconPicker.d.ts +149 -0
- package/dist/types/NiceVectorEditor.d.ts +75 -0
- package/dist/types/animationControls.d.ts +307 -0
- package/dist/types/createIcon.d.ts +76 -0
- package/dist/types/figmaExport.d.ts +243 -0
- package/dist/types/icons/actions.d.ts +25 -0
- package/dist/types/icons/brand.d.ts +3 -0
- package/dist/types/icons/business.d.ts +25 -0
- package/dist/types/icons/devtech.d.ts +39 -0
- package/dist/types/icons/ecommerce.d.ts +16 -0
- package/dist/types/icons/files.d.ts +31 -0
- package/dist/types/icons/fintech.d.ts +14 -0
- package/dist/types/icons/fun.d.ts +13 -0
- package/dist/types/icons/health.d.ts +14 -0
- package/dist/types/icons/index.d.ts +17 -0
- package/dist/types/icons/media.d.ts +23 -0
- package/dist/types/icons/navigation.d.ts +14 -0
- package/dist/types/icons/saas.d.ts +13 -0
- package/dist/types/icons/shapes.d.ts +22 -0
- package/dist/types/icons/smarthome.d.ts +13 -0
- package/dist/types/icons/social.d.ts +18 -0
- package/dist/types/icons/ui.d.ts +28 -0
- package/dist/types/icons/weather.d.ts +20 -0
- package/dist/types/index.d.ts +69 -0
- package/dist/types/smilAnimations.d.ts +102 -0
- package/dist/types/types.d.ts +179 -0
- 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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"}
|