Vizro Dash Components
Vizro Dash Components are used by the Vizro framework but can be used in a pure Dash app. Use as import vizro_dash_components as vdc.
See the example Dash app and its live demo on PyCafe for a full demo of all components.
Installation
pip install vizro-dash-components
Components
Markdown
Based on dcc.Markdown, with identical properties. Renders Markdown content with syntax-highlighted code blocks via dmc.CodeHighlight and dmc.InlineCodeHighlight. Requires a dmc.MantineProvider wrapper.
import dash_mantine_components as dmc
import vizro_dash_components as vdc
from dash import Dash
app = Dash(__name__)
app.layout = dmc.MantineProvider(
vdc.Markdown(
id="my-markdown",
children="""
# Hello World
```python
print("Hello, World!")
```
""",
)
)
if __name__ == "__main__":
app.run()
Cascader
Hierarchical cascading dropdown inspired by Ant Design Cascader and fac.AntdCascader. Users navigate a tree of options via side-by-side panels and select leaves. Supports single-select and multi-select, and two value modes selected by full_path (see value format below). It accepts all the same arguments as dcc.Dropdown (for example className, style, clearable, searchable, search_value, placeholder, disabled, multi, optionHeight, maxHeight, debounce, closeOnSelect, labels, and persistence props) and is built to visually match it. Use help(vdc.Cascader) for the full list.
options format
options for dcc.Dropdown describes a flat list and can be given in two different formats: a shorthand and an explicit option dict. options for vdc.Cascader describes a tree and can similarly be given in two different formats:
-
Shorthand
dcc.Dropdown: a list, for example["New York City", "Montreal"].vdc.Cascader: a nested dict/list, for example{"USA": ["New York City", "Boston"], "Canada": ["Toronto", "Montreal"]}.
-
Explicit option dicts
dcc.Dropdown: a list of dicts, each withlabelandvalue, plus optional keys such asdisabledandsearch.vdc.Cascader: a list of dicts, each withlabelandvalue, plus optional keys such asdisabledandsearch. Parents also havechildren, a list of child dicts; leaves omitchildren.
value format
The shape of value depends on the full_path prop (default False):
- Leaf mode (
full_path=False, default):valueis the bare leaf scalar, for example"Paris"; whenmulti=Trueit is a list of leaf scalars, for example["Paris", "Tokyo"]. Leafvalues must be unique across the whole tree — a duplicate leafvalueunder two branches is ambiguous in this mode (the component logs a console error). This is a constraint onvalue, notlabel: two leaves may share alabelas long as theirvalues differ. - Path mode (
full_path=True):valueis the full root-to-leaf path: a list of nodevalues from the root down to the selected leaf, for example["Europe", "France", "Paris"]; whenmulti=Trueit is a list of such paths, for example[["Europe", "France", "Paris"], ["Asia", "Japan", "Tokyo"]]. Because paths are used, duplicate leafvalues in different branches (for example a"Portland"under both"Oregon"and"Maine") are addressed unambiguously.
from dash import Dash, Input, Output, html
import vizro_dash_components as vdc
OPTIONS = {
"Asia": {
"Japan": ["Tokyo", "Osaka", "Kyoto"],
"China": ["Beijing", "Shanghai", "Guangzhou"],
},
"Europe": {
"France": ["Paris", "Lyon", "Marseille"],
"Germany": ["Berlin", "Munich", "Hamburg"],
},
}
# Same tree in explicit form.
# label doesn't need to match value any more.
# Optional on any dict: disabled, search.
# OPTIONS = [
# {
# "label": "Asia",
# "value": "Asia",
# "children": [
# {
# "label": "Japan",
# "value": "Japan",
# "children": [
# {"label": "Tokyo", "value": "Tokyo"},
# {"label": "Osaka", "value": "Osaka"},
# {"label": "Kyoto", "value": "Kyoto"},
# ],
# },
# {
# "label": "China",
# "value": "China",
# "children": [
# {"label": "Beijing", "value": "Beijing"},
# {"label": "Shanghai", "value": "Shanghai"},
# {"label": "Guangzhou", "value": "Guangzhou"},
# ],
# },
# ],
# },
# ... similarly for Europe
# ]
app = Dash(__name__)
app.layout = [
vdc.Cascader(id="regions", options=OPTIONS, placeholder="Select a city..."),
html.Div(id="out"),
]
@app.callback(Output("out", "children"), Input("regions", "value"))
def show(value):
# Default leaf mode: `value` is the bare leaf, for example "Tokyo".
# Pass full_path=True to get the full path instead, for example ["Asia", "Japan", "Tokyo"].
return f"Selected: {value!r}"
if __name__ == "__main__":
app.run()
Development
Contributor workflows (Hatch, npm, regenerating vizro_dash_components/) are documented in AGENTS.md (same content as CLAUDE.md for Claude Code).
Metadata
Release files for vizro-dash-components 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vizro_dash_components-0.3.1.tar.gz | 896.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vizro_dash_components-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.7 MB
Release files / vizro_dash_components-0.3.1.tar.gz
| Download URL | vizro_dash_components-0.3.1.tar.gz |
|---|---|
| Size | 896.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
14c724e7d111150dc7ffa55407fa57dc3baa4e18b71002c24f39291c1bdf6703
|
|
BLAKE2b-256 checksum How to use checksums |
e659c2951a1992f960e31e5851bbe698e84be8a65d25e4bac23316bc599a433b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / vizro_dash_components-0.3.1-py3-none-any.whl
| Download URL | vizro_dash_components-0.3.1-py3-none-any.whl |
|---|---|
| Size | 830.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46808ee7f01eb8a05391cf9ec4aac1ec96cb12b84e98a97ec3cbf378a537f63f
|
|
BLAKE2b-256 checksum How to use checksums |
8fe2900bb06f97a7d85aa09dd25435ef514dcafe0c97f36ebc44354f3349e7e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for vizro-dash-components 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vizro_dash_components-0.3.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.