Settings topic pages: the current state, before the unified page

Every Portfolio settings topic on origin/main (f63b97f2f0d), Company tab and Property tab, plus the click-Property moment. TEST company only. Evidence for the SettingsTopicPage design, not a PR.

1 Oct 2026 · branch origin · captured against propflow-stage · at f63b97f2f0d

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · Leasing & tours, Company tab (the grid page)

The grid page: the scope tabs are the grid's header row, inside the table, under a header row that holds only the info glyph. The page is narrow (896px). Note where the tabs sit relative to the info "i" — two rows, not one.

Asserted in the captured DOM — Company · Tour length

Leasing & tours on the Company tab
Sections 2–15 and notes

2 · Leasing & tours, the moment after clicking Property (nothing picked)

Clicking the Property tab with no building picked: the grid loses its row (the table collapses to its header), the company card below is replaced by a "Pick a property" empty state, and the page re-renders through a different frame (PageBody + EmptyState instead of OrganizationSettings). This is the movement Gera described.

Asserted in the captured DOM — Pick a property

Leasing & tours right after clicking the Property tab, no building picked

3 · Leasing & tours, Property tab with a building picked

One TEST building picked. The page is now PropertySettings: a different component tree, a different set of cards under the grid, and every grid column re-read from the network (nothing is kept from the Company tab).

Asserted in the captured DOM — Tour length

Leasing & tours on the Property tab with one building

4 · Leasing & tours, Company | building (split from the Company tab, #14960)

Adding a building from the trailing "Property ▾" tab on the Company scope. The body widens from narrow to formWide (896 → 1280px) at the moment the column lands: the whole page, cards included, re-flows.

Asserted in the captured DOM — Tour length · Company

Leasing & tours comparing Company with one building

5 · Maintenance, Company tab

Maintenance on the Company tab: the grid (every company box reads "Set per property") inside CompanyTopicPage, the rating card below.

Asserted in the captured DOM — Company

Maintenance on the Company tab

6 · Maintenance, Property tab with a building picked

The same topic at a building: a different frame (PropertySettings), different cards, re-read.

Asserted in the captured DOM — Company

Maintenance on the Property tab with one building

7 · Renewals, Company tab (not on the grid yet on main; #15065 is merging)

Renewals as origin/main has it: CompanyTopicPage with the link-mode bar (SettingsScopeLinkBar) above a card. This is the header Gera calls "simpler and cleaner": one quiet row with the info glyph, the tabs on their own line under it, no table chrome around them.

Asserted in the captured DOM — Company

Renewals on the Company tab

8 · Collections, Company tab

Collections on the Company tab: three late-fee rows reading "Set per property", the follow-ups link card below, and its own ComparedColumnsSaveBar (the third save-bar variant).

Asserted in the captured DOM — Company · Set per property

Collections on the Company tab

9 · Collections, Property tab with a building picked

The building's three late-fee boxes; the same page frame as the Company tab (Collections is the one topic that already renders both scopes through CompanyTopicPage).

Asserted in the captured DOM — Late fee (percent of rent)

Collections on the Property tab with one building

10 · Calls & messages, Company tab

Calls & messages on the Company tab: the grid inside OrganizationSettings, the company's routing cards below.

Asserted in the captured DOM — Company

Calls & messages on the Company tab

11 · Calls & messages, Property tab with a building picked

The same topic at a building, through PropertySettings.

Asserted in the captured DOM — Company

Calls & messages on the Property tab with one building

12 · General, Company tab (header Gera wants everywhere)

General on origin/main: OrganizationSettings with the link-mode bar. The tabs stand alone under the quiet header row, no table around them. (#15187, merging, keeps this shape and makes the bar switch the card in place.)

Asserted in the captured DOM — Company

General on the Company tab

13 · Team, Company tab

Team: the standalone bar over the roster card, with the Invite button in the header row beside the info glyph.

Asserted in the captured DOM — Company

Team on the Company tab

14 · Onboarding & go-live, Company tab

Go-live: the standalone bar over the checklist card.

Asserted in the captured DOM — Company

Onboarding & go-live on the Company tab

15 · Phone width (390px): Leasing & tours, Company | building

How the split reads on a phone today: the grid stacks each column's cell under a caption.

Asserted in the captured DOM — Tour length

Phone width Leasing & tours comparing Company with one building

What the captures show

Five different page frames render the same topic family (OrganizationSettings, PropertySettings, CompanyTopicPage, the bare PageBody + EmptyState for "Pick a property", and the module-off notices), three save bars, and a body that changes width when a column is added. The scope tabs live inside the grid's header row on grid pages and on their own line on the others, so the info glyph and the tabs are never on the same row. Switching Company ↔ Property unmounts one frame and mounts another, and every column read starts over.

PropFlow Docs