diff --git a/packages/lucide/scripts/buildTypes.js b/packages/lucide/scripts/buildTypes.js index d1abfc6..9dfc4f0 100644 --- a/packages/lucide/scripts/buildTypes.js +++ b/packages/lucide/scripts/buildTypes.js @@ -6,18 +6,47 @@ const TARGET_DIR = path.join(__dirname, '../dist'); const ICONS_DIR = path.resolve(__dirname, '../../../icons'); const TYPES_FILE_NAME = 'lucide.d.ts'; +import defaultAttributes from '../src/defaultAttributes'; + // Generates header of d.ts file include some types and functions const typeDefinitions = `\ -export type IconName = string; -export type IconNode = readonly [tag: string, object:SVGProps, children:IconNode?]; -export type IconsObj = { [IconName]: IconNode } +export interface SVGProps extends Partial ${JSON.stringify(defaultAttributes, null, 2)} -export interface Attributes extends Partial> {} +export declare type IconNode = readonly [tag: string, attrs:SVGProps, children?:IconNode]; +export declare type CustomAttrs = { [attr:string]: any } +export type Icons = { [key: string]: IconNode } + +export interface CreateIconsOptions { + /** + * List of icons you want to replace + * + * For example: \`{ Menu, Circle}\`. + * + * For replace all icons in lucide library, import \`icons\` and use it. + */ + icons: Icons; + + /** + * Search HTML emelemt by \`nameAttr\` property. + * + * For example if define \`\`, fill by \`lucide-icon\`. + * + * @default 'icon-name' + */ + nameAttr?: string; + + /** + * Change defult attribute for show like color, fill, width , ... + * + * @default undefined + */ + attrs?: CustomAttrs; +} export function createElement(icon: IconNode): SVGSVGElement; -export function createIcons({ icons: IconsObj, nameAttr: string = 'icon-name', attrs: Attributes = {} }): VoidFunction; +export function createIcons(options: CreateIconsOptions): void; -export declare const icons: IconsObj; +export declare const icons: Icons; // Generated icons `; @@ -31,7 +60,7 @@ svgFiles.forEach(svgFile => { const nameSvg = path.basename(svgFile, '.svg'); const namePascal = toPascalCase(nameSvg); - appendFile(`export declare const ${namePascal}: IconNode;\n`, TYPES_FILE_NAME, TARGET_DIR); + appendFile(`export declare const ${namePascal}: IconData;\n`, TYPES_FILE_NAME, TARGET_DIR); }); console.log(`Generated ${TYPES_FILE_NAME} file with`, svgFiles.length, 'icons');