// This file defines the sections of the options page, in which section each
// option appears in, whether the "experimental" label should appear next to the
// option label, and whether each option should use custom HTML.
{
  sections: [
    {
      name: 'featuredoptions',
      options: [
        {codename: 'list'},
        {codename: 'thread'},
        {codename: 'threadall'},
        {codename: 'ccdarktheme'},
        {codename: 'threadlistavatars'},
        {codename: 'history'},
        {codename: 'perforumstats'},
        {codename: 'batchlock'},
        {codename: 'autorefreshlist'},
        // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
        {codename: 'blockdrafts'},
        // #!endif
      ],
    },
    {
      name: null,
      options: [
        {codename: 'profileindicator'},
        {codename: 'profileindicatoralt'},
      ],
      footerHTML: '<div class="option"><a id="profileIndicatorMoreInfo" target="_blank" rel="noreferrer noopener" data-i18n="profileindicator_moreinfo"></a></div>',
    },
    {
      name: 'minorenhancements',
      options: [
        {codename: 'fixedtoolbar'},
        {codename: 'redirect'},
        {codename: 'loaddrafts', experimental: true},
        {codename: 'increasecontrast'},
        {codename: 'stickysidebarheaders'},
        {codename: 'ccforcehidedrawer'},
        // #!if ['chromium', 'chromium_mv3'].includes(browser_target)
        {codename: 'ccdragndropfix'},
        // #!endif
        {codename: 'enhancedannouncementsdot'},
        {codename: 'repositionexpandthread', experimental: true},
        {codename: 'imagemaxheight'},
        {codename: 'interopthreadpage'},
      ],
    },
  ],
}
