{
    // Some metadata about your theme. Currently, they are *NOT* used by the game,
    // but a plan is to have a theme manager, where you can see all the themes
    // and their metadata, so you can choose the one you like the most.
    "meta": {
        "name": "Default theme",
        "version": "1.0.0",
        "description": "Default theme for the game",
        "author": "ur-fault",
    },
    "styles": {
        // Basic styles
        "default": {
            "fg": "white",
        },
        "highlight": {
            "fg": "yellow"
        },
        "game.goal": {
            "fg": "red"
        },

        // # General architecture of themes
        //
        // Styles are defined in a hierarchy, so if you do not define a style
        // it will inherit from the parent style.
        // For example, "text" will inherit from the "default" style.
        // And "ui.menu.text" will inherit from the "text" style.
        //
        // You can define as little styles as possible or go really nuts
        // and define every single style and make TMaze really your own.
        //
        //
        // # Styles themselves
        //
        // A style is a pair of "key": "value" where key is the name of the style.
        // A value can have two forms:
        // - string: "a name of some other style" - this will inherit from/reference that style.
        // - object: {
        //    "fg": <color> | null,             // fg - foreground color
        //    "bg": <color> | null,             // bg - background color
        //    "attr": <list of strings> | null, // a list of attributes, for example ["bold", "underscore"]
        // }
        //
        // A color is also polymorphic (can be defined in several ways):
        // - null - undefined, basically default terminal color
        // - array: [r, g, b] - where r, g, b are integers from 0 to 255
        // - string: "name of the color" - for example "red" or "yellow"
        // - string: "a hex color" - for example "#ff0000" is red,
        //     it can be either 4 or 7 characters long (# included), lowercase/uppercase
        //
        // Really cool feature is that you can define your own styles/keys,
        // which won't be used by the game, but you can reference them by other styles.
        // Basically custom constants, which can be reused in other styles.
        // For example you could create a color palette and then use that in your theme.
    }
}
