/** * The one source of engine and assistant identity for the Company ID * surfaces: display label plus brand color per id, consumed by the proposal * cards, the extract modal and the brand logos. */ /** Source id for values read from the merchant's own site. */ export const SITE_SOURCE_ID = 'site'; export interface EngineMeta { /** Human label, e.g. "ChatGPT". */ label: string; /** Brand color as hex, for inline SVG/canvas consumers. */ color: string; /** Brand color as a Tailwind background class, for dot markers. */ dotClass: string; } export const ENGINE_META: Record = { gemini: { label: 'Gemini', color: '#4285F4', dotClass: 'bg-[#4285F4]' }, chatgpt: { label: 'ChatGPT', color: '#10A37F', dotClass: 'bg-[#10A37F]' }, gpt: { label: 'ChatGPT', color: '#10A37F', dotClass: 'bg-[#10A37F]' }, [SITE_SOURCE_ID]: { label: 'your website', color: '#22c55e', dotClass: 'bg-[#22c55e]', }, }; /** Fallback for unmapped ids: the Recomaze pink. */ export const ENGINE_META_FALLBACK: EngineMeta = { label: '', color: '#C8175D', dotClass: 'bg-[#C8175D]', }; /** Claude brand terracotta (an extract assistant, not a scan engine). */ export const CLAUDE_BRAND_COLOR = '#D97757'; /** * Resolve one id's meta, falling back to the Recomaze pink for unknown ids. * * @param {string} id - Engine or source id (e.g. "gemini", "site"). * @returns {EngineMeta} The id's label and colors. */ export function engineMeta(id: string): EngineMeta { return ENGINE_META[id] ?? { ...ENGINE_META_FALLBACK, label: id }; }