[{"name":"Html.Bem","comment":" Utilities for building CSS class names based on\n[BEM conventions](https://getbem.com/naming).\n\n\n# Creating\n\n@docs init\n\n\n# Unmodified block and element classes\n\n@docs block, element\n\n\n# Flag modified block and element classes\n\n@docs blockMod, elementMod, blockIf, elementIf, blockList, elementList\n\n\n# Key-value modified block and element classes\n\n@docs blockOf, elementOf, blockOfList, elementOfList\n\n\n# Raw class strings\n\n@docs elementName, elementNameMod, elementNameOf\n\n\n# Types\n\n@docs Block, Element\n\n","unions":[],"aliases":[{"name":"Block","comment":" Type for building block classes, and constructing elements of blocks.\n","args":[],"type":"{ name : String.String, element : String.String -> Html.Bem.Element }"},{"name":"Element","comment":" Type for building element classes.\n","args":[],"type":"{ block : String.String, name : String.String }"}],"values":[{"name":"block","comment":" Class attribute for unmodified block\n\n    Bem.init \"my-block\" |> Bem.block\n        -- class \"my-block\"\n\n","type":"Html.Bem.Block -> Html.Attribute a"},{"name":"blockIf","comment":" Class attribute for \"flag\" modified block, based on given boolean flag\n\n    Bem.init \"my-block\" |> Bem.blockIf \"flagged\" isFlagged\n        -- class \"my-block my-block--flagged\"  (if isFlagged is True)\n        -- class \"my-block\"  (if isFlagged is False)\n\n","type":"String.String -> Basics.Bool -> Html.Bem.Block -> Html.Attribute a"},{"name":"blockList","comment":" Class attribute for \"flag\" modified block, with multiple flags applied.\nSimilar to Html.Attributes.classList for flag-modified blocks.\n\n    Bem.init \"my-block\"\n        |> Bem.blockList [ ( \"flagged\", isFlagged ), ( \"editable\", isEditable ) ]\n\n","type":"List.List ( String.String, Basics.Bool ) -> Html.Bem.Block -> Html.Attribute a"},{"name":"blockMod","comment":" Class attribute for \"flag\" modified block\n\n    Bem.init \"my-block\" |> Bem.blockMod \"flagged\"\n        -- class \"my-block my-block--flagged\"\n\n","type":"String.String -> Html.Bem.Block -> Html.Attribute a"},{"name":"blockOf","comment":" Class attribute for \"key-value\" modified block\n\n    Bem.init \"my-block\" |> Bem.blockOf \"type\" \"foo\"\n        -- class \"my-block my-block--type-foo\"\n\n","type":"String.String -> String.String -> Html.Bem.Block -> Html.Attribute a"},{"name":"blockOfList","comment":" Class attribute for \"key-value\" modified block, with multiple key-value\npairs applied.\n\n    Bem.init \"my-block\"\n        |> Bem.blockOfList [( \"type\", \"foo\" ), ( \"status\", \"open\" ) ]\n\n","type":"List.List ( String.String, String.String ) -> Html.Bem.Block -> Html.Attribute a"},{"name":"element","comment":" Class attribute for unmodified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.element\n        -- class \"my-block__my-element\"\n\n","type":"Html.Bem.Element -> Html.Attribute a"},{"name":"elementIf","comment":" Class attribute for \"flag\" modified element, based on given boolean flag\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementIf \"flagged\" isFlagged\n        -- class \"my-block__my-element my-block__my-element--flagged\"  (if isFlagged is True)\n        -- class \"my-block__my-element\"  (if isFlagged is False)\n\n","type":"String.String -> Basics.Bool -> Html.Bem.Element -> Html.Attribute a"},{"name":"elementList","comment":" Class attribute for \"flag\" modified element, with multiple flags applied.\nSimilar to Html.Attributes.classList for flag-modified elements.\n\n    Bem.init \"my-block\"\n        |> .element \"my-element\"\n        |> Bem.elementList [ ( \"flagged\", isFlagged ), ( \"editable\", isEditable ) ]\n\n","type":"List.List ( String.String, Basics.Bool ) -> Html.Bem.Element -> Html.Attribute a"},{"name":"elementMod","comment":" Class attribute for \"flag\" modified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementMod \"flagged\"\n        -- class \"my-block__my-element my-block__my-element--flagged\"\n\n","type":"String.String -> Html.Bem.Element -> Html.Attribute a"},{"name":"elementName","comment":" Element class string, e.g. \"my-block\\_\\_my-element\"\n","type":"Html.Bem.Element -> String.String"},{"name":"elementNameMod","comment":" Element class string with given flag modifier, e.g.\n\"my-block\\_\\_my-element--flag\"\n","type":"Html.Bem.Element -> String.String -> String.String"},{"name":"elementNameOf","comment":" Element class string with given key-value modifier, e.g.\n\"my-block\\_\\_my-element--key-value\"\n","type":"Html.Bem.Element -> String.String -> String.String -> String.String"},{"name":"elementOf","comment":" Class attribute for \"key-value\" modified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementOf \"type\" \"foo\"\n        -- class \"my-block__my-element my-block__my-element--type-foo\"\n\n","type":"String.String -> String.String -> Html.Bem.Element -> Html.Attribute a"},{"name":"elementOfList","comment":" Class attribute for \"key-value\" modified element, with multiple key-value\npairs applied.\n\n    Bem.init \"my-block\"\n        |> .element \"my-element\"\n        |> Bem.elementOfList [( \"type\", \"foo\" ), ( \"status\", \"open\" ) ]\n\n","type":"List.List ( String.String, String.String ) -> Html.Bem.Element -> Html.Attribute a"},{"name":"init","comment":" Construct a top-level [Block](#Block) with given name.\n\nNote an [Element](#Element) can only be constructed through the `.element` of\na Block like this:\n\n    let\n        block =\n            Bem.init \"my-block\"\n    in\n    block.element \"my-element\"\n\n","type":"String.String -> Html.Bem.Block"}],"binops":[]},{"name":"Svg.Bem","comment":" Utilities for building CSS class names based on\n[BEM conventions](https://getbem.com/naming), for Svg nodes.\n\n\n# Creating\n\n@docs init\n\n\n# Unmodified block and element classes\n\n@docs block, element\n\n\n# Flag modified block and element classes\n\n@docs blockMod, elementMod, blockIf, elementIf, blockList, elementList\n\n\n# Key-value modified block and element classes\n\n@docs blockOf, elementOf, blockOfList, elementOfList\n\n\n# Raw class strings\n\n@docs elementName, elementNameMod, elementNameOf\n\n\n# Types\n\n@docs Block, Element\n\n","unions":[],"aliases":[{"name":"Block","comment":" Type for building block classes, and constructing elements of blocks.\n","args":[],"type":"{ name : String.String, element : String.String -> Svg.Bem.Element }"},{"name":"Element","comment":" Type for building element classes.\n","args":[],"type":"{ block : String.String, name : String.String }"}],"values":[{"name":"block","comment":" Class attribute for unmodified block\n\n    Bem.init \"my-block\" |> Bem.block\n        -- class \"my-block\"\n\n","type":"Svg.Bem.Block -> Svg.Attribute a"},{"name":"blockIf","comment":" Class attribute for \"flag\" modified block, based on given boolean flag\n\n    Bem.init \"my-block\" |> Bem.blockIf \"flagged\" isFlagged\n        -- class \"my-block my-block--flagged\"  (if isFlagged is True)\n        -- class \"my-block\"  (if isFlagged is False)\n\n","type":"String.String -> Basics.Bool -> Svg.Bem.Block -> Svg.Attribute a"},{"name":"blockList","comment":" Class attribute for \"flag\" modified block, with multiple flags applied.\nSimilar to Html.Attributes.classList for flag-modified blocks.\n\n    Bem.init \"my-block\"\n        |> Bem.blockList [ ( \"flagged\", isFlagged ), ( \"editable\", isEditable ) ]\n\n","type":"List.List ( String.String, Basics.Bool ) -> Svg.Bem.Block -> Svg.Attribute a"},{"name":"blockMod","comment":" Class attribute for \"flag\" modified block\n\n    Bem.init \"my-block\" |> Bem.blockMod \"flagged\"\n        -- class \"my-block my-block--flagged\"\n\n","type":"String.String -> Svg.Bem.Block -> Svg.Attribute a"},{"name":"blockOf","comment":" Class attribute for \"key-value\" modified block\n\n    Bem.init \"my-block\" |> Bem.blockOf \"type\" \"foo\"\n        -- class \"my-block my-block--type-foo\"\n\n","type":"String.String -> String.String -> Svg.Bem.Block -> Svg.Attribute a"},{"name":"blockOfList","comment":" Class attribute for \"key-value\" modified block, with multiple key-value\npairs applied.\n\n    Bem.init \"my-block\"\n        |> Bem.blockOfList [( \"type\", \"foo\" ), ( \"status\", \"open\" ) ]\n\n","type":"List.List ( String.String, String.String ) -> Svg.Bem.Block -> Svg.Attribute a"},{"name":"element","comment":" Class attribute for unmodified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.element\n        -- class \"my-block__my-element\"\n\n","type":"Svg.Bem.Element -> Svg.Attribute a"},{"name":"elementIf","comment":" Class attribute for \"flag\" modified element, based on given boolean flag\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementIf \"flagged\" isFlagged\n        -- class \"my-block__my-element my-block__my-element--flagged\"  (if isFlagged is True)\n        -- class \"my-block__my-element\"  (if isFlagged is False)\n\n","type":"String.String -> Basics.Bool -> Svg.Bem.Element -> Svg.Attribute a"},{"name":"elementList","comment":" Class attribute for \"flag\" modified element, with multiple flags applied.\nSimilar to Html.Attributes.classList for flag-modified elements.\n\n    Bem.init \"my-block\"\n        |> .element \"my-element\"\n        |> Bem.elementList [ ( \"flagged\", isFlagged ), ( \"editable\", isEditable ) ]\n\n","type":"List.List ( String.String, Basics.Bool ) -> Svg.Bem.Element -> Svg.Attribute a"},{"name":"elementMod","comment":" Class attribute for \"flag\" modified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementMod \"flagged\"\n        -- class \"my-block__my-element my-block__my-element--flagged\"\n\n","type":"String.String -> Svg.Bem.Element -> Svg.Attribute a"},{"name":"elementName","comment":" Element class string, e.g. \"my-block\\_\\_my-element\"\n","type":"Svg.Bem.Element -> String.String"},{"name":"elementNameMod","comment":" Element class string with given flag modifier, e.g.\n\"my-block\\_\\_my-element--flag\"\n","type":"Svg.Bem.Element -> String.String -> String.String"},{"name":"elementNameOf","comment":" Element class string with given key-value modifier, e.g.\n\"my-block\\_\\_my-element--key-value\"\n","type":"Svg.Bem.Element -> String.String -> String.String -> String.String"},{"name":"elementOf","comment":" Class attribute for \"key-value\" modified element\n\n    Bem.init \"my-block\" |> .element \"my-element\" |> Bem.elementOf \"type\" \"foo\"\n        -- class \"my-block__my-element my-block__my-element--type-foo\"\n\n","type":"String.String -> String.String -> Svg.Bem.Element -> Svg.Attribute a"},{"name":"elementOfList","comment":" Class attribute for \"key-value\" modified element, with multiple key-value\npairs applied.\n\n    Bem.init \"my-block\"\n        |> .element \"my-element\"\n        |> Bem.elementOfList [( \"type\", \"foo\" ), ( \"status\", \"open\" ) ]\n\n","type":"List.List ( String.String, String.String ) -> Svg.Bem.Element -> Svg.Attribute a"},{"name":"init","comment":" Construct a top-level [Block](#Block) with given name.\n\nNote an [Element](#Element) can only be constructed through the `.element` of\na Block like this:\n\n    let\n        block =\n            Bem.init \"my-block\"\n    in\n    block.element \"my-element\"\n\n","type":"String.String -> Svg.Bem.Block"}],"binops":[]}]