[
    {
        "name": "Css",
        "comment": " This module is designed to allow you to add type-safe CSS styling\nto your rendered Html via style tags. It has basic support for @import\ndirectives and CSS rules.\n\nAssuming you have types for id and class attributes, you \"compile\" a\nStylesheet with the stylesheet function and use the functions returned\nin the Stylesheet to generate id and class attributes.\n\nFor example:\n\n    type Id = MyId\n    type Class = MyClass\n    \n    -- import some google fonts\n    imports =\n        [\"https://fonts.googleapis.com/css?family=Droid+Sans:400,700\"]\n\n    -- create a couple Css.rules, notice the use of MyId. \n    rule =\n        { selectors = [ Css.Id MyId ]\n        , descriptor = [ (\"color\", \"#63d\") ]\n        }\n    \n    -- compile a stylesheet with no @imports and a couple rules\n    stylesheet = Css.stylesheet imports [rule]\n    \n    -- now, add the style node, and safely use your ids and classes\n    html =\n        div []\n            [ stylesheet.node\n            , div [ stylesheet.id MyId ] [ text \"Using MyId\" ]\n            , div [ stylesheet.class MyClass ] [ text \"Using MyClass\" ]\n            ]\n\n# Types\n@docs Stylesheet, Sel, Pseudo, Descriptor, Rule\n\n# Functions\n@docs stylesheet\n",
        "unions": [
            {
                "name": "Pseudo",
                "comment": " Pseudo CSS selectors and elements. These are chained together in the\nPseudo selector.\n",
                "args": [],
                "cases": [
                    [
                        "Any",
                        []
                    ],
                    [
                        "Default",
                        []
                    ],
                    [
                        "Link",
                        []
                    ],
                    [
                        "Visited",
                        []
                    ],
                    [
                        "Hover",
                        []
                    ],
                    [
                        "Active",
                        []
                    ],
                    [
                        "Focus",
                        []
                    ],
                    [
                        "Target",
                        []
                    ],
                    [
                        "Enabled",
                        []
                    ],
                    [
                        "Disabled",
                        []
                    ],
                    [
                        "Checked",
                        []
                    ],
                    [
                        "Indeterminate",
                        []
                    ],
                    [
                        "Invalid",
                        []
                    ],
                    [
                        "Valid",
                        []
                    ],
                    [
                        "Fullscreen",
                        []
                    ],
                    [
                        "Root",
                        []
                    ],
                    [
                        "Scope",
                        []
                    ],
                    [
                        "FirstChild",
                        []
                    ],
                    [
                        "LastChild",
                        []
                    ],
                    [
                        "NthChild",
                        [
                            "Int"
                        ]
                    ],
                    [
                        "NthLastChild",
                        [
                            "Int"
                        ]
                    ],
                    [
                        "NthOfType",
                        [
                            "String"
                        ]
                    ],
                    [
                        "NthLastOfType",
                        [
                            "String"
                        ]
                    ],
                    [
                        "FirstOfType",
                        []
                    ],
                    [
                        "LastOfType",
                        []
                    ],
                    [
                        "OnlyOfType",
                        []
                    ],
                    [
                        "Empty",
                        []
                    ],
                    [
                        "Left",
                        []
                    ],
                    [
                        "Right",
                        []
                    ],
                    [
                        "Lang",
                        [
                            "String"
                        ]
                    ],
                    [
                        "Dir",
                        [
                            "String"
                        ]
                    ],
                    [
                        "FirstLetter",
                        []
                    ],
                    [
                        "FirstLine",
                        []
                    ],
                    [
                        "Before",
                        []
                    ],
                    [
                        "After",
                        []
                    ],
                    [
                        "Selection",
                        []
                    ],
                    [
                        "Backdrop",
                        []
                    ]
                ]
            },
            {
                "name": "Sel",
                "comment": " CSS rule selectors follow the all the selectors found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors)\nexcept for attribute selectors.\n\nThe most common selectors are the Type, Id, and Class selectors. The others\nare combinator selectors or pseudo-class/element selectors. Some examples:\n\n    -- div { ... }\n    Type \"div\"\n    \n    -- #MyId { ... }\n    Id MyId\n    \n    -- .MyClass { ... }\n    Class MyClass\n    \n    -- div #Content { ... }\n    Descendant (Id Content) (Type \"div\")\n    \n    -- span > .MyClass { ... }\n    Child (Class MyClass) (Type \"span\")\n    \n    -- hr ~ p:first-line:first-letter { ... }\n    Pseudo [FirstLine, FirstLetter] <| Sibling (Type \"p\") (Type \"hr\")\n\nTake a moment to notice that for combinators, the most specific element being\nstyled (what would be last in the selector) appears first in code.\n",
                "args": [
                    "id",
                    "cls"
                ],
                "cases": [
                    [
                        "Type",
                        [
                            "String"
                        ]
                    ],
                    [
                        "Id",
                        [
                            "id"
                        ]
                    ],
                    [
                        "Class",
                        [
                            "cls"
                        ]
                    ],
                    [
                        "Descendant",
                        [
                            "Sel id cls",
                            "Sel id cls"
                        ]
                    ],
                    [
                        "Child",
                        [
                            "Sel id cls",
                            "Sel id cls"
                        ]
                    ],
                    [
                        "Sibling",
                        [
                            "Sel id cls",
                            "Sel id cls"
                        ]
                    ],
                    [
                        "Adjacent",
                        [
                            "Sel id cls",
                            "Sel id cls"
                        ]
                    ],
                    [
                        "Pseudo",
                        [
                            "List Pseudo",
                            "Sel id cls"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "Descriptor",
                "comment": " A list of key/value style properties. ",
                "args": [],
                "type": "List ( String, String )"
            },
            {
                "name": "Rule",
                "comment": " A Rule is a list of matching selectors and a descriptor, which is\na list of key/value style pairs. Each selector is a separate possible match\nfor the rule. For example:\n\n    [ Sel.Id MyId\n    , Sel.Class MyClass\n    , Sel.Type \"div\"\n    , Sel.Sibling (Sel.Type \"a\") (Sel.Type \"hr\")\n    ]\n    \nThat list of selectors would be the same as the following rule in CSS:\n\n    #MyId, .MyClass, div, hr a { ... }\n",
                "args": [
                    "id",
                    "cls"
                ],
                "type": "{ selectors : List (Sel id cls), descriptor : Descriptor }"
            },
            {
                "name": "Stylesheet",
                "comment": " A Stylesheet is a \"compiled\" Html style node, as well as functions\nthat allow you to safely create Html.Attributes for the id and class of\nyour tags. It is returned by the stylesheet function.\n",
                "args": [
                    "id",
                    "cls",
                    "msg"
                ],
                "type": "{ node : Html msg, id : id -> Attribute msg, class : cls -> Attribute msg, classes : List cls -> Attribute msg }"
            }
        ],
        "values": [
            {
                "name": "stylesheet",
                "comment": " Compiles a Stylesheet if given a list of urls to @import and\na list of Rules to generate. The Stylesheet contains an Html.node\nto include in your DOM and functions for generating type-safe id and\nclass Html.Attributes.\n",
                "type": "List String -> List (Rule id cls) -> Stylesheet id cls msg"
            }
        ],
        "binops": []
    }
]