SettingsBuilt revision v17.10.0 Phoenix TopicsHuman supportBring a missing role, layout, or state, or a rendering against the standard, to the session working on kit. Name the package and the entry. SettingsOpen the whole page Source<Kit.Phoenix.Layouts.Shell.shell print_identity={@print.identity} print_subject={@print.subject} print_standing={@print.standing} print_tenant={@print.tenant} product="kit" navigation_label="Application" navigation="none" density="desk">
<:subject>Settings</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../layout-settings/#layout-settings">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Your settings"}} section_index_patch="../settings/" section="your-email" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{name: "Your account", sections: [%Kit.Phoenix.Layouts.Settings.Entry{name: "Security", sections: [%Kit.Phoenix.Layouts.Settings.Entry{section: "your-email", name: "Your email"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "password", name: "Password"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "two-step-sign-in", name: "Two-step sign-in"}]}]}, %Kit.Phoenix.Layouts.Settings.Entry{name: "Your preferences", sections: [%Kit.Phoenix.Layouts.Settings.Entry{section: "your-sessions", name: "Your sessions"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "devices", name: "Devices"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "connected-apps", name: "Connected apps"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "language-and-region", name: "Language and region"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "billing", name: "Billing"}]}]} section_heading_id="email-title" section_index_label="Sections">
<:selected_section rest={%{id: "email"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Address</:name>
<:value><Kit.Phoenix.Email.email address="maya@example.com" /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:selected_section>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings-2" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="notifications" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="notifications-title" section_index_label="Sections">
<:selected_section rest={%{id: "notifications"}} />
<:form_or_list>
<form method="get" id="settings-notifications-form">
<Kit.Phoenix.Roles.FormGroup.form_group id="settings-digest-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_rest={%{id: "settings-digest", name: "digest"}}><:printed_value>Every morning</:printed_value>
<:label rest={%{for: "settings-digest"}}>Digest</:label>
<:option value="morning">Every morning</:option>
<:option value="week">Once a week</:option>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="settings-reply-to-form-group"
kind={Kit.Phoenix.Roles.FormGroup.Kind.email()}
control_value="hall@oakmere.example"
control_rest={%{id: "settings-reply-to", name: "reply-to"}}
><:printed_value>hall@oakmere.example</:printed_value>
<:label rest={%{for: "settings-reply-to"}}>Reply-to address</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</form>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="settings-notifications-form">Save notifications</Kit.Phoenix.Roles.PrimaryAction.primary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Send a test message</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
<Kit.Phoenix.Roles.WayBack.way_back href="#email">Return to your email</Kit.Phoenix.Roles.WayBack.way_back>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings-3" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="invitations" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="invitations-title" section_index_label="Sections">
<:selected_section rest={%{id: "invitations"}} />
<:form_or_list>
<Kit.Phoenix.Roles.Row.row>
<:subject><Kit.Phoenix.Email.email address="margaret.hollingsworth.hallbookingsecretary@oakmerewomensinstitute.hallbookings.example" /></:subject>
<:stamp><Kit.Phoenix.Roles.Stamp.stamp state="neutral">Waiting for an answer</Kit.Phoenix.Roles.Stamp.stamp></:stamp>
<:facts>Takes bookings</:facts>
<:facts>Sent <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-03-10])} /></:facts>
<:actions>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Withdraw</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:actions>
</Kit.Phoenix.Roles.Row.row>
<Kit.Phoenix.Roles.Row.row>
<:subject><Kit.Phoenix.Email.email address="aisha@oakmereprimary.org" /></:subject>
<:stamp><Kit.Phoenix.Roles.Stamp.stamp state="neutral">Waiting for an answer</Kit.Phoenix.Roles.Stamp.stamp></:stamp>
<:facts>Sees the calendar</:facts>
<:facts>Sent <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-03-12])} /></:facts>
<:actions>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Withdraw</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:actions>
</Kit.Phoenix.Roles.Row.row>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action>Invite someone</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings-4" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="hall-details" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="hall-details-title" section_index_label="Sections">
<:selected_section rest={%{id: "hall-details"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hall name</:name>
<:value>Oakmere Village Hall</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Logo</:name>
<:value><Kit.Phoenix.Roles.Image.image id="settings-logo" overlay="settings-logo-overlay" src="../../media/oakmere-hall-wordmark.svg" alt="Oakmere Hall wordmark" width={1200} height={120} failure_words="The logo cannot be shown." /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="On booking forms">
<:content>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Contact email</:name>
<:value><Kit.Phoenix.Email.email address="bookings@example.com" /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Phone</:name>
<:value>01632 960 123</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:selected_section>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Roles.ImageOverlay.image_overlay id="settings-logo-overlay" failure_words="The logo cannot be shown." tabindex="-1" aria-labelledby="settings-logo-overlay-caption" open_file_href="../../media/oakmere-hall-wordmark.svg" close_href="#settings-logo" actions_label="Hall logo" width={1200} height={120} image_rest={%{src: "../../media/oakmere-hall-wordmark.svg", alt: "Oakmere Hall wordmark"}}>
<:caption rest={%{id: "settings-logo-overlay-caption"}}>Oakmere Hall wordmark</:caption>
</Kit.Phoenix.Roles.ImageOverlay.image_overlay>
<Kit.Phoenix.Layouts.Settings.settings subject_state={Kit.Phoenix.State.none()} id="layout-settings-terms" section_index_patch="../settings/" section="terms-and-waivers" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "terms-and-waivers", name: "Terms and waivers"}]} section_heading_id="settings-terms-title" section_index_label="Sections">
<:selected_section rest={%{id: "settings-terms"}} />
<:local_actions><Kit.Phoenix.Roles.EmphasisedNextAction.emphasised_next_action>Add your terms</Kit.Phoenix.Roles.EmphasisedNextAction.emphasised_next_action></:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings subject_state={Kit.Phoenix.State.none()} id="layout-settings-fold" section_index_rest={%{"aria-label": "Your settings"}} section_index_patch="../settings/" section="invitations" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}]} section_heading_id="fold-invitations-title" section_index_label="Sections">
<:selected_section rest={%{id: "fold-invitations"}} />
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action>Invite someone</Kit.Phoenix.Roles.PrimaryAction.primary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Send a reminder</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Copy invitation link</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Change access</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:local_actions>
<:local_actions action="secondary-action" action_state={Kit.Phoenix.ActionState.inert("settings-fold-resend", "Confirm your email before resending.")}>Resend invitation</:local_actions>
<:local_actions>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Extend invitation</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Withdraw invitation</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:local_actions>
<:local_actions id="settings-fold-more" label="More actions for invitations" groups={[]} />
<:local_actions><Kit.Phoenix.Roles.WayBack.way_back href="#email">Return to your email</Kit.Phoenix.Roles.WayBack.way_back></:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings subject_state={Kit.Phoenix.State.none()} id="layout-settings-empty-region" section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="notifications" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}]} section_heading_id="empty-region-notifications-title" section_index_label="Sections">
<:selected_section rest={%{id: "empty-region-notifications"}} />
<:local_actions><Kit.Phoenix.Roles.WayBack.way_back :if={false} href="#email">Return to your email</Kit.Phoenix.Roles.WayBack.way_back></:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings subject_state={Kit.Phoenix.State.none()} id="layout-settings-one-section" section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="billing" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "billing", name: "Billing"}]} section_heading_id="one-section-billing-title" section_index_label="Sections">
<:selected_section rest={%{id: "one-section-billing"}} scope_line="A change of plan takes effect from the next bill.">
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Plan</:name>
<:value>Monthly</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Next bill</:name>
<:value><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-04-01])} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:selected_section>
<:local_actions>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Change plan</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings subject_state={Kit.Phoenix.State.none()} id="layout-settings-task-forms" section_index_rest={%{"aria-label": "Oakmere Hall settings"}} section_index_patch="../settings/" section="opening-hours" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "opening-hours", name: "Opening hours"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "amounts", name: "Amounts"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "closing-the-hall", name: "Closing the hall"}]} section_heading_id="task-forms-hours-title" section_index_label="Sections">
<:section_notices>
<Kit.Phoenix.Roles.Notice.notice state={Kit.Phoenix.Roles.Notice.State.settled()}>
<:standing>2 bookings fall outside the new hours</:standing>
<:sentence>They stay booked until their hirers choose another time.</:sentence>
</Kit.Phoenix.Roles.Notice.notice>
</:section_notices>
<:selected_section rest={%{id: "task-forms-hours"}} scope_line="Hirers can book only between the new hours.">
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hours now</:name>
<:value><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.clock_interval(reader(), ~T[09:00:00], ~T[22:00:00])} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:selected_section>
<:form_or_list>
<form method="get" id="settings-task-forms-row-form">
<Kit.Phoenix.Layouts.Form.row>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-opens">
<:label>Opens</:label>
<:control :let={binding}>
<Kit.Phoenix.Roles.TimeField.time_field binding={binding} reader={reader()} name="opens" value={Kit.Phoenix.Roles.TimeField.Committed.clock(Kit.Phoenix.Time.clock(reader(), ~T[08:00:00]))} />
</:control>
<:printed_value><time datetime="08:00">08:00</time></:printed_value>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-closes">
<:label>Closes</:label>
<:control :let={binding}>
<Kit.Phoenix.Roles.TimeField.time_field binding={binding} reader={reader()} name="closes" value={Kit.Phoenix.Roles.TimeField.Committed.clock(Kit.Phoenix.Time.clock(reader(), ~T[22:00:00]))} />
</:control>
<:printed_value><time datetime="22:00">22:00</time></:printed_value>
</Kit.Phoenix.Roles.FormGroup.form_group>
</Kit.Phoenix.Layouts.Form.row>
</form>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="settings-task-forms-row-form">Save opening hours</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings-5" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Oakmere Hall settings"}} section_index_patch="../settings/" section="amounts" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "opening-hours", name: "Opening hours"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "amounts", name: "Amounts"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "closing-the-hall", name: "Closing the hall"}]} section_heading_id="task-forms-amounts-title" section_index_label="Sections">
<:selected_section rest={%{id: "task-forms-amounts"}} />
<:form_or_list>
<form method="get" id="settings-task-forms-row-list-form">
<Kit.Phoenix.Layouts.Form.row_list columns={2}>
<Kit.Phoenix.Layouts.Form.row>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-count-1-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "task-forms-count-1", name: "count-1", value: "1"}}><:printed_value>1</:printed_value>
<:label rest={%{for: "task-forms-count-1"}}>Count</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-amount-1-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "task-forms-amount-1", name: "amount-1", value: "20"}}><:printed_value>20</:printed_value>
<:label rest={%{for: "task-forms-amount-1"}}>Amount</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<:mark>
<Kit.Phoenix.Roles.SelectionControl.selection_control id="task-forms-mark-1" name="and-more-1">
<:fact printed_value="Not marked">This count and more</:fact>
</Kit.Phoenix.Roles.SelectionControl.selection_control>
</:mark>
<:action><Kit.Phoenix.Roles.SecondaryAction.secondary_action type="button" aria-label="Remove row 1">Remove</Kit.Phoenix.Roles.SecondaryAction.secondary_action></:action>
</Kit.Phoenix.Layouts.Form.row>
<Kit.Phoenix.Layouts.Form.row>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-count-2-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "task-forms-count-2", name: "count-2", value: "2"}}><:printed_value>2</:printed_value>
<:label rest={%{for: "task-forms-count-2"}}>Count</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-amount-2-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "task-forms-amount-2", name: "amount-2", value: "35"}}><:printed_value>35</:printed_value>
<:label rest={%{for: "task-forms-amount-2"}}>Amount</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<:mark>
<Kit.Phoenix.Roles.SelectionControl.selection_control id="task-forms-mark-2" name="and-more-2" checked>
<:fact printed_value="Marked">This count and more</:fact>
</Kit.Phoenix.Roles.SelectionControl.selection_control>
</:mark>
<:action><Kit.Phoenix.Roles.SecondaryAction.secondary_action type="button" aria-label="Remove row 2">Remove</Kit.Phoenix.Roles.SecondaryAction.secondary_action></:action>
</Kit.Phoenix.Layouts.Form.row>
</Kit.Phoenix.Layouts.Form.row_list>
</form>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="settings-task-forms-row-list-form">Save amounts</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-settings-6" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Oakmere Hall settings"}} section_index_patch="../settings/" section="closing-the-hall" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "opening-hours", name: "Opening hours"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "amounts", name: "Amounts"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "closing-the-hall", name: "Closing the hall"}]} section_heading_id="task-forms-closing-title" section_index_label="Sections">
<:selected_section rest={%{id: "task-forms-closing"}} />
<:form_or_list>
<form method="get" id="settings-task-forms-headed-region-form">
<Kit.Phoenix.Layouts.Form.headed_region heading="Days closed">
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-range-first">
<:label>First</:label>
<:control :let={binding}>
<Kit.Phoenix.Roles.DateField.date_field binding={binding} reader={reader()} name="range-first" value={Kit.Phoenix.Roles.DateField.Committed.day(Kit.Phoenix.Time.day(reader(), ~D[2025-02-10]))} today={Kit.Phoenix.Time.day(reader(), ~D[2025-04-09])} direction={:either} />
</:control>
<:printed_value><time datetime="2025-02-10">Monday, 10 February 2025</time></:printed_value>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="task-forms-range-last">
<:label>Last</:label>
<:control :let={binding}>
<Kit.Phoenix.Roles.DateField.date_field binding={binding} reader={reader()} name="range-last" value={Kit.Phoenix.Roles.DateField.Committed.day(Kit.Phoenix.Time.day(reader(), ~D[2025-02-16]))} today={Kit.Phoenix.Time.day(reader(), ~D[2025-04-09])} direction={:either} />
</:control>
<:printed_value><time datetime="2025-02-16">Sunday, 16 February 2025</time></:printed_value>
</Kit.Phoenix.Roles.FormGroup.form_group>
</Kit.Phoenix.Layouts.Form.headed_region>
</form>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="settings-task-forms-headed-region-form">Close the hall</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-flow" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Your settings"}} section_index_patch="../settings/" section="two-step-sign-in" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{name: "Your account", sections: [%Kit.Phoenix.Layouts.Settings.Entry{name: "Security", sections: [%Kit.Phoenix.Layouts.Settings.Entry{section: "your-email", name: "Your email"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "password", name: "Password"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "two-step-sign-in", name: "Two-step sign-in"}]}]}, %Kit.Phoenix.Layouts.Settings.Entry{name: "Your preferences", sections: [%Kit.Phoenix.Layouts.Settings.Entry{section: "your-sessions", name: "Your sessions"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "devices", name: "Devices"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "connected-apps", name: "Connected apps"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "language-and-region", name: "Language and region"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "billing", name: "Billing"}]}]} section_heading_id="flow-two-step-title" section_index_label="Sections">
<:selected_section rest={%{id: "flow-two-step"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Status</:name>
<:value>Off</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:selected_section>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action id="settings-two-step-opener">Set up two-step sign-in</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Roles.Dialog.dialog open id="settings-two-step" return_focus="settings-two-step-opener" aria-labelledby="settings-two-step-title" progress_rest={%{"aria-label": "Steps"}}>
<:heading rest={%{id: "settings-two-step-title"}}>Set up two-step sign-in</:heading>
<:progress name="Your app" state="done" />
<:progress name="Code" state="current" />
<:progress name="Backup codes" state="upcoming" />
<:form_groups>
<form id="settings-two-step-form">
<Kit.Phoenix.Roles.FormGroup.form_group kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} id="settings-two-step-code-form-group" control_rest={%{id: "settings-two-step-code", name: "code", type: "text", autocomplete: "one-time-code", inputmode: "numeric"}}><:printed_value>No code entered</:printed_value>
<:label rest={%{for: "settings-two-step-code"}}>Code from your app</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</form>
</:form_groups>
<:continue rest={%{type: "submit", form: "settings-two-step-form"}} />
<:back rest={%{}} />
<:primary_action rest={%{type: "submit", form: "settings-two-step-form"}}>Turn on two-step sign-in</:primary_action>
<:secondary_action>Cancel</:secondary_action>
</Kit.Phoenix.Roles.Dialog.dialog>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-refused" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="notifications" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="refused-notifications-title" section_index_label="Sections">
<:selected_section rest={%{id: "refused-notifications"}} />
<:form_or_list>
<form method="get" id="refused-settings-notifications-form">
<Kit.Phoenix.Roles.FormGroup.form_group id="refused-settings-digest-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_rest={%{id: "refused-settings-digest", name: "digest"}}><:printed_value>Every morning</:printed_value>
<:label rest={%{for: "refused-settings-digest"}}>Digest</:label>
<:option value="morning">Every morning</:option>
<:option value="week">Once a week</:option>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="refused-settings-reply-to-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="hall@oakmere.example" control_rest={%{id: "refused-settings-reply-to", name: "reply-to"}}><:printed_value>hall@oakmere.example</:printed_value>
<:label rest={%{for: "refused-settings-reply-to"}}>Reply-to address</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</form>
</:form_or_list>
<:refusal>
<Kit.Phoenix.Roles.Refusal.refusal id="refused-settings-save">
<:line>Your notifications aren't saved yet. Digests need a confirmed email.</:line>
<:cause href="#email">Your email isn't confirmed</:cause>
</Kit.Phoenix.Roles.Refusal.refusal>
</:refusal>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="refused-settings-notifications-form">Save notifications</Kit.Phoenix.Roles.PrimaryAction.primary_action>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Send a test message</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
<Kit.Phoenix.Roles.WayBack.way_back href="#email">Return to your email</Kit.Phoenix.Roles.WayBack.way_back>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-consequence" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../settings/" section="hire-rates" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "hire-rates", name: "Hire rates"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="consequence-hire-rates-title" section_index_label="Sections">
<:selected_section rest={%{id: "consequence-hire-rates"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Hourly rate now</:name><:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "24.00")))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:selected_section>
<:form_or_list form_rest={%{method: "get", id: "consequence-settings-rates-form"}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="consequence-settings-rate-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:short)} control_value="£28.00" control_rest={%{id: "consequence-settings-rate", name: "rate"}}><:printed_value>£28.00</:printed_value>
<:label rest={%{for: "consequence-settings-rate"}}>Hourly rate</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:form_or_list>
<:consequence>
<Kit.Phoenix.Roles.InlineConsequence.inline_consequence aria-label="New hourly rate">
<:subject>New hourly rate</:subject>
<:consequence>Hirers pay £28.00 an hour instead of £24.00 for bookings they make from then.</:consequence>
<:effective_time>From 1 April 2025.</:effective_time>
<:correction_path>Change the rate again before then; bookings already made keep their rate.</:correction_path>
</Kit.Phoenix.Roles.InlineConsequence.inline_consequence>
</:consequence>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit" form="consequence-settings-rates-form">Save hire rates</Kit.Phoenix.Roles.PrimaryAction.primary_action>
<a href="../settings/import/">Import hire rates</a>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Settings, refused-undoOpen the whole page Source<Kit.Phoenix.Layouts.Shell.shell print_identity={@print.identity} print_subject={@print.subject} print_standing={@print.standing} print_tenant={@print.tenant} product="kit" navigation_label="Application" navigation="none" density="desk">
<:subject>Settings</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-settings/#layout-settings-refused-undo">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-refused-undo-settings" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../../settings/" section="invitations" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "invitations", name: "Invitations"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "terms-of-hire", name: "Terms of hire"}]} section_heading_id="invitations-title" section_index_label="Sections">
<:page_refusal>
<Kit.Phoenix.Roles.Refusal.refusal id="settings-undo-refused-1">
<:line>Undo is refused: the invitation to aisha@oakmereprimary.org expired after you withdrew it.</:line>
</Kit.Phoenix.Roles.Refusal.refusal>
</:page_refusal>
<:selected_section rest={%{id: "invitations"}} />
<:form_or_list>
<Kit.Phoenix.Roles.Row.row>
<:subject><Kit.Phoenix.Email.email address="margaret.hollingsworth.hallbookingsecretary@oakmerewomensinstitute.hallbookings.example" /></:subject>
<:stamp><Kit.Phoenix.Roles.Stamp.stamp state="neutral">Waiting for an answer</Kit.Phoenix.Roles.Stamp.stamp></:stamp>
<:facts>Takes bookings</:facts>
<:facts>Sent <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-03-10])} /></:facts>
<:actions>
<Kit.Phoenix.Roles.SecondaryAction.secondary_action>Withdraw</Kit.Phoenix.Roles.SecondaryAction.secondary_action>
</:actions>
</Kit.Phoenix.Roles.Row.row>
</:form_or_list>
<:local_actions>
<Kit.Phoenix.Roles.PrimaryAction.primary_action>Invite someone</Kit.Phoenix.Roles.PrimaryAction.primary_action>
</:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Settings, importOpen the whole page Source<Kit.Phoenix.Layouts.Shell.shell print_identity={@print.identity} print_subject={@print.subject} print_standing={@print.standing} print_tenant={@print.tenant} product="Hallkeeper" navigation_label="Application" navigation="rail" density="desk">
<:destination href="?destination=assigned-work#main" icon="house" bar>Assigned work</:destination>
<:destination href="?destination=booking-diary#main" icon="calendar" group="Hire days" bar>Diary</:destination>
<:destination href="?destination=checks#main" icon="clipboard-text" group="Hire days" bar>Checks</:destination>
<:destination href="?destination=invoices#main" icon="receipt" bar>Invoices</:destination>
<:destination href="../../settings/" current icon="gear" bar rest={%{"aria-current" => "true"}}>Settings</:destination>
<:rail_head href="?destination=assigned-work#main" />
<:trail>
<Kit.Phoenix.Roles.Trail.trail id="settings-import-trail" label="Breadcrumb">
<:destination href="../../settings/">Settings</:destination>
<:parent href="../../settings/?section=hire-rates">Hire rates</:parent>
</Kit.Phoenix.Roles.Trail.trail>
</:trail>
<:subject>Import hire rates</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-settings/#layout-settings-import">{@owner}</a></:actions>
<:body id="main">
<Kit.Phoenix.Layouts.SteppedFlow.stepped_flow id="layout-settings-import-stepped-flow" subject_state={Kit.Phoenix.State.none()} progress_rest={
%{"aria-label": "Import progress"}
}>
<:progress name="File" state="done" />
<:progress name="Mapping" state="current" />
<:progress name="Preview" state="upcoming" />
<:progress name="Result" state="upcoming" />
<:current_step id="settings-import-step" rest={%{"aria-labelledby": "settings-import-title"}} heading="Match your columns" heading_rest={%{id: "settings-import-title"}}>
<Kit.Phoenix.Roles.FormGroup.form_group kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:medium)} id="settings-import-room-form-group"
control_rest={%{id: "settings-import-room", name: "room-column", value: "Room"}}
><:printed_value>Room</:printed_value>
<:label rest={%{for: "settings-import-room"}}>Column for the room</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:medium)} id="settings-import-rate-form-group"
control_rest={%{id: "settings-import-rate", name: "rate-column", value: "Rate per hour"}}
><:printed_value>Rate per hour</:printed_value>
<:label rest={%{for: "settings-import-rate"}}>Column for the hourly rate</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:current_step>
<:back><Kit.Phoenix.Roles.WayBack.way_back href="?step=file#main">Back to file</Kit.Phoenix.Roles.WayBack.way_back></:back>
<:continue_or_commit>Continue</:continue_or_commit>
</Kit.Phoenix.Layouts.SteppedFlow.stepped_flow>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Settings, inertOpen the whole page Source<Kit.Phoenix.Layouts.Shell.shell print_identity={@print.identity} print_subject={@print.subject} print_standing={@print.standing} print_tenant={@print.tenant} product="kit" navigation_label="Application" navigation="none" density="desk">
<:subject>Settings</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-settings/#layout-settings-inert">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Settings.settings id="layout-settings-inert-settings" subject_state={Kit.Phoenix.State.none()} section_index_rest={%{"aria-label": "Hall settings"}} section_index_patch="../../settings/" section="notifications" section_index={[%Kit.Phoenix.Layouts.Settings.Entry{section: "hall-details", name: "Hall details"}, %Kit.Phoenix.Layouts.Settings.Entry{section: "notifications", name: "Notifications"}]} section_heading_id="settings-inert-title" section_index_label="Sections">
<:selected_section rest={%{id: "settings-inert-notifications"}} />
<:form_or_list>
<form method="get" id="settings-inert-form">
<Kit.Phoenix.Roles.FormGroup.form_group id="settings-inert-digest-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()} control_rest={%{id: "settings-inert-digest", name: "digest"}}>
<:printed_value>Every morning</:printed_value>
<:label rest={%{for: "settings-inert-digest"}}>Digest</:label>
<:option value="morning">Every morning</:option>
<:option value="week">Once a week</:option>
</Kit.Phoenix.Roles.FormGroup.form_group>
</form>
</:form_or_list>
<:local_actions action="primary-action" action_state={Kit.Phoenix.ActionState.inert("settings-inert-save", "Confirm your email before saving notifications.")} control_rest={%{type: "submit", form: "settings-inert-form"}}>Save notifications</:local_actions>
<:local_actions action="secondary-action" action_state={Kit.Phoenix.ActionState.inert("settings-inert-test", "Confirm your email before sending a test message.")}>Send a test message</:local_actions>
<:local_actions><Kit.Phoenix.Roles.WayBack.way_back href="../../settings/?section=hall-details">Return to hall details</Kit.Phoenix.Roles.WayBack.way_back></:local_actions>
</Kit.Phoenix.Layouts.Settings.settings>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
|