// en/admin
export const admin = {
  approval_queue_title: 'Deal Approval Queue',
  deal_settings_min_discount_label: 'Auto-reject deals with a discount below',
  deal_settings_min_discount_help:
    'Minimum discount percent. New deals below this are rejected automatically at submission — no manual review.',
  deal_settings_hot_deal_label: 'Show the "Hot Deal" badge on deals with at least',
  deal_settings_hot_deal_suffix: 'sales in the last 7 days',
  deal_settings_hot_deal_help:
    'Minimum sales in the last 7 days that triggers the "Hot Deal" badge on the storefront deal card.',
  deal_settings_saved: 'Settings saved — applies to new submissions',
  vendor_mgmt_title: 'Vendor Management',
  review_removal_title: 'Review Removal Queue',
  reports_title: 'Reports Queue',
  approve: 'Approve',
  approve_remove: 'Remove review',
  reject: 'Reject',
  reject_keep: 'Keep review',
  freeze: 'Freeze',
  unfreeze: 'Unfreeze',
  ban: 'Ban',
  upgrade_veteran: 'Upgrade to Veteran',
  set_tier_label: 'Vendor tier',
  tier_downgrade_confirm_title: 'Downgrade vendor',
  tier_downgrade_confirm_desc:
    'Downgrade this vendor to "New"? Their new deals will again require admin approval before publishing.',
  send_message: 'Send Message',
  audit_log: 'Admin action log',
  no_pending: 'No pending removal requests — the queue is clear',
  no_pending_body: 'New requests from vendors will appear here.',
  removal_loading: 'Loading requests…',
  ai_score: 'AI confidence in its recommendation',
  reject_reason_label: 'Rejection reason',
  reject_detail_label: 'Additional detail',
  reject_detail_placeholder: 'Describe the reason...',
  reject_reason_wrong_price: 'Wrong price',
  reject_reason_missing_image: 'Missing / bad image',
  reject_reason_category_mismatch: 'Category mismatch',
  reject_reason_content_policy: 'Content policy violation',
  reject_reason_unclear_description: 'Unclear description',
  reject_reason_other: 'Other',
  vendor_reason_label: 'Vendor reason',
  filter_all: 'All',
  account_state_active: 'Active',
  account_state_veteran: 'Veteran',
  account_state_frozen: 'Frozen',
  account_state_banned: 'Banned',
  account_state_pending: 'Pending approval',
  account_state_pending_processor: 'Pending KYC verification',
  account_state_rejected: 'Rejected',
  tier_new: 'New',
  tier_veteran: 'Veteran',
  confirm_action_title: 'Confirm action',
  confirm_action_desc: 'Are you sure you want to perform this action?',
  message_subject_label: 'Subject',
  message_body_label: 'Message',
  reports_title_page: 'Reports',
  resolve: 'Resolve',
  resolve_resolution_label: 'Resolution',
  status_open: 'Open',
  status_investigating: 'Investigating',
  status_resolved: 'Resolved',
  status_dismissed: 'Dismissed',
  filter_status: 'Status',
  filter_state: 'Account state',
  filter_tier: 'Tier',
  filter_from: 'From date',
  filter_to: 'To date',
  llm_model_label: 'Gemini model ID',
  llm_model_placeholder: 'gemini-3-flash-preview',
  llm_model_help: 'The model ID used by all AI agents. Changes take effect immediately.',
  llm_primary_label: 'Primary model',
  llm_primary_help:
    'Main model for all AI tasks. If it fails, the system automatically retries with the fallback model.',
  llm_fallback_label: 'Fallback model',
  llm_fallback_placeholder: 'Select a fallback model…',
  llm_fallback_help: 'Activated automatically if the primary model is unavailable.',
  llm_fallback_current: 'Active fallback',
  llm_save: 'Save',
  llm_reset: 'Reset',
  llm_saved: 'Saved successfully',
  llm_default_badge: 'Default',
  llm_active_config: 'Active configuration',
  llm_current_model: 'Current model',
  llm_default_model: 'Default model',
  llm_prompt_title: 'AI Moderation Instructions Prompt',
  llm_prompt_help:
    'These instructions are sent to the AI before deal content. Changes take effect immediately for new deals.',
  llm_api_key_title: 'Google API Key',
  llm_api_key_label: 'API key',
  llm_api_key_placeholder: 'AIza...',
  llm_api_key_help:
    'Overrides the server-level GOOGLE_API_KEY secret. Leave blank to use the environment variable. Takes effect immediately on Save.',
  llm_api_key_source_env: 'Active - set via environment variable',
  llm_api_key_source_db: 'Active - override stored in database',
  llm_api_key_source_none: 'Not configured - AI moderation is disabled',
  llm_api_key_clear: 'Clear DB override (revert to env var)',
  llm_api_key_configured: 'Key configured',
  llm_support_section_title: 'Support Agent Models',
  llm_support_triage_label: 'Triage Model',
  llm_support_triage_help: 'AI model for initial triage. Empty = use primary model',
  llm_support_decision_label: 'Decision Model',
  llm_support_decision_help: 'AI model for case decisions. Empty = use primary model',
  // ─── Reports queue additions ──────────────────────────────────────────
  dismiss: 'Dismiss',
  dismiss_confirm_title: 'Dismiss report',
  dismiss_confirm_desc:
    'Are you sure you want to dismiss this report? This action cannot be undone.',
  dismiss_note_label: 'Note (optional)',
  investigate: 'Mark Investigating',
  view_entity: 'View',
  reporter_label: 'Reporter',
  filter_target_type: 'Target type',
  target_type_vendor: 'Vendor',
  target_type_deal: 'Deal',
  target_type_review: 'Review',
  target_type_user: 'User',
  // ─── Review removal queue additions ───────────────────────────────────
  reviewer_label: 'Reviewer',
  deal_label: 'Deal',
  deal_type_label: 'Deal type',
  vendor_pattern_warning:
    "Note: {{count}} reviews have already been removed at this vendor's request",
  vendor_pattern_warning_one: "Note: one review has already been removed at this vendor's request",
  rating_label: 'Rating',
  filter_pending: 'Awaiting decision',
  filter_approved: 'Removed',
  filter_rejected: 'Rejected (kept)',
  decided_at_label: 'Decided',
  removal_status_pending: 'Pending',
  removal_status_approved: 'Review removed',
  removal_status_rejected: 'Review kept',
  no_history: 'No decisions with this status yet',
  reviewer_anonymous: 'Anonymous user',
  submitted_at_label: 'Submitted',
  deal_type_coupon: 'Coupon',
  deal_type_item: 'Item',
  deal_type_group: 'Group deal',
  // ─── Approval queue additions ─────────────────────────────────────────
  reject_dialog_desc:
    'Select a reason and optional detail to send the vendor feedback on why their deal was not approved.',
  window_start: 'Window start',
  window_end: 'Window end',
  commission: 'Commission',
  personal_deal_badge: 'Personal deal',
  pickup_address: 'Pickup address',
  special_instructions: 'Special instructions',
  approve_error: 'Failed to approve deal',
  reject_error: 'Failed to reject deal',
  deal_type_COUPON: 'Coupon',
  deal_type_GROUP: 'Group',
  // ─── Vendor management additions ──────────────────────────────────────
  activate: 'Activate',
  freeze_reason_label: 'Freeze reason',
  freeze_reason_placeholder: 'Describe the reason for freezing this vendor...',
  freeze_duration_label: 'Duration (days, optional)',
  freeze_duration_placeholder: 'e.g. 30',
  ban_reason_label: 'Ban reason',
  ban_reason_placeholder: 'Describe the reason for banning this vendor...',
  audit_by_label: 'By',
  // ─── New state machine additions ──────────────────────────────────────
  filter_flagged: 'Flagged',
  filter_active: 'Active',
  filter_frozen: 'Frozen',
  filter_banned: 'Banned',
  vendor_flag_reason_label: 'Flag reason',
  vendor_reject_reason_label: 'Rejection reason',
  llm_decision_label: 'AI decision',
  llm_decision_approve: 'Approved',
  llm_decision_flag: 'Flagged',
  llm_decision_reject: 'Rejected',
  approve_anyway_button: 'Approve anyway',
  approve_anyway_confirm_title: 'Approve vendor application',
  approve_anyway_confirm_body:
    'This overrides the AI decision; the vendor moves on to payment setup (identity verification with Stripe). Continue?',
  approve_anyway_confirm_action: 'Approve anyway',
  force_activate_button: 'Force Activate (skip payment setup)',
  // ─── Nav section labels (admin-makeover/foundation) ───────────────────
  nav: {
    sections: {
      main: 'Main',
      moderation: 'Moderation',
      analytics: 'Analytics',
      system: 'System',
    },
  },
  // ─── Admin support dashboard (phase 6) ───────────────────────────────────
  support: {
    // Inbox
    inbox_title: 'Support Inbox',
    inbox_empty: 'No open support items. If filters are active, try clearing them',
    inbox_load_error: "Couldn't load the support inbox. Try refreshing the page.",
    inbox_polling: 'Updating...',
    confidence_empty: '—',
    // Filter labels
    filter_type: 'Type',
    filter_status: 'Status',
    filter_sla: 'SLA',
    filter_assigned: 'Assigned',
    filter_category: 'Category',
    filter_priority: 'Priority',
    filter_ai_confidence: 'AI Confidence ≤',
    composer_visibility_label: 'Message audience',
    filter_sort: 'Sort',
    filter_visibility: 'Message visibility',
    // Filter values
    type_all: 'All',
    type_ticket: 'Ticket',
    type_case: 'Case',
    ticket_status_open: 'Open',
    ticket_status_ai_handling: 'AI handling',
    ticket_status_awaiting_user: 'Awaiting user',
    ticket_status_escalated: 'Escalated',
    ticket_status_awaiting_agent: 'Awaiting agent',
    ticket_status_human_handling: 'Human handling',
    ticket_status_resolved: 'Resolved',
    ticket_status_closed: 'Closed',
    ticket_status_reopened: 'Reopened',
    case_status_opened: 'Opened',
    case_status_vendor_review: 'Vendor review',
    case_status_vendor_offered: 'Vendor offered',
    case_status_escalated: 'Escalated',
    case_status_ai_handling: 'AI handling',
    case_status_awaiting_info: 'Awaiting info',
    case_status_human_review: 'Human review',
    case_status_resolved: 'Resolved',
    case_status_closed: 'Closed',
    case_status_reopened: 'Reopened',
    status_all: 'All statuses',
    assigned_any: 'Any agent',
    assigned_unassigned: 'Unassigned',
    assigned_me: 'Me',
    sla_any: 'Any SLA',
    sla_breached: 'SLA breached',
    sla_warning: 'Nearing breach',
    sla_healthy: 'Within SLA',
    priority_low: 'Low',
    priority_normal: 'Normal',
    priority_high: 'High',
    priority_urgent: 'Urgent',
    // Sort
    sort_sla_soonest: 'SLA: most urgent first',
    sort_updated_desc: 'Last Updated',
    sort_created_desc: 'Newest first',
    // Table columns
    col_type: 'Type',
    col_id: 'ID',
    col_subject: 'Subject',
    col_opener: 'Opener',
    col_assigned: 'Agent',
    col_status: 'Status',
    col_sla: 'SLA',
    col_confidence: 'AI Confidence',
    col_priority: 'Priority',
    col_updated: 'Updated',
    // Actions
    action_claim: 'Assign to me',
    action_assign: 'Assign',
    action_open: 'Open',
    action_unassign: 'Unassign',
    action_post_message: 'Post Message',
    action_post_internal: 'Add Internal Note',
    action_close: 'Close',
    action_reopen: 'Reopen',
    action_issue_refund: 'Issue Refund',
    action_deny_refund: 'Deny Refund',
    action_replacement: 'Replacement',
    action_reassign_vendor: 'Reassign to Vendor',
    action_escalate: 'Escalate',
    // Context panel
    ctx_transaction: 'Transaction Summary',
    ctx_purchase_id: 'Purchase ID',
    ctx_user_history: 'Customer History',
    ctx_vendor_history: 'Vendor History',
    ctx_vendor_info: 'Vendor',
    ctx_ticket_stats: 'Ticket Stats',
    ctx_attachments: 'Attachments',
    ctx_ai_reasoning: 'AI reasoning',
    ctx_timeline: 'Timeline',
    ctx_opened_at: 'Opened',
    ctx_first_response: 'First Response',
    ctx_avg_response: 'Avg. first response (30 days)',
    ctx_response_vs_avg: 'vs. average',
    ctx_messages: 'Messages',
    ctx_vendor_name: 'Name',
    ctx_vendor_active_deals: 'Active Deals',
    ctx_purchases: 'Purchases',
    ctx_open_tickets: 'Open Tickets',
    ctx_cases: 'Cases',
    ctx_open_cases: 'Open Cases',
    ctx_miss_rate: 'Miss Rate',
    breadcrumb_admin: 'Admin',
    breadcrumb_support: 'Support',
    breadcrumb_ticket: 'Ticket',
    // Visibility badges
    visibility_public: 'Visible to customer',
    visibility_vendor_internal: 'Vendor Internal',
    visibility_site_internal: 'Internal note (staff only)',
    // Fields
    field_transition_reason: 'Reason',
    field_confidence: 'AI Confidence',
    // KB Manager
    kb_title: 'Knowledge Base',
    kb_new: 'New Article',
    kb_edit: 'Edit',
    kb_delete: 'Delete',
    kb_confirm_delete_title: 'Delete knowledge-base article',
    kb_confirm_delete_body:
      'The article "{slug}" will be permanently deleted in all its languages. This cannot be undone. To hide it temporarily, turn off "Active" instead.',
    kb_all_locales: 'All languages',
    kb_all_categories: 'All categories',
    kb_search_placeholder: 'Search by title, slug, or body…',
    kb_empty: 'No knowledge-base articles yet',
    kb_empty_filtered: 'No articles match the current filters',
    kb_clear_filters: 'Clear filters',
    kb_back_to_list: 'Back to list',
    kb_edit_article: 'Edit article: {slug}',
    kb_load_error: 'Failed to load the knowledge base. Refresh the page and try again.',
    kb_filters: 'Filter articles',
    kb_visibility_hint:
      'Internal = visible only to support staff and the AI agent; customers never see this article.',
    kb_field_slug: 'Slug',
    kb_field_locale: 'Language',
    kb_field_category: 'Category',
    kb_field_title: 'Title',
    kb_field_body: 'Body (Markdown)',
    kb_field_tags: 'Tags',
    kb_field_visibility: 'Visibility',
    kb_field_is_active: 'Active',
    kb_save: 'Save',
    kb_cancel: 'Cancel',
    kb_preview: 'Preview',
    kb_error_slug_required: 'Slug is required',
    kb_error_slug_duplicate: 'This slug + locale combination already exists',
    // Settings
    settings_title: 'Support System Settings',
    settings_group_ai_budget: 'AI Budget',
    settings_group_autonomy: 'Autonomy',
    settings_group_models: 'Models',
    settings_group_feature_flag: 'Feature Flag',
    settings_save: 'Save Settings',
    settings_saved: 'Settings saved',
    settings_reset: 'Reset to defaults',
    settings_error_required: 'This field is required',
    settings_section_sla: 'SLA & Timers',
    settings_vendor_window_hours: 'Vendor response time (hours)',
    settings_autoclose_days: 'Auto-close inactive tickets after (days)',
    settings_return_window_days: 'Product return window from delivery (days)',
    settings_reopen_limit: 'Max reopens per ticket (times)',
    settings_section_media: 'Media',
    settings_media_max_images: 'Max Images per Ticket',
    settings_media_max_mb: 'Max Attachment Size (MB)',
    settings_section_notifications: 'Notifications',
    settings_notification_emails: 'Notification Emails',
    // Settings field labels + help
    help_support_vendor_window_hours: 'Hours the vendor has to respond before AI escalation',
    label_support_sla_ai_hours: 'AI SLA (hours)',
    help_support_sla_ai_hours: 'Target time for AI to resolve a ticket',
    label_support_sla_human_hours: 'Human SLA (hours)',
    help_support_sla_human_hours: 'Target time for a human agent to resolve a ticket',
    label_support_autoclose_days: 'Auto-close (days)',
    help_support_autoclose_days: 'Auto-close inactive tickets after this many days',
    label_support_ai_confidence_threshold: 'AI Confidence Threshold',
    help_support_ai_confidence_threshold: 'Minimum confidence for autonomous AI action (0–1)',
    label_support_ai_max_tool_calls: 'Max AI Tool Calls',
    help_support_ai_max_tool_calls: 'Tool call limit per AI intervention',
    label_support_ai_max_cost_cents: 'AI Cost Budget per Case (agorot)',
    help_support_ai_max_cost_cents: 'Maximum AI cost per case',
    label_support_notification_emails: 'Notification Emails',
    help_support_notification_emails: 'Comma-separated list of emails for support notifications',
    label_support_media_max_images: 'Max Images per Ticket',
    help_support_media_max_images: 'Maximum number of images attachable to a ticket',
    label_support_media_max_mb: 'Max Image Size (MB)',
    help_support_media_max_mb: 'Maximum file size in MB per attachment',
    label_support_return_window_days: 'Return Window (days)',
    help_support_return_window_days: 'Days from purchase to open a case',
    label_support_reopen_limit: 'Reopen Limit',
    help_support_reopen_limit: 'Maximum number of times a ticket can be reopened',
    label_support_llm_triage_model: 'Support Triage Model',
    help_support_llm_triage_model: 'AI model for initial triage. Empty = use primary model',
    label_support_llm_decision_model: 'Support Decision Model',
    help_support_llm_decision_model: 'AI model for decisions. Empty = use primary model',
    // Metrics
    metrics_title: 'Support System Metrics',
    metrics_from: 'From',
    metrics_to: 'To',
    metrics_section_overview: 'Overview',
    metrics_ticket_total: 'Total tickets',
    metrics_case_total: 'Total transaction cases',
    metrics_sla_tickets: 'SLA compliance — tickets',
    metrics_sla_cases: 'SLA compliance — cases',
    metrics_section_ai: 'AI performance',
    metrics_ai_handoff: 'Escalated to human (%)',
    metrics_ai_autoresolve: 'Auto-resolved by AI (%)',
    metrics_mttr_tickets: 'Avg. time to resolve — tickets',
    metrics_mttr_cases: 'Avg. time to resolve — cases',
    metrics_section_cost: 'AI cost',
    metrics_token_cost_per_case: 'Avg. AI cost per case (₪)',
    metrics_section_refunds: 'Refund decision mix',
    metrics_section_vendors: 'Response-window misses — by vendor',
    metrics_vendor_total: 'Total cases',
    metrics_vendor_miss: 'Window misses',
    metrics_vendor_miss_pct: 'Miss rate (%)',
    metrics_section_timeseries: 'Daily trends',
    metrics_ts_tickets: 'Tickets opened',
    metrics_ts_cases: 'Cases opened',
    metrics_ts_sla_breaches: 'SLA breaches',
    metrics_load_error:
      'Failed to load metrics. Try refreshing the page or narrowing the date range.',
    metrics_empty_range: 'No support data in the selected date range.',
    metrics_sla_not_measured: '— (not yet measured)',
    metrics_vendor_name: 'Vendor',
    metrics_ts_date: 'Date',
    // Detail pages
    ticket_detail: 'Ticket Detail',
    case_detail: 'Case Detail',
    ticket_load_error: 'Ticket not found, or it failed to load. Try refreshing.',
    case_load_error: 'Failed to load the case. Try refreshing the page.',
    // KB table columns
    kb_col_slug: 'Slug',
    kb_col_locale: 'Language',
    kb_col_category: 'Category',
    kb_col_title: 'Title',
    kb_col_active: 'Active',
    kb_col_visibility: 'Visibility',
    kb_col_updated: 'Updated',
    kb_new_article: 'New article',
    // Locale display names
    lang_he: 'Hebrew',
    lang_en: 'English',
    lang_fr: 'French',
    lang_ar: 'Arabic',
    lang_ru: 'Russian',
    // KB article statuses
    kb_status_active: 'Active',
    kb_status_inactive: 'Inactive',
    kb_status_public: 'Public',
    kb_status_draft: 'Draft',
    kb_status_faq: 'FAQ',
    kb_status_archived: 'Archived',
    // KB categories
    kb_category_faq: 'FAQ',
    kb_category_how_to: 'How-To',
    kb_category_billing: 'Billing',
    kb_category_technical: 'Technical',
    kb_category_account: 'Account',
    kb_category_general: 'General',
    kb_category_policy: 'Policy',
    kb_category_refund_rules: 'Refund rules',
    kb_category_redemption_rules: 'Redemption rules',
    kb_category_internal: 'Internal',
    visibility_internal: 'Internal',
    // Ticket categories
    ticket_category_account: 'Account',
    ticket_category_how_to: 'How-To',
    ticket_category_billing: 'Billing',
    ticket_category_technical: 'Technical',
    ticket_category_general: 'General',
    ticket_type_SLA: 'SLA',
    // Common
    confirm_delete_kb_title: 'Delete KB Article',
    confirm_delete_kb_body: 'This will permanently delete the article. Continue?',
    confirm_refund_title: 'Confirm Refund',
    confirm_refund_body: 'Issue a refund to the customer? This action cannot be undone.',
    confirm_close_ticket_title: 'Close ticket',
    confirm_close_ticket_body:
      'Close this ticket? The customer will be notified. It can be reopened later. No refund will be issued.',
    confirm_deny_refund_body:
      'Deny this refund request? The customer will be notified that the request was denied. You can add a reason.',
    confirm_replacement_body:
      'Approve a replacement? The vendor will be notified to supply a replacement to the customer; no money is refunded.',
    confirm_close_case_body:
      'Close this case with no further decision? The customer will be notified. It can be reopened if needed.',
    reason_admin_denied: 'Denied by agent',
    reason_admin_replacement: 'Replacement approved by agent',
    toast_saved: 'Saved successfully',
    toast_failed: 'Action failed',
    toast_claimed: 'Ticket claimed',
    toast_assigned: 'Assigned successfully',
    toast_refund_queued: 'Refund queued',
    refund_outcome_label: 'Refund type',
    outcome_refund_full: 'Full refund',
    outcome_refund_partial: 'Partial refund',
    outcome_replacement: 'Replacement',
    outcome_deny: 'Deny',
    // Refund dialog
    refund_error_generic: 'An error occurred',
    refund_dialog_body:
      'Optionally enter a partial amount. Leave empty for a full refund, then press "Continue to breakdown" to see the breakdown.',
    refund_amount_override_label: 'Refund amount (₪) — leave blank for a full refund',
    action_approve_refund: 'Continue to breakdown',
    action_approve_refund_loading: 'Calculating...',
    refund_approved_title: 'Refund Approved',
    refund_approved_body:
      'Step 2 of 2: review the breakdown and click "Execute refund". This moves money to the customer and cannot be undone.',
    refund_amount_label: 'Amount',
    refund_customer_share: 'Refund to customer',
    refund_platform_share: "Platform's share of the cost",
    refund_vendor_share: "Vendor's share of the cost",
    refund_back: 'Back',
    action_execute_refund: 'Execute Refund',
    action_execute_refund_loading: 'Executing...',
  },
} as const;
