/**
 * Top-level chat configuration — placeholder, suggestions, identities, prefs.
 */

import type { ChatAssistantContext, ChatUserContext } from './persona';
import type { ChatLabels } from './labels';

export type ChatDisplayMode = 'closed' | 'embedded' | 'floating' | 'sidebar' | 'fullscreen';

export interface ChatPrefs {
  /** Submit hotkey for the composer. */
  submitOn?: 'enter' | 'cmd+enter';
  /** UI density. */
  density?: 'comfortable' | 'compact';
  /** Locale forwarded to transport metadata. */
  locale?: string;
  /** Show timestamps on each bubble. */
  showTimestamps?: boolean;
}

export interface ChatConfig {
  /** Window title / aria-label. */
  title?: string;
  /** Composer placeholder. */
  placeholder?: string;
  /** Empty-state greeting. */
  greeting?: string;
  /** Empty-state description. */
  description?: string;
  /** Suggested prompts shown on empty conversation. */
  suggestions?: Array<{ label: string; prompt: string }>;
  /** Project / chat slug forwarded to the transport. */
  slug?: string;
  /** Identity of the human author. Renders avatar / name on user bubbles
   *  and gets stamped on outgoing messages as `message.sender`. */
  user?: ChatUserContext;
  /** Identity of the assistant. Renders avatar / name on assistant bubbles. */
  assistant?: ChatAssistantContext;
  /** UI preferences. */
  prefs?: ChatPrefs;
  /** Visual labels (i18n is the host's job). */
  labels?: Partial<ChatLabels>;
}
