Components / Application
Owner
Registered proprietor identity primitives for Instant Strata. An owner is a person or entity on the strata roll who holds one or more lots, receives levy notices, and may access the owner portal. Use these elements for owner directories, correspondence, portal admin, and committee views.
Design rationale
OwnerAvatar renders a roundavatar to distinguish proprietors from square system-user avatars (managers, staff). Joint names like "James & Sarah Chen" initialise as JC, never J&.
Lots and owners are related but distinct views. LotCard is lot-centric (entitlement, proxy, unit address). OwnerRollRow is owner-centric (contact details, portal status, multiple lot holdings). Use the view that matches the task: roll reconciliation by lot, or correspondence by owner.
Owned lots are always shown via OwnerLotChips, which composes LotBadge for consistent lot references across the system.
Primitives
Owner badges compose the shared Badge primitive. OwnerRollHeader summary counts use Badge for portal and invite totals. See the Badge docs for every owner badge state.
James & Sarah Chen
Lot 12
accounts@northshoreinv.com.au · 02 9123 4567
OwnerRollRow (list)
Default owner directory row. Shows avatar, name, contact, owned lots, and optional levy status.
Owner directory
4 owners
import { OwnerList, OwnerRollHeader, OwnerRollRow } from "@/components/ui/owner"
<OwnerList
header={
<OwnerRollHeader
totalOwners={owners.length}
portalActiveCount={portalActive}
invitedCount={invited}
committeeCount={committee}
/>
}
>
{owners.map((owner) => (
<OwnerRollRow
key={owner.id}
owner={owner}
showLevyStatus
showChevron
href={`/schemes/${schemeId}/owners/${owner.id}`}
/>
))}
</OwnerList>OwnerRollRow (wide)
Tabular owner directory with contact, levy, and portal columns. Used for portal admin and correspondence audits.
Owner
Lots
Contact
Levy
Portal
James & Sarah Chen
Committeechen.family@email.com · 0412 345 678
chen.family@email.com · 0412 345 678
North Shore Investments Pty Ltd
accounts@northshoreinv.com.au · 02 9123 4567
accounts@northshoreinv.com.au · 02 9123 4567
Margaret O'Brien
mobrien@email.com
mobrien@email.com
Harbour Holdings Ltd
levies@harbourholdings.com · 02 9988 7766
levies@harbourholdings.com · 02 9988 7766
import { OwnerList, OwnerRollRow } from "@/components/ui/owner"
<OwnerList showWideHeader>
{owners.map((owner) => (
<OwnerRollRow
key={owner.id}
owner={owner}
layout="wide"
showLevyStatus
showPortalStatus
showCorrespondence
showChevron
href="#"
/>
))}
</OwnerList>OwnerCard
Profile tiles for owner admin and portal onboarding. Compact layout suits search pickers.
Lot view vs owner view
Lot roll: use Lot when the primary key is the lot number (levy calculation, proxy validation, maintenance by unit).
Owner directory: use Owner when the primary key is the proprietor (sending notices, portal invites, committee communication). Multi-lot owners appear once with OwnerLotChips.
Badges: portal, type, correspondence, and committee badges are catalogued on the Badge page.
Install
npx shadcn add https://raw.githubusercontent.com/levi-putna/elements/main/registry/owner/registry.jsonRequires the avatar, lot, and badge components.
Reference
OwnerSummary
| Prop | Type | Default | Description |
|---|---|---|---|
| id | string | - | Stable identifier for routing and API calls. |
| name | string | - | Display name of the registered proprietor. |
| type | OwnerType | - | individual | company | joint. |
| string | - | Primary email for notices and portal. | |
| phone | string | - | Contact phone number. |
| lots | OwnerLotRef[] | - | Lots owned by this proprietor. |
| levyStatus | LotLevyStatus | - | Worst-case or primary lot levy status. |
| portalStatus | OwnerPortalStatus | - | active | invited | not_registered. |
| correspondence | OwnerCorrespondenceMethod | - | email | post | portal. |
| isCommitteeMember | boolean | - | Whether the owner serves on committee. |
| schemePlan | string | - | Parent scheme plan for cross-scheme directories. |
OwnerRollRow
| Prop | Type | Default | Description |
|---|---|---|---|
| owner | OwnerSummary | - | Owner data object. |
| layout | "list" | "wide" | "list" | list = directory row. wide = table row with contact and portal columns. |
| href | string | - | When set, renders the row as a link. |
| showChevron | boolean | false | Trailing chevron for navigable rows. |
| showLevyStatus | boolean | false | Shows the levy status badge. |
| showPortalStatus | boolean | false | Shows portal registration badge (wide layout). |
| showCorrespondence | boolean | false | Shows correspondence preference (wide layout). |
| showScheme | boolean | false | Shows parent scheme plan in list layout. |
| selected | boolean | false | Highlights the row with lime-soft background. |
| actions | ReactNode | - | Custom trailing actions. |
OwnerCard
| Prop | Type | Default | Description |
|---|---|---|---|
| owner | OwnerSummary | - | Owner data object. |
| layout | "card" | "compact" | "card" | card = profile tile. compact = picker row. |
| showPortalStatus | boolean | false | Shows portal badge on card layout. |
| showCorrespondence | boolean | false | Shows correspondence badge on card layout. |