@vscode/codicons 0.0.44 → 0.0.45-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/RELEASING.md +32 -0
- package/_iconCloud/categories.csv +533 -0
- package/_iconCloud/categories.transforms.json +92 -0
- package/_iconCloud/categories.variables.json +48 -0
- package/_iconCloud/descriptions.csv +533 -0
- package/_iconCloud/descriptions.transforms.json +83 -0
- package/_iconCloud/descriptions.variables.json +47 -0
- package/_iconCloud/keywords.csv +533 -1
- package/_iconCloud/keywords.transforms.json +22 -13
- package/_iconCloud/keywords.variables.json +19 -18
- package/_iconCloud/manifest.json +11 -1
- package/_iconCloud/manifest.transforms.json +2 -2
- package/_iconCloud/metaphors.csv +533 -0
- package/_iconCloud/metaphors.transforms.json +92 -0
- package/_iconCloud/metaphors.variables.json +48 -0
- package/build/pipeline.yml +18 -7
- package/dist/codicon.css +7 -1
- package/dist/codicon.csv +6 -0
- package/dist/codicon.html +8129 -851
- package/dist/codicon.svg +1 -1
- package/dist/codicon.ttf +0 -0
- package/dist/codiconsLibrary.ts +6 -0
- package/dist/metadata.json +2672 -0
- package/package.json +6 -2
- package/scripts/check-metadata.js +126 -0
- package/scripts/embed-metadata.js +25 -0
- package/scripts/embed-svg-data.js +31 -0
- package/src/icons/add-small.svg +1 -0
- package/src/icons/ask.svg +1 -0
- package/src/icons/chat-sparkle-error.svg +1 -1
- package/src/icons/chat-sparkle-warning.svg +1 -1
- package/src/icons/chat-sparkle.svg +1 -1
- package/src/icons/cloud-download.svg +1 -1
- package/src/icons/cloud-upload.svg +1 -1
- package/src/icons/cloud.svg +1 -1
- package/src/icons/index-zero.svg +1 -1
- package/src/icons/keyboard-tab-above.svg +1 -1
- package/src/icons/remove-small.svg +1 -0
- package/src/icons/report.svg +1 -1
- package/src/icons/screen-cut.svg +1 -0
- package/src/icons/worktree-small.svg +1 -0
- package/src/icons/worktree.svg +1 -0
- package/src/template/mapping.json +18 -0
- package/src/template/metadata.json +2672 -0
- package/src/template/preview.hbs +583 -321
package/src/template/preview.hbs
CHANGED
|
@@ -30,17 +30,85 @@
|
|
|
30
30
|
height: auto;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
:root {
|
|
34
|
+
--bg-color: #f8f8f8;
|
|
35
|
+
--text-color: #333;
|
|
36
|
+
--text-secondary: #666;
|
|
37
|
+
--card-bg: white;
|
|
38
|
+
--card-shadow: rgba(0, 0, 0, 0.06);
|
|
39
|
+
--card-shadow-hover: rgba(0, 0, 0, 0.24);
|
|
40
|
+
--input-border: rgba(0,0,0,.1);
|
|
41
|
+
--notification-bg: #212121;
|
|
42
|
+
--notification-text: white;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
[data-theme="dark"] {
|
|
46
|
+
--bg-color: #1e1e1e;
|
|
47
|
+
--text-color: #cccccc;
|
|
48
|
+
--text-secondary: #999;
|
|
49
|
+
--card-bg: #252526;
|
|
50
|
+
--card-shadow: rgba(0, 0, 0, 0.3);
|
|
51
|
+
--card-shadow-hover: rgba(255, 255, 255, 0.1);
|
|
52
|
+
--input-border: rgba(255,255,255,.1);
|
|
53
|
+
--notification-bg: #3c3c3c;
|
|
54
|
+
--notification-text: #cccccc;
|
|
55
|
+
}
|
|
56
|
+
|
|
33
57
|
body {
|
|
34
58
|
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
|
|
35
59
|
margin: 0;
|
|
36
|
-
padding: 10px 20px;
|
|
60
|
+
padding: 0px 20px 10px 20px;
|
|
37
61
|
text-align: center;
|
|
38
|
-
background-color:
|
|
62
|
+
background-color: var(--bg-color);
|
|
63
|
+
color: var(--text-color);
|
|
64
|
+
transition: background-color 0.3s ease, color 0.3s ease;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#header {
|
|
68
|
+
position: sticky;
|
|
69
|
+
top: 0;
|
|
70
|
+
display: flex;
|
|
71
|
+
align-items: center;
|
|
72
|
+
gap: 20px;
|
|
73
|
+
margin: 0 auto;
|
|
74
|
+
padding: 20px 64px;
|
|
75
|
+
background-color: var(--bg-color);
|
|
76
|
+
z-index: 100;
|
|
77
|
+
transition: background-color 0.3s ease;
|
|
39
78
|
}
|
|
40
79
|
|
|
41
80
|
h1 {
|
|
42
81
|
font-weight: bold;
|
|
43
|
-
margin:
|
|
82
|
+
margin: 0;
|
|
83
|
+
color: var(--text-color);
|
|
84
|
+
white-space: nowrap;
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#theme-toggle {
|
|
89
|
+
display: flex;
|
|
90
|
+
align-items: center;
|
|
91
|
+
gap: 4px;
|
|
92
|
+
padding: 10px 20px;
|
|
93
|
+
background-color: var(--card-bg);
|
|
94
|
+
color: var(--text-color);
|
|
95
|
+
border: 1px solid var(--input-border);
|
|
96
|
+
border-radius: 4px;
|
|
97
|
+
cursor: pointer;
|
|
98
|
+
font-size: 14px;
|
|
99
|
+
box-shadow: 0px 0px 12px var(--card-shadow);
|
|
100
|
+
transition: all 0.3s ease;
|
|
101
|
+
flex-shrink: 0;
|
|
102
|
+
white-space: nowrap;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
#theme-toggle:hover {
|
|
106
|
+
box-shadow: 0px 0px 12px var(--card-shadow-hover);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#theme-toggle:focus {
|
|
110
|
+
outline: none;
|
|
111
|
+
border-color: #18a0fb;
|
|
44
112
|
}
|
|
45
113
|
|
|
46
114
|
.icon {
|
|
@@ -49,20 +117,16 @@
|
|
|
49
117
|
margin: 8px;
|
|
50
118
|
}
|
|
51
119
|
|
|
52
|
-
.icon:hover {
|
|
53
|
-
cursor: pointer;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
120
|
.icon:hover .inner {
|
|
57
|
-
box-shadow: 0px 0px 12px
|
|
121
|
+
box-shadow: 0px 0px 12px var(--card-shadow-hover);
|
|
58
122
|
}
|
|
59
123
|
|
|
60
124
|
.icon .inner {
|
|
61
125
|
display: inline-block;
|
|
62
126
|
width: 100%;
|
|
63
127
|
text-align: center;
|
|
64
|
-
background-color:
|
|
65
|
-
box-shadow: 0px 0px 12px
|
|
128
|
+
background-color: var(--card-bg);
|
|
129
|
+
box-shadow: 0px 0px 12px var(--card-shadow);
|
|
66
130
|
border-radius: 4px;
|
|
67
131
|
transition: all .3s ease-in-out;
|
|
68
132
|
}
|
|
@@ -70,7 +134,7 @@
|
|
|
70
134
|
.icon .inner {{ tag }} {
|
|
71
135
|
padding: 16px 0;
|
|
72
136
|
font-size: 48px;
|
|
73
|
-
color:
|
|
137
|
+
color: var(--text-color);
|
|
74
138
|
overflow: hidden;
|
|
75
139
|
}
|
|
76
140
|
|
|
@@ -85,26 +149,65 @@
|
|
|
85
149
|
box-sizing: border-box;
|
|
86
150
|
padding: 4px;
|
|
87
151
|
font-size: 10px;
|
|
88
|
-
color:
|
|
152
|
+
color: var(--text-secondary);
|
|
89
153
|
white-space: nowrap;
|
|
90
154
|
overflow: hidden;
|
|
91
155
|
text-overflow: ellipsis;
|
|
92
156
|
}
|
|
93
157
|
|
|
158
|
+
.copy-buttons {
|
|
159
|
+
display: flex;
|
|
160
|
+
justify-content: center;
|
|
161
|
+
gap: 8px;
|
|
162
|
+
margin-top: 4px;
|
|
163
|
+
opacity: 0;
|
|
164
|
+
visibility: hidden;
|
|
165
|
+
pointer-events: none;
|
|
166
|
+
transition: opacity 0.2s ease-in-out;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.icon:hover .copy-buttons {
|
|
170
|
+
opacity: 1;
|
|
171
|
+
visibility: visible;
|
|
172
|
+
pointer-events: auto;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.copy-btn {
|
|
176
|
+
background: none;
|
|
177
|
+
border: none;
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
padding: 4px;
|
|
180
|
+
color: var(--text-secondary);
|
|
181
|
+
border-radius: 4px;
|
|
182
|
+
transition: color 0.2s ease, background-color 0.2s ease;
|
|
183
|
+
display: flex;
|
|
184
|
+
align-items: center;
|
|
185
|
+
justify-content: center;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.copy-btn:hover {
|
|
189
|
+
color: var(--text-color);
|
|
190
|
+
background-color: var(--input-border);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.copy-btn i {
|
|
194
|
+
font-size: 14px;
|
|
195
|
+
}
|
|
196
|
+
|
|
94
197
|
.description {
|
|
95
198
|
display: none;
|
|
96
199
|
}
|
|
97
200
|
|
|
98
201
|
#search {
|
|
99
|
-
|
|
100
|
-
width: 100%;
|
|
202
|
+
flex: 1;
|
|
101
203
|
font-size: 16px;
|
|
102
204
|
padding: 12px 16px;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
205
|
+
border: 1px solid var(--input-border);
|
|
206
|
+
box-shadow: 0px 0px 12px var(--card-shadow);
|
|
207
|
+
background-color: var(--card-bg);
|
|
208
|
+
color: var(--text-color);
|
|
209
|
+
transition: all 0.3s ease;
|
|
210
|
+
border-radius: 4px;
|
|
108
211
|
}
|
|
109
212
|
|
|
110
213
|
#search:focus {
|
|
@@ -125,8 +228,8 @@
|
|
|
125
228
|
left: 50%;
|
|
126
229
|
width: auto;
|
|
127
230
|
transform: translateX(-50%);
|
|
128
|
-
color:
|
|
129
|
-
background-color:
|
|
231
|
+
color: var(--notification-text);
|
|
232
|
+
background-color: var(--notification-bg);
|
|
130
233
|
padding: 8px 24px;
|
|
131
234
|
border-radius: 8px;
|
|
132
235
|
opacity: 0;
|
|
@@ -148,25 +251,35 @@
|
|
|
148
251
|
</head>
|
|
149
252
|
<body>
|
|
150
253
|
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
|
|
254
|
+
<div id="header">
|
|
255
|
+
<h1>{{ name }}</h1>
|
|
256
|
+
<input type="text" id="search" placeholder="Search for icon names" aria-label="Search for icon names">
|
|
257
|
+
<button id="theme-toggle" aria-label="Toggle theme"><i class="codicon codicon-color-mode"></i> Dark Mode</button>
|
|
258
|
+
</div>
|
|
154
259
|
|
|
155
260
|
<div id="icons">
|
|
156
261
|
{{# each assets }}
|
|
157
|
-
<div class="icon" data-name="{{ @key }}" title="{{ @key }}">
|
|
262
|
+
<div class="icon" data-name="{{ @key }}" title="{{ @key }}" data-tags="" data-description="">
|
|
158
263
|
<span class="inner">
|
|
159
264
|
<{{ ../tag }} class="{{ ../prefix }} {{ ../prefix }}-{{ @key }}" aria-hidden="true"></{{ ../tag }}>
|
|
160
265
|
</span>
|
|
161
266
|
<br>
|
|
162
267
|
<span class='label'>{{ @key }}</span>
|
|
163
268
|
<span class='description'></span>
|
|
269
|
+
<div class="copy-buttons">
|
|
270
|
+
<button class="copy-btn copy-name-btn" title="Copy icon name" aria-label="Copy icon name">
|
|
271
|
+
<i class="codicon codicon-copy" aria-hidden="true"></i>
|
|
272
|
+
</button>
|
|
273
|
+
<button class="copy-btn copy-svg-btn" title="Copy SVG" aria-label="Copy SVG">
|
|
274
|
+
<i class="codicon codicon-file-code" aria-hidden="true"></i>
|
|
275
|
+
</button>
|
|
276
|
+
</div>
|
|
164
277
|
</div>
|
|
165
278
|
{{/ each }}
|
|
166
279
|
</div>
|
|
167
280
|
|
|
168
281
|
<div id="notification">📋 Copied: <span id="notification-id"></span></div>
|
|
169
|
-
<input type="text" id="copier">
|
|
282
|
+
<input type="text" id="copier" aria-label="Clipboard helper">
|
|
170
283
|
|
|
171
284
|
<script type="text/javascript">
|
|
172
285
|
let icons = document.getElementsByClassName('icon');
|
|
@@ -175,306 +288,403 @@
|
|
|
175
288
|
let notificationText = document.getElementById('notification-id');
|
|
176
289
|
let search = document.getElementById('search');
|
|
177
290
|
let timer;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
description: 'book save later'
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
name: 'briefcase',
|
|
225
|
-
description: 'work workplace'
|
|
226
|
-
},
|
|
227
|
-
{
|
|
228
|
-
name: 'broadcast',
|
|
229
|
-
description: 'tower signal connect connection'
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
name: 'browser',
|
|
233
|
-
description: 'web internet page window'
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
name: 'bug',
|
|
237
|
-
description: 'error issue insect block'
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
name: 'calendar',
|
|
241
|
-
description: 'day time week month date schedule event planner'
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
name: 'call-incoming',
|
|
245
|
-
description: 'phone cell voice connection direction'
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
name: 'call-outgoing',
|
|
249
|
-
description: 'phone cell voice connection direction'
|
|
250
|
-
},
|
|
251
|
-
{
|
|
252
|
-
name: 'case-sensitive',
|
|
253
|
-
description: 'search filter option letters words'
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
name: 'check-all',
|
|
257
|
-
description: 'checkmark select everything checked mark complete finish done accept approve'
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
name: 'check',
|
|
261
|
-
description: 'checkmark select everything checked mark complete finish done accept approve'
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
name: 'checklist',
|
|
265
|
-
description: 'checkmark select everything checked mark complete finish done accept todo task text'
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
name: 'chevron-down',
|
|
269
|
-
description: 'twistie tree node folder fold collapse'
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
name: 'chevron-left',
|
|
273
|
-
description: 'twistie tree node folder fold collapse'
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
name: 'chevron-right',
|
|
277
|
-
description: 'twistie tree node folder fold collapse'
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
name: 'chevron-up',
|
|
281
|
-
description: 'twistie tree node folder fold collapse'
|
|
282
|
-
},
|
|
283
|
-
{
|
|
284
|
-
name: 'chrome-close',
|
|
285
|
-
description: 'menu bar window dismiss'
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
name: 'chrome-maximize',
|
|
289
|
-
description: 'menu bar window large increase'
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
name: 'chrome-minimize',
|
|
293
|
-
description: 'menu bar window small decrease'
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
name: 'chrome-restore',
|
|
297
|
-
description: 'menu bar window'
|
|
298
|
-
},
|
|
299
|
-
{
|
|
300
|
-
name: 'circle-filled',
|
|
301
|
-
description: 'dot round small bullet breakpoint'
|
|
302
|
-
},
|
|
303
|
-
{
|
|
304
|
-
name: 'circle-large-filled',
|
|
305
|
-
description: 'dot round bullet'
|
|
306
|
-
},
|
|
307
|
-
{
|
|
308
|
-
name: 'circle-large',
|
|
309
|
-
description: 'dot round bullet'
|
|
310
|
-
},
|
|
311
|
-
{
|
|
312
|
-
name: 'circle',
|
|
313
|
-
description: 'dot round small bullet unverified breakpoint'
|
|
314
|
-
},
|
|
315
|
-
{
|
|
316
|
-
name: 'circle-slash',
|
|
317
|
-
description: 'error block stop disable'
|
|
318
|
-
},
|
|
319
|
-
{
|
|
320
|
-
name: 'circuit-board',
|
|
321
|
-
description: 'iot device process lines'
|
|
322
|
-
},
|
|
323
|
-
{
|
|
324
|
-
name: 'clear-all',
|
|
325
|
-
description: 'reset remove'
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
name: 'clippy',
|
|
329
|
-
description: 'clipboard document edit copy'
|
|
330
|
-
},
|
|
331
|
-
{
|
|
332
|
-
name: 'close-all',
|
|
333
|
-
description: 'remove bulk'
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
name: 'close',
|
|
337
|
-
description: 'remove x cancel stop miltiply'
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
name: 'cloud-download',
|
|
341
|
-
description: 'install import'
|
|
342
|
-
},
|
|
343
|
-
{
|
|
344
|
-
name: 'cloud-upload',
|
|
345
|
-
description: 'export'
|
|
346
|
-
},
|
|
347
|
-
{
|
|
348
|
-
name: 'cloud',
|
|
349
|
-
description: 'online service'
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
name: 'code',
|
|
353
|
-
description: 'embed script programming server'
|
|
354
|
-
},
|
|
355
|
-
{
|
|
356
|
-
name: 'collapse-all',
|
|
357
|
-
description: 'bulk fold minimize'
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
name: 'color-mode',
|
|
361
|
-
description: 'switch dark light contrast mode toggle'
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
name: 'comment-discussion',
|
|
365
|
-
description: 'dialog message bubble chat'
|
|
366
|
-
},
|
|
367
|
-
{
|
|
368
|
-
name: 'comment',
|
|
369
|
-
description: 'dialog message bubble chat'
|
|
370
|
-
},
|
|
371
|
-
{
|
|
372
|
-
name: 'credit-card',
|
|
373
|
-
description: 'payment merchant money'
|
|
374
|
-
},
|
|
375
|
-
{
|
|
376
|
-
name: 'dash',
|
|
377
|
-
description: 'line minus subtract hyphen'
|
|
378
|
-
},
|
|
379
|
-
{
|
|
380
|
-
name: 'dashboard',
|
|
381
|
-
description: 'panel stats dial'
|
|
382
|
-
},
|
|
383
|
-
{
|
|
384
|
-
name: 'database',
|
|
385
|
-
description: 'sql db storage online cloud'
|
|
386
|
-
},
|
|
387
|
-
{
|
|
388
|
-
name: 'debug-alt-small',
|
|
389
|
-
description: 'run'
|
|
390
|
-
},
|
|
391
|
-
{
|
|
392
|
-
name: 'debug-alt',
|
|
393
|
-
description: 'run'
|
|
394
|
-
},
|
|
395
|
-
{
|
|
396
|
-
name: 'debug-console',
|
|
397
|
-
description: 'terminal command input compile build'
|
|
398
|
-
},
|
|
399
|
-
{
|
|
400
|
-
name: 'debug-disconnect',
|
|
401
|
-
description: 'stop unplug eject'
|
|
402
|
-
},
|
|
403
|
-
{
|
|
404
|
-
name: 'desktop-download',
|
|
405
|
-
description: 'install'
|
|
406
|
-
},
|
|
407
|
-
{
|
|
408
|
-
name: 'device-camera-video',
|
|
409
|
-
description: 'movie record capture'
|
|
410
|
-
},
|
|
411
|
-
{
|
|
412
|
-
name: 'device-camera',
|
|
413
|
-
description: 'capture picture image'
|
|
414
|
-
},
|
|
415
|
-
{
|
|
416
|
-
name: 'device-mobile',
|
|
417
|
-
description: 'phone handheld smartphone'
|
|
418
|
-
},
|
|
419
|
-
{
|
|
420
|
-
name: 'diff-added',
|
|
421
|
-
description: 'git change'
|
|
422
|
-
},
|
|
423
|
-
{
|
|
424
|
-
name: 'diff-ignored',
|
|
425
|
-
description: 'git change'
|
|
426
|
-
},
|
|
427
|
-
{
|
|
428
|
-
name: 'diff-modified',
|
|
429
|
-
description: 'git change'
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
name: 'diff-renamed',
|
|
433
|
-
description: 'git change'
|
|
434
|
-
},
|
|
435
|
-
{
|
|
436
|
-
name: 'diff-removed',
|
|
437
|
-
description: 'git change'
|
|
438
|
-
},
|
|
439
|
-
{
|
|
440
|
-
name: 'play-circle',
|
|
441
|
-
description: 'run'
|
|
442
|
-
},
|
|
443
|
-
{
|
|
444
|
-
name: 'pass',
|
|
445
|
-
description: 'play check checkmark outline issue closed'
|
|
446
|
-
},
|
|
447
|
-
{
|
|
448
|
-
name: 'pass-filled',
|
|
449
|
-
description: 'play check checkmark filled issue closed'
|
|
450
|
-
},
|
|
451
|
-
{
|
|
452
|
-
name: 'play',
|
|
453
|
-
description: 'run'
|
|
454
|
-
},
|
|
455
|
-
];
|
|
456
|
-
|
|
457
|
-
descriptions.some(function(item) {
|
|
458
|
-
let findIcon = document.querySelectorAll(`[data-name="${item.name}"]`);
|
|
459
|
-
findIcon[0].querySelector('.description').innerHTML += item.description;
|
|
460
|
-
});
|
|
291
|
+
|
|
292
|
+
// Load metadata
|
|
293
|
+
let metadata = {}; // METADATA_PLACEHOLDER
|
|
294
|
+
|
|
295
|
+
// Load SVG data
|
|
296
|
+
let svgData = {}; // SVG_DATA_PLACEHOLDER
|
|
297
|
+
|
|
298
|
+
if (Object.keys(metadata).length > 0) {
|
|
299
|
+
applyMetadata();
|
|
300
|
+
} else {
|
|
301
|
+
fetch('metadata.json')
|
|
302
|
+
.then(response => response.json())
|
|
303
|
+
.then(data => {
|
|
304
|
+
metadata = data;
|
|
305
|
+
applyMetadata();
|
|
306
|
+
})
|
|
307
|
+
.catch(error => {
|
|
308
|
+
console.warn('Could not load metadata.json, using fallback descriptions', error);
|
|
309
|
+
applyLegacyDescriptions();
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function applyMetadata() {
|
|
314
|
+
for (let i = 0; i < icons.length; i++) {
|
|
315
|
+
let icon = icons[i];
|
|
316
|
+
let name = icon.getAttribute('data-name');
|
|
317
|
+
|
|
318
|
+
if (metadata[name]) {
|
|
319
|
+
let meta = metadata[name];
|
|
320
|
+
let tags = meta.tags ? meta.tags.join(' ') : '';
|
|
321
|
+
let description = meta.description || '';
|
|
322
|
+
|
|
323
|
+
icon.setAttribute('data-tags', tags);
|
|
324
|
+
icon.setAttribute('data-description', description);
|
|
325
|
+
|
|
326
|
+
// Update visible description
|
|
327
|
+
let descriptionSpan = icon.querySelector('.description');
|
|
328
|
+
if (descriptionSpan) {
|
|
329
|
+
descriptionSpan.innerHTML = description + (tags ? ' - ' + tags : '');
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
461
334
|
|
|
462
|
-
|
|
463
|
-
let
|
|
464
|
-
|
|
465
|
-
|
|
335
|
+
function applyLegacyDescriptions() {
|
|
336
|
+
let descriptions = [
|
|
337
|
+
{
|
|
338
|
+
name: 'account',
|
|
339
|
+
description: 'person people face user contact outline'
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
name: 'activate-breakpoints',
|
|
343
|
+
description: 'dot circle toggle switch'
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
name: 'add',
|
|
347
|
+
description: 'combine plus add more new'
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: 'archive',
|
|
351
|
+
description: 'save box delivery package'
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
name: 'arrow-both',
|
|
355
|
+
description: 'switch swap'
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
name: 'attach',
|
|
359
|
+
description: 'clip paperclip file link connect add'
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: 'beaker',
|
|
363
|
+
description: 'test lab tube tool'
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
name: 'bell',
|
|
367
|
+
description: 'alert notify notification'
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
name: 'bell-dot',
|
|
371
|
+
description: 'alert notify notification'
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
name: 'bold',
|
|
375
|
+
description: 'text format weight font style'
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
name: 'book',
|
|
379
|
+
description: 'library text read open'
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
name: 'bookmark',
|
|
383
|
+
description: 'book save later'
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
name: 'briefcase',
|
|
387
|
+
description: 'work workplace'
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
name: 'broadcast',
|
|
391
|
+
description: 'tower signal connect connection'
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
name: 'browser',
|
|
395
|
+
description: 'web internet page window'
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: 'bug',
|
|
399
|
+
description: 'error issue insect block'
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: 'calendar',
|
|
403
|
+
description: 'day time week month date schedule event planner'
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
name: 'call-incoming',
|
|
407
|
+
description: 'phone cell voice connection direction'
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
name: 'call-outgoing',
|
|
411
|
+
description: 'phone cell voice connection direction'
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
name: 'case-sensitive',
|
|
415
|
+
description: 'search filter option letters words'
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
name: 'check-all',
|
|
419
|
+
description: 'checkmark select everything checked mark complete finish done accept approve'
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
name: 'check',
|
|
423
|
+
description: 'checkmark select everything checked mark complete finish done accept approve'
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
name: 'checklist',
|
|
427
|
+
description: 'checkmark select everything checked mark complete finish done accept todo task text'
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
name: 'chevron-down',
|
|
431
|
+
description: 'twistie tree node folder fold collapse'
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
name: 'chevron-left',
|
|
435
|
+
description: 'twistie tree node folder fold collapse'
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: 'chevron-right',
|
|
439
|
+
description: 'twistie tree node folder fold collapse'
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
name: 'chevron-up',
|
|
443
|
+
description: 'twistie tree node folder fold collapse'
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
name: 'chrome-close',
|
|
447
|
+
description: 'menu bar window dismiss'
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
name: 'chrome-maximize',
|
|
451
|
+
description: 'menu bar window large increase'
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
name: 'chrome-minimize',
|
|
455
|
+
description: 'menu bar window small decrease'
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
name: 'chrome-restore',
|
|
459
|
+
description: 'menu bar window'
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
name: 'circle-filled',
|
|
463
|
+
description: 'dot round small bullet breakpoint'
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
name: 'circle-large-filled',
|
|
467
|
+
description: 'dot round bullet'
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
name: 'circle-large',
|
|
471
|
+
description: 'dot round bullet'
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
name: 'circle',
|
|
475
|
+
description: 'dot round small bullet unverified breakpoint'
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
name: 'circle-slash',
|
|
479
|
+
description: 'error block stop disable'
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
name: 'circuit-board',
|
|
483
|
+
description: 'iot device process lines'
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
name: 'clear-all',
|
|
487
|
+
description: 'reset remove'
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
name: 'clippy',
|
|
491
|
+
description: 'clipboard document edit copy'
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: 'close-all',
|
|
495
|
+
description: 'remove bulk'
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
name: 'close',
|
|
499
|
+
description: 'remove x cancel stop miltiply'
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
name: 'cloud-download',
|
|
503
|
+
description: 'install import'
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
name: 'cloud-upload',
|
|
507
|
+
description: 'export'
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
name: 'cloud',
|
|
511
|
+
description: 'online service'
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
name: 'code',
|
|
515
|
+
description: 'embed script programming server'
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
name: 'collapse-all',
|
|
519
|
+
description: 'bulk fold minimize'
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
name: 'color-mode',
|
|
523
|
+
description: 'switch dark light contrast mode toggle'
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: 'comment-discussion',
|
|
527
|
+
description: 'dialog message bubble chat'
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
name: 'comment',
|
|
531
|
+
description: 'dialog message bubble chat'
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
name: 'credit-card',
|
|
535
|
+
description: 'payment merchant money'
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
name: 'dash',
|
|
539
|
+
description: 'line minus subtract hyphen'
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
name: 'dashboard',
|
|
543
|
+
description: 'panel stats dial'
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
name: 'database',
|
|
547
|
+
description: 'sql db storage online cloud'
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
name: 'debug-alt-small',
|
|
551
|
+
description: 'run'
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: 'debug-alt',
|
|
555
|
+
description: 'run'
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
name: 'debug-console',
|
|
559
|
+
description: 'terminal command input compile build'
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
name: 'debug-disconnect',
|
|
563
|
+
description: 'stop unplug eject'
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
name: 'desktop-download',
|
|
567
|
+
description: 'install'
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
name: 'device-camera-video',
|
|
571
|
+
description: 'movie record capture'
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
name: 'device-camera',
|
|
575
|
+
description: 'capture picture image'
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
name: 'device-mobile',
|
|
579
|
+
description: 'phone handheld smartphone'
|
|
580
|
+
},
|
|
581
|
+
{
|
|
582
|
+
name: 'diff-added',
|
|
583
|
+
description: 'git change'
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
name: 'diff-ignored',
|
|
587
|
+
description: 'git change'
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
name: 'diff-modified',
|
|
591
|
+
description: 'git change'
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
name: 'diff-renamed',
|
|
595
|
+
description: 'git change'
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
name: 'diff-removed',
|
|
599
|
+
description: 'git change'
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
name: 'play-circle',
|
|
603
|
+
description: 'run'
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: 'pass',
|
|
607
|
+
description: 'play check checkmark outline issue closed'
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
name: 'pass-filled',
|
|
611
|
+
description: 'play check checkmark filled issue closed'
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
name: 'play',
|
|
615
|
+
description: 'run'
|
|
616
|
+
},
|
|
617
|
+
];
|
|
618
|
+
|
|
619
|
+
descriptions.some(function(item) {
|
|
620
|
+
let findIcon = document.querySelectorAll(`[data-name="${item.name}"]`);
|
|
621
|
+
if (findIcon[0]) {
|
|
622
|
+
findIcon[0].querySelector('.description').innerHTML += item.description;
|
|
623
|
+
findIcon[0].setAttribute('data-description', item.description);
|
|
624
|
+
}
|
|
625
|
+
});
|
|
626
|
+
}
|
|
466
627
|
|
|
467
|
-
|
|
628
|
+
// Copy functionality
|
|
629
|
+
function copyToClipboard(text, displayText) {
|
|
630
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
631
|
+
navigator.clipboard.writeText(text).then(function() {
|
|
632
|
+
notificationText.innerHTML = displayText;
|
|
633
|
+
animateNotification();
|
|
634
|
+
}).catch(function() {
|
|
635
|
+
// Fallback to old method
|
|
636
|
+
copier.value = text;
|
|
637
|
+
copier.select();
|
|
638
|
+
copier.setSelectionRange(0, 99999);
|
|
639
|
+
document.execCommand('copy');
|
|
640
|
+
notificationText.innerHTML = displayText;
|
|
641
|
+
animateNotification();
|
|
642
|
+
});
|
|
643
|
+
} else {
|
|
644
|
+
copier.value = text;
|
|
468
645
|
copier.select();
|
|
469
|
-
copier.setSelectionRange(0, 99999)
|
|
646
|
+
copier.setSelectionRange(0, 99999);
|
|
470
647
|
document.execCommand('copy');
|
|
471
|
-
|
|
472
|
-
notificationText.innerHTML = name;
|
|
648
|
+
notificationText.innerHTML = displayText;
|
|
473
649
|
animateNotification();
|
|
474
|
-
e.preventDefault();
|
|
475
650
|
}
|
|
476
651
|
}
|
|
477
652
|
|
|
653
|
+
// Setup copy buttons for each icon
|
|
654
|
+
for(let i=0;i<icons.length;i++){
|
|
655
|
+
let icon = icons[i];
|
|
656
|
+
|
|
657
|
+
// Copy name button
|
|
658
|
+
let copyNameBtn = icon.querySelector('.copy-name-btn');
|
|
659
|
+
copyNameBtn.onclick = function(e){
|
|
660
|
+
e.stopPropagation();
|
|
661
|
+
let iconName = this.closest('.icon').getAttribute('data-name');
|
|
662
|
+
copyToClipboard(iconName, iconName);
|
|
663
|
+
};
|
|
664
|
+
|
|
665
|
+
// Copy SVG button
|
|
666
|
+
let copySvgBtn = icon.querySelector('.copy-svg-btn');
|
|
667
|
+
copySvgBtn.onclick = function(e){
|
|
668
|
+
e.stopPropagation();
|
|
669
|
+
let iconName = this.closest('.icon').getAttribute('data-name');
|
|
670
|
+
if (svgData[iconName]) {
|
|
671
|
+
copyToClipboard(svgData[iconName], iconName + ' (SVG)');
|
|
672
|
+
} else {
|
|
673
|
+
// Fallback: try to fetch SVG if not in embedded data
|
|
674
|
+
fetch('icons/' + iconName + '.svg')
|
|
675
|
+
.then(response => response.text())
|
|
676
|
+
.then(svg => {
|
|
677
|
+
copyToClipboard(svg, iconName + ' (SVG)');
|
|
678
|
+
})
|
|
679
|
+
.catch(error => {
|
|
680
|
+
console.warn('Could not fetch SVG for ' + iconName, error);
|
|
681
|
+
notificationText.innerHTML = 'SVG not available';
|
|
682
|
+
animateNotification();
|
|
683
|
+
});
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
|
|
478
688
|
function animateNotification(){
|
|
479
689
|
window.clearTimeout(timer);
|
|
480
690
|
search.focus();
|
|
@@ -494,11 +704,16 @@
|
|
|
494
704
|
let icon = wrapper.getElementsByTagName('div');
|
|
495
705
|
|
|
496
706
|
for (i = 0; i < icon.length; i++) {
|
|
497
|
-
let
|
|
707
|
+
let name = icon[i].getAttribute('data-name') || '';
|
|
708
|
+
let tags = icon[i].getAttribute('data-tags') || '';
|
|
709
|
+
let description = icon[i].getAttribute('data-description') || '';
|
|
710
|
+
let textInner = sanitizeText(icon[i].innerText);
|
|
498
711
|
let textContents = sanitizeText(icon[i].textContent);
|
|
499
|
-
|
|
712
|
+
|
|
713
|
+
// Search in name, tags, description, and text content
|
|
714
|
+
let searchableText = (name + ' ' + tags + ' ' + description + ' ' + textContents + ' ' + textInner).toUpperCase();
|
|
500
715
|
|
|
501
|
-
if (
|
|
716
|
+
if (searchableText.indexOf(filter) > -1) {
|
|
502
717
|
icon[i].style.display = '';
|
|
503
718
|
} else {
|
|
504
719
|
icon[i].style.display = 'none';
|
|
@@ -508,6 +723,53 @@
|
|
|
508
723
|
|
|
509
724
|
search.focus();
|
|
510
725
|
|
|
726
|
+
// Theme toggle functionality
|
|
727
|
+
const themeToggle = document.getElementById('theme-toggle');
|
|
728
|
+
const html = document.documentElement;
|
|
729
|
+
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
|
|
730
|
+
|
|
731
|
+
// Function to get the theme: check localStorage first, then system preference
|
|
732
|
+
function getTheme() {
|
|
733
|
+
const savedTheme = localStorage.getItem('theme');
|
|
734
|
+
if (savedTheme) {
|
|
735
|
+
return savedTheme;
|
|
736
|
+
}
|
|
737
|
+
return prefersDarkScheme.matches ? 'dark' : 'light';
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
// Initialize theme
|
|
741
|
+
const currentTheme = getTheme();
|
|
742
|
+
html.setAttribute('data-theme', currentTheme);
|
|
743
|
+
updateThemeButton(currentTheme);
|
|
744
|
+
|
|
745
|
+
// Listen for system theme changes
|
|
746
|
+
prefersDarkScheme.addEventListener('change', function(e) {
|
|
747
|
+
// Only update if user hasn't manually set a preference
|
|
748
|
+
if (!localStorage.getItem('theme')) {
|
|
749
|
+
const newTheme = e.matches ? 'dark' : 'light';
|
|
750
|
+
html.setAttribute('data-theme', newTheme);
|
|
751
|
+
updateThemeButton(newTheme);
|
|
752
|
+
}
|
|
753
|
+
});
|
|
754
|
+
|
|
755
|
+
// Manual toggle
|
|
756
|
+
themeToggle.addEventListener('click', function() {
|
|
757
|
+
const currentTheme = html.getAttribute('data-theme');
|
|
758
|
+
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
|
|
759
|
+
|
|
760
|
+
html.setAttribute('data-theme', newTheme);
|
|
761
|
+
localStorage.setItem('theme', newTheme);
|
|
762
|
+
updateThemeButton(newTheme);
|
|
763
|
+
});
|
|
764
|
+
|
|
765
|
+
function updateThemeButton(theme) {
|
|
766
|
+
if (theme === 'dark') {
|
|
767
|
+
themeToggle.innerHTML = '<i class="codicon codicon-color-mode"></i> Light Mode';
|
|
768
|
+
} else {
|
|
769
|
+
themeToggle.innerHTML = '<i class="codicon codicon-color-mode"></i> Dark Mode';
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
|
|
511
773
|
</script>
|
|
512
774
|
</body>
|
|
513
775
|
</html>
|