/**
 * Модель данных для юридических страниц (оферта, политики, согласие, реестр).
 * Весь статичный текст описывается этими типами и рендерится одним шаблоном
 * `LegalDoc` (см. `../ui/LegalDoc.tsx`). README — в корне `entities/legal-doc`.
 */

/** Элемент списка: простая строка или «жирный зачин + остаток». */
export type LegalListItem = string | { strong: string; text?: string }

/** Блок контента внутри секции. Порядок блоков в секции сохраняется как есть. */
export type LegalBlock =
  /** Абзац. variant управляет оформлением (пример / предупреждение / акцент). */
  | { kind: 'text'; text: string; variant?: 'example' | 'warning' | 'emphasis' }
  /** Подзаголовок внутри секции (был `h4.subSectionTitle`). */
  | { kind: 'subheading'; text: string }
  /** Маркированный список. */
  | { kind: 'list'; items: LegalListItem[] }
  /** Список определений (термин + расшифровка) в виде боксов. */
  | { kind: 'definitions'; items: { term: string; text: string }[] }
  /** Список целей: заголовок + вложенный список — в виде боксов. */
  | { kind: 'goals'; items: { title: string; items: string[] }[] }
  /** Информационный бокс со строками (реквизиты, контакты, данные оператора). */
  | { kind: 'infoBox'; lines: LegalListItem[] }
  /** Кнопка-ссылка (внешний ресурс), по центру в отдельном блоке. */
  | { kind: 'link'; href: string; text: string }

/** Секция документа: необязательный заголовок (h3) + блоки контента. */
export interface LegalSection {
  title?: string
  blocks: LegalBlock[]
}

/** Документ целиком: заголовок (h1), необязательный подзаголовок (h2), секции. */
export interface LegalDoc {
  title: string
  subtitle?: string
  sections: LegalSection[]
}
