RecordBuilt 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. RecordOpen 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" copy_link="https://oakmerehall.uk/invoices/OH-INV-003" next_previous={%Kit.Phoenix.NextPrevious{place: Kit.Phoenix.Amount.count(reader(), 12), count: Kit.Phoenix.Amount.count(reader(), 1240), previous_href: "?record=11", next_href: "?record=13"}}>
<:subject>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:standing><Kit.Phoenix.Roles.Stamp.stamp state="attention">Failed · Recipient address refused</Kit.Phoenix.Roles.Stamp.stamp></:standing>
<:presence><Kit.Phoenix.Roles.Presence.presence id="record-presence" label="Sam Okafor and Priya Shah are here" people={[
%Kit.Phoenix.Roles.Avatar.Member{person: Kit.Phoenix.Roles.Avatar.person("Sam Okafor", "SO"), doing: "Editing billing and payment"},
%Kit.Phoenix.Roles.Avatar.Member{person: Kit.Phoenix.Roles.Avatar.person("Priya Shah", "PS"), doing: "Reading"}
]} /></:presence>
<:actions><a href="../layout-record/#layout-record">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.failed(:attention, "Sending failed", "The recipient’s mail service refused the billing address, so the invoice was not delivered.")} local_tabs_id="layout-record-invoice-facets" local_tabs_label="Invoice facets" decision_actions_rest={%{id: "record-decision-actions"}}>
<:local_tabs current href="#facts" rest={%{"aria-current": "location"}}>
Invoice
</:local_tabs>
<:local_tabs href="#history">History</:local_tabs>
<:facts_related_records rest={%{id: "facts", "aria-labelledby": "invoice-title"}} heading="Oakmere Primary School invoice" heading_rest={%{id: "invoice-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Invoice</:name>
<:value><Kit.Phoenix.Identifier.identifier value="OH-INV-003" /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("1 booking")])]}>
<:name>Amount due</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "20.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hirer</:name>
<:value><a href="../list/">Oakmere Primary School</a></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Damage photo</:name>
<:value><Kit.Phoenix.Roles.Image.image id="record-damage-photo" overlay="record-damage-photo-overlay" src="../../chair-damage.svg" alt="Chair with a split seat, photographed after a hall booking." width={800} height={500} failure_words="The photo cannot be shown." /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Messages">
<:content>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.table>
<Kit.Phoenix.Table.column_headings><tr><Kit.Phoenix.Table.column kind="subject">Record</Kit.Phoenix.Table.column><Kit.Phoenix.Table.column>Message</Kit.Phoenix.Table.column><Kit.Phoenix.Table.column>Sent to</Kit.Phoenix.Table.column><Kit.Phoenix.Table.column>Delivery</Kit.Phoenix.Table.column></tr></Kit.Phoenix.Table.column_headings>
<tbody>
<tr id="payment-201">
<Kit.Phoenix.Table.cell element="th" scope="row" value={Kit.Phoenix.Table.CellValue.subject()}><a href="#payment-201">Invoice OH-INV-003</a></Kit.Phoenix.Table.cell>
<Kit.Phoenix.Table.cell value={Kit.Phoenix.Table.CellValue.content()} name="Message">Your invoice is ready</Kit.Phoenix.Table.cell>
<Kit.Phoenix.Table.cell value={Kit.Phoenix.Table.CellValue.content()} name="Sent to"><Kit.Phoenix.Email.email address="accounts.payable.finance-office@oakmereprimary.org" /></Kit.Phoenix.Table.cell>
<Kit.Phoenix.Table.cell value={Kit.Phoenix.Table.CellValue.content()} name="Delivery" supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Last tried "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-02-03]))]), Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Two attempts made")])]}><Kit.Phoenix.Roles.Stamp.stamp state="attention">Address refused</Kit.Phoenix.Roles.Stamp.stamp></Kit.Phoenix.Table.cell>
</tr>
</tbody>
</Kit.Phoenix.Table.table>
</Kit.Phoenix.Layouts.Record.rows>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Payments">
<:content>
<Kit.Phoenix.Layouts.List.list subject_state={Kit.Phoenix.State.none()} id="layout-record-payments" toolbar_rest={%{"aria-label": "Payment search and filters"}} filters_id="record-payments-filters" filters_label="Filters" filters_form_rest={%{}}>
<:search id="record-payments-search-form-group" label="Search payments" control_rest={%{id: "record-payments-search", placeholder: "Find payments by reference"}} />
<:filters><Kit.Phoenix.Layouts.List.Filter.filter id="record-payments-method-filter" name="Method">
<Kit.Phoenix.Roles.FormGroup.form_group id="record-payments-method-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()}>
<:label rest={%{for: "record-payments-method"}}>Method</:label>
<:value>
<select id="record-payments-method" name="method"><option value="" selected>Any method</option><option value="card">Card</option><option value="bank-transfer">Bank transfer</option></select>
</:value>
</Kit.Phoenix.Roles.FormGroup.form_group>
</Kit.Phoenix.Layouts.List.Filter.filter></:filters>
<:filters><Kit.Phoenix.Layouts.List.Filter.filter id="record-payments-received-filter" name="Received">
<Kit.Phoenix.Roles.FormGroup.form_group id="record-payments-received-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.select()}>
<:label rest={%{for: "record-payments-received"}}>Received</:label>
<:value>
<select id="record-payments-received" name="received"><option value="" selected>Any time</option><option value="30">Last 30 days</option><option value="90">Last 90 days</option></select>
</:value>
</Kit.Phoenix.Roles.FormGroup.form_group>
</Kit.Phoenix.Layouts.List.Filter.filter></:filters>
<:filters><Kit.Phoenix.Layouts.List.Filter.more id="record-payments-more-filters" count={%Kit.Phoenix.Roles.Count{reader: reader(), count: 0, counts: "filters", forms: %{one: "filter"}}}>
<:filter id="record-payments-method-filter" name="Method" />
<:filter id="record-payments-received-filter" name="Received" />
</Kit.Phoenix.Layouts.List.Filter.more></:filters>
<:rows rest={%{"aria-label": "Payments"}}>
<Kit.Phoenix.Table.rows_table>
<:subject_heading label="Payment" />
<:column_headings label="Received" kind="time" />
<:column_headings label="Reference" />
<:column_headings label="Amount" kind="amount" />
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-02-03]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.content(~H|<Kit.Phoenix.Identifier.identifier value="OH-INV-003-PAYMENT-2025-02-03-CARD-ENDING-4417" />|)}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "40.00")))]), supporting: [Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Part payment")])]}]}><a href="../record/">Card payment</a></:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-01-28]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.content(~H|<Kit.Phoenix.Identifier.identifier value="OH-INV-003-PAYMENT-2025-01-28-BANK-TRANSFER-0388" />|)}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "24.00")))])}]}><a href="../record/">Bank transfer</a></:row>
</Kit.Phoenix.Table.rows_table>
</:rows>
</Kit.Phoenix.Layouts.List.list>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:facts_related_records>
<:decision>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-invoice-note-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.textarea()} control_rest={%{id: "record-invoice-note", name: "invoice-note"}}><:printed_value>No note</:printed_value>
<:label rest={%{for: "record-invoice-note"}}>Note on the invoice</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.InlineConsequence.inline_consequence aria-label="Send Oakmere Primary School invoice">
<:action>{nil}</:action>
<:subject>Oakmere Primary School invoice</:subject>
<:consequence>Sending emails the £84.00 invoice to aisha@oakmereprimary.org.</:consequence>
<:effective_time>It goes as soon as you confirm.</:effective_time>
<:correction_path>You can send a corrected invoice from this record.</:correction_path>
</Kit.Phoenix.Roles.InlineConsequence.inline_consequence>
</:decision>
<:decision_refusal>
<Kit.Phoenix.Roles.Refusal.refusal id="record-send-refused">
<:line>The recipient’s mail service refused the last send. Check the billing email, then send again.</:line>
<:cause href="#record-email">Billing email</:cause>
</Kit.Phoenix.Roles.Refusal.refusal>
</:decision_refusal>
<:decision_actions><Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit">Send invoice</Kit.Phoenix.Roles.PrimaryAction.primary_action><Kit.Phoenix.Roles.SecondaryAction.secondary_action>Preview invoice</Kit.Phoenix.Roles.SecondaryAction.secondary_action><Kit.Phoenix.Roles.WayBack.way_back href="#facts">Return to invoice</Kit.Phoenix.Roles.WayBack.way_back></:decision_actions>
<:decision_compact_work rest={%{"aria-labelledby": "record-payment-title"}} heading="Billing and payment" heading_rest={%{id: "record-payment-title"}} editor={Kit.Phoenix.Roles.Avatar.person("Sam Okafor", "SO")}>
<Kit.Phoenix.Roles.LabelPanel.label_panel element="form" aria-labelledby="decision-title" heading="Billing contact" heading_rest={%{id: "decision-title"}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-contact-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:medium)}
control_rest={%{id: "record-contact", name: "name", value: "Aisha Khan"}}
><:printed_value>Aisha Khan</:printed_value>
<:label rest={%{for: "record-contact"}}>Contact name</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-email-form-group"
kind={Kit.Phoenix.Roles.FormGroup.Kind.email()}
control_rest={
%{
id: "record-email",
name: "email",
value: "aisha@oakmereprimary.org"
}
}
><:printed_value>aisha@oakmereprimary.org</:printed_value>
<:label rest={%{for: "record-email"}}>Billing email</:label>
<:help>Invoices go to this address.</:help>
</Kit.Phoenix.Roles.FormGroup.form_group>
<:actions><Kit.Phoenix.Roles.ActionGroup.action_group>
<:lead><Kit.Phoenix.Roles.PrimaryAction.primary_action>Save contact details</Kit.Phoenix.Roles.PrimaryAction.primary_action></:lead>
</Kit.Phoenix.Roles.ActionGroup.action_group></:actions>
</Kit.Phoenix.Roles.LabelPanel.label_panel>
<Kit.Phoenix.Roles.LabelPanel.label_panel aria-labelledby="settlement-title" heading="Settlement" heading_rest={%{id: "settlement-title"}}>
<Kit.Phoenix.Roles.Amount.amount value={Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "20.00"))} />
</Kit.Phoenix.Roles.LabelPanel.label_panel>
<Kit.Phoenix.Layouts.Form.form id="layout-record-form" subject_state={Kit.Phoenix.State.none()}>
<:form_groups>
<Kit.Phoenix.Roles.FormGroup.form_group id="payment-received">
<:label>Payment received on</:label>
<:control :let={binding}>
<Kit.Phoenix.Roles.DateField.date_field binding={binding} reader={reader()} name="payment_received" value={Kit.Phoenix.Roles.DateField.Committed.day(Kit.Phoenix.Time.day(reader(), ~D[2025-04-15]))} today={Kit.Phoenix.Time.day(reader(), ~D[2025-04-09])} direction={:either} />
</:control>
<:printed_value><time datetime="2025-04-15">Tuesday, 15 April 2025</time></:printed_value>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:form_groups>
<:consequence>
<Kit.Phoenix.Roles.InlineConsequence.inline_consequence aria-label="Record payment">
<:action>{nil}</:action>
<:subject>Oakmere Primary School invoice</:subject>
<:consequence>Recording this payment marks £20.00 of the invoice paid.</:consequence>
<:effective_time>It takes effect as soon as you confirm.</:effective_time>
<:correction_path>You can remove a payment recorded in error from the invoice’s payments.</:correction_path>
</Kit.Phoenix.Roles.InlineConsequence.inline_consequence>
</:consequence>
<:submit_return><Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit">Record payment</Kit.Phoenix.Roles.PrimaryAction.primary_action></:submit_return>
</Kit.Phoenix.Layouts.Form.form>
</:decision_compact_work>
<:notes_files_history rest={%{id: "history", "aria-labelledby": "history-title"}} heading="History" heading_rest={%{id: "history-title"}}>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Notes">
<:content>
<Kit.Phoenix.Roles.MessageEntry.message_entry body={%Kit.Phoenix.AuthoredText.Shown{value: %Kit.Phoenix.AuthoredText{content: [{:paragraph, [{:text, "Ask ", []}, {:mention, %Kit.Phoenix.AuthoredText.Mention{kind: :person, id: "aisha-khan", label: "Aisha Khan"}}, {:text, " to confirm the address before the next send.", []}]}]}, reader: reader(), mention_link: fn _kind, _id -> "../record/" end, file_link: fn _id -> nil end}} time={Kit.Phoenix.Time.moment(reader(), ~U[2025-02-12 10:30:00Z])}>
<:author avatar={Kit.Phoenix.Roles.Avatar.person("Maya Patel", "MP")}>Maya Patel</:author>
</Kit.Phoenix.Roles.MessageEntry.message_entry>
<Kit.Phoenix.Roles.MessageEntry.message_entry body={%Kit.Phoenix.AuthoredText.Shown{value: %Kit.Phoenix.AuthoredText{content: [{:paragraph, [{:text, "Aisha confirmed the address by phone. Send it again today.", []}]}]}, reader: reader(), mention_link: fn _kind, _id -> nil end, file_link: fn _id -> nil end}} time={Kit.Phoenix.Time.moment(reader(), ~U[2025-02-13 09:05:00Z])}>
<:author avatar={Kit.Phoenix.Roles.Avatar.person("Tom Reid", "TR", "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDk2IDk2Ij48cmVjdCB3aWR0aD0iOTYiIGhlaWdodD0iOTYiIGZpbGw9IiM4ZmE1YjYiLz48Y2lyY2xlIGN4PSI0OCIgY3k9IjM4IiByPSIxOCIgZmlsbD0iI2U4YzlhOCIvPjxwYXRoIGQ9Ik00OCA2MGMtMTcgMC0yOSAxMS0zMSAyNnYxMGg2MlY4NmMtMi0xNS0xNC0yNi0zMS0yNnoiIGZpbGw9IiMzZjVkNTIiLz48cGF0aCBkPSJNMzAgMzRjMC0xMiA4LTIwIDE4LTIwczE4IDggMTggMjBjMC02LTYtOC0xOC04cy0xOCAyLTE4IDh6IiBmaWxsPSIjNGEzYTJmIi8+PC9zdmc+")}>Tom Reid</:author>
</Kit.Phoenix.Roles.MessageEntry.message_entry>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-note-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.textarea()} control_rest={%{id: "record-note", name: "note"}}>
<:label rest={%{for: "record-note"}}>Note</:label>
<:action><Kit.Phoenix.Roles.SecondaryAction.secondary_action type="submit">Add note</Kit.Phoenix.Roles.SecondaryAction.secondary_action></:action>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Files">
<:content>
<Kit.Phoenix.Roles.Row.row>
<:subject href="../record/">Signed hire agreement</:subject>
<:facts><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-01-28])} /></:facts>
<:facts>Maya Patel</:facts>
</Kit.Phoenix.Roles.Row.row>
<Kit.Phoenix.Roles.Row.row>
<:subject href="../record/">Room check photographs</:subject>
<:facts><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-02-03])} /></:facts>
<:facts>Aisha Khan</:facts>
</Kit.Phoenix.Roles.Row.row>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-file-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.file()} control_rest={%{id: "record-file", name: "file"}}>
<:label rest={%{for: "record-file"}}>Add a file</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Changes">
<:content>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.rows_table print_form="rows">
<:subject_heading label="Change" />
<:column_headings label="From" kind="time" />
<:column_headings label="To" kind="time" />
<:column_headings label="Notified" kind="time" />
<:column_headings label="When" kind="time" />
<:column_headings label="Recorded by" />
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-03-08 09:00:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-03-15 09:00:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-02-12 10:26:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-02-12 10:24:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.content(~H"Maya Patel")}]}><a href="../record/">Session moved</a></:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-03-15 13:00:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-03-15 12:00:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-01-28 16:42:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.moment(reader(), ~U[2025-01-28 16:40:00Z]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.content(~H"Aisha Khan")}]}><a href="../record/">Session shortened</a></:row>
</Kit.Phoenix.Table.rows_table>
</Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Layouts.List.list subject_state={Kit.Phoenix.State.none()}>
<:rows rest={%{"aria-label": "Invoice history"}}>
<Kit.Phoenix.Layouts.List.day aria-labelledby="record-history-day-feb-12">
<:heading rest={%{id: "record-history-day-feb-12"}}><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-02-12])} /></:heading>
<Kit.Phoenix.Layouts.List.entry :let={subject} time={Kit.Phoenix.Time.time_of_day(reader(), ~U[2025-02-12 10:24:00Z])}>
<:subject href="#facts">Invoice OH-INV-003</:subject>
Maya Patel corrected the billing email on {subject} from wrong@oakmereprimary.org to aisha@oakmereprimary.org after the recipient’s mail service refused the earlier send.
</Kit.Phoenix.Layouts.List.entry>
</Kit.Phoenix.Layouts.List.day>
<Kit.Phoenix.Layouts.List.day aria-labelledby="record-history-day-jan-28">
<:heading rest={%{id: "record-history-day-jan-28"}}><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-01-28])} /></:heading>
<Kit.Phoenix.Layouts.List.entry :let={subject} time={Kit.Phoenix.Time.time_of_day(reader(), ~U[2025-01-28 16:40:00Z])}>
<:subject href="#facts">Invoice OH-INV-003</:subject>
Maya Patel sent {subject} to Oakmere Primary School.
</Kit.Phoenix.Layouts.List.entry>
</Kit.Phoenix.Layouts.List.day>
</:rows>
<:count_continuation><p>2 entries shown</p></:count_continuation>
</Kit.Phoenix.Layouts.List.list>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:notes_files_history>
</Kit.Phoenix.Layouts.Record.record>
<Kit.Phoenix.Roles.ImageOverlay.image_overlay id="record-damage-photo-overlay" failure_words="The photo cannot be shown." tabindex="-1" aria-labelledby="record-damage-photo-overlay-caption" open_file_href="../../chair-damage.svg" close_href="#record-damage-photo" actions_label="Damage photo" width={800} height={500} image_rest={%{src: "../../chair-damage.svg", alt: "Chair with a split seat, photographed after a hall booking."}}>
<:caption rest={%{id: "record-damage-photo-overlay-caption"}}>Split chair seat</:caption>
</Kit.Phoenix.Roles.ImageOverlay.image_overlay>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()} id="layout-record-empty-region">
<:facts_related_records rest={%{"aria-labelledby": "empty-region-invoice-title"}} heading="Oakmere Primary School invoice" heading_rest={%{id: "empty-region-invoice-title"}}>
</:facts_related_records>
<:decision_compact_work><p :if={false}>Oakmere Primary School invoice</p></:decision_compact_work>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, no-decision-or-workOpen 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" next_previous={%Kit.Phoenix.NextPrevious{place: Kit.Phoenix.Amount.count(reader(), 1), count: Kit.Phoenix.Amount.count(reader(), 240), next_href: "?record=2"}}>
<:subject>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:standing><Kit.Phoenix.Roles.Stamp.stamp state="attention">Failed · Recipient address refused</Kit.Phoenix.Roles.Stamp.stamp></:standing>
<:actions><a href="../../layout-record/#layout-record-no-decision-or-work">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.failed(:attention, "Sending failed", "The recipient’s mail service refused the billing address, so the invoice was not delivered.")}>
<:notices>
<Kit.Phoenix.Roles.Notice.notice state={Kit.Phoenix.Roles.Notice.State.settled()}>
<:standing>Reminders are paused</:standing>
<:sentence>No reminder goes out for this hirer until the account is reviewed.</:sentence>
</Kit.Phoenix.Roles.Notice.notice>
</:notices>
<:facts_related_records rest={%{"aria-labelledby": "record-no-decision-or-work-title"}} heading="Oakmere Primary School invoice" heading_rest={%{id: "record-no-decision-or-work-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("1 booking")])]}>
<:name>Amount due</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "84.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Collected</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "0.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Delivery</:name>
<:value stamp="attention">Address refused</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Messages">
<:content>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.table>
<Kit.Phoenix.Table.column_headings><tr><Kit.Phoenix.Table.column kind="subject">Record</Kit.Phoenix.Table.column><Kit.Phoenix.Table.column>Message</Kit.Phoenix.Table.column><Kit.Phoenix.Table.column>Delivery</Kit.Phoenix.Table.column></tr></Kit.Phoenix.Table.column_headings>
<tbody>
<tr>
<Kit.Phoenix.Table.cell element="th" scope="row" value={Kit.Phoenix.Table.CellValue.subject()}>Invoice OH-INV-003</Kit.Phoenix.Table.cell>
<Kit.Phoenix.Table.cell value={Kit.Phoenix.Table.CellValue.content()} name="Message">Your invoice is ready</Kit.Phoenix.Table.cell>
<Kit.Phoenix.Table.cell value={Kit.Phoenix.Table.CellValue.content()} name="Delivery" supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Last tried "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-02-03]))])]}><Kit.Phoenix.Roles.Stamp.stamp state="attention">Address refused</Kit.Phoenix.Roles.Stamp.stamp></Kit.Phoenix.Table.cell>
</tr>
</tbody>
</Kit.Phoenix.Table.table>
</Kit.Phoenix.Layouts.Record.rows>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:facts_related_records>
<:notes_files_history rest={%{"aria-labelledby": "record-no-decision-or-work-history-title"}} heading="History" heading_rest={%{id: "record-no-decision-or-work-history-title"}}>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Notes">
<:content>
<Kit.Phoenix.Roles.MessageEntry.message_entry body={%Kit.Phoenix.AuthoredText.Shown{value: %Kit.Phoenix.AuthoredText{content: [{:paragraph, [{:text, "Ask Aisha to confirm the address before the next send.", []}]}]}, reader: reader(), mention_link: fn _kind, _id -> nil end, file_link: fn _id -> nil end}} time={Kit.Phoenix.Time.moment(reader(), ~U[2025-02-12 10:30:00Z])}>
<:author avatar={Kit.Phoenix.Roles.Avatar.person("Maya Patel", "MP")}>Maya Patel</:author>
</Kit.Phoenix.Roles.MessageEntry.message_entry>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Files">
<:content>
<Kit.Phoenix.Roles.Row.row>
<:subject element="span">Signed hire agreement</:subject>
<:facts><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-01-28])} /></:facts>
<:facts>Maya Patel</:facts>
</Kit.Phoenix.Roles.Row.row>
<Kit.Phoenix.Roles.Row.row>
<:subject element="span">Room check photographs</:subject>
<:facts><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-02-03])} /></:facts>
<:facts>Aisha Khan</:facts>
</Kit.Phoenix.Roles.Row.row>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Changes">
<:content>
<Kit.Phoenix.Layouts.List.list subject_state={Kit.Phoenix.State.none()}>
<:rows rest={%{"aria-label": "Invoice history"}}>
<Kit.Phoenix.Layouts.List.day aria-labelledby="record-no-decision-or-work-day-feb-12">
<:heading rest={%{id: "record-no-decision-or-work-day-feb-12"}}><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-02-12])} /></:heading>
<Kit.Phoenix.Layouts.List.entry :let={subject} time={Kit.Phoenix.Time.time_of_day(reader(), ~U[2025-02-12 10:24:00Z])}>
<:subject href="#record-no-decision-or-work-title">Invoice OH-INV-003</:subject>
Maya Patel corrected the billing email on {subject} from wrong@oakmereprimary.org to aisha@oakmereprimary.org after the recipient’s mail service refused the earlier send.
</Kit.Phoenix.Layouts.List.entry>
</Kit.Phoenix.Layouts.List.day>
<Kit.Phoenix.Layouts.List.day aria-labelledby="record-no-decision-or-work-day-jan-28">
<:heading rest={%{id: "record-no-decision-or-work-day-jan-28"}}><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-01-28])} /></:heading>
<Kit.Phoenix.Layouts.List.entry :let={subject} time={Kit.Phoenix.Time.time_of_day(reader(), ~U[2025-01-28 16:40:00Z])}>
<:subject href="#record-no-decision-or-work-title">Invoice OH-INV-003</:subject>
Maya Patel sent {subject} to Oakmere Primary School.
</Kit.Phoenix.Layouts.List.entry>
</Kit.Phoenix.Layouts.List.day>
</:rows>
<:count_continuation><p>2 entries shown</p></:count_continuation>
</Kit.Phoenix.Layouts.List.list>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:notes_files_history>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, calendar-itemOpen 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>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-record/#layout-record-calendar-item">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()}>
<:facts_related_records rest={%{"aria-labelledby": "record-calendar-item-title"}} heading="Yoga class" heading_rest={%{id: "record-calendar-item-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Schedule</:name>
<:value><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.interval_with_day(reader(), ~U[2025-04-15 09:00:00Z], ~U[2025-04-15 11:00:00Z])} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Kind</:name>
<:value>Booking</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:facts_related_records>
<:decision_compact_work>
<Kit.Phoenix.Roles.ActionGroup.action_group><:secondary><Kit.Phoenix.Roles.SecondaryAction.secondary_action>Move</Kit.Phoenix.Roles.SecondaryAction.secondary_action></:secondary></Kit.Phoenix.Roles.ActionGroup.action_group>
</:decision_compact_work>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, unsavedOpen 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>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-record/#layout-record-unsaved">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()}>
<:facts_related_records rest={%{"aria-labelledby": "record-unsaved-title"}} heading="Oakmere Primary School" heading_rest={%{id: "record-unsaved-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Invoices for every hire go here")])]}>
<:name>Billing email</:name>
<:value><Kit.Phoenix.Email.email address="accounts@oakmereprimary.org" /></:value>
<:edit id="record-unsaved-email-edit" label="Edit billing email" editing={true} keep={%Kit.Phoenix.Keep{key: "aisha-khan/hirer/oakmere-primary/billing-email", version: "12"}} unsaved={Kit.Phoenix.State.unsaved(:attention, "Not saved")} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-unsaved-email-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="bursar@oakmereprimary.org" control_rest={%{"name" => "email"}}>
<:printed_value>bursar@oakmereprimary.org</:printed_value>
<:label>Billing email</:label>
<:help>Use the address that receives the hirer’s invoices.</:help>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:edit>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Telephone</:name>
<:value>01632 960 123</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:facts_related_records>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, shared-columnsOpen 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>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-record/#layout-record-shared-columns">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()}>
<:facts_related_records rest={%{"aria-labelledby": "record-shared-columns-title"}} heading="March statement" heading_rest={%{id: "record-shared-columns-title"}}>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.rows_table>
<:subject_heading label="Item" />
<:column_headings label="Date" kind="time" />
<:column_headings label="Amount" kind="amount" />
<:part id="record-shared-columns-ledger" />
<:part id="record-shared-columns-expected" heading="Expected charges" supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Not charged yet, so not in the balance.")])]} />
<:part id="record-shared-columns-due" heading="What’s due" />
<:part id="record-shared-columns-refunds" heading="Refunds" empty="No refunds this month." />
<:row part="record-shared-columns-ledger" facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-03-01]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "120.00")))])}]}>Opening balance</:row>
<:row part="record-shared-columns-ledger" facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-03-08]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "60.00")))])}]}><a href="../">Hall hire</a></:row>
<:row part="record-shared-columns-ledger" facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-03-12]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "-100.00")))])}]}><a href="../">Card payment</a></:row>
<:total part="record-shared-columns-ledger" facts={[nil, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "80.00")))])}]}>Balance</:total>
<:row part="record-shared-columns-expected" facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-01]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "60.00")))])}]}>Hall hire</:row>
<:row part="record-shared-columns-due" facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-09-30]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "80.00")))])}]}><a href="../">March balance</a></:row>
</Kit.Phoenix.Table.rows_table>
</Kit.Phoenix.Layouts.Record.rows>
</:facts_related_records>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, section-linksOpen 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>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-record/#layout-record-section-links">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()} section_links_label="Sections of this record">
<:section_links fragment="record-section-links-contact">Contact</:section_links>
<:section_links fragment="record-section-links-classes">Classes</:section_links>
<:section_links fragment="record-section-links-attendance">Attendance</:section_links>
<:section_links fragment="record-section-links-costumes">Costumes</:section_links>
<:section_links fragment="record-section-links-safety">Safety</:section_links>
<:facts_related_records rest={%{"aria-labelledby": "record-section-links-title"}} heading="Amara Osei" heading_rest={%{id: "record-section-links-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Age group</:name><:value>Juniors, 9 to 11</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Joined</:name><:value words={[Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2024-09-02]))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Membership</:name><:value stamp="settled">Paid to July 2027</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Contact" fragment="record-section-links-contact">
<:content>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Guardian</:name><:value>Kwame Osei</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Telephone</:name><:value>07700 900456</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Email</:name><:value><Kit.Phoenix.Email.email address="kwame.osei@example.org" /></:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Second contact</:name><:value>Efua Osei, 07700 900457</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Address</:name><:value>14 Mill Lane, Oakmere</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Preferred contact</:name><:value>Text message</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Classes" fragment="record-section-links-classes">
<:content>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Tuesday</:name><:value>Junior jazz, <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.clock_interval(reader(), ~T[16:30:00], ~T[17:30:00])} />, Studio 2</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Thursday</:name><:value>Junior ballet, <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.clock_interval(reader(), ~T[16:00:00], ~T[17:00:00])} />, Studio 1</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Saturday</:name><:value>Show troupe, <Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.clock_interval(reader(), ~T[10:00:00], ~T[12:00:00])} />, Main hall</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Teacher</:name><:value>Ines Duarte</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Term fees</:name><:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "186.00")))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Next grade exam</:name><:value words={[Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-11-21]))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Attendance" fragment="record-section-links-attendance">
<:content>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.rows_table>
<:subject_heading label="Class" />
<:column_headings label="Date" kind="time" />
<:column_headings label="Attended" />
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-08]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.text("Present")])}]}>Junior jazz</:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-10]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.text("Present")])}]}>Junior ballet</:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-12]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.text("Absent, told in advance")])}]}>Show troupe</:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-15]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.text("Present")])}]}>Junior jazz</:row>
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-17]))])}, %Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.words([Kit.Phoenix.Words.text("Present")])}]}>Junior ballet</:row>
</Kit.Phoenix.Table.rows_table>
</Kit.Phoenix.Layouts.Record.rows>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Costumes" fragment="record-section-links-costumes">
<:content>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Show troupe</:name><:value>Red jacket, size 30</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Ballet</:name><:value>Pink leotard, size 28</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Shoes</:name><:value>Jazz, size 3; ballet, size 3</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Returned</:name><:value words={[Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-07-18]))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Deposit</:name><:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "20.00")))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Fitting</:name><:value>Due before the winter show</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
<Kit.Phoenix.Roles.HeadedRegion.headed_region heading="Safety" fragment="record-section-links-safety">
<:content>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Allergies</:name><:value>Peanuts</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Medical</:name><:value>Asthma, inhaler kept in her bag</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Photographs</:name><:value>Not to be shown outside the studio</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Collected by</:name><:value>Kwame Osei or Efua Osei</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Emergency contact</:name><:value>Kwame Osei, 07700 900456</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Reviewed</:name><:value words={[Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2026-09-01]))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:content>
</Kit.Phoenix.Roles.HeadedRegion.headed_region>
</:facts_related_records>
<:decision>
<Kit.Phoenix.Roles.FormGroup.form_group id="record-section-links-note-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.textarea()} control_rest={%{id: "record-section-links-note", name: "note"}}><:printed_value>No note</:printed_value>
<:label rest={%{for: "record-section-links-note"}}>Note to the guardian</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:decision>
<:decision_actions><Kit.Phoenix.Roles.PrimaryAction.primary_action type="submit">Offer a show troupe place</Kit.Phoenix.Roles.PrimaryAction.primary_action></:decision_actions>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, 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>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:actions><a href="../../layout-record/#layout-record-inert">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()}>
<:facts_related_records rest={%{id: "record-inert-facts", "aria-labelledby": "record-inert-title"}} heading="Oakmere Primary School invoice" heading_rest={%{id: "record-inert-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Amount due</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "84.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:facts_related_records>
<:decision>
<Kit.Phoenix.Roles.InlineConsequence.inline_consequence aria-label="Send Oakmere Primary School invoice">
<:subject>Oakmere Primary School invoice</:subject>
<:consequence>Sending emails the £84.00 invoice to aisha@oakmereprimary.org.</:consequence>
<:effective_time>It goes as soon as you confirm.</:effective_time>
<:correction_path>You can send a corrected invoice from this record.</:correction_path>
</Kit.Phoenix.Roles.InlineConsequence.inline_consequence>
</:decision>
<:decision_actions action="secondary-action" action_state={Kit.Phoenix.ActionState.inert("record-inert-preview", "The preview waits until the invoice is ready.")}>Preview invoice</:decision_actions>
<:decision_actions action="primary-action" action_state={Kit.Phoenix.ActionState.inert("record-inert-send", "Check the billing email before sending.")} control_rest={%{type: "submit"}}>Send invoice</:decision_actions>
<:decision_actions><Kit.Phoenix.Roles.WayBack.way_back href="#record-inert-facts">Return to invoice</Kit.Phoenix.Roles.WayBack.way_back></:decision_actions>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
Record, issued-documentOpen 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" share="https://sahyadrihall.in/invoices/SHT-2026-27-0042.pdf" copy_link="https://sahyadrihall.in/invoices/SHT-2026-27-0042">
<:subject>Record</:subject>
<:lede words={@owner} />
<:lede words="Layout example" />
<:standing><Kit.Phoenix.Roles.Stamp.stamp state="attention">Awaiting payment</Kit.Phoenix.Roles.Stamp.stamp></:standing>
<:actions><a href="../../layout-record/#layout-record-issued-document">{@owner}</a></:actions>
<:body>
<Kit.Phoenix.Layouts.Record.record subject_state={Kit.Phoenix.State.none()}>
<:facts_related_records rest={%{"aria-labelledby": "record-issued-document-title"}} heading="Invoice SHT/2026-27/0042" heading_rest={%{id: "record-issued-document-title"}}>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Billed to</:name><:value>Kothrud Music Circle</:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Amount due</:name><:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:INR, "7080.00")))]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Due by</:name><:value><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2026-10-20])} /></:value></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
</:facts_related_records>
<:decision_compact_work>
<Kit.Phoenix.Roles.ActionGroup.action_group><:secondary><Kit.Phoenix.Roles.SecondaryAction.secondary_action>Record payment</Kit.Phoenix.Roles.SecondaryAction.secondary_action></:secondary></Kit.Phoenix.Roles.ActionGroup.action_group>
</:decision_compact_work>
<:issued_document><.bill_body id="issued-document-record" /></:issued_document>
</Kit.Phoenix.Layouts.Record.record>
</:body>
</Kit.Phoenix.Layouts.Shell.shell>
|