Elements

Components / Application

Scheme

Strata scheme identity primitives for Instant Strata. A scheme is the owners corporation for a building: identified by name, strata plan number, location, and roll size. Use these elements everywhere a scheme appears so managers always see consistent identity, status, and context.

Design rationale

Strata managers work across dozens of schemes. Every screen inside a scheme needs a persistent context bar so they never lose track of which building they are working on. Portfolio views need list and card layouts that surface the same fields in the same order: name, plan, location, lots, and status.

The SchemeSummary type is the shared contract. Extend it in the app with financial balances, compliance dates, and fund splits. The UI primitives stay stable.

Building2 is the default scheme icon per the Icons guide. Initials on lime-soft tiles are used when a scheme needs a distinct avatar in cards and switchers.

Primitives

Compose these in custom layouts, AI entity tags, breadcrumbs, and table cells. Status and plan badges compose the shared Badge primitive. See the Badge docs for all lifecycle states and variant mapping.

SchemeIdentity, SchemePlanBadge, SchemeMeta

Harbour View Towers

SP 1042

SP 1042ActiveNeeds attentionWatch

Darling Harbour, NSW · 52 lots · FY end 30 Jun · Jane Smith

SchemeStat metrics

Lots

52

Open tasks

8

In arrears

18%

List layout

Default directory row for scheme pickers, sidebars, and mobile lists.

tsx
import { SchemeCard, SchemeList } from "@/components/ui/scheme"

<SchemeList>
  {schemes.map((scheme) => (
    <SchemeCard
      key={scheme.id}
      scheme={scheme}
      layout="list"
      showStatus
      showChevron
      href={`/schemes/${scheme.id}`}
    />
  ))}
</SchemeList>

Card layout

Portfolio tiles with stats for manager dashboards.

Wide layout

Tabular portfolio view with column headings.

SchemeContextBar

Sticky strip at the top of scheme-scoped pages. Shows identity, key metrics, portfolio switching, and page actions.

Context bar with switcher and actions

Lots

52

FY end

30 Jun

Manager

Jane Smith

Open tasks

3

Health

Healthy
Page content sits below the context bar.
tsx
import { SchemeContextBar } from "@/components/ui/scheme"
import { Button } from "@/components/ui/button"

<SchemeContextBar
  scheme={activeScheme}
  schemes={portfolio}
  onSchemeSelect={({ scheme }) => setActive(scheme)}
  actions={<Button size="sm">View roll</Button>}
/>

SchemeSwitcher

Standalone portfolio picker. Embedded automatically when schemes is passed to SchemeContextBar.

SchemeSwitcher dropdown

Related patterns

Badges: SchemePlanBadge and SchemeStatusBadge compose Badge. Use that page as the canonical reference for status tones and states.

Lot: the child entity under a scheme. See the Lot component for roll lists, levy badges, and proxy eligibility.

Scheme breadcrumb: compose SchemeIdentity with compact layout in AppHeader for nested routes like Schemes / Harbour View / Levies.

AI entity tags: align Message strata-scheme plugin styling with SchemePlanBadge and SchemeIdentity for consistent inline references.

Install

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

Requires the badge and dropdown-menu components.

Reference

SchemeSummary

PropTypeDefaultDescription
idstring-Stable identifier for routing and API calls.
namestring-Display name, e.g. Harbour View Towers.
planstring-Strata plan number. Normalised by formatSchemePlan.
suburbstring-Suburb for location metadata.
statestring-State or territory code.
lotCountnumber-Total lots on the strata roll.
financialYearEndstring-Financial year end, e.g. "30 Jun".
managerNamestring-Assigned strata manager.
statusSchemeStatus-active | onboarding | archived | attention.
healthSchemeHealth-good | warning | critical.
openTasksnumber-Open tasks requiring manager action.
arrearsPercentnumber-Percentage of lots in arrears.

SchemeCard

PropTypeDefaultDescription
schemeSchemeSummary-Scheme data object.
layout"list" | "card" | "compact" | "wide""list"list = directory row. card = portfolio tile. compact = switcher row. wide = table row.
hrefstring-When set, renders the card as a link.
showChevronbooleanfalseTrailing chevron for navigable rows.
showStatusbooleanfalseShows the lifecycle status badge.
showHealthbooleanfalseShows the health indicator.
showPlanbooleantrueShows the SP plan badge.
selectedbooleanfalseHighlights the row with lime-soft background.
actionsReactNode-Custom trailing actions.

SchemeContextBar

PropTypeDefaultDescription
schemeSchemeSummary-Active scheme shown in the bar.
schemesSchemeSummary[]-Portfolio list for the switcher. Omit to hide switching.
onSchemeSelect({ scheme }) => void-Called when the manager picks another scheme.
statsReactNode-Replace the default stat strip.
actionsReactNode-Right-aligned page actions.
stickybooleantrueStick below the app header on scroll.