@shumoku/icons 0.1.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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Build script to convert vendor SVG files to TypeScript
3
+ * Run with: npx tsx src/build-icons.ts
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=build-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-icons.d.ts","sourceRoot":"","sources":["../src/build-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,315 @@
1
+ /**
2
+ * Build script to convert vendor SVG files to TypeScript
3
+ * Run with: npx tsx src/build-icons.ts
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import sharp from 'sharp';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ const ICONS_DIR = path.join(__dirname);
12
+ const OUTPUT_FILE = path.join(__dirname, 'generated-icons.ts');
13
+ // Max width for resized PNG icons (height scales proportionally)
14
+ const MAX_ICON_WIDTH = 400;
15
+ function extractSvgContent(svgContent) {
16
+ const svgTagMatch = svgContent.match(/<svg([^>]*)>/i);
17
+ let viewBox;
18
+ if (svgTagMatch) {
19
+ const viewBoxMatch = svgTagMatch[1].match(/viewBox="([^"]+)"/i);
20
+ if (viewBoxMatch) {
21
+ viewBox = viewBoxMatch[1];
22
+ }
23
+ }
24
+ const contentMatch = svgContent.match(/<svg[^>]*>([\s\S]*?)<\/svg>/i);
25
+ if (!contentMatch)
26
+ return { content: '' };
27
+ const content = contentMatch[1].trim().replace(/\s+/g, ' ');
28
+ return { content, viewBox };
29
+ }
30
+ async function convertPngToOptimizedImageTag(filePath) {
31
+ // Read and get original dimensions
32
+ const image = sharp(filePath);
33
+ const metadata = await image.metadata();
34
+ const origWidth = metadata.width || 100;
35
+ const origHeight = metadata.height || 100;
36
+ // Calculate new dimensions (max width 400, maintain aspect ratio)
37
+ let newWidth = origWidth;
38
+ let newHeight = origHeight;
39
+ if (origWidth > MAX_ICON_WIDTH) {
40
+ newWidth = MAX_ICON_WIDTH;
41
+ newHeight = Math.round((origHeight / origWidth) * MAX_ICON_WIDTH);
42
+ }
43
+ // Resize and compress
44
+ const optimizedBuffer = await image
45
+ .resize(newWidth, newHeight, { fit: 'inside' })
46
+ .png({ compressionLevel: 9, palette: true })
47
+ .toBuffer();
48
+ const base64 = optimizedBuffer.toString('base64');
49
+ // Normalize for viewBox (height = 48)
50
+ const normalizedWidth = Math.round((newWidth / newHeight) * 48);
51
+ const normalizedHeight = 48;
52
+ return `<svg viewBox="0 0 ${normalizedWidth} ${normalizedHeight}" width="100%" height="100%"><image href="data:image/png;base64,${base64}" width="${normalizedWidth}" height="${normalizedHeight}" preserveAspectRatio="xMidYMid meet"/></svg>`;
53
+ }
54
+ function parseAWSFilename(filename) {
55
+ let name = filename.replace(/\.svg$/i, '');
56
+ let variant = 'default';
57
+ if (name.endsWith('_Light')) {
58
+ variant = 'light';
59
+ name = name.slice(0, -6);
60
+ }
61
+ else if (name.endsWith('_Dark')) {
62
+ variant = 'dark';
63
+ name = name.slice(0, -5);
64
+ }
65
+ if (!name.startsWith('Res_')) {
66
+ return null;
67
+ }
68
+ name = name.slice(4);
69
+ name = name.replace(/_48$/, '');
70
+ const amazonMatch = name.match(/^Amazon-([^_]+)_(.+)$/);
71
+ if (amazonMatch) {
72
+ const service = normalizeServiceName(amazonMatch[1]);
73
+ const resource = normalizeResourceName(amazonMatch[2]);
74
+ return { key: `${service}/${resource}`, variant };
75
+ }
76
+ const awsMatch = name.match(/^AWS-([^_]+)_(.+)$/);
77
+ if (awsMatch) {
78
+ const service = normalizeServiceName(awsMatch[1]);
79
+ const resource = normalizeResourceName(awsMatch[2]);
80
+ return { key: `${service}/${resource}`, variant };
81
+ }
82
+ const resource = normalizeResourceName(name);
83
+ return { key: `general/${resource}`, variant };
84
+ }
85
+ function normalizeServiceName(name) {
86
+ return name.toLowerCase().replace(/-/g, '');
87
+ }
88
+ function normalizeResourceName(name) {
89
+ return name.toLowerCase().replace(/_/g, '-').replace(/\s+/g, '-');
90
+ }
91
+ function normalizeArubaIconName(filename) {
92
+ let name = filename.replace(/\.(svg|png)$/i, '');
93
+ const prefixes = ['Device - ', 'Client - ', 'Generic - ', 'Function - '];
94
+ for (const prefix of prefixes) {
95
+ if (name.startsWith(prefix)) {
96
+ name = name.slice(prefix.length);
97
+ break;
98
+ }
99
+ }
100
+ return name.toLowerCase().replace(/\s+/g, '-');
101
+ }
102
+ async function scanVendorIconFolder(folderPath, vendorName) {
103
+ const icons = {};
104
+ if (!fs.existsSync(folderPath)) {
105
+ return icons;
106
+ }
107
+ const files = fs.readdirSync(folderPath);
108
+ for (const file of files) {
109
+ const filePath = path.join(folderPath, file);
110
+ if (file.endsWith('.svg')) {
111
+ const content = fs.readFileSync(filePath, 'utf-8');
112
+ const iconName = vendorName === 'aruba'
113
+ ? normalizeArubaIconName(file)
114
+ : file.replace('.svg', '').toLowerCase();
115
+ const { content: svgContent, viewBox } = extractSvgContent(content);
116
+ if (svgContent) {
117
+ icons[iconName] = { default: svgContent, viewBox };
118
+ }
119
+ }
120
+ else if (file.endsWith('.png')) {
121
+ const iconName = vendorName === 'aruba'
122
+ ? normalizeArubaIconName(file)
123
+ : file.replace('.png', '').toLowerCase();
124
+ try {
125
+ const imageContent = await convertPngToOptimizedImageTag(filePath);
126
+ icons[iconName] = { default: imageContent };
127
+ }
128
+ catch (err) {
129
+ console.warn(` Warning: Failed to process ${file}: ${err}`);
130
+ }
131
+ }
132
+ }
133
+ return icons;
134
+ }
135
+ function scanAWSIconFolder(folderPath) {
136
+ const icons = {};
137
+ if (!fs.existsSync(folderPath)) {
138
+ return icons;
139
+ }
140
+ const files = fs.readdirSync(folderPath);
141
+ for (const file of files) {
142
+ if (!file.endsWith('.svg'))
143
+ continue;
144
+ const parsed = parseAWSFilename(file);
145
+ if (!parsed)
146
+ continue;
147
+ const filePath = path.join(folderPath, file);
148
+ const content = fs.readFileSync(filePath, 'utf-8');
149
+ const { content: svgContent, viewBox } = extractSvgContent(content);
150
+ if (!svgContent)
151
+ continue;
152
+ const { key, variant } = parsed;
153
+ if (!icons[key]) {
154
+ icons[key] = { default: '', viewBox: viewBox || '0 0 48 48' };
155
+ }
156
+ if (variant === 'light') {
157
+ icons[key].light = svgContent;
158
+ if (!icons[key].default) {
159
+ icons[key].default = svgContent;
160
+ }
161
+ }
162
+ else if (variant === 'dark') {
163
+ icons[key].dark = svgContent;
164
+ }
165
+ else {
166
+ icons[key].default = svgContent;
167
+ }
168
+ }
169
+ for (const [_key, entry] of Object.entries(icons)) {
170
+ if (!entry.default && entry.light) {
171
+ entry.default = entry.light;
172
+ }
173
+ }
174
+ return icons;
175
+ }
176
+ function generateTypeScript(iconSets) {
177
+ const lines = [
178
+ '/**',
179
+ ' * Auto-generated vendor icon definitions',
180
+ ' * DO NOT EDIT - Run build-icons.ts to regenerate',
181
+ ' */',
182
+ '',
183
+ "export type IconThemeVariant = 'light' | 'dark' | 'default'",
184
+ '',
185
+ 'export interface VendorIconEntry {',
186
+ ' default: string',
187
+ ' light?: string',
188
+ ' dark?: string',
189
+ ' viewBox?: string',
190
+ '}',
191
+ '',
192
+ ];
193
+ const vendorVarNames = {};
194
+ for (const vendorSet of iconSets) {
195
+ const varName = `${vendorSet.name}Icons`;
196
+ vendorVarNames[vendorSet.name] = varName;
197
+ lines.push(`// ${vendorSet.name.toUpperCase()} icons`);
198
+ lines.push(`const ${varName}: Record<string, VendorIconEntry> = {`);
199
+ const sortedKeys = Object.keys(vendorSet.icons).sort();
200
+ for (const key of sortedKeys) {
201
+ const entry = vendorSet.icons[key];
202
+ const escapedDefault = entry.default.replace(/`/g, '\\`');
203
+ if (entry.light || entry.dark || entry.viewBox) {
204
+ lines.push(` '${key}': {`);
205
+ lines.push(` default: \`${escapedDefault}\`,`);
206
+ if (entry.light) {
207
+ const escapedLight = entry.light.replace(/`/g, '\\`');
208
+ lines.push(` light: \`${escapedLight}\`,`);
209
+ }
210
+ if (entry.dark) {
211
+ const escapedDark = entry.dark.replace(/`/g, '\\`');
212
+ lines.push(` dark: \`${escapedDark}\`,`);
213
+ }
214
+ if (entry.viewBox) {
215
+ lines.push(` viewBox: '${entry.viewBox}',`);
216
+ }
217
+ lines.push(' },');
218
+ }
219
+ else {
220
+ lines.push(` '${key}': { default: \`${escapedDefault}\` },`);
221
+ }
222
+ }
223
+ lines.push('}');
224
+ lines.push('');
225
+ }
226
+ // Generate all vendor icons lookup
227
+ lines.push('// All vendor icon sets');
228
+ lines.push('export const vendorIconSets: Record<string, Record<string, VendorIconEntry>> = {');
229
+ for (const vendorSet of iconSets) {
230
+ lines.push(` '${vendorSet.name}': ${vendorVarNames[vendorSet.name]},`);
231
+ }
232
+ lines.push('}');
233
+ lines.push('');
234
+ // Generate getter function
235
+ lines.push('/**');
236
+ lines.push(' * Get vendor icon entry by vendor, service, and optional resource');
237
+ lines.push(' */');
238
+ lines.push('export function getVendorIconEntry(');
239
+ lines.push(' vendor: string,');
240
+ lines.push(' service: string,');
241
+ lines.push(' resource?: string');
242
+ lines.push('): VendorIconEntry | undefined {');
243
+ lines.push(' const vendorIcons = vendorIconSets[vendor]');
244
+ lines.push(' if (!vendorIcons) return undefined');
245
+ lines.push('');
246
+ lines.push(' const key = resource ? `${service}/${resource}` : service');
247
+ lines.push(' const entry = vendorIcons[key]');
248
+ lines.push(' if (!entry) {');
249
+ lines.push(" const serviceKey = Object.keys(vendorIcons).find(k => k.startsWith(service + '/'))");
250
+ lines.push(' if (serviceKey) {');
251
+ lines.push(' return vendorIcons[serviceKey]');
252
+ lines.push(' }');
253
+ lines.push(' return undefined');
254
+ lines.push(' }');
255
+ lines.push(' return entry');
256
+ lines.push('}');
257
+ lines.push('');
258
+ // Generate icon getter with theme support
259
+ lines.push('/**');
260
+ lines.push(' * Get vendor icon content with theme support');
261
+ lines.push(' */');
262
+ lines.push('export function getVendorIcon(');
263
+ lines.push(' vendor: string,');
264
+ lines.push(' service: string,');
265
+ lines.push(' resource?: string,');
266
+ lines.push(" theme: IconThemeVariant = 'default'");
267
+ lines.push('): string | undefined {');
268
+ lines.push(' const entry = getVendorIconEntry(vendor, service, resource)');
269
+ lines.push(' if (!entry) return undefined');
270
+ lines.push(' return entry[theme] || entry.default');
271
+ lines.push('}');
272
+ lines.push('');
273
+ // Export individual sets
274
+ lines.push('// Individual vendor exports');
275
+ for (const vendorSet of iconSets) {
276
+ lines.push(`export { ${vendorVarNames[vendorSet.name]} }`);
277
+ }
278
+ lines.push('');
279
+ return lines.join('\n');
280
+ }
281
+ async function main() {
282
+ console.log('Building vendor icons...');
283
+ const iconSets = [];
284
+ const entries = fs.readdirSync(ICONS_DIR, { withFileTypes: true });
285
+ for (const entry of entries) {
286
+ if (!entry.isDirectory())
287
+ continue;
288
+ if (entry.name.startsWith('.'))
289
+ continue;
290
+ const folderPath = path.join(ICONS_DIR, entry.name);
291
+ if (entry.name === 'aws') {
292
+ const icons = scanAWSIconFolder(folderPath);
293
+ if (Object.keys(icons).length > 0) {
294
+ iconSets.push({ name: 'aws', icons });
295
+ console.log(` Found ${Object.keys(icons).length} AWS icons`);
296
+ }
297
+ }
298
+ else {
299
+ const icons = await scanVendorIconFolder(folderPath, entry.name);
300
+ if (Object.keys(icons).length > 0) {
301
+ iconSets.push({ name: entry.name, icons });
302
+ console.log(` Found ${Object.keys(icons).length} ${entry.name} icons`);
303
+ }
304
+ }
305
+ }
306
+ if (iconSets.length === 0) {
307
+ console.log('No vendor icons found!');
308
+ return;
309
+ }
310
+ const output = generateTypeScript(iconSets);
311
+ fs.writeFileSync(OUTPUT_FILE, output, 'utf-8');
312
+ console.log(`Generated ${OUTPUT_FILE}`);
313
+ }
314
+ main();
315
+ //# sourceMappingURL=build-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-icons.js","sourceRoot":"","sources":["../src/build-icons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Auto-generated vendor icon definitions
3
+ * DO NOT EDIT - Run build-icons.ts to regenerate
4
+ */
5
+ export type IconThemeVariant = 'light' | 'dark' | 'default';
6
+ export interface VendorIconEntry {
7
+ default: string;
8
+ light?: string;
9
+ dark?: string;
10
+ viewBox?: string;
11
+ }
12
+ declare const arubaIcons: Record<string, VendorIconEntry>;
13
+ declare const awsIcons: Record<string, VendorIconEntry>;
14
+ declare const juniperIcons: Record<string, VendorIconEntry>;
15
+ declare const yamahaIcons: Record<string, VendorIconEntry>;
16
+ export declare const vendorIconSets: Record<string, Record<string, VendorIconEntry>>;
17
+ /**
18
+ * Get vendor icon entry by vendor, service, and optional resource
19
+ */
20
+ export declare function getVendorIconEntry(vendor: string, service: string, resource?: string): VendorIconEntry | undefined;
21
+ /**
22
+ * Get vendor icon content with theme support
23
+ */
24
+ export declare function getVendorIcon(vendor: string, service: string, resource?: string, theme?: IconThemeVariant): string | undefined;
25
+ export { arubaIcons };
26
+ export { awsIcons };
27
+ export { juniperIcons };
28
+ export { yamahaIcons };
29
+ //# sourceMappingURL=generated-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-icons.d.ts","sourceRoot":"","sources":["../src/generated-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;AAE3D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA6N/C,CAAA;AAGD,QAAA,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAm9D7C,CAAA;AAGD,QAAA,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAwVjD,CAAA;AAGD,QAAA,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAwGhD,CAAA;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAK1E,CAAA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAc7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,GAAE,gBAA4B,GAClC,MAAM,GAAG,SAAS,CAIpB;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,CAAA"}