[{"name":"Cally.Context","comment":" The record a picker builds and hands to each of its children.\n\nCally passes this down with an atomico context provider and slots the children\ninto the light DOM. elm-cally has no shadow DOM, so a child is a function of\n`Context`: `Cally.Date.view` applies it to every child you give it, which means\nchildren can sit in any order and anywhere in the tree, including inside the\n`heading` slot.\n\n@docs Context\n@docs Selection\n@docs Page\n\n","unions":[{"name":"Selection","comment":" What the picker has selected. Each picker produces its own variant, so a\nchild such as `Cally.Month.view` can render all three.\n","args":[],"cases":[["SelectedDate",["Maybe.Maybe Date.Date"]],["SelectedRange",["Maybe.Maybe ( Date.Date, Date.Date )"]],["SelectedMulti",["List.List Date.Date"]]]}],"aliases":[{"name":"Context","comment":" Everything a child needs to render, and the three messages it can send back.\n\n`id` is `Config.id`, the prefix of every DOM id the picker generates.\n\nThe three callbacks are the picker's own internal messages, already wrapped with\n`Config.toMsg`:\n\n  - `onSelectDay` is a click on a day that is not disallowed. The picker both\n    selects and focuses that day, because a DOM event can only produce one Elm\n    message.\n  - `onFocusDay` is a click on a disallowed day, a keyboard move, or a\n    `<select>` change. The date is already clamped to `min`/`max`.\n  - `onHoverDay` is `mouseover` on a day that is neither disallowed nor\n    disabled. Only `Cally.Range` does anything with it.\n\n","args":["msg"],"type":"{ id : String.String, selection : Cally.Context.Selection, today : Date.Date, locale : Cally.Locale.Locale, min : Maybe.Maybe Date.Date, max : Maybe.Maybe Date.Date, firstDayOfWeek : Time.Weekday, isDateDisallowed : Date.Date -> Basics.Bool, getDayParts : Date.Date -> List.List String.String, page : Cally.Context.Page, focusedDate : Date.Date, showOutsideDays : Basics.Bool, showWeekNumbers : Basics.Bool, formatWeekday : Cally.Locale.WeekdayFormat, onSelectDay : Date.Date -> msg, onFocusDay : Date.Date -> msg, onHoverDay : Date.Date -> msg }"},{"name":"Page","comment":" The months currently on screen. `end` is `start` plus `months - 1`.\n","args":[],"type":"{ start : Cally.Locale.YearMonth, end : Cally.Locale.YearMonth }"}],"values":[],"binops":[]},{"name":"Cally.Css","comment":" The package's stylesheet, as a string.\n\nThe Elm package registry only distributes `src/`, `elm.json`, `README.md` and\n`LICENSE`, so `cally.css` from the repository root cannot reach you through\n`elm install`. This module carries the same bytes, so the default look is\navailable to anything that can put CSS on a page:\n\n    import Cally.Css\n    import Html exposing (Html, node, text)\n\n    styles : Html msg\n    styles =\n        node \"style\" [] [ text Cally.Css.stylesheet ]\n\nOr write it out at build time, from `elm-review`, a codegen step or a scratch\n`Platform.worker` that prints it, and serve it as a real `.css` file.\n\nThe stylesheet is plain light-DOM CSS: it targets the element names the pickers\nrender (`calendar-date`, `calendar-month`, ...) and their `part` attributes,\nso it is global and only needs to appear on the page once.\n\n@docs stylesheet, version\n\n","unions":[],"aliases":[],"values":[{"name":"stylesheet","comment":" The full contents of the package's `cally.css`, byte for byte.\n\nGENERATED from `cally.css` by `scripts/gen-css-module.mjs`. Do not hand-edit\nthis module; run `bun run css:generate`.\n\n","type":"String.String"},{"name":"version","comment":" The package version these styles were generated from, e.g. `\"1.1.0\"`.\n\nUseful as a cache key when the stylesheet is written to a file by a build step.\n\n","type":"String.String"}],"binops":[]},{"name":"Cally.Date","comment":" The single-date picker, a port of `calendar-date/calendar-date.tsx`.\n\nRenders as `<calendar-date>` with the same `part` attributes, aria attributes\nand keyboard behaviour as Cally, in the light DOM.\n\n    type Msg\n        = CalendarMsg Cally.Date.Msg\n        | Picked Cally.Date.Value\n\n    config : Cally.Date.Config Msg\n    config =\n        Cally.Date.defaultConfig\n            { id = \"start-date\"\n            , today = model.today\n            , locale = Cally.Locale.enGB\n            , toMsg = CalendarMsg\n            , onChange = Picked\n            }\n\n    view =\n        Cally.Date.view config\n            model.value\n            model.calendar\n            [ Cally.Month.view { offset = 0 } ]\n\nThe value is yours: `view` and `update` both take it, and `onChange` hands you\nthe new one.\n\n@docs Value, Model, Msg, Config\n@docs PageBy, FocusTarget\n@docs defaultConfig, init\n@docs view, update, updateWith\n@docs focus, focusDate, context\n@docs previous, next\n\n","unions":[{"name":"FocusTarget","comment":" What `focus` should put the browser focus on.\n","args":[],"cases":[["Day",[]],["Next",[]],["Previous",[]]]},{"name":"Msg","comment":" Opaque. Route it back with `update` through `Config.toMsg`.\n","args":[],"cases":[]},{"name":"PageBy","comment":" How the previous and next buttons move: a whole page of `months` at a time,\nor one month at a time. Cally's `page-by`.\n","args":[],"cases":[["Months",[]],["Single",[]]]}],"aliases":[{"name":"Config","comment":" Everything Cally takes as a prop, plus the messages this picker sends you.\n\n`id` prefixes every DOM id the picker renders, so it must be unique on the page\nand stable across renders; `focus` uses those ids.\n\n","args":["msg"],"type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, min : Maybe.Maybe Date.Date, max : Maybe.Maybe Date.Date, months : Basics.Int, pageBy : Cally.Date.PageBy, firstDayOfWeek : Time.Weekday, formatWeekday : Cally.Locale.WeekdayFormat, showOutsideDays : Basics.Bool, showWeekNumbers : Basics.Bool, isDateDisallowed : Date.Date -> Basics.Bool, getDayParts : Date.Date -> List.List String.String, previous : Html.Html msg, next : Html.Html msg, heading : Maybe.Maybe (Cally.Context.Context msg -> Html.Html msg), toMsg : Cally.Date.Msg -> msg, onChange : Cally.Date.Value -> msg, onFocusDay : Maybe.Maybe (Date.Date -> msg), onPageChange : Maybe.Maybe (( Date.Date, Date.Date ) -> msg) }"},{"name":"Model","comment":" Everything the picker remembers for itself: which day the roving\n`tabindex` is on, and which months are on screen.\n","args":[],"type":"{ focusedDate : Date.Date, page : Cally.Context.Page }"},{"name":"Value","comment":" What this picker selects: one date, or none.\n","args":[],"type":"Maybe.Maybe Date.Date"}],"values":[{"name":"context","comment":" The `Context` this picker hands its children. Exposed so you can build a\nchild on your own, and so tests can inspect it.\n","type":"Cally.Date.Config msg -> Cally.Date.Value -> Cally.Date.Model -> Cally.Context.Context msg"},{"name":"defaultConfig","comment":" A `Config` with Cally's defaults: one month, paged by `months`, narrow\nweekday names, no outside days, no week numbers, and the locale's own first day\nof the week.\n","type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, toMsg : Cally.Date.Msg -> msg, onChange : Cally.Date.Value -> msg } -> Cally.Date.Config msg"},{"name":"focus","comment":" Put the browser focus on the day that holds `tabindex=\"0\"`, or on one of\nthe paging buttons. Cally's `focus({ target })`.\n","type":"Cally.Date.Config msg -> Cally.Date.Model -> Cally.Date.FocusTarget -> Platform.Cmd.Cmd msg"},{"name":"focusDate","comment":" Move the roving focus, Cally's `focused-date` property. The date is clamped\nto `min` and `max`, and the page follows it.\n","type":"Cally.Date.Config msg -> Date.Date -> Cally.Date.Model -> Cally.Date.Model"},{"name":"init","comment":" The starting model. Focus lands on the value, or on `today` when there is\nno value, clamped to `min` and `max`.\n","type":"Cally.Date.Config msg -> Cally.Date.Value -> Cally.Date.Model"},{"name":"next","comment":" The message the next button sends, for driving the picker yourself.\n","type":"Cally.Date.Msg"},{"name":"previous","comment":" The message the previous button sends, for driving the picker yourself.\n","type":"Cally.Date.Msg"},{"name":"update","comment":" The `update` you wire into your own.\n\nConsumer callbacks (`onChange`, `onFocusDay`, `onPageChange`) come back as\ncommands, so they arrive as ordinary messages on the next update. The command\nalso carries the `Browser.Dom.focus` call that keyboard navigation needs.\n\n","type":"Cally.Date.Config msg -> Cally.Date.Value -> Cally.Date.Msg -> Cally.Date.Model -> ( Cally.Date.Model, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":" The pure core of `update`.\n\n`events` are the callbacks the message produced, in the order Cally dispatches\nthem, and `focus` is the element the picker wants the browser focus on\nafterwards (Cally's `setTimeout(focus)`). `update` is this function with the\ntwo turned into commands; tests use this one.\n\n","type":"Cally.Date.Config msg -> Cally.Date.Value -> Cally.Date.Msg -> Cally.Date.Model -> { model : Cally.Date.Model, events : List.List msg, focus : Maybe.Maybe Cally.Date.FocusTarget }"},{"name":"view","comment":" Render the picker. The children are the months, and anything else that\nreads the `Context`; each one is applied to the `Context` so it can sit\nanywhere in the tree.\n","type":"Cally.Date.Config msg -> Cally.Date.Value -> Cally.Date.Model -> List.List (Cally.Context.Context msg -> Html.Html msg) -> Html.Html msg"}],"binops":[]},{"name":"Cally.Heading","comment":" The picker heading as a child you can place yourself.\n\nCally has no `calendar-heading` element: its heading is a slot on the base,\nfilled with `Intl.formatRange` output. elm-cally exposes the same formatter as\na child so you can drop a heading next to the selects, or format the page\nyourself.\n\n    Cally.Date.view { config | heading = Just custom } value model\n        [ Cally.Month.view { offset = 0 } ]\n\n    custom context =\n        Cally.Heading.view\n            { year = Just Cally.Locale.YearNumeric\n            , month = Just Cally.Locale.MonthLong\n            }\n            context\n\n@docs view, format\n\n","unions":[],"aliases":[],"values":[{"name":"format","comment":" The heading text for a page: one year-month when the page is a single\nmonth, otherwise the locale's range format.\n","type":"Cally.Locale.HeadingFormat -> Cally.Locale.Locale -> Cally.Context.Page -> String.String"},{"name":"view","comment":" Render `<calendar-heading part=\"heading\">` around the formatted page.\n","type":"Cally.Locale.HeadingFormat -> Cally.Context.Context msg -> Html.Html msg"}],"binops":[]},{"name":"Cally.Locale","comment":" Everything language- and region-specific that the pickers need.\n\nCally reaches for `Intl.DateTimeFormat`. Elm has no `Intl`, so a `Locale` is a\nplain record of formatting functions that you can build yourself. Two English\nlocales ship with the package; both reproduce the exact strings node's ICU\nproduces for `en-GB` and `en-US` (see `upstream/intl-fixture.json`), including\nthe thin-space en-dash ICU uses between the two halves of a range.\n\n@docs Locale\n\n\n# Bundled locales\n\n@docs enGB, enUS\n\n\n# Supporting types\n\n@docs Dir\n@docs YearMonth, HeadingFormat\n@docs YearFormat, MonthFormat, WeekdayFormat\n\n","unions":[{"name":"Dir","comment":" Writing direction. Cally checks `:dir(ltr)` at runtime to decide which way\nthe left and right arrow keys move; elm-cally reads this field instead.\n","args":[],"cases":[["Ltr",[]],["Rtl",[]]]},{"name":"MonthFormat","comment":" How a month should be rendered. Mirrors the `month` option of\n`Intl.DateTimeFormat`.\n","args":[],"cases":[["MonthLong",[]],["MonthShort",[]],["MonthNarrow",[]],["MonthNumeric",[]],["MonthTwoDigit",[]]]},{"name":"WeekdayFormat","comment":" How a weekday should be rendered. Mirrors the `weekday` option of\n`Intl.DateTimeFormat`.\n","args":[],"cases":[["WeekdayLong",[]],["WeekdayShort",[]],["WeekdayNarrow",[]]]},{"name":"YearFormat","comment":" How a year should be rendered: `2026` or `26`.\n","args":[],"cases":[["YearNumeric",[]],["YearTwoDigit",[]]]}],"aliases":[{"name":"HeadingFormat","comment":" The `{ year, month }` half of `Intl.DateTimeFormat`'s options. `Nothing`\ndrops the field, exactly like leaving the option out.\n","args":[],"type":"{ year : Maybe.Maybe Cally.Locale.YearFormat, month : Maybe.Maybe Cally.Locale.MonthFormat }"},{"name":"Locale","comment":" Everything the pickers need to render text.\n\n  - `dir` decides which way `ArrowLeft` and `ArrowRight` move.\n  - `firstDayOfWeek` is the default for `Config.firstDayOfWeek`.\n  - `dayLabel` is the `aria-label` of a day button, Cally's\n    `{ month: \"long\", day: \"numeric\" }`: `\"5 January\"` or `\"January 5\"`.\n  - `yearMonth` and `yearMonthRange` render the picker headings, Cally's\n    `format` / `formatVerbose` and their `formatRange`.\n  - the remaining `*Label` fields are the visually hidden and default texts.\n\n","args":[],"type":"{ dir : Cally.Locale.Dir, firstDayOfWeek : Time.Weekday, monthName : Cally.Locale.MonthFormat -> Time.Month -> String.String, weekdayName : Cally.Locale.WeekdayFormat -> Time.Weekday -> String.String, dayLabel : Date.Date -> String.String, yearMonth : Cally.Locale.HeadingFormat -> Cally.Locale.YearMonth -> String.String, yearMonthRange : Cally.Locale.HeadingFormat -> Cally.Locale.YearMonth -> Cally.Locale.YearMonth -> String.String, weekLabel : String.String, previousLabel : String.String, nextLabel : String.String, yearLabel : String.String, monthLabel : String.String }"},{"name":"YearMonth","comment":" A year and a month, with no day. Mirrors Cally's `PlainYearMonth`.\n","args":[],"type":"{ year : Basics.Int, month : Time.Month }"}],"values":[{"name":"enGB","comment":" British English. Weeks start on Monday, day labels read `\"5 January\"`, and\nSeptember's short name is `\"Sept\"`.\n","type":"Cally.Locale.Locale"},{"name":"enUS","comment":" American English. Weeks start on Sunday and day labels read `\"January 5\"`.\n","type":"Cally.Locale.Locale"}],"binops":[]},{"name":"Cally.Month","comment":" The month grid, a port of `calendar-month/calendar-month.tsx` and\n`calendar-month/useCalendarMonth.ts`.\n\nA month is a child of a picker, so it takes the `Context` the picker hands it:\n\n    Cally.Date.view config\n        value\n        model\n        [ Cally.Month.view { offset = 0 }\n        , Cally.Month.view { offset = 1 }\n        ]\n\n@docs view\n\n","unions":[],"aliases":[],"values":[{"name":"view","comment":" Render the month `offset` months after the start of the picker's page.\n\n`{ offset = 0 }` is the first month on the page, `{ offset = 1 }` the second,\nand so on. Rendering more months than `Config.months` is allowed; they simply\nshow later months and never hold the roving `tabindex`.\n\n","type":"{ offset : Basics.Int } -> Cally.Context.Context msg -> Html.Html msg"}],"binops":[]},{"name":"Cally.Multi","comment":" The multiple-date picker, a port of `calendar-multi/calendar-multi.tsx`.\n\nRenders as `<calendar-multi>`. Clicking a day toggles it: a new date is\nappended to the value, an already selected one is removed.\n\n@docs Value, Model, Msg, Config\n@docs PageBy, FocusTarget\n@docs defaultConfig, init\n@docs view, update, updateWith\n@docs focus, focusDate, context\n@docs previous, next\n\n","unions":[{"name":"FocusTarget","comment":" What `focus` should put the browser focus on.\n","args":[],"cases":[["Day",[]],["Next",[]],["Previous",[]]]},{"name":"Msg","comment":" Opaque. Route it back with `update` through `Config.toMsg`.\n","args":[],"cases":[]},{"name":"PageBy","comment":" How the previous and next buttons move: a whole page of `months` at a time,\nor one month at a time. Cally's `page-by`.\n","args":[],"cases":[["Months",[]],["Single",[]]]}],"aliases":[{"name":"Config","comment":" Everything Cally takes as a prop, plus the messages this picker sends you.\n\n`id` prefixes every DOM id the picker renders, so it must be unique on the page\nand stable across renders; `focus` uses those ids.\n\n","args":["msg"],"type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, min : Maybe.Maybe Date.Date, max : Maybe.Maybe Date.Date, months : Basics.Int, pageBy : Cally.Multi.PageBy, firstDayOfWeek : Time.Weekday, formatWeekday : Cally.Locale.WeekdayFormat, showOutsideDays : Basics.Bool, showWeekNumbers : Basics.Bool, isDateDisallowed : Date.Date -> Basics.Bool, getDayParts : Date.Date -> List.List String.String, previous : Html.Html msg, next : Html.Html msg, heading : Maybe.Maybe (Cally.Context.Context msg -> Html.Html msg), toMsg : Cally.Multi.Msg -> msg, onChange : Cally.Multi.Value -> msg, onFocusDay : Maybe.Maybe (Date.Date -> msg), onPageChange : Maybe.Maybe (( Date.Date, Date.Date ) -> msg) }"},{"name":"Model","comment":" Everything the picker remembers for itself: which day the roving\n`tabindex` is on, and which months are on screen.\n","args":[],"type":"{ focusedDate : Date.Date, page : Cally.Context.Page }"},{"name":"Value","comment":" What this picker selects: any number of dates, in the order Cally produces\nthem.\n","args":[],"type":"List.List Date.Date"}],"values":[{"name":"context","comment":" The `Context` this picker hands its children. Exposed so you can build a\nchild on your own, and so tests can inspect it.\n","type":"Cally.Multi.Config msg -> Cally.Multi.Value -> Cally.Multi.Model -> Cally.Context.Context msg"},{"name":"defaultConfig","comment":" A `Config` with Cally's defaults: one month, paged by `months`, narrow\nweekday names, no outside days, no week numbers, and the locale's own first day\nof the week.\n","type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, toMsg : Cally.Multi.Msg -> msg, onChange : Cally.Multi.Value -> msg } -> Cally.Multi.Config msg"},{"name":"focus","comment":" Put the browser focus on the day that holds `tabindex=\"0\"`, or on one of\nthe paging buttons. Cally's `focus({ target })`.\n","type":"Cally.Multi.Config msg -> Cally.Multi.Model -> Cally.Multi.FocusTarget -> Platform.Cmd.Cmd msg"},{"name":"focusDate","comment":" Move the roving focus, Cally's `focused-date` property. The date is clamped\nto `min` and `max`, and the page follows it.\n","type":"Cally.Multi.Config msg -> Date.Date -> Cally.Multi.Model -> Cally.Multi.Model"},{"name":"init","comment":" The starting model. Focus lands on the first selected date, or on `today`\nwhen nothing is selected, clamped to `min` and `max`.\n","type":"Cally.Multi.Config msg -> Cally.Multi.Value -> Cally.Multi.Model"},{"name":"next","comment":" The message the next button sends, for driving the picker yourself.\n","type":"Cally.Multi.Msg"},{"name":"previous","comment":" The message the previous button sends, for driving the picker yourself.\n","type":"Cally.Multi.Msg"},{"name":"update","comment":" The `update` you wire into your own.\n\nConsumer callbacks (`onChange`, `onFocusDay`, `onPageChange`) come back as\ncommands, so they arrive as ordinary messages on the next update. The command\nalso carries the `Browser.Dom.focus` call that keyboard navigation needs.\n\n","type":"Cally.Multi.Config msg -> Cally.Multi.Value -> Cally.Multi.Msg -> Cally.Multi.Model -> ( Cally.Multi.Model, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":" The pure core of `update`.\n\n`events` are the callbacks the message produced, in the order Cally dispatches\nthem, and `focus` is the element the picker wants the browser focus on\nafterwards (Cally's `setTimeout(focus)`). `update` is this function with the\ntwo turned into commands; tests use this one.\n\n","type":"Cally.Multi.Config msg -> Cally.Multi.Value -> Cally.Multi.Msg -> Cally.Multi.Model -> { model : Cally.Multi.Model, events : List.List msg, focus : Maybe.Maybe Cally.Multi.FocusTarget }"},{"name":"view","comment":" Render the picker. The children are the months, and anything else that\nreads the `Context`; each one is applied to the `Context` so it can sit\nanywhere in the tree.\n","type":"Cally.Multi.Config msg -> Cally.Multi.Value -> Cally.Multi.Model -> List.List (Cally.Context.Context msg -> Html.Html msg) -> Html.Html msg"}],"binops":[]},{"name":"Cally.Range","comment":" The date-range picker, a port of `calendar-range/calendar-range.tsx`.\n\nRenders as `<calendar-range>`. The first click on a day starts a range and\nfires `onRangeStart`; the range then follows the pointer (and the keyboard)\nuntil a second click sorts the pair, fires `onRangeEnd` and then `onChange`.\n\n@docs Value, Model, Msg, Config\n@docs PageBy, FocusTarget\n@docs defaultConfig, init\n@docs view, update, updateWith\n@docs focus, focusDate, context\n@docs previous, next\n\n","unions":[{"name":"FocusTarget","comment":" What `focus` should put the browser focus on.\n","args":[],"cases":[["Day",[]],["Next",[]],["Previous",[]]]},{"name":"Msg","comment":" Opaque. Route it back with `update` through `Config.toMsg`.\n","args":[],"cases":[]},{"name":"PageBy","comment":" How the previous and next buttons move: a whole page of `months` at a time,\nor one month at a time. Cally's `page-by`.\n","args":[],"cases":[["Months",[]],["Single",[]]]}],"aliases":[{"name":"Config","comment":" Everything Cally takes as a prop, plus the messages this picker sends you.\n\n`id` prefixes every DOM id the picker renders, so it must be unique on the page\nand stable across renders; `focus` uses those ids.\n\n","args":["msg"],"type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, min : Maybe.Maybe Date.Date, max : Maybe.Maybe Date.Date, months : Basics.Int, pageBy : Cally.Range.PageBy, firstDayOfWeek : Time.Weekday, formatWeekday : Cally.Locale.WeekdayFormat, showOutsideDays : Basics.Bool, showWeekNumbers : Basics.Bool, isDateDisallowed : Date.Date -> Basics.Bool, getDayParts : Date.Date -> List.List String.String, previous : Html.Html msg, next : Html.Html msg, heading : Maybe.Maybe (Cally.Context.Context msg -> Html.Html msg), toMsg : Cally.Range.Msg -> msg, onChange : Cally.Range.Value -> msg, onFocusDay : Maybe.Maybe (Date.Date -> msg), onPageChange : Maybe.Maybe (( Date.Date, Date.Date ) -> msg), onRangeStart : Maybe.Maybe (Date.Date -> msg), onRangeEnd : Maybe.Maybe (Date.Date -> msg) }"},{"name":"Model","comment":" Everything the picker remembers for itself.\n\n`tentative` is the first click of a range, Cally's `tentative` property, and\n`hovered` is the day the provisional range currently reaches to.\n\n","args":[],"type":"{ focusedDate : Date.Date, page : Cally.Context.Page, tentative : Maybe.Maybe Date.Date, hovered : Maybe.Maybe Date.Date }"},{"name":"Value","comment":" What this picker selects: a start and an end, or nothing. The pair is\nalways sorted.\n","args":[],"type":"Maybe.Maybe ( Date.Date, Date.Date )"}],"values":[{"name":"context","comment":" The `Context` this picker hands its children. Exposed so you can build a\nchild on your own, and so tests can inspect it.\n","type":"Cally.Range.Config msg -> Cally.Range.Value -> Cally.Range.Model -> Cally.Context.Context msg"},{"name":"defaultConfig","comment":" A `Config` with Cally's defaults: one month, paged by `months`, narrow\nweekday names, no outside days, no week numbers, and the locale's own first day\nof the week.\n","type":"{ id : String.String, today : Date.Date, locale : Cally.Locale.Locale, toMsg : Cally.Range.Msg -> msg, onChange : Cally.Range.Value -> msg } -> Cally.Range.Config msg"},{"name":"focus","comment":" Put the browser focus on the day that holds `tabindex=\"0\"`, or on one of\nthe paging buttons. Cally's `focus({ target })`.\n","type":"Cally.Range.Config msg -> Cally.Range.Model -> Cally.Range.FocusTarget -> Platform.Cmd.Cmd msg"},{"name":"focusDate","comment":" Move the roving focus, Cally's `focused-date` property. The date is clamped\nto `min` and `max`, and the page follows it.\n","type":"Cally.Range.Config msg -> Date.Date -> Cally.Range.Model -> Cally.Range.Model"},{"name":"init","comment":" The starting model. Focus lands on the start of the value, or on `today`\nwhen there is no value, clamped to `min` and `max`.\n","type":"Cally.Range.Config msg -> Cally.Range.Value -> Cally.Range.Model"},{"name":"next","comment":" The message the next button sends, for driving the picker yourself.\n","type":"Cally.Range.Msg"},{"name":"previous","comment":" The message the previous button sends, for driving the picker yourself.\n","type":"Cally.Range.Msg"},{"name":"update","comment":" The `update` you wire into your own.\n\nConsumer callbacks (`onChange`, `onFocusDay`, `onPageChange`) come back as\ncommands, so they arrive as ordinary messages on the next update. The command\nalso carries the `Browser.Dom.focus` call that keyboard navigation needs.\n\n","type":"Cally.Range.Config msg -> Cally.Range.Value -> Cally.Range.Msg -> Cally.Range.Model -> ( Cally.Range.Model, Platform.Cmd.Cmd msg )"},{"name":"updateWith","comment":" The pure core of `update`.\n\n`events` are the callbacks the message produced, in the order Cally dispatches\nthem, and `focus` is the element the picker wants the browser focus on\nafterwards (Cally's `setTimeout(focus)`). `update` is this function with the\ntwo turned into commands; tests use this one.\n\n","type":"Cally.Range.Config msg -> Cally.Range.Value -> Cally.Range.Msg -> Cally.Range.Model -> { model : Cally.Range.Model, events : List.List msg, focus : Maybe.Maybe Cally.Range.FocusTarget }"},{"name":"view","comment":" Render the picker. The children are the months, and anything else that\nreads the `Context`; each one is applied to the `Context` so it can sit\nanywhere in the tree.\n","type":"Cally.Range.Config msg -> Cally.Range.Value -> Cally.Range.Model -> List.List (Cally.Context.Context msg -> Html.Html msg) -> Html.Html msg"}],"binops":[]},{"name":"Cally.SelectMonth","comment":" A month `<select>`, a port of\n`calendar-year-month/calendar-select-month.tsx`.\n\nIt is a child of a picker, so it goes where any other child goes; see\n`Cally.SelectYear` for an example that puts both selects in the heading.\n\n@docs view\n\n","unions":[],"aliases":[],"values":[{"name":"view","comment":" Render the month select. Every month of the focused year is offered;\nmonths outside `min` and `max` are `disabled` rather than dropped, exactly as\nCally does it. `formatMonth` defaults to `MonthLong` in Cally.\n","type":"{ formatMonth : Cally.Locale.MonthFormat } -> Cally.Context.Context msg -> Html.Html msg"}],"binops":[]},{"name":"Cally.SelectYear","comment":" A year `<select>`, a port of\n`calendar-year-month/calendar-select-year.tsx`.\n\nIt is a child of a picker, so it goes where any other child goes. Cally puts it\nin the heading slot:\n\n    Cally.Date.view { config | heading = Just heading } value model\n        [ Cally.Month.view { offset = 0 } ]\n\n    heading context =\n        Html.div []\n            [ Cally.SelectYear.view { maxYears = 20 } context\n            , Cally.SelectMonth.view { formatMonth = Cally.Locale.MonthLong } context\n            ]\n\n@docs view\n\n","unions":[],"aliases":[],"values":[{"name":"view","comment":" Render the year select. `maxYears` is how many years to offer, centred on\nthe focused year and then clipped to `min` and `max`. Cally's default is 20.\n","type":"{ maxYears : Basics.Int } -> Cally.Context.Context msg -> Html.Html msg"}],"binops":[]}]