[
    {
        "name": "UIExplorer",
        "comment": "\n\n# Anatomy of the UI Explorer\n\n- The Explorer is devided into a list of [UICategory](#UICategory) (ex: Buttons)\n- Each Category contains some [UI](#UI) items (ex: ToggleButton, ButtonWithImage, SubmitButton etc...)\n- Each [UI](#UI) item defines states (ex: Loaded, Disabled etc..) that we usually call [stories](https://storybook.js.org/basics/writing-stories/)\n\n\n\n# Main API\n@docs app\n@docs renderStories\n\n# Models\n\n@docs UI\n@docs UICategory\n\n# Helpers\n@docs addUICategory\n@docs emptyUICategories\n@docs createUI\n@docs createUIWithDescription\n@docs fromUIList\n\n",
        "unions": [
            {
                "name": "UI",
                "comment": " A UI represents a view and lists a set of stories.\nFor Example : A Button with following stories (Loading, Disabled)\n",
                "args": [],
                "cases": []
            },
            {
                "name": "UICategory",
                "comment": " Represents a familly of related views.\nFor example using [Atomic Design](http://bradfrost.com/blog/post/atomic-web-design/), we can have the following categories : Atoms, Molecules etc..\n",
                "args": [],
                "cases": []
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "addUICategory",
                "comment": "\n   Adds a UI Category to a list of categories\n   Convenient for running a UI Explorer devided into categories\n```\n   emptyUICategories\n       |> addUICategory\n           \"A Great Category\"\n           [ createUI\n               \"My View\"\n               MyView.viewStories\n           ]\n```\n",
                "type": "String -> List UI -> List UICategory -> List UICategory"
            },
            {
                "name": "app",
                "comment": " Launches a UI Explorer Applicaton given a list of UI Categories\n\n```\nmain =\n    app\n        (emptyUICategories\n            |> addUICategory\n                \"Atoms\"\n                [ createUIWithDescription\n                    \"Colors\"\n                    \"Global Color Schemes\"\n                    Colors.viewStories\n                ]\n            |> addUICategory\n                \"Molecules\"\n                [ createUI\n                    \"Card\"\n                    Card.viewStories\n                ]\n        )\n```\n\n",
                "type": "List UICategory -> Program Never Model Msg"
            },
            {
                "name": "createUI",
                "comment": "\n   Create a UI given an ID and Story Views\n```\nstories : List ( String, ButtonModel )\nstories =\n    [ ( \"LargePrimary\", { label = \"Primary\", isLarge = True, isPrimary = True } )\n    , ( \"TinyPrimary\", { label = \"Primary\", isLarge = False, isPrimary = True } )\n    , ( \"LargeSecondary\", { label = \"Secondary\", isLarge = True, isPrimary = False } )\n    , ( \"TinySecondary\", { label = \"Secondary\", isLarge = False, isPrimary = False } )\n    ]\n\n\nviewStories =\n    renderStories customButton stories\n\ncreateUI \"Button\" viewStories\n```\n\n",
                "type": "String -> (UIViewConfig -> Html Msg) -> UI"
            },
            {
                "name": "createUIWithDescription",
                "comment": "\n   Create a UI with a description\n   ```\n   createUI \"Button\" \"A Simple Button :-)\" viewStories\n\n   ```\n",
                "type": "String -> String -> (UIViewConfig -> Html Msg) -> UI"
            },
            {
                "name": "emptyUICategories",
                "comment": "\n   Creates an empty list of UI Categories\n",
                "type": "List UICategory"
            },
            {
                "name": "fromUIList",
                "comment": "\n   Create a list of [UICategories](#UICategories) from a list of [UI](#UI) and Add them in a Default Category.\n   This is the simplest way to initialize the UI Explorer app.\n   ```\n   main =\n       app\n           (fromUIList\n               [ createUI\n                   \"PlayPause\"\n                   PlayPause.viewStories\n               , createUI\n                   \"Controls\"\n                   Controls.viewStories\n               , createUI\n                   \"TrackList\"\n                   TrackList.viewStories\n               ]\n           )\n   ```\n",
                "type": "List UI -> List UICategory"
            },
            {
                "name": "renderStories",
                "comment": " Renders Stories of a given UI.\nA story represents a state of a view such as (Loading, Error, Success, NoNetwork ...)\n```\nstories : List ( String, Model )\nstories =\n    [ ( \"Loading\", { isLoading = True } ), ( \"Loaded\", { isLoading = False } ) ]\n\nviewStories = renderStories (view model) stories\n```\n",
                "type": "(a -> Html msg) -> List ( String, a ) -> UIViewConfig -> Html Msg"
            }
        ],
        "binops": []
    }
]