Elements

Components / Application

Lot

Strata lot identity primitives for Instant Strata. A lot is an entry on the strata roll within a scheme: it has a number, unit entitlement, registered owner, levy status, and proxy eligibility. Use these elements on owner rolls, levy notices, AGM proxy validation, and complaint registers.

Design rationale

Lots are the atomic unit of strata operations. Levy calculations, proxy validation, breach notices, and maintenance requests all resolve to a lot number. The LotSummary type is the shared contract, nested under a scheme via schemePlan when shown in cross-scheme views.

LotBadge is the canonical compact identifier. Use it inline in correspondence, AI entity tags, and table cells. Full rows use LotCard with the layout that matches the container width, matching the Document and Scheme patterns.

Primitives

Compose these in custom layouts, levy notices, and inline references. All lot badges compose Badge. LotRollHeader summary counts use Badge directly. See the Badge docs for every levy and proxy state.

LotBadge, LotLevyBadge, LotProxyBadge, LotIdentity
Lot 12Lot 14Lot 22
PaidDueOverdue
Proxy eligibleIneligible

Lot 12 · Unit 12

James & Sarah Chen

Alex Rivera · Unit 14 · 14/100 Harbour St · SP 1042 · UE 85 · Agent: Coastal Realty

List layout

Default strata roll row. Pair with LotRollHeader for summary counts.

tsx
import { LotCard, LotList, LotRollHeader } from "@/components/ui/lot"

<LotList
  header={
    <LotRollHeader
      totalLots={lots.length}
      paidCount={paid}
      dueCount={due}
      overdueCount={overdue}
    />
  }
>
  {lots.map((lot) => (
    <LotCard
      key={lot.id}
      lot={lot}
      layout="list"
      showLevyStatus
      showChevron
      href={`/schemes/${schemeId}/lots/${lot.id}`}
    />
  ))}
</LotList>

Wide layout

Full strata roll table with entitlement, levy, and proxy columns. Used for AGM proxy validation and committee review.

tsx
import { LotCard, LotList } from "@/components/ui/lot"

<LotList showWideHeader>
  {lots.map((lot) => (
    <LotCard
      key={lot.id}
      lot={lot}
      layout="wide"
      showLevyStatus
      showProxyStatus
      showChevron
      href="#"
    />
  ))}
</LotList>

Card and compact layouts

Card tiles for lot pickers (e.g. maintenance requests). Compact rows for dropdowns and search results.

Cross-scheme lists

When listing lots across a portfolio, pass showScheme to surface the parent plan number.

Related patterns

Scheme context: show SchemeContextBar above lot roll pages. Use LotRollHeader for roll-specific counts beneath it.

Owner directory: use the Owner component for proprietor-centric views with contact details and portal status.

Badges: LotBadge, LotLevyBadge, and LotProxyBadge are documented with every state on the Badge page.

Inline references: use LotBadge in correspondence and AI drafts where a full card is too heavy.

Install

tsx
npx shadcn add https://raw.githubusercontent.com/levi-putna/elements/main/registry/lot/registry.json

Requires the badge component.

Reference

LotSummary

PropTypeDefaultDescription
idstring-Stable identifier for routing and API calls.
numberstring | number-Lot number, e.g. 12 or "Lot 12". Normalised by formatLotNumber.
unitstring-Unit label when different from lot number, e.g. Unit 4B.
addressstring-Unit address within the building.
entitlementnumber-Unit entitlement for levy calculations.
ownerNamestring-Registered owner display name.
tenantNamestring-Current tenant when tenanted.
levyStatusLotLevyStatus-paid | due | overdue | not_assessed.
occupancyLotOccupancy-owner_occupied | tenanted | vacant.
proxyEligibleboolean-Whether the lot may lodge an AGM proxy.
schemePlanstring-Parent scheme plan for cross-scheme lists.

LotCard

PropTypeDefaultDescription
lotLotSummary-Lot data object.
layout"list" | "card" | "compact" | "wide""list"list = roll row. card = tile. compact = picker row. wide = table row.
hrefstring-When set, renders the card as a link.
showChevronbooleanfalseTrailing chevron for navigable rows.
showLevyStatusbooleanfalseShows the levy status badge.
showProxyStatusbooleanfalseShows proxy eligibility (wide and card layouts).
showSchemebooleanfalseShows parent scheme plan in list layout.
selectedbooleanfalseHighlights the row with lime-soft background.
actionsReactNode-Custom trailing actions.