DataSurfacePanel

components/data/SurfacePanel.vue

Ranked rows with a trailing DataPercentBar column — the house shape for "what does this thing touch" lists (models, MCP servers, workspaces, tools, sessions). Owns its overflow behavior via UxShowMore.

MCP Servers

5 distinct
ServerCalls
github
412
postgres
168
stripe-test
84
linear
61
sentry
22
Scenarios
Three-column (label · pill · bar) with drill-down rows

Tools

calls observed
Overflow — rowCap 3 engages UxShowMore

Models

ModelCalls
github
412
postgres
168
stripe-test
84
Empty

Repos & Workspaces

No working directories captured.
components/data/SurfacePanel.vue

Usage

<DataSurfacePanel title = "—" caption = "undefined" :headers = "—" :rows = "—" barKey = "—" :barMax = "barMax" :rowKey = "—" :rowTo = "rowTo" allTo = "undefined" listingTo = "undefined" empty = "—" :rowCap = "10" :expandCap = "50" :compact = "false" />

Props

PropTypeDefaultDescription
titleStringPanel heading
captionStringundefinedMono caption beside the title (or use #caption)
headersString[]Column headers; 2 = [label, bar], 3 = [label, pill, bar]
rowsany[]Row objects
barKeyStringRow field the bar plots
barMaxNumberundefinedReal denominator override; defaults to the leader value
rowKey(row) => stringRow key function
rowTo(row) => stringundefinedRow drill-down target; absent = static rows
allToStringundefinedFleet "all →" header link
listingToStringundefinedOverflow hand-off target for UxShowMore
emptyStringEmpty-state message
rowCapNumber10Rows shown before UxShowMore engages
expandCapNumber50Rows shown once expanded
compactBooleanfalseChrome-less dense mode; passed through to #row

Slots

SlotDescription
rowLabel/pill cells for one row; scope: { row, border, clickable, compact }
captionCustom caption content

Related

Qpoint Brand Style Guide