github.com/turbot/steampipe@v1.7.0-rc.0.0.20240517123944-7cef272d4458/ui/dashboard/scripts/setupMaterialSymbols.js (about)

     1  const camelCase = require("lodash/camelCase");
     2  const fs = require("fs-extra");
     3  const upperFirst = require("lodash/upperFirst");
     4  
     5  (async () => {
     6    const nodeModulesPath = "@material-symbols/svg-300/rounded";
     7    const dir = await fs.readdir("./node_modules/" + nodeModulesPath);
     8    let generatedFile = "// @ts-nocheck\n";
     9    const outlineIcons = {};
    10    const solidIcons = {};
    11    for (const file of dir) {
    12      const fileNameParts = file.split(".");
    13      let importName = upperFirst(camelCase(fileNameParts[0]));
    14      if (/^\d/.test(importName)) {
    15        importName = "_" + importName;
    16      }
    17      const nameAndStyleParts = fileNameParts[0].split("-");
    18      const name = nameAndStyleParts[0];
    19      const isFillIcon =
    20        nameAndStyleParts.length === 2 && nameAndStyleParts[1] === "fill";
    21  
    22      if (isFillIcon) {
    23        solidIcons[name] = {
    24          component: importName,
    25        };
    26      } else {
    27        outlineIcons[name] = {
    28          component: importName,
    29        };
    30      }
    31      generatedFile += `import { ReactComponent as ${importName} } from "${nodeModulesPath}/${file}";\n`;
    32    }
    33    generatedFile += "\n";
    34    generatedFile += "const icons = {\n";
    35    for (const [name, definition] of Object.entries(outlineIcons)) {
    36      generatedFile += `  "${name}": ${definition.component},\n`;
    37      generatedFile += `  "materialsymbols-outline:${name}": ${definition.component},\n`;
    38    }
    39  
    40    for (const [name, definition] of Object.entries(solidIcons)) {
    41      generatedFile += `  "materialsymbols-solid:${name}": ${definition.component},\n`;
    42    }
    43    generatedFile += "}\n\n";
    44    generatedFile += "export {\n";
    45    generatedFile += "  icons,\n";
    46    generatedFile += "}";
    47  
    48    await fs.writeFile("./src/icons/materialSymbols.ts", generatedFile);
    49  })();