[{"name":"AvardaUi.Input","comment":" This component provides a styled input with support for floating labels, hints, error messages,\nand optional left/right children. It uses the [builder pattern](https://sporto.github.io/elm-patterns/basic/builder-pattern.html):\n\n1.  Start with [`new`](#new) to create a base input.\n2.  Chain configuration functions like [`withPlaceholder`](#withPlaceholder) or [`withIsRequired`](#withIsRequired).\n3.  Finish with [`view`](#view) to render it.\n\n\n# Creating an Input\n\n@docs new, view\n\n\n# Configuration\n\n@docs withPlaceholder, withIsRequired, withIsDisabled, withInputType, withMaxLength, withBorderRadius, withAutocomplete, withAttributes, withOnKeyDown, withMaybeError, withHint, withLeftChild, withRightChild\n\n","unions":[],"aliases":[],"values":[{"name":"new","comment":" Create a new input with required fields: `id`, `value`, `msg`, and `label`.\n\nThis gives you a base input that you can configure further with `withX` functions.\n\n    AvardaUi.Input.new \"username\"\n        { value = model.username\n        , msg = InsertedUsername\n        , label = \"Username\"\n        }\n\n","type":"String.String -> { value : String.String, msg : String.String -> msg, label : String.String } -> AvardaUi.Input.Input msg"},{"name":"view","comment":" Render the configured input as HTML.\n\nAlways call this after you've built up the input with `new` and chained settings.\n\n    AvardaUi.Input.new \"username\" {...}\n        |> AvardaUi.Input.withPlaceholder \"Enter username\"\n        |> AvardaUi.Input.withIsRequired True\n        |> AvardaUi.Input.view\n\n","type":"AvardaUi.Input.Input msg -> Html.Styled.Html msg"},{"name":"withAttributes","comment":" Attach additional HTML attributes to the underlying `<input>` element.\nFor example `name` or `data-*` attributes.\n","type":"List.List (Html.Styled.Attribute msg) -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withAutocomplete","comment":" Enable autocomplete with a given string like `\"username\"`. It is set to `\"off\"` by default.\n","type":"String.String -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withBorderRadius","comment":" Adjust the border radius of the input box.\n","type":"Basics.Float -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withHint","comment":" Add a hint text below the input.\n","type":"String.String -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withInputType","comment":" Change the input type (e.g. `\"text\"`, `\"password\"`, `\"email\"`).\n","type":"String.String -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withIsDisabled","comment":" Disable the input.\nVisually dims and prevents typing.\n","type":"Basics.Bool -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withIsRequired","comment":" Mark the input as required.\nThis adds a `*` to the label and sets `required=true`.\n","type":"Basics.Bool -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withLeftChild","comment":" Add a left-side child element, e.g. an icon.\n","type":"Html.Styled.Html msg -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withMaxLength","comment":" Limit the maximum number of characters.\n","type":"Basics.Int -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withMaybeError","comment":" Show an error message and mark the input invalid.\n**Replaces any active hint text.**\n","type":"Maybe.Maybe String.String -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withOnKeyDown","comment":" Listen for key presses and map them to messages.\nIt uses the `KeyboardKey` type from `AvardaUi.Util.KeyPress` module.\n\n    AvardaUi.Input.new \"username\" {...}\n        |> AvardaUi.Input.withOnKeyDown [ ( KeyPressUtil.Enter, HandleSubmit ) ]\n\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withPlaceholder","comment":" Add a placeholder to the input.\n","type":"String.String -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"},{"name":"withRightChild","comment":" Add a right-side child element, e.g. a clear button.\n","type":"Html.Styled.Html msg -> AvardaUi.Input.Input msg -> AvardaUi.Input.Input msg"}],"binops":[]},{"name":"AvardaUi.PhoneSelectInput","comment":" This module provides a component that combines a `Select` for country dialing codes\nwith an `Input` for entering a phone number. It uses the [builder pattern](https://sporto.github.io/elm-patterns/basic/builder-pattern.html):\n\n1.  Start with [`new`](#new) to create a base input.\n2.  Chain configuration functions like [`withPlaceholder`](#withPlaceholder) or [`withIsRequired`](#withIsRequired).\n3.  Finish with [`view`](#view) to render it.\n\n\n# Creating a PhoneSelectInput\n\n@docs Model, init, Msg, update, new, view\n\n\n# Update with extra options\n\nYou can pass extra options / callbacks to this component using `updateWith`\n\n@docs updateWith, onSelect, onInput, onInputTabKeyDown, scrollOptionIntoView\n\n\n# Configuration\n\n@docs withBorderRadius, withHint, withInputMaxLength, withInputPlaceholder, withIsDisabled, withIsRequired, withMaybeError, withMenuMaxHeight\n\n\n# Setting values\n\n@docs setCountries, setSelectedCountry, setPhoneInputValue\n\n\n# Getting values\n\n@docs getSelectedCountryCode, getPhoneInputValue\n\n","unions":[{"name":"Model","comment":" Model type for the Select component. Use this in your own model.\n\n    type alias DashboardModel =\n        { phoneSelectInputModel : AvardaUi.PhoneSelectInput.Model }\n\n","args":[],"cases":[]},{"name":"Msg","comment":" Msg type for the PhoneSelectInput component. Use this for the wrap msg in your own Msg type.\n\n    type DashboardMsg\n        = HandlePhoneSelectInput AvardaUi.PhoneSelectInput.Msg\n        | NoUpdate\n\n","args":[],"cases":[]}],"aliases":[],"values":[{"name":"getPhoneInputValue","comment":" Get the current value of the phone input.\n","type":"AvardaUi.PhoneSelectInput.Model -> String.String"},{"name":"getSelectedCountryCode","comment":" Get the currently selected `CountryCode`.\nIf none is selected, returns _Nothing_.\n","type":"AvardaUi.PhoneSelectInput.Model -> Maybe.Maybe Shared.Data.CountryCode"},{"name":"init","comment":" Initialize the PhoneSelectInput model.\n\n    init : DashboardModel\n    init =\n        { phoneSelectInputModel = AvardaUi.PhoneSelectInput.init \"phone\" }\n\n","type":"String.String -> AvardaUi.PhoneSelectInput.Model"},{"name":"new","comment":" Create a new PhoneSelectInput component.\n\n    AvardaUi.PhoneSelectInput.new\n        { inputLabel = \"Phone\"\n        , selectAriaLabel = \"Country code\"\n        , phoneSelectInputModel = model.phoneSelectInputModel\n        }\n\n","type":"{ inputLabel : String.String, selectAriaLabel : String.String, phoneSelectInputModel : AvardaUi.PhoneSelectInput.Model } -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"onInput","comment":" Used for triggering a message when the phone input is typed into.\n","type":"(String.String -> msg) -> AvardaUi.PhoneSelectInput.UpdateOption msg"},{"name":"onInputTabKeyDown","comment":" Used for triggering a message when `Tab` is pressed in the input.\n","type":"msg -> AvardaUi.PhoneSelectInput.UpdateOption msg"},{"name":"onSelect","comment":" Used for triggering a message when an `CountryCode` is selected.\n","type":"(Shared.Data.CountryCode -> msg) -> AvardaUi.PhoneSelectInput.UpdateOption msg"},{"name":"scrollOptionIntoView","comment":" Used to fix issue with scrolling option into view when used in ShadowDOM.\n_elm/browser cannot find the element ID when this component is used by an app which uses ShadowDOM_\n\n    type alias ScrollOptionIntoViewCmd msg =\n        String -> Cmd msg\n\n","type":"AvardaUi.PhoneSelectInput.ScrollOptionIntoViewCmd msg -> AvardaUi.PhoneSelectInput.UpdateOption msg"},{"name":"setCountries","comment":" Set the available `CountryCode`s for country select.\n","type":"List.List Shared.Data.CountryCode -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"setPhoneInputValue","comment":" Set the phone input value.\n","type":"String.String -> AvardaUi.PhoneSelectInput.Model -> AvardaUi.PhoneSelectInput.Model"},{"name":"setSelectedCountry","comment":" Set the selected `CountryCode`.\n","type":"Shared.Data.CountryCode -> AvardaUi.PhoneSelectInput.Model -> AvardaUi.PhoneSelectInput.Model"},{"name":"update","comment":" Update function for the PhoneSelectInput component. Call this in your update function to handle Select's internal messages\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandlePhoneSelectInput phoneSelectInputMsg ->\n                let\n                    ( updatedPhoneSelectInputModel, phoneSelectInputCmd ) =\n                        AvardaUi.PhoneSelectInput.update\n                            HandlePhoneSelectInput\n                            phoneSelectInputMsg\n                            model.phoneSelectInputModel\n                in\n                ( { model | phoneSelectInputModel = updatedPhoneSelectInputModel }, phoneSelectInputCmd )\n\n","type":"(AvardaUi.PhoneSelectInput.Msg -> msg) -> AvardaUi.PhoneSelectInput.Msg -> AvardaUi.PhoneSelectInput.Model -> ( AvardaUi.PhoneSelectInput.Model, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":"\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandlePhoneSelectInput phoneSelectInputMsg ->\n                let\n                    ( updatedPhoneSelectInputModel, phoneSelectInputCmd ) =\n                        AvardaUi.PhoneSelectInput.updateWith\n                            [ AvardaUi.PhoneSelectInput.onSelect OnSelect\n                            , AvardaUi.PhoneSelectInput.onInput OnInput\n                            ]\n                            HandlePhoneSelectInput\n                            phoneSelectInputMsg\n                            model.phoneSelectInputModel\n                in\n                ( { model | phoneSelectInputModel = updatedPhoneSelectInputModel }, selectCmd )\n\n","type":"List.List (AvardaUi.PhoneSelectInput.UpdateOption msg) -> (AvardaUi.PhoneSelectInput.Msg -> msg) -> AvardaUi.PhoneSelectInput.Msg -> AvardaUi.PhoneSelectInput.Model -> ( AvardaUi.PhoneSelectInput.Model, Platform.Cmd.Cmd msg )"},{"name":"view","comment":" Render the PhoneSelectInput as HTML .\n\nAlways call this after you've built up the input with `new` and chained settings.\n\n    AvardaUi.PhoneSelectInput.new \"phone\" {...}\n        |> AvardaUi.PhoneSelectInput.withIsRequired True\n        |> AvardaUi.PhoneSelectInput.view\n\n","type":"(AvardaUi.PhoneSelectInput.Msg -> msg) -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> Html.Styled.Html msg"},{"name":"withBorderRadius","comment":" Adjust the border radius of the PhoneSelectInput.\n","type":"Basics.Float -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withHint","comment":" Add a hint text below the PhoneSelectInput.\n","type":"String.String -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withInputMaxLength","comment":" Limit the maximum number of characters.\n","type":"Basics.Int -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withInputPlaceholder","comment":" Add a placeholder to the input.\n","type":"String.String -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withIsDisabled","comment":" Disable the PhoneSelectInput\n","type":"Basics.Bool -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withIsRequired","comment":" Mark the PhoneSelectInput as required.\n","type":"Basics.Bool -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withMaybeError","comment":" Show an error message and mark the PhoneSelectInput as invalid.\n**Replaces any active hint text.**\n","type":"Maybe.Maybe String.String -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"},{"name":"withMenuMaxHeight","comment":" Set a maximum height for the dropdown menu.\n","type":"Basics.Int -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg -> AvardaUi.PhoneSelectInput.PhoneSelectInput msg"}],"binops":[]},{"name":"AvardaUi.Select","comment":" This module provides a customizable accessible select dropdown. It uses the [builder pattern](https://sporto.github.io/elm-patterns/basic/builder-pattern.html):\n\n1.  Start with [`new`](#new) to create a base input.\n2.  Chain configuration functions like [`withPlaceholder`](#withPlaceholder) or [`withIsRequired`](#withIsRequired).\n3.  Finish with [`view`](#view) to render it.\n\n\n# Creating a Select\n\n@docs Model, init, Msg, update, new, view\n\n\n# Update with extra options\n\nYou can pass extra options / callbacks to this component using `updateWith`\n\n@docs updateWith, onSelect, scrollOptionIntoView\n\n\n# Setting options\n\n@docs setSelectedOption, setOptions\n\n\n# Getting selected option\n\n@docs getSelectedOption\n\n\n# Configuration\n\n@docs withMaybeError, withIsRequired, withIsDisabled, withBorderRadius, withTopPx, withMenuMaxHeight\n@docs withCustomOptionViewFn, withCustomSelectedOptionViewFn\n@docs withAdditionalWrapperStyles, withContainerPosition, withAriaLabel\n\n","unions":[],"aliases":[{"name":"Model","comment":" Model type for the Select component. Use this in your own model.\n\n    type alias DashboardModel =\n        { languageSelectModel : AvardaUi.Select.Model Language }\n\n","args":["a"],"type":"AvardaUi.SelectInternal.Model.Model a"},{"name":"Msg","comment":" Msg type for the Select component. Use this for the wrap msg in your own Msg type.\n\n    type DashboardMsg\n        = HandleLanguageSelect (AvardaUi.Select.Msg Language)\n        | NoUpdate\n\n","args":["a"],"type":"AvardaUi.SelectInternal.Msg.Msg a"}],"values":[{"name":"getSelectedOption","comment":" Get the currently selected option.\nIf none is selected, returns _Nothing_.\n","type":"AvardaUi.Select.Model a -> Maybe.Maybe a"},{"name":"init","comment":" Initialize the Select model.\n\n    init : DashboardModel\n    init =\n        { languageSelectModel = AvardaUi.Select.init \"language\" }\n\n","type":"String.String -> AvardaUi.Select.Model a"},{"name":"new","comment":" Create a new Select component.\n\n    AvardaUi.Select.new\n        { label = \"Choose a language\"\n        , selectModel = dashboardModel.languageSelectModel\n        , optionToString = .name\n        }\n\n","type":"{ label : String.String, selectModel : AvardaUi.Select.Model a, optionToString : a -> String.String } -> AvardaUi.Select.Select a msg"},{"name":"onSelect","comment":" Use for triggering a message when an option is selected.\n","type":"(a -> msg) -> AvardaUi.SelectInternal.Update.UpdateOption a msg"},{"name":"scrollOptionIntoView","comment":" Use to fix issue with scrolling option into view when used in ShadowDOM.\n_elm/browser cannot find the element ID when this component is used by an app which uses ShadowDOM_\n\n    type alias ScrollOptionIntoViewCmd msg =\n        String -> Cmd msg\n\n","type":"AvardaUi.SelectInternal.Update.ScrollOptionIntoViewCmd msg -> AvardaUi.SelectInternal.Update.UpdateOption a msg"},{"name":"setOptions","comment":" Provide a list of options to the Select.\n**Note that this needs to be used as a builder, when you are creating a Select, not on init**\n","type":"List.List a -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"setSelectedOption","comment":" Set the selected option.\n","type":"a -> AvardaUi.Select.Model a -> AvardaUi.Select.Model a"},{"name":"update","comment":" Update function for the Select component. Call this in your update function to handle Select's internal messages\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandleLanguageSelect selectMsg ->\n                let\n                    ( updatedSelectModel, selectCmd ) =\n                        AvardaUi.Select.update\n                            HandleLanguageSelect\n                            selectMsg\n                            model.languageSelectModel\n                in\n                ( { model | languageSelectModel = updatedSelectModel }, selectCmd )\n\n","type":"(AvardaUi.Select.Msg a -> msg) -> AvardaUi.Select.Msg a -> AvardaUi.Select.Model a -> ( AvardaUi.Select.Model a, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":"\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandleLanguageSelect selectMsg ->\n                let\n                    ( updatedSelectModel, selectCmd ) =\n                        AvardaUi.Select.updateWith [ AvardaUi.Select.onSelect SaveLanguageToStorage ]\n                            HandleLanguageSelect\n                            selectMsg\n                            model.languageSelectModel\n                in\n                ( { model | languageSelectModel = updatedSelectModel }, selectCmd )\n\n","type":"List.List (AvardaUi.SelectInternal.Update.UpdateOption a msg) -> (AvardaUi.Select.Msg a -> msg) -> AvardaUi.Select.Msg a -> AvardaUi.Select.Model a -> ( AvardaUi.Select.Model a, Platform.Cmd.Cmd msg )"},{"name":"view","comment":" Render the Select as HTML.\n\nAlways call this after you've built up the input with `new` and chained settings.\n\n    AvardaUi.Select.new {...}\n        |> AvardaUi.Select.withIsRequired True\n        |> AvardaUi.Select.view\n\n","type":"(AvardaUi.Select.Msg a -> msg) -> AvardaUi.Select.Select a msg -> Html.Styled.Html msg"},{"name":"withAdditionalWrapperStyles","comment":" Add additional styles.\n","type":"List.List Css.Style -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withAriaLabel","comment":" Set a custom ARIA label (instead of label element).\n","type":"String.String -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withBorderRadius","comment":" Change the border radius of the Select.\n","type":"Basics.Float -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withContainerPosition","comment":" Set the CSS position of the Select container.\n","type":"Css.Position {} -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withCustomOptionViewFn","comment":" Provide a custom view function for rendering options.\n","type":"(a -> Html.Styled.Html msg) -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withCustomSelectedOptionViewFn","comment":" Provide a custom view function for the selected option.\n","type":"(a -> Html.Styled.Html msg) -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withIsDisabled","comment":" Disable the select.\nVisually dims and prevents user actions.\n","type":"Basics.Bool -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withIsRequired","comment":" Mark the Select as required.\n","type":"AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withMaybeError","comment":" Show an error message and mark the Select as invalid.\n","type":"Maybe.Maybe String.String -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withMenuMaxHeight","comment":" Set a maximum height for the dropdown menu.\n","type":"Basics.Int -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"},{"name":"withTopPx","comment":" Adjust the gap between the Select and the dropdown menu.\n","type":"Basics.Float -> AvardaUi.Select.Select a msg -> AvardaUi.Select.Select a msg"}],"binops":[]},{"name":"AvardaUi.SelectNative","comment":" A native styled HTML `<select>` without custom dropdown menu. It uses the [builder pattern](https://sporto.github.io/elm-patterns/basic/builder-pattern.html):\n\n1.  Start with [`new`](#new) to create a base input.\n2.  Chain configuration functions like [`withPlaceholder`](#withPlaceholder) or [`withIsRequired`](#withIsRequired).\n3.  Finish with [`view`](#view) to render it.\n\n\n# Creating a SelectNative\n\n@docs new, view\n\n\n# Configuration\n\n@docs withAriaLabel, withBorderRadius, withCustomOptionSorting, withIsDisabled, withIsRequired, withMaybeError, withOptionToLabel\n\n\n# Setting Options\n\n@docs setBasicOptions, setOptionGroups\n\n","unions":[],"aliases":[],"values":[{"name":"new","comment":" Create a new `SelectNative`.\n\n    SelectNative.new \"country\"\n        { label = \"Country\"\n        , optionToStringValue = .code\n        , stringValueToOption = countryToString\n        , onChange = SelectedCountry\n        , placeholder = \"Choose country\"\n        , selectedOption = Nothing\n        }\n\n","type":"String.String -> { label : String.String, optionToStringValue : a -> String.String, stringValueToOption : String.String -> a, onChange : a -> msg, placeholder : String.String, selectedOption : Maybe.Maybe a } -> AvardaUi.SelectNative.Select a msg"},{"name":"setBasicOptions","comment":" Set a flat list of options.\n","type":"List.List a -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"setOptionGroups","comment":" Set a grouped list of options. Each inner list will render as an `<optgroup>`.\n","type":"List.List (List.List a) -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"view","comment":" Render the SelectNative as HTML.\n\nAlways call this after you've built up the input with `new` and chained settings.\n\n    AvardaUi.SelectNative.new {...}\n        |> AvardaUi.SelectNative.withIsRequired True\n        |> AvardaUi.SelectNative.view\n\n","type":"AvardaUi.SelectNative.Select a msg -> Html.Styled.Html msg"},{"name":"withAriaLabel","comment":" Set a custom ARIA label.\n","type":"String.String -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withBorderRadius","comment":" Adjust the border radius.\n","type":"Basics.Float -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withCustomOptionSorting","comment":" Provide a custom sort function for the option list(s).\n","type":"(List.List a -> List.List a) -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withIsDisabled","comment":" Disable the input.\nVisually dims and prevents user actions.\n","type":"Basics.Bool -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withIsRequired","comment":" Mark the select as required.\n","type":"Basics.Bool -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withMaybeError","comment":" Show an error message and mark the select as invalid.\n","type":"Maybe.Maybe String.String -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"},{"name":"withOptionToLabel","comment":" Provide a custom label function for options.\n","type":"(a -> String.String) -> AvardaUi.SelectNative.Select a msg -> AvardaUi.SelectNative.Select a msg"}],"binops":[]},{"name":"AvardaUi.SuggestionInput","comment":" This module provides a component that allows you to get autocomplete suggestions. These can be either hardcoded or you can use remote suggestions obtained from API call.\nIt uses the [builder pattern](https://sporto.github.io/elm-patterns/basic/builder-pattern.html):\n\n1.  Start with [`new`](#new) to create a base input.\n2.  Chain configuration functions like [`withPlaceholder`](#withPlaceholder) or [`withIsRequired`](#withIsRequired).\n3.  Finish with [`view`](#view) to render it.\n\n\n# Creating a SuggestionInput\n\n@docs Model, init, setSuggestions, reinit, Msg, update, new, view\n\n\n# Setting suggestion list\n\nTo use it with the hardcoded list of suggestions, just [`setSuggestions`](#setSuggestions) after [`init`](#init).\n\n    SuggestionInput.init \"address\"\n        |> SuggestionInput.setSuggestions suggestionList\n\nIf you wish to use it with remote suggestions, add a [`remoteSuggestions`](#remoteSuggestions) update option in your [`updateWith`](#updateWith) function.\n\n    SuggestionInput.updateWith\n        [ SuggestionInput.remoteSuggestions { requestCmd = fetchSuggestions, requestMinInputLength = 3 } ]\n\n\n# Setting input value\n\n@docs setInputValue\n\n\n# Getting selected suggestion\n\n@docs getSelectedSuggestion\n\n\n# Update with extra options\n\nYou can pass extra options / callbacks to this component using `updateWith`\n\n@docs updateWith, onSelect, onInput, remoteSuggestions, scrollSuggestionIntoView\n\n\n# Configuration\n\n@docs withBorderRadius, withHint, withPlaceholder, withIsDisabled, withIsRequired, withMaybeError, withMenuMaxHeight, withAriaLabel, withAutocomplete, withCustomSuggestionViewFn, withLeftChild, withRightChild, withSelectedSuggestionAdditionalStyles, withTopPx\n\n","unions":[],"aliases":[{"name":"Model","comment":" Model type for the SuggestionInput component. Use this in your own model.\n\n    type alias ContactInfoModel =\n        { addressSuggestionInputModel : AvardaUi.SuggestionInput.Model Address }\n\n","args":["a"],"type":"AvardaUi.SuggestionInputInternal.Model.Model a"},{"name":"Msg","comment":" Msg type for the SuggestionInput component. Use this for the wrap msg in your own Msg type.\n\n    type ContactInfoMsg\n        = HandleAddressSuggestionInput (AvardaUi.SuggestionInput.Msg Address)\n        | NoUpdate\n\n","args":["a"],"type":"AvardaUi.SuggestionInputInternal.Msg.Msg a"}],"values":[{"name":"getSelectedSuggestion","comment":" Get the currently selected suggestion.\nIf none is selected, returns `Nothing`.\n_Note that if you select a suggestion and then write anything to the input, the suggestion is no longer selected in the model_\n","type":"AvardaUi.SuggestionInput.Model a -> Maybe.Maybe a"},{"name":"init","comment":" Initialize the SuggestionInput model.\n\n    init : ContactInfoModel\n    init =\n        { addressSuggestionInputModel = AvardaUi.SuggestionInput.init \"address\" }\n\n","type":"String.String -> AvardaUi.SuggestionInput.Model a"},{"name":"new","comment":" Create a new SuggestionInput component.\n\n    AvardaUi.SuggestionInput.new\n        { label = \"Address\"\n        , suggestionInputModel = addressSuggestionInputModel\n        , suggestionToInputValue = .addressLine1\n        }\n\n","type":"{ label : String.String, suggestionInputModel : AvardaUi.SuggestionInput.Model a, suggestionToInputValue : a -> String.String } -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"onInput","comment":" Used for triggering a message when the input is typed into.\n","type":"(String.String -> msg) -> AvardaUi.SuggestionInputInternal.Update.UpdateOption a msg"},{"name":"onSelect","comment":" Used for triggering a message when suggestion is selected.\n","type":"(a -> msg) -> AvardaUi.SuggestionInputInternal.Update.UpdateOption a msg"},{"name":"reinit","comment":" In some cases it's nice to have the option to re-init the component with no need to pass `id` again.\n","type":"AvardaUi.SuggestionInput.Model a -> AvardaUi.SuggestionInput.Model a"},{"name":"remoteSuggestions","comment":" Used in [`updateWith`](#updateWith) in order to use suggestions obtain from an API call instead of hardcoded ones set with [`setSuggestions`](#setSuggestions).\n\nThe `RemoteSuggestionsPayload` looks like this:\n\n    type alias RemoteSuggestionsPayload a msg =\n        { requestCmd : String -> (RemoteData.WebData (List a) -> msg) -> Cmd msg\n        , requestMinInputLength : Int\n        }\n\nwhere `String` is the request's query.\n\n**Example of the `requestCmd`**:\n\n    getAddressSuggestions : String -> (RemoteData.WebData (List Address) -> msg) -> Cmd msg\n    getAddressSuggestions query msg =\n        { method = \"GET\"\n        , headers = []\n        , url = \"https://api.example.com/suggestions?query=\" ++ query\n        , body = Http.emptyBody\n        , expect = Http.expectJson (RemoteData.fromResult >> msg) addressSuggestionDecoder\n        , timeout = Nothing\n        , tracker = Nothing\n        }\n            |> Http.request\n\n","type":"AvardaUi.SuggestionInputInternal.Update.RemoteSuggestionsPayload a msg -> AvardaUi.SuggestionInputInternal.Update.UpdateOption a msg"},{"name":"scrollSuggestionIntoView","comment":" Used to fix issue with scrolling option into view when used in ShadowDOM.\n_elm/browser cannot find the element ID when this component is used by an app which uses ShadowDOM_\n\n    type alias ScrollOptionIntoViewCmd msg =\n        String -> Cmd msg\n\n","type":"AvardaUi.SuggestionInputInternal.Update.ScrollSuggestionIntoViewCmd msg -> AvardaUi.SuggestionInputInternal.Update.UpdateOption a msg"},{"name":"setInputValue","comment":" Set the input value.\n","type":"String.String -> AvardaUi.SuggestionInput.Model a -> AvardaUi.SuggestionInput.Model a"},{"name":"setSuggestions","comment":" Used after [`init`](#init) to use hardcoded list of suggestions.\n","type":"List.List a -> AvardaUi.SuggestionInput.Model a -> AvardaUi.SuggestionInput.Model a"},{"name":"update","comment":"\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandleAddressSuggestionsInput suggestionInputMsg ->\n                let\n                    ( HandleAddressSuggestionInput, suggestionInputCmd ) =\n                        SuggestionInput.update\n                            HandleAddressSuggestionsInput\n                            suggestionInputMsg\n                            model.addressSuggestionInputModel\n                in\n                ( { model | addressSuggestionInputModel = HandleAddressSuggestionInput }, suggestionInputCmd )\n\n","type":"(AvardaUi.SuggestionInput.Msg a -> msg) -> AvardaUi.SuggestionInput.Msg a -> AvardaUi.SuggestionInput.Model a -> ( AvardaUi.SuggestionInput.Model a, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":"\n\n    update : Model -> Msg -> ( Model, Cmd Msg )\n    update model msg =\n        case msg of\n            HandleAddressSuggestionsInput suggestionInputMsg ->\n                let\n                    ( HandleAddressSuggestionInput, suggestionInputCmd ) =\n                        SuggestionInput.updateWith\n                            [ SuggestionInput.onInput InsertedAddress\n                            , SuggestionInput.onSelect ClickedAddressSuggestion\n                            ]\n                            HandleAddressSuggestionsInput\n                            suggestionInputMsg\n                            model.addressSuggestionInputModel\n                in\n                ( { model | addressSuggestionInputModel = HandleAddressSuggestionInput }, suggestionInputCmd )\n\n","type":"List.List (AvardaUi.SuggestionInputInternal.Update.UpdateOption a msg) -> (AvardaUi.SuggestionInput.Msg a -> msg) -> AvardaUi.SuggestionInput.Msg a -> AvardaUi.SuggestionInput.Model a -> ( AvardaUi.SuggestionInput.Model a, Platform.Cmd.Cmd msg )"},{"name":"view","comment":" Render the Select as HTML.\n\nAlways call this after you've built up the input with `new` and chained settings.\n\n    AvardaUi.SuggestionInput.new \"address\"\n        |> AvardaUi.SuggestionInput.withIsRequired True\n        |> AvardaUi.SuggestionInput.view\n\n","type":"(AvardaUi.SuggestionInput.Msg a -> msg) -> AvardaUi.SuggestionInput.SuggestionInput a msg -> Html.Styled.Html msg"},{"name":"withAriaLabel","comment":" Set a custom ARIA label.\n","type":"String.String -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withAutocomplete","comment":" Enable autocomplete with a given string like `\"address1\"`. It is set to `\"off\"` by default.\n","type":"String.String -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withBorderRadius","comment":" Adjust the border radius of the input box.\n","type":"Basics.Float -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withCustomSuggestionViewFn","comment":" Provide a custom view function for rendering suggestions.\n","type":"(a -> Html.Styled.Html msg) -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withHint","comment":" Add a hint text below the input.\n","type":"String.String -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withIsDisabled","comment":" Disable the input.\nVisually dims and prevents user actions.\n","type":"Basics.Bool -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withIsRequired","comment":" Mark the input as required.\nThis adds a `*` to the label and sets `required=true`.\n","type":"Basics.Bool -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withLeftChild","comment":" Add a left-side child element.\n","type":"Html.Styled.Html msg -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withMaybeError","comment":" Show an error message and mark the input invalid.\n**Replaces any active hint text.**\n","type":"Maybe.Maybe String.String -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withMenuMaxHeight","comment":" Set a maximum height for the dropdown menu.\n","type":"Basics.Int -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withPlaceholder","comment":" Add a placeholder to the input.\n","type":"String.String -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withRightChild","comment":" Add a right-side child element.\n","type":"Html.Styled.Html msg -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withSelectedSuggestionAdditionalStyles","comment":" Provide additional styles for the selected suggestion.\n","type":"List.List Css.Style -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"},{"name":"withTopPx","comment":" Adjust the gap between the Select and the dropdown menu.\n","type":"Basics.Float -> AvardaUi.SuggestionInput.SuggestionInput a msg -> AvardaUi.SuggestionInput.SuggestionInput a msg"}],"binops":[]},{"name":"AvardaUi.Util.Builder","comment":" Helpers for building components with the Elm builder pattern.\n\nThese functions make it easier to conditionally apply configuration when constructing UI components.\n\n@docs withMaybeBuilder, withConditionalBuilder\n\n","unions":[],"aliases":[],"values":[{"name":"withConditionalBuilder","comment":" Apply a builder function only if a condition is `True`.\nIf the condition is `False`, the builder is skipped.\n\n    Input.new \"username\" {...}\n        |> BuilderUtil.withConditionalBuilder (Input.withLeftChild iconView) shouldShowLeftIcon\n        |> Input.view\n\n","type":"(builder -> builder) -> Basics.Bool -> builder -> builder"},{"name":"withMaybeBuilder","comment":" Apply a builder function if there is a `Just value`.\nIf the value is `Nothing`, the builder is skipped.\n\n    Input.new \"username\" {...}\n        |> BuilderUtil.withMaybeBuilder Input.withPlaceholder (Just \"Enter username\")\n        |> Input.view\n\n","type":"(prop -> builder -> builder) -> Maybe.Maybe prop -> builder -> builder"}],"binops":[]},{"name":"AvardaUi.Util.KeyPress","comment":" Utility functions for handling keyboard events in Elm.\n\nThis module provides a way to bind messages to specific keys.\nIt exposes helpers for `keydown`, `keyup`, and `keypress` events, with or without `preventDefault`.\n\n\n# KeyboardKey type\n\n@docs KeyboardKey\n\n\n# Event Handlers\n\n@docs onKeyDown, onKeyDownPreventDefault, onKeyUp, onKeyUpPreventDefault, onKeyPress, onKeyPressPreventDefault\n\n\n## Example\n\n    import AvardaUi.Util.KeyPress as KeyPressUtil\n\n    view : Html Msg\n    view =\n        Html.input\n            [ KeyPressUtil.onKeyDown [ ( KeyPress.Enter, HandleSubmit ) ]\n            ]\n            []\n\n","unions":[{"name":"KeyboardKey","comment":" Supported keyboard keys so far.\n","args":[],"cases":[["Enter",[]],["Esc",[]],["ArrowUp",[]],["ArrowDown",[]],["Tab",[]],["Space",[]]]}],"aliases":[],"values":[{"name":"onKeyDown","comment":" Attach a `keydown` listener.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"},{"name":"onKeyDownPreventDefault","comment":" Attach a `keydown` listener and prevent the default browser action.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"},{"name":"onKeyPress","comment":" Attach a `keypress` listener.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"},{"name":"onKeyPressPreventDefault","comment":" Attach a `keypress` listener and prevent the default browser action.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"},{"name":"onKeyUp","comment":" Attach a `keyup` listener.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"},{"name":"onKeyUpPreventDefault","comment":" Attach a `keyup` listener and prevent the default browser action.\n","type":"List.List ( AvardaUi.Util.KeyPress.KeyboardKey, msg ) -> Html.Styled.Attribute msg"}],"binops":[]}]