mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-13 13:48:26 +00:00
* feat(metadata): reuse metadata from a base icon with `$extends:` Icon metadata can reference a base icon with an inline `$extends:<icon-name>` marker in `tags`, `categories` or `contributors`. The marker is replaced in place with the base icon's resolved values at build time. - Resolve markers in `readAllMetadata` and `getIconMetaData`, failing on unknown icons, self references and circular chains - Accept markers in `icon.schema.json` - `pnpm checkIcons` fails on duplicate markers and on literals a marker already provides, and runs in CI - Docs read the resolved metadata index instead of the raw icon JSON - Use `$extends:alarm-clock` in `alarm-clock-minus` Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(metadata): reuse metadata from a base icon with `$extends:` Icon metadata can reference a base icon with an inline `$extends:<icon-name>` marker in `tags`, `categories` or `contributors`. The marker is replaced in place with the base icon's resolved values at build time. - Resolve markers in `readAllMetadata` and `getIconMetaData`, failing on unknown icons, self references and circular chains - Accept markers in `icon.schema.json` - `pnpm checkIcons` fails on duplicate markers and on literals a marker already provides, and runs in CI - Docs read the resolved metadata index instead of the raw icon JSON - Use `$extends:alarm-clock` in `alarm-clock-minus` Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Fix comments * Format code * Update tools/build-helpers/src/resolveMetadataExtends.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Fix resolving icon metadata * feat(metadata): reuse metadata from a base icon with `$extends:` Icon metadata can reference a base icon with an inline `$extends:<icon-name>` marker in `tags`, `categories` or `contributors`. The marker is replaced in place with the base icon's resolved values at build time. - Resolve markers in `readAllMetadata` and `getIconMetaData`, failing on unknown icons, self references and circular chains - Accept markers in `icon.schema.json` - `pnpm checkIcons` fails on duplicate markers and on literals a marker already provides, and runs in CI - Docs read the resolved metadata index instead of the raw icon JSON - Use `$extends:alarm-clock` in `alarm-clock-minus` Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Fix comments * Format code * Update tools/build-helpers/src/resolveMetadataExtends.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Fix resolving icon metadata * Fix comments * Format code * Update tools/build-helpers/src/resolveMetadataExtends.ts Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
export type SVGProps = Record<string, string | number>;
|
|
|
|
export type IconNode = [tag: string, attrs: SVGProps][];
|
|
|
|
export type IconNodeWithChildren = [tag: string, attrs: SVGProps, children: IconNode];
|
|
|
|
export type IconData = {
|
|
name: string;
|
|
node: IconNode;
|
|
aliases?: string[];
|
|
} & ({ size: number } | { width: number; height: number });
|
|
|
|
export interface ExportTemplate {
|
|
componentName: string;
|
|
iconName: string;
|
|
children: IconNode;
|
|
getSvg: () => Promise<string>;
|
|
deprecated: boolean;
|
|
deprecationReason: string;
|
|
iconData: IconData;
|
|
}
|
|
|
|
export type TemplateFunction = (params: ExportTemplate) => Promise<string>;
|
|
|
|
export type Path = string;
|
|
|
|
export type AliasDeprecationReason = 'alias.typo' | 'alias.name' | 'alias.duplicate';
|
|
|
|
export type AliasDeprecation = {
|
|
name: string;
|
|
deprecated: true;
|
|
deprecationReason: AliasDeprecationReason;
|
|
};
|
|
|
|
export type IconDeprecationReason = 'icon.design' | 'icon.use-case' | '';
|
|
|
|
export type IconMetadataBase = {
|
|
categories: string[];
|
|
contributors?: string[];
|
|
aliases?: AliasDeprecation[];
|
|
tags: string[];
|
|
deprecationReason?: IconDeprecationReason;
|
|
deprecated?: boolean;
|
|
toBeRemovedInVersion?: string;
|
|
};
|
|
|
|
export type IconMetadataWithDeprecation = IconMetadataBase & {
|
|
deprecated: true;
|
|
deprecationReason?: IconDeprecationReason;
|
|
};
|
|
|
|
export type IconMetadata = IconMetadataBase | IconMetadataWithDeprecation;
|