From 884bf6fb1086ab6a6cafd015e15db683161b70a5 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Thu, 6 Feb 2025 08:09:57 +0100 Subject: [PATCH] improve icon node imports --- packages/icons/package.json | 8 ++++---- packages/icons/scripts/exportTemplate.mjs | 5 +++-- packages/icons/src/types.ts | 5 +++++ 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 packages/icons/src/types.ts diff --git a/packages/icons/package.json b/packages/icons/package.json index 0fca0285f..b620c3845 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -35,12 +35,12 @@ "version": "pnpm version --git-tag-version=false" }, "devDependencies": { - "prettier": "^2.3.2", - "svgson": "^5.2.1", "@lucide/build-icons": "workspace:*", - "@lucide/rollup-plugins": "workspace:*", "@lucide/helpers": "workspace:*", + "@lucide/rollup-plugins": "workspace:*", + "prettier": "^2.3.2", "rollup": "^4.22.4", - "rollup-plugin-dts": "^6.1.0" + "rollup-plugin-dts": "^6.1.0", + "svgson": "^5.2.1" } } diff --git a/packages/icons/scripts/exportTemplate.mjs b/packages/icons/scripts/exportTemplate.mjs index 54169a0f6..27ab1b3bb 100644 --- a/packages/icons/scripts/exportTemplate.mjs +++ b/packages/icons/scripts/exportTemplate.mjs @@ -8,6 +8,7 @@ export default ({ iconName, children, getSvg, deprecated, deprecationReason }) = const exportName = toCamelCase(iconName) return ` +import { IconNode } from '../types'; /** * @name ${iconName} * @description Lucide SVG string. @@ -17,8 +18,8 @@ export default ({ iconName, children, getSvg, deprecated, deprecationReason }) = * @returns {IconNode} * ${deprecated ? `@deprecated ${deprecationReason}` : ''} */ -const ${exportName}: string = ${JSON.stringify(children)} +const _${exportName}: string = ${JSON.stringify(children)} -export default ${exportName}; +export default _${exportName}; `; }; diff --git a/packages/icons/src/types.ts b/packages/icons/src/types.ts new file mode 100644 index 000000000..b24579b38 --- /dev/null +++ b/packages/icons/src/types.ts @@ -0,0 +1,5 @@ +// className is not supported in svg elements +export type SVGProps = Record; +export type IconNodeChild = readonly [tag: string, attrs: SVGProps]; +export type IconNode = readonly [tag: string, attrs: SVGProps, children?: IconNodeChild[]]; +export type Icons = { [key: string]: IconNode };