Console rail
2×Source: src/app/composition/_blocks/console-rail.tsx
The 240px rail beside its page: account switcher, the five destinations with ink-only active state, the ledger's saved views, and the four books with their counts.
The chrome a console wears on every page: the rail and the topbar it becomes, the header that belongs to the page, the page heading and its tabs, the third column for one record, and how the whole thing folds to a thumb.
8 built · 8 declared
Source: src/app/composition/_blocks/console-rail.tsx
The 240px rail beside its page: account switcher, the five destinations with ink-only active state, the ledger's saved views, and the four books with their counts.
Source: src/app/composition/_blocks/topbar-nav.tsx
The railless pose: the workspace on the left edge, the five destinations as tabs marked on the bar's own hairline, and the search, bell and avatar closing the row — dropping to a second row that scrolls sideways when the labels stop fitting.
Source: src/app/composition/_blocks/page-heading-tabs.tsx
12 people can sign in to Harlow & Pike. 2 of them can change payout accounts.
A brand-ink back link, a 28/700 title with its scope badge, and line tabs with counts that own the hairline under them.
Source: src/app/composition/_blocks/context-header.tsx
The header that belongs to the page rather than the window: the rail runs floor to ceiling, and one rule carries the book being read, the destination on the column's centre line, and the console's utilities.
Source: src/app/composition/_blocks/command-palette.tsx
Pick a result — the palette stays open on the canvas.
Search results grouped as entries, clients, settings and actions — entries carry amount and state — with keyboard hints in the footer.
Source: src/app/composition/_blocks/record-inspector.tsx
A third column for reading one entry without leaving the list: its title row at header height, its own scroller, a step to --muted behind one rule, and the fold-away that keeps the page over 700px.
Source: src/app/composition/_blocks/mobile-tab-bar.tsx
3 entries need a receipt
Operating book
Harlow & Pike paid
Today, 10:38
Monthly close is due
In 4 days
The console at 390px: workspace, search and alerts in the top strip, the five destinations as a 44px bottom tab bar.
Source: src/app/composition/_blocks/mobile-nav-sheet.tsx
The fifth tab is a door, not a destination: it opens a sheet from the phone's own bottom edge with what the bar could not take, the doorways a desktop hides behind the avatar, and New entry in the footer.
Rows of entries with filter groups, segments, counts, bulk selection and actions that stay out of the way.
7 built · 7 declared
Source: src/app/composition/_blocks/members-table.tsx
Checkbox column with indeterminate select-all, You/Owner badges, a row menu and a results caption.
Source: src/app/composition/_blocks/entry-ledger.tsx
Entries with drafted/open/cleared/reversed badges, right-aligned amounts with currency, and a USD-only totals footer.
Source: src/app/composition/_blocks/segment-filter-toolbar.tsx
Client access
Clients can see their own entries and receipts. Nothing else in the book.
Viewing 5 of 13 results
Access card, four segment cards with counts, dashed filter groups and Export/New client, all filtering the rows below.
Source: src/app/composition/_blocks/bulk-selection-bar.tsx
2 selected · $4,596.20 USD
Selecting rows swaps the toolbar for a count, sum and actions in the same slot; Mark cleared leaves an Undo.
Source: src/app/composition/_blocks/saved-views.tsx
Rail-style list of personal and shared views with counts; active view in brand ink.
Source: src/app/composition/_blocks/filtered-empty-table.tsx
| Entry | Client | Status | Amount |
|---|---|---|---|
No entries match these filters 2 filters are narrowing 7 entries down to none. | |||
Header stays put, the empty state names the filters that caused it, and Clear filters brings the rows back.
Source: src/app/composition/_blocks/client-directory.tsx
Clients with avatars, email line, open balance and a working pager with the range in words.
Fields at 28px with a ring edge, definition-list settings rows, and one committing action per section.
9 built · 9 declared
Source: src/app/composition/_blocks/settings-section.tsx
How you appear to members and on the receipts you send.
Sign in with a fingerprint, a face scan or a hardware key instead of a code.
A 20/700 section with one Edit, definition rows on a 200px label column, unset values as outline buttons, and an inline edit mode.
Source: src/app/composition/_blocks/profile-dialog-form.tsx
Edit profile at dialog size over a dimmed page: required-name error under the field, More options folded, Save off until something changed.
Source: src/app/composition/_blocks/alerts-matrix.tsx
Events down the side, channels across the top; column toggles show some as a dash, and required alerts stay visible, locked and explained.
Source: src/app/composition/_blocks/payout-account-form.tsx
Holder, country, routing and a twice-typed account number in mono, each error in numbers, account-type tiles, and Save gated with the reason beside it.
Source: src/app/composition/_blocks/invite-members-form.tsx
Email chips with a bad address marked in words, one role with its description, and a seat count that warns before the batch goes over.
Source: src/app/composition/_blocks/workspace-address-form.tsx
Legal entity and address fields in responsive columns beside a receipt preview that updates as you type.
Source: src/app/composition/_blocks/regional-preferences.tsx
Language, time zone and week-start preferences beside a deterministic formatting preview; save and discard operate on a local draft.
Source: src/app/composition/_blocks/notification-routing.tsx
Per-topic delivery pace, quiet hours, a daily-digest preset and a live delivery summary; security notices remain required.
Source: src/app/composition/_blocks/danger-zone.tsx
These can’t be undone.
Transfer ownership
Hand the workspace to another admin. You stay on as an admin.
Delete test data
Removes every entry in Test books. Live books are not touched.
Close workspace
Stops all clients from paying Harlow & Pike and signs every member out.
Irreversible actions kept apart; Close workspace lists what it will do in numbers and unlocks only when the handle is typed exactly.
Recovery routes, device sessions, temporary permissions, connected services and a readable history. Every decision exposes its scope and consequence before you act.
5 built · 5 declared
Source: src/app/composition/_blocks/sign-in-safeguards.tsx
A readiness checklist beside an independent recovery route, with validated local enrollment and an explicit no-message-sent outcome.
Source: src/app/composition/_blocks/device-access.tsx
The current device stays protected while other sessions expose their details; ending one or all requires confirmation and leaves the ended rows visible.
Source: src/app/composition/_blocks/service-permissions.tsx
Connected services disclose their owner, exact permissions and what will stop before disconnecting; local reconnection restores the preview.
Source: src/app/composition/_blocks/access-review.tsx
A request queue beside its reason, included and excluded permissions and expiry. Approve or decline locally, then undo without losing the request.
Source: src/app/composition/_blocks/change-history.tsx
Searchable, category-filtered events grouped by date. Expand an event to compare before and after, with actor, origin and reference preserved.
Things that float: dialogs, menus, popovers, sheets and the getting-started checklist.
6 built · 6 declared
Source: src/app/composition/_blocks/new-client-dialog.tsx
A two-column client form in a dialog whose body scrolls under a fixed footer; posed open over Clients, and New client opens the real dialog and adds the row.
Source: src/app/composition/_blocks/row-actions-menu.tsx
| Entry | Amount | Actions |
|---|---|---|
| ENT-2041 | $4,210.00Open | |
| ENT-2040 | $640.00Cleared | |
| ENT-2039 | $1,180.50Drafted | |
| ENT-2038 | $12,400.00Cleared | |
| ENT-2037 | $96.00Reversed | |
| ENT-2036 | $2,750.00Cleared |
Viewing 6 of 214 entries
The trailing … on a ledger row, posed open with its Move to book submenu; every row opens the real menu, and move, duplicate and reverse change the row.
Source: src/app/composition/_blocks/reversal-confirm.tsx
An alert dialog that names the entry, the amount and where the money goes, with the destructive action spelling out the sum.
Source: src/app/composition/_blocks/entry-detail-sheet.tsx
A right-hand sheet with amount, facts, lifecycle history and a pinned footer; any entry ID opens the real sheet for that row.
Source: src/app/composition/_blocks/filter-popover.tsx
| Entry | Amount | Status |
|---|---|---|
| ENT-2041 | $4,210.00 | Open |
| ENT-2039 | $1,180.50 | Drafted |
| ENT-2038 | $12,400.00 | Cleared |
| ENT-2036 | $2,750.00 | Cleared |
| ENT-2033 | $8,900.00 | Reversed |
Viewing 5 of 8 entries
A dashed group per unfiltered field, a brand-ink value chip for an active one; field, operator and value, and Apply filters the rows below.
Source: src/app/composition/_blocks/workspace-switcher-menu.tsx
The rail's top control posed open with each workspace, the current one ticked; choosing one renames the rail.
Setup indexes, banners, toasts, empty and loading states, and the case where nothing works.
7 built · 7 declared
Source: src/app/composition/_blocks/getting-started-checklist.tsx
Up next: Link a bank account
An in-flow setup index with a completion count, numbered steps and real destinations. Expand or hide the steps without covering the work.
Source: src/app/composition/_blocks/entry-toasts.tsx
Cleared, reversed and export-ready toasts stacked where they land; the toolbar sends them through the real toaster, and the export resolves from a loading toast.
Source: src/app/composition/_blocks/reversal-banner.tsx
| Entry | Amount | Status |
|---|---|---|
| ENT-2041 | $4,210.00 | Open |
| ENT-2040 | $640.00 | Cleared |
| ENT-2039 | $1,180.50 | Drafted |
| ENT-2038 | $12,400.00 | Cleared |
| ENT-2037 | $96.00 | Reversed |
| ENT-2036 | $2,750.00 | Cleared |
Viewing 6 of 214 entries
A warning that counts reversed entries and filters the list to them, and a deadline banner that names its fix; both dismissible.
Source: src/app/composition/_blocks/empty-states.tsx
No clients yet gets New client; a filter that matched nothing names its filters and gets Clear filters. Both recover in place.
Source: src/app/composition/_blocks/ledger-loading.tsx
| Entry | Amount | Status |
|---|---|---|
A metric and a table holding their final shape while loading — labels and headers stay real, rows keep their height; toggle states or Refresh.
Source: src/app/composition/_blocks/server-error-panel.tsx
Something failed on our side while reading the Operating book. Nothing you entered was lost, and no entry changed state.
ERR-5F2A-91C0Today, 10:38The ledger failed to load: plain words, nothing lost, Try again and Back to Desk, and a reference to copy; it loads on the third try.
Source: src/app/composition/_blocks/access-denied.tsx
Only Owners and Admins can see or change where Harlow & Pike is paid. You're a Viewer in this workspace.
Optional. Sent with your request.
Which page, why, and who can grant access, with an optional note; Ask for access confirms in place and can be withdrawn.
An assistant that proposes rather than acts, shows its work, and leaves every answer as a draft with a way back.
7 built · 7 declared
Source: src/app/composition/_blocks/ai-assistant-thread.tsx
Operating book · Harlow & Pike
A thread about one book: the steps it took (a failed one stays listed), citations that name entries, and a proposed change handed back for review with an undo.
Source: src/app/composition/_blocks/ai-prompt-composer.tsx
Removable context chips, attachments with a retry, and an Answer only / Propose changes switch that sets what the assistant may do.
Source: src/app/composition/_blocks/ai-proposed-changes.tsx
Drafted by the assistant at 10:38 from your question. Nothing is saved until you apply.
Before and after per field with the reason for each; accept row by row, apply, then undo.
Source: src/app/composition/_blocks/ai-run-trace.tsx
Started by Priya Raman, Today 10:36 · 5 steps
file: march-bank-export (preparing) → The export is not ready yet. Not retried.
Each step with its tool, timing and output; a failed step stays in the list and retrying adds a new step.
Source: src/app/composition/_blocks/ai-citations.tsx
Answered Today, 10:52 · read 4 entries in Operating book
Two clients, $6,840.00 in total. Oakfield Dental owes the most, $3,900.00 across two invoices. Mara Lindqvist’s $2,940.00 has been open 41 days. Pinecrest Studio was reversed yesterday and no longer counts.
Numbered citations that name the entry and open its row in place, including the reversed entry the answer left out.
Source: src/app/composition/_blocks/ai-starter-prompts.tsx
The assistant reads this book and proposes changes. It never writes on its own.
Starters grouped into read-only and proposes-changes; picking one fills the field for editing instead of sending it.
Source: src/app/composition/_blocks/ai-usage-meter.tsx
Cycle resets 18 Sep
At this pace you reach about 1,930 by 18 Sep. At 2,000, answers pause; proposals already drafted stay open.
Runs against the limit with a projection from the pace so far, a breakdown, and failed steps listed but not counted.
Numbers that hold still: metric tiles, a line with a readout, and comparisons that say what changed.
7 built · 7 declared
Source: src/app/composition/_blocks/metric-tiles.tsx
8–14 Sep · compared with 1–7 Sep
Four tiles with unit, signed delta and the previous value; fewer reversals reads green.
Source: src/app/composition/_blocks/today-metric.tsx
$7,500.67
Today, 10:38
$21,184.40
Whole day
Metric and comparison pickers, a tabular total, and a brand line to now with a dotted continuation.
Source: src/app/composition/_blocks/overview-chart-grid.tsx
$45,003.00
+9.2%$41,226.00 previous period
29 clients
+16.0%25 clients previous period
1.5%
−18.4%1.8% previous period
Updated Today, 10:38
Section title, filter groups (range, book, compare) and chart cards that redraw together.
Source: src/app/composition/_blocks/period-comparison.tsx
Cleared volume · all books · USD
| Measure | September |
|---|---|
| Cleared volume | $161,260.00Aug $154,150.00+4.6% |
| Entries cleared | 412Aug 389+5.9% |
| Average entry | $391.41Aug $396.27−1.2% |
| Reversed | 9Aug 14−35.7% |
Weekly bars this month against last, with exact figures and signed changes in a table.
Source: src/app/composition/_blocks/balance-breakdown.tsx
As of Today, 10:38 · USD
$115,090.00
Three states stacked per book; reserved-for-tax shown as its own facet, with totals per series.
Source: src/app/composition/_blocks/cohort-heatmap.tsx
Share of clients still sending entries, by month since they signed
Mar 202642 clients
Apr 202638 clients
May 202651 clients
Jun 202647 clients
Jul 202655 clients
Aug 202660 clients
| Cohort | Clients | Month 0 | Month 1 | Month 2 | Month 3 | Month 4 | Month 5 |
|---|---|---|---|---|---|---|---|
| Mar 2026 | 42 | 100% | 88% | 79% | 74% | 71% | 69% |
| Apr 2026 | 38 | 100% | 91% | 83% | 77% | 72% | Not yet |
| May 2026 | 51 | 100% | 86% | 76% | 70% | Not yet | Not yet |
| Jun 2026 | 47 | 100% | 89% | 81% | Not yet | Not yet | Not yet |
| Jul 2026 | 55 | 100% | 92% | Not yet | Not yet | Not yet | Not yet |
| Aug 2026 | 60 | 100% | Not yet | Not yet | Not yet | Not yet | Not yet |
Sequential-ramp cells that print their value, blank future months, and a labelled scale.
Source: src/app/composition/_blocks/sparkline-list.tsx
Last 14 days · this week against last
Per-book sparkline with total and a signed week-on-week change.
Entries, invoices, payout accounts and plans — amounts tabular, currencies explicit, totals derived.
7 built · 7 declared
Source: src/app/composition/_blocks/money-invoice-summary.tsx
Noor Adeyemi · Adeyemi Studio · due Mon 30 Mar
Derived from 3 lines. Tax applies to 2 of them; edit a quantity and every figure follows.
Line items with editable quantities; discount, tax and total are calculated from the lines and refuse to guess on bad input.
Source: src/app/composition/_blocks/money-entry-timeline.tsx
Entry ENT-2038
February hours invoice
Drafted12 Mar, 09:02
Priya Raman
Created from invoice INV-0398
Open12 Mar, 09:15
Sent to accounts@oakfield.dental
Card ending 4242 authorised for $4,210.00
Cleared14 Mar, 16:40
Arrived in Harbor Mutual ···· 4821
Fee $122.39 · net $4,087.61
Not reversed · reversible until 12 Jun
Amount, status and facts for one entry, with a drafted → open → cleared timeline and the reversal it hasn't had yet.
Source: src/app/composition/_blocks/money-payout-accounts.tsx
Where cleared entries land. One default per currency; a new account holds funds until it is verified.
Accounts with a default per currency, verification states in words, a row menu, and undo on remove.
Source: src/app/composition/_blocks/money-plan-usage.tsx
$49.00 a month · renews 1 Oct
$0.02 per entry past the limit
$12.00 per seat past the limit
84% used · $0.05 per run past the limit
$0.01 per file past the limit
Next invoice $49.00 · plan $49.00 + $0.00 past limits
Allowance meters with the price past each limit, next invoice calculated from them, and a monthly/yearly preview.
Source: src/app/composition/_blocks/money-receipt.tsx
Paid to Harlow & Pike
Receipt RCP-3317 · Today, 10:38
Paid amount first, then method, a link to the entry, lines, tax and total paid.
Source: src/app/composition/_blocks/money-reversal-form.tsx
Oakfield Dental · cleared 14 Mar
Full or partial reversal checked against what's left, a required reason, a client email toggle, and cancel after submitting.
Source: src/app/composition/_blocks/money-currency-funds.tsx
About $68,116.32 available across 4 currencies · rates from Today, 10:30
Available
$48,210.40
$2,140.00 on the way · clears by Thu
Available
€12,044.00
Nothing on the way
Available
£3,180.25
£450.00 on the way · clears Mon
Available
¥412,000
Nothing on the way
One tile per currency with available and on-the-way amounts, weekly change, account status, and a switch to show everything in USD.