kit

Record

Built revision v17.10.0

Phoenix
Topics

Human support

Bring a missing role, layout, or state, or a rendering against the standard, to the session working on kit. Name the package and the entry.

Record

Open 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 ·&nbsp;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-work

Open 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 ·&nbsp;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-item

Open 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, unsaved

Open 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-columns

Open 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, inert

Open 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-document

Open 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>