return {
  {
    "stevearc/conform.nvim",
    event = { "BufReadPre", "BufNewFile" },
    config = function()
      require("conform").setup({
        formatters_by_ft = {
          -- Lua
          lua = { "stylua" },
          
          -- JavaScript/TypeScript/Web
          javascript = { "prettier" },
          typescript = { "prettier" },
          javascriptreact = { "prettier" },
          typescriptreact = { "prettier" },
          vue = { "prettier" },
          css = { "prettier" },
          scss = { "prettier" },
          less = { "prettier" },
          html = { "prettier" },
          json = { "prettier" },
          jsonc = { "prettier" },
          yaml = { "prettier" },
          markdown = { "prettier" },
          graphql = { "prettier" },
          handlebars = { "prettier" },
          
          -- Ruby
          ruby = { "rubocop" },
          
          -- Python (black first, then isort for imports)
          python = { "black", "isort" },
          
          -- Bash/Shell
          sh = { "beautysh" },
          bash = { "beautysh" },
          zsh = { "beautysh" },
        },
        
        -- Format on save
        format_on_save = {
          timeout_ms = 500,
          lsp_fallback = true,
        },
        
        -- Formatter settings
        formatters = {
          stylua = {
            prepend_args = { "--indent-type", "Spaces", "--indent-width", "2" },
          },
          prettier = {
            prepend_args = { "--tab-width", "2" },
          },
          beautysh = {
            prepend_args = { "--indent-size", "2" },  -- 2 spaces for bash
          },
        },
      })

      -- Manual format keymap (same as your old <leader>gf)
      vim.keymap.set("n", "<leader>gf", function()
        require("conform").format({
          lsp_fallback = true,
          async = false,
          timeout_ms = 1000,
        })
      end, { desc = "Format buffer" })

      -- Optional: format on visual selection
      vim.keymap.set("v", "<leader>gf", function()
        require("conform").format({
          lsp_fallback = true,
          async = false,
          timeout_ms = 1000,
        })
      end, { desc = "Format selection" })
    end,
  },
}
