The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .devcontainer
    ├── Dockerfile
    ├── devcontainer.json
    └── install-hatch.sh
├── .github
    ├── ISSUE_TEMPLATE
    │   ├── bug-report.yml
    │   ├── config.yml
    │   ├── feature-request.yml
    │   └── general-question.yml
    ├── actions
    │   ├── ctrf-report
    │   │   └── action.yml
    │   └── failed-artifacts-and-slack-notifications
    │   │   └── action.yml
    ├── dependabot.yml
    ├── images
    │   ├── Vizro_Github_Banner_Dark_Mode.png
    │   ├── Vizro_Github_Banner_Light_Mode.png
    │   ├── code_dashboard.png
    │   ├── gapminder_example.png
    │   ├── huggingface_collection.png
    │   ├── infographic.svg
    │   ├── logo_watermarks.svg
    │   ├── toolkit_dashboard_examples.png
    │   ├── toolkit_framework.svg
    │   ├── toolkit_visual_vocabulary.png
    │   ├── toolkit_vizro_ai.gif
    │   ├── toolkit_vizro_ai_fallback.png
    │   ├── vizro_spash_teaser.gif
    │   └── vizro_spash_teaser_fallback.png
    ├── labeler.yml
    ├── pull_request_template.md
    └── workflows
    │   ├── build-vizro-whl.yml
    │   ├── checks-vizro-ai.yml
    │   ├── checks-vizro-core.yml
    │   ├── checks-vizro-mcp.yml
    │   ├── checks-workflows.yml
    │   ├── github-repo-stats.yml
    │   ├── labeler.yml
    │   ├── lint-vizro-all.yml
    │   ├── pycafe-dashboards.yml
    │   ├── pycafe-docs-links.yml
    │   ├── release-if-needed.yml
    │   ├── test-e2e-component-library-vizro-core.yml
    │   ├── test-e2e-dashboard-vizro-ai.yml
    │   ├── test-e2e-plot-vizro-ai.yml
    │   ├── test-e2e-vizro-dom-elements.yml
    │   ├── test-e2e-vizro-screenshots.yml
    │   ├── test-integration-vizro-core.yml
    │   ├── test-unit-vizro-ai.yml
    │   ├── test-unit-vizro-core.yml
    │   ├── test-unit-vizro-mcp.yml
    │   ├── test-vizro-ai-ui.yml
    │   └── update-static-files.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .stylelintrc
├── .vale
    ├── .vale.ini
    └── styles
    │   ├── Microsoft
    │       ├── AMPM.yml
    │       ├── Accessibility.yml
    │       ├── Acronyms.yml
    │       ├── Adverbs.yml
    │       ├── Auto.yml
    │       ├── Avoid.yml
    │       ├── ComplexWords.yml
    │       ├── Dashes.yml
    │       ├── DateFormat.yml
    │       ├── DateNumbers.yml
    │       ├── DateOrder.yml
    │       ├── FirstPerson.yml
    │       ├── Foreign.yml
    │       ├── Gender.yml
    │       ├── GenderBias.yml
    │       ├── HeadingColons.yml
    │       ├── HeadingPunctuation.yml
    │       ├── Headings.yml
    │       ├── Hyphens.yml
    │       ├── Negative.yml
    │       ├── Ordinal.yml
    │       ├── OxfordComma.yml
    │       ├── Percentages.yml
    │       ├── RangeTime.yml
    │       ├── SentenceLength.yml
    │       ├── Spacing.yml
    │       ├── Spellings.yml
    │       ├── Suspended.yml
    │       ├── Terms.yml
    │       ├── URLFormat.yml
    │       ├── Units.yml
    │       ├── VizroCapitals.yml
    │       ├── Vocab.yml
    │       ├── Wordiness.yml
    │       ├── ignore-names.txt
    │       ├── ignore.txt
    │       └── meta.json
    │   ├── Readability
    │       ├── AutomatedReadability.yml
    │       ├── ColemanLiau.yml
    │       ├── FleschKincaid.yml
    │       ├── FleschReadingEase.yml
    │       ├── GunningFog.yml
    │       ├── LIX.yml
    │       ├── SMOG.yml
    │       └── meta.json
    │   └── vale
    │       ├── Annotations.yml
    │       ├── Editorializing.yml
    │       ├── Hedging.yml
    │       ├── Litotes.yml
    │       ├── Redundancy.yml
    │       └── Uncomparables.yml
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
├── SECURITY.md
├── pyproject.toml
├── tools
    ├── check_package_release.py
    ├── extract_release_notes.py
    ├── pycafe
    │   ├── create_pycafe_links_comments.py
    │   ├── docs_links_filtering.sh
    │   ├── pycafe_utils.py
    │   ├── test_pycafe_generated_links.py
    │   └── test_pycafe_predefined_links.py
    ├── release.sh
    └── scan_yaml_for_risky_text.py
├── vizro-ai
    ├── .readthedocs.yaml
    ├── CHANGELOG.md
    ├── LICENSE.txt
    ├── README.md
    ├── changelog.d
    │   ├── 20250603_102309_lingyi_zhang_0_3_7.md
    │   ├── 20250603_144151_runner.md
    │   ├── new_fragment.md.j2
    │   └── scriv.ini
    ├── docs
    │   ├── assets
    │   │   ├── images
    │   │   │   └── favicon.png
    │   │   ├── tutorials
    │   │   │   ├── chart
    │   │   │   │   ├── ChineseExample.png
    │   │   │   │   ├── GDP_Composition_Graph.png
    │   │   │   │   ├── GeoDistribution.png
    │   │   │   │   ├── GermanExample.png
    │   │   │   │   ├── advanced_chart_1.png
    │   │   │   │   ├── advanced_chart_2.png
    │   │   │   │   └── animated_advanced_chart.gif
    │   │   │   ├── chart_into_dashboard.gif
    │   │   │   ├── dashboard
    │   │   │   │   └── dashboard0_page1.png
    │   │   │   └── project
    │   │   │   │   ├── chart1.png
    │   │   │   │   ├── chart1v2.png
    │   │   │   │   ├── chart2.png
    │   │   │   │   ├── chart3.png
    │   │   │   │   ├── user-interface-hosted-vizro-ai.png
    │   │   │   │   └── user-interface-settings-hosted-vizro-ai.png
    │   │   └── user_guides
    │   │   │   ├── VizroAINewData.png
    │   │   │   ├── VizroAIPlotly.png
    │   │   │   ├── VizroAIVizro.png
    │   │   │   ├── bar_chart_gdp_per_continent.png
    │   │   │   ├── chart_into_dashboard_2.gif
    │   │   │   ├── chart_into_dashboard_large.png
    │   │   │   ├── code_string_app_integration.png
    │   │   │   ├── dashboard
    │   │   │       ├── dashboard1_page1.png
    │   │   │       ├── dashboard1_page2.png
    │   │   │       └── dashboard2_page1.png
    │   │   │   ├── line_chart_life_expect.png
    │   │   │   ├── map_chart.gif
    │   │   │   ├── polar_bar_chart.png
    │   │   │   ├── surface_plot.gif
    │   │   │   └── vizro-ai-chart.png
    │   ├── index.md
    │   ├── overrides
    │   │   └── canonical_tag.py
    │   ├── pages
    │   │   ├── API-reference
    │   │   │   └── vizro-ai.md
    │   │   ├── explanation
    │   │   │   ├── disclaimer.md
    │   │   │   ├── faq.md
    │   │   │   ├── safeguard.md
    │   │   │   ├── safety-in-vizro-ai.md
    │   │   │   └── why-use-vizro-ai.md
    │   │   ├── tutorials
    │   │   │   ├── goodreads-tutorial.md
    │   │   │   ├── quickstart-dashboard.md
    │   │   │   └── quickstart.md
    │   │   └── user-guides
    │   │   │   ├── add-generated-chart-usecase.md
    │   │   │   ├── advanced-options.md
    │   │   │   ├── create-advanced-charts.md
    │   │   │   ├── create-complex-dashboard.md
    │   │   │   ├── customize-vizro-ai.md
    │   │   │   ├── install.md
    │   │   │   ├── run-vizro-ai-dashboard.md
    │   │   │   ├── run-vizro-ai.md
    │   │   │   ├── use-different-languages.md
    │   │   │   └── vizro-ai-langchain-guide.md
    │   └── stylesheets
    │   │   └── extra.css
    ├── examples
    │   ├── chart_by_vizro_ai.ipynb
    │   ├── dashboard_by_vizro_ai.ipynb
    │   ├── dashboard_ui
    │   │   ├── .dockerignore
    │   │   ├── Dockerfile
    │   │   ├── README.md
    │   │   ├── _utils.py
    │   │   ├── actions.py
    │   │   ├── app.py
    │   │   ├── assets
    │   │   │   ├── custom.css
    │   │   │   └── logo.svg
    │   │   ├── components.py
    │   │   ├── requirements.in
    │   │   └── requirements.txt
    │   ├── example.ipynb
    │   ├── example.py
    │   ├── example_dashboard.ipynb
    │   ├── example_dashboard.py
    │   ├── goodreads_tutorial
    │   │   ├── filtered_books.csv
    │   │   └── goodreads.ipynb
    │   └── pyproject.toml
    ├── hatch.toml
    ├── mkdocs.yml
    ├── pyproject.toml
    ├── src
    │   └── vizro_ai
    │   │   ├── __init__.py
    │   │   ├── _llm_models.py
    │   │   ├── _vizro_ai.py
    │   │   ├── dashboard
    │   │       ├── _graph
    │   │       │   └── dashboard_creation.py
    │   │       ├── _pydantic_output.py
    │   │       ├── _response_models
    │   │       │   ├── components.py
    │   │       │   ├── controls.py
    │   │       │   ├── dashboard.py
    │   │       │   ├── df_info.py
    │   │       │   ├── layout.py
    │   │       │   ├── page.py
    │   │       │   └── types.py
    │   │       └── utils.py
    │   │   ├── plot
    │   │       ├── __init__.py
    │   │       ├── _response_models.py
    │   │       └── _utils
    │   │       │   ├── __init__.py
    │   │       │   ├── _constants.py
    │   │       │   └── _safeguard.py
    │   │   ├── py.typed
    │   │   └── utils
    │   │       └── helper.py
    └── tests
    │   ├── .gitkeep
    │   ├── e2e
    │       ├── conftest.py
    │       ├── data_classes.py
    │       ├── prompts.py
    │       ├── test_dashboard.py
    │       └── test_plot.py
    │   ├── unit
    │       └── vizro-ai
    │       │   ├── conftest.py
    │       │   ├── dashboard
    │       │       ├── _graph
    │       │       │   ├── conftest.py
    │       │       │   └── test_dashboard_creation.py
    │       │       ├── _response_models
    │       │       │   ├── conftest.py
    │       │       │   ├── test_components.py
    │       │       │   ├── test_controls.py
    │       │       │   ├── test_dashboard.py
    │       │       │   ├── test_df_info.py
    │       │       │   ├── test_layout.py
    │       │       │   └── test_page.py
    │       │       ├── conftest.py
    │       │       └── test_pydantic_output.py
    │       │   ├── plot
    │       │       ├── test_response_model.py
    │       │       └── utils
    │       │       │   └── test_safeguard_code.py
    │       │   └── test_llm_models.py
    │   └── vizro_ai_ui
    │       ├── conftest.py
    │       ├── fake_data_generator.py
    │       └── test_vizro_ai_ui.py
├── vizro-core
    ├── .readthedocs.yaml
    ├── CHANGELOG.md
    ├── LICENSE.txt
    ├── README.md
    ├── changelog.d
    │   ├── 20250617_102622_petar_pejovic_url_query_params_overwrite_persistence.md
    │   ├── 20250625_111425_nadija_ratkusic_graca_add_download_component.md
    │   ├── 20250627_100903_maximilian_schulz_0_1_42.md
    │   ├── 20250627_115415_runner.md
    │   ├── 20250630_153204_maximilian_schulz_api_docs_improvement.md
    │   ├── 20250701_111514_90609403+huong-li-nguyen_refactor_d_layout_methods.md
    │   ├── 20250701_130845_90609403+huong-li-nguyen_refactor_arrange_layout.md
    │   ├── 20250703_114236_petar_pejovic_fix_download_and_url_components_location.md
    │   ├── new_fragment.md.j2
    │   └── scriv.ini
    ├── docs
    │   ├── assets
    │   │   ├── images
    │   │   │   ├── favicon.png
    │   │   │   └── vizro_logo.svg
    │   │   ├── tutorials
    │   │   │   ├── collections.svg
    │   │   │   ├── dashboard
    │   │   │   │   ├── 00-dashboard-final.png
    │   │   │   │   ├── 01-first-page-button.png
    │   │   │   │   ├── 01-first-page-layout.png
    │   │   │   │   ├── 01-first-page.png
    │   │   │   │   ├── 02-second-page.png
    │   │   │   │   ├── 03-second-page-kpi.png
    │   │   │   │   ├── 04-second-page-tabs.png
    │   │   │   │   ├── 05-second-page-layout.png
    │   │   │   │   ├── 06-second-page-controls.png
    │   │   │   │   ├── 07-third-page.png
    │   │   │   │   ├── 08-third-page-layout.png
    │   │   │   │   ├── 09-third-page-parameter.png
    │   │   │   │   ├── 10-third-page-custom-chart.png
    │   │   │   │   ├── 11-dashboard-title-logo.png
    │   │   │   │   ├── 12-dashboard-navigation.png
    │   │   │   │   ├── first-dashboard.png
    │   │   │   │   ├── vizro-mcp.gif
    │   │   │   │   └── vizro-tutorial.gif
    │   │   │   └── features.svg
    │   │   └── user_guides
    │   │   │   ├── actions
    │   │   │       ├── actions1.png
    │   │   │       ├── actions2.png
    │   │   │       ├── actions_chaining.png
    │   │   │       ├── actions_export.png
    │   │   │       ├── actions_filter_interaction.png
    │   │   │       └── actions_table_filter_interaction.png
    │   │   │   ├── assets
    │   │   │       ├── css_change.png
    │   │   │       ├── css_change_card.png
    │   │   │       ├── css_page_title.png
    │   │   │       ├── logo-dark.png
    │   │   │       └── logo-light.png
    │   │   │   ├── components
    │   │   │       ├── africa.svg
    │   │   │       ├── button.png
    │   │   │       ├── button_style_extra.png
    │   │   │       ├── button_style_variants.png
    │   │   │       ├── button_text.png
    │   │   │       ├── button_tooltip.png
    │   │   │       ├── card.png
    │   │   │       ├── card_icon.png
    │   │   │       ├── card_image_default.png
    │   │   │       ├── card_image_floating.png
    │   │   │       ├── card_image_styled.png
    │   │   │       ├── card_text.png
    │   │   │       ├── cardstyle.png
    │   │   │       ├── collapsible-containers-flex.gif
    │   │   │       ├── collapsible-containers-grid.gif
    │   │   │       ├── container-info-icon.png
    │   │   │       ├── container-styled.png
    │   │   │       ├── container-with-controls.png
    │   │   │       ├── container_with_background.png
    │   │   │       ├── containers.png
    │   │   │       ├── formatted_aggrid.png
    │   │   │       ├── formatted_graph.png
    │   │   │       ├── formatted_table.png
    │   │   │       ├── graph.png
    │   │   │       ├── graph_with_extra.png
    │   │   │       ├── hypotheses.svg
    │   │   │       ├── nav_card.png
    │   │   │       ├── nested_containers.png
    │   │   │       ├── responsive_icon.gif
    │   │   │       ├── tabs-info-icon.png
    │   │   │       ├── tabs-info.png
    │   │   │       ├── tabs.png
    │   │   │       ├── text.png
    │   │   │       ├── text_extra.png
    │   │   │       └── text_markdown.png
    │   │   │   ├── control
    │   │   │       ├── control1.png
    │   │   │       ├── control2.png
    │   │   │       ├── control3.png
    │   │   │       ├── control4.png
    │   │   │       ├── control5.png
    │   │   │       ├── controls_defaults.png
    │   │   │       ├── filter_in_url.png
    │   │   │       └── parameter_in_url.png
    │   │   │   ├── custom_actions
    │   │   │       ├── clickdata_as_input.png
    │   │   │       ├── custom_action_multiple_return_values.png
    │   │   │       └── value_as_input.png
    │   │   │   ├── custom_charts
    │   │   │       ├── custom_chart_enhanced_scatter.png
    │   │   │       ├── custom_chart_showcase_parameter.gif
    │   │   │       └── custom_chart_waterfall.png
    │   │   │   ├── custom_components
    │   │   │       ├── customcomponent_1.png
    │   │   │       ├── customcomponent_2.png
    │   │   │       ├── customcomponent_3.gif
    │   │   │       ├── customcomponent_4.gif
    │   │   │       ├── slide_1.jpg
    │   │   │       └── slide_2.jpg
    │   │   │   ├── custom_css
    │   │   │       ├── font-change.png
    │   │   │       ├── highlighted-element.png
    │   │   │       ├── inspect-icon.png
    │   │   │       ├── inspect-panel.png
    │   │   │       ├── logo-position.png
    │   │   │       └── temporary-changes.png
    │   │   │   ├── dashboard
    │   │   │       ├── custom_header_area.png
    │   │   │       ├── dashboard.png
    │   │   │       ├── dashboard_custom_header.png
    │   │   │       ├── dashboard_with_info_icon.png
    │   │   │       └── dashboard_with_logo.png
    │   │   │   ├── data
    │   │   │       ├── data_pandas_dataframe.png
    │   │   │       ├── dynamic_data.gif
    │   │   │       ├── dynamic_filter.gif
    │   │   │       ├── iris.csv
    │   │   │       └── parametrized_dynamic_data.gif
    │   │   │   ├── figure
    │   │   │       ├── custom_html.png
    │   │   │       ├── custom_kpi.png
    │   │   │       ├── custom_multiple_cards.png
    │   │   │       ├── figure.png
    │   │   │       └── kpi_cards.png
    │   │   │   ├── install
    │   │   │       └── logo_watermark_extended.svg
    │   │   │   ├── layout
    │   │   │       ├── 1l_2r_grid.png
    │   │   │       ├── 1l_3r_grid.png
    │   │   │       ├── 1l_grid.png
    │   │   │       ├── 1t_2b_grid.png
    │   │   │       ├── 1t_3b_grid.png
    │   │   │       ├── 2l_grid.png
    │   │   │       ├── 2t_1b_grid.png
    │   │   │       ├── 2t_2b_grid.png
    │   │   │       ├── 2t_grid.png
    │   │   │       ├── 3l_1r_grid.png
    │   │   │       ├── 3l_grid.png
    │   │   │       ├── 3t_1b_grid.png
    │   │   │       ├── flex_advanced.png
    │   │   │       ├── flex_basic.png
    │   │   │       ├── flex_basic_grid_comparison.png
    │   │   │       ├── flex_item_size_args.png
    │   │   │       ├── flex_item_size_css.png
    │   │   │       ├── flex_with_grid_combined.png
    │   │   │       ├── grid_advanced.png
    │   │   │       ├── grid_scroll.png
    │   │   │       ├── layout_empty_spaces.png
    │   │   │       ├── one_left_color.png
    │   │   │       ├── one_left_three_right_color.png
    │   │   │       ├── one_left_two_right.png
    │   │   │       ├── one_left_two_right_color.png
    │   │   │       ├── one_top_three_bottom_color.png
    │   │   │       ├── one_top_two_bottom_color.png
    │   │   │       ├── stacking.png
    │   │   │       ├── three_left_color.png
    │   │   │       ├── three_left_one_right_color.png
    │   │   │       ├── three_top_one_bottom_color.png
    │   │   │       ├── two_left.png
    │   │   │       ├── two_left_color.png
    │   │   │       ├── two_left_two_right_color.png
    │   │   │       ├── two_top_color.png
    │   │   │       └── two_top_one_bottom_color.png
    │   │   │   ├── navigation
    │   │   │       ├── accordion_inside_nav_bar.png
    │   │   │       ├── custom_icons.png
    │   │   │       ├── default_navigation.png
    │   │   │       ├── grouped_navigation.png
    │   │   │       ├── nav_bar.png
    │   │   │       └── only_some_pages.png
    │   │   │   ├── pages
    │   │   │       ├── page_containers.png
    │   │   │       └── page_sunburst.png
    │   │   │   ├── run_deploy
    │   │   │       ├── hugging_face_duplicate_this_space.png
    │   │   │       ├── hugging_face_edit_app.png
    │   │   │       ├── hugging_face_space.png
    │   │   │       ├── pycafe_editor.png
    │   │   │       └── pycafe_editor_share.png
    │   │   │   ├── selectors
    │   │   │       ├── default_filter_selectors.png
    │   │   │       ├── info_icon_selector.png
    │   │   │       └── inlineradio.png
    │   │   │   ├── table
    │   │   │       ├── aggrid-pagination.png
    │   │   │       ├── aggrid.png
    │   │   │       ├── custom_grid.png
    │   │   │       ├── custom_table.png
    │   │   │       ├── formatted_aggrid.png
    │   │   │       ├── styled_aggrid.png
    │   │   │       ├── styled_table.png
    │   │   │       └── table.png
    │   │   │   └── themes
    │   │   │       ├── dark.png
    │   │   │       └── light.png
    │   ├── griffe_extensions.py
    │   ├── index.md
    │   ├── overrides
    │   │   └── main.html
    │   ├── pages
    │   │   ├── API-reference
    │   │   │   ├── action-callables.md
    │   │   │   ├── deprecations.md
    │   │   │   ├── figure-callables.md
    │   │   │   ├── kedro-integration.md
    │   │   │   ├── models.md
    │   │   │   ├── table-callables.md
    │   │   │   └── vizro.md
    │   │   ├── explanation
    │   │   │   ├── authors.md
    │   │   │   ├── contributing.md
    │   │   │   ├── documentation-style-guide.md
    │   │   │   ├── faq.md
    │   │   │   ├── schema.md
    │   │   │   └── your-examples.md
    │   │   ├── tutorials
    │   │   │   ├── explore-components.md
    │   │   │   └── first-dashboard.md
    │   │   └── user-guides
    │   │   │   ├── actions.md
    │   │   │   ├── assets.md
    │   │   │   ├── button.md
    │   │   │   ├── card.md
    │   │   │   ├── components.md
    │   │   │   ├── container.md
    │   │   │   ├── controls.md
    │   │   │   ├── custom-actions.md
    │   │   │   ├── custom-charts.md
    │   │   │   ├── custom-components.md
    │   │   │   ├── custom-css.md
    │   │   │   ├── custom-figures.md
    │   │   │   ├── custom-tables.md
    │   │   │   ├── dashboard.md
    │   │   │   ├── data.md
    │   │   │   ├── extensions.md
    │   │   │   ├── figure.md
    │   │   │   ├── filters.md
    │   │   │   ├── graph.md
    │   │   │   ├── install.md
    │   │   │   ├── kedro-data-catalog.md
    │   │   │   ├── layouts.md
    │   │   │   ├── navigation.md
    │   │   │   ├── pages.md
    │   │   │   ├── parameters.md
    │   │   │   ├── run-deploy.md
    │   │   │   ├── selectors.md
    │   │   │   ├── table.md
    │   │   │   ├── tabs.md
    │   │   │   ├── text.md
    │   │   │   ├── themes.md
    │   │   │   └── visual-formatting.md
    │   └── stylesheets
    │   │   ├── extra.css
    │   │   └── logo.svg
    ├── examples
    │   ├── README.md
    │   ├── bootstrap
    │   │   └── app.py
    │   ├── dev
    │   │   ├── app.py
    │   │   ├── assets
    │   │   │   ├── app.svg
    │   │   │   ├── css
    │   │   │   │   └── custom.css
    │   │   │   ├── favicon.ico
    │   │   │   ├── images
    │   │   │   │   └── icons
    │   │   │   │   │   ├── download.svg
    │   │   │   │   │   ├── filters.svg
    │   │   │   │   │   ├── line-chart.svg
    │   │   │   │   │   └── use-case.svg
    │   │   │   └── logo.svg
    │   │   ├── requirements.in
    │   │   ├── requirements.txt
    │   │   └── yaml_version
    │   │   │   ├── app.py
    │   │   │   └── dashboard.yaml
    │   ├── pyproject.toml
    │   ├── scratch_dev
    │   │   ├── app.py
    │   │   ├── assets
    │   │   │   ├── css
    │   │   │   │   └── custom.css
    │   │   │   ├── favicon.ico
    │   │   │   └── images
    │   │   │   │   └── app.svg
    │   │   ├── charts.py
    │   │   ├── data.yaml
    │   │   └── yaml_version
    │   │   │   ├── app.py
    │   │   │   ├── custom_charts.py
    │   │   │   └── dashboard.yaml
    │   ├── tutorial
    │   │   ├── app.py
    │   │   └── assets
    │   │   │   └── logo.svg
    │   └── visual-vocabulary
    │   │   ├── LICENSE.txt
    │   │   ├── README.md
    │   │   ├── app.py
    │   │   ├── assets
    │   │       ├── app.svg
    │   │       ├── css
    │   │       │   └── custom.css
    │   │       ├── favicon.ico
    │   │       ├── images
    │   │       │   └── charts
    │   │       │   │   ├── arc.svg
    │   │       │   │   ├── area.svg
    │   │       │   │   ├── bar.svg
    │   │       │   │   ├── barcode.svg
    │   │       │   │   ├── beeswarm.svg
    │   │       │   │   ├── boxplot.svg
    │   │       │   │   ├── bubble-map.svg
    │   │       │   │   ├── bubble-timeline.svg
    │   │       │   │   ├── bubble.svg
    │   │       │   │   ├── bullet.svg
    │   │       │   │   ├── bump.svg
    │   │       │   │   ├── butterfly.svg
    │   │       │   │   ├── chord.svg
    │   │       │   │   ├── choropleth.svg
    │   │       │   │   ├── column-and-line.svg
    │   │       │   │   ├── column.svg
    │   │       │   │   ├── connected-scatter.svg
    │   │       │   │   ├── correlation-matrix.svg
    │   │       │   │   ├── cumulative-curve.svg
    │   │       │   │   ├── diverging-bar.svg
    │   │       │   │   ├── diverging-stacked-bar.svg
    │   │       │   │   ├── donut.svg
    │   │       │   │   ├── dot-map.svg
    │   │       │   │   ├── dumbbell.svg
    │   │       │   │   ├── fan.svg
    │   │       │   │   ├── flow-map.svg
    │   │       │   │   ├── funnel.svg
    │   │       │   │   ├── gantt.svg
    │   │       │   │   ├── gridplot.svg
    │   │       │   │   ├── heatmap.svg
    │   │       │   │   ├── histogram.svg
    │   │       │   │   ├── line.svg
    │   │       │   │   ├── lollipop.svg
    │   │       │   │   ├── marimekko.svg
    │   │       │   │   ├── network.svg
    │   │       │   │   ├── ordered-bar.svg
    │   │       │   │   ├── ordered-bubble.svg
    │   │       │   │   ├── ordered-column.svg
    │   │       │   │   ├── paired-bar.svg
    │   │       │   │   ├── paired-column.svg
    │   │       │   │   ├── parallel-coordinates.svg
    │   │       │   │   ├── pictogram.svg
    │   │       │   │   ├── pie.svg
    │   │       │   │   ├── radar.svg
    │   │       │   │   ├── radial.svg
    │   │       │   │   ├── sankey.svg
    │   │       │   │   ├── scatter-matrix.svg
    │   │       │   │   ├── scatter.svg
    │   │       │   │   ├── slope.svg
    │   │       │   │   ├── sparkline.svg
    │   │       │   │   ├── stacked-bar.svg
    │   │       │   │   ├── stacked-column.svg
    │   │       │   │   ├── stepped-line.svg
    │   │       │   │   ├── surplus-deficit-filled-line.svg
    │   │       │   │   ├── treemap.svg
    │   │       │   │   ├── venn.svg
    │   │       │   │   ├── violin.svg
    │   │       │   │   └── waterfall.svg
    │   │       └── logo.svg
    │   │   ├── chart_groups.py
    │   │   ├── custom_charts.py
    │   │   ├── custom_components.py
    │   │   ├── pages
    │   │       ├── __init__.py
    │   │       ├── _factories.py
    │   │       ├── _pages_utils.py
    │   │       ├── correlation.py
    │   │       ├── deviation.py
    │   │       ├── distribution.py
    │   │       ├── examples
    │   │       │   ├── __init__.py
    │   │       │   ├── area.py
    │   │       │   ├── bar.py
    │   │       │   ├── boxplot.py
    │   │       │   ├── bubble.py
    │   │       │   ├── bubble_map.py
    │   │       │   ├── butterfly.py
    │   │       │   ├── choropleth.py
    │   │       │   ├── column_and_line.py
    │   │       │   ├── connected_scatter.py
    │   │       │   ├── diverging_bar.py
    │   │       │   ├── diverging_stacked_bar.py
    │   │       │   ├── donut.py
    │   │       │   ├── dot_map.py
    │   │       │   ├── dumbbell.py
    │   │       │   ├── funnel.py
    │   │       │   ├── gantt.py
    │   │       │   ├── heatmap.py
    │   │       │   ├── histogram.py
    │   │       │   ├── line.py
    │   │       │   ├── lollipop.py
    │   │       │   ├── magnitude_column.py
    │   │       │   ├── ordered_bar.py
    │   │       │   ├── ordered_column.py
    │   │       │   ├── paired_bar.py
    │   │       │   ├── paired_column.py
    │   │       │   ├── parallel_coordinates.py
    │   │       │   ├── pie.py
    │   │       │   ├── radar.py
    │   │       │   ├── sankey.py
    │   │       │   ├── scatter.py
    │   │       │   ├── scatter_matrix.py
    │   │       │   ├── sparkline.py
    │   │       │   ├── stacked_bar.py
    │   │       │   ├── stacked_column.py
    │   │       │   ├── stepped_line.py
    │   │       │   ├── time_column.py
    │   │       │   ├── treemap.py
    │   │       │   ├── violin.py
    │   │       │   └── waterfall.py
    │   │       ├── flow.py
    │   │       ├── magnitude.py
    │   │       ├── part_to_whole.py
    │   │       ├── ranking.py
    │   │       ├── spatial.py
    │   │       └── time.py
    │   │   ├── requirements.in
    │   │   └── requirements.txt
    ├── hatch.toml
    ├── mkdocs.yml
    ├── package.json
    ├── pyproject.toml
    ├── schemas
    │   ├── 0.1.42.json
    │   ├── 0.1.43.dev0.json
    │   └── generate.py
    ├── src
    │   └── vizro
    │   │   ├── __init__.py
    │   │   ├── _constants.py
    │   │   ├── _themes
    │   │       ├── __init__.py
    │   │       ├── _colors.py
    │   │       ├── _common_template.py
    │   │       ├── generate_plotly_templates.py
    │   │       ├── template_dashboard_overrides.py
    │   │       ├── vizro_dark.json
    │   │       └── vizro_light.json
    │   │   ├── _vizro.py
    │   │   ├── _vizro_utils.py
    │   │   ├── actions
    │   │       ├── __init__.py
    │   │       ├── _abstract_action.py
    │   │       ├── _action_loop
    │   │       │   ├── __init__.py
    │   │       │   ├── _action_loop.py
    │   │       │   ├── _build_action_loop_callbacks.py
    │   │       │   └── _get_action_loop_components.py
    │   │       ├── _actions_utils.py
    │   │       ├── _export_data.py
    │   │       ├── _filter_action.py
    │   │       ├── _filter_interaction.py
    │   │       ├── _on_page_load.py
    │   │       └── _parameter_action.py
    │   │   ├── charts
    │   │       ├── __init__.py
    │   │       └── _charts_utils.py
    │   │   ├── figures
    │   │       ├── __init__.py
    │   │       └── library.py
    │   │   ├── integrations
    │   │       ├── __init__.py
    │   │       └── kedro
    │   │       │   ├── __init__.py
    │   │       │   └── _data_manager.py
    │   │   ├── managers
    │   │       ├── __init__.py
    │   │       ├── _data_manager.py
    │   │       ├── _managers_utils.py
    │   │       └── _model_manager.py
    │   │   ├── models
    │   │       ├── __init__.py
    │   │       ├── _action
    │   │       │   ├── __init__.py
    │   │       │   ├── _action.py
    │   │       │   └── _actions_chain.py
    │   │       ├── _base.py
    │   │       ├── _components
    │   │       │   ├── __init__.py
    │   │       │   ├── _components_utils.py
    │   │       │   ├── _form.py
    │   │       │   ├── ag_grid.py
    │   │       │   ├── button.py
    │   │       │   ├── card.py
    │   │       │   ├── container.py
    │   │       │   ├── figure.py
    │   │       │   ├── form
    │   │       │   │   ├── __init__.py
    │   │       │   │   ├── _alert.py
    │   │       │   │   ├── _form_utils.py
    │   │       │   │   ├── _text_area.py
    │   │       │   │   ├── _user_input.py
    │   │       │   │   ├── checklist.py
    │   │       │   │   ├── date_picker.py
    │   │       │   │   ├── dropdown.py
    │   │       │   │   ├── radio_items.py
    │   │       │   │   ├── range_slider.py
    │   │       │   │   └── slider.py
    │   │       │   ├── graph.py
    │   │       │   ├── table.py
    │   │       │   ├── tabs.py
    │   │       │   └── text.py
    │   │       ├── _controls
    │   │       │   ├── __init__.py
    │   │       │   ├── _controls_utils.py
    │   │       │   ├── filter.py
    │   │       │   └── parameter.py
    │   │       ├── _dashboard.py
    │   │       ├── _flex.py
    │   │       ├── _grid.py
    │   │       ├── _models_utils.py
    │   │       ├── _navigation
    │   │       │   ├── __init__.py
    │   │       │   ├── _navigation_utils.py
    │   │       │   ├── accordion.py
    │   │       │   ├── nav_bar.py
    │   │       │   ├── nav_link.py
    │   │       │   └── navigation.py
    │   │       ├── _page.py
    │   │       ├── _tooltip.py
    │   │       └── types.py
    │   │   ├── plotly
    │   │       ├── __init__.py
    │   │       └── express.py
    │   │   ├── py.typed
    │   │   ├── static
    │   │       ├── css
    │   │       │   ├── aggrid.css
    │   │       │   ├── bootstrap_overwrites.css
    │   │       │   ├── code.css
    │   │       │   ├── container.css
    │   │       │   ├── datepicker.css
    │   │       │   ├── dropdown.css
    │   │       │   ├── figures.css
    │   │       │   ├── flex-grid.css
    │   │       │   ├── fonts
    │   │       │   │   ├── inter-variable-font.ttf
    │   │       │   │   └── material-symbols-outlined.woff2
    │   │       │   ├── index.css
    │   │       │   ├── layout.css
    │   │       │   ├── mantine_dates.css
    │   │       │   ├── scroll_bar.css
    │   │       │   ├── slider.css
    │   │       │   ├── table.css
    │   │       │   ├── tabs.css
    │   │       │   ├── tiles.css
    │   │       │   ├── tooltip.css
    │   │       │   └── vizro-bootstrap.min.css
    │   │       ├── images
    │   │       │   └── error_404.svg
    │   │       └── js
    │   │       │   ├── actions
    │   │       │       └── build_action_loop_callbacks.js
    │   │       │   └── models
    │   │       │       ├── container.js
    │   │       │       ├── dashboard.js
    │   │       │       ├── page.js
    │   │       │       ├── range_slider.js
    │   │       │       └── slider.js
    │   │   └── tables
    │   │       ├── __init__.py
    │   │       ├── _dash_ag_grid.py
    │   │       └── _dash_table.py
    ├── tests
    │   ├── conftest.py
    │   ├── e2e
    │   │   ├── component_library
    │   │   │   └── test_component_library.py
    │   │   ├── screenshots
    │   │   │   ├── chrome
    │   │   │   │   ├── main_ag_grid_page.png
    │   │   │   │   ├── main_button_styles.png
    │   │   │   │   ├── main_collapsible_containers_flex.png
    │   │   │   │   ├── main_collapsible_containers_flex_switched.png
    │   │   │   │   ├── main_collapsible_containers_grid.png
    │   │   │   │   ├── main_collapsible_containers_grid_switched.png
    │   │   │   │   ├── main_collapsible_subcontainers_flex.png
    │   │   │   │   ├── main_container_variants_dark_theme.png
    │   │   │   │   ├── main_container_variants_light_theme.png
    │   │   │   │   ├── main_controls_tooltip_and_icon_dark_theme.png
    │   │   │   │   ├── main_controls_tooltip_and_icon_light_theme.png
    │   │   │   │   ├── main_export_action_page[one_page].png
    │   │   │   │   ├── main_extra_parameter.png
    │   │   │   │   ├── main_filters_inside_containers_page.png
    │   │   │   │   ├── main_flex_default_layout.png
    │   │   │   │   ├── main_flex_layout_all_params.png
    │   │   │   │   ├── main_flex_layout_direction_and_graph.png
    │   │   │   │   ├── main_flex_layout_gap_and_table.png
    │   │   │   │   ├── main_flex_layout_wrap_and_ag_grid.png
    │   │   │   │   ├── main_homepage.png
    │   │   │   │   ├── main_kpi_card_component_library.png
    │   │   │   │   ├── main_kpi_indicators_page.png
    │   │   │   │   ├── main_navbar_filters_page[navbar_pages].png
    │   │   │   │   ├── main_navbar_kpi_indicators_page[navbar_accordions].png
    │   │   │   │   ├── main_navbar_kpi_indicators_page[navbar_navlink].png
    │   │   │   │   ├── main_nested_tabs_filters_page.png
    │   │   │   │   ├── main_table_interactions_page.png
    │   │   │   │   ├── main_table_page.png
    │   │   │   │   └── main_tabs_parameters_page.png
    │   │   │   ├── chrome_mobile
    │   │   │   │   ├── main_filter_interactions_dark_theme_page[mobile].png
    │   │   │   │   ├── main_filter_interactions_page[mobile].png
    │   │   │   │   └── main_homepage_mobile.png
    │   │   │   └── firefox
    │   │   │   │   ├── main_ag_grid_page.png
    │   │   │   │   ├── main_button_styles.png
    │   │   │   │   ├── main_collapsible_containers_flex.png
    │   │   │   │   ├── main_collapsible_containers_flex_switched.png
    │   │   │   │   ├── main_collapsible_containers_grid.png
    │   │   │   │   ├── main_collapsible_containers_grid_switched.png
    │   │   │   │   ├── main_collapsible_subcontainers_flex.png
    │   │   │   │   ├── main_container_variants_dark_theme.png
    │   │   │   │   ├── main_container_variants_light_theme.png
    │   │   │   │   ├── main_controls_tooltip_and_icon_dark_theme.png
    │   │   │   │   ├── main_controls_tooltip_and_icon_light_theme.png
    │   │   │   │   ├── main_export_action_page[one_page].png
    │   │   │   │   ├── main_extra_parameter.png
    │   │   │   │   ├── main_filters_inside_containers_page.png
    │   │   │   │   ├── main_flex_default_layout.png
    │   │   │   │   ├── main_flex_layout_all_params.png
    │   │   │   │   ├── main_flex_layout_direction_and_graph.png
    │   │   │   │   ├── main_flex_layout_gap_and_table.png
    │   │   │   │   ├── main_flex_layout_wrap_and_ag_grid.png
    │   │   │   │   ├── main_homepage.png
    │   │   │   │   ├── main_kpi_indicators_page.png
    │   │   │   │   ├── main_navbar_filters_page[navbar_pages].png
    │   │   │   │   ├── main_navbar_kpi_indicators_page[navbar_accordions].png
    │   │   │   │   ├── main_navbar_kpi_indicators_page[navbar_navlink].png
    │   │   │   │   ├── main_nested_tabs_filters_page.png
    │   │   │   │   ├── main_table_interactions_page.png
    │   │   │   │   ├── main_table_page.png
    │   │   │   │   └── main_tabs_parameters_page.png
    │   │   └── vizro
    │   │   │   ├── conftest.py
    │   │   │   ├── custom_components
    │   │   │       ├── custom_actions
    │   │   │       │   └── custom_actions.py
    │   │   │       ├── custom_charts
    │   │   │       │   └── bar_custom.py
    │   │   │       └── custom_components
    │   │   │       │   ├── dropdown.py
    │   │   │       │   └── range_slider_non_cross.py
    │   │   │   ├── dashboards
    │   │   │       ├── assets
    │   │   │       │   ├── banner.svg
    │   │   │       │   ├── css
    │   │   │       │   │   ├── custom.css
    │   │   │       │   │   └── typography.css
    │   │   │       │   ├── favicon.ico
    │   │   │       │   ├── images
    │   │   │       │   │   └── icons
    │   │   │       │   │   │   └── content
    │   │   │       │   │   │       ├── collections.svg
    │   │   │       │   │   │       ├── features.svg
    │   │   │       │   │   │       └── hypotheses.svg
    │   │   │       │   └── logo.jpeg
    │   │   │       ├── default
    │   │   │       │   ├── dashboard.py
    │   │   │       │   ├── dashboard_navbar_accordions.py
    │   │   │       │   ├── dashboard_navbar_navlink.py
    │   │   │       │   ├── dashboard_navbar_pages.py
    │   │   │       │   ├── dashboard_one_page.py
    │   │   │       │   ├── dynamic_filters_data.yaml
    │   │   │       │   └── pages
    │   │   │       │   │   ├── ag_grid_interactions_page.py
    │   │   │       │   │   ├── ag_grid_page.py
    │   │   │       │   │   ├── collapsible_containers_pages.py
    │   │   │       │   │   ├── container_pages.py
    │   │   │       │   │   ├── custom_components_page.py
    │   │   │       │   │   ├── datepicker_page.py
    │   │   │       │   │   ├── datepicker_parameters_page.py
    │   │   │       │   │   ├── dynamic_data_page.py
    │   │   │       │   │   ├── dynamic_filters_pages.py
    │   │   │       │   │   ├── export_action_page.py
    │   │   │       │   │   ├── extras_page.py
    │   │   │       │   │   ├── filter_and_param_page.py
    │   │   │       │   │   ├── filter_interactions_page.py
    │   │   │       │   │   ├── filters_inside_containters_page.py
    │   │   │       │   │   ├── filters_page.py
    │   │   │       │   │   ├── homepage.py
    │   │   │       │   │   ├── kpi_indicators_page.py
    │   │   │       │   │   ├── layout_pages.py
    │   │   │       │   │   ├── parameters_page.py
    │   │   │       │   │   ├── table_interactions_page.py
    │   │   │       │   │   └── table_page.py
    │   │   │       └── yaml
    │   │   │       │   ├── dashboard.yaml
    │   │   │       │   └── dashboard_yaml.py
    │   │   │   ├── test_dom_elements
    │   │   │       ├── test_actions.py
    │   │   │       ├── test_charts.py
    │   │   │       ├── test_custom_components.py
    │   │   │       ├── test_datepicker.py
    │   │   │       ├── test_dynamic_data.py
    │   │   │       ├── test_filter_and_param_config.py
    │   │   │       ├── test_filters.py
    │   │   │       ├── test_filters_inside_containers.py
    │   │   │       ├── test_interactions.py
    │   │   │       ├── test_pages.py
    │   │   │       ├── test_parameters.py
    │   │   │       ├── test_statelessness.py
    │   │   │       ├── test_table.py
    │   │   │       ├── test_table_ag_grid.py
    │   │   │       ├── test_themes.py
    │   │   │       └── test_tooltip_icon.py
    │   │   │   └── test_screenshots
    │   │   │       └── test_screenshots.py
    │   ├── integration
    │   │   ├── test_examples.py
    │   │   └── test_navigation.py
    │   ├── js
    │   │   └── models
    │   │   │   └── dashboard.test.js
    │   ├── tests_utils
    │   │   ├── __init__.py
    │   │   ├── asserts.py
    │   │   ├── demo_asserts.py
    │   │   └── e2e
    │   │   │   ├── asserts.py
    │   │   │   └── vizro
    │   │   │       ├── checkers.py
    │   │   │       ├── constants.py
    │   │   │       ├── dashboards
    │   │   │           └── wait-for-it.sh
    │   │   │       ├── files
    │   │   │           ├── filtered_scatter_base.csv
    │   │   │           └── unfiltered_line_base.csv
    │   │   │       ├── navigation.py
    │   │   │       ├── paths.py
    │   │   │       └── waiters.py
    │   └── unit
    │   │   ├── test_vizro.py
    │   │   └── vizro
    │   │       ├── actions
    │   │           ├── _action_loop
    │   │           │   └── test_get_action_loop_components.py
    │   │           ├── conftest.py
    │   │           ├── test_abstract_action.py
    │   │           ├── test_actions_utils.py
    │   │           ├── test_export_data.py
    │   │           ├── test_filter_action.py
    │   │           ├── test_filter_interaction.py
    │   │           ├── test_legacy_export_data.py
    │   │           ├── test_legacy_filter_interaction.py
    │   │           ├── test_on_page_load.py
    │   │           └── test_parameter_action.py
    │   │       ├── charts
    │   │           └── test_charts_utils.py
    │   │       ├── conftest.py
    │   │       ├── figures
    │   │           └── test_kpi_cards.py
    │   │       ├── integrations
    │   │           └── kedro
    │   │           │   ├── catalog.yaml
    │   │           │   └── test_kedro_data_manager.py
    │   │       ├── managers
    │   │           ├── test_data_manager.py
    │   │           └── test_model_manager.py
    │   │       ├── models
    │   │           ├── _action
    │   │           │   ├── test_action.py
    │   │           │   └── test_actions_chain.py
    │   │           ├── _components
    │   │           │   ├── conftest.py
    │   │           │   ├── form
    │   │           │   │   ├── test_checklist.py
    │   │           │   │   ├── test_date_picker.py
    │   │           │   │   ├── test_dropdown.py
    │   │           │   │   ├── test_radio_items.py
    │   │           │   │   ├── test_range_slider.py
    │   │           │   │   ├── test_slider.py
    │   │           │   │   ├── test_text_area.py
    │   │           │   │   └── test_user_input.py
    │   │           │   ├── test_ag_grid.py
    │   │           │   ├── test_button.py
    │   │           │   ├── test_card.py
    │   │           │   ├── test_container.py
    │   │           │   ├── test_figure.py
    │   │           │   ├── test_graph.py
    │   │           │   ├── test_table.py
    │   │           │   ├── test_tabs.py
    │   │           │   └── test_text.py
    │   │           ├── _controls
    │   │           │   ├── conftest.py
    │   │           │   ├── test_filter.py
    │   │           │   └── test_parameter.py
    │   │           ├── _navigation
    │   │           │   ├── conftest.py
    │   │           │   ├── test_accordion.py
    │   │           │   ├── test_nav_bar.py
    │   │           │   ├── test_nav_link.py
    │   │           │   └── test_navigation.py
    │   │           ├── conftest.py
    │   │           ├── test_base.py
    │   │           ├── test_dashboard.py
    │   │           ├── test_flex.py
    │   │           ├── test_grid.py
    │   │           ├── test_legacy_layout.py
    │   │           ├── test_models_utils.py
    │   │           ├── test_page.py
    │   │           ├── test_tooltip.py
    │   │           └── test_types.py
    │   │       ├── plotly
    │   │           └── test_express.py
    │   │       ├── tables
    │   │           ├── test_dash_ag_grid.py
    │   │           └── test_dash_table.py
    │   │       ├── test_vizro_utils.py
    │   │       └── themes
    │   │           └── test_create_chart_template.py
    └── tools
    │   ├── download_static_files.py
    │   └── run_jest.sh
└── vizro-mcp
    ├── .dockerignore
    ├── CHANGELOG.md
    ├── Dockerfile
    ├── LICENSE.txt
    ├── README.md
    ├── assets
        ├── claude_prompt.png
        ├── claude_validate.png
        ├── claude_working.png
        ├── cursor_working.png
        └── vizro-mcp.gif
    ├── changelog.d
        ├── 20250630_103215_runner.md
        ├── 20250630_120648_maximilian_schulz_mcp.md
        ├── new_fragment.md.j2
        └── scriv.ini
    ├── glama.json
    ├── hatch.toml
    ├── pyproject.toml
    ├── src
        └── vizro_mcp
        │   ├── __init__.py
        │   ├── _schemas
        │       ├── __init__.py
        │       └── schemas.py
        │   ├── _utils
        │       ├── __init__.py
        │       ├── configs.py
        │       ├── prompts.py
        │       └── utils.py
        │   ├── py.typed
        │   └── server.py
    ├── tests
        └── unit
        │   └── vizro_mcp
        │       └── test_server.py
    └── uv.lock


/.devcontainer/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM mcr.microsoft.com/devcontainers/base:debian
2 | 
3 | WORKDIR /tmp/scripts/
4 | COPY install-hatch.sh .
5 | RUN chmod +x install-hatch.sh && ./install-hatch.sh && rm install-hatch.sh
6 | 
7 | USER vscode
8 | RUN echo "alias hr='hatch run'" >> ~/.bashrc
9 | 


--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | # Documentation for this file can be found at:
2 | # https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository
3 | 
4 | blank_issues_enabled: false
5 | contact_links:
6 |   - name: 📝 Documentation
7 |     url: https://vizro.readthedocs.io
8 |     about: To learn more about how Vizro works
9 | 


--------------------------------------------------------------------------------
/.github/actions/ctrf-report/action.yml:
--------------------------------------------------------------------------------
 1 | name: "Create CTRF reports for tests"
 2 | description: "Creates CTRF reports for tests"
 3 | 
 4 | runs:
 5 |   using: "composite"
 6 |   steps:
 7 |     - name: Publish test report
 8 |       # used pinned commit hash for security reasons
 9 |       uses: ctrf-io/github-test-reporter@27b97adba93f02142c573c8a710045cac0d874ae # v1.0.14
10 |       with:
11 |         report-path: "./.ctrf/ctrf-report.json"
12 |         failed-folded-report: true
13 |         flaky-rate-report: true
14 |         previous-results-max: 100
15 |         artifact-name: ctrf-report-${{ env.ARTIFACT_NAME_POSTFIX }}
16 |       env:
17 |         GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
18 | 
19 |     - name: Upload CTRF report
20 |       uses: actions/upload-artifact@v4
21 |       with:
22 |         name: ctrf-report-${{ env.ARTIFACT_NAME_POSTFIX }}
23 |         path: /home/runner/work/vizro/vizro/.ctrf/ctrf-report.json
24 | 


--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
 1 | # To get started with Dependabot version updates, you'll need to specify which
 2 | # package ecosystems to update and where the package manifests are located.
 3 | # Please see the documentation for all configuration options:
 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
 5 | 
 6 | version: 2
 7 | updates:
 8 |   # Github Actions
 9 |   - package-ecosystem: "github-actions"
10 |     directory: "/"
11 |     schedule:
12 |       interval: "monthly"
13 |   # Python
14 |   - package-ecosystem: "pip"
15 |     directory: "/"
16 |     schedule:
17 |       interval: "weekly"
18 | 


--------------------------------------------------------------------------------
/.github/images/Vizro_Github_Banner_Dark_Mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/Vizro_Github_Banner_Dark_Mode.png


--------------------------------------------------------------------------------
/.github/images/Vizro_Github_Banner_Light_Mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/Vizro_Github_Banner_Light_Mode.png


--------------------------------------------------------------------------------
/.github/images/code_dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/code_dashboard.png


--------------------------------------------------------------------------------
/.github/images/gapminder_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/gapminder_example.png


--------------------------------------------------------------------------------
/.github/images/huggingface_collection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/huggingface_collection.png


--------------------------------------------------------------------------------
/.github/images/toolkit_dashboard_examples.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/toolkit_dashboard_examples.png


--------------------------------------------------------------------------------
/.github/images/toolkit_visual_vocabulary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/toolkit_visual_vocabulary.png


--------------------------------------------------------------------------------
/.github/images/toolkit_vizro_ai.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/toolkit_vizro_ai.gif


--------------------------------------------------------------------------------
/.github/images/toolkit_vizro_ai_fallback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/toolkit_vizro_ai_fallback.png


--------------------------------------------------------------------------------
/.github/images/vizro_spash_teaser.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/vizro_spash_teaser.gif


--------------------------------------------------------------------------------
/.github/images/vizro_spash_teaser_fallback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/.github/images/vizro_spash_teaser_fallback.png


--------------------------------------------------------------------------------
/.github/labeler.yml:
--------------------------------------------------------------------------------
1 | "Vizro-AI :robot:":
2 |   - changed-files:
3 |       - any-glob-to-any-file: ["vizro-ai/**"]
4 | 


--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
 1 | ## Description
 2 | 
 3 | ## Screenshot
 4 | 
 5 | ## Notice
 6 | 
 7 | - [ ] I acknowledge and agree that, by checking this box and clicking "Submit Pull Request":
 8 | 
 9 |     - I submit this contribution under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0.txt) and represent that I am entitled to do so on behalf of myself, my employer, or relevant third parties, as applicable.
10 |     - I certify that (a) this contribution is my original creation and / or (b) to the extent it is not my original creation, I am authorized to submit this contribution on behalf of the original creator(s) or their licensees.
11 |     - I certify that the use of this contribution as authorized by the Apache 2.0 license does not violate the intellectual property rights of anyone else.
12 |     - I have not referenced individuals, products or companies in any commits, directly or indirectly.
13 |     - I have not added data or restricted code in any commits, directly or indirectly.
14 | 


--------------------------------------------------------------------------------
/.github/workflows/checks-workflows.yml:
--------------------------------------------------------------------------------
 1 | name: Checks for GitHub workflows
 2 | 
 3 | on:
 4 |   push:
 5 |     branches: [main]
 6 |   pull_request:
 7 |     branches:
 8 |       - main
 9 | 
10 | env:
11 |   PYTHONUNBUFFERED: 1
12 |   FORCE_COLOR: 1
13 |   PYTHON_VERSION: "3.12"
14 | 
15 | jobs:
16 |   checks-workflows:
17 |     runs-on: ubuntu-latest
18 | 
19 |     steps:
20 |       - uses: actions/checkout@v4
21 | 
22 |       - name: Set up Python ${{ env.PYTHON_VERSION }}
23 |         uses: actions/setup-python@v5
24 |         with:
25 |           python-version: ${{ env.PYTHON_VERSION }}
26 | 
27 |       - name: Checks for GitHub workflows
28 |         run: python tools/scan_yaml_for_risky_text.py .github/workflows
29 | 


--------------------------------------------------------------------------------
/.github/workflows/github-repo-stats.yml:
--------------------------------------------------------------------------------
 1 | name: github-repo-stats
 2 | 
 3 | on:
 4 |   schedule:
 5 |     # Run this once per day, towards the end of the day for keeping the most
 6 |     # recent data point most meaningful (hours are interpreted in UTC).
 7 |     - cron: "0 23 * * *"
 8 |   workflow_dispatch: # Allow for running this manually.
 9 | 
10 | jobs:
11 |   github-repo-stats:
12 |     runs-on: ubuntu-latest
13 |     steps:
14 |       - name: Run GitHub repo stats
15 |         # Use latest release.
16 |         uses: jgehrcke/github-repo-stats@RELEASE
17 |         with:
18 |           ghtoken: ${{ secrets.VIZRO_SVC_PAT }}
19 | 


--------------------------------------------------------------------------------
/.github/workflows/labeler.yml:
--------------------------------------------------------------------------------
 1 | # This workflow will triage pull requests and apply a label based on the
 2 | # paths that are modified in the pull request.
 3 | name: Labeler
 4 | on:
 5 |   # Note this job uses pull_request_target so we should not add steps that check out, build, or run untrusted code.
 6 |   # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target
 7 |   pull_request_target:
 8 |     paths:
 9 |       - "vizro-ai/**"
10 | 
11 | jobs:
12 |   label:
13 |     runs-on: ubuntu-latest
14 |     permissions:
15 |       contents: read
16 |       pull-requests: write
17 | 
18 |     steps:
19 |       - uses: actions/labeler@v5
20 | 


--------------------------------------------------------------------------------
/.github/workflows/lint-vizro-all.yml:
--------------------------------------------------------------------------------
 1 | name: Lint
 2 | 
 3 | defaults:
 4 |   run:
 5 |     working-directory: vizro-core # but could be any folder
 6 | 
 7 | on:
 8 |   push:
 9 |     branches: [main]
10 |   pull_request:
11 |     branches:
12 |       - main
13 | 
14 | env:
15 |   PYTHONUNBUFFERED: 1
16 |   FORCE_COLOR: 1
17 |   PYTHON_VERSION: "3.12"
18 | 
19 | jobs:
20 |   lint-vizro-all:
21 |     runs-on: ubuntu-latest
22 | 
23 |     steps:
24 |       - uses: actions/checkout@v4
25 | 
26 |       - name: Set up Python ${{ env.PYTHON_VERSION }}
27 |         uses: actions/setup-python@v5
28 |         with:
29 |           python-version: ${{ env.PYTHON_VERSION }}
30 | 
31 |       - name: Install Hatch
32 |         run: pip install hatch
33 | 
34 |       - name: Lint
35 |         run: hatch run lint
36 | 


--------------------------------------------------------------------------------
/.stylelintrc:
--------------------------------------------------------------------------------
 1 | {
 2 |   "extends": "stylelint-config-standard",
 3 |   "plugins": ["stylelint-order"],
 4 |   "rules": {
 5 |     "order/properties-alphabetical-order": true,
 6 |     "selector-class-pattern": null,
 7 |     "custom-property-pattern": null,
 8 |     "color-function-notation": "legacy",
 9 |     "alpha-value-notation": "number",
10 |     "color-hex-length": "long",
11 |     "selector-not-notation": null,
12 |     "declaration-property-value-no-unknown": true
13 |   }
14 | }
15 | 


--------------------------------------------------------------------------------
/.vale/.vale.ini:
--------------------------------------------------------------------------------
 1 | StylesPath = styles
 2 | 
 3 | MinAlertLevel = suggestion
 4 | 
 5 | 
 6 | [vizro-core/docs/pages/*.md]
 7 | BasedOnStyles = Vale, Microsoft
 8 | Vale.Spelling = NO
 9 | 
10 | [vizro-ai/docs/pages/*.md]
11 | BasedOnStyles = Vale, Microsoft
12 | Vale.Spelling = NO
13 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/AMPM.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: Use 'AM' or 'PM' (preceded by a space).
 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms
 4 | level: error
 5 | nonword: true
 6 | tokens:
 7 |   - '\d{1,2}[AP]M'
 8 |   - '\d{1,2} ?[ap]m'
 9 |   - '\d{1,2} ?[aApP]\.[mM]\.'
10 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Accessibility.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't use language (such as '%s') that defines people by their disability."
 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms
 4 | level: suggestion
 5 | ignorecase: true
 6 | tokens:
 7 |   - a victim of
 8 |   - able-bodied
 9 |   - affected by
10 |   - an epileptic
11 |   - crippled
12 |   - disabled
13 |   - dumb
14 |   - handicapped
15 |   - handicaps
16 |   - healthy
17 |   - lame
18 |   - maimed
19 |   - missing a limb
20 |   - mute
21 |   - normal
22 |   - sight-impaired
23 |   - stricken with
24 |   - suffers from
25 |   - vision-impaired
26 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Auto.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "In general, don't hyphenate '%s'."
 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto
 4 | ignorecase: true
 5 | level: error
 6 | action:
 7 |   name: convert
 8 |   params:
 9 |     - simple
10 | tokens:
11 |   - 'auto-\w+'
12 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Avoid.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't use '%s'. See the A-Z word list for details."
 3 | # See the A-Z word list
 4 | link: https://docs.microsoft.com/en-us/style-guide
 5 | ignorecase: true
 6 | level: error
 7 | tokens:
 8 |   - abortion
 9 |   - and so on
10 |   - leverage
11 |   - utilize
12 |   - facilitate
13 |   - backbone
14 |   - backend
15 |   - contiguous selection
16 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Dashes.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Remove the spaces around '%s'."
 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes
 4 | ignorecase: true
 5 | nonword: true
 6 | level: error
 7 | action:
 8 |   name: edit
 9 |   params:
10 |     - remove
11 |     - " "
12 | tokens:
13 |   - '[—–]\s|\s[—–]'
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/DateFormat.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: Use 'July 31, 2016' format, not '%s'.
3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms
4 | ignorecase: true
5 | level: error
6 | nonword: true
7 | tokens:
8 |   - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}'
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/DateNumbers.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't use ordinal numbers for dates."
 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates
 4 | level: error
 5 | nonword: true
 6 | ignorecase: true
 7 | raw:
 8 |   - \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?)\b\s*
 9 | tokens:
10 |   - first
11 |   - second
12 |   - third
13 |   - fourth
14 |   - fifth
15 |   - sixth
16 |   - seventh
17 |   - eighth
18 |   - ninth
19 |   - tenth
20 |   - eleventh
21 |   - twelfth
22 |   - thirteenth
23 |   - fourteenth
24 |   - fifteenth
25 |   - sixteenth
26 |   - seventeenth
27 |   - eighteenth
28 |   - nineteenth
29 |   - twentieth
30 |   - twenty-first
31 |   - twenty-second
32 |   - twenty-third
33 |   - twenty-fourth
34 |   - twenty-fifth
35 |   - twenty-sixth
36 |   - twenty-seventh
37 |   - twenty-eighth
38 |   - twenty-ninth
39 |   - thirtieth
40 |   - thirty-first
41 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/DateOrder.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Always spell out the name of the month."
3 | link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates
4 | ignorecase: true
5 | level: error
6 | nonword: true
7 | tokens:
8 |   - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b'
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/FirstPerson.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Use first person (such as '%s') sparingly."
 3 | link: https://docs.microsoft.com/en-us/style-guide/grammar/person
 4 | ignorecase: true
 5 | level: warning
 6 | nonword: true
 7 | tokens:
 8 |   - (?:^|\s)I\s
 9 |   - (?:^|\s)I,\s
10 |   - \bI'd\b
11 |   - \bI'll\b
12 |   - \bI'm\b
13 |   - \bI've\b
14 |   - \bme\b
15 |   - \bmy\b
16 |   - \bmine\b
17 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Foreign.yml:
--------------------------------------------------------------------------------
 1 | extends: substitution
 2 | message: "Use '%s' instead of '%s'."
 3 | link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words
 4 | ignorecase: true
 5 | level: error
 6 | nonword: true
 7 | action:
 8 |   name: replace
 9 | swap:
10 |   '\b(?:eg|e\.g\.|e\.g)[\s,]': for example
11 |   '\b(?:ie|i\.e\.|i\.e)[\s,]': that is
12 |   '\b(?:viz\.)[\s,]': namely
13 |   '\b(?:ergo)[\s,]': therefore
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Gender.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use '%s'."
3 | link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender
4 | level: error
5 | ignorecase: true
6 | tokens:
7 |   - he/she
8 |   - s/he
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/HeadingColons.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Capitalize '%s'."
3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons
4 | nonword: true
5 | level: error
6 | scope: heading
7 | tokens:
8 |   - ':\s[a-z]'
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/HeadingPunctuation.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't use end punctuation in headings."
 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods
 4 | nonword: true
 5 | level: warning
 6 | scope: heading
 7 | action:
 8 |   name: edit
 9 |   params:
10 |     - remove
11 |     - ".!"
12 | tokens:
13 |   - '[a-z][.!](?:\s|$)'
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Hyphens.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "'%s' doesn't need a hyphen."
 3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens
 4 | level: warning
 5 | ignorecase: false
 6 | nonword: true
 7 | action:
 8 |   name: edit
 9 |   params:
10 |     - replace
11 |     - "-"
12 |     - " "
13 | tokens:
14 |   - '\s[^\s-]+ly-'
15 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Negative.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Form a negative number with an en dash, not a hyphen."
 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers
 4 | nonword: true
 5 | level: error
 6 | action:
 7 |   name: edit
 8 |   params:
 9 |     - replace
10 |     - "-"
11 |     - "–"
12 | tokens:
13 |   - '\s-\d+\s'
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Ordinal.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't add -ly to an ordinal number."
 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers
 4 | level: error
 5 | action:
 6 |   name: edit
 7 |   params:
 8 |     - trim
 9 |     - ly
10 | tokens:
11 |   - firstly
12 |   - secondly
13 |   - thirdly
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/OxfordComma.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use the Oxford comma in '%s'."
3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas
4 | scope: sentence
5 | level: suggestion
6 | nonword: true
7 | tokens:
8 |   - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]'
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Percentages.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Use a numeral plus the units."
3 | link: https://docs.microsoft.com/en-us/style-guide/numbers
4 | nonword: true
5 | level: error
6 | tokens:
7 |   - '\b[a-zA-z]+\spercent\b'
8 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/RangeTime.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Use 'to' instead of a dash in '%s'."
 3 | link: https://docs.microsoft.com/en-us/style-guide/numbers
 4 | nonword: true
 5 | level: error
 6 | action:
 7 |   name: edit
 8 |   params:
 9 |     - replace
10 |     - "[-–]"
11 |     - "to"
12 | tokens:
13 |   - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b'
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/SentenceLength.yml:
--------------------------------------------------------------------------------
1 | extends: occurrence
2 | message: "Try to keep sentences short (< 40 words)."
3 | scope: sentence
4 | level: suggestion
5 | max: 40
6 | token: \b(\w+)\b
7 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Spacing.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "'%s' should have one space."
3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods
4 | level: error
5 | nonword: true
6 | tokens:
7 |   - "[a-z][.?!] {2,}[A-Z]"
8 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Spellings.yml:
--------------------------------------------------------------------------------
 1 | extends: spelling
 2 | message: "Did you really mean '%s'?"
 3 | level: error
 4 | ignorecase: true
 5 | ignore:
 6 |   # Located at StylesPath/
 7 |   - Microsoft/ignore.txt
 8 |   - Microsoft/ignore-names.txt
 9 | filters:
10 |   - '[vV]izro.*\b'
11 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Suspended.yml:
--------------------------------------------------------------------------------
1 | extends: existence
2 | message: "Don't use '%s' unless space is limited."
3 | link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens
4 | ignorecase: true
5 | level: warning
6 | tokens:
7 |   - '\w+- and \w+-'
8 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/URLFormat.yml:
--------------------------------------------------------------------------------
 1 | extends: substitution
 2 | message: "Use '%s' instead of '%s'."
 3 | ignorecase: true
 4 | level: error
 5 | action:
 6 |   name: replace
 7 | swap:
 8 |   URL for: URL of
 9 |   an URL: a URL
10 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Units.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't spell out the number in '%s'."
 3 | link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms
 4 | level: error
 5 | raw:
 6 |   - '[a-zA-Z]+\s'
 7 | tokens:
 8 |   - "(?:centi|milli)?meters"
 9 |   - "(?:kilo)?grams"
10 |   - "(?:kilo)?meters"
11 |   - "(?:mega)?pixels"
12 |   - cm
13 |   - inches
14 |   - lb
15 |   - miles
16 |   - pounds
17 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/VizroCapitals.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: Consider your capitalization of '%s'
 3 | level: suggestion
 4 | tokens:
 5 |   - kedro
 6 |   - kedro-viz
 7 |   - vizro
 8 |   - vizro-AI
 9 |   - jupyter
10 |   - notebook
11 |   - github
12 |   - python
13 |   - quantumblack
14 | exceptions:
15 |   - "vizro-*"
16 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/Vocab.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Don't use '%s'!"
 3 | link: "https://docs.microsoft.com/en-us/style-guide"
 4 | level: error
 5 | ignorecase: true
 6 | tokens:
 7 |   - please
 8 |   - simple
 9 |   - kindly
10 |   - easily
11 |   - simply
12 |   - just
13 |   - straightforward
14 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/ignore-names.txt:
--------------------------------------------------------------------------------
 1 | Alexey
 2 | Snigir
 3 | Anna
 4 | Xiong
 5 | Antony
 6 | Milne
 7 | Chiara
 8 | Pullem
 9 | Dan
10 | Dumitriu
11 | Huong
12 | Li
13 | Nguyen
14 | Jo
15 | Stichbury
16 | Joseph
17 | Perkins
18 | Lingyi
19 | Zhang
20 | Maximilian
21 | Schulz
22 | Nadija
23 | Graca
24 | Petar
25 | Pejovic
26 | Ann
27 | Marie
28 | Ward
29 | Ned
30 | Letcher
31 | Natalia
32 | Kurakina,
33 | Leon
34 | Nallamuthu
35 | axa99
36 | Juan
37 | Luis
38 | Cano
39 | Rodríguez
40 | Denis
41 | Lebedev
42 | Qiuyi
43 | Chen
44 | Elena
45 | Fridman
46 | Bo
47 | Xu
48 | Jingjing
49 | Guo
50 | Oleksandr
51 | Serdiuk
52 | Prateek
53 | Bajaj
54 | Nikolaos
55 | Tsaousis
56 | Annie
57 | Wachsmuth
58 | Hamza
59 | Oza
60 | Kee
61 | Wen
62 | Ng
63 | Rashida
64 | Kanchwala
65 | Sam
66 | Bourton
67 | Kevin
68 | Staight
69 | Wesley
70 | Leong
71 | Jonas
72 | Kemper
73 | Kurakina
74 | 


--------------------------------------------------------------------------------
/.vale/styles/Microsoft/meta.json:
--------------------------------------------------------------------------------
1 | {
2 |   "feed": "https://github.com/errata-ai/Microsoft/releases.atom",
3 |   "vale_version": ">=1.0.0"
4 | }
5 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/AutomatedReadability.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the Automated Readability Index (%s) below 8."
3 | link: https://en.wikipedia.org/wiki/Automated_readability_index
4 | 
5 | formula: |
6 |   (4.71 * (characters / words)) + (0.5 * (words / sentences)) - 21.43
7 | 
8 | condition: "> 8"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/ColemanLiau.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the Coleman–Liau Index grade (%s) below 9."
3 | link: https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index
4 | 
5 | formula: |
6 |   (0.0588 * (characters / words) * 100) - (0.296 * (sentences / words) * 100) - 15.8
7 | 
8 | condition: "> 9"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/FleschKincaid.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the Flesch–Kincaid grade level (%s) below 8."
3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests
4 | 
5 | formula: |
6 |   (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59
7 | 
8 | condition: "> 8"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/FleschReadingEase.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the Flesch reading ease score (%s) above 70."
3 | link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests
4 | 
5 | formula: |
6 |   206.835 - (1.015 * (words / sentences)) - (84.6 * (syllables / words))
7 | 
8 | condition: "< 70"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/GunningFog.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the Gunning-Fog index (%s) below 10."
3 | link: https://en.wikipedia.org/wiki/Gunning_fog_index
4 | 
5 | formula: |
6 |   0.4 * ((words / sentences) + 100 * (complex_words / words))
7 | 
8 | condition: "> 10"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/LIX.yml:
--------------------------------------------------------------------------------
 1 | extends: metric
 2 | message: "Try to keep the LIX score (%s) below 35."
 3 | 
 4 | link: https://en.wikipedia.org/wiki/Lix_(readability_test)
 5 | # Very Easy: 20 - 25
 6 | #
 7 | # Easy: 30 - 35
 8 | #
 9 | # Medium: 40 - 45
10 | #
11 | # Difficult: 50 - 55
12 | #
13 | # Very Difficult: 60+
14 | formula: |
15 |   (words / sentences) + ((long_words * 100) / words)
16 | 
17 | condition: "> 35"
18 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/SMOG.yml:
--------------------------------------------------------------------------------
1 | extends: metric
2 | message: "Try to keep the SMOG grade (%s) below 10."
3 | link: https://en.wikipedia.org/wiki/SMOG
4 | 
5 | formula: |
6 |   1.0430 * math.sqrt((polysyllabic_words * 30.0) / sentences) + 3.1291
7 | 
8 | condition: "> 10"
9 | 


--------------------------------------------------------------------------------
/.vale/styles/Readability/meta.json:
--------------------------------------------------------------------------------
1 | {
2 |   "feed": "https://github.com/errata-ai/Readability/releases.atom",
3 |   "vale_version": ">=2.13.0"
4 | }
5 | 


--------------------------------------------------------------------------------
/.vale/styles/vale/Annotations.yml:
--------------------------------------------------------------------------------
 1 | message: "'%s' left in text"
 2 | extends: existence
 3 | ignorecase: false
 4 | level: suggestion
 5 | tokens:
 6 |   - XXX
 7 |   - FIXME
 8 |   - TODO
 9 |   - NOTE
10 | 


--------------------------------------------------------------------------------
/.vale/styles/vale/Editorializing.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Consider removing '%s'"
 3 | ignorecase: true
 4 | level: warning
 5 | tokens:
 6 |   - actually
 7 |   - aptly
 8 |   - are a number
 9 |   - basically
10 |   - clearly
11 |   - completely
12 |   - essentially
13 |   - exceedingly
14 |   - excellent
15 |   - extremely
16 |   - fairly
17 |   - fortunately
18 |   - huge
19 |   - interestingly
20 |   - is a number
21 |   - it is important to realize
22 |   - it should be noted that
23 |   - largely
24 |   - mostly
25 |   - notably
26 |   - note that
27 |   - obviously
28 |   - of course
29 |   - quite
30 |   - relatively
31 |   - remarkably
32 |   - several
33 |   - significantly
34 |   - substantially
35 |   - surprisingly
36 |   - tiny
37 |   - totally
38 |   - tragically
39 |   - unfortunately
40 |   - untimely
41 |   - various
42 |   - vast
43 |   - very
44 |   - without a doubt
45 | 


--------------------------------------------------------------------------------
/.vale/styles/vale/Hedging.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "Consider removing '%s'"
 3 | ignorecase: true
 4 | level: warning
 5 | tokens:
 6 |   - appear to be
 7 |   - arguably
 8 |   - as far as I know
 9 |   - could
10 |   - from my point of view
11 |   - hopefully
12 |   - I believe
13 |   - I doubt
14 |   - I think
15 |   - in general
16 |   - In my opinion
17 |   - likely
18 |   - might
19 |   - more or less
20 |   - perhaps
21 |   - possibly
22 |   - presumably
23 |   - probably
24 |   - seem(s)?
25 |   - somewhat
26 |   - to my knowledge
27 |   - unlikely
28 |   - usually
29 | 


--------------------------------------------------------------------------------
/.vale/styles/vale/Litotes.yml:
--------------------------------------------------------------------------------
 1 | extends: substitution
 2 | message: Consider using '%s' instead of '%s'
 3 | ignorecase: true
 4 | level: warning
 5 | swap:
 6 |   no minor: major
 7 |   no ordinary: extraordinary
 8 |   no(?:t)? small: large
 9 |   not (?:a)? bad: good
10 |   not accept(?:ed)?: rejected
11 |   not allow(?:ed)?: prevented
12 |   not certain: uncertain
13 |   not consider(?:ed)?: ignored
14 |   not fail: passed
15 |   not have: lack(s)
16 |   not many: few
17 |   not old enough: too young
18 |   not remember: forgot
19 |   not succeed: failed
20 |   not the brightest: dumb
21 |   not the same: different
22 |   not unaware: aware
23 |   not unclean: clean
24 |   not unfamiliar: familiar
25 |   not unlike: like
26 |   not unpleasant: pleasant
27 |   not useless: useful
28 |   not wrong: right
29 | 


--------------------------------------------------------------------------------
/.vale/styles/vale/Uncomparables.yml:
--------------------------------------------------------------------------------
 1 | extends: existence
 2 | message: "'%s' is not comparable"
 3 | ignorecase: true
 4 | level: error
 5 | raw:
 6 |   - \b(?:absolutely|most|more|less|least|very|quite|largely|extremely|increasingly|kind of|mildy|hardly|greatly|sort of)\b\s*
 7 | tokens:
 8 |   - absolute
 9 |   - adequate
10 |   - complete
11 |   - correct
12 |   - certain
13 |   - devoid
14 |   - entire
15 |   - "false"
16 |   - fatal
17 |   - favorite
18 |   - final
19 |   - ideal
20 |   - impossible
21 |   - inevitable
22 |   - infinite
23 |   - irrevocable
24 |   - main
25 |   - manifest
26 |   - only
27 |   - paramount
28 |   - perfect
29 |   - perpetual
30 |   - possible
31 |   - preferable
32 |   - principal
33 |   - singular
34 |   - stationary
35 |   - sufficient
36 |   - "true"
37 |   - unanimous
38 |   - unavoidable
39 |   - unbroken
40 |   - uniform
41 |   - unique
42 |   - universal
43 |   - void
44 |   - whole
45 | 


--------------------------------------------------------------------------------
/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @Joseph-Perkins @antonymilne @huong-li-nguyen @maxschulz-COL @lingyielia
2 | docs/ @stichbury @Joseph-Perkins @antonymilne @huong-li-nguyen @maxschulz-COL
3 | *.css @huong-li-nguyen @nadijagraca
4 | 


--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 | 
3 | Contributions of all experience levels are welcome! If you're interested in making a contribution, please refer to our [contributing guide](https://vizro.readthedocs.io/en/stable/pages/explanation/contributing/) for more information.
4 | 


--------------------------------------------------------------------------------
/tools/pycafe/test_pycafe_predefined_links.py:
--------------------------------------------------------------------------------
 1 | """Script to test PyCafe docs links using Playwright."""
 2 | 
 3 | from pycafe_utils import test_pycafe_link
 4 | 
 5 | if __name__ == "__main__":
 6 |     import sys
 7 | 
 8 |     links = sys.argv[1:]
 9 | 
10 |     # Test the link
11 |     exit_codes = [
12 |         test_pycafe_link(url=link, wait_for_locator="#dashboard-container", wait_for_text=False) for link in links
13 |     ]
14 | 
15 |     # Exit with appropriate status code
16 |     sys.exit(any(exit_codes))
17 | 


--------------------------------------------------------------------------------
/tools/release.sh:
--------------------------------------------------------------------------------
 1 | # !/usr/bin/env bash
 2 | 
 3 | set -eu
 4 | 
 5 | GITHUB_USER=$1
 6 | GITHUB_REPO=$2
 7 | GITHUB_TAGGING_TOKEN=$3
 8 | PACKAGE=$4
 9 | VERSION=$5
10 | BODY_PATH=$6
11 | 
12 | GITHUB_ENDPOINT="https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/releases"
13 | 
14 | BODY=$(jq -Rs . < "$BODY_PATH")
15 | 
16 | if [ "$PACKAGE" = "vizro-core" ]; then
17 |   TAG_NAME="${VERSION}"
18 |   MAKE_LATEST=true
19 | else
20 |   TAG_NAME="${PACKAGE}-${VERSION}"
21 |   MAKE_LATEST=false
22 | fi
23 | 
24 | PAYLOAD=$(cat <<-END
25 | {
26 |     "tag_name": "${TAG_NAME}",
27 |     "target_commitish": "main",
28 |     "name": "${PACKAGE}-${VERSION}",
29 |     "body": ${BODY},
30 |     "draft": false,
31 |     "prerelease": false,
32 |     "make_latest": "${MAKE_LATEST}"
33 | }
34 | END
35 | )
36 | 
37 | STATUS=$(curl -L \
38 |   -X POST \
39 |   -H "Accept: application/vnd.github+json" \
40 |   -H "Authorization: Bearer ${GITHUB_TAGGING_TOKEN}" \
41 |   -H "X-GitHub-Api-Version: 2022-11-28" \
42 |   ${GITHUB_ENDPOINT} \
43 |   -d "${PAYLOAD}")
44 | 
45 | echo "${STATUS}"
46 | 


--------------------------------------------------------------------------------
/tools/scan_yaml_for_risky_text.py:
--------------------------------------------------------------------------------
 1 | """Check for security issues in workflows files."""
 2 | 
 3 | import sys
 4 | from pathlib import Path
 5 | 
 6 | # pull_request_target needs to be used carefully to not be a security concern, so only allow it to be used in specific
 7 | # files which use it correctly.
 8 | # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target
 9 | # https://nathandavison.com/blog/github-actions-and-the-threat-of-malicious-pull-requests
10 | risky_text = "pull_request_target"
11 | ignore_files = {".github/workflows/labeler.yml"}
12 | 
13 | 
14 | def find_risky_files(path: str):
15 |     """Searching for risky text in yml files for given path."""
16 |     return {
17 |         str(file)
18 |         for file in Path(path).rglob("*.yml")
19 |         if risky_text in file.read_text() and str(file) not in ignore_files
20 |     }
21 | 
22 | 
23 | if __name__ == "__main__":
24 |     risky_files = find_risky_files(sys.argv[1])
25 |     if risky_files:
26 |         sys.exit(f"{risky_text} found in files {', '.join(risky_files)}.")
27 | 


--------------------------------------------------------------------------------
/vizro-ai/.readthedocs.yaml:
--------------------------------------------------------------------------------
 1 | # Read the Docs configuration file for MkDocs projects
 2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
 3 | 
 4 | # Required
 5 | version: 2
 6 | 
 7 | # Set the version of Python and other tools you might need
 8 | build:
 9 |   os: ubuntu-22.04
10 |   tools:
11 |     python: "3.12"
12 |   commands:
13 |     - pip install hatch
14 |     - cd vizro-ai/ && hatch run docs:pip tree
15 |     - cd vizro-ai/ && hatch run docs:build
16 |     - cd vizro-ai/ && hatch run docs:link-check
17 |     - mkdir --parents $READTHEDOCS_OUTPUT
18 |     - mv vizro-ai/site/ $READTHEDOCS_OUTPUT/html
19 | 


--------------------------------------------------------------------------------
/vizro-ai/changelog.d/new_fragment.md.j2:
--------------------------------------------------------------------------------
 1 | <!--
 2 | A new scriv changelog fragment.
 3 | 
 4 | Uncomment the section that is right (remove the HTML comment wrapper).
 5 | -->
 6 | 
 7 | {% for cat in config.categories -%}
 8 | <!--
 9 | ### {{ cat }}
10 | 
11 | - A bullet item for the {{ cat }} category with a link to the relevant PR at the end of your entry, e.g. Enable feature XXX. ([#1](https://github.com/mckinsey/vizro/pull/1))
12 | 
13 | -->
14 | {% endfor -%}
15 | 


--------------------------------------------------------------------------------
/vizro-ai/changelog.d/scriv.ini:
--------------------------------------------------------------------------------
1 | [scriv]
2 | version = literal: src/vizro_ai/__init__.py: __version__
3 | format = md
4 | categories = Highlights ✨, Removed, Added, Changed, Deprecated, Fixed, Security
5 | 


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/images/favicon.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/ChineseExample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/ChineseExample.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/GDP_Composition_Graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/GDP_Composition_Graph.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/GeoDistribution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/GeoDistribution.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/GermanExample.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/GermanExample.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/advanced_chart_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/advanced_chart_1.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/advanced_chart_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/advanced_chart_2.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart/animated_advanced_chart.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart/animated_advanced_chart.gif


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/chart_into_dashboard.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/chart_into_dashboard.gif


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/dashboard/dashboard0_page1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/dashboard/dashboard0_page1.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/chart1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/chart1.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/chart1v2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/chart1v2.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/chart2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/chart2.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/chart3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/chart3.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/user-interface-hosted-vizro-ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/user-interface-hosted-vizro-ai.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/tutorials/project/user-interface-settings-hosted-vizro-ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/tutorials/project/user-interface-settings-hosted-vizro-ai.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/VizroAINewData.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/VizroAINewData.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/VizroAIPlotly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/VizroAIPlotly.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/VizroAIVizro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/VizroAIVizro.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/bar_chart_gdp_per_continent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/bar_chart_gdp_per_continent.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/chart_into_dashboard_2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/chart_into_dashboard_2.gif


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/chart_into_dashboard_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/chart_into_dashboard_large.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/code_string_app_integration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/code_string_app_integration.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/dashboard/dashboard1_page1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/dashboard/dashboard1_page1.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/dashboard/dashboard1_page2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/dashboard/dashboard1_page2.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/dashboard/dashboard2_page1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/dashboard/dashboard2_page1.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/line_chart_life_expect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/line_chart_life_expect.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/map_chart.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/map_chart.gif


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/polar_bar_chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/polar_bar_chart.png


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/surface_plot.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/surface_plot.gif


--------------------------------------------------------------------------------
/vizro-ai/docs/assets/user_guides/vizro-ai-chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/docs/assets/user_guides/vizro-ai-chart.png


--------------------------------------------------------------------------------
/vizro-ai/docs/overrides/canonical_tag.py:
--------------------------------------------------------------------------------
 1 | """Add a canonical tag."""
 2 | 
 3 | 
 4 | def on_page_markdown(markdown, *, page, config, files):
 5 |     """Add a canonical tag."""
 6 |     # Get key from front matter
 7 |     canonical_url = page.meta.get("canonical_url")
 8 | 
 9 |     # Skip processing page when key not found
10 |     if canonical_url is None:
11 |         return
12 | 
13 |     # Assign the custom url to the page
14 |     page.canonical_url = canonical_url
15 | 


--------------------------------------------------------------------------------
/vizro-ai/docs/pages/API-reference/vizro-ai.md:
--------------------------------------------------------------------------------
 1 | # VizroAI
 2 | 
 3 | <!-- vale off -->
 4 | ::: vizro_ai
 5 |     options:
 6 |       merge_init_into_class: false
 7 |       docstring_options:
 8 |         ignore_init_summary: false
 9 | 
10 | <!-- vale on -->
11 | 


--------------------------------------------------------------------------------
/vizro-ai/docs/stylesheets/extra.css:
--------------------------------------------------------------------------------
 1 | .card-section-wrapper {
 2 |   align-items: center;
 3 |   display: flex;
 4 | }
 5 | 
 6 | .responsive-grid {
 7 |   display: grid;
 8 |   gap: 1.5rem;
 9 |   grid-auto-rows: auto;
10 |   grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
11 |   width: 100%;
12 | }
13 | 
14 | .card-section-wrapper .responsive-grid a {
15 |   background: none;
16 |   color: black;
17 |   padding: 0;
18 |   text-decoration: none;
19 |   transition: none;
20 | }
21 | 
22 | .card {
23 |   box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
24 |   height: 100%;
25 |   transition: 0.3s;
26 | }
27 | 
28 | .card:hover {
29 |   box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.25);
30 | }
31 | 
32 | .card-content {
33 |   padding: 2px 16px;
34 | }
35 | 
36 | :root > * {
37 |   --md-code-hl-color: #119bec3e;
38 | }
39 | 
40 | .md-typeset th,
41 | td:not([class]):not(:last-child) {
42 |   border-right: 1px solid lightgrey;
43 | }
44 | 
45 | .md-source__fact--version {
46 |   display: none;
47 | }
48 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/dashboard_ui/.dockerignore:
--------------------------------------------------------------------------------
 1 | # Git
 2 | .git
 3 | .gitignore
 4 | .gitattributes
 5 | 
 6 | # Docker
 7 | Dockerfile
 8 | docker-compose.yml
 9 | .dockerignore
10 | 
11 | # Python
12 | *.pyc
13 | *.pyo
14 | *.pyd
15 | __pycache__
16 | .pytest_cache
17 | .coverage
18 | htmlcov/
19 | .tox/
20 | .venv
21 | venv/
22 | *.egg-info/
23 | dist/
24 | build/
25 | 
26 | # Editors
27 | .vscode/
28 | .idea/
29 | *.swp
30 | *.swo
31 | 
32 | # OS generated
33 | .DS_Store
34 | Thumbs.db
35 | 
36 | # Application specific
37 | *.log
38 | *.sqlite3
39 | 
40 | # csv
41 | *.csv
42 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/dashboard_ui/README.md:
--------------------------------------------------------------------------------
 1 | ---
 2 | title: Vizro Ai UI
 3 | emoji: 🌖
 4 | colorFrom: blue
 5 | colorTo: pink
 6 | sdk: docker
 7 | pinned: false
 8 | license: apache-2.0
 9 | ---
10 | 
11 | Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
12 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/dashboard_ui/_utils.py:
--------------------------------------------------------------------------------
1 | """Utils file."""
2 | 
3 | 
4 | def check_file_extension(filename):
5 |     filename = filename.lower()
6 | 
7 |     # Check if the filename ends with .csv or .xls
8 |     return filename.endswith(".csv") or filename.endswith(".xls") or filename.endswith(".xlsx")
9 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/dashboard_ui/assets/logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="20" height="20" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/dashboard_ui/requirements.in:
--------------------------------------------------------------------------------
1 | gunicorn
2 | vizro-ai==0.3.5 # temprarory pin before the Pycafe/pyodide can accept Pydantic 2.7.4 and above (currently only 2.7.0 is supported)
3 | vizro==0.1.28
4 | black
5 | openpyxl
6 | langchain_anthropic
7 | langchain_mistralai
8 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/example.py:
--------------------------------------------------------------------------------
 1 | """AI plot example."""
 2 | 
 3 | import vizro.plotly.express as px
 4 | from vizro_ai import VizroAI
 5 | 
 6 | vizro_ai = VizroAI()
 7 | df = px.data.gapminder()
 8 | fig = vizro_ai.plot(
 9 |     df, "describe the composition of gdp in continent,and horizontal line for avg gdp", return_elements=True
10 | )
11 | fig.get_fig_object(df).show()
12 | 


--------------------------------------------------------------------------------
/vizro-ai/examples/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.ruff]
2 | # Ensure that current package isn't treated as first-party in this directory.
3 | extend = "../pyproject.toml"
4 | src = []
5 | 


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/__init__.py:
--------------------------------------------------------------------------------
 1 | import logging
 2 | import os
 3 | 
 4 | from dotenv import load_dotenv
 5 | 
 6 | load_dotenv()
 7 | 
 8 | from ._vizro_ai import VizroAI
 9 | 
10 | __all__ = ["VizroAI"]
11 | 
12 | __version__ = "0.3.8.dev0"
13 | 
14 | # TODO: I think this collides with the VIZRO_LOG_LEVEL setting, as basicConfig can only be set once
15 | logging.basicConfig(level=os.getenv("VIZRO_AI_LOG_LEVEL", "INFO"))
16 | 


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/dashboard/_response_models/dashboard.py:
--------------------------------------------------------------------------------
 1 | """Dashboard plan model."""
 2 | 
 3 | import logging
 4 | 
 5 | from pydantic import BaseModel, Field
 6 | 
 7 | from vizro_ai.dashboard._response_models.page import PagePlan
 8 | 
 9 | logger = logging.getLogger(__name__)
10 | 
11 | 
12 | class DashboardPlan(BaseModel):
13 |     """Dashboard plan model."""
14 | 
15 |     title: str = Field(
16 |         description="""
17 |         Title of the dashboard. If no description is provided,
18 |         make a short and concise title from the content of the pages.
19 |         """,
20 |     )
21 |     pages: list[PagePlan]
22 | 


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/dashboard/_response_models/types.py:
--------------------------------------------------------------------------------
 1 | """Types for response models."""
 2 | 
 3 | from typing import Literal
 4 | 
 5 | # TODO make available in documentation
 6 | 
 7 | # Complete list: ["AgGrid", "Button", "Card", "Container", "Graph", "Table", "Tabs"]
 8 | ComponentType = Literal["AgGrid", "Card", "Graph"]
 9 | """Component types currently supported by Vizro-AI."""
10 | 
11 | # Complete list: ["Filter", "Parameter"]
12 | ControlType = Literal["Filter"]
13 | """Control types currently supported by Vizro-AI."""
14 | 


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/plot/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/src/vizro_ai/plot/__init__.py


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/plot/_utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/src/vizro_ai/plot/_utils/__init__.py


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/py.typed:
--------------------------------------------------------------------------------
1 |  # Marker file for PEP 561
2 | 


--------------------------------------------------------------------------------
/vizro-ai/src/vizro_ai/utils/helper.py:
--------------------------------------------------------------------------------
 1 | """Helper Functions For Vizro AI."""
 2 | 
 3 | import pandas as pd
 4 | 
 5 | 
 6 | def _get_df_info(df: pd.DataFrame, n_sample: int = 5) -> tuple[str, str]:
 7 |     """Get the dataframe schema and head info as string."""
 8 |     formatted_pairs = [f"{col_name}: {dtype}" for col_name, dtype in df.dtypes.items()]
 9 |     schema_string = "\n".join(formatted_pairs)
10 |     return schema_string, df.sample(n_sample, replace=True, random_state=19).to_markdown()
11 | 
12 | 
13 | class DebugFailure(Exception):
14 |     """Debug Failure."""
15 | 
16 |     pass
17 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-ai/tests/.gitkeep


--------------------------------------------------------------------------------
/vizro-ai/tests/e2e/conftest.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | from vizro import Vizro
 3 | 
 4 | 
 5 | @pytest.fixture(autouse=True)
 6 | def reset_managers():
 7 |     # this ensures that the managers are reset before and after each test
 8 |     # the reset BEFORE all tests is important because at pytest test collection, fixtures are evaluated and hence
 9 |     # the model_manager may be populated with models from other tests
10 |     Vizro._reset()
11 |     yield
12 |     Vizro._reset()
13 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/e2e/data_classes.py:
--------------------------------------------------------------------------------
 1 | from dataclasses import dataclass
 2 | from typing import Literal
 3 | 
 4 | 
 5 | @dataclass
 6 | class Component:
 7 |     type: Literal["ag_grid", "card", "graph"]
 8 | 
 9 | 
10 | @dataclass
11 | class Control:
12 |     type: Literal["filter", "parameter"]
13 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/unit/vizro-ai/dashboard/_response_models/test_dashboard.py:
--------------------------------------------------------------------------------
 1 | from vizro_ai.dashboard._response_models.dashboard import DashboardPlan
 2 | 
 3 | 
 4 | class TestDashboardCreate:
 5 |     """Tests dashboard plan creation."""
 6 | 
 7 |     def test_dashboard_plan_instantiation(self, page_plan):
 8 |         dashboard_plan = DashboardPlan(
 9 |             title="Test Dashboard",
10 |             pages=[page_plan],
11 |         )
12 |         assert dashboard_plan.pages[0].title == "Test Page"
13 |         assert dashboard_plan.pages[0].components_plan[0].component_id == "card_1"
14 |         assert dashboard_plan.pages[0].components_plan[0].component_type == "Card"
15 |         assert dashboard_plan.pages[0].components_plan[0].component_description == "This is a card"
16 |         assert dashboard_plan.pages[0].components_plan[0].df_name == "N/A"
17 |         assert dashboard_plan.pages[0].layout_plan is None
18 |         assert dashboard_plan.pages[0].controls_plan == []
19 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/unit/vizro-ai/dashboard/_response_models/test_df_info.py:
--------------------------------------------------------------------------------
 1 | from pandas.testing import assert_frame_equal
 2 | 
 3 | from vizro_ai.dashboard._response_models.df_info import _get_df_info
 4 | 
 5 | 
 6 | def test_get_df_info(df, df_schema, df_sample):
 7 |     actual_df_schema, actual_df_sample = _get_df_info(df=df)
 8 | 
 9 |     assert actual_df_schema == df_schema
10 |     assert_frame_equal(actual_df_sample, df_sample)
11 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/unit/vizro-ai/dashboard/conftest.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | import vizro.models as vm
 3 | from langchain_core.messages import HumanMessage
 4 | 
 5 | 
 6 | @pytest.fixture
 7 | def component_description():
 8 |     return "This is a card"
 9 | 
10 | 
11 | @pytest.fixture
12 | def expected_card():
13 |     return vm.Card(text="this is a card")
14 | 
15 | 
16 | @pytest.fixture
17 | def query():
18 |     return "I need a page with one card saying: Simple card."
19 | 
20 | 
21 | @pytest.fixture
22 | def message_output_valid():
23 |     return {"message": [HumanMessage(content="I need a page with one card saying: Simple card.")], "df_info": None}
24 | 
25 | 
26 | @pytest.fixture
27 | def message_output_error():
28 |     return {
29 |         "message": [HumanMessage(content="I need a page with one card saying: Simple card.")],
30 |         "df_info": None,
31 |         "validation_error": "ValidationError",
32 |     }
33 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/unit/vizro-ai/test_llm_models.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | 
 3 | from vizro_ai._llm_models import _get_llm_model
 4 | 
 5 | 
 6 | @pytest.mark.parametrize(
 7 |     "model",
 8 |     [
 9 |         "gpt-3.5-turbo-1"  # invalid model name
10 |         "gpt-3.5-turbo-instruct"  # model not supported
11 |     ],
12 | )
13 | def test_get_llm_model_invalid_model(model):
14 |     with pytest.raises(ValueError, match=f"Model {model} not found!"):
15 |         _get_llm_model(model=model)
16 | 


--------------------------------------------------------------------------------
/vizro-ai/tests/vizro_ai_ui/conftest.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | from vizro import Vizro
 3 | 
 4 | 
 5 | @pytest.fixture(autouse=True)
 6 | def reset_managers():
 7 |     # this ensures that the managers are reset before and after each test
 8 |     # the reset BEFORE all tests is important because at pytest test collection, fixtures are evaluated and hence
 9 |     # the model_manager may be populated with models from other tests
10 |     Vizro._reset()
11 |     yield
12 |     Vizro._reset()
13 | 


--------------------------------------------------------------------------------
/vizro-core/.readthedocs.yaml:
--------------------------------------------------------------------------------
 1 | # Read the Docs configuration file for MkDocs projects
 2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
 3 | 
 4 | # Required
 5 | version: 2
 6 | 
 7 | # Set the version of Python and other tools you might need
 8 | build:
 9 |   os: ubuntu-22.04
10 |   tools:
11 |     python: "3.12"
12 |   commands:
13 |     - pip install hatch
14 |     - cd vizro-core/ && hatch run docs:pip tree
15 |     - cd vizro-core/ && hatch run docs:build
16 |     - cd vizro-core/ && hatch run docs:link-check
17 |     - cd vizro-core/ && hatch run docs:logo-check
18 |     - mkdir --parents $READTHEDOCS_OUTPUT
19 |     - mv vizro-core/site/ $READTHEDOCS_OUTPUT/html
20 | 


--------------------------------------------------------------------------------
/vizro-core/changelog.d/new_fragment.md.j2:
--------------------------------------------------------------------------------
 1 | <!--
 2 | A new scriv changelog fragment.
 3 | 
 4 | Uncomment the section that is right (remove the HTML comment wrapper).
 5 | -->
 6 | 
 7 | {% for cat in config.categories -%}
 8 | <!--
 9 | ### {{ cat }}
10 | 
11 | - A bullet item for the {{ cat }} category with a link to the relevant PR at the end of your entry, e.g. Enable feature XXX. ([#1](https://github.com/mckinsey/vizro/pull/1))
12 | 
13 | -->
14 | {% endfor -%}
15 | 


--------------------------------------------------------------------------------
/vizro-core/changelog.d/scriv.ini:
--------------------------------------------------------------------------------
1 | [scriv]
2 | version = literal: src/vizro/__init__.py: __version__
3 | format = md
4 | categories = Highlights ✨, Removed, Added, Changed, Deprecated, Fixed, Security
5 | 


--------------------------------------------------------------------------------
/vizro-core/docs/assets/images/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/images/favicon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/images/vizro_logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/collections.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="20" viewBox="0 0 14 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M13 6C13.5523 6 14 6.44772 14 7V19C14 19.5523 13.5523 20 13 20H1C0.447715 20 0 19.5523 0 19V7C0 6.44772 0.447715 6 1 6H13ZM12 8H2V18H12V8ZM11 3C11.5523 3 12 3.44772 12 4V5H2V4C2 3.44772 2.44772 3 3 3H11ZM9 0C9.55228 0 10 0.447715 10 1V2H4V1C4 0.447715 4.44772 0 5 0H9Z" fill="white"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/00-dashboard-final.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/00-dashboard-final.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/01-first-page-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/01-first-page-button.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/01-first-page-layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/01-first-page-layout.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/01-first-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/01-first-page.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/02-second-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/02-second-page.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/03-second-page-kpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/03-second-page-kpi.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/04-second-page-tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/04-second-page-tabs.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/05-second-page-layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/05-second-page-layout.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/06-second-page-controls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/06-second-page-controls.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/07-third-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/07-third-page.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/08-third-page-layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/08-third-page-layout.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/09-third-page-parameter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/09-third-page-parameter.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/10-third-page-custom-chart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/10-third-page-custom-chart.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/11-dashboard-title-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/11-dashboard-title-logo.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/12-dashboard-navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/12-dashboard-navigation.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/first-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/first-dashboard.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/vizro-mcp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/vizro-mcp.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/tutorials/dashboard/vizro-tutorial.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/tutorials/dashboard/vizro-tutorial.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions1.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions2.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions_chaining.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions_chaining.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions_export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions_export.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions_filter_interaction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions_filter_interaction.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/actions/actions_table_filter_interaction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/actions/actions_table_filter_interaction.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/assets/css_change.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/assets/css_change.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/assets/css_change_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/assets/css_change_card.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/assets/css_page_title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/assets/css_page_title.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/assets/logo-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/assets/logo-dark.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/assets/logo-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/assets/logo-light.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/button.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/button_style_extra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/button_style_extra.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/button_style_variants.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/button_style_variants.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/button_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/button_text.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/button_tooltip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/button_tooltip.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card_icon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card_image_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card_image_default.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card_image_floating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card_image_floating.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card_image_styled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card_image_styled.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/card_text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/card_text.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/cardstyle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/cardstyle.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/collapsible-containers-flex.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/collapsible-containers-flex.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/collapsible-containers-grid.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/collapsible-containers-grid.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/container-info-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/container-info-icon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/container-styled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/container-styled.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/container-with-controls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/container-with-controls.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/container_with_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/container_with_background.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/containers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/containers.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/formatted_aggrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/formatted_aggrid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/formatted_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/formatted_graph.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/formatted_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/formatted_table.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/graph.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/graph_with_extra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/graph_with_extra.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/hypotheses.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M3 8C3.55228 8 4 8.44772 4 9V16H0V9C0 8.44772 0.447715 8 1 8H3ZM9 0C9.55228 0 10 0.447715 10 1V16H6V1C6 0.447715 6.44772 0 7 0H9ZM15 4C15.5523 4 16 4.44772 16 5V16H12V5C12 4.44772 12.4477 4 13 4H15Z" fill="white"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/nav_card.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/nav_card.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/nested_containers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/nested_containers.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/responsive_icon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/responsive_icon.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/tabs-info-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/tabs-info-icon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/tabs-info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/tabs-info.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/tabs.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/text.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/text.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/text_extra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/text_extra.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/components/text_markdown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/components/text_markdown.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/control1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/control1.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/control2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/control2.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/control3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/control3.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/control4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/control4.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/control5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/control5.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/controls_defaults.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/controls_defaults.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/filter_in_url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/filter_in_url.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/control/parameter_in_url.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/control/parameter_in_url.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_actions/clickdata_as_input.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_actions/clickdata_as_input.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_actions/custom_action_multiple_return_values.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_actions/custom_action_multiple_return_values.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_actions/value_as_input.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_actions/value_as_input.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_enhanced_scatter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_enhanced_scatter.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_showcase_parameter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_showcase_parameter.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_waterfall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_charts/custom_chart_waterfall.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/customcomponent_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/customcomponent_1.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/customcomponent_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/customcomponent_2.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/customcomponent_3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/customcomponent_3.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/customcomponent_4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/customcomponent_4.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/slide_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/slide_1.jpg


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_components/slide_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_components/slide_2.jpg


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/font-change.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/font-change.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/highlighted-element.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/highlighted-element.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/inspect-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/inspect-icon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/inspect-panel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/inspect-panel.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/logo-position.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/logo-position.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/custom_css/temporary-changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/custom_css/temporary-changes.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/dashboard/custom_header_area.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/dashboard/custom_header_area.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/dashboard/dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/dashboard/dashboard.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/dashboard/dashboard_custom_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/dashboard/dashboard_custom_header.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/dashboard/dashboard_with_info_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/dashboard/dashboard_with_info_icon.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/dashboard/dashboard_with_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/dashboard/dashboard_with_logo.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/data/data_pandas_dataframe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/data/data_pandas_dataframe.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/data/dynamic_data.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/data/dynamic_data.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/data/dynamic_filter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/data/dynamic_filter.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/data/parametrized_dynamic_data.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/data/parametrized_dynamic_data.gif


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/figure/custom_html.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/figure/custom_html.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/figure/custom_kpi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/figure/custom_kpi.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/figure/custom_multiple_cards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/figure/custom_multiple_cards.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/figure/figure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/figure/figure.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/figure/kpi_cards.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/figure/kpi_cards.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/1l_2r_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/1l_2r_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/1l_3r_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/1l_3r_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/1l_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/1l_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/1t_2b_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/1t_2b_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/1t_3b_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/1t_3b_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/2l_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/2l_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/2t_1b_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/2t_1b_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/2t_2b_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/2t_2b_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/2t_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/2t_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/3l_1r_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/3l_1r_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/3l_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/3l_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/3t_1b_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/3t_1b_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_advanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_advanced.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_basic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_basic.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_basic_grid_comparison.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_basic_grid_comparison.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_item_size_args.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_item_size_args.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_item_size_css.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_item_size_css.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/flex_with_grid_combined.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/flex_with_grid_combined.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/grid_advanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/grid_advanced.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/grid_scroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/grid_scroll.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/layout_empty_spaces.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/layout_empty_spaces.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_left_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_left_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_left_three_right_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_left_three_right_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_left_two_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_left_two_right.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_left_two_right_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_left_two_right_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_top_three_bottom_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_top_three_bottom_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/one_top_two_bottom_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/one_top_two_bottom_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/stacking.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/stacking.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/three_left_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/three_left_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/three_left_one_right_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/three_left_one_right_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/three_top_one_bottom_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/three_top_one_bottom_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/two_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/two_left.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/two_left_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/two_left_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/two_left_two_right_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/two_left_two_right_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/two_top_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/two_top_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/layout/two_top_one_bottom_color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/layout/two_top_one_bottom_color.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/accordion_inside_nav_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/accordion_inside_nav_bar.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/custom_icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/custom_icons.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/default_navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/default_navigation.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/grouped_navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/grouped_navigation.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/nav_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/nav_bar.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/navigation/only_some_pages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/navigation/only_some_pages.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/pages/page_containers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/pages/page_containers.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/pages/page_sunburst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/pages/page_sunburst.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_duplicate_this_space.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_duplicate_this_space.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_edit_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_edit_app.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_space.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/run_deploy/hugging_face_space.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/run_deploy/pycafe_editor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/run_deploy/pycafe_editor.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/run_deploy/pycafe_editor_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/run_deploy/pycafe_editor_share.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/selectors/default_filter_selectors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/selectors/default_filter_selectors.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/selectors/info_icon_selector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/selectors/info_icon_selector.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/selectors/inlineradio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/selectors/inlineradio.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/aggrid-pagination.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/aggrid-pagination.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/aggrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/aggrid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/custom_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/custom_grid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/custom_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/custom_table.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/formatted_aggrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/formatted_aggrid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/styled_aggrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/styled_aggrid.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/styled_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/styled_table.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/table/table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/table/table.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/themes/dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/themes/dark.png


--------------------------------------------------------------------------------
/vizro-core/docs/assets/user_guides/themes/light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/docs/assets/user_guides/themes/light.png


--------------------------------------------------------------------------------
/vizro-core/docs/overrides/main.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %} {% block extrahead %}
2 | <meta
3 |   name="google-site-verification"
4 |   content="CYb3cxosCgsN2QDQVaSGQpMQCesqpsGQ3oTM02NtvkY"
5 | />
6 | {% endblock %}
7 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/action-callables.md:
--------------------------------------------------------------------------------
 1 | # Action functions
 2 | <!-- vale off -->
 3 | 
 4 | API reference for all built-in action functions.
 5 | 
 6 | ::: vizro.actions
 7 |     options:
 8 |      # Don't show underscore methods, function or output. AbstractAction is done separately below.
 9 |       filters: ["!^_","!function", "!outputs", "!AbstractAction"]
10 |       show_bases: false
11 | 
12 | <!--
13 | TODO-AV2 D 5: uncomment the below and remove `show_bases: false` from above when AbstractAction becomes public.
14 | ::: vizro.actions.AbstractAction
15 | -->
16 | 
17 | <!-- vale on -->
18 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/deprecations.md:
--------------------------------------------------------------------------------
1 | # Deprecations and breaking changes
2 | 
3 | This page lists Vizro features that are now deprecated and forthcoming breaking changes for Vizro 0.2.0.
4 | 
5 | ## `Layout` model
6 | 
7 | The [`Layout`][vizro.models.Layout] model has been renamed [`Grid`][vizro.models.Grid], and `Layout` will no longer exist in Vizro 0.2.0. To ensure future compatibility, replace your references to `vm.Layout` with `vm.Grid`.
8 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/figure-callables.md:
--------------------------------------------------------------------------------
 1 | <!-- vale off -->
 2 | # Figure functions
 3 | API reference for all built-in [`CapturedCallable`][vizro.models.types.CapturedCallable] figure functions to be used in the
 4 | [`Figure`][vizro.models.Figure]. The [how-to guide on figures](../user-guides/figure.md) contains more information.
 5 | 
 6 | !!! note "Using figure functions in pure Dash app"
 7 |     Identical functions can also be used outside the Vizro framework in a pure Dash app by importing from the `vizro.figures.library` namespace:
 8 |     ```python
 9 |     from vizro.figures.library import kpi_card, kpi_card_reference
10 |     ```
11 | 
12 | ::: vizro.figures
13 |     options:
14 |       show_source: true
15 | 
16 | <!-- vale on -->
17 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/kedro-integration.md:
--------------------------------------------------------------------------------
 1 | <!-- vale off -->
 2 | # Kedro integration functions
 3 | 
 4 | API reference for all Kedro integration functions. The how-to guide on [Kedro Data Catalog integration](../user-guides/kedro-data-catalog.md) contains more information.
 5 | 
 6 | ::: vizro.integrations.kedro
 7 |     options:
 8 |       show_source: true
 9 | 
10 | <!-- vale on -->
11 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/models.md:
--------------------------------------------------------------------------------
 1 | # Models
 2 | 
 3 | <!-- vale off -->
 4 | API reference for all [`pydantic`](https://docs.pydantic.dev/latest/) models used.
 5 | 
 6 | ::: vizro.models
 7 |     options:
 8 |       filters: ["!^_","!build","!model_post_init"] # Don't show underscore methods, build method, and model_post_init
 9 | 
10 | ::: vizro.models.types
11 |     options:
12 |       filters: ["!^_"]  # Don't show dunder methods as well as single underscore ones
13 |       merge_init_into_class: false
14 | 
15 | <!-- vale on -->
16 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/table-callables.md:
--------------------------------------------------------------------------------
 1 | <!-- vale off -->
 2 | # Table functions
 3 | 
 4 | API reference for all built-in [`CapturedCallable`][vizro.models.types.CapturedCallable] table functions to be used in the
 5 | [`AgGrid`][vizro.models.AgGrid] and [`Table`][vizro.models.Table] models. The how-to guide on [tables](../user-guides/table.md) contains more information.
 6 | 
 7 | ::: vizro.tables
 8 |     options:
 9 |       show_source: true
10 | 
11 | <!-- vale on -->
12 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/API-reference/vizro.md:
--------------------------------------------------------------------------------
 1 | # Vizro
 2 | 
 3 | <!-- vale off -->
 4 | ::: vizro
 5 |     options:
 6 |       merge_init_into_class: false
 7 |       docstring_options:
 8 |         ignore_init_summary: false
 9 | 
10 | <!-- vale on -->
11 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/user-guides/controls.md:
--------------------------------------------------------------------------------
 1 | # Controls
 2 | 
 3 | Vizro has a range of controls to make it simple to add common functionality to your app:
 4 | 
 5 | - **[Filters](filters.md)**: control the data loaded into any component on the page.
 6 | 
 7 | - **[Parameters](parameters.md)**: dynamically control the values and settings provided to any component on the page.
 8 | 
 9 | - **[Selectors](selectors.md)**: include a range of common control interfaces such as drop-down menus and sliders, which can be used for filters or parameters.
10 | 


--------------------------------------------------------------------------------
/vizro-core/docs/pages/user-guides/visual-formatting.md:
--------------------------------------------------------------------------------
 1 | # How to customize the style of Vizro dashboards
 2 | 
 3 | Vizro has a default styling to help users with no design experience get started. There are several options if you want to customize the style:
 4 | 
 5 | - **[Configure the layout](layouts.md)**: Customize the arrangement of your components inside your Vizro dashboard.
 6 | 
 7 | - **[Apply a theme](themes.md)**: Choose between a dark or light theme.
 8 | 
 9 | - **[Manage assets](assets.md)**: Enhance your dashboard by adding images, scripts, and stylesheets to your assets folder.
10 | 
11 | - **[Customize CSS](custom-css.md)**: Incorporate custom CSS to deviate from the default styling and create a unique appearance for your Vizro dashboard.
12 | 
13 | - **[Customize your `component`](components.md)**: Change the appearance of components like the [Graph](graph.md), the [Table](table.md) and the [AgGrid](table.md), by passing extra arguments. Refer to the relevant user guide for more details.
14 | 


--------------------------------------------------------------------------------
/vizro-core/docs/stylesheets/logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/README.md:
--------------------------------------------------------------------------------
 1 | ## Examples
 2 | 
 3 | Please note that this folder contains only example dashboards that are still **in development**.
 4 | 
 5 | ### Vizro examples gallery
 6 | 
 7 | To view a comprehensive list of available demos, please visit our [examples gallery](http://vizro.mckinsey.com/). There, you can explore a wide range of dashboards and applications created with Vizro.
 8 | 
 9 | <a href="http://vizro.mckinsey.com/">
10 | <img src="https://raw.githubusercontent.com/mckinsey/vizro/main/.github/images/vizro_examples_gallery.png" width="600"/>
11 | </a>
12 | 
13 | ### Huggingface collection
14 | 
15 | For a curated list of example dashboards, check out our [dashboard collection on Huggingface](https://huggingface.co/collections/vizro/vizro-official-gallery-66697d414646eeac61eae6de).
16 | 
17 | <a href="https://huggingface.co/collections/vizro/vizro-official-gallery-66697d414646eeac61eae6de">
18 | <img src="https://raw.githubusercontent.com/mckinsey/vizro/main/.github/images/huggingface_collection.png" width="600"/>
19 | </a>
20 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/examples/dev/assets/favicon.ico


--------------------------------------------------------------------------------
/vizro-core/examples/dev/assets/images/icons/download.svg:
--------------------------------------------------------------------------------
1 | <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M5 24V28H27V24H29V30H3V24H5ZM9 18L16 25L23 18L21.5 16.5L17 21V3H15V21L10.5 16.5L9 18Z" fill="white"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/assets/images/icons/filters.svg:
--------------------------------------------------------------------------------
 1 | <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
 2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M20 3C20 2.44772 20.4477 2 21 2H24C24.5523 2 25 2.44772 25 3V9C25 9.55228 24.5523 10 24 10H21C20.4477 10 20 9.55228 20 9V3ZM22 8V4H23V8H22Z" fill="white" />
 3 | <path d="M2 5H19V7H2V5Z" fill="white" />
 4 | <path d="M26 5H30V7H26V5Z" fill="white" />
 5 | <path fill-rule="evenodd" clip-rule="evenodd" d="M9 12C8.44772 12 8 12.4477 8 13V19C8 19.5523 8.44772 20 9 20H12C12.5523 20 13 19.5523 13 19V13C13 12.4477 12.5523 12 12 12H9ZM10 14V18H11V14H10Z" fill="white" />
 6 | <path fill-rule="evenodd" clip-rule="evenodd" d="M16 23C16 22.4477 16.4477 22 17 22H20C20.5523 22 21 22.4477 21 23V29C21 29.5523 20.5523 30 20 30H17C16.4477 30 16 29.5523 16 29V23ZM18 28V24H19V28H18Z" fill="white" />
 7 | <path d="M2 15H7V17H2V15Z" fill="white" />
 8 | <path d="M15 25H2V27H15V25Z" fill="white" />
 9 | <path d="M30 15V17H14V15H30Z" fill="white" />
10 | <path d="M30 27V25H22V27H30Z" fill="white" />
11 | </svg>
12 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/assets/images/icons/use-case.svg:
--------------------------------------------------------------------------------
1 | <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M29 2C30.1046 2 31 2.89543 31 4V28C31 29.1046 30.1046 30 29 30H3C1.89543 30 1 29.1046 1 28V4C1 2.89543 1.89543 2 3 2H29ZM29 4H3V27C3 27.5523 3.44772 28 4 28H28C28.5523 28 29 27.5523 29 27V4ZM26 23V25H6V23H26ZM26 18V20H6V18H26ZM22 7V15H18V7H22ZM16 7V15H12V7H16ZM10 7V15H6V7H10Z" fill="white" />
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/assets/logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/requirements.in:
--------------------------------------------------------------------------------
1 | # This file is only used if you don't have hatch installed.
2 | gunicorn
3 | openpyxl
4 | vizro==0.1.37
5 | 


--------------------------------------------------------------------------------
/vizro-core/examples/dev/yaml_version/app.py:
--------------------------------------------------------------------------------
 1 | """Example to show dashboard configuration specified as a YAML file."""
 2 | 
 3 | from pathlib import Path
 4 | 
 5 | import pandas as pd
 6 | import vizro.plotly.express as px
 7 | import yaml
 8 | from vizro import Vizro
 9 | from vizro.managers import data_manager
10 | from vizro.models import Dashboard
11 | 
12 | data_manager["iris"] = px.data.iris()
13 | data_manager["tips"] = px.data.tips()
14 | data_manager["stocks"] = px.data.stocks(datetimes=True)
15 | data_manager["gapminder_2007"] = px.data.gapminder().query("year == 2007")
16 | data_manager["df_kpi"] = pd.DataFrame(
17 |     {"Actual": [100, 200, 700], "Reference": [100, 300, 500], "Category": ["A", "B", "C"]}
18 | )
19 | 
20 | dashboard = yaml.safe_load(Path("dashboard.yaml").read_text(encoding="utf-8"))
21 | dashboard = Dashboard(**dashboard)
22 | 
23 | if __name__ == "__main__":
24 |     Vizro(assets_folder="../assets").build(dashboard).run()
25 | 


--------------------------------------------------------------------------------
/vizro-core/examples/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.ruff]
2 | # Ensure that current package isn't treated as first-party in this directory.
3 | extend = "../pyproject.toml"
4 | src = []
5 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/assets/css/custom.css:
--------------------------------------------------------------------------------
 1 | .page-main-outer {
 2 |   flex-direction: row;
 3 | }
 4 | 
 5 | .page-main-outer .no-left {
 6 |   flex-direction: column;
 7 | }
 8 | 
 9 | #page-main {
10 |   flex-direction: column;
11 |   height: 100vh;
12 | }
13 | 
14 | #collapse-icon-outer {
15 |   padding-top: 44px;
16 | }
17 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/examples/scratch_dev/assets/favicon.ico


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/charts.py:
--------------------------------------------------------------------------------
 1 | """Collection of custom charts."""
 2 | 
 3 | import pandas as pd
 4 | import plotly.graph_objects as go
 5 | from vizro.models.types import capture
 6 | 
 7 | 
 8 | @capture("graph")
 9 | def custom_scatter(data_frame: pd.DataFrame, x: str, y: str):
10 |     """Custom scatter plot."""
11 |     return go.Figure(data=[go.Scatter(x=data_frame[x], y=data_frame[y])])
12 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/data.yaml:
--------------------------------------------------------------------------------
1 | # Choose between: 2024-01-01 to 2024-05-29
2 | date_min: 2024-03-05
3 | date_max: 2024-03-10
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/yaml_version/app.py:
--------------------------------------------------------------------------------
 1 | """Example to show dashboard configuration specified as a YAML file."""
 2 | 
 3 | from pathlib import Path
 4 | 
 5 | import vizro.plotly.express as px
 6 | import yaml
 7 | from vizro import Vizro
 8 | from vizro.managers import data_manager
 9 | from vizro.models import Dashboard
10 | 
11 | data_manager["iris"] = px.data.iris()
12 | 
13 | dashboard = yaml.safe_load(Path("dashboard.yaml").read_text(encoding="utf-8"))
14 | dashboard = Dashboard(**dashboard)
15 | 
16 | if __name__ == "__main__":
17 |     Vizro().build(dashboard).run()
18 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/yaml_version/custom_charts.py:
--------------------------------------------------------------------------------
 1 | """Custom charts for the app."""
 2 | 
 3 | import pandas as pd
 4 | import plotly.graph_objects as go
 5 | from vizro.models.types import capture
 6 | 
 7 | 
 8 | @capture("graph")
 9 | def custom_bar(data_frame: pd.DataFrame, x: str, y: str) -> go.Figure:
10 |     """Custom bar chart."""
11 |     return go.Figure(data=[go.Bar(x=data_frame[x], y=data_frame[y])])
12 | 


--------------------------------------------------------------------------------
/vizro-core/examples/scratch_dev/yaml_version/dashboard.yaml:
--------------------------------------------------------------------------------
 1 | # Still requires a .py to add data to the data manager and parse YAML configuration
 2 | # See yaml_version example
 3 | title: "Dashboard Example"
 4 | pages:
 5 |   - title: "Custom Bar Chart"
 6 |     components:
 7 |       - type: "graph"
 8 |         figure:
 9 |           _target_: "custom_charts.custom_bar"
10 |           data_frame: "iris"
11 |           x: "sepal_length"
12 |           y: "sepal_width"
13 | 


--------------------------------------------------------------------------------
/vizro-core/examples/tutorial/assets/logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/examples/visual-vocabulary/assets/favicon.ico


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/images/charts/bar.svg:
--------------------------------------------------------------------------------
1 | <svg width="2397" height="2393" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-55 -27)"><g><rect x="59.0001" y="32" width="2391" height="2385" fill="#001621" fill-opacity="1"/><rect x="401" y="334" width="1508" height="307" fill="#00A0E3" fill-opacity="1"/><rect x="401" y="825" width="1292" height="308" fill="#00A0E3" fill-opacity="1"/><rect x="397" y="1317" width="1020" height="307" fill="#00A0E3" fill-opacity="1"/><rect x="398" y="1808" width="1714" height="307" fill="#00A0E3" fill-opacity="1"/></g></g></svg>
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/images/charts/column.svg:
--------------------------------------------------------------------------------
1 | <svg width="2397" height="2393" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-55 -27)"><g><rect x="59.0001" y="32" width="2391" height="2385" fill="#001621" fill-opacity="1"/><rect x="353" y="617" width="307" height="1508" fill="#00A0E3" fill-opacity="1"/><rect x="844" y="833" width="307" height="1292" fill="#00A0E3" fill-opacity="1"/><rect x="1336" y="1109" width="307" height="1020" fill="#00A0E3" fill-opacity="1"/><rect x="1827" y="414" width="307" height="1714" fill="#00A0E3" fill-opacity="1"/></g></g></svg>
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/images/charts/paired-bar.svg:
--------------------------------------------------------------------------------
1 | <svg width="2397" height="2393" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-55 -27)"><g><rect x="59.0001" y="32" width="2391" height="2385" fill="#001621" fill-opacity="1"/><rect x="445" y="466" width="840" height="202" fill="#7EC1CA" fill-opacity="1"/><rect x="445" y="686" width="1058" height="202" fill="#00A0E3" fill-opacity="1"/><rect x="445" y="1019" width="767" height="202" fill="#7EC1CA" fill-opacity="1"/><rect x="445" y="1238" width="1629" height="202" fill="#00A0E3" fill-opacity="1"/><rect x="445" y="1571" width="1453" height="202" fill="#7EC1CA" fill-opacity="1"/><rect x="445" y="1790" width="1281" height="202" fill="#00A0E3" fill-opacity="1"/></g></g></svg>
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/images/charts/paired-column.svg:
--------------------------------------------------------------------------------
1 | <svg width="2397" height="2393" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-55 -27)"><g><rect x="59.0001" y="32" width="2391" height="2385" fill="#001621" fill-opacity="1"/><rect x="449" y="1130" width="202" height="840" fill="#7EC1CA" fill-opacity="1"/><rect x="668" y="911" width="202" height="1059" fill="#00A0E3" fill-opacity="1"/><rect x="1001" y="1202" width="202" height="768" fill="#7EC1CA" fill-opacity="1"/><rect x="1220" y="340" width="203" height="1630" fill="#00A0E3" fill-opacity="1"/><rect x="1554" y="517" width="202" height="1453" fill="#7EC1CA" fill-opacity="1"/><rect x="1773" y="688" width="202" height="1282" fill="#00A0E3" fill-opacity="1"/></g></g></svg>
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/assets/logo.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/__init__.py:
--------------------------------------------------------------------------------
1 | # TODO: eventually deduplicate page generation into a function rather than copying and pasting across files?
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/__init__.py:
--------------------------------------------------------------------------------
1 | """Contains code examples inserted into `CodeClipboard`."""
2 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/area.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | stocks = px.data.stocks()
4 | 
5 | fig = px.area(stocks, x="date", y="GOOG")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/bar.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query(
4 |     "year == 2007 and country.isin(['United States', 'Pakistan', 'India', 'China', 'Indonesia'])"
5 | )
6 | 
7 | fig = px.bar(gapminder, x="pop", y="country", orientation="h")
8 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/boxplot.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.box(tips, y="total_bill", x="day", color="day")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/bubble.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query("year==2007")
4 | 
5 | fig = px.scatter(gapminder, x="gdpPercap", y="lifeExp", size="pop", size_max=60)
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/bubble_map.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | carshare = px.data.carshare()
4 | 
5 | fig = px.scatter_map(
6 |     carshare, lat="centroid_lat", lon="centroid_lon", size="car_hours", size_max=15, opacity=0.5, zoom=10
7 | )
8 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/choropleth.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query("year == 2007")
4 | 
5 | fig = px.choropleth(gapminder, locations="iso_alpha", color="lifeExp", hover_name="country")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/connected_scatter.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query("country == 'Australia'")
4 | 
5 | fig = px.line(gapminder, x="year", y="lifeExp", markers=True)
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/diverging_bar.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import vizro.plotly.express as px
 3 | 
 4 | pastries = pd.DataFrame(
 5 |     {
 6 |         "pastry": [
 7 |             "Scones",
 8 |             "Bagels",
 9 |             "Muffins",
10 |             "Cakes",
11 |             "Donuts",
12 |             "Cookies",
13 |             "Croissants",
14 |             "Eclairs",
15 |         ],
16 |         "Profit Ratio": [-0.10, -0.05, 0.10, 0.05, 0.15, -0.08, 0.08, -0.12],
17 |     }
18 | ).sort_values("Profit Ratio")
19 | 
20 | fig = px.bar(pastries, x="Profit Ratio", y="pastry")
21 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/donut.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.pie(tips, values="tip", names="day", hole=0.4)
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/dot_map.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | carshare = px.data.carshare()
4 | 
5 | fig = px.scatter_map(carshare, lat="centroid_lat", lon="centroid_lon", opacity=0.5, zoom=10)
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/funnel.py:
--------------------------------------------------------------------------------
1 | import pandas as pd
2 | import vizro.plotly.express as px
3 | 
4 | funnel_data = pd.DataFrame(
5 |     {"Stage": ["Leads", "Sales calls", "Follow-up", "Conversion", "Sales"], "Value": [10, 7, 4, 2, 1]}
6 | )
7 | 
8 | fig = px.funnel_area(funnel_data, names="Stage", values="Value")
9 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/gantt.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import vizro.plotly.express as px
 3 | 
 4 | tasks = pd.DataFrame(
 5 |     [
 6 |         {"Task": "Job A", "Start": "2009-01-01", "Finish": "2009-02-28"},
 7 |         {"Task": "Job B", "Start": "2009-03-05", "Finish": "2009-04-15"},
 8 |         {"Task": "Job C", "Start": "2009-02-20", "Finish": "2009-05-30"},
 9 |     ]
10 | ).sort_values("Start", ascending=False)
11 | 
12 | fig = px.timeline(tasks, x_start="Start", x_end="Finish", y="Task")
13 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/heatmap.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.density_heatmap(tips, x="day", y="size", z="tip", histfunc="avg", text_auto="$.2f")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/histogram.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.histogram(tips, x="total_bill")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/line.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | stocks = px.data.stocks()
4 | 
5 | fig = px.line(stocks, x="date", y="GOOG")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/magnitude_column.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query(
4 |     "year == 2007 and country.isin(['United States', 'Pakistan', 'India', 'China', 'Indonesia'])"
5 | )
6 | 
7 | fig = px.bar(gapminder, y="pop", x="country")
8 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/ordered_bar.py:
--------------------------------------------------------------------------------
 1 | import vizro.plotly.express as px
 2 | 
 3 | gapminder = (
 4 |     px.data.gapminder()
 5 |     .query("year == 2007 and country.isin(['United States', 'Pakistan', 'India', 'China', 'Indonesia'])")
 6 |     .sort_values("pop")
 7 | )
 8 | 
 9 | fig = px.bar(gapminder, x="pop", y="country", orientation="h")
10 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/ordered_column.py:
--------------------------------------------------------------------------------
 1 | import vizro.plotly.express as px
 2 | 
 3 | gapminder = (
 4 |     px.data.gapminder()
 5 |     .query("year == 2007 and country.isin(['United States', 'Pakistan', 'India', 'China', 'Indonesia'])")
 6 |     .sort_values("pop")
 7 | )
 8 | 
 9 | fig = px.bar(gapminder, y="pop", x="country")
10 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/paired_bar.py:
--------------------------------------------------------------------------------
 1 | import vizro.plotly.express as px
 2 | 
 3 | tips = px.data.tips()
 4 | 
 5 | fig = px.histogram(
 6 |     tips,
 7 |     y="day",
 8 |     x="total_bill",
 9 |     color="sex",
10 |     barmode="group",
11 |     orientation="h",
12 |     category_orders={"day": ["Thur", "Fri", "Sat", "Sun"]},
13 | )
14 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/paired_column.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.histogram(
6 |     tips, x="day", y="total_bill", color="sex", barmode="group", category_orders={"day": ["Thur", "Fri", "Sat", "Sun"]}
7 | )
8 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/parallel_coordinates.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | iris = px.data.iris()
4 | 
5 | fig = px.parallel_coordinates(
6 |     iris, color="species_id", dimensions=["sepal_width", "sepal_length", "petal_width", "petal_length"]
7 | )
8 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/pie.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.pie(tips, values="tip", names="day")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/radar.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import vizro.plotly.express as px
 3 | from vizro.models.types import capture
 4 | 
 5 | 
 6 | @capture("graph")
 7 | def radar(data_frame: pd.DataFrame, **kwargs):
 8 |     fig = px.line_polar(data_frame, **kwargs)
 9 |     fig.update_traces(fill="toself")
10 |     return fig
11 | 
12 | 
13 | wind = px.data.wind().query("strength == '1-2'")
14 | 
15 | fig = radar(wind, r="frequency", theta="direction", line_close=True)
16 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/scatter.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | iris = px.data.iris()
4 | 
5 | fig = px.scatter(iris, x="sepal_width", y="sepal_length", color="species")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/scatter_matrix.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | iris = px.data.iris()
4 | 
5 | fig = px.scatter_matrix(iris, dimensions=["sepal_length", "sepal_width", "petal_length", "petal_width"])
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/sparkline.py:
--------------------------------------------------------------------------------
 1 | import plotly.express as px
 2 | from vizro.models.types import capture
 3 | 
 4 | stocks = px.data.stocks()
 5 | 
 6 | 
 7 | @capture("graph")
 8 | def sparkline(data_frame, **kwargs):
 9 |     fig = px.line(data_frame, **kwargs)
10 |     fig.update_xaxes(ticks="", showgrid=False, title="")
11 |     fig.update_yaxes(visible=False)
12 |     fig.update_layout(showlegend=False)
13 |     return fig
14 | 
15 | 
16 | fig = sparkline(stocks, x="date", y=["GOOG", "AMZN", "AAPL"], labels={"variable": "stock"}, facet_row="variable")
17 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/stacked_bar.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.histogram(tips, y="sex", x="total_bill", color="day", orientation="h")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/stacked_column.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.histogram(tips, x="sex", y="total_bill", color="day")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/stepped_line.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import vizro.plotly.express as px
 3 | 
 4 | stepped_line_data = pd.DataFrame(
 5 |     {
 6 |         "year": [1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003],
 7 |         "rate": [0.10, 0.12, 0.15, 0.13, 0.14, 0.13, 0.14, 0.16, 0.15],
 8 |     }
 9 | )
10 | 
11 | fig = px.line(data_frame=stepped_line_data, x="year", y="rate", line_shape="vh")
12 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/time_column.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import plotly.graph_objects as go
 3 | import vizro.plotly.express as px
 4 | from vizro.models.types import capture
 5 | 
 6 | 
 7 | @capture("graph")
 8 | def categorical_column(data_frame: pd.DataFrame, **kwargs) -> go.Figure:
 9 |     fig = px.bar(data_frame, **kwargs)
10 |     fig.update_xaxes(type="category")
11 |     return fig
12 | 
13 | 
14 | gapminder = px.data.gapminder().query("country == 'Nigeria' and year > 1970")
15 | 
16 | fig = categorical_column(gapminder, x="year", y="lifeExp")
17 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/treemap.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | gapminder = px.data.gapminder().query("year == 2007")
4 | 
5 | fig = px.treemap(gapminder, path=[px.Constant("world"), "continent", "country"], values="pop", color="lifeExp")
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/violin.py:
--------------------------------------------------------------------------------
1 | import vizro.plotly.express as px
2 | 
3 | tips = px.data.tips()
4 | 
5 | fig = px.violin(tips, y="tip", x="day", color="day", box=True)
6 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/pages/examples/waterfall.py:
--------------------------------------------------------------------------------
 1 | import pandas as pd
 2 | import plotly.graph_objects as go
 3 | from vizro.models.types import capture
 4 | 
 5 | 
 6 | @capture("graph")
 7 | def waterfall(
 8 |     data_frame: pd.DataFrame,
 9 |     x: str,
10 |     y: str,
11 |     measure: list[str],
12 | ):
13 |     return go.Figure(
14 |         data=go.Waterfall(x=data_frame[x], y=data_frame[y], measure=data_frame[measure]),
15 |         layout={"showlegend": False},
16 |     )
17 | 
18 | 
19 | waterfall_data = pd.DataFrame(
20 |     {
21 |         "x": ["Sales", "Consulting", "Net revenue", "Purchases", "Other expenses", "Profit before tax"],
22 |         "y": [60, 80, 0, -40, -20, 0],
23 |         "measure": ["relative", "relative", "total", "relative", "relative", "total"],
24 |     }
25 | )
26 | 
27 | fig = waterfall(waterfall_data, x="x", y="y", measure="measure")
28 | 


--------------------------------------------------------------------------------
/vizro-core/examples/visual-vocabulary/requirements.in:
--------------------------------------------------------------------------------
1 | # This file is only used if you don't have hatch installed.
2 | autoflake==2.3.1
3 | black==24.4.2
4 | isort==5.13.2
5 | plotly==6.0.0
6 | vizro==0.1.37
7 | gunicorn
8 | 


--------------------------------------------------------------------------------
/vizro-core/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "devDependencies": {
 3 |     "@babel/core": "^7.22.20",
 4 |     "@babel/preset-env": "^7.22.20",
 5 |     "babel-jest": "^29.7.0",
 6 |     "jest": "^29.7.0"
 7 |   },
 8 |   "scripts": {
 9 |     "test": "jest"
10 |   },
11 |   "jest": {
12 |     "testMatch": [
13 |       "**/tests/js/**/*.test.js"
14 |     ],
15 |     "transform": {
16 |       "^.+\\.js
quot;: "babel-jest"
17 |     }
18 |   },
19 |   "babel": {
20 |     "presets": [
21 |       "@babel/preset-env"
22 |     ]
23 |   }
24 | }
25 | 


--------------------------------------------------------------------------------
/vizro-core/schemas/generate.py:
--------------------------------------------------------------------------------
 1 | """Script to generate JSON schema. For more information, run `hatch run schema --help`."""
 2 | 
 3 | import argparse
 4 | import json
 5 | import sys
 6 | from pathlib import Path
 7 | 
 8 | from vizro import __version__
 9 | from vizro.models import Dashboard
10 | 
11 | parser = argparse.ArgumentParser(description="Generate JSON schema.")
12 | parser.add_argument("--check", help="check schema is up to date", action="store_true")
13 | args = parser.parse_args()
14 | 
15 | schema_json = json.dumps(Dashboard.model_json_schema(by_alias=False), indent=4)
16 | schema_path = Path(__file__).with_name(f"{__version__}.json")
17 | 
18 | if args.check:
19 |     if json.loads(schema_path.read_text()) != json.loads(schema_json):
20 |         sys.exit("JSON schema is out of date. Run `hatch run schema` to update it.")
21 |     print("JSON schema is up to date.")  # noqa: T201
22 | else:
23 |     schema_path.write_text(schema_json)
24 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/_constants.py:
--------------------------------------------------------------------------------
 1 | """File to store constants."""
 2 | 
 3 | from pathlib import Path
 4 | 
 5 | ALL_OPTION = "ALL"
 6 | NONE_OPTION = "NONE"
 7 | MODULE_PAGE_404 = "not_found_404"
 8 | EMPTY_SPACE_CONST = -1
 9 | ON_PAGE_LOAD_ACTION_PREFIX = "__on_page_load_action"
10 | FILTER_ACTION_PREFIX = "__filter_action"
11 | PARAMETER_ACTION_PREFIX = "__parameter_action"
12 | ACCORDION_DEFAULT_TITLE = "SELECT PAGE"
13 | VIZRO_ASSETS_PATH = Path(__file__).with_name("static")
14 | GAP_DEFAULT = "24px"
15 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/_themes/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/_themes/__init__.py


--------------------------------------------------------------------------------
/vizro-core/src/vizro/_themes/template_dashboard_overrides.py:
--------------------------------------------------------------------------------
 1 | """Modifications to vizro_light and vizro_dark to make charts suitable for dashboard."""
 2 | 
 3 | import plotly.graph_objs as go
 4 | 
 5 | TRANSPARENT = "rgba(0, 0, 0, 0)"
 6 | 
 7 | dashboard_overrides = go.layout.Template()
 8 | dashboard_overrides.layout = go.Layout(
 9 |     geo_bgcolor=TRANSPARENT,
10 |     geo_lakecolor=TRANSPARENT,
11 |     geo_landcolor=TRANSPARENT,
12 |     margin_b=16,
13 |     margin_l=24,
14 |     margin_t=24,
15 |     paper_bgcolor=TRANSPARENT,
16 |     plot_bgcolor=TRANSPARENT,
17 |     polar_bgcolor=TRANSPARENT,
18 |     ternary_bgcolor=TRANSPARENT,
19 |     title_pad_l=0,
20 |     title_pad_r=0,
21 | )
22 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/_vizro_utils.py:
--------------------------------------------------------------------------------
 1 | """Contains utilities for the implementation of vizro components."""
 2 | 
 3 | from collections import defaultdict
 4 | from collections.abc import Mapping
 5 | from typing import Any
 6 | 
 7 | 
 8 | def _set_defaults_nested(supplied: Mapping[str, Any], defaults: Mapping[str, Any]) -> dict[str, Any]:
 9 |     supplied = defaultdict(dict, supplied)
10 |     for default_key, default_value in defaults.items():
11 |         if isinstance(default_value, Mapping):
12 |             supplied[default_key] = _set_defaults_nested(supplied[default_key], default_value)
13 |         else:
14 |             supplied.setdefault(default_key, default_value)
15 |     return dict(supplied)
16 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/actions/__init__.py:
--------------------------------------------------------------------------------
1 | from vizro.actions._export_data import export_data
2 | from vizro.actions._filter_interaction import filter_interaction
3 | 
4 | __all__ = ["export_data", "filter_interaction"]
5 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/actions/_action_loop/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/actions/_action_loop/__init__.py


--------------------------------------------------------------------------------
/vizro-core/src/vizro/charts/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/charts/__init__.py


--------------------------------------------------------------------------------
/vizro-core/src/vizro/figures/__init__.py:
--------------------------------------------------------------------------------
 1 | """Contains KPI card functions."""
 2 | 
 3 | from vizro.models.types import capture
 4 | 
 5 | from .library import kpi_card, kpi_card_reference
 6 | 
 7 | __all__ = ["kpi_card", "kpi_card_reference"]
 8 | 
 9 | kpi_card = capture("figure")(kpi_card)
10 | kpi_card_reference = capture("figure")(kpi_card_reference)
11 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/integrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/integrations/__init__.py


--------------------------------------------------------------------------------
/vizro-core/src/vizro/integrations/kedro/__init__.py:
--------------------------------------------------------------------------------
1 | from ._data_manager import catalog_from_project, datasets_from_catalog, pipelines_from_project
2 | 
3 | __all__ = ["catalog_from_project", "datasets_from_catalog", "pipelines_from_project"]
4 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/managers/__init__.py:
--------------------------------------------------------------------------------
1 | """Managers to handle access to key across a Vizro app."""
2 | 
3 | from ._data_manager import data_manager
4 | from ._model_manager import model_manager
5 | 
6 | __all__ = ["data_manager", "model_manager"]
7 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/managers/_managers_utils.py:
--------------------------------------------------------------------------------
 1 | import warnings
 2 | from functools import wraps
 3 | 
 4 | 
 5 | def _state_modifier(method):
 6 |     @wraps(method)
 7 |     def _wrapper(self, *args, **kwargs):
 8 |         if self._frozen_state:
 9 |             warnings.warn(
10 |                 f"{method.__qualname__} modifies global state. Doing this after the dashboard has been built will "
11 |                 f"not work reliably if you run the dashboard with multiple processes.",
12 |                 RuntimeWarning,
13 |                 stacklevel=2,
14 |             )
15 |         return method(self, *args, **kwargs)
16 | 
17 |     return _wrapper
18 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/models/_action/__init__.py:
--------------------------------------------------------------------------------
1 | from vizro.models._action._action import Action
2 | 
3 | __all__ = ["Action"]
4 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/models/_components/__init__.py:
--------------------------------------------------------------------------------
 1 | """Components that are placed according to the `layout` of the `Page`."""
 2 | 
 3 | from vizro.models._components.ag_grid import AgGrid
 4 | from vizro.models._components.button import Button
 5 | from vizro.models._components.card import Card
 6 | from vizro.models._components.container import Container
 7 | from vizro.models._components.figure import Figure
 8 | from vizro.models._components.graph import Graph
 9 | from vizro.models._components.table import Table
10 | from vizro.models._components.tabs import Tabs
11 | from vizro.models._components.text import Text
12 | 
13 | __all__ = ["AgGrid", "Button", "Card", "Container", "Figure", "Graph", "Table", "Tabs", "Text"]
14 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/models/_components/form/__init__.py:
--------------------------------------------------------------------------------
 1 | from vizro.models._components.button import Button
 2 | from vizro.models._components.form.checklist import Checklist
 3 | from vizro.models._components.form.date_picker import DatePicker
 4 | from vizro.models._components.form.dropdown import Dropdown
 5 | from vizro.models._components.form.radio_items import RadioItems
 6 | from vizro.models._components.form.range_slider import RangeSlider
 7 | from vizro.models._components.form.slider import Slider
 8 | 
 9 | __all__ = ["Button", "Checklist", "DatePicker", "Dropdown", "RadioItems", "RangeSlider", "Slider"]
10 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/models/_controls/__init__.py:
--------------------------------------------------------------------------------
1 | from vizro.models._controls.filter import Filter
2 | from vizro.models._controls.parameter import Parameter
3 | 
4 | __all__ = ["Filter", "Parameter"]
5 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/models/_navigation/__init__.py:
--------------------------------------------------------------------------------
1 | from vizro.models._navigation.navigation import Navigation
2 | 
3 | __all__ = ["Navigation"]
4 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/plotly/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/plotly/__init__.py


--------------------------------------------------------------------------------
/vizro-core/src/vizro/plotly/express.py:
--------------------------------------------------------------------------------
 1 | """Functionality to enable drop-in replacement that wraps plotly express figures.
 2 | 
 3 | Makes them compatible with the dashboard when you do `import vizro.plotly.express as px`.
 4 | Only plotly figures are wrapped; everything else is passed through unmodified, e.g. px.data.
 5 | """
 6 | 
 7 | from typing import Any
 8 | 
 9 | import plotly.express as px
10 | 
11 | from vizro.models.types import capture
12 | 
13 | 
14 | # TODO: is there a better way to see if the import is a graph? Don't want to check return type though. -> MS
15 | # Might also want to define __dir__ or __all__ in order to facilitate IDE completion etc.
16 | # TODO: type hints -> MS
17 | def __getattr__(name: str) -> Any:
18 |     px_name = getattr(px, name)
19 |     try:
20 |         return capture(mode="graph")(px_name) if px_name.__module__ == "plotly.express._chart_types" else px_name
21 |     except AttributeError:
22 |         return px_name
23 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/py.typed:
--------------------------------------------------------------------------------
1 |  # Marker file for PEP 561
2 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/css/code.css:
--------------------------------------------------------------------------------
 1 | code.language-python.hljs {
 2 |   font-family: monospace;
 3 |   padding: 0;
 4 | }
 5 | 
 6 | .hljs {
 7 |   background: unset;
 8 |   color: unset;
 9 |   font-family: monospace;
10 | }
11 | 
12 | .hljs-comment,
13 | .hljs-code,
14 | .hljs-formula {
15 |   font-family: monospace;
16 | }
17 | 
18 | .hljs-string,
19 | .hljs-params,
20 | .hljs-params .hljs-string,
21 | .hljs-number,
22 | .hljs-subst {
23 |   color: var(--text-code-string);
24 |   font-family: monospace;
25 | }
26 | 
27 | .hljs-literal {
28 |   color: var(--text-code-literal);
29 |   font-family: monospace;
30 | }
31 | 
32 | .hljs-keyword {
33 |   color: var(--text-code-keyword);
34 |   font-family: monospace;
35 | }
36 | 
37 | .hljs-title.function_,
38 | .hljs-meta,
39 | .hljs-built_in,
40 | .hljs-type {
41 |   color: var(--text-code-meta);
42 |   font-family: monospace;
43 | }
44 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/css/fonts/inter-variable-font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/static/css/fonts/inter-variable-font.ttf


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/css/fonts/material-symbols-outlined.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/src/vizro/static/css/fonts/material-symbols-outlined.woff2


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/css/index.css:
--------------------------------------------------------------------------------
 1 | @font-face {
 2 |   font-family: Inter;
 3 |   src: url("./fonts/inter-variable-font.ttf") format("truetype");
 4 | }
 5 | 
 6 | * {
 7 |   border: 0;
 8 |   box-sizing: border-box;
 9 |   font-family: Inter, sans-serif, Arial, serif;
10 |   letter-spacing: 0;
11 |   margin: 0;
12 |   text-decoration: none;
13 | }
14 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/css/tiles.css:
--------------------------------------------------------------------------------
 1 | .table-container,
 2 | .dash-graph {
 3 |   flex: 1 1 auto;
 4 |   overflow: auto;
 5 |   width: 100%;
 6 | }
 7 | 
 8 | .figure-title,
 9 | .figure-header,
10 | .figure-footer {
11 |   display: flex;
12 |   flex: 0 1 auto;
13 |   flex-direction: column;
14 |   gap: 8px;
15 | }
16 | 
17 | /* Needs to deviate from the default as the info-icon could be placed inside */
18 | .figure-title {
19 |   align-items: center;
20 |   flex-direction: row;
21 | }
22 | 
23 | .figure-footer {
24 |   padding-top: 0.75rem;
25 | }
26 | 
27 | .figure-footer a {
28 |   font-size: inherit;
29 | }
30 | 
31 | /* Improve footnote of plotly maps */
32 | .maplibregl-ctrl {
33 |   display: flex;
34 | }
35 | 
36 | /* Fixes flickering scroll-bar when using new plotly maps: https://github.com/mckinsey/vizro/pull/984 */
37 | .js-plotly-plot {
38 |   overflow: hidden;
39 | }
40 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/static/js/models/container.js:
--------------------------------------------------------------------------------
 1 | function collapse_container(n_clicks, is_open) {
 2 |   return [
 3 |     !is_open,
 4 |     {
 5 |       // The arrow is correctly pointing up/down to begin with, so we only rotate it when there's an odd number of
 6 |       // clicks. If this was conditional instead on is_open then it wouldn't work correctly.
 7 |       transform: n_clicks % 2 ? "rotate(180deg)" : "rotate(0deg)",
 8 |       transition: "transform 0.35s ease-in-out",
 9 |     },
10 |     is_open ? "Show Content" : "Hide Content",
11 |   ];
12 | }
13 | 
14 | window.dash_clientside = {
15 |   ...window.dash_clientside,
16 |   container: { collapse_container: collapse_container },
17 | };
18 | 


--------------------------------------------------------------------------------
/vizro-core/src/vizro/tables/__init__.py:
--------------------------------------------------------------------------------
1 | from vizro.tables._dash_ag_grid import dash_ag_grid
2 | from vizro.tables._dash_table import dash_data_table
3 | 
4 | __all__ = ["dash_ag_grid", "dash_data_table"]
5 | 


--------------------------------------------------------------------------------
/vizro-core/tests/conftest.py:
--------------------------------------------------------------------------------
 1 | import plotly.io as pio
 2 | import pytest
 3 | 
 4 | from vizro import Vizro
 5 | 
 6 | # Setting pio.templates.default here is a bit of a hack. This is executed on Vizro.build, but some tests
 7 | # that don't run Vizro.build still expect it to be set. Ideally these tests would set the theme themselves or not
 8 | # pay attention to the template in the test if it's not relevant.
 9 | pio.templates.default = "vizro_dark"
10 | 
11 | # Allow our custom assert functions in tests_utils/asserts.py to do introspection nicely still.
12 | # See https://pytest.org/en/7.4.x/how-to/assert.html#assertion-introspection-details
13 | pytest.register_assert_rewrite("asserts")
14 | 
15 | 
16 | @pytest.fixture(autouse=True)
17 | def reset_managers():
18 |     # this ensures that the managers are reset before and after each test
19 |     # the reset BEFORE all tests is important because at pytest test collection, fixtures are evaluated and hence
20 |     # the model_manager may be populated with models from other tests
21 |     Vizro._reset()
22 |     yield
23 |     Vizro._reset()
24 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_ag_grid_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_ag_grid_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_button_styles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_button_styles.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_flex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_flex.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_flex_switched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_flex_switched.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_grid.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_grid_switched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_containers_grid_switched.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_subcontainers_flex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_collapsible_subcontainers_flex.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_container_variants_dark_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_container_variants_dark_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_container_variants_light_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_container_variants_light_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_controls_tooltip_and_icon_dark_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_controls_tooltip_and_icon_dark_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_controls_tooltip_and_icon_light_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_controls_tooltip_and_icon_light_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_export_action_page[one_page].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_export_action_page[one_page].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_extra_parameter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_extra_parameter.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_filters_inside_containers_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_filters_inside_containers_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_flex_default_layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_flex_default_layout.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_all_params.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_all_params.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_direction_and_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_direction_and_graph.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_gap_and_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_gap_and_table.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_wrap_and_ag_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_flex_layout_wrap_and_ag_grid.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_homepage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_homepage.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_kpi_card_component_library.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_kpi_card_component_library.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_kpi_indicators_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_kpi_indicators_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_navbar_filters_page[navbar_pages].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_navbar_filters_page[navbar_pages].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_navbar_kpi_indicators_page[navbar_accordions].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_navbar_kpi_indicators_page[navbar_accordions].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_navbar_kpi_indicators_page[navbar_navlink].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_navbar_kpi_indicators_page[navbar_navlink].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_nested_tabs_filters_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_nested_tabs_filters_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_table_interactions_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_table_interactions_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_table_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_table_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome/main_tabs_parameters_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome/main_tabs_parameters_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome_mobile/main_filter_interactions_dark_theme_page[mobile].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome_mobile/main_filter_interactions_dark_theme_page[mobile].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome_mobile/main_filter_interactions_page[mobile].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome_mobile/main_filter_interactions_page[mobile].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/chrome_mobile/main_homepage_mobile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/chrome_mobile/main_homepage_mobile.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_ag_grid_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_ag_grid_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_button_styles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_button_styles.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_flex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_flex.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_flex_switched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_flex_switched.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_grid.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_grid_switched.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_containers_grid_switched.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_subcontainers_flex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_collapsible_subcontainers_flex.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_container_variants_dark_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_container_variants_dark_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_container_variants_light_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_container_variants_light_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_controls_tooltip_and_icon_dark_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_controls_tooltip_and_icon_dark_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_controls_tooltip_and_icon_light_theme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_controls_tooltip_and_icon_light_theme.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_export_action_page[one_page].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_export_action_page[one_page].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_extra_parameter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_extra_parameter.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_filters_inside_containers_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_filters_inside_containers_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_flex_default_layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_flex_default_layout.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_all_params.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_all_params.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_direction_and_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_direction_and_graph.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_gap_and_table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_gap_and_table.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_wrap_and_ag_grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_flex_layout_wrap_and_ag_grid.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_homepage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_homepage.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_kpi_indicators_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_kpi_indicators_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_navbar_filters_page[navbar_pages].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_navbar_filters_page[navbar_pages].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_navbar_kpi_indicators_page[navbar_accordions].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_navbar_kpi_indicators_page[navbar_accordions].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_navbar_kpi_indicators_page[navbar_navlink].png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_navbar_kpi_indicators_page[navbar_navlink].png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_nested_tabs_filters_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_nested_tabs_filters_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_table_interactions_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_table_interactions_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_table_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_table_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/screenshots/firefox/main_tabs_parameters_page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/screenshots/firefox/main_tabs_parameters_page.png


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/custom_components/custom_actions/custom_actions.py:
--------------------------------------------------------------------------------
 1 | from typing import Optional
 2 | 
 3 | from vizro.models.types import capture
 4 | 
 5 | 
 6 | @capture("action")
 7 | def scatter_click_data_custom_action(click_data: Optional[dict] = None):
 8 |     """Custom action."""
 9 |     if click_data:
10 |         return f'Scatter chart clicked data:\n### Species: "{click_data["points"][0]["customdata"][0]}"'
11 |     return "### No data clicked."
12 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/custom_components/custom_charts/bar_custom.py:
--------------------------------------------------------------------------------
 1 | import vizro.plotly.express as px
 2 | from vizro.models.types import capture
 3 | 
 4 | 
 5 | @capture("graph")
 6 | def bar_with_highlight(data_frame, x, highlight_bar=None):
 7 |     """Custom chart to test using DatePicker with Parameter."""
 8 |     fig = px.bar(data_frame=data_frame, x=x)
 9 |     fig["data"][0]["marker"]["color"] = ["orange" if c == highlight_bar else "blue" for c in fig["data"][0]["x"]]
10 |     return fig
11 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/custom_components/custom_components/dropdown.py:
--------------------------------------------------------------------------------
 1 | from typing import Literal
 2 | 
 3 | import vizro.models as vm
 4 | 
 5 | 
 6 | class CustomDropdown(vm.Dropdown):
 7 |     """Custom Dropdown that has multi=False as default."""
 8 | 
 9 |     type: Literal["custom-dropdown"] = "custom-dropdown"
10 |     multi: bool = False
11 | 
12 |     def build(self):
13 |         dropdown_obj = super().build()
14 |         return dropdown_obj
15 | 
16 | 
17 | # Important: Add new components to expected type - here the selector of the parent components
18 | vm.Filter.add_type("selector", CustomDropdown)
19 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/custom_components/custom_components/range_slider_non_cross.py:
--------------------------------------------------------------------------------
 1 | from typing import Literal
 2 | 
 3 | import vizro.models as vm
 4 | 
 5 | 
 6 | # Custom component based on existing component
 7 | class RangeSliderNonCross(vm.RangeSlider):
 8 |     """Custom numeric multi-selector `RangeSliderNonCross` to be provided to `Filter`."""
 9 | 
10 |     type: Literal["other_range_slider"] = "other_range_slider"
11 | 
12 |     def build(self):
13 |         range_slider_build_obj = super().build()
14 |         range_slider_build_obj[self.id].allowCross = False
15 |         range_slider_build_obj[self.id].tooltip = {
16 |             "always_visible": True,
17 |             "placement": "bottom",
18 |         }
19 |         return range_slider_build_obj
20 | 
21 | 
22 | # Important: Add new components to expected type - here the selector of the parent components
23 | vm.Filter.add_type("selector", RangeSliderNonCross)
24 | vm.Parameter.add_type("selector", RangeSliderNonCross)
25 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/banner.svg:
--------------------------------------------------------------------------------
1 | <svg width="300" height="300" viewBox="0 0 300 300" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path d="M256 43V256H43L256 43Z" fill="#2251FF"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/css/custom.css:
--------------------------------------------------------------------------------
 1 | .anchor-container {
 2 |   align-items: center;
 3 |   background: var(--text-primary);
 4 |   border-top-left-radius: 8px;
 5 |   bottom: 0;
 6 |   color: var(--text-primary-inverted) !important;
 7 |   display: flex;
 8 |   font-size: 0.8rem;
 9 |   font-weight: 500;
10 |   height: 24px;
11 |   padding: 0 12px;
12 |   position: fixed;
13 |   right: 0;
14 | }
15 | 
16 | .anchor-container:focus,
17 | .anchor-container:hover {
18 |   background: var(--text-secondary);
19 |   color: var(--text-primary-inverted);
20 | }
21 | 
22 | img#banner {
23 |   height: 16px;
24 | }
25 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/css/typography.css:
--------------------------------------------------------------------------------
1 | h1,
2 | h2,
3 | .heading-1-400,
4 | .heading-2-400 {
5 |   color: hotpink;
6 | }
7 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/vizro/dashboards/assets/favicon.ico


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/images/icons/content/collections.svg:
--------------------------------------------------------------------------------
1 | <svg width="14" height="20" viewBox="0 0 14 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M13 6C13.5523 6 14 6.44772 14 7V19C14 19.5523 13.5523 20 13 20H1C0.447715 20 0 19.5523 0 19V7C0 6.44772 0.447715 6 1 6H13ZM12 8H2V18H12V8ZM11 3C11.5523 3 12 3.44772 12 4V5H2V4C2 3.44772 2.44772 3 3 3H11ZM9 0C9.55228 0 10 0.447715 10 1V2H4V1C4 0.447715 4.44772 0 5 0H9Z" fill="white"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/images/icons/content/hypotheses.svg:
--------------------------------------------------------------------------------
1 | <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2 | <path fill-rule="evenodd" clip-rule="evenodd" d="M3 8C3.55228 8 4 8.44772 4 9V16H0V9C0 8.44772 0.447715 8 1 8H3ZM9 0C9.55228 0 10 0.447715 10 1V16H6V1C6 0.447715 6.44772 0 7 0H9ZM15 4C15.5523 4 16 4.44772 16 5V16H12V5C12 4.44772 12.4477 4 13 4H15Z" fill="white"/>
3 | </svg>
4 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/assets/logo.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/e2e/vizro/dashboards/assets/logo.jpeg


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/default/dashboard_one_page.py:
--------------------------------------------------------------------------------
 1 | from pages.export_action_page import export_action_page
 2 | 
 3 | import vizro.models as vm
 4 | from vizro import Vizro
 5 | 
 6 | dashboard = vm.Dashboard(
 7 |     title="Vizro dashboard for integration testing",
 8 |     pages=[export_action_page],
 9 |     theme="vizro_light",
10 | )
11 | 
12 | app = Vizro(assets_folder="../assets").build(dashboard)
13 | 
14 | if __name__ == "__main__":
15 |     app.run(debug=True)
16 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/default/dynamic_filters_data.yaml:
--------------------------------------------------------------------------------
1 | date_max: "2024-03-10"
2 | date_min: "2024-03-05"
3 | max: 7
4 | min: 6
5 | setosa: 5
6 | versicolor: 10
7 | virginica: 15
8 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/default/pages/container_pages.py:
--------------------------------------------------------------------------------
 1 | import e2e.vizro.constants as cnst
 2 | 
 3 | import vizro.models as vm
 4 | import vizro.plotly.express as px
 5 | 
 6 | iris = px.data.iris()
 7 | 
 8 | container_variants_page = vm.Page(
 9 |     title=cnst.CONTAINER_VARIANTS_PAGE,
10 |     components=[
11 |         vm.Container(
12 |             title="Container - filled",
13 |             components=[
14 |                 vm.Graph(
15 |                     id=cnst.SCATTER_FILLED, figure=px.scatter(iris, x="sepal_length", y="petal_width", color="species")
16 |                 )
17 |             ],
18 |             variant="filled",
19 |         ),
20 |         vm.Container(
21 |             title="Container - outlined",
22 |             components=[
23 |                 vm.Graph(
24 |                     id=cnst.SCATTER_OUTLINED,
25 |                     figure=px.scatter(iris, x="sepal_length", y="petal_width", color="species"),
26 |                 )
27 |             ],
28 |             variant="outlined",
29 |         ),
30 |     ],
31 | )
32 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/default/pages/datepicker_parameters_page.py:
--------------------------------------------------------------------------------
 1 | import e2e.vizro.constants as cnst
 2 | from custom_charts.bar_custom import bar_with_highlight
 3 | 
 4 | import vizro.models as vm
 5 | import vizro.plotly.express as px
 6 | 
 7 | stocks = px.data.stocks()
 8 | 
 9 | datepicker_parameters_page = vm.Page(
10 |     title=cnst.DATEPICKER_PARAMS_PAGE,
11 |     components=[
12 |         vm.Graph(
13 |             id=cnst.BAR_CUSTOM_ID,
14 |             figure=bar_with_highlight(
15 |                 x="date",
16 |                 data_frame=stocks,
17 |             ),
18 |         ),
19 |     ],
20 |     controls=[
21 |         vm.Parameter(
22 |             targets=[f"{cnst.BAR_CUSTOM_ID}.highlight_bar"],
23 |             selector=vm.DatePicker(
24 |                 id=cnst.DATEPICKER_PARAMS_ID,
25 |                 min="2018-01-01",
26 |                 max="2023-01-01",
27 |                 value="2018-04-01",
28 |                 range=False,
29 |             ),
30 |         ),
31 |     ],
32 | )
33 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/default/pages/filter_and_param_page.py:
--------------------------------------------------------------------------------
 1 | import e2e.vizro.constants as cnst
 2 | 
 3 | import vizro.models as vm
 4 | import vizro.plotly.express as px
 5 | 
 6 | iris = px.data.iris()
 7 | 
 8 | filter_and_param_page = vm.Page(
 9 |     title=cnst.FILTER_AND_PARAM_PAGE,
10 |     components=[
11 |         vm.Graph(
12 |             id=cnst.BOX_FILTER_AND_PARAM_ID,
13 |             figure=px.box(
14 |                 iris,
15 |                 x="sepal_length",
16 |                 y="petal_width",
17 |                 color="sepal_width",
18 |             ),
19 |         ),
20 |     ],
21 |     controls=[
22 |         vm.Filter(column="species", selector=vm.Dropdown(id=cnst.DROPDOWN_FILTER_AND_PARAM)),
23 |         vm.Parameter(
24 |             targets=[f"{cnst.BOX_FILTER_AND_PARAM_ID}.title"],
25 |             selector=vm.RadioItems(id=cnst.RADIO_ITEMS_FILTER_AND_PARAM, options=["red", "blue"], value="blue"),
26 |         ),
27 |     ],
28 | )
29 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/dashboards/yaml/dashboard_yaml.py:
--------------------------------------------------------------------------------
 1 | from pathlib import Path
 2 | 
 3 | import yaml
 4 | from e2e.vizro.constants import YAML_PORT
 5 | 
 6 | import vizro.models as vm
 7 | import vizro.plotly.express as px
 8 | from vizro import Vizro
 9 | from vizro.managers import data_manager
10 | 
11 | data_manager["iris"] = px.data.iris()
12 | data_manager["gapminder"] = px.data.gapminder()
13 | dashboard = yaml.safe_load(Path("tests/e2e/vizro/dashboards/yaml/dashboard.yaml").read_text(encoding="utf-8"))
14 | dashboard = vm.Dashboard(**dashboard)
15 | 
16 | app = Vizro(assets_folder="../assets").build(dashboard)
17 | 
18 | if __name__ == "__main__":
19 |     app.run(port=YAML_PORT, debug=True)
20 | 


--------------------------------------------------------------------------------
/vizro-core/tests/e2e/vizro/test_dom_elements/test_charts.py:
--------------------------------------------------------------------------------
 1 | import e2e.vizro.constants as cnst
 2 | from e2e.vizro.waiters import graph_load_waiter
 3 | 
 4 | 
 5 | def test_modebar(dash_br):
 6 |     """Check that modebar element exist for the chart."""
 7 |     dash_br.multiple_click(f"a[href='{cnst.FILTERS_PAGE_PATH}']", 1)
 8 |     dash_br.wait_for_element(f"#{cnst.SCATTER_GRAPH_ID} .modebar-container div[id^='modebar']")
 9 | 
10 | 
11 | def test_modebar_false(dash_br):
12 |     """Check that modebar element disabled for the chart."""
13 |     dash_br.multiple_click(f"a[href='{cnst.FILTERS_PAGE_PATH}']", 1)
14 |     graph_load_waiter(dash_br)
15 |     dash_br.wait_for_no_elements(f'div[id="{cnst.BOX_GRAPH_ID}"] .modebar-container div[id^="modebar"]')
16 | 


--------------------------------------------------------------------------------
/vizro-core/tests/tests_utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-core/tests/tests_utils/__init__.py


--------------------------------------------------------------------------------
/vizro-core/tests/tests_utils/e2e/vizro/files/filtered_scatter_base.csv:
--------------------------------------------------------------------------------
1 | sepal_length,sepal_width,petal_length,petal_width,species,species_id
2 | 4.9,3.1,1.5,0.1,setosa,1
3 | 4.8,3.0,1.4,0.1,setosa,1
4 | 4.3,3.0,1.1,0.1,setosa,1
5 | 5.2,4.1,1.5,0.1,setosa,1
6 | 4.9,3.1,1.5,0.1,setosa,1
7 | 4.9,3.1,1.5,0.1,setosa,1
8 | 


--------------------------------------------------------------------------------
/vizro-core/tests/tests_utils/e2e/vizro/waiters.py:
--------------------------------------------------------------------------------
 1 | from dash.testing.wait import until
 2 | from e2e.vizro import constants as cnst
 3 | from selenium.webdriver.common.by import By
 4 | from selenium.webdriver.support import expected_conditions
 5 | from selenium.webdriver.support.wait import WebDriverWait
 6 | 
 7 | 
 8 | def graph_load_waiter(driver):
 9 |     """Waiting for graph's x-axis to appear."""
10 |     driver.wait_for_no_elements('div[data-dash-is-loading="true"]')
11 | 
12 | 
13 | def graph_load_waiter_selenium(driver, graph_id, timeout=cnst.SELENIUM_WAITERS_TIMEOUT):
14 |     """Waiting for graph's x-axis to appear for pure selenium."""
15 |     WebDriverWait(driver, timeout).until(
16 |         expected_conditions.presence_of_element_located(
17 |             (By.CSS_SELECTOR, f"div[id='{graph_id}'] path[class='xtick ticks crisp']")
18 |         )
19 |     )
20 | 
21 | 
22 | def callbacks_finish_waiter(driver):
23 |     until(driver._wait_for_callbacks, timeout=40, poll=0.3)
24 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/charts/test_charts_utils.py:
--------------------------------------------------------------------------------
 1 | from copy import deepcopy
 2 | 
 3 | import plotly.graph_objects as go
 4 | import pytest
 5 | 
 6 | from vizro.models.types import capture
 7 | 
 8 | 
 9 | @pytest.fixture
10 | def minimal_capture_chart(gapminder):
11 |     @capture("graph")
12 |     def _minimal_capture_chart(data_frame):
13 |         return go.Figure()
14 | 
15 |     return _minimal_capture_chart(gapminder)
16 | 
17 | 
18 | @pytest.mark.parametrize("chart_type", ["standard_px_chart", "minimal_capture_chart"])
19 | def test_deepcopy_DashboardReadyFigure(chart_type, request):
20 |     original = request.getfixturevalue(chart_type)
21 |     copy = deepcopy(original)
22 | 
23 |     assert hasattr(copy, "_captured_callable")
24 |     assert original._captured_callable is not copy._captured_callable
25 |     assert original._captured_callable() == copy._captured_callable()
26 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/integrations/kedro/catalog.yaml:
--------------------------------------------------------------------------------
 1 | "{pandas_factory}#csv":
 2 |   type: pandas.CSVDataset
 3 |   filepath: "{pandas_factory}.csv"
 4 | 
 5 | pandas_excel:
 6 |   type: ${_pandas_excel_type}
 7 |   filepath: pandas_excel.xlsx
 8 | 
 9 | pandas_parquet:
10 |   type: pandas.ParquetDataset
11 |   filepath: pandas_parquet.parquet
12 | 
13 | not_dataframe:
14 |   type: pickle.PickleDataset
15 |   filepath: pickle.pkl
16 | 
17 | # Use variable interpolation to check OmegaConfigLoader does what is expected over just yaml.safe_load.
18 | _pandas_excel_type: pandas.ExcelDataset
19 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/models/_components/conftest.py:
--------------------------------------------------------------------------------
 1 | """Fixtures to be shared across several tests."""
 2 | 
 3 | import pytest
 4 | 
 5 | import vizro.models as vm
 6 | from vizro.actions import filter_interaction
 7 | 
 8 | 
 9 | @pytest.fixture
10 | def filter_interaction_action():
11 |     return vm.Action(function=filter_interaction())
12 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/models/_navigation/conftest.py:
--------------------------------------------------------------------------------
 1 | """Fixtures to be shared across several tests."""
 2 | 
 3 | import pytest
 4 | 
 5 | import vizro.models as vm
 6 | 
 7 | 
 8 | @pytest.fixture()
 9 | def pages_as_list():
10 |     return ["Page 1", "Page 2"]
11 | 
12 | 
13 | @pytest.fixture
14 | def pages_as_dict():
15 |     return {"Group": ["Page 1", "Page 2"]}
16 | 
17 | 
18 | @pytest.fixture()
19 | def prebuilt_two_page_dashboard(vizro_app, page_1, page_2):
20 |     dashboard = vm.Dashboard(pages=[page_1, page_2])
21 |     dashboard.pre_build()
22 |     return dashboard
23 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/models/conftest.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | 
 3 | import vizro.models as vm
 4 | from vizro.models.types import capture
 5 | 
 6 | 
 7 | @pytest.fixture
 8 | def identity_action_function():
 9 |     @capture("action")
10 |     def _identity_action_function(arg=None):
11 |         return arg
12 | 
13 |     return _identity_action_function
14 | 
15 | 
16 | @pytest.fixture(params=[vm.Container, vm.Page])
17 | def model_with_layout(request):
18 |     return request.param
19 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/plotly/test_express.py:
--------------------------------------------------------------------------------
 1 | import plotly.express as px
 2 | 
 3 | import vizro.plotly.express as vpx
 4 | 
 5 | 
 6 | def test_non_chart_unchanged():
 7 |     assert vpx.data is px.data
 8 | 
 9 | 
10 | def test_chart_wrapped():
11 |     graph = vpx.scatter(px.data.iris(), x="petal_width", y="petal_length")
12 |     assert graph._captured_callable._function is px.scatter
13 |     assert vpx.scatter is not px.scatter
14 | 


--------------------------------------------------------------------------------
/vizro-core/tests/unit/vizro/test_vizro_utils.py:
--------------------------------------------------------------------------------
 1 | import pytest
 2 | 
 3 | from vizro._vizro_utils import _set_defaults_nested
 4 | 
 5 | 
 6 | @pytest.fixture
 7 | def default_dictionary():
 8 |     return {"a": {"b": {"c": 1, "d": 2}}, "e": 3}
 9 | 
10 | 
11 | @pytest.mark.parametrize(
12 |     "input, expected",
13 |     [
14 |         ({}, {"a": {"b": {"c": 1, "d": 2}}, "e": 3}),  # nothing supplied
15 |         ({"e": 10}, {"a": {"b": {"c": 1, "d": 2}}, "e": 10}),  # flat main key
16 |         ({"a": {"b": {"c": 11, "d": 12}}}, {"a": {"b": {"c": 11, "d": 12}}, "e": 3}),  # updated multiple nested keys
17 |         ({"a": {"b": {"c": 1, "d": {"f": 42}}}}, {"a": {"b": {"c": 1, "d": {"f": 42}}}, "e": 3}),  # add new dict
18 |         ({"a": {"b": {"c": 5}}}, {"a": {"b": {"c": 5, "d": 2}}, "e": 3}),  # arbitrary nesting
19 |     ],
20 | )
21 | def test_set_defaults_nested(default_dictionary, input, expected):
22 |     assert _set_defaults_nested(input, default_dictionary) == expected
23 | 


--------------------------------------------------------------------------------
/vizro-core/tools/run_jest.sh:
--------------------------------------------------------------------------------
 1 | #!/bin/bash
 2 | 
 3 | if node --version >/dev/null 2>&1; then
 4 |   echo "Execute the command \"npm install\" to update your node modules to the latest versions..."
 5 |   npm install >/dev/null 2>&1;
 6 |   echo "Running jest tests."
 7 |   npx jest "$@";
 8 | else
 9 |   echo "
10 |   Node.js is not installed or there was an issue.
11 | 
12 |   To run tests for the javascript files you need to:
13 |   1. Install Node.js by downloading the LTS version at https://nodejs.org/en/download
14 |   2. Run command: \"npm install\" (to install npm dependencies)
15 |   3. Run command: \"hatch run test-js\" again (to run javascript tests)
16 |   "
17 | fi
18 | 


--------------------------------------------------------------------------------
/vizro-mcp/.dockerignore:
--------------------------------------------------------------------------------
 1 | assets
 2 | changelog.d
 3 | tests
 4 | .venv
 5 | .pytest_cache
 6 | __pycache__
 7 | *.pyc
 8 | *.pkl
 9 | *.ipynb
10 | *.log
11 | 


--------------------------------------------------------------------------------
/vizro-mcp/Dockerfile:
--------------------------------------------------------------------------------
 1 | FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
 2 | 
 3 | WORKDIR /app
 4 | 
 5 | COPY pyproject.toml uv.lock ./
 6 | RUN uv sync --frozen --no-install-project --no-dev --no-editable
 7 | 
 8 | COPY . /app
 9 | 
10 | ENTRYPOINT ["uv", "run", "vizro-mcp"]
11 | 


--------------------------------------------------------------------------------
/vizro-mcp/assets/claude_prompt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/assets/claude_prompt.png


--------------------------------------------------------------------------------
/vizro-mcp/assets/claude_validate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/assets/claude_validate.png


--------------------------------------------------------------------------------
/vizro-mcp/assets/claude_working.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/assets/claude_working.png


--------------------------------------------------------------------------------
/vizro-mcp/assets/cursor_working.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/assets/cursor_working.png


--------------------------------------------------------------------------------
/vizro-mcp/assets/vizro-mcp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/assets/vizro-mcp.gif


--------------------------------------------------------------------------------
/vizro-mcp/changelog.d/new_fragment.md.j2:
--------------------------------------------------------------------------------
 1 | <!--
 2 | A new scriv changelog fragment.
 3 | 
 4 | Uncomment the section that is right (remove the HTML comment wrapper).
 5 | -->
 6 | 
 7 | {% for cat in config.categories -%}
 8 | <!--
 9 | ### {{ cat }}
10 | 
11 | - A bullet item for the {{ cat }} category with a link to the relevant PR at the end of your entry, e.g. Enable feature XXX. ([#1](https://github.com/mckinsey/vizro/pull/1))
12 | 
13 | -->
14 | {% endfor -%}
15 | 


--------------------------------------------------------------------------------
/vizro-mcp/changelog.d/scriv.ini:
--------------------------------------------------------------------------------
1 | [scriv]
2 | version = literal: src/vizro_mcp/__init__.py: __version__
3 | format = md
4 | categories = Highlights ✨, Removed, Added, Changed, Deprecated, Fixed, Security
5 | 


--------------------------------------------------------------------------------
/vizro-mcp/glama.json:
--------------------------------------------------------------------------------
1 | {
2 |   "$schema": "https://glama.ai/mcp/schemas/server.json",
3 |   "maintainers": ["maxschulz-COL", "lingyielia"]
4 | }
5 | 


--------------------------------------------------------------------------------
/vizro-mcp/src/vizro_mcp/__init__.py:
--------------------------------------------------------------------------------
 1 | import logging
 2 | import sys
 3 | 
 4 | from .server import mcp
 5 | 
 6 | __version__ = "0.1.3.dev0"
 7 | 
 8 | 
 9 | def main():
10 |     """Run the Vizro MCP server - makes charts and dashboards available to AI assistants."""
11 |     # Configure logging to show warnings by default
12 |     logging.basicConfig(level=logging.WARNING, stream=sys.stderr)
13 | 
14 |     # Run the MCP server
15 |     mcp.run()
16 | 
17 | 
18 | if __name__ == "__main__":
19 |     main()
20 | 


--------------------------------------------------------------------------------
/vizro-mcp/src/vizro_mcp/_schemas/__init__.py:
--------------------------------------------------------------------------------
 1 | from .schemas import (
 2 |     AgGridEnhanced,
 3 |     ChartPlan,
 4 |     GraphEnhanced,
 5 | )
 6 | 
 7 | __all__ = [
 8 |     "AgGridEnhanced",
 9 |     "ChartPlan",
10 |     "GraphEnhanced",
11 | ]
12 | 


--------------------------------------------------------------------------------
/vizro-mcp/src/vizro_mcp/py.typed:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mckinsey/vizro/d0b83f4331f0e20d5b1030844fe8292a9118b7f6/vizro-mcp/src/vizro_mcp/py.typed


--------------------------------------------------------------------------------