On Shell, Home, List, Record, Form, Stepped flow, Settings, Reports, Unavailable, Issued document
Labelled fact
Amount, Stamp, Tag and Image values keep their roles.
- Standing
- Draft
- Booking
- Cancelled
- Amount due
- £84.00
- 1 booking
- Issued
- By Maya Patel at
- Bookings
- 3
- Main Hall,
- Meeting Room,
- Main Hall, , the spring term choir rehearsal
- Hirers' rating
- 4.5 from 38 reviews
- penelope
.quintanilla .wexford@ meetingrooms .bookings .oakmereprimaryschoolhall.example
- Booking reference
BH2025021413001600MEETINGROOM00580PD198LOCKBOX0412Q7
- Correction
- Reissued with the corrected billing address as
OH-INV-2025-0003-R1
- Purchase order
- Not known
- Billing contact
- Aisha Khan
- Billing address not confirmed
- Purpose of hire
- Weekly choir rehearsal for the spring term, with the piano moved to the stage end, forty chairs set in rows facing it and the serving hatch open for tea in the interval
- Agreed with the caretaker on , on the condition that the hall is cleared by and the chairs are stacked in the store room
- Access note
Before you arrive
Ask @Aisha Khan to confirm the address for B-1042 Garden room before .
Read the hire terms first, then use4721at the gate.Bring your own chairs.
Leave the hall by ten.
Ring the bell by the side gate.
Wait for the caretaker.
- Done
Deposit paid
- Not done
Key returned
The side door sticks in the cold.
Gate: 4721 Alarm: 0990Floor plan: garden-room-plan.pdf
Send the signed form to aisha
Questions about the invoice go to penelope
Billing email edited where it stands.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
- Hirer
- Oakmere Primary School
Billing email waiting to be edited.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
- Confirm the billing contact before editing.
- Hirer
- Oakmere Primary School
Billing email being edited.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
- Hirer
- Oakmere Primary School
Billing email refused on save.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
- Hirer
- Oakmere Primary School
Billing email reopened holding a kept entry.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
- Hirer
- Oakmere Primary School
Class ages being edited, an age range chosen.
- Ages
- 5 to 11, and all older dancers
A value in words carries its Amount within the sentence.
- Deposit
- £50.00, returned once the hall is cleared
A value written across lines stands under its label, beside a sentence carrying an Amount.
- Hire fee
- £120.00
- Cleaning
- Charged at £25.00 when the kitchen is left unwashed after the hire
A Labelled fact in a records table cell keeps its sentence.
| Hire | Deposit |
|---|---|
| Oakmere WI |
|
A value given an address stands inside a link named by its label; the current one is marked.
A Labelled fact in its div form holding a note.
Leave by the side gate.
- Done
Heating off
- Not done
Gate locked
Source
<p class="specimen-case-line">Amount, Stamp, Tag and Image values keep their roles.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Amount due</:name>
<:value><Kit.Phoenix.Roles.Amount.amount value={Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "84.00"))} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Standing</:name>
<:value><Kit.Phoenix.Roles.Stamp.stamp state="neutral">Draft</Kit.Phoenix.Roles.Stamp.stamp></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Tags</:name>
<:value><Kit.Phoenix.Roles.Tag.run id="fact-tags" reader={reader()} tags={[%Kit.Phoenix.Roles.Tag{name: "Regular", colour: nil}]} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Condition photo</:name>
<:value><Kit.Phoenix.Roles.Image.image id="fact-photo" overlay="fact-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.ImageOverlay.image_overlay id="fact-photo-overlay" failure_words="The photo cannot be shown." tabindex="-1" aria-labelledby="fact-photo-overlay-caption" open_file_href="../../chair-damage.svg" close_href="#fact-photo" actions_label="Condition 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: "fact-photo-overlay-caption"}}>Split chair seat</:caption>
</Kit.Phoenix.Roles.ImageOverlay.image_overlay>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Standing</:name>
<:value stamp="neutral">Draft</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Booking</:name>
<:value stamp="settled-ended">Cancelled</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.count(reader(), 1)), Kit.Phoenix.Words.text(" 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 supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("By Maya Patel at "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.time_of_day(reader(), ~U[2025-04-03 08:12:00Z]))])]}>
<:name>Issued</:name>
<:value><Kit.Phoenix.Roles.Time.time value={Kit.Phoenix.Time.day(reader(), ~D[2025-04-03])} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[
Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Main Hall, "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-12]))]),
Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Meeting Room, "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-15]))]),
Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Main Hall, "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-19])), Kit.Phoenix.Words.text(", the spring term choir rehearsal")])
]}>
<:name>Bookings</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.count(reader(), 3))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hirers' rating</:name>
<:value><Kit.Phoenix.Roles.Rating.shown score={Kit.Phoenix.Amount.score(reader(), Decimal.new("4.5"), 1)} words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.score(reader(), Decimal.new("4.5"), 1)), Kit.Phoenix.Words.text(" from "), Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.count(reader(), 38)), Kit.Phoenix.Words.text(" reviews")]} spoken={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.score(reader(), Decimal.new("4.5"), 1)), Kit.Phoenix.Words.text(" out of "), Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.count(reader(), 5)), Kit.Phoenix.Words.text(", from "), Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.count(reader(), 38)), Kit.Phoenix.Words.text(" reviews")]} /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Email</:name>
<:value><Kit.Phoenix.Email.email address="penelope.quintanilla.wexford@meetingrooms.bookings.oakmereprimaryschoolhall.example" /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Booking reference</:name>
<:value><code>BH2025021413001600MEETINGROOM00580PD198LOCKBOX0412Q7</code></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Correction</:name>
<:value>Reissued with the corrected billing address as <Kit.Phoenix.Identifier.identifier value="OH-INV-2025-0003-R1" /></:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Purchase order</:name>
<:value>Not known</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Billing address not confirmed")])]}>
<:name>Billing contact</:name>
<:value>Aisha Khan</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("Agreed with the caretaker on "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-03-28])), Kit.Phoenix.Words.text(", on the condition that the hall is cleared by "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.clock(reader(), ~T[21:30:00])), Kit.Phoenix.Words.text(" and the chairs are stacked in the store room")])]}>
<:name>Purpose of hire</:name>
<:value>Weekly choir rehearsal for the spring term, with the piano moved to the stage end, forty chairs set in rows facing it and the serving hatch open for tea in the interval</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Access note</:name>
<:authored_text text={%Kit.Phoenix.AuthoredText.Shown{value: %Kit.Phoenix.AuthoredText{content: [ {:heading, [{:text, "Before you arrive", []}]}, {:paragraph, [{:text, "Ask ", []}, {:mention, %Kit.Phoenix.AuthoredText.Mention{kind: :person, id: "aisha-khan", label: "Aisha Khan"}}, {:text, " to confirm ", []}, {:text, "the address", [:bold]}, {:text, " for ", []}, {:mention, %Kit.Phoenix.AuthoredText.Mention{kind: :subject, id: "b-1042", label: "B-1042 Garden room"}}, {:text, " before ", []}, {:date, ~D[2025-03-14]}, {:text, ".", []}, :hard_break, {:text, "Read the ", []}, {:text, "hire terms", [{:link, "https://example.com/hire-terms"}]}, {:text, " first, ", []}, {:text, "then", [:italic]}, {:text, " use ", []}, {:text, "4721", [:code]}, {:text, " at the gate.", []}]}, {:bullet_list, [[{:paragraph, [{:text, "Bring your own chairs.", []}]}], [{:paragraph, [{:text, "Leave the hall by ten.", []}]}]]}, {:ordered_list, [[{:paragraph, [{:text, "Ring the bell by the side gate.", []}]}], [{:paragraph, [{:text, "Wait for the caretaker.", []}]}]]}, {:task_list, [{true, [{:paragraph, [{:text, "Deposit paid", []}]}]}, {false, [{:paragraph, [{:text, "Key returned", []}]}]}]}, {:blockquote, [{:paragraph, [{:text, "The side door sticks in the cold.", []}]}]}, {:code_block, "Gate: 4721\nAlarm: 0990"}, {:paragraph, [{:text, "Floor plan: ", []}, {:file, %Kit.Phoenix.AuthoredText.File{id: "floor-plan", name: "garden-room-plan.pdf"}}]} ]}, reader: reader(), mention_link: fn :person, _id -> "#role-labelled-fact"; :subject, _id -> nil end, file_link: fn _id -> "#role-labelled-fact" end}} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p>Send the signed form to <Kit.Phoenix.Email.email address="aisha.khan@oakmereprimaryschool.example" />, and the hall confirms the booking.</p>
<p>Questions about the invoice go to <a href="mailto:penelope.quintanilla.wexford@meetingrooms.bookings.oakmereprimaryschoolhall.example"><Kit.Phoenix.Email.email address="penelope.quintanilla.wexford@meetingrooms.bookings.oakmereprimaryschoolhall.example" /></a>, who answers within two days.</p>
<p>Billing email edited where it stands.</p>
<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="billing-email-edit" label="Edit billing email" editing={false} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="billing-email-edit-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="accounts@oakmereprimary.org" control_rest={%{"name" => "email"}}>
<:printed_value>accounts@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>Hirer</:name>
<:value>Oakmere Primary School</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">Billing email waiting to be edited.</p>
<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 state={Kit.Phoenix.ActionState.inert("billing-email-inert-action", "Confirm the billing contact before editing.")} id="billing-email-inert" label="Edit billing email" editing={false} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="billing-email-inert-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="accounts@oakmereprimary.org" control_rest={%{"name" => "email"}}>
<:printed_value>accounts@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>Hirer</:name>
<:value>Oakmere Primary School</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p>Billing email being edited.</p>
<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="billing-email-editing" label="Edit billing email" editing={true} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="billing-email-editing-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="accounts@oakmereprimary.org" control_rest={%{"name" => "email"}}>
<:printed_value>accounts@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>Hirer</:name>
<:value>Oakmere Primary School</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p>Billing email refused on save.</p>
<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="billing-email-refused" label="Edit billing email" editing={true} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="billing-email-refused-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="accounts@" control_rest={%{"name" => "email"}}>
<:printed_value>accounts@</:printed_value>
<:label>Billing email</:label>
<:help>Use the address that receives the hirer’s invoices.</:help>
<:error>Enter a complete billing email, such as aisha@oakmereprimary.org.</:error>
</Kit.Phoenix.Roles.FormGroup.form_group>
</:edit>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hirer</:name>
<:value>Oakmere Primary School</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p>Billing email reopened holding a kept entry.</p>
<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="billing-email-kept" 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="billing-email-kept-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>Hirer</:name>
<:value>Oakmere Primary School</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p>Class ages being edited, an age range chosen.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Ages</:name>
<:value>5 to 11, and all older dancers</:value>
<:edit id="class-ages-editing" label="Edit ages" editing={true} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.SelectionControl.radio_group id="class-ages-editing-group">
<:legend>Ages</:legend>
<:choice kind={:radio} control_rest={%{name: "class-ages", value: "all"}} printed_value="Not chosen">All ages</:choice>
<:choice kind={:radio} control_rest={%{name: "class-ages", value: "range"}} checked printed_value="Chosen">An age range</:choice>
<:choice kind={:radio} control_rest={%{name: "class-ages", value: "audition"}} printed_value="Not chosen">By audition</:choice>
<:fields choice="range">
<Kit.Phoenix.Roles.FormGroup.form_group id="class-ages-editing-youngest-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "class-ages-editing-youngest", name: "youngest-age", inputmode: "numeric", value: "5"}}>
<:printed_value>5</:printed_value>
<:label rest={%{for: "class-ages-editing-youngest"}}>Youngest age</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.FormGroup.form_group id="class-ages-editing-oldest-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.text(:narrow)} control_rest={%{id: "class-ages-editing-oldest", name: "oldest-age", inputmode: "numeric", value: "11"}}>
<:printed_value>11</:printed_value>
<:label rest={%{for: "class-ages-editing-oldest"}}>Oldest age</:label>
</Kit.Phoenix.Roles.FormGroup.form_group>
<Kit.Phoenix.Roles.SelectionControl.group id="class-ages-editing-older">
<:choice kind={:checkbox} control_rest={%{name: "include-older", value: "true"}} checked printed_value="Included">Include all older dancers</:choice>
</Kit.Phoenix.Roles.SelectionControl.group>
</:fields>
</Kit.Phoenix.Roles.SelectionControl.radio_group>
</:edit>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">A value in words carries its Amount within the sentence.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Deposit</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "50.00"))), Kit.Phoenix.Words.text(", returned once the hall is cleared")]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">A value written across lines stands under its label, beside a sentence carrying an Amount.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Hire fee</:name>
<:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "120.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Cleaning</:name>
<:value words={[
Kit.Phoenix.Words.text("Charged at "),
Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "25.00"))),
Kit.Phoenix.Words.text(" when the kitchen is left unwashed after the hire")
]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">A Labelled fact in a records table cell keeps its sentence.</p>
<Kit.Phoenix.Layouts.Record.rows>
<Kit.Phoenix.Table.rows_table>
<:caption>Deposits</:caption>
<:subject_heading label="Hire" />
<:column_headings label="Deposit" />
<:row facts={[%Kit.Phoenix.Table.FactCell{content: Kit.Phoenix.Table.Fact.content(~H"""
<Kit.Phoenix.Roles.LabelledFact.labelled_fact><:name>Kept</:name><:value words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "20.00"))), Kit.Phoenix.Words.text(" for cleaning the kitchen")]} /></Kit.Phoenix.Roles.LabelledFact.labelled_fact>
""")}]}><a href="../../record/">Oakmere WI</a></:row>
</Kit.Phoenix.Table.rows_table>
</Kit.Phoenix.Layouts.Record.rows>
<p class="specimen-case-line">A value given an address stands inside a link named by its label; the current one is marked.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Invoiced</:name>
<:value id="fact-invoiced" href="?measure=invoiced" current words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "2096.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Collected</:name>
<:value id="fact-collected" href="?measure=collected" words={[Kit.Phoenix.Words.amount(Kit.Phoenix.Amount.money(reader(), Money.new(:GBP, "1640.00")))]} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact>
<:name>Deposit</:name>
<:value id="fact-deposit" href="?view=deposit" stamp="attention">Unpaid</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">A Labelled fact in its div form holding a note.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact element="div">
<:name>Closing up</:name>
<:authored_text text={%Kit.Phoenix.AuthoredText.Shown{value: %Kit.Phoenix.AuthoredText{content: [{:paragraph, [{:text, "Leave by the side gate.", []}]}, {:task_list, [{true, [{:paragraph, [{:text, "Heating off", []}]}]}, {false, [{:paragraph, [{:text, "Gate locked", []}]}]}]}]}, reader: reader(), mention_link: fn _kind, _id -> nil end, file_link: fn _id -> nil end}} />
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
Labelled fact, failed
- Standing
- Cancelled
- By Maya Patel on
This meeting was not reinstated: the connection dropped before it saved.
With Try again unavailable.
- Standing
- Cancelled
- By Maya Patel on
This meeting was not reinstated: the connection dropped before it saved.
Try again once you are back online.
With the edit open.
- Billing email
- accounts@
oakmereprimary.org - Invoices for every hire go here
Billing email was not changed to finance@oakmereprimary.org: the connection dropped before it saved.
Source
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("By Maya Patel on "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-18]))])]} standing={Kit.Phoenix.Roles.LabelledFact.Standing.failed("This meeting was not reinstated: the connection dropped before it saved.", %{})}>
<:name>Standing</:name>
<:value stamp="settled">Cancelled</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">With Try again unavailable.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact supporting={[Kit.Phoenix.Supporting.line([Kit.Phoenix.Words.text("By Maya Patel on "), Kit.Phoenix.Words.time(Kit.Phoenix.Time.day(reader(), ~D[2025-04-18]))])]} standing={Kit.Phoenix.Roles.LabelledFact.Standing.failed("This meeting was not reinstated: the connection dropped before it saved.", %{}, Kit.Phoenix.ActionState.inert("role-labelled-fact-failed-try-again", "Try again once you are back online."))}>
<:name>Standing</:name>
<:value stamp="settled">Cancelled</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">With the edit open.</p>
<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")])]} standing={Kit.Phoenix.Roles.LabelledFact.Standing.failed("Billing email was not changed to finance@oakmereprimary.org: the connection dropped before it saved.", %{})}>
<:name>Billing email</:name>
<:value><Kit.Phoenix.Email.email address="accounts@oakmereprimary.org" /></:value>
<:edit id="role-labelled-fact-failed-editing" label="Edit billing email" editing={true} on_edit={%Phoenix.LiveView.JS{}} on_cancel={%Phoenix.LiveView.JS{}} on_save={%Phoenix.LiveView.JS{}}>
<Kit.Phoenix.Roles.FormGroup.form_group id="role-labelled-fact-failed-editing-form-group" kind={Kit.Phoenix.Roles.FormGroup.Kind.email()} control_value="finance@oakmereprimary.org" control_rest={%{"name" => "email"}}>
<:printed_value>finance@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.FactGroup.fact_group>
Labelled fact, conflict
- Room
- Garden Room
Maya Patel moved this meeting to the Garden Room while you were moving it to the Main Hall.
With the action unavailable.
- Room
- Garden Room
Maya Patel moved this meeting to the Garden Room while you were moving it to the Main Hall.
The Main Hall is taken at that time.
Source
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact standing={Kit.Phoenix.Roles.LabelledFact.Standing.conflict("Maya Patel moved this meeting to the Garden Room while you were moving it to the Main Hall.", "Move it to the Main Hall", %{})}>
<:name>Room</:name>
<:value>Garden Room</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
<p class="specimen-case-line">With the action unavailable.</p>
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact standing={Kit.Phoenix.Roles.LabelledFact.Standing.conflict("Maya Patel moved this meeting to the Garden Room while you were moving it to the Main Hall.", "Move it to the Main Hall", %{}, Kit.Phoenix.ActionState.inert("role-labelled-fact-conflict-action", "The Main Hall is taken at that time."))}>
<:name>Room</:name>
<:value>Garden Room</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>
Labelled fact, processing
- Standing
- Scheduled
Reinstating this meeting…
Source
<Kit.Phoenix.Roles.FactGroup.fact_group>
<Kit.Phoenix.Roles.LabelledFact.labelled_fact standing={Kit.Phoenix.Roles.LabelledFact.Standing.processing("Reinstating this meeting…")}>
<:name>Standing</:name>
<:value stamp="settled">Scheduled</:value>
</Kit.Phoenix.Roles.LabelledFact.labelled_fact>
</Kit.Phoenix.Roles.FactGroup.fact_group>