HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/design.system/src/icons/utils/generateIconsMap.ts
import fs from 'fs';
import path from 'path';

const sizes = [16, 20, 24];
const iconsDir = './src/icons';
const outputDir = './src/icons/iconsMap';

sizes.forEach((size) => {
  const sizeDir = path.join(iconsDir, `${size}`);
  const files = fs.readdirSync(sizeDir).filter((f) => f.endsWith('.svg') || f.endsWith('.tsx'));

  const imports: string[] = [];
  const exports: string[] = [];

  files.forEach((file) => {
    const nameWithoutExt = path.basename(file, path.extname(file));
    const importName = toPascalCase(nameWithoutExt);
    const importPath = `../${size}/${nameWithoutExt}.svg?react`;
    imports.push(`import ${importName} from '${importPath}';`);
    exports.push(`  '${nameWithoutExt}': ${importName},`);
  });

  const content = `// AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
${imports.join('\n')}

export const icons${size} = {
${exports.join('\n')}
} as const;
`;

  fs.writeFileSync(path.join(outputDir, `${size}.ts`), content, 'utf-8');
});

function toPascalCase(str: string) {
  return str.replace(/(^\w|[-_]\w)/g, (match) => match.replace(/[-_]/, '').toUpperCase());
}