APPEARANCE_OPTIONS is a dictionary with option names as keys and option details
as value, ex:

  'primary_color': {
    'label': 'Primary color',
    'type': 'color'
  },


Ordering
--------

Options can be ordered with "rank" keys (lower come first), ex:

  'primary_color': {
    'label': 'Primary color',
    'type': 'color'
    'rank': 0,
  },


Classifying
-----------

Options can be classified in sections, with the "section" key, ex:

  'primary_color': {
    'section': 'General options',
    'label': 'Primary color',
    'type': 'color'
    'rank': 0,
  },

Sections will be ordered relative to their most important option, in the
example above the "General options" section will be the first section as it
contains the "primary_color" option which has 0 as rank.


Additional help text
--------------------

Option labels can be augmented with an additional help text, with the
'help_text' key:

  'h1_size': {
    'label': 'Size of level 1 title',
    'help_text': '(page title)',
    'type': 'number',
    'default': 36
  },


Default values
--------------

Options can have a default value set with the 'defaut' key:

  'primary_color': {
    'label': 'Primary color',
    'type': 'color',
    'default': '#117187',
  },

The default value can be the chosen value of another option, with the
'default_same_as' key:

  'primary_color': {
    'label': 'Primary color',
    'type': 'color',
    'default': '#117187',
  },
  'button_color': {
    'label': 'Button color',
    'type': 'color',
    'default_same_as': 'primary_color',
  },


Option types
------------

'text': simple text

'number': a number

'length': a CSS length (number + unit and %)

'select': a value selected in a list of options,

  'title_weight': {
      'label': 'Title weight',
      'type': 'select',
      'options': [
          {'label': 'Regular', 'value': '400'},
          {'label': 'Bold', 'value': '700'},
      ],
      'default': '400',
  },

'color': opaque color, in #RRGGBB format, it's possible to include a contrast
check with the 'check_contrast' key:

  'button_color': {
    'label': 'Text color of buttons',
    'type': 'color',
    'check_contrast': 'button_background',
  },

Or with the 'check_contrast_inv' key to have the color displayed as background
in the visual contrast indicator.

'size', height/width, it will generate both variables, ex:

  'logo_size': {
    'label': 'Logo size',
    'type': 'size',
    'default': {'height': '100px', 'width': '200px'},
  },

will generate logo_height and logo_width variables.
