gapmiss_iconoir-icons/scripts/update-icons.mjs
@gapmiss 203986a926 feat: Modernize plugin, update Iconoir to v7.11.0
- Update ESLint to flat config
- Add GitHub release workflow
- Fix CSS conflicts and suggester icons
- Update release scripts
- Add package-lock.json

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-24 20:52:30 -05:00

61 lines
1.7 KiB
JavaScript

import { readdirSync, readFileSync, writeFileSync, copyFileSync } from "fs";
import { join, dirname } from "path";
import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url));
const rootDir = join(__dirname, "..");
const iconsDir = join(rootDir, "node_modules/iconoir/icons/regular");
const cssSource = join(rootDir, "node_modules/iconoir/css/iconoir.css");
console.log("Updating Iconoir icons...\n");
const iconNames = readdirSync(iconsDir)
.filter((f) => f.endsWith(".svg"))
.map((f) => f.replace(".svg", ""))
.sort();
console.log(`Found ${iconNames.length} icons`);
const tsContent = `export const iconoirNames: string[] = [
${iconNames.map((name) => ` "${name}",`).join("\n")}
];
export const iconoir: Record<string, string> = Object.fromEntries(
iconoirNames.map(name => [name, \`iconoir-\${name}\`])
);
`;
writeFileSync(join(rootDir, "src/iconoirNames.ts"), tsContent);
console.log("Updated src/iconoirNames.ts");
const cssContent = readFileSync(cssSource, "utf-8");
const pluginCss = `
/* Plugin-specific styles */
.obsidian-iconoir-icon {
display: inline-flex;
vertical-align: middle;
}
/* Override iconoir defaults with custom properties when set */
.obsidian-iconoir-icon i[class^='iconoir-']::before,
.obsidian-iconoir-icon i[class*=' iconoir-']::before {
background: var(--iconoir-stroke, currentColor);
width: var(--iconoir-width, 1em);
height: var(--iconoir-height, 1em);
}
.icon-suggester-container {
display: flex;
align-items: center;
gap: 8px;
}
.suggester-icon-name {
font-family: var(--font-monospace);
}
`;
writeFileSync(join(rootDir, "styles.css"), cssContent + pluginCss);
console.log("Updated styles.css");
console.log("\nDone!");