// English translations — default language
export interface Translations {
  nav: {
    groupMain: string;
    groupWorkbench: string;
    groupChat: string;
    overview: string;
    signals: string;
    status: string;
    documents: string;
    compliance: string;
    chat: string;
  };
  sidebar: {
    toggleTheme: string;
    toggleLang: string;
    signOut: string;
  };
  overview: {
    eyebrow: string;
    heroTitle: string;
    heroDesc: string;
    openDashboard: string;
    jumpToChat: string;
    sectionHowItWorks: string;
    sectionScreens: string;
    statScreens: string;
    statFlows: string;
    statReviewPosture: string;
    stepUpload: string; stepUploadDesc: string;
    stepProcess: string; stepProcessDesc: string;
    stepMonitor: string; stepMonitorDesc: string;
    stepAnalyze: string; stepAnalyzeDesc: string;
    stepReview: string; stepReviewDesc: string;
    stepChat: string; stepChatDesc: string;
    screenStatus: string; screenStatusDesc: string;
    screenSignals: string; screenSignalsDesc: string;
    screenDocuments: string; screenDocumentsDesc: string;
    screenCompliance: string; screenComplianceDesc: string;
    screenChat: string; screenChatDesc: string;
    screenAnalytics: string; screenAnalyticsDesc: string;
  };
  signals: {
    topbarTitle: string;
    topbarSub: string;
    searchPlaceholder: string;
    refreshBtn: string;
    crawlingBtn: string;
    statTotal: string;
    statHigh: string;
    statMedium: string;
    statLast90: string;
    badgeFinal: string;
    badgeDraft: string;
    badgeUrgent: string;
    badgePublished: string;
    emptySelectSignal: string;
    runAnalysis: string;
    stopBtn: string;
    sourceLink: string;
    tabOverview: string;
    tabObligations: string;
    tabImpact: string;
    tabChanges: string;
    cardScopeHeader: string;
    cardObligationsHeader: string;
    obligationsEmpty: string;
    colObligationDesc: string;
    colSubject: string;
    colType: string;
    colDeadline: string;
    deadlinePending: string;
    cardAffectedDocs: string;
    noAffectedDocs: string;
    cardAIImpact: string;
    footerText: string;
    statusConnecting: string;
    statusNoStream: string;
    statusCrawling: string;
    statusProcessing: string;
    statusComplete: string;
    statusUpdateComplete: string;
    statusError: string;
    statusConnFailed: string;
    diffOld: string;
    diffNew: string;
    diffCardHeader: string;
  };
  status: {
    topbarTitle: string;
    searchPlaceholder: string;
    exportBtn: string;
    refreshBtn: string;
    newUploadBtn: string;
    statTotal: string;
    statIndexed: string;
    statFailed: string;
    statChunks: string;
    statCoverage: string;
    cardHealth: string;
    badgeOnline: string;
    badgeError: string;
    badgeDegraded: string;
    badgeUnknown: string;
    healthEndpointError: string;
    serviceEnabled: string;
    serviceDisabled: string;
    serviceNotLoaded: string;
    cardConfig: string;
    labelLLMProvider: string;
    labelLLMModel: string;
    labelEmbeddingModel: string;
    labelEmbeddingDim: string;
    labelMilvusCollection: string;
    labelParserBackend: string;
    labelChunkBackend: string;
    labelParserFailureMode: string;
    configLoadError: string;
    modelsLoadError: string;
    cardBreakdown: string;
    breakdownIndexed: string;
    breakdownProcessing: string;
    breakdownFailed: string;
    cardRuntime: string;
    labelActiveSessions: string;
    labelSessionCapacity: string;
    labelReranker: string;
    labelBM25: string;
    statusActive: string;
    statusUnavailable: string;
    footerAllOk: string;
    footerDegraded: string;
    footerChecking: string;
    totalChunks: string;
    cardModels: string;
    testConnectionBtn: string;
    testingBtn: string;
    roleMainLlm: string;
    roleHydeLlm: string;
    roleEmbedding: string;
    roleReranker: string;
    modelStatusNeverCalled: string;
    modelStatusDisabled: string;
    sharesUsageWithMain: string;
    lastCalledNever: string;
  };
  docs: {
    topbarTitle: string;
    searchPlaceholder: string;
    refreshBtn: string;
    uploadBtn: string;
    confirmDeleteTitle: string;
    cancelBtn: string;
    deleteBtn: string;
    filterAll: string;
    filterReady: string;
    filterProcessing: string;
    filterFailed: string;
    filterPending: string;
    filterAllTypes: string;
    deleteSelected: string;
    colName: string;
    colStatus: string;
    colUploaded: string;
    colChunks: string;
    colSize: string;
    colType: string;
    colActions: string;
    loading: string;
    emptyNoDocuments: string;
    emptyNoMatch: string;
    titleDownload: string;
    titleRetry: string;
    titleDelete: string;
  };
  compliance: {
    topbarTitle: string;
    searchPlaceholder: string;
    clearBtn: string;
    exportBtn: string;
    exportJSON: string;
    exportText: string;
    newAnalysisBtn: string;
    statusAnalyzing: string;
    statusComplete: string;
    statusError: string;
    emptyTitle: string;
    emptyDesc: string;
    retrievingMsg: string;
    defaultRegulation: string;
    matchSuffix: string;
    colParagraph: string;
    extractingMsg: string;
    noTextExtracted: string;
    stagesHeader: string;
    stageExtraction: string;
    stageClauseSplit: string;
    stageRetrieval: string;
    stageSynthesis: string;
    gapInProgress: string;
    askAIBtn: string;
    chatBtn: string;
    conclusionHeader: string;
    riskScoreTooltip: string;
    statusCovered: string;
    statusGap: string;
    statusCritical: string;
    statusInfo: string;
    sourceTypePasted: string;
    sourceTypeIndexed: string;
    sourceTypeUploaded: string;
    chatSidebarHeader: string;
    chatThinking: string;
    quickQ1: string;
    quickQ2: string;
    quickQ3: string;
    chatPlaceholder: string;
    sendBtn: string;
    analysisFailed: string;
    exportReportHeader: string;
    exportSectionParagraph: string;
    exportSectionFindings: string;
    exportSectionConclusion: string;
    exportSectionActions: string;
    historyHeader: string;
    downloadReport: string;
    historyEmpty: string;
    historyDeleteConfirm: string;
    drawerClose: string;
    drawerChatEmpty: string;
    drawerSuggestionsHeader: string;
  };
  ragchat: {
    topbarTitle: string;
    exportBtn: string;
    quickPromptsHeader: string;
    inputPlaceholder: string;
    citationsHeader: string;
    citationsEmpty: string;
    apiError: string;
    // ── Agentic mode ─────────────────────────────────────────────────────────
    agenticMode: string;
    agenticModeHint: string;
    agentThinking: string;
    agentDone: string;
    stepSuffix: string;
    stepIntentAnalysis: string;
    stepQueryPlanning: string;
    stepRetrieving: string;
    stepGrounding: string;
    intentSimpleQa: string;
    intentCompare: string;
    intentMultiHop: string;
    intentAmbiguous: string;
    intentNeedsDecomposition: string;
    subQueriesCountSuffix: string;
    chunksFoundSuffix: string;
    retryLabel: string;
    groundingSufficient: string;
    groundingInsufficient: string;
    // ── Document attachment in interface ─────────────────────────────────────
    attachBtn: string;
    attachExtracting: string;
    attachReady: string;
    attachError: string;
    attachClearLabel: string;
    attachContextBadge: string;
    attachAccept: string;
    attachTruncated: string;
    attachErrorMsg: string;
  };
}

export const en: Translations = {
  nav: {
    groupMain: 'Main',
    groupWorkbench: 'Workbench',
    groupChat: 'Chat',
    overview: 'Overview',
    signals: 'Regulatory Signals',
    status: 'System Status',
    documents: 'Documents',
    compliance: 'Compliance Analysis',
    chat: 'Regulation Q&A',
  },
  sidebar: {
    toggleTheme: 'Toggle theme',
    toggleLang: 'Switch language',
    signOut: 'Sign out',
  },
  overview: {
    eyebrow: 'T-Systems · AI Regulation Hub',
    heroTitle: 'AI Compliance,\nAutomated end-to-end',
    heroDesc: 'Monitor global AI regulations, analyze document compliance gaps, and get cited answers — all in one platform.',
    openDashboard: 'Open dashboard',
    jumpToChat: 'Jump to regulation chat',
    sectionHowItWorks: 'How it works',
    sectionScreens: 'Screens',
    statScreens: 'Screens',
    statFlows: 'Backend-aware flows',
    statReviewPosture: 'Review posture',
    stepUpload: 'Upload', stepUploadDesc: 'Ingest regulation documents',
    stepProcess: 'Process', stepProcessDesc: 'Embed and chunk via vector DB',
    stepMonitor: 'Monitor', stepMonitorDesc: 'Watch regulatory signal feed',
    stepAnalyze: 'Analyze', stepAnalyzeDesc: 'Run compliance gap analysis',
    stepReview: 'Review', stepReviewDesc: 'Inspect findings with AI assist',
    stepChat: 'Chat', stepChatDesc: 'Ask questions with cited answers',
    screenStatus: 'System Status', screenStatusDesc: 'Live health and workflow queue',
    screenSignals: 'Regulatory Signals', screenSignalsDesc: 'AI-detected regulatory changes',
    screenDocuments: 'Document Management', screenDocumentsDesc: 'Upload and inspect documents',
    screenCompliance: 'Compliance Analysis', screenComplianceDesc: 'Three-column compliance workspace',
    screenChat: 'Regulation Q&A', screenChatDesc: 'Chat with cited regulation sources',
    screenAnalytics: 'Analytics', screenAnalyticsDesc: 'KPIs and coverage metrics',
  },
  signals: {
    topbarTitle: 'Regulatory Signals',
    topbarSub: 'ai-powered · live feed',
    searchPlaceholder: 'Search signals...',
    refreshBtn: 'Refresh Sources',
    crawlingBtn: 'Crawling...',
    statTotal: 'Total signals',
    statHigh: 'High impact',
    statMedium: 'Medium impact',
    statLast90: 'Last 90 days',
    badgeFinal: 'Final',
    badgeDraft: 'Draft',
    badgeUrgent: 'Urgent',
    badgePublished: 'Published',
    emptySelectSignal: 'Select a signal to run impact analysis',
    runAnalysis: 'Run impact analysis',
    stopBtn: 'Stop',
    sourceLink: 'Source',
    tabOverview: 'Overview',
    tabObligations: 'Obligations',
    tabImpact: 'Impact Assessment',
    tabChanges: 'Change Comparison',
    cardScopeHeader: 'Scope & Summary',
    cardObligationsHeader: 'Obligations',
    obligationsEmpty: 'No structured data yet. Click "Run impact analysis" to extract.',
    colObligationDesc: 'Obligation',
    colSubject: 'Subject',
    colType: 'Type',
    colDeadline: 'Deadlines',
    deadlinePending: 'Pending',
    cardAffectedDocs: 'Affected documents',
    noAffectedDocs: 'No affected documents found.',
    cardAIImpact: 'AI Impact Analysis',
    footerText: 'Live feed · Regulation Hub',
    statusConnecting: 'Connecting to data sources...',
    statusNoStream: 'No stream',
    statusCrawling: 'Crawling...',
    statusProcessing: 'Processing {count} items...',
    statusComplete: 'Done +{count} items',
    statusUpdateComplete: 'Update complete — {new} added, {updated} updated',
    statusError: 'Error: {message}',
    statusConnFailed: 'Connection failed: {message}',
    diffOld: 'Previous',
    diffNew: 'Current',
    diffCardHeader: 'Change Comparison',
  },
  status: {
    topbarTitle: 'System Status',
    searchPlaceholder: 'Search...',
    exportBtn: 'Export',
    refreshBtn: 'Refresh',
    newUploadBtn: 'New upload',
    statTotal: 'Documents total',
    statIndexed: 'Indexed',
    statFailed: 'Failed',
    statChunks: 'Vector chunks',
    statCoverage: 'Index coverage',
    cardHealth: 'System health',
    badgeOnline: 'Online',
    badgeError: 'Error',
    badgeDegraded: 'Degraded',
    badgeUnknown: 'Unknown',
    healthEndpointError: 'Could not reach health endpoint',
    serviceEnabled: 'Enabled',
    serviceDisabled: 'Disabled',
    serviceNotLoaded: 'Not loaded',
    cardConfig: 'System configuration',
    labelLLMProvider: 'LLM provider',
    labelLLMModel: 'LLM model',
    labelEmbeddingModel: 'Embedding model',
    labelEmbeddingDim: 'Embedding dim',
    labelMilvusCollection: 'Milvus collection',
    labelParserBackend: 'Parser backend',
    labelChunkBackend: 'Chunk backend',
    labelParserFailureMode: 'Parser failure mode',
    configLoadError: 'Could not load config',
    modelsLoadError: 'Could not load model status',
    cardBreakdown: 'Document breakdown',
    breakdownIndexed: 'Indexed',
    breakdownProcessing: 'Processing / Parsed',
    breakdownFailed: 'Failed',
    cardRuntime: 'Runtime info',
    labelActiveSessions: 'Active chat sessions',
    labelSessionCapacity: 'Session capacity',
    labelReranker: 'Cross-encoder reranker',
    labelBM25: 'BM25 hybrid retrieval',
    statusActive: 'Active',
    statusUnavailable: 'Unavailable',
    footerAllOk: 'All systems operational',
    footerDegraded: 'Degraded',
    footerChecking: 'Checking…',
    totalChunks: 'Total vector chunks',
    cardModels: 'AI Models',
    testConnectionBtn: 'Test connection',
    testingBtn: 'Testing…',
    roleMainLlm: 'Main answer LLM',
    roleHydeLlm: 'HyDE query expansion',
    roleEmbedding: 'Embedding',
    roleReranker: 'Reranker',
    modelStatusNeverCalled: 'Not called yet',
    modelStatusDisabled: 'Disabled',
    sharesUsageWithMain: 'Shares usage with main LLM',
    lastCalledNever: 'Never',
  },
  docs: {
    topbarTitle: 'Document Management',
    searchPlaceholder: 'Search documents...',
    refreshBtn: 'Refresh',
    uploadBtn: 'Upload document',
    confirmDeleteTitle: 'Confirm deletion',
    cancelBtn: 'Cancel',
    deleteBtn: 'Delete',
    filterAll: 'All',
    filterReady: 'Ready',
    filterProcessing: 'Processing',
    filterFailed: 'Failed',
    filterPending: 'Pending',
    filterAllTypes: 'All types',
    deleteSelected: 'Delete selected',
    colName: 'Document name',
    colStatus: 'Status',
    colUploaded: 'Uploaded',
    colChunks: 'Chunks',
    colSize: 'Size',
    colType: 'Type',
    colActions: 'Actions',
    loading: 'Loading documents…',
    emptyNoDocuments: 'No documents yet. Upload a document to get started.',
    emptyNoMatch: 'No documents match the current filters.',
    titleDownload: 'Download original file',
    titleRetry: 'Retry processing',
    titleDelete: 'Delete document',
  },
  compliance: {
    topbarTitle: 'Compliance Analysis',
    searchPlaceholder: 'Search analyses...',
    clearBtn: 'Clear',
    exportBtn: 'Export',
    exportJSON: 'Export JSON',
    exportText: 'Export Text',
    newAnalysisBtn: 'New analysis',
    statusAnalyzing: 'Analyzing…',
    statusComplete: 'Analysis complete',
    statusError: 'Error',
    emptyTitle: 'No analysis running',
    emptyDesc: 'Click New analysis to start a compliance gap review against your indexed regulations.',
    retrievingMsg: 'Retrieving relevant regulations…',
    defaultRegulation: 'Regulation',
    matchSuffix: '% match',
    colParagraph: 'Paragraph Under Review',
    extractingMsg: 'Extracting and analyzing text…',
    noTextExtracted: 'No text extracted',
    stagesHeader: 'Analysis stages',
    stageExtraction: 'Text extraction',
    stageClauseSplit: 'Clause splitting',
    stageRetrieval: 'Regulation retrieval',
    stageSynthesis: 'Conclusion synthesis',
    gapInProgress: 'Gap analysis in progress…',
    askAIBtn: 'Ask AI',
    chatBtn: 'Chat',
    conclusionHeader: 'Conclusion',
    riskScoreTooltip: 'Risk score (0=safe, 100=critical)',
    statusCovered: 'Covered',
    statusGap: 'Gap',
    statusCritical: 'Critical',
    statusInfo: 'Info',
    sourceTypePasted: 'Pasted Text',
    sourceTypeIndexed: 'Indexed Document',
    sourceTypeUploaded: 'Uploaded File',
    chatSidebarHeader: 'AI Compliance Q&A',
    chatThinking: 'Thinking▋',
    quickQ1: 'What regulation applies?',
    quickQ2: 'How to remediate?',
    quickQ3: 'What is the risk?',
    chatPlaceholder: 'Ask about this finding…',
    sendBtn: 'Send',
    analysisFailed: 'Analysis failed',
    exportReportHeader: 'COMPLIANCE ANALYSIS REPORT',
    exportSectionParagraph: '── PARAGRAPH UNDER REVIEW ──',
    exportSectionFindings: '── FINDINGS ──',
    exportSectionConclusion: '── CONCLUSION ──',
    exportSectionActions: '── RECOMMENDED ACTIONS ──',
    historyHeader: 'History',
    downloadReport: 'Download report',
    historyEmpty: 'No analyses yet.',
    historyDeleteConfirm: 'Delete this analysis record? This cannot be undone.',
    drawerClose: 'Close',
    drawerChatEmpty: 'No messages yet. Ask a question below.',
    drawerSuggestionsHeader: 'Suggested questions',
  },
  ragchat: {
    topbarTitle: 'Regulation Q&A',
    exportBtn: 'Export chat',
    quickPromptsHeader: 'Quick prompts',
    inputPlaceholder: 'Ask about your regulations…',
    citationsHeader: 'Sources',
    citationsEmpty: 'Citations will appear here after a response is generated.',
    apiError: 'Could not reach the RAG API. Please check the backend.',
    // ── Agentic mode ─────────────────────────────────────────────────────────
    agenticMode: 'Agentic mode',
    agenticModeHint: 'Intent · Planning · Retrieval · Grounding',
    agentThinking: 'Agent reasoning…',
    agentDone: 'Reasoning complete',
    stepSuffix: 'steps',
    stepIntentAnalysis: 'Intent analysis',
    stepQueryPlanning: 'Query planning',
    stepRetrieving: 'Knowledge retrieval',
    stepGrounding: 'Citation grounding',
    intentSimpleQa: 'Simple Q&A',
    intentCompare: 'Comparison',
    intentMultiHop: 'Multi-hop',
    intentAmbiguous: 'Ambiguous',
    intentNeedsDecomposition: 'Decomposed',
    subQueriesCountSuffix: 'sub-queries',
    chunksFoundSuffix: 'chunks',
    retryLabel: '(retry) ',
    groundingSufficient: '✓ Sufficient',
    groundingInsufficient: '⚠ Re-queried',
    // ── Document context attachment ───────────────────────────────────────────
    attachBtn: 'Attach document as context',
    attachExtracting: 'Extracting text…',
    attachReady: 'Context loaded',
    attachError: 'Extraction failed',
    attachClearLabel: 'Clear',
    attachContextBadge: 'Doc context',
    attachAccept: '.pdf,.docx,.doc,.txt,.md',
    attachTruncated: '(truncated to 8 000 chars)',
    attachErrorMsg: 'Could not extract text from this file.',
  },
};
