version = "1.0"

[main]
name = "Main panel"
services = ["nginx"]

    [main.components]
    name = "Classic fields"

        [main.components.boolean]
        ask = "I can haz boolean?"
        type = "boolean"

        [main.components.number]
        ask = "I can haz number?"
        type = "number"
        min = 1
        max = 100

        [main.components.range]
        ask = "I can haz range?"
        type = "range"
        min = 0
        max = 100
        step = 10

        [main.components.str]
        ask = "I can haz string?"
        type = "string"

        [main.components.text]
        ask = "I can haz text?"
        type = "text"

        [main.components.password]
        ask = "I can haz paszwurd?"
        type = "password"

        [main.components.path]
        ask = "I can haz path?"
        type = "path"

        [main.components.email]
        ask = "I can haz email?"
        type = "email"

        [main.components.url]
        ask = "I can haz url?"
        type = "url"

        [main.components.date]
        ask = "I can haz date?"
        type = "date"

        [main.components.time]
        ask = "I can haz time?"
        type = "time"

        [main.components.color]
        ask = "I can haz color?"
        type = "color"

        [main.components.select]
        ask = "I can haz choices?"
        type = "select"
        choices.woot = "W00t \\o\\ You can haz choicez"
        choices.awesome = "Awesom! =D  You can put a super long description"
        choices.ohnoes = "Uhoh? ô.o"

        [main.components.domain]
        ask = "I can haz domain?"
        type = "domain"

        [main.components.app_]
        ask = "I can haz app?"
        type = "app"

        [main.components.user]
        ask = "I can haz user?"
        type = "user"

        [main.components.group]
        ask = "I can haz group?"
        type = "group"

        [main.components.tags]
        ask = "I can haz several emailz?"
        type = "tags"
        placeholder = "Enter some emails separated by commas"
        pattern.regexp = '^.+@.+$'
        pattern.error = 'An email is required for this field'

        [main.components.tags2]
        ask = "I can chose several tagz?"
        type = "tags"
        choices = ['table', 'chair', 'bed', 'desk']
        placeholder = "Add some tags"
        icon = "bed"

        [main.components.file]
        ask = "I can haz file?"
        type = "file"
        help = "(NB: this won't actually be uploaded anywhere unless 'bind' is defined in the question)"

    [main.messages]
    name = "Messages / Read-only components"

        [main.messages.success]
        ask = "I can haz success!"
        type = "alert"
        style = "success"
        icon = "beer"

        [main.messages.info]
        ask = "I can haz info"
        type = "alert"
        style = "info"

        [main.messages.warning]
        ask = "Onoez i haz a warnin'"
        type = "alert"
        style = "warning"

        [main.messages.danger]
        ask = "Onoez i haz a Danger!!"
        type = "alert"
        style = "danger"

        [main.messages.display_text]
        ask = "I haz a simple text"
        type = "display_text"

        [main.messages.markdown]
        ask = "I haz some **awesome** *markdown* text!!"
        type = "markdown"

    [main.generic]
    name = "Specific question options demo"

        [main.generic.pattern]
        ask = "I can haz pattern validation!"
        type = "string"
        pattern.regexp = '^[A-F]\d\d$'
        pattern.error = "Provide a room like F12 : one uppercase and 2 numbers"

        [main.generic.example]
        ask = "I can haz example value"
        type = "string"
        example = "Camille"

        [main.generic.required]
        ask = "I can haz required field"
        type = "string"
        optional = false

        [main.generic.helptext]
        ask = "I can haz some help tips"
        type = "string"
        help = "Im in ur help text helpin' yar userz"

        [main.generic.triggervisible]
        ask = "I can trigger visibility for other questionz or sectionz!!"
        type = "select"
        choices.nothing = "Not triggering any invisible question/section"
        choices.nextquestion = "Display next question"
        choices.nextsection = "Display next section"

        [main.generic.visible_question]
        ask = "This question is only displayed if previous question is set to 'Display next question'"
        type = "string"
        visible = "triggervisible == 'nextquestion'"

    [main.ifsection]
    name = "This section is only displayed if the previous question is set to 'Display next section'"
    visible = "triggervisible == 'nextsection'"

        [main.ifsection.sub]
        ask = "I can haz cheezburgers?"
        type = "string"

[bind]
name = "Bind panel"

    [bind.settings]
    name = "Bind to settings"

        [bind.settings.arg1]
        ask = "Save app settings arg1"
        type = "string"

    [bind.variable]
    name = "Bind to key/value in files"

        [bind.variable.arg2]
        ask = "I can haz value for arg2 in test.yml ?"
        type = "string"
        bind = ":__FINALPATH__/test.yml"

        [bind.variable.arg3]
        ask = "I can haz value for arg3 in test.json ?"
        type = "string"
        bind = ":__FINALPATH__/test.json"

        [bind.variable.arg4]
        ask = "I can haz value for arg4 in test.ini ?"
        type = "string"
        bind = ":__FINALPATH__/test.ini"

        [bind.variable.arg5]
        ask = "I can haz value for arg5 in test.php ?"
        type = "string"
        bind = ":__FINALPATH__/test.php"

        [bind.variable.arg6]
        ask = "I can haz value for arg6 in test.py ?"
        type = "string"
        bind = ":__FINALPATH__/test.py"

    [bind.file]
    name = "Bind to an entire file"

        [bind.file.arg7]
        ask = "I can haz a .json ?"
        type = "file"
        accept = ["application/json"]
        bind = "__FINALPATH__/test.json"

        [bind.file.arg7b]
        ask = "Emeged i can edit sum file!#1!"
        type = "text"
        bind = "__FINALPATH__/nginx.conf"

    [bind.function]
    name = "Bind to custom bash getters / validators / setters"

        [bind.function.arg8]
        ask = "I can haz a password ?"
        help = "N.B. : This is mapped to a custom validate__/set__arg8 function in the config script"
        type = "password"
        bind = "null"

        [bind.function.arg9]
        ask = "Custom getter arg9  N.B.: This is mapped to a custom get__arg9 function in the config script"
        type = "markdown"
        bind = "null"

        [bind.function.alert]
        ask = "Custom getter alert N.B.: This is mapped to a custom get__alert function in the config script"
        type = "alert"
        style = "info"
        bind = "null"
