ag-design 1.0.89 → 1.0.91
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/assets/static/fonts/ag-icons.css +493 -493
- package/assets/static/fonts/ag-icons.json +1668 -1668
- package/assets/static/fonts/ag-icons.ttf +0 -0
- package/assets/static/fonts/ag-icons.woff +0 -0
- package/assets/static/fonts/ag-icons.woff2 +0 -0
- package/assets/static/fonts/icon-gallery.html +366 -0
- package/fonts/ag-icons.css +493 -493
- package/fonts/ag-icons.json +1668 -1668
- package/fonts/ag-icons.ttf +0 -0
- package/fonts/ag-icons.woff +0 -0
- package/fonts/ag-icons.woff2 +0 -0
- package/fonts/icon-gallery.html +366 -0
- package/package.json +1 -1
- package/assets/static/fonts/all-icons-gallery.html +0 -379
- package/assets/static/fonts/all-icons.html +0 -174
- package/assets/static/fonts/debug-fonts.html +0 -163
- package/assets/static/fonts/direct-test.html +0 -58
- package/assets/static/fonts/final-test.html +0 -79
- package/assets/static/fonts/icon-preview.html +0 -195
- package/assets/static/fonts/index.html +0 -194
- package/assets/static/fonts/preview.html +0 -391
- package/assets/static/fonts/simple-test.html +0 -73
- package/assets/static/fonts/simplified-test.html +0 -67
- package/assets/static/fonts/standalone.html +0 -268
- package/assets/static/fonts/test-glyph.html +0 -50
- package/assets/static/fonts/test-icon.html +0 -33
- package/assets/static/fonts/test.html +0 -38
- package/fonts/all-icons-gallery.html +0 -379
- package/fonts/all-icons.html +0 -174
- package/fonts/debug-fonts.html +0 -163
- package/fonts/direct-test.html +0 -58
- package/fonts/final-test.html +0 -79
- package/fonts/icon-preview.html +0 -195
- package/fonts/index.html +0 -194
- package/fonts/preview.html +0 -391
- package/fonts/simple-test.html +0 -73
- package/fonts/simplified-test.html +0 -67
- package/fonts/standalone.html +0 -268
- package/fonts/test-glyph.html +0 -50
- package/fonts/test-icon.html +0 -33
- package/fonts/test.html +0 -38
package/fonts/ag-icons.ttf
CHANGED
|
Binary file
|
package/fonts/ag-icons.woff
CHANGED
|
Binary file
|
package/fonts/ag-icons.woff2
CHANGED
|
Binary file
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>AG Icons Gallery</title>
|
|
7
|
+
<link rel="stylesheet" href="./ag-icons.css">
|
|
8
|
+
<style>
|
|
9
|
+
* {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body {
|
|
16
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
17
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
18
|
+
min-height: 100vh;
|
|
19
|
+
padding: 40px 20px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.container {
|
|
23
|
+
max-width: 1400px;
|
|
24
|
+
margin: 0 auto;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.header {
|
|
28
|
+
text-align: center;
|
|
29
|
+
color: white;
|
|
30
|
+
margin-bottom: 50px;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.header h1 {
|
|
34
|
+
font-size: 3em;
|
|
35
|
+
margin-bottom: 10px;
|
|
36
|
+
font-weight: 700;
|
|
37
|
+
text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.header p {
|
|
41
|
+
font-size: 1.1em;
|
|
42
|
+
opacity: 0.95;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.controls {
|
|
46
|
+
display: flex;
|
|
47
|
+
gap: 15px;
|
|
48
|
+
margin-bottom: 30px;
|
|
49
|
+
flex-wrap: wrap;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.search-box {
|
|
54
|
+
flex: 0 1 300px;
|
|
55
|
+
padding: 12px 20px;
|
|
56
|
+
font-size: 1em;
|
|
57
|
+
border: none;
|
|
58
|
+
border-radius: 8px;
|
|
59
|
+
background: white;
|
|
60
|
+
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.search-box::placeholder {
|
|
64
|
+
color: #999;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.size-buttons {
|
|
68
|
+
display: flex;
|
|
69
|
+
gap: 10px;
|
|
70
|
+
background: rgba(255, 255, 255, 0.2);
|
|
71
|
+
padding: 8px;
|
|
72
|
+
border-radius: 8px;
|
|
73
|
+
backdrop-filter: blur(10px);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.size-btn {
|
|
77
|
+
padding: 10px 15px;
|
|
78
|
+
background: rgba(255, 255, 255, 0.3);
|
|
79
|
+
border: 2px solid transparent;
|
|
80
|
+
border-radius: 6px;
|
|
81
|
+
color: white;
|
|
82
|
+
cursor: pointer;
|
|
83
|
+
font-weight: 500;
|
|
84
|
+
transition: all 0.3s ease;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.size-btn.active,
|
|
88
|
+
.size-btn:hover {
|
|
89
|
+
background: white;
|
|
90
|
+
color: #667eea;
|
|
91
|
+
border-color: white;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.gallery {
|
|
95
|
+
display: grid;
|
|
96
|
+
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
|
|
97
|
+
gap: 20px;
|
|
98
|
+
animation: fadeIn 0.5s ease;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.gallery.large {
|
|
102
|
+
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.gallery.xl {
|
|
106
|
+
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.icon-item {
|
|
110
|
+
background: white;
|
|
111
|
+
border-radius: 12px;
|
|
112
|
+
padding: 20px;
|
|
113
|
+
text-align: center;
|
|
114
|
+
cursor: pointer;
|
|
115
|
+
transition: all 0.3s ease;
|
|
116
|
+
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
|
117
|
+
position: relative;
|
|
118
|
+
overflow: hidden;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.icon-item::before {
|
|
122
|
+
content: '';
|
|
123
|
+
position: absolute;
|
|
124
|
+
top: 0;
|
|
125
|
+
left: 0;
|
|
126
|
+
right: 0;
|
|
127
|
+
bottom: 0;
|
|
128
|
+
background: linear-gradient(135deg, rgba(102, 126, 234, 0.1), rgba(118, 75, 162, 0.1));
|
|
129
|
+
opacity: 0;
|
|
130
|
+
transition: opacity 0.3s ease;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.icon-item:hover {
|
|
134
|
+
transform: translateY(-8px);
|
|
135
|
+
box-shadow: 0 12px 25px rgba(0, 0, 0, 0.15);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.icon-item:hover::before {
|
|
139
|
+
opacity: 1;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.icon-display {
|
|
143
|
+
font-size: 3em;
|
|
144
|
+
margin-bottom: 12px;
|
|
145
|
+
height: 60px;
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
justify-content: center;
|
|
149
|
+
position: relative;
|
|
150
|
+
z-index: 1;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.icon-name {
|
|
154
|
+
font-size: 0.85em;
|
|
155
|
+
color: #333;
|
|
156
|
+
font-weight: 500;
|
|
157
|
+
margin-bottom: 8px;
|
|
158
|
+
word-break: break-word;
|
|
159
|
+
position: relative;
|
|
160
|
+
z-index: 1;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.icon-code {
|
|
164
|
+
font-size: 0.75em;
|
|
165
|
+
color: #999;
|
|
166
|
+
font-family: 'Courier New', monospace;
|
|
167
|
+
position: relative;
|
|
168
|
+
z-index: 1;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.copy-indicator {
|
|
172
|
+
position: absolute;
|
|
173
|
+
top: 50%;
|
|
174
|
+
left: 50%;
|
|
175
|
+
transform: translate(-50%, -50%);
|
|
176
|
+
background: rgba(102, 126, 234, 0.9);
|
|
177
|
+
color: white;
|
|
178
|
+
padding: 8px 16px;
|
|
179
|
+
border-radius: 6px;
|
|
180
|
+
font-size: 0.8em;
|
|
181
|
+
font-weight: 600;
|
|
182
|
+
opacity: 0;
|
|
183
|
+
pointer-events: none;
|
|
184
|
+
transition: opacity 0.3s ease;
|
|
185
|
+
z-index: 10;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.icon-item.copied .copy-indicator {
|
|
189
|
+
opacity: 1;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.stats {
|
|
193
|
+
text-align: center;
|
|
194
|
+
color: white;
|
|
195
|
+
margin-top: 30px;
|
|
196
|
+
font-size: 1.1em;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@keyframes fadeIn {
|
|
200
|
+
from {
|
|
201
|
+
opacity: 0;
|
|
202
|
+
transform: translateY(10px);
|
|
203
|
+
}
|
|
204
|
+
to {
|
|
205
|
+
opacity: 1;
|
|
206
|
+
transform: translateY(0);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.no-results {
|
|
211
|
+
text-align: center;
|
|
212
|
+
padding: 60px 20px;
|
|
213
|
+
color: white;
|
|
214
|
+
font-size: 1.2em;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@media (max-width: 768px) {
|
|
218
|
+
.header h1 {
|
|
219
|
+
font-size: 2em;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.controls {
|
|
223
|
+
flex-direction: column;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.search-box {
|
|
227
|
+
flex: 1;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
.gallery {
|
|
231
|
+
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
|
232
|
+
gap: 15px;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
</style>
|
|
236
|
+
</head>
|
|
237
|
+
<body>
|
|
238
|
+
<div class="container">
|
|
239
|
+
<div class="header">
|
|
240
|
+
<h1>AG Icons Gallery</h1>
|
|
241
|
+
<p>Explore all available icons • Click to copy class name</p>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<div class="controls">
|
|
245
|
+
<input
|
|
246
|
+
type="text"
|
|
247
|
+
class="search-box"
|
|
248
|
+
id="searchInput"
|
|
249
|
+
placeholder="Search icons... (e.g., arrow, user, home)"
|
|
250
|
+
autocomplete="off"
|
|
251
|
+
>
|
|
252
|
+
<div class="size-buttons">
|
|
253
|
+
<button class="size-btn active" data-size="normal">Normal</button>
|
|
254
|
+
<button class="size-btn" data-size="large">Large</button>
|
|
255
|
+
<button class="size-btn" data-size="xl">Extra Large</button>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div class="gallery" id="gallery"></div>
|
|
260
|
+
|
|
261
|
+
<div class="stats">
|
|
262
|
+
<p>Displaying <span id="count">0</span> icons</p>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
<script>
|
|
267
|
+
// Load icons from ag-icons.json
|
|
268
|
+
const agIconsUrl = './ag-icons.json';
|
|
269
|
+
let allIcons = {};
|
|
270
|
+
let flatIcons = [];
|
|
271
|
+
|
|
272
|
+
async function loadIcons() {
|
|
273
|
+
try {
|
|
274
|
+
const response = await fetch(agIconsUrl);
|
|
275
|
+
const data = await response.json();
|
|
276
|
+
|
|
277
|
+
// Flatten the nested structure
|
|
278
|
+
flatIcons = [];
|
|
279
|
+
for (const [category, icons] of Object.entries(data)) {
|
|
280
|
+
for (const [name, iconData] of Object.entries(icons)) {
|
|
281
|
+
flatIcons.push({
|
|
282
|
+
name: name,
|
|
283
|
+
category: category,
|
|
284
|
+
class: iconData.class,
|
|
285
|
+
glyph: iconData.glyph,
|
|
286
|
+
hex: iconData.hex
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Create lookup object
|
|
292
|
+
allIcons = flatIcons.reduce((acc, icon) => {
|
|
293
|
+
acc[icon.name] = icon;
|
|
294
|
+
return acc;
|
|
295
|
+
}, {});
|
|
296
|
+
|
|
297
|
+
renderGallery(flatIcons);
|
|
298
|
+
} catch (error) {
|
|
299
|
+
console.error('Failed to load icons:', error);
|
|
300
|
+
document.getElementById('gallery').innerHTML =
|
|
301
|
+
'<div class="no-results">Failed to load ag-icons.json. Check the dev server console for details.</div>';
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function renderGallery(icons) {
|
|
306
|
+
const gallery = document.getElementById('gallery');
|
|
307
|
+
gallery.innerHTML = '';
|
|
308
|
+
|
|
309
|
+
if (icons.length === 0) {
|
|
310
|
+
gallery.innerHTML = '<div class="no-results">No icons found</div>';
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
icons.forEach((icon) => {
|
|
315
|
+
const item = document.createElement('div');
|
|
316
|
+
item.className = 'icon-item';
|
|
317
|
+
item.innerHTML = `
|
|
318
|
+
<div class="copy-indicator">Copied!</div>
|
|
319
|
+
<div class="icon-display"><i class="${icon.class}"></i></div>
|
|
320
|
+
<div class="icon-name">${icon.name}</div>
|
|
321
|
+
<div class="icon-code">${icon.class}</div>
|
|
322
|
+
`;
|
|
323
|
+
|
|
324
|
+
item.addEventListener('click', () => {
|
|
325
|
+
navigator.clipboard.writeText(icon.class).then(() => {
|
|
326
|
+
item.classList.add('copied');
|
|
327
|
+
setTimeout(() => item.classList.remove('copied'), 1500);
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
gallery.appendChild(item);
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
document.getElementById('count').textContent = icons.length;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// Search functionality
|
|
338
|
+
document.getElementById('searchInput').addEventListener('input', (e) => {
|
|
339
|
+
const searchTerm = e.target.value.toLowerCase();
|
|
340
|
+
const filtered = flatIcons.filter(icon =>
|
|
341
|
+
icon.name.toLowerCase().includes(searchTerm) ||
|
|
342
|
+
icon.category.toLowerCase().includes(searchTerm) ||
|
|
343
|
+
icon.class.toLowerCase().includes(searchTerm)
|
|
344
|
+
);
|
|
345
|
+
renderGallery(filtered);
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// Size controls
|
|
349
|
+
document.querySelectorAll('.size-btn').forEach(btn => {
|
|
350
|
+
btn.addEventListener('click', () => {
|
|
351
|
+
document.querySelectorAll('.size-btn').forEach(b => b.classList.remove('active'));
|
|
352
|
+
btn.classList.add('active');
|
|
353
|
+
|
|
354
|
+
const gallery = document.getElementById('gallery');
|
|
355
|
+
gallery.classList.remove('large', 'xl');
|
|
356
|
+
if (btn.dataset.size !== 'normal') {
|
|
357
|
+
gallery.classList.add(btn.dataset.size);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
// Load icons on page load
|
|
363
|
+
loadIcons();
|
|
364
|
+
</script>
|
|
365
|
+
</body>
|
|
366
|
+
</html>
|