/** * RuleCMS-owned name aliases. A name that has ever been persisted is never * deleted — only aliased here to the current Lucide kebab name. * * Seeded from Lucide's own rename shims (shape-first convention). Extend on * every upstream lucide-static sync; the sync job should fail when an upstream * icon disappears without an alias. */ declare const ICON_NAME_ALIASES: Record; /** * Normalize a persisted RuleCMS icon name to the current Lucide kebab key. * Empty / non-string input yields null. */ declare const resolveIconName: (name: unknown) => string | null; /** Lucide `__iconNode` geometry: [tagName, attributes][]. Plain JSON. */ type IconNode = [string, Record][]; /** * What an icon attribute stores. Geometry is stamped when the author picks * the icon, not at publish, so the render path never needs the icon registry * and every surface — composer, dev, staging, production — draws from the * same value. `name` is kept so a later sync can re-resolve stale geometry. */ type IconAttributeValue = { name: string; iconNode: IconNode; }; /** * Geometry lookup for a persisted icon name. * * Registry-side only: the render path never calls this. Published payloads * carry geometry inline on the attribute (see `buildIconAttributeValue`), so * customer pages never load this module or the ~722 KB of JSON behind it. */ declare const resolveIconNode: (name: unknown) => IconNode | null; /** * Build the value the composer persists when an author picks an icon. * * Geometry is stamped at selection rather than at publish so that every * surface — composer canvas, dev-environment host apps, staging and * production — renders from the same attribute with no registry present. * `name` travels alongside so a later sync can re-resolve stale geometry. */ declare const buildIconAttributeValue: (name: unknown) => IconAttributeValue | null; declare const isKnownIconName: (name: unknown) => boolean; declare const listIconNames: () => string[]; /** * Search icons by name and by Lucide's published tag index. * * Tag search is why the picker is worth changing: today's name-only list * cannot answer "launch" with `rocket`. An empty query returns every name so * the picker can show a browsable default. */ declare const searchIconNames: (query: unknown, limit?: number) => string[]; /** The tags Lucide publishes for an icon; empty when the name is unknown. */ declare const getIconTags: (name: string) => string[]; export { ICON_NAME_ALIASES, buildIconAttributeValue, getIconTags, isKnownIconName, listIconNames, resolveIconName, resolveIconNode, searchIconNames }; export type { IconAttributeValue, IconNode };