Skip to content
Twentyfirst UIPro

Map View

Data · IconButton, MapView

View as Markdown

Points on a map: price pins for listings or bubbles for where orders come from. The map itself (tiles from MapLibre, Leaflet or Google, an SVG or an image) goes in background; Halo draws pins, popups, legend and controls on top in its own style.

Props: points ({id, label, sub, lat, lng, value, text (pin label), tint, pulse}), bounds ({n, s, w, e}; what the background shows), background (node), bubbles (size by value instead of pins), selected / onSelect, renderPopup(point), legend, controls, height, label.

  • With a real map library, pass its projection's bounds or render the pins through its overlay API with the same classes (tf-map-pin, tf-map-pop).
  • Price pins show the short price; the popup carries the details.
Orders by country
Bubble size = orders today
Listings
Loft, HafenCity€1,190,000 · 112 m²

Props

IconButton

PropTypeNotes
iconIconNameRequired
labelstringAccessible name and tooltip (`aria-label` and `title`); `aria-label` or `title` override them.
variant?"soft" | "solid" | "outline" | "ghost"
size?"sm" | "md" | "lg"
type?"button" | "submit" | "reset"
onClick?(e: MouseEvent<HTMLButtonElement>) => void
disabled?boolean
asChild?booleanRender the single child element (a link) with the button's look; the icon is placed inside it.
children?ReactNode
id?string
name?stringForm field name and value, sent with the form when this button submits it.
value?string
form?stringThe id of the form this button belongs to, when it sits outside it.
title?string
tabIndex?number
autoFocus?boolean
aria-label?string
aria-labelledby?string
aria-describedby?string
aria-expanded?boolean | "true" | "false"For disclosure and menu triggers: whether what the button controls is open.
aria-controls?string
aria-haspopup?boolean | "true" | "false" | "menu" | "listbox" | "tree" | "grid" | "dialog"
aria-pressed?boolean | "true" | "false" | "mixed"For toggle buttons.
aria-current?boolean | "true" | "false" | "page" | "step" | "location" | "date" | "time"
className?stringExtra class on the root element.
style?CSSPropertiesInline style on the root element.

MapView

PropTypeNotes
points?MapPoint[]
bounds?{ n: number; s: number; w: number; e: number }
background?ReactNode
bubbles?boolean
selected?MapPoint["id"] | null
onSelect?(id: MapPoint["id"] | null) => void
renderPopup?(p: MapPoint) => ReactNode
legend?ReactNode
controls?ReactNode
height?number | stringHeight in px (default 320) or any CSS length, e.g. "100%" to fill a FloatingLayout.
label?string
surface?Surface`"glass"`: the legend, controls and popup float as glass over the map (for a live map in `background`).
className?string
style?CSSPropertiesInline style on the root element.