[
    {
        "name": "CreditCard",
        "comment": "\n# View\n@docs card,  form\n\n# Data\n@docs CardData, emptyCardData\n\n# Internal State\n@docs State, initialState\n",
        "unions": [],
        "aliases": [
            {
                "name": "CardData",
                "comment": " Stores the card data such as number, name, etc.\n\nThis `CardData` can be embeded into your application's Model in various ways.\nHere's 2 example of embedding this data into your model:\nExample 1:\n\n    -- Use CardData in your model directly\n    type alias Model =\n        { cardData : CreditCard.CardData {}\n        ...\n        }\n\n    -- Initial the model\n    init =\n        { cardData = CardData.emptyCardData\n        ...\n        }\n\nExample 2:\n\n    -- Extends the CardData in your Model\n    type alias Model =\n        { number : Maybe String\n        , name : Maybe String\n        , month : Maybe String\n        , year : Maybe String\n        , ccv : Maybe String\n        , state : CreditCard.State\n        , shippingAddress : Maybe String\n        ...\n        }\n\n    -- Initial the model\n    init =\n        let\n            emptyCardData =\n                CardData.emptyCardData\n        in\n            { emptyCardData |\n            shippingAddress = Nothing\n            ...\n            }\n",
                "args": [
                    "model"
                ],
                "type": "{ model | number : Maybe String, name : Maybe String, month : Maybe String, year : Maybe String, ccv : Maybe String, state : State }"
            },
            {
                "name": "State",
                "comment": " Internal State of the card view\n",
                "args": [],
                "type": "State"
            }
        ],
        "values": [
            {
                "name": "card",
                "comment": " Card view\n",
                "type": "Config {} -> CardData model -> Html msg"
            },
            {
                "name": "emptyCardData",
                "comment": " Empty card data\n",
                "type": "CardData {}"
            },
            {
                "name": "form",
                "comment": " Form view\n",
                "type": "FormConfig model msg -> CardData model -> Html msg"
            },
            {
                "name": "initialState",
                "comment": " Initial state of the card view\n",
                "type": "State"
            }
        ],
        "binops": []
    },
    {
        "name": "CreditCard.Config",
        "comment": "\n# Configuration\n@docs Config, FormConfig, Form\n\n# Default Configuration\n@docs defaultConfig, defaultFormConfig, defaultClasses, defaultLabels, defaultPlaceholders\n",
        "unions": [],
        "aliases": [
            {
                "name": "Config",
                "comment": " Configuration for card view\n* `blankChar` : character used to render empty text in the card.\n* `blankName` : text used as placeholder for when the name is empty.\n",
                "args": [
                    "config"
                ],
                "type": "{ config | blankChar : Char, blankName : String }"
            },
            {
                "name": "Form",
                "comment": " For all form related configuration (e.g.: classes, labels, etc)\n",
                "args": [],
                "type": "{ number : String, name : String, month : String, year : String, ccv : String }"
            },
            {
                "name": "FormConfig",
                "comment": " Configuration for form view.\n\nThis includes all configuration from `Config` with addition of:\n* `onChange` : `Msg` function for updating `CardData`\n* `showLabel` : hide/show the label of each form field.\n* `classes` : classes of each form field's container, stored in a `Form` record.\n* `labels` : text of each form field's label, stored in a `Form` record.\n* `placeholders` : the placeholder text of form field, stored in a `Form` record.\n",
                "args": [
                    "model",
                    "msg"
                ],
                "type": "{ blankChar : Char, blankName : String, onChange : CardData model -> msg, showLabel : Bool, classes : Form, labels : Form, placeholders : Form }"
            }
        ],
        "values": [
            {
                "name": "defaultClasses",
                "comment": " Default classes name for form view\n* `number = \"Number\"`\n* `name = \"Name\"`\n* `month = \"Month\"`\n* `year = \"Year\"`\n* `ccv = \"CCV\"`\n",
                "type": "Form"
            },
            {
                "name": "defaultConfig",
                "comment": " Default configuration for card view\n* `blankChar = '•'`\n* `blankName = 'YOUR NAME'`\n",
                "type": "Config {}"
            },
            {
                "name": "defaultFormConfig",
                "comment": " Default configuration for form view\nRequires a `Msg` function to update the `CardData`\n* `showLabel = True`\n* `classes =` See `defaultClasses`\n* `labels =` See `defaultLabels`\n* `placeholders =` See `defaultPlaceholders`\n",
                "type": "(CardData model -> msg) -> FormConfig model msg"
            },
            {
                "name": "defaultLabels",
                "comment": " Default label for form view\n* `number = \"Number\"`\n* `name = \"Full Name\"`\n* `month = \"Month\"`\n* `year = \"Year\"`\n* `ccv = \"CCV\"`\n",
                "type": "Form"
            },
            {
                "name": "defaultPlaceholders",
                "comment": " Default placeholder text for form view\n* `number = \"Credit Card Number\"`\n* `name = \"First Last\"`\n* `month = \"MM\"`\n* `year = \"YYYY\"`\n* `ccv = \"CCV\"`\n",
                "type": "Form"
            }
        ],
        "binops": []
    }
]