hunk.code_window:           </FooterLink>
             <div className="opacity-50 pointer-events-none">
               <FooterLink link="#">Blog</FooterLink>
             </div>
  
hunk.labels: add keep keep keep
hunk.after_edit:           <FooterLink link="/changelog">Changelog</FooterLink>
  
hunk.file_path: apps/landing/src/components/Footer.tsx
hunk.type: add
file: import * as fs from 'fs/promises';
  import * as path from 'path';
  
  (async function main() {
    async function exists(path) {
      try {
        await fs.access(path);
        return true;
      } catch {
        return false;
      }
    }
  
    const files = await fs.readdir('./src/assets/icons');
    const icons = files.filter((f) => f.endsWith('.svg'));
    let str = '';
  
    for (let binding of icons) {
      let name = binding.split('.')[0];
      str += `import { ReactComponent as ${
        name.charAt(0).toUpperCase() + name.slice(1)
      } } from './${name}.svg';\n`;
    }
    str += '\n\nexport default {\n';
  
    for (let binding of icons) {
      let name = binding.split('.')[0];
      let componentName = name.charAt(0).toUpperCase() + name.slice(1);
      str += `  ${name}: ${componentName},\n`;
    }
  
    str += '}\n';
  
    let outPath = './src/assets/icons/index.ts';
  
    let indexExists = await exists(outPath);
  
    if (indexExists) {
      await fs.rm(outPath);
    }
  
    await fs.writeFile(outPath, str);
  })();
  