Worem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet odio mattis.
Listing card
A Listing as a card, varying by kind.
A Listing rendered as a card, in the brand layout (ADR 0014): the photo leads, then a mint garden-tone band (name + address) reading as its caption, then the body — price, the kind line, and the specs. Availability sits on the kind line, separated and colour-coded by a single dot (one per state, ADR 0010) rather than carried in a chip of its own. The label is free copy, so a state word and a date read the same way (last card). Presentational: all strings are pre-localized by the caller.
Chips sit on the photo, in two independent corners:Open house top-left, and the New flag with the Availability state stacked under it top-right. Each carries its own solid fill, so text contrast is against the chip rather than whatever the photo happens to be (ADR 0007), and each corner is its own stack — an empty corner occupies nothing. Availability shows for every state except available: a chip on every card is noise, and the kind line still says the state in words. The midline holds the photo arrows; bottom-right is still reserved, not built, for an "AI enhanced" chip.
The photo strip (ADR 0030). The card takesimages, and the data decides — not kind: more than one photo adds prev/next arrows, a 3 / 12 counter bottom-left, swipe and mouse-drag; one photo is the plain still it always was. The second and fourth cards below have a single photo on purpose, so both shapes sit in one grid. Only slide one is in the markup — the rest ride in an inert <template> the browser never fetches, cloned in on first intent (hover or focus with a mouse, anIntersectionObserver on touch, which has no hover to wait for). Move a mouse over a card to see the arrows: they hide on(hover: hover) and (pointer: fine) and stay visible on anything else. The card is still one tab stop — tab to it and page the photos with ←/→. The strip loops, unlike the MediaCarousel and Gallery stages: an arrow that hid itself at the end would uncover the photo's own link right where the cursor was about to press, so the last photo opened the listing instead of wrapping.
Whole-card availability. Two of the four states paint the card itself, at two strengths, from data-status on the root — so a grid reads before any label does. Reserved recolours the caption band to the reserved status pair (held, not gone; nothing else changes). Let takes the muted neutral pair anddesaturates the photo — the card retires. Available and Coming soon are deliberately untouched: available is the default, and dimming a coming-soon home would say the opposite of what it means. Only the ADR 0010 token pairs are reassigned, never raw colours, which is why re-toning the preview below keeps every state legible — including garden, where the band is not mint but the teal dark surface.
The unit kind
- 1 / 12New8.400 kr/md.LejlighedAvailable
- 1 / 1Open houseReserved11.200 kr/md.RækkehusReserved
Worem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum.
- 1 / 5Open houseNewComing soon
Strandgade 7, 1.5000 Odense C
6.950 kr/md.LejlighedComing soonWorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero.
- 1 / 2Let
Bredgade 44, 3.5200 Odense V
9.500 kr/md.LejlighedLetWorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero et velit interdum, ac aliquet.
- 1 / 1Coming soon
Havnegade 21, 4.5000 Odense C
7.800 kr/md.LejlighedAvailable from 1 Dec 2026Worem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate libero.
The property kind
kind="property": a development or building shown with general info — area and rooms ranges and a read-more cue, no single price, type or deposit (CONTEXT.md). Same component, varies by kind; we do not keep a separate PropertyCard. Passed a statusLabel it carries a filled status pill (ADR 0022) instead of the unit kind's inline dot. The third card is let, so the whole-card treatment shows on the property shape too.
- 1 / 6
A modern development close to services and green space.
- 1 / 9Available
Spacious family homes in a green neighbourhood.
- 1 / 1Let
Fully let for now — join the list for the next opening.
Props
| Prop | Type | Required |
|---|---|---|
| kind The Listing kind (CONTEXT.md): a "unit" is a single home (price, type, deposit, status); a "property" is a development/building shown with general info (ranges, no single price), a read-more cue, and no status. | "unit" | "property" | — |
| images The home's photos, in order. One renders a plain still, exactly as this card always has; more than one makes the photo pageable (ADR 0030). The card does not decide this from `kind` — the data does, so a property with a photo set pages as readily as a unit. | CardPhoto[] | yes |
| availability | "available" | "reserved" | "let" | "coming-soon" | — |
| statusLabel What the card says about the state, in the kind line. Free copy: a coming-soon home may read "Available from 1 Dec 2026" rather than "Coming soon". | string | — |
| availabilityLabel The state's own name — always the plain word ("Coming soon"), never a date. The photo chip uses this: a corner chip is a glance, and a glance wants the state, not the detail. Falls back to statusLabel when not given. | string | — |
| isNew | boolean | — |
| newLabel | string | — |
| openHouse An open-house event on this home. Its own flag, not an Availability state and not a kind of "new" — a Let home can still hold an open house, and a home can be New *and* holding one, in which case both badges show (ADR 0010 amendment). | boolean | — |
| openHouseLabel | string | — |
| priceLabel | string | — |
| kindLabel | string | — |
| description | string | — |
| address | string | yes |
| addressSecondary | string | — |
| areaLabel | string | — |
| roomsLabel | string | — |
| depositLabel | string | — |
| readMoreLabel property kind: visible "read more" cue (the whole card is still the link). | string | — |
| href | string | — |
| headingLevel | 1 | 2 | 3 | 4 | 5 | 6 | — |
| Field | Type | Required |
|---|---|---|
| src | string | yes |
| alt | string | — |