[
    {
        "name": "MaskedInput.Text",
        "comment": " Masked Text input\n\n# State\n@docs State, initialState\n\n# View\n@docs input, Options, defaultOptions\n",
        "unions": [
            {
                "name": "State",
                "comment": " Opaque type for storing local State\n",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "Options",
                "comment": " Options of the input component.\n\n * `pattern` is the pattern used to format the input value. e.g.: (###) ###-####\n * `inputCharacter`: is the special character used to represent user input. Default value: `#`\n * `toMsg`: is the Msg for updating internal `State` of the element.\n * `onInput` is the Msg tagger for the onInput event.\n * `hasFocus` is an optional Msg tagger for onFocus/onBlur event.\n",
                "args": [
                    "msg"
                ],
                "type": "{ pattern : String, inputCharacter : Char, onInput : String -> msg, toMsg : State -> msg, hasFocus : Maybe (Bool -> msg) }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Default value for `Options`.\n * `onInput` (type: `String -> msg`) : The onInput Msg tagger\n * `toMsg` (type: `String -> msg`) : The Msg for updating internal `State` of the element.\n\nValue:\n\n    { pattern = \"\"\n    , inputCharacter = '#'\n    , onInput = onInput\n    , toMsg = toMsg\n    , hasFocus = Nothing\n    }\n\n",
                "type": "(String -> msg) -> (State -> msg) -> Options msg"
            },
            {
                "name": "initialState",
                "comment": " Initial state\n",
                "type": "State"
            },
            {
                "name": "input",
                "comment": " Text input element\n\nExample:\n\n    type Msg = InputUpdated String | StateUpdated MaskedInput.State | FocusUpdated Bool\n\n    MaskedInput.Text.input\n        { pattern = \"(###) ###-####\"\n        , inputCharacter = '#'\n        , onInput = InputUpdated\n        , toMsg = StateUpdated\n        , hasFocus = Just FocusUpdated\n        }\n        [ class \"masked-input\"\n        ...\n        ]\n        model.currentState\n        model.currentValue\n\n",
                "type": "Options msg -> List (Attribute msg) -> State -> String -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "Input.Text",
        "comment": " Text input\n\n# View\n@docs input, Options, defaultOptions\n",
        "unions": [],
        "aliases": [
            {
                "name": "Options",
                "comment": " Options of the input component.\n\n * `maxLength` is the maximum number of character allowed in this input. Set to `Nothing` for no limit.\n * `onInput` is the Msg tagger for the onInput event.\n * `hasFocus` is an optional Msg tagger for onFocus/onBlur event.\n * `type_` is the type of the HTML input element.\n",
                "args": [
                    "msg"
                ],
                "type": "{ maxLength : Maybe Int, onInput : String -> msg, hasFocus : Maybe (Bool -> msg), type_ : String }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Default value for `Options`.\n * `onInput` (type: `String -> msg`) : The onInput Msg tagger\n\nValue:\n\n    { maxLength = Nothing\n    , onInput = onInput\n    , hasFocus = Nothing\n    , type_ = \"text\"\n    }\n\n",
                "type": "(String -> msg) -> Options msg"
            },
            {
                "name": "input",
                "comment": " Text input element\n\nExample:\n\n    type Msg = InputUpdated String | FocusUpdated Bool\n\n    Input.Text.input\n        { maxLength = 10\n        , onInput = InputUpdated\n        , hasFocus = Just FocusUpdated\n        }\n        [ class \"textInput\"\n        ...\n        ]\n        model.currentValue\n\n",
                "type": "Options msg -> List (Attribute msg) -> String -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "Input.Number",
        "comment": " Number input\n\n# View\n@docs input, Options, defaultOptions\n",
        "unions": [],
        "aliases": [
            {
                "name": "Options",
                "comment": " Options of the input component.\n\n * `maxLength` is the maximum number of character allowed in this input. Set to `Nothing` for no limit.\n * `maxValue` is the maximum number value allowed in this input. Set to `Nothing` for no limit.\n * `minValue` is the minimum number value allowed in this input. Set to `Nothing` for no limit.\n * `onInput` is the Msg tagger for the onInput event.\n * `hasFocus` is an optional Msg tagger for onFocus/onBlur event.\n",
                "args": [
                    "msg"
                ],
                "type": "{ maxLength : Maybe Int, maxValue : Maybe Int, minValue : Maybe Int, onInput : Maybe Int -> msg, hasFocus : Maybe (Bool -> msg) }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Default value for `Options`.\nParams:\n * `onInput` (type: `String -> msg`) : The onInput Msg tagger\n\nValue:\n\n    { onInput = onInput\n    , maxLength = Nothing\n    , maxValue = Nothing\n    , minValue = Nothing\n    , hasFocus = Nothing\n    }\n\n",
                "type": "(Maybe Int -> msg) -> Options msg"
            },
            {
                "name": "input",
                "comment": " View function\n\nExample:\n\n    type Msg = InputUpdated String | FocusUpdated Bool\n\n    Input.Number.input\n        { onInput = InputUpdated\n        , maxLength = Nothing\n        , maxValue = 1000\n        , minValue = 10\n        , hasFocus = Just FocusUpdated\n        }\n        [ class \"numberInput\"\n        ...\n        ]\n        model.currentValue\n\n",
                "type": "Options msg -> List (Attribute msg) -> Maybe Int -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "DatePicker",
        "comment": " DatePicker\n\n# View\n@docs datePicker, Options, defaultOptions, NameOfDays\n\n# Initial\n@docs initialState, initialStateWithToday, initialCmd\n\n# Internal State\n@docs State\n",
        "unions": [
            {
                "name": "State",
                "comment": " Opaque type to keep track of the DatePicker internal state\n",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [
            {
                "name": "NameOfDays",
                "comment": " Configuration for name of days in a week.\n\nThis will be displayed as the calendar's header.\nDefault:\n * sunday = \"Su\"\n * monday = \"Mo\"\n * tuesday = \"Tu\"\n * wednesday = \"We\"\n * thursday = \"Th\"\n * friday = \"Fr\"\n * saturday = \"Sa\"\n",
                "args": [],
                "type": "{ sunday : String, monday : String, tuesday : String, wednesday : String, thursday : String, friday : String, saturday : String }"
            },
            {
                "name": "Options",
                "comment": " Configuration of the DatePicker\n * `onChange` is the message for when the selected value in the multi-select is changed. (Required)\n * `toMsg` is the Msg for updating internal `State` of the DatePicker element. (Required)\n * `nameOfDays` is the configuration for name of days in a week. (Optional)\n * `firstDayOfWeek` is the first day of the week. (Optional)\n * `formatter` is the Date to String formatter for the input value. (Optional)\n * `titleFormatter` is the Date to String formatter for the dialog's title. (Optional)\n * `fullDateFormatter` is the Date to String formatter for the dialog's footer. (Optional)\n\n",
                "args": [
                    "msg"
                ],
                "type": "{ onChange : Maybe Date -> msg, toMsg : State -> msg, nameOfDays : NameOfDays, firstDayOfWeek : Day, formatter : Date -> String, titleFormatter : Date -> String, fullDateFormatter : Date -> String }"
            }
        ],
        "values": [
            {
                "name": "datePicker",
                "comment": " DatePicker view function.\n\nExample:\n\n    DatePicker.datePicker\n            datePickerOptions\n            [ class \"my-datepicker\" ]\n            model.datePickerState\n            model.value\n\n",
                "type": "Options msg -> List (Attribute msg) -> State -> Maybe Date -> Html msg"
            },
            {
                "name": "defaultOptions",
                "comment": " Default configuration.\n\nRequires onChange and toMsg msgs.\n * `nameOfDays` see `NameOfDays` for the default values.\n * `firstDayOfWeek` Default: Sunday. (Optional)\n * `formatter` Default: `\"%m/%d/%Y\"` (Optional)\n * `titleFormatter`  Default: `\"%B %Y\"` (Optional)\n * `fullDateFormatter` Default:  `\"%A, %B %d, %Y\"` (Optional)\n\n",
                "type": "(Maybe Date -> msg) -> (State -> msg) -> Options msg"
            },
            {
                "name": "initialCmd",
                "comment": " Initial Cmd to set the initial month to be displayed in the datepicker to the current month.\n",
                "type": "(State -> msg) -> State -> Cmd msg"
            },
            {
                "name": "initialState",
                "comment": " Initial state of the DatePicker\n",
                "type": "State"
            },
            {
                "name": "initialStateWithToday",
                "comment": " Initial state of the DatePicker with today Date\n",
                "type": "Date -> State"
            }
        ],
        "binops": []
    },
    {
        "name": "DatePicker.Css",
        "comment": " DatePicker.Css\n\nUsing [rtfeldman/elm-css](http://package.elm-lang.org/packages/rtfeldman/elm-css/latest)\nInclude this in your elm-css port module to be included in your project's css file.\n\n# Css\n@docs css\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "css",
                "comment": " DatePicker's Css Stylesheet\n",
                "type": "Stylesheet"
            }
        ],
        "binops": []
    },
    {
        "name": "Dropdown",
        "comment": " Dropdown\n\nOptions\n@docs Item, Options, defaultOptions\n\n# View\n@docs dropdown\n",
        "unions": [],
        "aliases": [
            {
                "name": "Item",
                "comment": " Item is the individual content of the dropdown.\n\n * `value` is the item value or `id`\n * `text` is the display text of the dropdown item.\n * `enabled` is a flag to indicate whether the item is enabled or disabled.\n",
                "args": [],
                "type": "{ value : String, text : String, enabled : Bool }"
            },
            {
                "name": "Options",
                "comment": " Options for the dropdown.\n\n * `items` is content of the dropdown.\n * `emptyItem` is the item for when the nothing is selected. Set to `Nothing` for no empty item.\n * `onChange` is the message for when the selected value in the dropdown is changed.\n",
                "args": [
                    "msg"
                ],
                "type": "{ items : List Item, emptyItem : Maybe Item, onChange : Maybe String -> msg }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Default Options, will give you empty dropdown with no empty item\n",
                "type": "(Maybe String -> msg) -> Options msg"
            },
            {
                "name": "dropdown",
                "comment": " Html element.\n\nPut this in your view's Html content.\nExample:\n\n    type Msg = DropdownChanged String\n\n    Html.div []\n        [ Dropdown.dropdown\n            (Dropdown.defaultOptions DropdownChanged)\n            [ class \"my-dropdown\" ]\n            model.selectedDropdownValue\n        ]\n",
                "type": "Options msg -> List (Attribute msg) -> Maybe String -> Html msg"
            }
        ],
        "binops": []
    },
    {
        "name": "MultiSelect",
        "comment": " MultiSelect\n\n`<select>` element with multiple selection.\nThis will properly give you the selected values for `onChange` event since the core `onChange` on `select` doesn't.\n\nOptions\n@docs Item, Options, defaultOptions\n\n# View\n@docs multiSelect\n",
        "unions": [],
        "aliases": [
            {
                "name": "Item",
                "comment": " Item is the individual content of the dropdown.\n\n * `value` is the item value or `id`\n * `text` is the display text of the multi-select item.\n * `enabled` is a flag to indicate whether the item is enabled or disabled.\n",
                "args": [],
                "type": "{ value : String, text : String, enabled : Bool }"
            },
            {
                "name": "Options",
                "comment": " Options for the dropdown.\n\n * `items` is content of the dropdown.\n * `onChange` is the message for when the selected value in the multi-select is changed.\n",
                "args": [
                    "msg"
                ],
                "type": "{ items : List Item, onChange : List String -> msg }"
            }
        ],
        "values": [
            {
                "name": "defaultOptions",
                "comment": " Default Options, will give you empty multi-select with no empty item\n",
                "type": "(List String -> msg) -> Options msg"
            },
            {
                "name": "multiSelect",
                "comment": " Html element.\n\nPut this in your view's Html content.\nExample:\n\n    type Msg = MultiSelectChanged (List String)\n\n    Html.div []\n        [ multiSelect\n            (defaultOptions MultiSelectChanged)\n            [ class \"my-multiSelect\" ]\n            model.selectedValues\n        ]\n",
                "type": "Options msg -> List (Attribute msg) -> List String -> Html msg"
            }
        ],
        "binops": []
    }
]