local M = {}

function M.get(c, opts)
  return {
    ["@annotation"] = "PreProc",
    ["@attribute"] = "PreProc",
    ["@boolean"] = "Boolean",
    ["@character"] = "Character",
    ["@character.special"] = "SpecialChar",
    ["@comment"] = "Comment",
    ["@comment.error"] = { fg = c.red },
    ["@comment.hint"] = { fg = c.cyan },
    ["@comment.info"] = { fg = c.purple },
    ["@commnet.note"] = { fg = c.cyan },
    ["@comment.todo"] = { fg = c.blue },
    ["@comment.warning"] = { fg = c.yellow },
    ["@constant"] = "Constant",
    ["@constant.builtin"] = "Special",
    ["@constructor"] = { fg = c.subtext1 },
    ["@constructor.tsx"] = { fg = c.blue },
    ["@namespace"] = { fg = c.red, italic = true },
    ["@parameter"] = { fg = c.magenta },
    ["@operator"] = { fg = c.purple },
    ["@property"] = { fg = c.yellow },
    ["@punctuation"] = { fg = c.subtext1 },
    ["@punctuation.delimiter"] = { fg = c.subtext1 },
    ["@punctuation.bracket"] = { fg = c.subtext1 },
    ["@punctuation.special"] = { fg = c.subtext1 },
    ["@string.documentation"] = { fg = c.green, style = opts.styles.comments },
    ["@string.regex"] = { fg = c.purple },
    ["@string.escape"] = { fg = c.magenta },
    ["@symbol"] = { fg = c.yellow },
    ["@tag"] = { fg = c.red },
    ["@tag.attribute"] = { fg = c.purple, italic = true },
    ["@tag.delimiter"] = { fg = c.subtext1 },
    ["@tag.tsx"] = { fg = c.yellow },
    ["@tag.jsx"] = { fg = c.yellow },
    ["@type"] = "Type",
    ["@type.builtin"] = { fg = c.purple },
    ["@type.definition"] = "Typedef",
    ["@variable"] = { fg = c.fg, style = opts.styles.variables },
    ["@variable.builtin"] = { fg = c.purple, style = opts.styles.variables },
    ["@variable.parameter"] = { fg = c.magenta, style = opts.styles.variables },
    ["@variable.member"] = { fg = c.yellow },
    ["@variable.member.vue"] = { fg = c.purple },
    ["@constructor.javascript"] = { fg = c.red },
    ["@function"] = "Function",
    ["@function.builtin"] = "Special",
    ["@function.call"] = "@function",
    ["@function.macro"] = "Macro",
    ["@function.method"] = "Function",
    ["@function.method.call"] = "@function.method",
    ["@keyword"] = { fg = c.purple, style = opts.styles.keywords }, -- For keywords that don't fall in previous categories. purple
    ["@keyword.conditional"] = "Conditional",
    ["@keyword.coroutine"] = "@keyword",
    ["@keyword.debug"] = "Debug",
    ["@keyword.clojure"] = { fg = c.bright_red, style = opts.styles.keywords },
    ["@keyword.function"] = { fg = c.purple, style = opts.styles.functions },
    ["@keyword.import"] = "Include",
    ["@keyword.operator"] = "@operator",
    ["@keyword.return"] = { fg = c.orange, style = opts.styles.keywords },
    ["@keyword.storage"] = "StorageClass",
    ["@text.underline"] = "Underlined",
    ["@text.strong"] = { bold = true },
    ["@text.strikethrough"] = { strikethrough = true },
    ["@text.italic"] = { italic = true },
    ["@module"] = "Include",
    ["@module.builtin"] = { fg = c.purple },
    ["@markup.heading"] = { fg = c.fg, bold = true },
    ["@markup.heading.1"] = { fg = c.purple, bold = true },
    ["@markup.heading.1.marker"] = "@comment",
    ["@markup.heading.2"] = { fg = c.blue, bold = true },
    ["@markup.heading.2.marker"] = "@comment",
    ["@markup.heading.3"] = { fg = c.blue, bold = true },
    ["@markup.heading.3.marker"] = "@comment",
    ["@markup.heading.4"] = { fg = c.blue, bold = true },
    ["@markup.heading.4.marker"] = "@comment",
    ["@markup.heading.5"] = { fg = c.blue, bold = true },
    ["@markup.heading.5.marker"] = "@comment",
    ["@markup.heading.6"] = { fg = c.blue, bold = true },
    ["@markup.heading.6.marker"] = "@comment",
    ["@markup.link"] = { fg = c.subtext1 },
    ["@markup.link.label"] = { fg = c.orange },
    ["@markup.link.url"] = { fg = c.purple },
    ["@markup.list"] = { fg = c.subtext4, bold = true },
    ["@markup.list.checked"] = { fg = c.subtext4 },
    ["@markup.list.unchecked"] = { fg = c.subtext4 },
    ["@markup.raw.block"] = { fg = c.subtext4 },
    ["@markup.raw.delimiter"] = { fg = c.subtext4 },
    ["@markup.quote"] = { fg = c.subtext1 },
    ["@markup.list.checked.markdown"] = { fg = c.green },
    ["@markup.underline"] = "@text.underline",
    ["@markup.strong"] = "@text.strong",
    ["@markup.italic"] = "@text.italic",
    ["@markup.strikethrough"] = "@text.strikethrough",
  }
end
return M
