16 blocks a dvt dashboard can carry, each declared in the JSON spec.
KPI cards, stats and metric strips, markdown text that prints live values from its own rows, hero and section headings, four custom-HTML tiles, dividers, media, an agent panel, and themes. All but themes are panels in the same panels array the engine validates, so an agent can write it and a reviewer can read it.
Numbers
Headline figures: KPI cards with comparison chips and sparklines, canvas stats, and metric strips.
Narrative
Words on the page: markdown with live numbers, hero headlines, and section headings.
Custom HTML
Hand-built tiles: sanitized HTML that reads the theme variables and can print live numbers.
Custom HTML tile
Render a sanitized HTML fragment styled with the theme CSS variables.
HTML badge grid
Lay out a grid of theme-coloured badges in a custom html panel.
HTML columns with live numbers
Arrange columns with CSS grid and interpolate live numbers into custom html.
HTML with inline SVG
Draw a progress ring with inline SVG and a scoped style block.
Layout and media
Structure around the charts: dividers, images, an embedded agent panel, a Snowflake-only python panel, and an action button.
Divider
Declare a horizontal or vertical rule with thickness, style, and inset.
Media
Place an image from an allowed source with fit, rounding, and a caption.
Agent
Name a Snowflake Cortex agent for an in-dashboard chat panel.
Python
Run Python on the warehouse when SQL cannot express the compute.
Action button
Declare a pressable call-to-action with a label, variant, icon, and one click action.
Themes
Presets, tokens, and per-page overrides that restyle every panel at once.
Controls
The filter and container panels are panel types too, but they belong to the interaction model, so they are documented in the Interactions section.
Follow the build
dvt is in founding research. Leave your email and we'll reach out when there's something to see — no newsletters, no noise.