import { Color } from './color.types';
/**
 * An empty interface intended for module augmentation by consuming packages.
 *
 * Packages can extend this interface to register their own icon names,
 * enabling type-safe autocompletion for custom icon sets.
 *
 * @example
 * ```ts
 * declare module '@limetech/lime-elements' {
 *     interface IconNameRegistry {
 *         'my-custom-icon': string;
 *         'another-icon': string;
 *     }
 * }
 * ```
 *
 * @public
 */
export interface IconNameRegistry {
}
/**
 * Represents a valid icon name.
 *
 * When `IconNameRegistry` is augmented, this type provides autocompletion
 * for registered icon names while still accepting any string value.
 *
 * @public
 */
export type IconName = keyof IconNameRegistry extends never ? string : keyof IconNameRegistry | (string & {});
/**
 * This interface is used to specify which icon to use in many components,
 * along with related properties, like color.
 * @public
 */
export interface Icon {
    /**
     * Name of the icon, refers to the icon's filename in lime-icons8 repository.
     */
    name: IconName;
    /**
     * Color of the icon.
     */
    color?: Color;
    /**
     * Background color of the icon.
     */
    backgroundColor?: Color;
    /**
     * Used primarily to improve accessibility for users who
     * take advantage of assistive technologies; but also
     * to clarify further what an icon tries to resemble
     * for sighted users.
     *
     * Depending on the component which is using the `Icon` interface,
     * the `title` might be used as a `title` attribute on the
     * rendered icon element, as an `aria-label` attribute, or as a
     * `label` in a tooltip associated with the icon. Documentations
     * about the accessibility of the component should provide more
     * information about how the `title` is used.
     */
    title?: string;
}
//# sourceMappingURL=icon.types.d.ts.map