Liveline

A real-time Canvas price chart with event markers (buys, trims, thesis updates). Smooth lerp animation, theme-aware tokens, and a pluggable data adapter that works with CoinGecko today and any OHLC source tomorrow.

Custom

Live — real-time coin data

Pick a coin. Prices stream from CoinGecko through our /api/prices proxy (60-second cache, works identically in dev and on Vercel). The chart re-fetches every minute and on range change.

Loading…
Ethereum ETH

Basic

With no data prop, Liveline generates deterministic mock data so the component always has something to render — useful for empty states and storyboards.

Ethereum ETH $2,119 +4.2%

With thesis markers

Hover any marker to inspect. Two or more markers within 16px cluster into a stack with a multi-row tooltip; thesis posts carry the full body text below their row.

Ethereum ETH $2,119 +4.2%

Variants

Three layout presets: full (token page), detail (thesis page), and compact (feed card).

variant="full"

$2,119 +4.2%

variant="detail"

Ethereum ETH $2,119 +4.2%

variant="compact"

Marker states on the thesis page

Each marker type encodes a different action from the position timeline. Cluster + hover are derived visual states, not separate types.

Marker types

PropTypeDescription
green circle, plus iconAdding capital to a position. Uses the semantic success color.
amber circle, minus iconTrimming without fully exiting.
red circle, minus iconFully closed position.
purple circle, pen stroke + glowThesis update or commentary. Uses bloom-nx brand purple with a soft outer glow so it reads as a content event, not a trade.
overlapping markers + ×N badgeMarkers within 16px cluster into a single hit target. Hovering scales the cluster 1.5× and opens a multi-row tooltip listing all contained events.
marker scales 1.5×, halo ringOn pointer move within HIT_RADIUS the marker scales up and a faint halo ring appears. The cluster's tooltip is positioned above the marker and clamped to the viewport.

Wiring live data

Liveline itself is data-agnostic. It accepts a ChartPoint[] and re-renders when it changes. The coingecko.ts adapter routes through our /api/prices proxy — a thin SvelteKit server route that caches CoinGecko for 60 seconds. Point baseUrl at your own backend to swap the source (Binance WebSocket, TradingView UDF, your own warehouse).

Ethereum ETH

API reference

PropTypeDescription
ChartPoint[]Price time series as { time: seconds, value: number }[]. When empty, the component falls back to deterministic mock data keyed to activeRange.
ChartMarker[]Event markers (buy / sell / post / entry / exit). Markers are filtered to the visible time window and snapped to the nearest data point.
booleanGate for rendering the markers prop.
stringHex line color. Drives gradient fill, pill background, dashed price line, glow, and the pulse dot. Pass a red hex when delta is negative.
'full' | 'detail' | 'compact''full' shows price header + metric toggle; 'detail' shows token identity row + metric toggle (thesis-page layout); 'compact' hides heading and bottom controls.
'1H' | '1D' | '1W' | '1Y' | 'All'Current time range tab. Bindable.
numberCanvas height in logical CSS pixels.
booleanToggle for the header row (price + metric tabs).
stringFormatted price string for the header display.
stringFormatted delta string (e.g. "+4.2%") next to price.
'up' | 'down'Controls the chevron direction and text color (success / destructive).
stringToken display name in the detail variant header.
stringToken ticker in the detail variant header.
stringURL of a square token icon rendered beside the name.
booleanSuppresses the pulse animation and price pill overlay. Use for feed cards where the chart must read as a snapshot, not a live surface.
'price' | 'mcap'Initial metric tab.
(range: TimeRange) => voidFires when the user picks a new range tab. Useful for external data re-fetching.
(marker: ChartMarker | null) => voidFires with the hovered marker (or null when leaving). Use to sync other UI (e.g. scroll a timeline to the same event).