# juice-email-cli 内置默认配置
#
# 配置加载顺序（优先级从低到高）：
#   1. CLI 内置默认值（defaults/juice.yaml）
#   2. 用户主目录 ~/juice.yaml（如果存在）
#   3. 优先配置文件（-c 指定 或 输入文件同级目录，二者互斥，只生效一个）
#
# 合并方式：深度合并，后面的覆盖前面的
#
# 用户配置文件（~/juice.yaml 或项目 juice.yaml）只需填写需要覆盖的字段即可。

# 设为 false 时，模板变量中的 HTML 标签会被转义（<sup> 变成 &lt;sup&gt;）
# 默认 true：变量值中的 HTML 标签（如 <sup>、<sub>）直接渲染
rawHtml: true

# ─── juice CSS 内联选项 ───────────────────────────────────────────────────────
juice:
  # 处理完成后移除 <style> 标签（推荐 true，提高 Gmail/Outlook 等邮件客户端兼容性）
  # 设为 true 时，内联完成后会删除所有 <style> 标签（除非通过 preservedSelectors 保留特定选择器）
  removeStyleTags: true

  # 保留 @media 媒体查询到独立 <style> 块（响应式邮件必须开启）
  preserveMediaQueries: true

  # 保留 @font-face 声明（自定义字体支持）
  preserveFontFaces: true

  # 保留 @keyframes 动画（部分邮件客户端支持）
  preserveKeyFrames: true

  # 将 style 属性中的样式转换为 table 系列元素的 HTML 属性（align、bgcolor、valign 等）
  # 开启后对 Outlook 2003-2019（使用 Word 渲染引擎）的兼容性更好
  # 注意：仅对 <table>、<tr>、<td>、<th> 等表格元素生效
  applyAttributesTableElements: true

  # 是否处理 HTML 文档中的 <style> 标签（通常保持 true）
  # 设为 true 时，<style> 标签内的 CSS 会被解析并内联到对应元素
  # 设为 false 时，<style> 标签的 CSS 不会被处理（适用于已内联或使用外部 CSS 的场景）
  applyStyleTags: true

  # 保留 CSS 中的 !important 声明
  preserveImportant: false

  # 解析 CSS 变量（如 var(--brand-color)）并替换为具体值
  # 设为 true 时，CSS 变量会被解析并内联到对应的 style 属性中
  resolveCSSVariables: true

  # 为 <img> 元素应用 width 属性（基于 CSS 样式中的宽度值）
  # 设为 true 时，图片的 CSS 宽度会同时添加为 HTML width 属性
  applyWidthAttributes: true

  # 为 <img> 元素应用 height 属性（基于 CSS 样式中的高度值）
  # 设为 true 时，图片的 CSS 高度会同时添加为 HTML height 属性
  applyHeightAttributes: true

  # 将 ::before 和 ::after 伪元素转换为 <span> 标签插入 DOM
  # 设为 true 时，伪元素内容将作为可见的 DOM 元素呈现，而非仅保留样式
  inlinePseudoElements: true

  # 移除 <style> 标签时，是否保留伪类选择器规则（:hover、:active、:focus 等）
  # 设为 true 时，juice.ignoredPseudos 中的伪类规则会保留在 <style> 标签内，其他样式正常内联
  # 设为 false 时，所有伪类规则都会被移除
  preservePseudos: true

  # 保留的 CSS 选择器列表（支持子字符串匹配）
  # 当 removeStyleTags 为 true 时，这些选择器的规则会保留在 <style> 标签内，不会被内联
  #
  # 用途：保留邮件客户端特定的样式（如 Gmail/Outlook 兼容性修复）
  # 匹配方式：子字符串包含即匹配
  # 示例：
  #   - '.gmail-'    → 匹配 '.gmail-desktop'、'.gmail-mobile' 等 Gmail 相关样式
  #   - '#outlook-'  → 匹配 '#outlook-wrapper'、'#outlook-footer' 等 Outlook 相关样式
  #   - 'conditional' → 匹配包含 'conditional' 的选择器（如条件注释包裹的选择器）
  #
  # 注意：这是简化写法，实际由 juice 库的子字符串匹配逻辑处理
  preservedSelectors:
    - ".gmail-"
    - "#outlook-"
    - ":hover"

  # 将保留的额外 CSS（媒体查询、@font-face、@keyframes）插入到文档的位置
  # 仅当 preserveMediaQueries/preserveFontFaces/preserveKeyFrames 为 true 时生效
  # - true: 自动选择位置（优先 <head>，其次 <body>，最后文档末尾）
  # - CSS 选择器字符串: 插入到匹配元素的内部末尾，如 '#email-container'
  insertPreservedExtraCss: true

  # 额外附加的外部 CSS 文件（相对于 HTML 模板所在目录）
  # extraCssFiles: []

# ─── 模板变量（Mustache 语法：{{变量名}}）────────────────────────────────────
variables:
  brandName: ""
  brandColor: "#0066cc"
  logoUrl: ""
  websiteUrl: ""
  recipientName: "用户"
  subject: ""
  previewText: ""
  ctaText: "立即查看"
  ctaUrl: ""
  companyName: ""
  companyAddress: ""
  unsubscribeUrl: ""
  currentYear: "2026"

# ─── 输出选项 ─────────────────────────────────────────────────────────────────
output:
  # 普通输出文件后缀
  normalSuffix: ".output.html"
  # 压缩输出文件后缀
  minifiedSuffix: ".minified.html"
  # 文件编码
  encoding: "utf8"

# ─── 压缩选项（html-minifier-terser）────────────────────────────────────────
# ⚠️ 邮件 HTML 压缩注意事项：
#   1. 必须保持 removeConditionalComments: false，保护 Outlook 条件注释
#   2. 不要移除属性引号，确保兼容性
#   3. 不要移除空属性，某些属性是必需的
#   4. 不要移除空元素，Outlook 对此支持不佳
minify:
  # 折叠多余空白
  collapseWhitespace: true

  # 保守折叠：始终保留至少 1 个空格（避免单词连在一起）
  conservativeCollapse: true

  # 移除 HTML 注释（注意：不会移除条件注释）
  removeComments: true

  # 保留条件注释（不要改为 true，会删除 <!--[if mso]> 等 Outlook MSO 兼容代码）
  removeConditionalComments: false

  # 压缩内联 CSS（style 属性）
  minifyCSS: true

  # 压缩内联 JS（邮件中通常无 JS，保持 false）
  minifyJS: false

  # 移除空属性（设为 false 确保兼容性）
  removeEmptyAttributes: false

  # 规范化布尔属性（设为 false 确保兼容性）
  collapseBooleanAttributes: false

  # 移除冗余属性（当属性值与默认值相同时）
  removeRedundantAttributes: true

  # 使用短的 doctype
  useShortDoctype: true

  # 保留行尾换行（配合 collapseWhitespace 使用）
  preserveLineBreaks: false
