[{"name":"MG.Alert","comment":"\n\n\n# Alerts\n\nAlert messages, used to display errors and other important information.\n\n@docs Alert, error, success, render\n\n","unions":[{"name":"Alert","comment":" ","args":[],"cases":[]}],"aliases":[],"values":[{"name":"error","comment":" ","type":"List.List String.String -> MG.Alert.Alert"},{"name":"render","comment":"\n\n    Because we generally expect alerts to be displayed conditionally, this function takes a `Maybe Alert`. If the value is `Nothing`, then no alert is rendered.\n\n","type":"MG.Viewport.Viewport -> Maybe.Maybe MG.Alert.Alert -> Element.Element msg"},{"name":"success","comment":" ","type":"List.List String.String -> MG.Alert.Alert"}],"binops":[]},{"name":"MG.Attributes","comment":"\n\n\n# Style-specific\n\n@docs transition\n\n\n# Testing\n\n@docs testIdentifier\n\n\n# Events\n\n@docs onEnter\n\n","unions":[],"aliases":[],"values":[{"name":"onEnter","comment":" Add an onEnter event to any element in Elm-UI. Generally intended for use on input fields.\n","type":"msg -> Element.Attribute msg"},{"name":"testIdentifier","comment":" Add a data-test attribute to any element in Elm-UI. For use in e2e testing.\n","type":"String.String -> Element.Attribute msg"},{"name":"transition","comment":" Add standard transition to any element in Elm-UI. For use on elements where styles will change depending on some state change.\n","type":"Element.Attribute msg"}],"binops":[]},{"name":"MG.Colours","comment":"\n\n\n# Solid colours\n\n@docs Colours, colours\n\n\n# Gradients\n\n@docs Gradient, gradients, backgroundGradient\n\n\n# Using external colours\n\n@docs externalColourDefinitions\n\n","unions":[],"aliases":[{"name":"Colours","comment":" All of the available colours\n","args":[],"type":"{ transparent : Element.Color, white : Element.Color, gradientGreen : List.List Element.Color, bone400 : Element.Color, bone300 : Element.Color, bone200 : Element.Color, bone : Element.Color, green800 : Element.Color, green700 : Element.Color, green600 : Element.Color, green : Element.Color, green400 : Element.Color, green300 : Element.Color, green200 : Element.Color, green100 : Element.Color, teal800 : Element.Color, teal700 : Element.Color, teal600 : Element.Color, teal500 : Element.Color, teal400 : Element.Color, teal300 : Element.Color, teal200 : Element.Color, teal100 : Element.Color, blue800 : Element.Color, blue700 : Element.Color, blue600 : Element.Color, blue500 : Element.Color, blue400 : Element.Color, blue300 : Element.Color, blue200 : Element.Color, blue100 : Element.Color, purple800 : Element.Color, purple700 : Element.Color, purple600 : Element.Color, purple500 : Element.Color, purple400 : Element.Color, purple300 : Element.Color, purple200 : Element.Color, purple100 : Element.Color, red800 : Element.Color, red700 : Element.Color, red600 : Element.Color, red500 : Element.Color, red400 : Element.Color, red300 : Element.Color, red200 : Element.Color, red100 : Element.Color, peach100 : Element.Color, yellow800 : Element.Color, yellow700 : Element.Color, yellow600 : Element.Color, yellow500 : Element.Color, yellow400 : Element.Color, yellow300 : Element.Color, yellow200 : Element.Color, yellow100 : Element.Color, black : Element.Color, black700 : Element.Color, black600 : Element.Color, black500 : Element.Color, black400 : Element.Color, black300 : Element.Color, black200 : Element.Color, black100 : Element.Color, greyscale300 : Element.Color }"},{"name":"Gradient","comment":"\n\n    Define your gradient.\n    ID must be globally unique in your HTML.\n    Direction is degrees clockwise from 12 o'clock.\n\n","args":[],"type":"{ id : String.String, startColour : Element.Color, endColour : Element.Color, direction : Basics.Float }"}],"values":[{"name":"backgroundGradient","comment":"\n\n    Sets the background gradient of an element.\n\n","type":"MG.Colours.Gradient -> Element.Attr decorative msg"},{"name":"colours","comment":" Colours used throughout MindGym's styleguide.\n","type":"MG.Colours.Colours"},{"name":"externalColourDefinitions","comment":" This exists to get around the fact that we can't use CSS gradients\n","type":"Html.Html msg"},{"name":"gradients","comment":" A record containing the different gradients available\n","type":"{ rectangle436 : MG.Colours.GradientAttributes, rectangle437 : MG.Colours.GradientAttributes, rectangle438 : MG.Colours.GradientAttributes, green400green500 : MG.Colours.GradientAttributes }"}],"binops":[]},{"name":"MG.Footer","comment":"\n\n\n# Footer\n\n@docs footer\n\n","unions":[],"aliases":[],"values":[{"name":"footer","comment":" Standard footer\n","type":"MG.Viewport.Viewport -> List.List MG.Footer.FooterLink -> Element.Element msg"}],"binops":[]},{"name":"MG.Icons","comment":"\n\n\n# Icons\n\n@docs show, hide, rightArrow, leftArrow, warning, success\n\n","unions":[],"aliases":[],"values":[{"name":"hide","comment":" ","type":"Basics.Int -> Element.Element msg"},{"name":"leftArrow","comment":" ","type":"Basics.Int -> Element.Element msg"},{"name":"rightArrow","comment":" ","type":"Basics.Int -> Element.Element msg"},{"name":"show","comment":" ","type":"Basics.Int -> Element.Element msg"},{"name":"success","comment":" ","type":"Basics.Int -> Element.Element msg"},{"name":"warning","comment":" ","type":"Basics.Int -> Element.Element msg"}],"binops":[]},{"name":"MG.Input","comment":"\n\n\n# Input fields\n\n@docs enabledEmail, disabledEmail, password\n\n\n# Controls\n\n@docs primaryButton, secondaryButton\n\n","unions":[],"aliases":[],"values":[{"name":"disabledEmail","comment":" An element that looks like an input field, but is disabled and contains a button to change the value. For use when a user has already entered their email address. `value` is a (Char, String) to ensure that this element can not be created with an empty value.\n","type":"{ value : ( Char.Char, String.String ), enableMsg : msg, viewport : MG.Viewport.Viewport, isFocused : Basics.Bool } -> Element.Element msg"},{"name":"enabledEmail","comment":" Common email field with animated placeholder\n","type":"{ onChange : String.String -> msg, onEnter : msg, value : String.String, errorStr : Maybe.Maybe String.String, onSubmit : Maybe.Maybe msg, isFocused : Basics.Bool, viewport : MG.Viewport.Viewport } -> Element.Element msg"},{"name":"password","comment":" Common email field with animated placeholder and show/hide button.\n","type":"{ onChange : String.String -> msg, value : String.String, showValue : Basics.Bool, togglePasswordVisibility : Basics.Bool -> msg, viewport : MG.Viewport.Viewport, onSubmit : Maybe.Maybe msg, isFocused : Basics.Bool } -> Element.Element msg"},{"name":"primaryButton","comment":" Common primary button\n","type":"MG.Input.ButtonParams msg -> Element.Element msg"},{"name":"secondaryButton","comment":" Common secondary button\n","type":"MG.Input.ButtonParams msg -> Element.Element msg"}],"binops":[]},{"name":"MG.Navigation","comment":"\n\n\n# Navigation\n\n@docs forwardLink, backLink\n\n","unions":[],"aliases":[],"values":[{"name":"backLink","comment":" ","type":"Url.Url -> String.String -> Element.Element msg"},{"name":"forwardLink","comment":" ","type":"Url.Url -> String.String -> Element.Element msg"}],"binops":[]},{"name":"MG.Typography","comment":" #Typography\n\nThis module provides a set of type styles.\n\n\n## Headings\n\n@docs headingXXL, headingXL, headingL, headingM, headingS, headingXS, headingXXS\n\n\n## Body text\n\n@docs bodyXL, bodyL, bodyS\n\n\n## Other\n\n@docs leadL, leadS, noteL, noteS\n\n","unions":[],"aliases":[],"values":[{"name":"bodyL","comment":" ","type":"MG.Typography.TypeStylePair msg"},{"name":"bodyS","comment":" ","type":"MG.Typography.TypeStylePair msg"},{"name":"bodyXL","comment":" ","type":"MG.Typography.TypeStylePair msg"},{"name":"headingL","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingM","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingS","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingXL","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingXS","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingXXL","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"headingXXS","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"leadL","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"leadS","comment":" ","type":"MG.Typography.TypeStyle msg"},{"name":"noteL","comment":" ","type":"MG.Typography.TypeStylePair msg"},{"name":"noteS","comment":" ","type":"MG.Typography.TypeStylePair msg"}],"binops":[]},{"name":"MG.Viewport","comment":"\n\n\n# Viewport\n\nHow layouts work horizontally.\n\n| Margin | Column | Gutter | Column | Gutter | ... | Gutter | Column | Margin |\n\nThere are two margins, on the extreme left and the extreme right.\n\nThere are gutters separating each column, so there is one fewer gutter\nthan there are columns.\n\nDefault360 has 6 columns (and 5 gutters). All other sizes have 12 columns\n(and 11 gutters).\n\nThe margin widths and gutter widths are hard coded per viewport size.\nThe remaining width is divided equally between each column.\n\nA component will span n columns (and therefore also the n-1 gutters between).\n\n\n# Managing Viewport differences\n\n@docs Viewport, Width, PerBreakpoint, perBreakpoint\n\n\n# Classifying Viewport\n\n@docs classify, classifyDefault360\n\n","unions":[{"name":"Width","comment":" Default is 360px wide, no reason to guarantee anything will work below this.\n","args":[],"cases":[["Default360",[]],["AtLeast768Wide",[]],["AtLeast1024Wide",[]],["AtLeast1440Wide",[]]]}],"aliases":[{"name":"PerBreakpoint","comment":" Helper to provide a different `a` for each viewport size.\n","args":["a"],"type":"{ default360 : a, atLeast768Wide : a, atLeast1024Wide : a, atLeast1440Wide : a }"},{"name":"Viewport","comment":" ","args":[],"type":"{ size : MG.Viewport.Width, height : Basics.Int, width : Basics.Int, marginWidth : Basics.Int, gutterWidth : Basics.Int, spanningColumnsWidth : Basics.Int -> Basics.Int, contentWidth : Basics.Int, columnCount : Basics.Int }"}],"values":[{"name":"classify","comment":" ","type":"{ width : Basics.Int, height : Basics.Int } -> MG.Viewport.Viewport"},{"name":"classifyDefault360","comment":" Forces a viewport that always returns Default360 for its size.\n","type":"{ width : Basics.Int, height : Basics.Int } -> MG.Viewport.Viewport"},{"name":"perBreakpoint","comment":" Helper to retrieve a different `a` for each viewport size.\n","type":"MG.Viewport.PerBreakpoint a -> MG.Viewport.Viewport -> a"}],"binops":[]}]