├── .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 | "^.+\\.jsquot;: "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 --------------------------------------------------------------------------------