/** * Identifier of an icon family (e.g. "ui", "arrows"). * * Value object: today it is a `string` alias, but it represents a * domain concept (see ADR-0004, Ubiquitous Language), not a generic * string. */ export type FamilyId = string; /** * Canonical, unique identifier of an icon, always in the format * "family:name". Never `name` alone outside the context of an already * resolved family (see ADR-0002, decision "key is always family:name"). */ export type IconId = `${string}:${string}`; /** * Builds the canonical {@link IconId} from a family and a name. * * @param family the icon's family, e.g. "ui" * @param name the icon's name within the family, e.g. "add" * @returns the IconId in "family:name" format, e.g. "ui:add" */ export declare function toIconId(family: FamilyId, name: string): IconId; /** * Full data for a single icon, a domain entity (see ADR-0006, domain * typology table). * * An icon is pure data (ADR-0002, principle 2: "icons are data, not * code"): no logic, no methods, no behavior here. */ export interface IconData { /** Canonical identifier, always equal to `toIconId(family, name)`. */ id: IconId; family: FamilyId; name: string; /** `viewBox` of the original ``, e.g. `"0 0 24 24"`. */ viewBox: string; /** * Inner content of the `` (paths, lines, circles...), without * the `` tag itself. The {@link Renderer} is responsible for * wrapping this in the tag and applying presentation options. */ body: string; tags?: readonly string[]; aliases?: readonly string[]; }