feat(lucide-react): Add DynamicIcon component (#2686)

* Adding the DynamicIcon component

* Fix imports

* Add docs

* Formatting

* Fix use client in output rollup

* revert changes

* Fix formatting

* Revert changes in icons directory

* Revert time command

* update exports
This commit is contained in:
Eric Fennis
2025-01-10 14:35:28 +01:00
committed by GitHub
parent d5fe5a0ef4
commit 58c2e108c3
11 changed files with 281 additions and 110 deletions

View File

@@ -5,6 +5,7 @@ export default function generateDynamicImports({
iconNodes,
outputDirectory,
fileExtension,
iconMetaData,
showLog = true,
}) {
const fileName = path.basename(`dynamicIconImports${fileExtension}`);
@@ -18,6 +19,23 @@ export default function generateDynamicImports({
// Generate Import for Icon VNodes
icons.forEach((iconName) => {
importString += ` '${iconName}': () => import('./icons/${iconName}'),\n`;
const iconAliases = iconMetaData[iconName]?.aliases?.map((alias) => {
if (typeof alias === 'string') {
return alias;
}
return alias.name;
});
if (iconAliases != null && Array.isArray(iconAliases)) {
iconAliases.forEach((alias) => {
if (!alias) {
return;
}
importString += ` '${alias}': () => import('./icons/${iconName}'),\n`;
});
}
});
importString += '};\nexport default dynamicIconImports;\n';

View File

@@ -90,6 +90,7 @@ async function buildIcons() {
iconNodes: icons,
outputDirectory: OUTPUT_DIR,
fileExtension: aliasesFileExtension,
iconMetaData,
showLog: !silent,
});
}