import iconRegistry from '../icons/kview-icons.json';

export const KVIEW_ICON_PATHS = iconRegistry.paths;
export const KVIEW_ICON_ALIASES = iconRegistry.aliases;
export const KVIEW_ICON_FALLBACK = iconRegistry.fallback;

export type KviewIconName = keyof typeof KVIEW_ICON_PATHS;
export type KviewIconAlias = keyof typeof KVIEW_ICON_ALIASES;
export type KviewIconIdentifier = KviewIconName | KviewIconAlias;

export function resolveKviewIconName(name = 'search'): KviewIconName {
    const aliasTarget = KVIEW_ICON_ALIASES[name as KviewIconAlias];
    const resolvedName = aliasTarget ?? name;

    if (Object.hasOwn(KVIEW_ICON_PATHS, resolvedName)) {
        return resolvedName as KviewIconName;
    }

    return KVIEW_ICON_FALLBACK as KviewIconName;
}

export function resolveKviewIconPath(name = 'search'): string {
    return KVIEW_ICON_PATHS[resolveKviewIconName(name)];
}

export function kviewIconMarkup(name = 'search', className = ''): string {
    const classAttribute = ['kv-icon', className].filter(Boolean).join(' ');

    return `<svg class="${classAttribute}" width="16" height="16" style="--kv-icon-size: 16px" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${resolveKviewIconPath(name)}</svg>`;
}
