├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── documentation.yml
│ └── feature_request.yml
├── py-shiny
│ ├── check
│ │ └── action.yaml
│ ├── pytest-browsers
│ │ └── action.yaml
│ └── setup
│ │ └── action.yaml
└── workflows
│ ├── build-docs.yaml
│ ├── conventional-commits.yaml
│ ├── deploy-tests.yaml
│ ├── pytest.yaml
│ ├── triage-issues.yaml
│ └── verify-js-built.yaml
├── .gitignore
├── .pre-commit-config.yaml
├── .prettierrc
├── .vscode
├── extensions.json
├── launch.json
└── settings.json
├── CHANGELOG.md
├── CITATION.cff
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.md
├── docs
├── .gitignore
├── Makefile
├── README.md
├── _combine_objects_json.py
├── _extensions
│ ├── machow
│ │ └── interlinks
│ │ │ ├── .gitignore
│ │ │ ├── _extension.yml
│ │ │ └── interlinks.lua
│ └── quarto-ext
│ │ └── shinylive
│ │ ├── README.md
│ │ ├── _extension.yml
│ │ ├── resources
│ │ └── css
│ │ │ └── shinylive-quarto.css
│ │ └── shinylive.lua
├── _quarto.yml
├── _quartodoc-core.yml
├── _quartodoc-express.yml
├── _quartodoc-testing.yml
├── _renderer.py
└── shiny-docs.css
├── examples
├── airmass
│ ├── README.md
│ ├── app.py
│ ├── location.py
│ └── requirements.txt
├── annotation-export
│ ├── README.md
│ ├── app.py
│ ├── boulder_temp.csv
│ └── requirements.txt
├── brand
│ ├── Monda-OFL.txt
│ ├── Monda.ttf
│ ├── _brand.yml
│ ├── _colors.scss
│ ├── app-express.py
│ ├── app.py
│ └── requirements.txt
├── brownian
│ ├── README.md
│ ├── app.py
│ ├── brownian_motion.py
│ ├── mediapipe.py
│ ├── requirements.txt
│ └── shinymediapipe
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── _hand.py
│ │ ├── index.js
│ │ ├── package-lock.json
│ │ └── package.json
├── busy_indicators
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── cpuinfo
│ ├── README.md
│ ├── app.py
│ ├── fakepsutil.py
│ └── requirements.txt
├── dataframe
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── duckdb
│ ├── .gitignore
│ ├── README.md
│ ├── app.py
│ ├── manifest.json
│ ├── query.py
│ └── requirements.txt
├── event
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── express
│ ├── README.md
│ ├── accordion_app.py
│ ├── basic_app.py
│ ├── column_wrap_app.py
│ ├── expressify_app.py
│ ├── hold_app.py
│ ├── nav_app.py
│ ├── plot_app.py
│ ├── render_express_app.py
│ ├── requirements.txt
│ ├── shared.py
│ ├── shared_app.py
│ └── sidebar_app.py
├── global_pyplot
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── headers
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── inputs-update
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── load_balance
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── model-score
│ ├── .gitignore
│ ├── README.md
│ ├── app.py
│ ├── fake_accuracy_scores.csv
│ ├── plotly_streaming.py
│ ├── requirements.txt
│ └── scoredata.py
├── moduleapp
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── penguins
│ ├── README.md
│ ├── app.py
│ ├── colors.py
│ ├── penguins.csv
│ ├── requirements.txt
│ └── www
│ │ ├── Adelie.png
│ │ ├── Chinstrap.png
│ │ ├── Gentoo.png
│ │ ├── palmerpenguins.png
│ │ └── penguins.png
├── req
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── static_plots
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── typed_inputs
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
└── ui-func
│ ├── README.md
│ ├── app.py
│ └── requirements.txt
├── js
├── .eslintrc.js
├── .gitignore
├── .nvmrc
├── build.ts
├── chat
│ ├── chat.scss
│ └── chat.ts
├── data-frame
│ ├── cell-edit-map.tsx
│ ├── cell.tsx
│ ├── data-update.tsx
│ ├── dom-utils.tsx
│ ├── filter-numeric.tsx
│ ├── filter.tsx
│ ├── globals.d.ts
│ ├── immutable-set.tsx
│ ├── index.tsx
│ ├── request.ts
│ ├── selection.tsx
│ ├── sort-arrows.tsx
│ ├── sort.ts
│ ├── style-info.ts
│ ├── styles.scss
│ ├── tabindex-group.ts
│ ├── table-summary.tsx
│ └── types.ts
├── markdown-stream
│ ├── highlight_styles.scss
│ ├── markdown-stream.scss
│ └── markdown-stream.ts
├── package-lock.json
├── package.json
├── page-output
│ └── page-output.ts
├── spin
│ └── spin.scss
├── tsconfig.json
└── utils
│ └── _utils.ts
├── pyproject.toml
├── pyrightconfig.json
├── pytest.ini
├── scripts
├── _functions_deps.R
├── _functions_sass.R
├── _functions_setup.R
├── _pkg-sources.R
├── define-shims.js
├── generate-imports.py
└── htmlDependencies.R
├── shiny
├── __init__.py
├── __main__.py
├── _app.py
├── _autoreload.py
├── _connection.py
├── _datastructures.py
├── _deprecated.py
├── _docstring.py
├── _error.py
├── _fileupload.py
├── _hostenv.py
├── _launchbrowser.py
├── _main.py
├── _main_add_test.py
├── _main_create.py
├── _main_create_custom.py
├── _main_utils.py
├── _namespaces.py
├── _shinyenv.py
├── _static.py
├── _typing_extensions.py
├── _utils.py
├── _validation.py
├── _versions.py
├── api-examples
│ ├── Chat
│ │ ├── _template.json
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── requirements.txt
│ ├── ClientData
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── MarkdownStream
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── Module
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── Progress
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── Renderer
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── renderers.py
│ ├── SafeException
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── SilentCancelOutputException
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── SilentException
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── Value
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── accordion
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── accordion_panel
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── as_fill_item
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── as_fillable_container
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── bookmark_callbacks
│ │ └── app.py
│ ├── busy_indicators
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── calc
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── card
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── card_body
│ │ └── app-core.py
│ ├── card_footer
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── card_header
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── data_frame
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── data_frame_data_view
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ ├── mtcars.csv
│ │ └── shared.py
│ ├── data_frame_grid_table
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── data_frame_set_patches
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── mtcars.csv
│ ├── data_frame_styles
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── data_frame_update_filter
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ ├── mtcars.csv
│ │ └── shared.py
│ ├── data_frame_update_sort
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ ├── mtcars.csv
│ │ └── shared.py
│ ├── download
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── mtcars.csv
│ ├── download_button
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── mtcars.csv
│ ├── download_link
│ │ ├── app-core.py
│ │ └── mtcars.csv
│ ├── effect
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── event
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── extended_task
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── file_reader
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── mtcars.csv
│ ├── include_css
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── css
│ │ │ └── styles.css
│ ├── include_js
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── js
│ │ │ └── app.js
│ ├── input_action_button
│ │ ├── app-core.py
│ │ ├── app-disabled-core.py
│ │ ├── app-disabled-express.py
│ │ └── app-express.py
│ ├── input_action_link
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_bookmark_button
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_checkbox
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_checkbox_group
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_dark_mode
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_date
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_date_range
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_file
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_numeric
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_password
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_radio_buttons
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_select
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_selectize
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_slider
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_switch
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_text
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── input_text_area
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── insert_accordion_panel
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── insert_ui
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── invalidate_later
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── isolate
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── layout_column_wrap
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── layout_columns
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── model_plots.py
│ ├── layout_sidebar
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── markdown
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── modal
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── modal_remove
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── nav_control
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── nav_menu
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── nav_panel
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── nav_spacer
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navbar_options
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_bar
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_card_pill
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_card_tab
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_card_underline
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_hidden
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_pill
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_pill_list
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_tab
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── navset_underline
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── notification_show
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── output_image
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── posit-logo.png
│ ├── output_plot
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── output_table
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── mtcars.csv
│ ├── output_text
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── output_transformer
│ │ └── app-core.py
│ ├── output_ui
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── page_fixed
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── page_fluid
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── page_opts
│ │ └── app-express.py
│ ├── page_sidebar
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── panel_absolute
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── panel_conditional
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── panel_title
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── app.py
│ ├── poll
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── popover
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── icons.py
│ ├── remove_accordion_panel
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── remove_ui
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── render_express
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── render_image
│ │ └── app-core.py
│ ├── req
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── restore_input
│ │ └── app.py
│ ├── row
│ │ └── app-core.py
│ ├── session_close
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── session_dynamic_route
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── session_on_ended
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── session_on_flush
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── session_on_flushed
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── session_send_custom_message
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── showcase_bottom
│ │ ├── app-core.py
│ │ └── icons.py
│ ├── showcase_left_center
│ │ ├── app-core.py
│ │ └── icons.py
│ ├── showcase_top_right
│ │ ├── app-core.py
│ │ └── icons.py
│ ├── sidebar
│ │ ├── app-core-dynamic.py
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── template
│ │ └── app-core.py
│ ├── theme
│ │ ├── __purgecss.py
│ │ ├── app-core-local.py
│ │ ├── app-core-remote.py
│ │ ├── app-core-shinyswatch.py
│ │ ├── app-core.py
│ │ ├── app-express-local.py
│ │ ├── app-express-remote.py
│ │ ├── app-express-shinyswatch.py
│ │ ├── app-express.py
│ │ ├── css
│ │ │ ├── rules.scss
│ │ │ └── shiny-theme-demo.css
│ │ └── shared.py
│ ├── todo_list
│ │ ├── app-core.py
│ │ └── requirements.txt
│ ├── tooltip
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── icons.py
│ ├── update_accordion
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_accordion_panel
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_action_button
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_checkbox
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_checkbox_group
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_date
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_date_range
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_navs
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_numeric
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_popover
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_radio_buttons
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_select
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_selectize
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_sidebar
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_slider
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_text
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── update_tooltip
│ │ ├── app-core.py
│ │ └── app-express.py
│ ├── value_box
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── icons.py
│ └── www_dir
│ │ ├── app-core.py
│ │ └── www
│ │ ├── css
│ │ ├── more-styles.css
│ │ └── styles.css
│ │ └── js
│ │ └── changetext.js
├── bookmark
│ ├── README.md
│ ├── __init__.py
│ ├── _bookmark.py
│ ├── _bookmark_state.py
│ ├── _button.py
│ ├── _global.py
│ ├── _restore_state.py
│ ├── _save_state.py
│ ├── _serializers.py
│ ├── _types.py
│ └── _utils.py
├── experimental
│ ├── __init__.py
│ ├── api-examples
│ │ └── card_image
│ │ │ └── app.py
│ └── ui
│ │ ├── __init__.py
│ │ ├── _card.py
│ │ └── _deprecated.py
├── express
│ ├── __init__.py
│ ├── _is_express.py
│ ├── _module.py
│ ├── _output.py
│ ├── _recall_context.py
│ ├── _run.py
│ ├── _stub_session.py
│ ├── _utils.py
│ ├── app.py
│ ├── expressify_decorator
│ │ ├── __init__.py
│ │ ├── _expressify.py
│ │ ├── _func_displayhook.py
│ │ ├── _helpers.py
│ │ └── _node_transformers.py
│ ├── layout.py
│ └── ui
│ │ ├── __init__.py
│ │ ├── _cm_components.py
│ │ ├── _hold.py
│ │ └── _page.py
├── html_dependencies.py
├── http_staticfiles.py
├── input_handler.py
├── module.py
├── playwright
│ ├── __init__.py
│ ├── _types.py
│ ├── controller
│ │ ├── __init__.py
│ │ ├── _accordion.py
│ │ ├── _base.py
│ │ ├── _card.py
│ │ ├── _chat.py
│ │ ├── _expect.py
│ │ ├── _file.py
│ │ ├── _input_buttons.py
│ │ ├── _input_controls.py
│ │ ├── _input_fields.py
│ │ ├── _layout.py
│ │ ├── _navs.py
│ │ ├── _output.py
│ │ └── _overlay.py
│ └── expect
│ │ ├── __init__.py
│ │ ├── _expect.py
│ │ ├── _expect_to_change.py
│ │ └── _internal.py
├── plotutils.py
├── py.typed
├── pytest
│ ├── __init__.py
│ ├── _fixture.py
│ └── _pytest.py
├── quarto.py
├── reactive
│ ├── __init__.py
│ ├── _core.py
│ ├── _extended_task.py
│ ├── _poll.py
│ └── _reactives.py
├── render
│ ├── __init__.py
│ ├── _coordmap.py
│ ├── _data_frame.py
│ ├── _data_frame_utils
│ │ ├── __init__.py
│ │ ├── _datagridtable.py
│ │ ├── _html.py
│ │ ├── _patch.py
│ │ ├── _reactive_method.py
│ │ ├── _selection.py
│ │ ├── _styles.py
│ │ ├── _tbl_data.py
│ │ └── _types.py
│ ├── _deprecated.py
│ ├── _express.py
│ ├── _render.py
│ ├── _try_render_plot.py
│ ├── renderer
│ │ ├── __init__.py
│ │ ├── _renderer.py
│ │ └── _utils.py
│ └── transformer
│ │ ├── __init__.py
│ │ └── _transformer.py
├── run
│ ├── __init__.py
│ └── _run.py
├── session
│ ├── __init__.py
│ ├── _session.py
│ └── _utils.py
├── templates
│ ├── app
│ │ ├── 01-basic-app
│ │ │ ├── _template.json
│ │ │ ├── app-core.py
│ │ │ └── app-express.py
│ │ ├── 02-basic-sidebar
│ │ │ ├── _template.json
│ │ │ ├── app-core.py
│ │ │ ├── app-express.py
│ │ │ ├── penguins.csv
│ │ │ ├── requirements.txt
│ │ │ └── shared.py
│ │ ├── 03-dashboard
│ │ │ ├── _template.json
│ │ │ ├── app-core.py
│ │ │ ├── app-express.py
│ │ │ ├── penguins.csv
│ │ │ ├── requirements.txt
│ │ │ ├── shared.py
│ │ │ └── styles.css
│ │ ├── 04-dashboard-tips
│ │ │ ├── README.md
│ │ │ ├── _template.json
│ │ │ ├── app-core.py
│ │ │ ├── app-express.py
│ │ │ ├── requirements.txt
│ │ │ ├── shared.py
│ │ │ ├── styles.css
│ │ │ └── tips.csv
│ │ └── 05-basic-navigation
│ │ │ ├── _template.json
│ │ │ ├── app-core.py
│ │ │ ├── app-express.py
│ │ │ ├── penguins.csv
│ │ │ ├── requirements.txt
│ │ │ └── shared.py
│ ├── chat
│ │ ├── llm-enterprise
│ │ │ ├── aws-bedrock-anthropic
│ │ │ │ ├── _template.json
│ │ │ │ ├── app.py
│ │ │ │ ├── app_utils.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── template.env
│ │ │ └── azure-openai
│ │ │ │ ├── _template.json
│ │ │ │ ├── app.py
│ │ │ │ ├── app_utils.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── template.env
│ │ └── llms
│ │ │ ├── anthropic
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── google
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── langchain
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── ollama
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ └── requirements.txt
│ │ │ ├── openai
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ └── playground
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ ├── markdown-stream
│ │ ├── llm-enterprise
│ │ │ ├── aws-bedrock-anthropic
│ │ │ │ ├── _template.json
│ │ │ │ ├── app.py
│ │ │ │ ├── app_utils.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── template.env
│ │ │ └── azure-openai
│ │ │ │ ├── _template.json
│ │ │ │ ├── app.py
│ │ │ │ ├── app_utils.py
│ │ │ │ ├── requirements.txt
│ │ │ │ └── template.env
│ │ └── llms
│ │ │ ├── anthropic
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── google
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── langchain
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ │ │ ├── ollama
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ └── requirements.txt
│ │ │ └── openai
│ │ │ ├── _template.json
│ │ │ ├── app.py
│ │ │ ├── app_utils.py
│ │ │ ├── requirements.txt
│ │ │ └── template.env
│ └── package
│ │ ├── .gitignore
│ │ ├── js-input
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── _template.json
│ │ ├── custom_component
│ │ │ ├── __init__.py
│ │ │ └── custom_component.py
│ │ ├── example-app
│ │ │ └── app.py
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pyproject.toml
│ │ ├── srcts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ │ ├── js-output
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── _template.json
│ │ ├── custom_component
│ │ │ ├── __init__.py
│ │ │ └── custom_component.py
│ │ ├── example-app
│ │ │ └── app.py
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pyproject.toml
│ │ ├── srcts
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ │ └── js-react
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── _template.json
│ │ ├── custom_component
│ │ ├── __init__.py
│ │ └── custom_component.py
│ │ ├── example-app
│ │ └── app.py
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pyproject.toml
│ │ ├── srcts
│ │ └── index.tsx
│ │ └── tsconfig.json
├── types.py
├── ui
│ ├── __init__.py
│ ├── _accordion.py
│ ├── _bootstrap.py
│ ├── _busy_spinner_types.py
│ ├── _card.py
│ ├── _chat.py
│ ├── _chat_bookmark.py
│ ├── _chat_normalize.py
│ ├── _chat_provider_types.py
│ ├── _chat_tokenizer.py
│ ├── _chat_types.py
│ ├── _download_button.py
│ ├── _html_deps_external.py
│ ├── _html_deps_py_shiny.py
│ ├── _html_deps_shinyverse.py
│ ├── _include_helpers.py
│ ├── _input_action_button.py
│ ├── _input_check_radio.py
│ ├── _input_dark_mode.py
│ ├── _input_date.py
│ ├── _input_file.py
│ ├── _input_numeric.py
│ ├── _input_password.py
│ ├── _input_select.py
│ ├── _input_slider.py
│ ├── _input_task_button.py
│ ├── _input_text.py
│ ├── _input_update.py
│ ├── _insert.py
│ ├── _layout.py
│ ├── _layout_columns.py
│ ├── _markdown.py
│ ├── _markdown_stream.py
│ ├── _modal.py
│ ├── _navs.py
│ ├── _notification.py
│ ├── _output.py
│ ├── _page.py
│ ├── _plot_output_opts.py
│ ├── _popover.py
│ ├── _progress.py
│ ├── _sidebar.py
│ ├── _tag.py
│ ├── _theme.py
│ ├── _theme_brand.py
│ ├── _theme_presets.py
│ ├── _tooltip.py
│ ├── _utils.py
│ ├── _valuebox.py
│ ├── _web_component.py
│ ├── busy_indicators.py
│ ├── css
│ │ ├── __init__.py
│ │ └── _css_unit.py
│ ├── dataframe
│ │ ├── __init__.py
│ │ └── _data_frame.py
│ └── fill
│ │ ├── __init__.py
│ │ └── _fill.py
└── www
│ ├── py-shiny
│ ├── brand
│ │ └── _brand-yml.scss
│ ├── chat
│ │ ├── chat.css
│ │ ├── chat.css.map
│ │ ├── chat.js
│ │ └── chat.js.map
│ ├── data-frame
│ │ ├── data-frame.js
│ │ └── data-frame.js.map
│ ├── markdown-stream
│ │ ├── markdown-stream.css
│ │ ├── markdown-stream.css.map
│ │ ├── markdown-stream.js
│ │ └── markdown-stream.js.map
│ ├── page-output
│ │ ├── page-output.js
│ │ └── page-output.js.map
│ └── spin
│ │ ├── spin.css
│ │ └── spin.css.map
│ └── shared
│ ├── _version.json
│ ├── bootstrap
│ ├── _version.json
│ ├── bootstrap.bundle.min.js
│ ├── bootstrap.bundle.min.js.map
│ ├── bootstrap.min.css
│ ├── font.css
│ └── fonts
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2
│ │ ├── HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2
│ │ ├── HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2
│ │ ├── bootstrap
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2
│ │ ├── memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2
│ │ ├── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2
│ │ └── memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2
│ ├── bslib
│ ├── _version.json
│ └── components
│ │ ├── components.css
│ │ ├── components.min.js
│ │ ├── components.min.js.map
│ │ ├── web-components.min.js
│ │ ├── web-components.min.js.map
│ │ └── webComponents
│ │ └── webComponents.min.js
│ ├── busy-indicators
│ ├── busy-indicators.css
│ └── spinners
│ │ ├── LICENSE
│ │ ├── bars.svg
│ │ ├── bars2.svg
│ │ ├── bars3.svg
│ │ ├── dots.svg
│ │ ├── dots2.svg
│ │ ├── dots3.svg
│ │ ├── pulse.svg
│ │ ├── pulse2.svg
│ │ ├── pulse3.svg
│ │ ├── ring.svg
│ │ ├── ring2.svg
│ │ └── ring3.svg
│ ├── datepicker
│ ├── css
│ │ └── bootstrap-datepicker3.min.css
│ └── js
│ │ ├── bootstrap-datepicker.min.js
│ │ └── locales
│ │ ├── bootstrap-datepicker-en-CA.min.js
│ │ ├── bootstrap-datepicker.ar-tn.min.js
│ │ ├── bootstrap-datepicker.ar.min.js
│ │ ├── bootstrap-datepicker.az.min.js
│ │ ├── bootstrap-datepicker.bg.min.js
│ │ ├── bootstrap-datepicker.bm.min.js
│ │ ├── bootstrap-datepicker.bn.min.js
│ │ ├── bootstrap-datepicker.br.min.js
│ │ ├── bootstrap-datepicker.bs.min.js
│ │ ├── bootstrap-datepicker.ca.min.js
│ │ ├── bootstrap-datepicker.cs.min.js
│ │ ├── bootstrap-datepicker.cy.min.js
│ │ ├── bootstrap-datepicker.da.min.js
│ │ ├── bootstrap-datepicker.de.min.js
│ │ ├── bootstrap-datepicker.el.min.js
│ │ ├── bootstrap-datepicker.en-AU.min.js
│ │ ├── bootstrap-datepicker.en-CA.min.js
│ │ ├── bootstrap-datepicker.en-GB.min.js
│ │ ├── bootstrap-datepicker.en-IE.min.js
│ │ ├── bootstrap-datepicker.en-NZ.min.js
│ │ ├── bootstrap-datepicker.en-ZA.min.js
│ │ ├── bootstrap-datepicker.eo.min.js
│ │ ├── bootstrap-datepicker.es.min.js
│ │ ├── bootstrap-datepicker.et.min.js
│ │ ├── bootstrap-datepicker.eu.min.js
│ │ ├── bootstrap-datepicker.fa.min.js
│ │ ├── bootstrap-datepicker.fi.min.js
│ │ ├── bootstrap-datepicker.fo.min.js
│ │ ├── bootstrap-datepicker.fr-CH.min.js
│ │ ├── bootstrap-datepicker.fr.min.js
│ │ ├── bootstrap-datepicker.gl.min.js
│ │ ├── bootstrap-datepicker.he.min.js
│ │ ├── bootstrap-datepicker.hi.min.js
│ │ ├── bootstrap-datepicker.hr.min.js
│ │ ├── bootstrap-datepicker.hu.min.js
│ │ ├── bootstrap-datepicker.hy.min.js
│ │ ├── bootstrap-datepicker.id.min.js
│ │ ├── bootstrap-datepicker.is.min.js
│ │ ├── bootstrap-datepicker.it-CH.min.js
│ │ ├── bootstrap-datepicker.it.min.js
│ │ ├── bootstrap-datepicker.ja.min.js
│ │ ├── bootstrap-datepicker.ka.min.js
│ │ ├── bootstrap-datepicker.kh.min.js
│ │ ├── bootstrap-datepicker.kk.min.js
│ │ ├── bootstrap-datepicker.km.min.js
│ │ ├── bootstrap-datepicker.ko.min.js
│ │ ├── bootstrap-datepicker.kr.min.js
│ │ ├── bootstrap-datepicker.lt.min.js
│ │ ├── bootstrap-datepicker.lv.min.js
│ │ ├── bootstrap-datepicker.me.min.js
│ │ ├── bootstrap-datepicker.mk.min.js
│ │ ├── bootstrap-datepicker.mn.min.js
│ │ ├── bootstrap-datepicker.ms.min.js
│ │ ├── bootstrap-datepicker.nl-BE.min.js
│ │ ├── bootstrap-datepicker.nl.min.js
│ │ ├── bootstrap-datepicker.no.min.js
│ │ ├── bootstrap-datepicker.oc.min.js
│ │ ├── bootstrap-datepicker.pl.min.js
│ │ ├── bootstrap-datepicker.pt-BR.min.js
│ │ ├── bootstrap-datepicker.pt.min.js
│ │ ├── bootstrap-datepicker.ro.min.js
│ │ ├── bootstrap-datepicker.rs-latin.min.js
│ │ ├── bootstrap-datepicker.rs.min.js
│ │ ├── bootstrap-datepicker.ru.min.js
│ │ ├── bootstrap-datepicker.si.min.js
│ │ ├── bootstrap-datepicker.sk.min.js
│ │ ├── bootstrap-datepicker.sl.min.js
│ │ ├── bootstrap-datepicker.sq.min.js
│ │ ├── bootstrap-datepicker.sr-latin.min.js
│ │ ├── bootstrap-datepicker.sr.min.js
│ │ ├── bootstrap-datepicker.sv.min.js
│ │ ├── bootstrap-datepicker.sw.min.js
│ │ ├── bootstrap-datepicker.ta.min.js
│ │ ├── bootstrap-datepicker.tg.min.js
│ │ ├── bootstrap-datepicker.th.min.js
│ │ ├── bootstrap-datepicker.tk.min.js
│ │ ├── bootstrap-datepicker.tr.min.js
│ │ ├── bootstrap-datepicker.uk.min.js
│ │ ├── bootstrap-datepicker.uz-cyrl.min.js
│ │ ├── bootstrap-datepicker.uz-latn.min.js
│ │ ├── bootstrap-datepicker.vi.min.js
│ │ ├── bootstrap-datepicker.zh-CN.min.js
│ │ └── bootstrap-datepicker.zh-TW.min.js
│ ├── highlight
│ ├── LICENSE
│ ├── classref.txt
│ ├── highlight.pack.js
│ └── rstudio.css
│ ├── htmltools
│ ├── _version.json
│ └── fill
│ │ └── fill.css
│ ├── ionrangeslider
│ ├── css
│ │ └── ion.rangeSlider.css
│ └── js
│ │ └── ion.rangeSlider.min.js
│ ├── jquery
│ ├── jquery-3.6.0.min.js
│ └── jquery-3.6.0.min.map
│ ├── jqueryui
│ ├── AUTHORS.txt
│ ├── LICENSE.txt
│ ├── images
│ │ ├── ui-icons_444444_256x240.png
│ │ ├── ui-icons_555555_256x240.png
│ │ ├── ui-icons_777620_256x240.png
│ │ ├── ui-icons_777777_256x240.png
│ │ ├── ui-icons_cc0000_256x240.png
│ │ └── ui-icons_ffffff_256x240.png
│ ├── index.html
│ ├── jquery-ui.min.css
│ └── jquery-ui.min.js
│ ├── requirejs
│ └── require.min.js
│ ├── sass
│ ├── _sass_layer_markers.scss
│ ├── bslib
│ │ ├── bs3compat
│ │ │ ├── _declarations.scss
│ │ │ ├── _defaults.scss
│ │ │ ├── _dropdown_compat.scss
│ │ │ ├── _dt_compat.scss
│ │ │ ├── _glyphicons.scss
│ │ │ ├── _headers.scss
│ │ │ ├── _help_text.scss
│ │ │ ├── _nav_compat.scss
│ │ │ ├── _navbar_compat.scss
│ │ │ ├── _progress_compat.scss
│ │ │ ├── _rules.scss
│ │ │ ├── _shiny_input.scss
│ │ │ ├── _shiny_misc.scss
│ │ │ └── _wells.scss
│ │ ├── bslib-scss
│ │ │ ├── bslib.scss
│ │ │ ├── color-utilities.scss
│ │ │ ├── functions.scss
│ │ │ ├── spacer.scss
│ │ │ └── tab-fill.scss
│ │ ├── builtin
│ │ │ └── bs5
│ │ │ │ └── shiny
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _rules.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ ├── ionrangeslider
│ │ │ │ ├── _rules.scss
│ │ │ │ └── _variables.scss
│ │ │ │ └── tables
│ │ │ │ └── _rules.scss
│ │ ├── components
│ │ │ └── scss
│ │ │ │ ├── accordion.scss
│ │ │ │ ├── card.scss
│ │ │ │ ├── grid.scss
│ │ │ │ ├── mixins
│ │ │ │ └── _mixins.scss
│ │ │ │ ├── nav_spacer.scss
│ │ │ │ ├── page_fillable.scss
│ │ │ │ ├── page_navbar.scss
│ │ │ │ ├── page_sidebar.scss
│ │ │ │ ├── sidebar.scss
│ │ │ │ └── value_box.scss
│ │ ├── lib
│ │ │ ├── bs5
│ │ │ │ └── scss
│ │ │ │ │ ├── _accordion.scss
│ │ │ │ │ ├── _alert.scss
│ │ │ │ │ ├── _badge.scss
│ │ │ │ │ ├── _breadcrumb.scss
│ │ │ │ │ ├── _button-group.scss
│ │ │ │ │ ├── _buttons.scss
│ │ │ │ │ ├── _card.scss
│ │ │ │ │ ├── _carousel.scss
│ │ │ │ │ ├── _close.scss
│ │ │ │ │ ├── _containers.scss
│ │ │ │ │ ├── _dropdown.scss
│ │ │ │ │ ├── _forms.scss
│ │ │ │ │ ├── _functions.scss
│ │ │ │ │ ├── _grid.scss
│ │ │ │ │ ├── _helpers.scss
│ │ │ │ │ ├── _images.scss
│ │ │ │ │ ├── _list-group.scss
│ │ │ │ │ ├── _maps.scss
│ │ │ │ │ ├── _mixins.scss
│ │ │ │ │ ├── _modal.scss
│ │ │ │ │ ├── _nav.scss
│ │ │ │ │ ├── _navbar.scss
│ │ │ │ │ ├── _offcanvas.scss
│ │ │ │ │ ├── _pagination.scss
│ │ │ │ │ ├── _placeholders.scss
│ │ │ │ │ ├── _popover.scss
│ │ │ │ │ ├── _progress.scss
│ │ │ │ │ ├── _reboot.scss
│ │ │ │ │ ├── _root.scss
│ │ │ │ │ ├── _spinners.scss
│ │ │ │ │ ├── _tables.scss
│ │ │ │ │ ├── _toasts.scss
│ │ │ │ │ ├── _tooltip.scss
│ │ │ │ │ ├── _transitions.scss
│ │ │ │ │ ├── _type.scss
│ │ │ │ │ ├── _utilities.scss
│ │ │ │ │ ├── _variables-dark.scss
│ │ │ │ │ ├── _variables.scss
│ │ │ │ │ ├── forms
│ │ │ │ │ ├── _floating-labels.scss
│ │ │ │ │ ├── _form-check.scss
│ │ │ │ │ ├── _form-control.scss
│ │ │ │ │ ├── _form-range.scss
│ │ │ │ │ ├── _form-select.scss
│ │ │ │ │ ├── _form-text.scss
│ │ │ │ │ ├── _input-group.scss
│ │ │ │ │ ├── _labels.scss
│ │ │ │ │ └── _validation.scss
│ │ │ │ │ ├── helpers
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _color-bg.scss
│ │ │ │ │ ├── _colored-links.scss
│ │ │ │ │ ├── _focus-ring.scss
│ │ │ │ │ ├── _icon-link.scss
│ │ │ │ │ ├── _position.scss
│ │ │ │ │ ├── _ratio.scss
│ │ │ │ │ ├── _stacks.scss
│ │ │ │ │ ├── _stretched-link.scss
│ │ │ │ │ ├── _text-truncation.scss
│ │ │ │ │ ├── _visually-hidden.scss
│ │ │ │ │ └── _vr.scss
│ │ │ │ │ ├── mixins
│ │ │ │ │ ├── _backdrop.scss
│ │ │ │ │ ├── _banner.scss
│ │ │ │ │ ├── _border-radius.scss
│ │ │ │ │ ├── _box-shadow.scss
│ │ │ │ │ ├── _breakpoints.scss
│ │ │ │ │ ├── _buttons.scss
│ │ │ │ │ ├── _caret.scss
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _color-mode.scss
│ │ │ │ │ ├── _color-scheme.scss
│ │ │ │ │ ├── _container.scss
│ │ │ │ │ ├── _deprecate.scss
│ │ │ │ │ ├── _forms.scss
│ │ │ │ │ ├── _gradients.scss
│ │ │ │ │ ├── _grid.scss
│ │ │ │ │ ├── _image.scss
│ │ │ │ │ ├── _lists.scss
│ │ │ │ │ ├── _pagination.scss
│ │ │ │ │ ├── _reset-text.scss
│ │ │ │ │ ├── _resize.scss
│ │ │ │ │ ├── _table-variants.scss
│ │ │ │ │ ├── _text-truncate.scss
│ │ │ │ │ ├── _transition.scss
│ │ │ │ │ ├── _utilities.scss
│ │ │ │ │ └── _visually-hidden.scss
│ │ │ │ │ ├── utilities
│ │ │ │ │ └── _api.scss
│ │ │ │ │ └── vendor
│ │ │ │ │ └── _rfs.scss
│ │ │ └── bsw5
│ │ │ │ └── dist
│ │ │ │ ├── cerulean
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── cosmo
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── cyborg
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── darkly
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── flatly
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── journal
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── litera
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── lumen
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── lux
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── materia
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── minty
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── morph
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── pulse
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── quartz
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── sandstone
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── simplex
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── sketchy
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── slate
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── solar
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── spacelab
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── superhero
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── united
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── vapor
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ ├── yeti
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ │ │ └── zephyr
│ │ │ │ ├── _bootswatch.scss
│ │ │ │ └── _variables.scss
│ │ └── sass-utils
│ │ │ └── color-contrast.scss
│ ├── preset
│ │ ├── bootstrap
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ ├── _04_rules.scss
│ │ │ └── bootstrap.min.css
│ │ ├── cerulean
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── cosmo
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── cyborg
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── darkly
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── flatly
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── journal
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── litera
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── lumen
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── lux
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── materia
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── minty
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── morph
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── pulse
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── quartz
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── sandstone
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── shiny
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ ├── _04_rules.scss
│ │ │ └── bootstrap.min.css
│ │ ├── simplex
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── sketchy
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── slate
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── solar
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── spacelab
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── superhero
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── united
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── vapor
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ ├── yeti
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ │ └── zephyr
│ │ │ ├── _01_functions.scss
│ │ │ ├── _02_defaults.scss
│ │ │ ├── _03_mixins.scss
│ │ │ └── _04_rules.scss
│ └── shiny
│ │ └── www
│ │ └── shared
│ │ ├── datepicker
│ │ └── scss
│ │ │ ├── build3.scss
│ │ │ └── datepicker3.scss
│ │ ├── ionrangeslider
│ │ └── scss
│ │ │ ├── _base.scss
│ │ │ ├── _mixins.scss
│ │ │ └── shiny.scss
│ │ ├── selectize
│ │ └── scss
│ │ │ ├── plugins
│ │ │ ├── auto_position.scss
│ │ │ ├── clear_button.scss
│ │ │ ├── drag_drop.scss
│ │ │ ├── dropdown_header.scss
│ │ │ ├── optgroup_columns.scss
│ │ │ └── remove_button.scss
│ │ │ ├── selectize.bootstrap5.scss
│ │ │ └── selectize.scss
│ │ └── shiny_scss
│ │ ├── shiny.bootstrap5.scss
│ │ └── shiny.scss
│ ├── selectize
│ ├── accessibility
│ │ └── js
│ │ │ └── selectize-plugin-a11y.min.js
│ ├── css
│ │ └── selectize.min.css
│ ├── js
│ │ └── selectize.min.js
│ └── scss
│ │ ├── plugins
│ │ ├── auto_position.scss
│ │ ├── clear_button.scss
│ │ ├── drag_drop.scss
│ │ ├── dropdown_header.scss
│ │ ├── optgroup_columns.scss
│ │ └── remove_button.scss
│ │ ├── selectize.bootstrap3.scss
│ │ ├── selectize.bootstrap4.scss
│ │ ├── selectize.bootstrap5.scss
│ │ ├── selectize.default.scss
│ │ └── selectize.scss
│ ├── shiny-autoreload.js
│ ├── shiny-autoreload.js.map
│ ├── shiny-showcase.css
│ ├── shiny-showcase.js
│ ├── shiny-showcase.js.map
│ ├── shiny-testmode.js
│ ├── shiny-testmode.js.map
│ ├── shiny.js
│ ├── shiny.js.map
│ ├── shiny.min.css
│ ├── shiny.min.js
│ ├── shiny.min.js.map
│ ├── showdown
│ ├── compressed
│ │ └── showdown.js
│ ├── license.txt
│ └── src
│ │ └── showdown.js
│ └── strftime
│ └── strftime-min.js
└── tests
├── __init__.py
├── playwright
├── README.md
├── ai_generated_apps
│ ├── bookmark
│ │ ├── accordion
│ │ │ ├── app-express.py
│ │ │ └── test_accordion_bookmarking.py
│ │ ├── bookmark_exclude
│ │ │ ├── app-core.py
│ │ │ └── test_bookmark_exclusion.py
│ │ ├── input_checkbox
│ │ │ ├── app-express.py
│ │ │ └── test_input_checkbox_express_bookmarking.py
│ │ ├── input_checkbox_group
│ │ │ ├── app-express.py
│ │ │ └── test_input_checkbox_group_express_bookmarking.py
│ │ ├── input_dark_mode
│ │ │ ├── app-express.py
│ │ │ └── test_input_dark_mode_express_bookmarking.py
│ │ ├── input_date
│ │ │ ├── app-express.py
│ │ │ └── test_bookmark_input_date_express_bookmarking.py
│ │ ├── input_date_range
│ │ │ ├── app-express.py
│ │ │ └── test_input_date_range_express_bookmarking.py
│ │ ├── input_file
│ │ │ ├── app-express.py
│ │ │ └── test_input_file_express_bookmarking.py
│ │ ├── input_password
│ │ │ ├── app-express.py
│ │ │ └── test_input_password_express_bookmarking.py
│ │ ├── input_radio_buttons
│ │ │ ├── app-express.py
│ │ │ └── test_input_radio_buttons_express_bookmarking.py
│ │ ├── input_select
│ │ │ ├── app-express.py
│ │ │ └── test_input_select_express_bookmarking.py
│ │ ├── input_slider
│ │ │ ├── app-express.py
│ │ │ └── test_input_slider_express_bookmarking.py
│ │ ├── input_switch
│ │ │ ├── app-express.py
│ │ │ └── test_input_switch_express_bookmarking.py
│ │ ├── input_text
│ │ │ ├── app-express.py
│ │ │ └── test_input_text_express_bookmarking.py
│ │ ├── input_text_area
│ │ │ ├── app-express.py
│ │ │ └── test_input_text_area_express_bookmarking.py
│ │ ├── navsets
│ │ │ ├── app-express.py
│ │ │ ├── app-hidden.py
│ │ │ ├── test_navsets_express_bookmarking.py
│ │ │ └── test_navsets_hidden_bookmarking.py
│ │ └── sidebar
│ │ │ ├── app-express.py
│ │ │ └── test_sidebar_express_bookmarking.py
│ └── core_express
│ │ ├── accordion
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_accordion_core_express.py
│ │ ├── accordion_panel
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_accordion_panel_core_express.py
│ │ ├── card
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_card_core_express.py
│ │ ├── card_footer
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_card_footer_core_express.py
│ │ ├── input_action_button
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_action_button_core_express.py
│ │ ├── input_action_link
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_action_link_core_express.py
│ │ ├── input_checkbox
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_checkbox_core_express.py
│ │ ├── input_checkbox_group
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_checkbox_group_core_express.py
│ │ ├── input_dark_mode
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_dark_mode_core_express.py
│ │ ├── input_date
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_date_core_express.py
│ │ ├── input_date_range
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_date_range_core_express.py
│ │ ├── input_file
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_file_core_express.py
│ │ ├── input_numeric
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_numeric_core_express.py
│ │ ├── input_password
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_password_core_express.py
│ │ ├── input_radio_buttons
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_radio_buttons_core_express.py
│ │ ├── input_select
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_select_core_express.py
│ │ ├── input_slider
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_slider_core_express.py
│ │ ├── input_switch
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_switch_core_express.py
│ │ ├── input_task_button
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_task_button_core_express.py
│ │ ├── input_text
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_text_core_express.py
│ │ ├── input_text_area
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_input_text_area_core_express.py
│ │ ├── navset_pill
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_navset_pill_core_express.py
│ │ ├── update_text
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_update_text_core_express.py
│ │ ├── update_text_area
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_update_text_area_core_express.py
│ │ ├── update_tooltip
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_update_tooltip_core_express.py
│ │ └── value_box
│ │ ├── app-core.py
│ │ ├── app-express.py
│ │ └── test_value_box_core_express.py
├── conftest.py
├── deploys
│ ├── __init__.py
│ ├── express-accordion
│ │ ├── __init__.py
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-accordion.json
│ │ └── test_deploys_express_accordion.py
│ ├── express-dataframe
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-dataframe.json
│ │ └── test_deploys_express_dataframe.py
│ ├── express-folium
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-folium.json
│ │ └── test_deploys_express_folium.py
│ ├── express-page_default
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-page_default.json
│ │ └── test_deploys_express_page_default.py
│ ├── express-page_fillable
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-page_fillable.json
│ │ └── test_deploys_express_page_fillable.py
│ ├── express-page_fluid
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-page_fluid.json
│ │ └── test_deploys_express_page_fluid.py
│ ├── express-page_sidebar
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── express-page_sidebar.json
│ │ └── test_deploys_express_page_sidebar.py
│ ├── plotly
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ │ └── plotly.json
│ │ └── test_plotly_app.py
│ └── shiny-client-console-error
│ │ ├── app.py
│ │ ├── app_requirements.txt
│ │ ├── rsconnect-python
│ │ └── shiny-client-console-error.json
│ │ └── test_shiny_client_error.py
├── examples
│ ├── example_apps.py
│ ├── test_api_examples.py
│ ├── test_cpuinfo.py
│ ├── test_examples.py
│ └── test_shiny_create.py
├── playwright-pytest.ini
├── shiny
│ ├── TODO
│ │ ├── navbar
│ │ │ └── app.py
│ │ ├── sidebar
│ │ │ ├── app.py
│ │ │ └── data.py
│ │ └── update_popover
│ │ │ └── app.py
│ ├── _internal
│ │ └── test_e2e_regex_matching.py
│ ├── async
│ │ ├── app.py
│ │ └── test_async.py
│ ├── bookmark
│ │ ├── chat
│ │ │ ├── chatlas
│ │ │ │ ├── app.py
│ │ │ │ └── test_bookmark_chatlas.py
│ │ │ └── client_state
│ │ │ │ ├── app.py
│ │ │ │ └── test_bookmark_chat.py
│ │ ├── dir
│ │ │ ├── .gitignore
│ │ │ ├── app-attr.py
│ │ │ ├── app-global.py
│ │ │ └── test_bookmark_global.py
│ │ ├── modal
│ │ │ ├── app.py
│ │ │ └── test_bookmark_modal.py
│ │ └── modules
│ │ │ ├── app-core-recursive.py
│ │ │ ├── app-core.py
│ │ │ ├── app-express.py
│ │ │ └── test_bookmark_modules.py
│ ├── brand_kitchensink
│ │ └── test_brand_yml.py
│ ├── bugs
│ │ ├── 0648-update-slider-datetime-value
│ │ │ ├── app.py
│ │ │ └── test_update_slider_datetime_value.py
│ │ ├── 0666-sidebar
│ │ │ ├── app.py
│ │ │ ├── colors.py
│ │ │ └── test_sidebar_colors.py
│ │ ├── 0676-row-selection
│ │ │ ├── app.py
│ │ │ └── test_0676_row_selection.py
│ │ ├── 0696-resolve-id
│ │ │ ├── app.py
│ │ │ ├── check.py
│ │ │ ├── imgs
│ │ │ │ ├── Adelie_sm.png
│ │ │ │ ├── Chinstrap_sm.png
│ │ │ │ ├── Gentoo_sm.png
│ │ │ │ └── palmerpenguins_sm.png
│ │ │ ├── mod_state.py
│ │ │ ├── test_0696_resolve_id.py
│ │ │ └── test_file.txt
│ │ ├── 1345-render-data-frame-input
│ │ │ ├── app.py
│ │ │ └── test_1345_input_selected_rows.py
│ │ ├── 1351-render-data-frame-selected
│ │ │ ├── app.py
│ │ │ └── test_1351_selected_row.py
│ │ └── 1390-df-selected-row-filtered
│ │ │ ├── app.py
│ │ │ └── test_1390_selected_row_filtered.py
│ ├── components
│ │ ├── MarkdownStream
│ │ │ ├── basic
│ │ │ │ ├── README.md
│ │ │ │ ├── app.py
│ │ │ │ └── test_stream_basic.py
│ │ │ ├── shiny_ui
│ │ │ │ ├── app.py
│ │ │ │ └── test_stream_shiny_ui.py
│ │ │ └── stream-result
│ │ │ │ ├── app.py
│ │ │ │ └── test_latest_stream_result.py
│ │ ├── accordion
│ │ │ ├── app.py
│ │ │ └── test_accordion.py
│ │ ├── busy_indicators
│ │ │ ├── app.py
│ │ │ └── test_busy_indicators.py
│ │ ├── card-input
│ │ │ ├── app-express.py
│ │ │ ├── app-module.py
│ │ │ └── test_card-input.py
│ │ ├── chat
│ │ │ ├── append_user_msg
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_append_user_msg.py
│ │ │ ├── basic
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_basic.py
│ │ │ ├── dynamic_ui
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_dynamic_ui.py
│ │ │ ├── errors
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_errors.py
│ │ │ ├── icon
│ │ │ │ ├── app.py
│ │ │ │ ├── img
│ │ │ │ │ ├── grace-hopper.jpg
│ │ │ │ │ └── shiny.png
│ │ │ │ └── test_chat_icon.py
│ │ │ ├── input-suggestion
│ │ │ │ ├── app.py
│ │ │ │ ├── test_chat_input_suggestion.py
│ │ │ │ └── www
│ │ │ │ │ └── shiny-hex.svg
│ │ │ ├── message_stream_context
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_message_stream_context.py
│ │ │ ├── module
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_module.py
│ │ │ ├── shiny_input
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_shiny_input.py
│ │ │ ├── shiny_output
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_shiny_output.py
│ │ │ ├── stream-result
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_stream_result.py
│ │ │ ├── stream
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_stream.py
│ │ │ ├── transform
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_transform.py
│ │ │ ├── transform_assistant
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_transform_assistant.py
│ │ │ ├── transform_assistant_stream
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_transform_assistant_stream.py
│ │ │ └── update_user_input
│ │ │ │ ├── app.py
│ │ │ │ └── test_chat_update_user_input.py
│ │ ├── data_frame
│ │ │ ├── column_types
│ │ │ │ └── app.py
│ │ │ ├── data_type
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_data_type.py
│ │ │ ├── data_view_info
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_data_view_info.py
│ │ │ ├── df_methods
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_methods.py
│ │ │ ├── dtypes
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_dtypes.py
│ │ │ ├── edit
│ │ │ │ └── app.py
│ │ │ ├── example
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── test_data_frame.ambr
│ │ │ │ └── test_data_frame.py
│ │ │ ├── filter_reset
│ │ │ │ ├── app.py
│ │ │ │ └── test_filter_reset.py
│ │ │ ├── html_columns
│ │ │ │ ├── app.py
│ │ │ │ ├── test_edit_cell_content.py
│ │ │ │ └── test_html_columns.py
│ │ │ ├── pandas_compatible
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_pandas_compatible.py
│ │ │ ├── patch_save_state
│ │ │ │ ├── app.py
│ │ │ │ └── test_patch_state_state.py
│ │ │ ├── return_type
│ │ │ │ └── app.py
│ │ │ ├── row_selection
│ │ │ │ ├── app.py
│ │ │ │ └── test_row_selection.py
│ │ │ ├── select_multiple_rows_mode
│ │ │ │ └── app.py
│ │ │ ├── select_single_row_mode
│ │ │ │ └── app.py
│ │ │ ├── styles
│ │ │ │ ├── app.py
│ │ │ │ ├── great_tables_test_utils.py
│ │ │ │ └── test_df_styles.py
│ │ │ ├── styles_class
│ │ │ │ ├── app.py
│ │ │ │ └── test_df_styles_class.py
│ │ │ ├── tabbing
│ │ │ │ ├── app.py
│ │ │ │ └── test_tabbing.py
│ │ │ ├── update_cell_value
│ │ │ │ ├── app.py
│ │ │ │ └── test_cell_value.py
│ │ │ ├── update_data
│ │ │ │ ├── app.py
│ │ │ │ └── test_update_data.py
│ │ │ ├── validate_column_labels
│ │ │ │ ├── app.py
│ │ │ │ └── test_validate_column_labels.py
│ │ │ ├── validate_data_edit_mode
│ │ │ │ ├── app.py
│ │ │ │ └── test_validate_data_edit_mode.py
│ │ │ ├── validate_data_save
│ │ │ │ ├── app.py
│ │ │ │ └── test_validate_data_save.py
│ │ │ └── validate_row_selection_edit_mode
│ │ │ │ ├── app.py
│ │ │ │ └── test_validate_row_selection_edit_mode.py
│ │ ├── layout_columns
│ │ │ └── test_layout_columns.py
│ │ ├── nav
│ │ │ ├── app.py
│ │ │ ├── navset_bar_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_navset_bar.py
│ │ │ ├── navset_bar_options
│ │ │ │ ├── app.py
│ │ │ │ └── test_navset_bar_options.py
│ │ │ ├── navset_hidden_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_navset_hidden_kitchensink.py
│ │ │ ├── navsets_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_navsets_kitchensink.py
│ │ │ ├── page_navbar_kitchensink
│ │ │ │ ├── default_page_navbar
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_default_page_navbar_app.py
│ │ │ │ ├── page_navbar_fillable
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_page_navbar_fillable_app.py
│ │ │ │ ├── page_navbar_fixed_bottom_inverse_bg
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_page_navbar_fixed_bottom_inverse_bg_app.py
│ │ │ │ ├── page_navbar_header_footer_fixed_top
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_page_navbar_header_footer_fixed_top_app.py
│ │ │ │ ├── page_navbar_selected
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_page_navbar_selected_app.py
│ │ │ │ └── page_navbar_sidebar
│ │ │ │ │ ├── app.py
│ │ │ │ │ └── test_page_navbar_sidebar_app.py
│ │ │ └── test_nav.py
│ │ ├── navset_hidden
│ │ │ ├── app.py
│ │ │ └── test_nav_hidden.py
│ │ ├── popover
│ │ │ ├── popover_test_kitchen
│ │ │ │ ├── app.py
│ │ │ │ └── test_popover_kitchensink.py
│ │ │ └── update_popover
│ │ │ │ ├── app.py
│ │ │ │ └── test_popover.py
│ │ ├── table
│ │ │ ├── app.py
│ │ │ └── test_table.py
│ │ ├── test_sidebar.py
│ │ ├── tooltip
│ │ │ ├── tooltip_test_kitchen
│ │ │ │ ├── app.py
│ │ │ │ └── test_tooltip_test_kitchen.py
│ │ │ └── update_tooltip
│ │ │ │ ├── app.py
│ │ │ │ └── test_tooltip.py
│ │ └── value_box
│ │ │ ├── kitchensink
│ │ │ ├── app.py
│ │ │ └── test_valuebox_ks.py
│ │ │ └── smoke
│ │ │ ├── app.py
│ │ │ └── test_valuebox.py
│ ├── default-render-ui
│ │ ├── app.py
│ │ └── test_default_render_ui.py
│ ├── deprecated
│ │ └── output_transformer
│ │ │ ├── app.py
│ │ │ └── test_output_transformer_example.py
│ ├── experimental
│ │ └── card
│ │ │ ├── app.py
│ │ │ ├── kitchensink
│ │ │ ├── app.py
│ │ │ └── test_card_ks.py
│ │ │ └── test_card.py
│ ├── implicit-register
│ │ ├── app.py
│ │ └── test_implicit_register.py
│ ├── inputs
│ │ ├── accordion_kitchensink
│ │ │ ├── app.py
│ │ │ └── test_accordion_kitchensink.py
│ │ ├── input_file
│ │ │ ├── app.py
│ │ │ └── test_input_file.py
│ │ ├── input_kitchensink
│ │ │ ├── input_action_button_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_action_button_kitchensink.py
│ │ │ ├── input_action_link_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_action_link_kitchensink.py
│ │ │ ├── input_checkbox
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_checkbox_kitchensink.py
│ │ │ ├── input_checkbox_group
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_checkbox_group_kitchensink.py
│ │ │ ├── input_numeric_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_numeric_kitchensink.py
│ │ │ ├── input_password_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_password_kitchensink.py
│ │ │ ├── input_radio_buttons_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_radio_buttons_kitchensink.py
│ │ │ ├── input_select
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_select_kitchensink.py
│ │ │ ├── input_selectize
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_selectize_kitchensink.py
│ │ │ ├── input_switch_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_switch_kitchensink.py
│ │ │ ├── input_text_area_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_text_area_kitchensink.py
│ │ │ └── input_text_kitchensink
│ │ │ │ ├── app.py
│ │ │ │ └── test_input_text_kitchensink.py
│ │ ├── input_radio_checkbox_group
│ │ │ ├── app.py
│ │ │ └── test_input_radio_checkbox_group_app.py
│ │ ├── input_selectize
│ │ │ ├── app.py
│ │ │ └── test_input_selectize.py
│ │ ├── input_slider
│ │ │ ├── app.py
│ │ │ └── test_input_slider_app.py
│ │ ├── input_task_button
│ │ │ ├── app.py
│ │ │ └── test_input_task_button.py
│ │ ├── input_task_button2
│ │ │ ├── app.py
│ │ │ └── test_input_task_button2.py
│ │ ├── input_text_area
│ │ │ └── autoresize
│ │ │ │ ├── app.py
│ │ │ │ └── test_accordion_autoresize.py
│ │ ├── input_text_update_on
│ │ │ ├── app.py
│ │ │ └── test_input_text_update_on.py
│ │ ├── sidebar_kitchensink
│ │ │ ├── app.py
│ │ │ └── test_sidebar_kitchensink.py
│ │ ├── test_input_action_button_link.py
│ │ ├── test_input_checkbox.py
│ │ ├── test_input_checkbox_group.py
│ │ ├── test_input_dark_mode.py
│ │ ├── test_input_date.py
│ │ ├── test_input_date_range.py
│ │ ├── test_input_numeric.py
│ │ ├── test_input_password.py
│ │ ├── test_input_radio_buttons.py
│ │ ├── test_input_select.py
│ │ ├── test_input_slider.py
│ │ ├── test_input_switch.py
│ │ ├── test_input_text.py
│ │ ├── test_input_text_area.py
│ │ └── test_inputs_update.py
│ ├── module-conditional
│ │ ├── app.py
│ │ └── test_module_conditional.py
│ ├── outputs
│ │ ├── test_output_image.py
│ │ ├── test_output_plot.py
│ │ ├── test_output_table.py
│ │ ├── test_output_text.py
│ │ └── test_output_ui.py
│ ├── plot-sizing
│ │ ├── app.py
│ │ ├── bike.jpg
│ │ └── test_plot_sizing.py
│ ├── server
│ │ ├── output_transformer
│ │ │ ├── app.py
│ │ │ └── test_output_transformer_async.py
│ │ └── reactive_event
│ │ │ ├── app.py
│ │ │ └── test_reactive_event.py
│ ├── session
│ │ ├── clientdata
│ │ │ ├── app.py
│ │ │ └── test_clientdata.py
│ │ └── flush
│ │ │ ├── app.py
│ │ │ └── test_on_flush.py
│ └── shiny-express
│ │ ├── hold
│ │ ├── app.py
│ │ └── test_hold.py
│ │ └── render_express
│ │ └── test_render_express.py
└── utils
│ ├── __init__.py
│ └── deploy_utils.py
└── pytest
├── __init__.py
├── _utils.py
├── asyncio_prevent.py
├── mocktime.py
├── test_annotations.py
├── test_chat.py
├── test_datastructures.py
├── test_display_decorator.py
├── test_express.py
├── test_express_ui.py
├── test_express_utils.py
├── test_input_dark_mode.py
├── test_layout_column_wrap.py
├── test_markdown.py
├── test_modules.py
├── test_named_temporary_file.py
├── test_namespaces.py
├── test_navs.py
├── test_output_transformer.py
├── test_playwright_filter.py
├── test_plot_sizing.py
├── test_poll.py
├── test_reactive_method.py
├── test_reactives.py
├── test_render_data_frame.py
├── test_render_data_frame_tbl_data.py
├── test_renderer.py
├── test_shiny_import.py
├── test_shinysession.py
├── test_sidebar.py
├── test_static.py
├── test_theme.py
├── test_ui.py
├── test_ui_dependencies.py
├── test_utils.py
└── test_utils_async.py
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | - repo: https://github.com/psf/black
3 | rev: "24.2.0"
4 | hooks:
5 | - id: black
6 | language_version: python3
7 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "organizeImportsSkipDestructiveCodeActions": true,
3 | "overrides": [
4 | {
5 | "files": "**/*.scss",
6 | "options": {
7 | "printWidth": 150
8 | }
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "posit.shiny",
4 | "esbenp.prettier-vscode",
5 | "ms-python.black-formatter",
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/CITATION.cff:
--------------------------------------------------------------------------------
1 | cff-version: 1.2.0
2 | title: "Shiny for Python"
3 | message: "If you use this software, please cite it as below."
4 | authors:
5 | - name: "The Shiny development team"
6 | license: MIT
7 | license-url: "https://github.com/posit-dev/py-shiny/blob/main/LICENSE"
8 | repository-code: "https://github.com/posit-dev/py-shiny"
9 | type: software
10 | url: "https://shiny.posit.co/py/"
11 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include LICENSE
2 |
3 | recursive-include tests *
4 | recursive-exclude * __pycache__
5 | recursive-exclude * shiny_bookmarks
6 | recursive-exclude * *.py[co]
7 |
8 | recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif
9 |
10 | recursive-include shiny/www *
11 | recursive-include shiny/experimental/www *
12 | recursive-include shiny/api-examples *
13 | recursive-include shiny/templates *
14 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | _site/
2 | api/
3 | _inv/
4 | _sidebar.yml
5 | /.quarto/
6 | objects.json
7 | site_libs/
8 | _objects_*.json
9 |
--------------------------------------------------------------------------------
/docs/_extensions/machow/interlinks/.gitignore:
--------------------------------------------------------------------------------
1 | *.html
2 | *.pdf
3 | *_files/
4 |
--------------------------------------------------------------------------------
/docs/_extensions/machow/interlinks/_extension.yml:
--------------------------------------------------------------------------------
1 | title: Interlinks
2 | author: Michael Chow
3 | version: 1.0.0
4 | quarto-required: ">=1.2.0"
5 | contributes:
6 | filters:
7 | - interlinks.lua
8 |
--------------------------------------------------------------------------------
/docs/_extensions/quarto-ext/shinylive/_extension.yml:
--------------------------------------------------------------------------------
1 | name: shinylive
2 | title: Embedded Shinylive applications
3 | author: Winston Chang
4 | version: 0.1.0
5 | quarto-required: ">=1.2.198"
6 | contributes:
7 | filters:
8 | - shinylive.lua
9 |
--------------------------------------------------------------------------------
/docs/shiny-docs.css:
--------------------------------------------------------------------------------
1 | #parameters dd {
2 | margin-top: 0.5rem;
3 | margin-left: 2rem;
4 | }
5 |
--------------------------------------------------------------------------------
/examples/airmass/README.md:
--------------------------------------------------------------------------------
1 | ## Airmass app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/airmass/requirements.txt:
--------------------------------------------------------------------------------
1 | astropy
2 | ipyleaflet
3 | matplotlib
4 | numpy
5 | pandas
6 | pytz
7 | shiny
8 | shinywidgets
9 | suntime
10 | timezonefinder
11 |
--------------------------------------------------------------------------------
/examples/annotation-export/README.md:
--------------------------------------------------------------------------------
1 | ## Plot annotation app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/annotation-export/requirements.txt:
--------------------------------------------------------------------------------
1 | seaborn
2 | pandas
3 | shiny
4 | matplotlib
5 |
--------------------------------------------------------------------------------
/examples/brand/Monda.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/brand/Monda.ttf
--------------------------------------------------------------------------------
/examples/brand/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.page_opts(theme=ui.Theme.from_brand(__file__))
4 |
5 | ui.input_slider("n", "N", 0, 100, 20)
6 |
7 |
8 | @render.code
9 | def txt():
10 | return f"n*2 is {input.n() * 2}"
11 |
--------------------------------------------------------------------------------
/examples/brand/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny[theme]
2 | matplotlib
3 | numpy
4 |
--------------------------------------------------------------------------------
/examples/brownian/README.md:
--------------------------------------------------------------------------------
1 | ## Hand-driven data exploration app
2 |
--------------------------------------------------------------------------------
/examples/brownian/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy
2 | shiny
3 | plotly
4 | shinywidgets
5 |
--------------------------------------------------------------------------------
/examples/brownian/shinymediapipe/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/examples/brownian/shinymediapipe/__init__.py:
--------------------------------------------------------------------------------
1 | from ._hand import dependencies, input_hand, hand_options
2 |
3 | __all__ = (
4 | "dependencies",
5 | "hand_options",
6 | "input_hand",
7 | )
8 |
--------------------------------------------------------------------------------
/examples/brownian/shinymediapipe/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shinymediapipe",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "Apache-2.0",
11 | "dependencies": {
12 | "@mediapipe/camera_utils": "^0.3.1640029074",
13 | "@mediapipe/control_utils": "^0.6.1629159505",
14 | "@mediapipe/drawing_utils": "^0.3.1620248257",
15 | "@mediapipe/hands": "^0.4.1646424915"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/examples/busy_indicators/README.md:
--------------------------------------------------------------------------------
1 | ## Busy indicators app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/busy_indicators/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy
2 | seaborn
3 | shiny
4 |
--------------------------------------------------------------------------------
/examples/cpuinfo/README.md:
--------------------------------------------------------------------------------
1 | ## CPU usage app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/cpuinfo/fakepsutil.py:
--------------------------------------------------------------------------------
1 | """Generates synthetic data"""
2 |
3 | import numpy as np
4 |
5 |
6 | def cpu_count(logical: bool = True):
7 | return 8 if logical else 4
8 |
9 |
10 | last_sample = np.random.uniform(0, 100, size=cpu_count(True))
11 |
12 |
13 | def cpu_percent(percpu: bool = False):
14 | global last_sample
15 | delta = np.random.normal(scale=10, size=len(last_sample))
16 | last_sample = (last_sample + delta).clip(0, 100)
17 | if percpu:
18 | return last_sample.tolist()
19 | else:
20 | return last_sample.mean()
21 |
--------------------------------------------------------------------------------
/examples/cpuinfo/requirements.txt:
--------------------------------------------------------------------------------
1 | matplotlib
2 | numpy
3 | pandas
4 | psutil
5 | shiny
6 |
--------------------------------------------------------------------------------
/examples/dataframe/README.md:
--------------------------------------------------------------------------------
1 | ## Data frame viewer
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/dataframe/requirements.txt:
--------------------------------------------------------------------------------
1 | pandas
2 | seaborn
3 | shiny
4 | shinyswatch
5 |
--------------------------------------------------------------------------------
/examples/duckdb/.gitignore:
--------------------------------------------------------------------------------
1 | cities.csv
2 | weather_forecasts.csv
3 | weather.db
4 |
--------------------------------------------------------------------------------
/examples/duckdb/README.md:
--------------------------------------------------------------------------------
1 | ## DuckDB query weather explorer
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/duckdb/requirements.txt:
--------------------------------------------------------------------------------
1 | duckdb
2 | pandas
3 | shiny
4 | shinyswatch
5 |
--------------------------------------------------------------------------------
/examples/event/README.md:
--------------------------------------------------------------------------------
1 | ## Sync / Async events
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/event/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/express/basic_app.py:
--------------------------------------------------------------------------------
1 | from shiny import render
2 | from shiny.express import input, ui
3 |
4 | ui.input_slider("n", "N", 1, 100, 50)
5 |
6 |
7 | @render.code()
8 | def txt():
9 | return f"n = {input.n()}"
10 |
--------------------------------------------------------------------------------
/examples/express/plot_app.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny import render
5 | from shiny.express import input, ui
6 |
7 | ui.input_slider("n", "N", 1, 100, 50)
8 |
9 |
10 | @render.plot
11 | def histogram():
12 | np.random.seed(19680801)
13 | x = 100 + 15 * np.random.randn(437)
14 | plt.hist(x, input.n(), density=True)
15 |
--------------------------------------------------------------------------------
/examples/express/render_express_app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_slider("n", "N", 1, 100, 50)
4 |
5 |
6 | # @render.express is like @render.ui, but with Express syntax
7 | @render.express
8 | def render_express1():
9 | "Slider value:"
10 | input.n()
11 |
12 |
13 | # @render.express() also works with parens
14 | @render.express()
15 | def render_express2():
16 | "Slider value:"
17 | input.n()
18 |
--------------------------------------------------------------------------------
/examples/express/requirements.txt:
--------------------------------------------------------------------------------
1 | matplotlib
2 | numpy
3 | shiny
4 |
--------------------------------------------------------------------------------
/examples/express/sidebar_app.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny import render
5 | from shiny.express import input, ui
6 |
7 | with ui.sidebar():
8 | ui.input_slider("n", "N", 1, 100, 50)
9 |
10 |
11 | @render.plot
12 | def histogram():
13 | np.random.seed(19680801)
14 | x = 100 + 15 * np.random.randn(437)
15 | plt.hist(x, input.n(), density=True)
16 |
--------------------------------------------------------------------------------
/examples/global_pyplot/README.md:
--------------------------------------------------------------------------------
1 | ## Plotting with `matplotlib.pyplot`
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/global_pyplot/requirements.txt:
--------------------------------------------------------------------------------
1 | matplotlib
2 | shiny
3 |
--------------------------------------------------------------------------------
/examples/headers/README.md:
--------------------------------------------------------------------------------
1 | ## HTTP request headers app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/headers/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/inputs-update/README.md:
--------------------------------------------------------------------------------
1 | ## Updating shiny inputs
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/inputs-update/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/load_balance/README.md:
--------------------------------------------------------------------------------
1 | ## Sticky load balance test app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/load_balance/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | starlette
3 |
--------------------------------------------------------------------------------
/examples/model-score/.gitignore:
--------------------------------------------------------------------------------
1 | data
2 |
--------------------------------------------------------------------------------
/examples/model-score/README.md:
--------------------------------------------------------------------------------
1 | ## Model monitoring dashboard
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/model-score/requirements.txt:
--------------------------------------------------------------------------------
1 | numpy
2 | pandas
3 | plotly
4 | shiny
5 | shinywidgets
6 |
--------------------------------------------------------------------------------
/examples/moduleapp/README.md:
--------------------------------------------------------------------------------
1 | ## Model monitoring dashboard
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/moduleapp/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/penguins/README.md:
--------------------------------------------------------------------------------
1 | ## Penguins dashboard
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/penguins/requirements.txt:
--------------------------------------------------------------------------------
1 | matplotlib
2 | pandas
3 | seaborn
4 | shiny
5 |
--------------------------------------------------------------------------------
/examples/penguins/www/Adelie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Adelie.png
--------------------------------------------------------------------------------
/examples/penguins/www/Chinstrap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Chinstrap.png
--------------------------------------------------------------------------------
/examples/penguins/www/Gentoo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/Gentoo.png
--------------------------------------------------------------------------------
/examples/penguins/www/palmerpenguins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/palmerpenguins.png
--------------------------------------------------------------------------------
/examples/penguins/www/penguins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/examples/penguins/www/penguins.png
--------------------------------------------------------------------------------
/examples/req/README.md:
--------------------------------------------------------------------------------
1 | ## Error handling example app
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/req/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/static_plots/README.md:
--------------------------------------------------------------------------------
1 | ## Static Plots
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/static_plots/requirements.txt:
--------------------------------------------------------------------------------
1 | matplotlib
2 | numpy
3 | pandas
4 | seaborn
5 | plotnine
6 | shiny
7 |
--------------------------------------------------------------------------------
/examples/typed_inputs/README.md:
--------------------------------------------------------------------------------
1 | ## Typed inputs
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/typed_inputs/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/examples/ui-func/README.md:
--------------------------------------------------------------------------------
1 | ## UI as a function
2 |
3 |
4 |
--------------------------------------------------------------------------------
/examples/ui-func/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | starlette
3 |
--------------------------------------------------------------------------------
/js/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | esbuild-metadata.json
3 |
--------------------------------------------------------------------------------
/js/.nvmrc:
--------------------------------------------------------------------------------
1 | v18
2 |
--------------------------------------------------------------------------------
/js/data-frame/globals.d.ts:
--------------------------------------------------------------------------------
1 | declare module "*.scss";
2 |
--------------------------------------------------------------------------------
/js/spin/spin.scss:
--------------------------------------------------------------------------------
1 | @keyframes py-shiny-spin {
2 | 0% {
3 | transform: rotate(0deg);
4 | }
5 | 100% {
6 | transform: rotate(360deg);
7 | }
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .py-shiny-spin {
12 | animation: py-shiny-spin 2s linear infinite;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/pyrightconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "ignore": [
3 | "shiny/api-examples",
4 | "examples",
5 | "build",
6 | "dist",
7 | "typings",
8 | "sandbox",
9 | "_dev",
10 | "docs",
11 | "tests/playwright/deploys/*/app.py",
12 | "shiny/templates",
13 | "tests/playwright/ai_generated_apps",
14 | ],
15 | "typeCheckingMode": "strict",
16 | "reportImportCycles": "none",
17 | "reportUnusedFunction": "none",
18 | "reportPrivateUsage": "none",
19 | "reportUnnecessaryIsInstance": "none",
20 | "executionEnvironments": [{ "root": "examples/" }]
21 | }
22 |
--------------------------------------------------------------------------------
/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | asyncio_mode=strict
3 | # Used for ./tests/pytest/asyncio_prevent.py
4 | asyncio_default_fixture_loop_scope=fixture
5 | testpaths=tests/pytest/
6 | ; Note: Browsers are set within `./Makefile`
7 | addopts = --strict-markers --durations=6 --durations-min=5.0 --numprocesses auto
8 | verbosity_test_cases=2
9 |
--------------------------------------------------------------------------------
/scripts/_pkg-sources.R:
--------------------------------------------------------------------------------
1 | list(
2 | bslib = "rstudio/bslib@main",
3 | shiny = "rstudio/shiny@main",
4 | sass = "sass",
5 | htmltools = "rstudio/htmltools@main"
6 | )
7 |
--------------------------------------------------------------------------------
/shiny/__main__.py:
--------------------------------------------------------------------------------
1 | from ._main import main
2 |
3 | if __name__ == "__main__":
4 | main()
5 |
--------------------------------------------------------------------------------
/shiny/_shinyenv.py:
--------------------------------------------------------------------------------
1 | """
2 | Information about the execution environment for Shiny
3 | """
4 |
5 | import sys
6 |
7 | # True if we're executing in WASM mode, False if we're executing using actual Python
8 | is_pyodide: bool = "pyodide" in sys.modules
9 |
--------------------------------------------------------------------------------
/shiny/_versions.py:
--------------------------------------------------------------------------------
1 | shiny_html_deps = "1.10.0.9001"
2 | bslib = "0.9.0.9000"
3 | htmltools = "0.5.8.9000"
4 | bootstrap = "5.3.1"
5 | requirejs = "2.3.6"
6 |
7 | __all__ = (
8 | "shiny_html_deps",
9 | "bslib",
10 | "htmltools",
11 | "bootstrap",
12 | "requirejs",
13 | )
14 |
--------------------------------------------------------------------------------
/shiny/api-examples/Chat/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "app",
3 | "id": "chat-hello",
4 | "title": "Hello Shiny Chat",
5 | "next_steps": [
6 | "Run the app with `shiny run app.py`."
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/Chat/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 |
--------------------------------------------------------------------------------
/shiny/api-examples/SafeException/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 | from shiny.types import SafeException
3 |
4 | app_ui = ui.page_fluid(ui.output_ui("safe"), ui.output_ui("unsafe"))
5 |
6 |
7 | def server(input: Inputs, output: Outputs, session: Session):
8 | @render.ui
9 | def safe():
10 | raise SafeException("This is a safe exception")
11 |
12 | @render.ui
13 | def unsafe():
14 | raise Exception("This is an unsafe exception")
15 |
16 |
17 | app = App(app_ui, server)
18 | app.sanitize_errors = True
19 |
--------------------------------------------------------------------------------
/shiny/api-examples/SafeException/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import render
2 | from shiny.types import SafeException
3 |
4 |
5 | @render.ui
6 | def safe():
7 | # This error _won't_ be sanitized when deployed
8 | raise SafeException("This is a safe exception")
9 |
10 |
11 | @render.ui
12 | def unsafe():
13 | # This error _will_ be sanitized when deployed
14 | raise Exception("This is an unsafe exception")
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/SilentCancelOutputException/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 | from shiny.types import SilentCancelOutputException
3 |
4 | ui.input_text(
5 | "txt",
6 | "Delete the input text completely: it won't get removed below the input",
7 | "Some text",
8 | width="400px",
9 | )
10 |
11 |
12 | @render.ui
13 | def txt_out():
14 | if not input.txt():
15 | raise SilentCancelOutputException()
16 | return "Your input: " + input.txt()
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/SilentException/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 | from shiny.types import SilentException
3 |
4 | ui.input_text(
5 | "txt",
6 | "Enter text to see it displayed below the input",
7 | width="400px",
8 | )
9 |
10 |
11 | @render.ui
12 | def txt_out():
13 | if not input.txt():
14 | raise SilentException()
15 | return "Your input: " + input.txt()
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/accordion_panel/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | with ui.accordion(id="acc"):
4 | for letter in "ABCDE":
5 | with ui.accordion_panel(f"Section {letter}"):
6 | f"Some narrative for section {letter}"
7 |
8 |
9 | @render.code
10 | def acc_val():
11 | return "input.acc(): " + str(input.acc())
12 |
--------------------------------------------------------------------------------
/shiny/api-examples/card/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.card(
5 | ui.card_header("This is the header"),
6 | ui.p("This is the body."),
7 | ui.p("This is still the body."),
8 | ui.card_footer("This is the footer"),
9 | full_screen=True,
10 | ),
11 | )
12 |
13 |
14 | app = App(app_ui, server=None)
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/card/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | with ui.card(full_screen=True):
4 | ui.card_header("This is the header")
5 | ui.p("This is the body.")
6 | ui.p("This is still the body.")
7 | ui.card_footer("This is the footer")
8 |
--------------------------------------------------------------------------------
/shiny/api-examples/card_footer/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.card(
5 | ui.card_header("This is the header"),
6 | ui.p("This is the body."),
7 | ui.p("This is still the body."),
8 | ui.card_footer("This is the footer"),
9 | full_screen=True,
10 | )
11 | )
12 |
13 |
14 | app = App(app_ui, server=None)
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/card_footer/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | with ui.card(full_screen=True):
4 | ui.card_header("This is the header")
5 | ui.p("This is the body.")
6 | ui.p("This is still the body.")
7 | ui.card_footer("This is the footer")
8 |
--------------------------------------------------------------------------------
/shiny/api-examples/card_header/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.card(
5 | ui.card_header("This is the header"),
6 | ui.p("This is the body."),
7 | ui.p("This is still the body."),
8 | ui.card_footer("This is the footer"),
9 | full_screen=True,
10 | )
11 | )
12 |
13 |
14 | app = App(app_ui, server=None)
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/card_header/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | with ui.card(full_screen=True):
4 | ui.card_header("This is the header")
5 | ui.p("This is the body.")
6 | ui.p("This is still the body.")
7 | ui.card_footer("This is the footer")
8 |
--------------------------------------------------------------------------------
/shiny/api-examples/data_frame_data_view/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | mtcars = pd.read_csv(app_dir / "mtcars.csv")
7 |
--------------------------------------------------------------------------------
/shiny/api-examples/data_frame_update_filter/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | mtcars = pd.read_csv(app_dir / "mtcars.csv")
7 |
--------------------------------------------------------------------------------
/shiny/api-examples/data_frame_update_sort/app-express.py:
--------------------------------------------------------------------------------
1 | from shared import mtcars
2 |
3 | from shiny import reactive
4 | from shiny.express import input, render, ui
5 |
6 | data = reactive.value(mtcars.iloc[:, range(4)])
7 |
8 | with ui.card():
9 | ui.input_action_button("btn", "Sort on columns 1↑ and 3↓")
10 |
11 | @render.data_frame
12 | def df():
13 | return render.DataGrid(data())
14 |
15 |
16 | @reactive.effect
17 | @reactive.event(input.btn)
18 | async def _():
19 | await df.update_sort([{"col": 1, "desc": False}, {"col": 3, "desc": True}])
20 |
--------------------------------------------------------------------------------
/shiny/api-examples/data_frame_update_sort/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | mtcars = pd.read_csv(app_dir / "mtcars.csv")
7 |
--------------------------------------------------------------------------------
/shiny/api-examples/download_button/app-express.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | import random
3 | from datetime import date
4 |
5 | from shiny.express import render
6 |
7 |
8 | @render.download(
9 | filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv"
10 | )
11 | async def downloadData():
12 | await asyncio.sleep(0.25)
13 | yield "one,two,three\n"
14 | yield "新,1,2\n"
15 | yield "型,4,5\n"
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/effect/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, reactive, ui
2 |
3 | app_ui = ui.page_fluid(ui.input_action_button("btn", "Press me!"))
4 |
5 |
6 | def server(input: Inputs, output: Outputs, session: Session):
7 | @reactive.effect
8 | @reactive.event(input.btn)
9 | def _():
10 | ui.insert_ui(
11 | ui.p("Number of clicks: ", input.btn()),
12 | selector="#btn",
13 | where="afterEnd",
14 | )
15 |
16 |
17 | app = App(app_ui, server)
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/effect/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, ui
3 |
4 | ui.input_action_button("show", "Show modal dialog")
5 |
6 |
7 | @reactive.effect
8 | @reactive.event(input.show)
9 | def show_important_message():
10 | m = ui.modal(
11 | "This is a somewhat important message.",
12 | easy_close=True,
13 | footer=None,
14 | )
15 | ui.modal_show(m)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/file_reader/app-express.py:
--------------------------------------------------------------------------------
1 | import pathlib
2 |
3 | import pandas as pd
4 |
5 | from shiny import reactive
6 | from shiny.express import render
7 |
8 | file = pathlib.Path(__file__).parent / "mtcars.csv"
9 |
10 |
11 | @reactive.file_reader(file)
12 | def read_file():
13 | return pd.read_csv(file)
14 |
15 |
16 | @render.table
17 | def result():
18 | return read_file()
19 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_css/app-core.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from shiny import App, ui
4 |
5 | css_file = Path(__file__).parent / "css" / "styles.css"
6 |
7 | app_ui = ui.page_fluid(
8 | "Almost before we knew it, we had left the ground!!!",
9 | ui.include_css(css_file),
10 | ui.div(
11 | # Style individual elements with an attribute dictionary.
12 | {"style": "font-weight: bold"},
13 | ui.p("Bold text"),
14 | ),
15 | )
16 |
17 | app = App(app_ui, None)
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_css/app-express.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from shiny.express import ui
4 |
5 | css_file = Path(__file__).parent / "css" / "styles.css"
6 |
7 | "Almost before we knew it, we had left the ground!!!"
8 |
9 | ui.include_css(css_file)
10 |
11 | # Style individual elements with an attribute dictionary.
12 | ui.p("Bold text", {"style": "font-weight: bold"})
13 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_css/css/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-size: 3rem;
3 | background-color: pink
4 | }
5 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_js/app-core.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from shiny import App, ui
4 |
5 | js_file = Path(__file__).parent / "js" / "app.js"
6 |
7 | app_ui = ui.page_fluid(
8 | "If you see this page before 'OK'-ing the alert box, something went wrong",
9 | ui.include_js(js_file),
10 | )
11 |
12 |
13 | app = App(app_ui, None)
14 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_js/app-express.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from shiny.express import ui
4 |
5 | js_file = Path(__file__).parent / "js" / "app.js"
6 |
7 | "If you see this page before 'OK'-ing the alert box, something went wrong"
8 |
9 | ui.include_js(js_file)
10 |
--------------------------------------------------------------------------------
/shiny/api-examples/include_js/js/app.js:
--------------------------------------------------------------------------------
1 | alert("If you're seeing this, the javascript file was included successfully.");
2 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_checkbox/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_checkbox("somevalue", "Some value", False),
5 | ui.output_ui("value"),
6 | )
7 |
8 |
9 | def server(input: Inputs, output: Outputs, session: Session):
10 | @render.ui
11 | def value():
12 | return input.somevalue()
13 |
14 |
15 | app = App(app_ui, server)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_checkbox/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_checkbox("somevalue", "Some value", False)
4 |
5 |
6 | @render.ui
7 | def value():
8 | return input.somevalue()
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_checkbox_group/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import req
2 | from shiny.express import input, render, ui
3 |
4 | ui.input_checkbox_group(
5 | "colors",
6 | "Choose color(s):",
7 | {
8 | "red": ui.span("Red", style="color: #FF0000;"),
9 | "green": ui.span("Green", style="color: #00AA00;"),
10 | "blue": ui.span("Blue", style="color: #0000AA;"),
11 | },
12 | )
13 |
14 |
15 | @render.ui
16 | def val():
17 | req(input.colors())
18 | return "You chose " + ", ".join(input.colors())
19 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_numeric/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_numeric("obs", "Observations:", 10, min=1, max=100),
5 | ui.output_text_verbatim("value"),
6 | )
7 |
8 |
9 | def server(input: Inputs, output: Outputs, session: Session):
10 | @render.text
11 | def value():
12 | return input.obs()
13 |
14 |
15 | app = App(app_ui, server)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_numeric/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_numeric("obs", "Observations:", 10, min=1, max=100)
4 |
5 |
6 | @render.code
7 | def value():
8 | return input.obs()
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_password/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, reactive, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_password("password", "Password:"),
5 | ui.input_action_button("go", "Go"),
6 | ui.output_text_verbatim("value"),
7 | )
8 |
9 |
10 | def server(input: Inputs, output: Outputs, session: Session):
11 | @render.text
12 | @reactive.event(input.go)
13 | def value():
14 | return input.password()
15 |
16 |
17 | app = App(app_ui, server)
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_password/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, render, ui
3 |
4 | ui.input_password("password", "Password:")
5 | ui.input_action_button("go", "Go")
6 |
7 |
8 | @render.code
9 | @reactive.event(input.go)
10 | def value():
11 | return input.password()
12 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_radio_buttons/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_radio_buttons(
4 | "rb",
5 | "Choose one:",
6 | {
7 | "html": ui.HTML("Red Text"),
8 | "text": "Normal text",
9 | },
10 | )
11 |
12 |
13 | @render.express
14 | def val():
15 | "You chose " + input.rb()
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_select/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_select(
4 | "state",
5 | "Choose a state:",
6 | {
7 | "East Coast": {"NY": "New York", "NJ": "New Jersey", "CT": "Connecticut"},
8 | "West Coast": {"WA": "Washington", "OR": "Oregon", "CA": "California"},
9 | "Midwest": {"MN": "Minnesota", "WI": "Wisconsin", "IA": "Iowa"},
10 | },
11 | )
12 |
13 |
14 | @render.text
15 | def value():
16 | return "You choose: " + str(input.state())
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_slider/app-express.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny.express import input, render, ui
5 |
6 | ui.input_slider("obs", "Number of bins:", min=10, max=100, value=30)
7 |
8 |
9 | @render.plot
10 | def distPlot():
11 | np.random.seed(19680801)
12 | x = 100 + 15 * np.random.randn(437)
13 |
14 | fig, ax = plt.subplots()
15 | ax.hist(x, input.obs(), density=True)
16 | return fig
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_switch/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_switch("somevalue", "Some value", False),
5 | ui.output_text("value"),
6 | )
7 |
8 |
9 | def server(input: Inputs, output: Outputs, session: Session):
10 | @render.text
11 | def value():
12 | return input.somevalue()
13 |
14 |
15 | app = App(app_ui, server)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_switch/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_switch("somevalue", "Some value", False)
4 |
5 |
6 | @render.text
7 | def value():
8 | return input.somevalue()
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_text/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_text("caption", "Caption:", "Data summary"),
5 | ui.output_text_verbatim("value"),
6 | )
7 |
8 |
9 | def server(input: Inputs, output: Outputs, session: Session):
10 | @render.text
11 | def value():
12 | return input.caption()
13 |
14 |
15 | app = App(app_ui, server)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/input_text/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_text("caption", "Caption:", "Data summary")
4 |
5 |
6 | @render.code
7 | def value():
8 | return input.caption()
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/insert_ui/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, reactive, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_action_button("add", "Add UI"),
5 | )
6 |
7 |
8 | def server(input: Inputs, output: Outputs, session: Session):
9 | @reactive.effect
10 | @reactive.event(input.add)
11 | def _():
12 | ui.insert_ui(
13 | ui.input_text("txt" + str(input.add()), "Enter some text"),
14 | selector="#add",
15 | where="afterEnd",
16 | )
17 |
18 |
19 | app = App(app_ui, server)
20 |
--------------------------------------------------------------------------------
/shiny/api-examples/insert_ui/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, ui
3 |
4 | ui.input_action_button("add", "Add UI")
5 |
6 |
7 | @reactive.effect
8 | @reactive.event(input.add)
9 | def _():
10 | ui.insert_ui(
11 | ui.input_text("txt" + str(input.add()), "Enter some text"),
12 | selector="#add",
13 | where="afterEnd",
14 | )
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/invalidate_later/app-core.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | from shiny import App, Inputs, Outputs, Session, reactive, render, ui
4 |
5 | app_ui = ui.page_fluid(ui.output_text("value"))
6 |
7 |
8 | def server(input: Inputs, output: Outputs, session: Session):
9 | @render.text
10 | def value():
11 | reactive.invalidate_later(0.5)
12 | return "Random int: " + str(random.randint(0, 10000))
13 |
14 |
15 | app = App(app_ui, server)
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/invalidate_later/app-express.py:
--------------------------------------------------------------------------------
1 | import random
2 |
3 | from shiny import reactive
4 | from shiny.express import render
5 |
6 |
7 | @render.text
8 | def value():
9 | reactive.invalidate_later(0.5)
10 | return "Random int: " + str(random.randint(0, 10000))
11 |
--------------------------------------------------------------------------------
/shiny/api-examples/layout_column_wrap/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, ui
2 |
3 | y = ui.card("A simple card")
4 |
5 | app_ui = ui.page_fluid(
6 | # Always has 2 columns (on non-mobile)
7 | ui.layout_column_wrap(y, y, y, width=1 / 2),
8 | ui.hr(),
9 | # Has three columns when viewport is wider than 750px
10 | ui.layout_column_wrap(y, y, y, width="250px"),
11 | )
12 |
13 |
14 | app = App(app_ui, server=None)
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/layout_column_wrap/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | with ui.hold() as a_card:
4 | with ui.card():
5 | "A simple card"
6 |
7 | # Always has 2 columns (on non-mobile)
8 | with ui.layout_column_wrap(width=1 / 2):
9 | a_card
10 | a_card
11 | a_card
12 |
13 | ui.hr()
14 |
15 | # Has three columns when viewport is wider than 750px
16 | with ui.layout_column_wrap(width="250px"):
17 | a_card
18 | a_card
19 | a_card
20 |
--------------------------------------------------------------------------------
/shiny/api-examples/layout_sidebar/app-express.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny.express import input, render, ui
5 |
6 | with ui.layout_sidebar():
7 | with ui.sidebar():
8 | ui.input_slider("n", "N", min=0, max=100, value=20)
9 |
10 | @render.plot(alt="A histogram")
11 | def plot() -> object:
12 | np.random.seed(19680801)
13 | x = 100 + 15 * np.random.randn(437)
14 |
15 | fig, ax = plt.subplots()
16 | ax.hist(x, input.n(), density=True)
17 | return fig
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/markdown/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, ui
2 |
3 | ui_app = ui.page_fluid(
4 | ui.markdown(
5 | """
6 | # Hello World
7 |
8 | This is **markdown** and here is some `code`:
9 |
10 | ```python
11 | print('Hello world!')
12 | ```
13 | """
14 | )
15 | )
16 |
17 |
18 | def server(input: Inputs, output: Outputs, session: Session):
19 | pass
20 |
21 |
22 | app = App(ui_app, server)
23 |
--------------------------------------------------------------------------------
/shiny/api-examples/markdown/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.markdown(
4 | """
5 | # Hello World
6 |
7 | This is **markdown** and here is some `code`:
8 |
9 | ```python
10 | print('Hello world!')
11 | ```
12 | """
13 | )
14 |
--------------------------------------------------------------------------------
/shiny/api-examples/modal/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, ui
3 |
4 | ui.input_action_button("show", "Show modal dialog")
5 |
6 |
7 | @reactive.effect
8 | @reactive.event(input.show)
9 | def _():
10 | m = ui.modal(
11 | "This is a somewhat important message.",
12 | title="Somewhat important message",
13 | easy_close=True,
14 | footer=None,
15 | )
16 | ui.modal_show(m)
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/nav_control/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | with ui.navset_card_underline(id="tab"):
4 | with ui.nav_control():
5 | ui.a("Shiny", href="https://shiny.posit.co", target="_blank")
6 |
7 | with ui.nav_control():
8 | ui.a(
9 | "Learn Shiny",
10 | href="https://shiny.posit.co/py/docs/overview.html",
11 | target="_blank",
12 | )
13 |
--------------------------------------------------------------------------------
/shiny/api-examples/nav_menu/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | with ui.navset_card_pill(id="selected_card_pill"):
4 | with ui.nav_menu("Nav Menu items"):
5 | with ui.nav_panel("A"):
6 | "Page A content"
7 | with ui.nav_panel("B"):
8 | "Page B content"
9 | with ui.nav_panel("C"):
10 | "Page C content"
11 | ui.h5("Selected:")
12 |
13 |
14 | @render.code
15 | def _():
16 | return input.selected_card_pill()
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/nav_panel/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(title="Nav Panel Example")
4 |
5 | with ui.nav_panel("Page 1"):
6 | "Page 1 content"
7 |
8 | with ui.nav_panel("Page 2"):
9 | with ui.navset_card_underline():
10 | with ui.nav_panel("Tab 1"):
11 | "Tab 1 content"
12 | with ui.nav_panel("Tab 2"):
13 | "Tab 2 content"
14 | with ui.nav_panel("Tab 3"):
15 | "Tab 3 content"
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/nav_spacer/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | with ui.navset_underline(id="selected_navset_underline"):
4 | with ui.nav_panel("Tab 1"):
5 | "Tab 1 content"
6 | ui.nav_spacer()
7 | with ui.nav_panel("Tab 2"):
8 | "Tab 2 content"
9 | with ui.nav_panel("Tab 3"):
10 | "Tab 3 content"
11 | ui.h5("Selected:")
12 |
13 |
14 | @render.code
15 | def _():
16 | return input.selected_navset_underline()
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/output_image/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 | from shiny.types import ImgData
3 |
4 | app_ui = ui.page_fluid(ui.output_image("image"))
5 |
6 |
7 | def server(input: Inputs, output: Outputs, session: Session):
8 | @render.image
9 | def image():
10 | from pathlib import Path
11 |
12 | dir = Path(__file__).resolve().parent
13 | img: ImgData = {"src": str(dir / "posit-logo.png"), "width": "100px"}
14 | return img
15 |
16 |
17 | app = App(app_ui, server)
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/output_image/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import render
2 |
3 |
4 | @render.image
5 | def image():
6 | from pathlib import Path
7 |
8 | dir = Path(__file__).resolve().parent
9 | img = {"src": str(dir / "posit-logo.png"), "width": "100px"}
10 | return img
11 |
--------------------------------------------------------------------------------
/shiny/api-examples/output_image/posit-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/api-examples/output_image/posit-logo.png
--------------------------------------------------------------------------------
/shiny/api-examples/output_plot/app-express.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny.express import input, render, ui
5 |
6 | ui.input_slider("n", "input_slider()", min=10, max=100, value=50, step=5, animate=True)
7 |
8 |
9 | @render.plot
10 | def p():
11 | np.random.seed(19680801)
12 | x_rand = 100 + 15 * np.random.randn(437)
13 | fig, ax = plt.subplots()
14 | ax.hist(x_rand, int(input.n()), density=True)
15 | return fig
16 |
--------------------------------------------------------------------------------
/shiny/api-examples/output_ui/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, render, ui
3 |
4 | ui.input_action_button("add", "Add more controls")
5 |
6 |
7 | @render.ui
8 | @reactive.event(input.add)
9 | def moreControls():
10 | return [
11 | ui.input_slider("n", "N", min=1, max=1000, value=500),
12 | ui.input_text("label", "Label"),
13 | ]
14 |
--------------------------------------------------------------------------------
/shiny/api-examples/page_sidebar/app-express.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import numpy as np
3 |
4 | from shiny.express import input, render, ui
5 |
6 | with ui.sidebar():
7 | ui.input_slider("n", "N", min=0, max=100, value=20)
8 |
9 |
10 | @render.plot(alt="A histogram")
11 | def plot() -> object:
12 | np.random.seed(19680801)
13 | x = 100 + 15 * np.random.randn(437)
14 |
15 | fig, ax = plt.subplots()
16 | ax.hist(x, input.n(), density=True)
17 | return fig
18 |
--------------------------------------------------------------------------------
/shiny/api-examples/panel_absolute/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.h2("A basic absolute panel example")
4 |
5 | with ui.panel_absolute(draggable=True, width="300px", right="50px", top="25%"):
6 | with ui.panel_well():
7 | "Drag me around!"
8 | ui.input_slider("n", "N", min=0, max=100, value=20)
9 |
--------------------------------------------------------------------------------
/shiny/api-examples/panel_conditional/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.input_checkbox("show", "Show radio buttons", False)
4 |
5 | with ui.panel_conditional("input.show"):
6 | ui.input_radio_buttons("radio", "Choose ", ["slider", "select"])
7 |
8 | with ui.panel_conditional("input.show && input.radio === 'slider'"):
9 | ui.input_slider("slider", None, min=0, max=100, value=50)
10 |
11 | with ui.panel_conditional("input.show && input.radio === 'select'"):
12 | ui.input_select("select", None, ["A", "B", "C"])
13 |
--------------------------------------------------------------------------------
/shiny/api-examples/panel_title/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, ui
2 |
3 | app_ui = ui.page_fluid(ui.panel_title("Page title", "Window title"))
4 |
5 |
6 | def server(input: Inputs, output: Outputs, session: Session):
7 | pass
8 |
9 |
10 | app = App(app_ui, server)
11 |
--------------------------------------------------------------------------------
/shiny/api-examples/panel_title/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.panel_title("Page title", "Window title")
4 |
--------------------------------------------------------------------------------
/shiny/api-examples/panel_title/app.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, ui
2 |
3 | app_ui = ui.page_fluid(ui.panel_title("Page title", "Window title"))
4 |
5 |
6 | def server(input: Inputs, output: Outputs, session: Session):
7 | pass
8 |
9 |
10 | app = App(app_ui, server)
11 |
--------------------------------------------------------------------------------
/shiny/api-examples/remove_ui/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, reactive, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_action_button("rmv", "Remove UI"),
5 | ui.input_text("txt", "Click button above to remove me"),
6 | )
7 |
8 |
9 | def server(input: Inputs, output: Outputs, session: Session):
10 | @reactive.effect
11 | @reactive.event(input.rmv)
12 | def _():
13 | ui.remove_ui(selector="div:has(> #txt)")
14 |
15 |
16 | app = App(app_ui, server)
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/remove_ui/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, ui
3 |
4 | ui.input_action_button("rmv", "Remove UI")
5 | ui.input_text("txt", "Click button above to remove me")
6 |
7 |
8 | @reactive.effect
9 | @reactive.event(input.rmv)
10 | def _():
11 | ui.remove_ui(selector="div:has(> #txt)")
12 |
--------------------------------------------------------------------------------
/shiny/api-examples/render_express/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.input_text("name", "Name", "Socrates"),
5 | ui.input_text("years", "Years", "470-399 BC"),
6 | ui.output_ui("person"),
7 | )
8 |
9 |
10 | def server(input, output, session):
11 |
12 | @render.express
13 | def person():
14 | from shiny.express import ui
15 |
16 | with ui.card(class_="mt-3"):
17 | ui.h3(input.name())
18 | input.years()
19 |
20 |
21 | app = App(app_ui, server)
22 |
--------------------------------------------------------------------------------
/shiny/api-examples/render_express/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny.express import input, render, ui
2 |
3 | ui.input_text("name", "Name", "Socrates")
4 | ui.input_text("years", "Years", "470-399 BC")
5 |
6 |
7 | @render.express
8 | def person():
9 | with ui.card(class_="mt-3"):
10 | ui.h3(input.name())
11 | input.years()
12 |
--------------------------------------------------------------------------------
/shiny/api-examples/session_on_ended/app-express.py:
--------------------------------------------------------------------------------
1 | from datetime import datetime
2 |
3 | from shiny import reactive
4 | from shiny.express import input, session, ui
5 |
6 | ui.input_action_button("close", "Close the session")
7 |
8 |
9 | def log():
10 | print("Session ended at: " + datetime.now().strftime("%H:%M:%S"))
11 |
12 |
13 | _ = session.on_ended(log)
14 |
15 |
16 | @reactive.effect
17 | @reactive.event(input.close)
18 | async def _():
19 | await session.close()
20 |
--------------------------------------------------------------------------------
/shiny/api-examples/template/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.panel_title("Hello Shiny!"),
5 | ui.input_slider("n", "N", 0, 100, 20),
6 | ui.output_text_verbatim("txt"),
7 | )
8 |
9 |
10 | def server(input, output, session):
11 | @render.text
12 | def txt():
13 | return f"n*2 is {input.n() * 2}"
14 |
15 |
16 | app = App(app_ui, server)
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/theme/app-express-local.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | from shared import filler_text
4 |
5 | from shiny.express import input, render, ui
6 |
7 | ui.page_opts(
8 | title="Theme Example",
9 | theme=Path(__file__).parent / "css" / "shiny-theme-demo.css",
10 | )
11 |
12 | with ui.sidebar(title="Parameters"):
13 | ui.input_numeric("n", "N", min=0, max=100, value=20)
14 |
15 | ui.h2("Output")
16 |
17 |
18 | @render.code
19 | def txt():
20 | return f"n*2 is {input.n() * 2}"
21 |
22 |
23 | ui.markdown(filler_text)
24 |
--------------------------------------------------------------------------------
/shiny/api-examples/theme/app-express-remote.py:
--------------------------------------------------------------------------------
1 | from shared import filler_text
2 |
3 | from shiny.express import input, render, ui
4 |
5 | ui.page_opts(
6 | title="Theme Example",
7 | theme="https://cdn.jsdelivr.net/npm/bootswatch@5.3.3/dist/sketchy/bootstrap.min.css",
8 | )
9 |
10 | with ui.sidebar(title="Parameters"):
11 | ui.input_numeric("n", "N", min=0, max=100, value=20)
12 |
13 | ui.h2("Output")
14 |
15 |
16 | @render.code
17 | def txt():
18 | return f"n*2 is {input.n() * 2}"
19 |
20 |
21 | ui.markdown(filler_text)
22 |
--------------------------------------------------------------------------------
/shiny/api-examples/theme/app-express-shinyswatch.py:
--------------------------------------------------------------------------------
1 | import shinyswatch
2 | from shared import filler_text
3 |
4 | from shiny.express import input, render, ui
5 |
6 | ui.page_opts(
7 | title="Theme Example",
8 | theme=shinyswatch.theme.slate,
9 | )
10 |
11 | with ui.sidebar(title="Parameters"):
12 | ui.input_numeric("n", "N", min=0, max=100, value=20)
13 |
14 | ui.h2("Output")
15 |
16 |
17 | @render.code
18 | def txt():
19 | return f"n*2 is {input.n() * 2}"
20 |
21 |
22 | ui.markdown(filler_text)
23 |
--------------------------------------------------------------------------------
/shiny/api-examples/theme/css/rules.scss:
--------------------------------------------------------------------------------
1 | strong {
2 | color: $danger;
3 | }
4 |
--------------------------------------------------------------------------------
/shiny/api-examples/todo_list/requirements.txt:
--------------------------------------------------------------------------------
1 | shinyswatch
2 |
--------------------------------------------------------------------------------
/shiny/api-examples/tooltip/app-express.py:
--------------------------------------------------------------------------------
1 | from icons import question_circle_fill
2 |
3 | from shiny.express import ui
4 |
5 | with ui.tooltip(id="btn_tooltip"):
6 | ui.input_action_button("btn", "A button", class_="mt-3")
7 |
8 | "A message"
9 |
10 | with ui.card(class_="mt-3"):
11 | with ui.card_header():
12 | with ui.tooltip(placement="right", id="card_tooltip"):
13 | ui.span("Card title ", question_circle_fill)
14 | "Additional info"
15 |
16 | "Card body content..."
17 |
--------------------------------------------------------------------------------
/shiny/api-examples/update_checkbox/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import input, ui
3 |
4 | ui.input_slider("controller", "Controller", min=0, max=1, value=0, step=1)
5 | ui.input_checkbox("inCheckbox", "Input checkbox")
6 |
7 |
8 | @reactive.effect
9 | def _():
10 | # True if controller is odd, False if even.
11 | x_even = input.controller() % 2 == 1
12 | ui.update_checkbox("inCheckbox", value=x_even)
13 |
--------------------------------------------------------------------------------
/shiny/api-examples/update_date/app-express.py:
--------------------------------------------------------------------------------
1 | from datetime import date, timedelta
2 |
3 | from shiny import reactive
4 | from shiny.express import input, ui
5 |
6 | ui.input_slider("n", "Day of month", min=1, max=30, value=10)
7 | ui.input_date("inDate", "Input date")
8 |
9 |
10 | @reactive.effect
11 | def _():
12 | d = date(2013, 4, input.n())
13 | ui.update_date(
14 | "inDate",
15 | label="Date label " + str(input.n()),
16 | value=d,
17 | min=d - timedelta(days=3),
18 | max=d + timedelta(days=3),
19 | )
20 |
--------------------------------------------------------------------------------
/shiny/api-examples/update_selectize/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import ui
3 |
4 | ui.input_selectize("x", "Server side selectize", choices=[], multiple=True)
5 |
6 |
7 | @reactive.effect
8 | def _():
9 | ui.update_selectize(
10 | "x",
11 | choices=[f"Foo {i}" for i in range(10000)],
12 | selected=["Foo 0", "Foo 1"],
13 | server=True,
14 | )
15 |
--------------------------------------------------------------------------------
/shiny/api-examples/www_dir/www/css/more-styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: limegreen;
3 | }
4 |
--------------------------------------------------------------------------------
/shiny/api-examples/www_dir/www/css/styles.css:
--------------------------------------------------------------------------------
1 | @import url('more-styles.css');
2 | body {
3 | font-size: 2rem;
4 | }
5 |
--------------------------------------------------------------------------------
/shiny/api-examples/www_dir/www/js/changetext.js:
--------------------------------------------------------------------------------
1 | document.getElementById("target").innerText = "If you see this text, it worked!";
2 | document.getElementById("target").style.backgroundColor = "limegreen";
3 |
--------------------------------------------------------------------------------
/shiny/experimental/__init__.py:
--------------------------------------------------------------------------------
1 | from . import ui
2 |
3 | __all__ = ("ui",)
4 |
--------------------------------------------------------------------------------
/shiny/experimental/ui/__init__.py:
--------------------------------------------------------------------------------
1 | # Experimental
2 |
3 | from ._card import card_image
4 | from ._deprecated import card, card_body, card_title
5 |
6 | __all__ = (
7 | # Deprecated
8 | "card",
9 | "card_body",
10 | "card_title",
11 | # Still experimental
12 | "card_image",
13 | )
14 |
--------------------------------------------------------------------------------
/shiny/express/app.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | from pathlib import Path
4 |
5 | from ._run import wrap_express_app
6 | from ._utils import unescape_from_var_name
7 |
8 |
9 | # If someone requests shiny.express.app:_2f_path_2f_to_2f_app_2e_py, then we will call
10 | # wrap_express_app(Path("/path/to/app.py")) and return the result.
11 | def __getattr__(name: str) -> object:
12 | name = unescape_from_var_name(name)
13 | return wrap_express_app(Path(name))
14 |
--------------------------------------------------------------------------------
/shiny/express/expressify_decorator/__init__.py:
--------------------------------------------------------------------------------
1 | from ._expressify import expressify
2 |
3 | __all__ = ("expressify",)
4 |
--------------------------------------------------------------------------------
/shiny/express/expressify_decorator/_func_displayhook.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | from htmltools import Tag, Tagifiable, TagList
4 |
5 |
6 | # A decorator used for `def` statements. It makes sure that any `def` statement which
7 | # returns a tag-like object, or one with a `_repr_html` method, will be passed on to
8 | # the current sys.displayhook.
9 | def _expressify_decorator_function_def(fn: object) -> object:
10 | if isinstance(fn, (Tag, TagList, Tagifiable)) or hasattr(fn, "_repr_html_"):
11 | sys.displayhook(fn)
12 |
13 | return fn
14 |
--------------------------------------------------------------------------------
/shiny/express/layout.py:
--------------------------------------------------------------------------------
1 | import warnings
2 |
3 | from . import ui
4 |
5 | warnings.warn(
6 | "shiny.express.layout has been deprecated and renamed to shiny.express.ui. "
7 | "Please import shiny.express.ui instead of shiny.express.layout.",
8 | ImportWarning,
9 | stacklevel=2,
10 | )
11 |
12 |
13 | def __getattr__(name: str) -> object:
14 | return getattr(ui, name)
15 |
--------------------------------------------------------------------------------
/shiny/playwright/expect/__init__.py:
--------------------------------------------------------------------------------
1 | from ._expect import (
2 | expect_not_to_have_attribute,
3 | expect_not_to_have_class,
4 | expect_to_have_class,
5 | expect_to_have_style,
6 | expect_not_to_have_style,
7 | )
8 | from ._expect_to_change import expect_to_change
9 |
10 | __all__ = [
11 | "expect_to_change",
12 | "expect_not_to_have_attribute",
13 | "expect_to_have_class",
14 | "expect_not_to_have_class",
15 | "expect_to_have_style",
16 | "expect_not_to_have_style",
17 | ]
18 |
--------------------------------------------------------------------------------
/shiny/py.typed:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/py.typed
--------------------------------------------------------------------------------
/shiny/pytest/__init__.py:
--------------------------------------------------------------------------------
1 | try:
2 | import pytest # noqa: F401 # pyright: ignore[reportUnusedImport, reportMissingTypeStubs]
3 | except ImportError:
4 | raise ImportError(
5 | "The shiny.pytest module requires the pytest package to be installed."
6 | " Please install it with this command:"
7 | "\n\n pip install pytest"
8 | )
9 |
10 | from ._fixture import ScopeName, create_app_fixture
11 |
12 | __all__ = ("create_app_fixture", "ScopeName")
13 |
--------------------------------------------------------------------------------
/shiny/render/_data_frame_utils/__init__.py:
--------------------------------------------------------------------------------
1 | # Empty on purpose. File required for quartodoc
2 |
--------------------------------------------------------------------------------
/shiny/render/renderer/__init__.py:
--------------------------------------------------------------------------------
1 | from ._renderer import (
2 | AsyncValueFn,
3 | Jsonifiable,
4 | Renderer,
5 | RendererT,
6 | ValueFn,
7 | )
8 |
9 | __all__ = (
10 | "Renderer",
11 | "ValueFn",
12 | "Jsonifiable",
13 | "AsyncValueFn",
14 | "RendererT",
15 | )
16 |
--------------------------------------------------------------------------------
/shiny/run/__init__.py:
--------------------------------------------------------------------------------
1 | from ._run import ShinyAppProc, run_shiny_app
2 |
3 | __all__ = (
4 | "run_shiny_app",
5 | "ShinyAppProc",
6 | )
7 |
--------------------------------------------------------------------------------
/shiny/session/__init__.py:
--------------------------------------------------------------------------------
1 | """
2 | Tools for working within a (user) session context.
3 | """
4 |
5 | from ._session import ClientData, Inputs, Outputs, Session
6 | from ._utils import ( # noqa: F401
7 | get_current_session,
8 | session_context as session_context,
9 | require_active_session,
10 | )
11 |
12 | __all__ = (
13 | "Session",
14 | "Inputs",
15 | "Outputs",
16 | "ClientData",
17 | "get_current_session",
18 | "require_active_session",
19 | )
20 |
--------------------------------------------------------------------------------
/shiny/templates/app/01-basic-app/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "app",
3 | "id": "basic-app",
4 | "title": "Basic app",
5 | "description": "A basic Shiny app template.",
6 | "next_steps": [
7 | "Run the app with `shiny run app.py` from the app directory."
8 | ],
9 | "follow_up": [
10 | {
11 | "type": "info",
12 | "text": "Just getting started with Shiny?"
13 | },
14 | {
15 | "type": "action",
16 | "text": "Learn more at https://shiny.posit.co/py/docs/overview.html"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/shiny/templates/app/01-basic-app/app-core.py:
--------------------------------------------------------------------------------
1 | from shiny import App, render, ui
2 |
3 | app_ui = ui.page_fluid(
4 | ui.panel_title("Hello Shiny!"),
5 | ui.input_slider("n", "N", 0, 100, 20),
6 | ui.output_text_verbatim("txt"),
7 | )
8 |
9 |
10 | def server(input, output, session):
11 | @render.text
12 | def txt():
13 | return f"n*2 is {input.n() * 2}"
14 |
15 |
16 | app = App(app_ui, server)
17 |
--------------------------------------------------------------------------------
/shiny/templates/app/01-basic-app/app-express.py:
--------------------------------------------------------------------------------
1 | from shiny import render, ui
2 | from shiny.express import input
3 |
4 | ui.panel_title("Hello Shiny!")
5 | ui.input_slider("n", "N", 0, 100, 20)
6 |
7 |
8 | @render.text
9 | def txt():
10 | return f"n*2 is {input.n() * 2}"
11 |
--------------------------------------------------------------------------------
/shiny/templates/app/02-basic-sidebar/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "app",
3 | "id": "basic-sidebar",
4 | "title": "Sidebar layout",
5 | "description": "An app with inputs in a sidebar and a plot in the main area.",
6 | "next_steps": [
7 | "Run the app with `shiny run app.py`."
8 | ],
9 | "follow_up": [
10 | {
11 | "type": "info",
12 | "text": "Just getting started with Shiny?"
13 | },
14 | {
15 | "type": "action",
16 | "text": "Learn more at https://shiny.posit.co/py/docs/overview.html"
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/shiny/templates/app/02-basic-sidebar/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | seaborn
3 | pandas
--------------------------------------------------------------------------------
/shiny/templates/app/02-basic-sidebar/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | df = pd.read_csv(app_dir / "penguins.csv")
7 |
--------------------------------------------------------------------------------
/shiny/templates/app/03-dashboard/requirements.txt:
--------------------------------------------------------------------------------
1 | faicons
2 | shiny
3 | seaborn
4 | pandas
5 |
--------------------------------------------------------------------------------
/shiny/templates/app/03-dashboard/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | df = pd.read_csv(app_dir / "penguins.csv")
7 |
--------------------------------------------------------------------------------
/shiny/templates/app/03-dashboard/styles.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bslib-sidebar-main-bg: #f8f8f8;
3 | }
--------------------------------------------------------------------------------
/shiny/templates/app/04-dashboard-tips/README.md:
--------------------------------------------------------------------------------
1 | This template gives you a more "complete" dashboard for exploring the tips dataset. For an overview of what's here, visit [this article](https://shiny.posit.co/py/docs/user-interfaces.html).
--------------------------------------------------------------------------------
/shiny/templates/app/04-dashboard-tips/requirements.txt:
--------------------------------------------------------------------------------
1 | faicons
2 | shiny
3 | shinywidgets
4 | plotly
5 | pandas
6 | ridgeplot
7 |
--------------------------------------------------------------------------------
/shiny/templates/app/04-dashboard-tips/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | tips = pd.read_csv(app_dir / "tips.csv")
7 |
--------------------------------------------------------------------------------
/shiny/templates/app/04-dashboard-tips/styles.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bslib-sidebar-main-bg: #f8f8f8;
3 | }
4 |
5 | .popover {
6 | --bs-popover-header-bg: #222;
7 | --bs-popover-header-color: #fff;
8 | }
9 |
10 | .popover .btn-close {
11 | filter: var(--bs-btn-close-white-filter);
12 | }
--------------------------------------------------------------------------------
/shiny/templates/app/05-basic-navigation/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | seaborn
3 | pandas
--------------------------------------------------------------------------------
/shiny/templates/app/05-basic-navigation/shared.py:
--------------------------------------------------------------------------------
1 | from pathlib import Path
2 |
3 | import pandas as pd
4 |
5 | app_dir = Path(__file__).parent
6 | df = pd.read_csv(app_dir / "penguins.csv")
7 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llm-enterprise/aws-bedrock-anthropic/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | chatlas
4 | anthropic[bedrock]
5 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llm-enterprise/aws-bedrock-anthropic/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | AWS_SECRET_KEY=
4 | AWS_ACCESS_KEY=
5 | AWS_REGION=
6 | AWS_ACCOUNT_ID=
7 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llm-enterprise/azure-openai/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | chatlas
4 | openai
5 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llm-enterprise/azure-openai/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | AZURE_OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/anthropic/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | tokenizers
4 | chatlas
5 | anthropic
6 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/anthropic/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | ANTHROPIC_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/google/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | chatlas>=0.4.0
4 | google-genai
5 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/google/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | GOOGLE_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/langchain/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | langchain-openai
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/langchain/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/ollama/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | chatlas
3 | ollama
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/openai/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | chatlas
4 | openai
5 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/openai/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/playground/requirements.txt:
--------------------------------------------------------------------------------
1 | chatlas>=0.4
2 | openai
3 | anthropic
4 | google-genai
5 | python-dotenv
6 | shiny
7 |
--------------------------------------------------------------------------------
/shiny/templates/chat/llms/playground/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | ANTHROPIC_API_KEY=
4 | OPENAI_API_KEY=
5 | GOOGLE_API_KEY=
6 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llm-enterprise/aws-bedrock-anthropic/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | dotenv
3 | chatlas[anthropic-bedrock]
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llm-enterprise/aws-bedrock-anthropic/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | AWS_SECRET_KEY=
4 | AWS_ACCESS_KEY=
5 | AWS_REGION=
6 | AWS_ACCOUNT_ID=
7 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llm-enterprise/azure-openai/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | dotenv
3 | chatlas[openai]
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llm-enterprise/azure-openai/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | AZURE_OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/anthropic/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | dotenv
3 | chatlas[anthropic]
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/anthropic/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | ANTHROPIC_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/google/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | dotenv
3 | chatlas[google]
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/google/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | GOOGLE_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/langchain/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | python-dotenv
3 | langchain-openai
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/langchain/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/ollama/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | chatlas[ollama]
3 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/openai/requirements.txt:
--------------------------------------------------------------------------------
1 | shiny
2 | dotenv
3 | chatlas[openai]
4 |
--------------------------------------------------------------------------------
/shiny/templates/markdown-stream/llms/openai/template.env:
--------------------------------------------------------------------------------
1 | # Once you provided your API key, rename this file to .env
2 | # The load_dotenv() in the app.py will then load this env variable
3 | OPENAI_API_KEY=
4 |
--------------------------------------------------------------------------------
/shiny/templates/package/.gitignore:
--------------------------------------------------------------------------------
1 | **/distjs/
2 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-input/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "package",
3 | "id": "js-input",
4 | "title": "Input component",
5 | "description": "A Python package template providing a custom Shiny input component.",
6 | "follow_up": [
7 | {
8 | "type": "action",
9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html"
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-input/custom_component/__init__.py:
--------------------------------------------------------------------------------
1 | from .custom_component import custom_component
2 |
3 | __all__ = [
4 | "custom_component",
5 | ]
6 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-input/example-app/app.py:
--------------------------------------------------------------------------------
1 | # pyright: basic
2 |
3 | from custom_component import custom_component
4 |
5 | from shiny import App, render, ui
6 |
7 | app_ui = ui.page_fluid(
8 | custom_component("myComponent"),
9 | ui.output_text("valueOut"),
10 | )
11 |
12 |
13 | def server(input, output, session):
14 | @render.text
15 | def valueOut():
16 | return f"Value from input is {input.myComponent()}"
17 |
18 |
19 | app = App(app_ui, server)
20 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-input/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = ["setuptools>=40.6.0", "wheel"]
3 | build-backend = "setuptools.build_meta"
4 |
5 | [project]
6 | name = "custom_component"
7 | version = "0.1"
8 | dependencies = ["shiny >= 0.6.0"]
9 |
10 | [tool.setuptools]
11 | packages = ["custom_component"]
12 | include-package-data = true
13 | zip-safe = false
14 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-output/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "package",
3 | "id": "js-output",
4 | "title": "Output component",
5 | "description": "A Python package template providing a custom Shiny output component.",
6 | "follow_up": [
7 | {
8 | "type": "action",
9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html"
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-output/custom_component/__init__.py:
--------------------------------------------------------------------------------
1 | from .custom_component import custom_component, render_custom_component
2 |
3 | __all__ = ["custom_component", "render_custom_component"]
4 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-output/example-app/app.py:
--------------------------------------------------------------------------------
1 | from custom_component import custom_component, render_custom_component
2 |
3 | from shiny import App, ui
4 |
5 | app_ui = ui.page_fluid(
6 | ui.input_slider("n", "Choose a value", 1, 20, 5),
7 | custom_component("myOutput"),
8 | )
9 |
10 |
11 | def server(input, output, session):
12 | @render_custom_component
13 | def myOutput():
14 | return input.n()
15 |
16 |
17 | app = App(app_ui, server)
18 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-output/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = ["setuptools>=40.6.0", "wheel"]
3 | build-backend = "setuptools.build_meta"
4 |
5 | [project]
6 | name = "custom_component"
7 | version = "0.1"
8 | dependencies = ["shiny >= 0.6.0"]
9 |
10 | [tool.setuptools]
11 | packages = ["custom_component"]
12 | include-package-data = true
13 | zip-safe = false
14 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-react/_template.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "package",
3 | "id": "js-react",
4 | "title": "React component",
5 | "description": "A Python package template providing a custom React-based Shiny component.",
6 | "follow_up": [
7 | {
8 | "type": "action",
9 | "text": "Learn more about custom components for Shiny at https://shiny.posit.co/py/docs/custom-components-pkg.html"
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-react/custom_component/__init__.py:
--------------------------------------------------------------------------------
1 | from .custom_component import (
2 | input_custom_component,
3 | output_custom_component,
4 | render_custom_component,
5 | )
6 |
7 | __all__ = [
8 | "input_custom_component",
9 | "output_custom_component",
10 | "render_custom_component",
11 | ]
12 |
--------------------------------------------------------------------------------
/shiny/templates/package/js-react/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = ["setuptools>=40.6.0", "wheel"]
3 | build-backend = "setuptools.build_meta"
4 |
5 | [project]
6 | name = "custom_component"
7 | version = "0.1"
8 | dependencies = ["shiny >= 0.6.0"]
9 |
10 | [tool.setuptools]
11 | packages = ["custom_component"]
12 | include-package-data = true
13 | zip-safe = false
14 |
--------------------------------------------------------------------------------
/shiny/ui/_busy_spinner_types.py:
--------------------------------------------------------------------------------
1 | # Generated by scripts/htmlDependencies.R: do not edit by hand
2 |
3 | from __future__ import annotations
4 |
5 | from typing import Literal
6 |
7 | BusySpinnerType = Literal[
8 | "bars",
9 | "bars2",
10 | "bars3",
11 | "dots",
12 | "dots2",
13 | "dots3",
14 | "pulse",
15 | "pulse2",
16 | "pulse3",
17 | "ring",
18 | "ring2",
19 | "ring3",
20 | ]
21 |
--------------------------------------------------------------------------------
/shiny/ui/_web_component.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | from htmltools import Tag, TagAttrs, TagAttrValue, TagChild
4 |
5 | from ._html_deps_shinyverse import components_dependencies
6 |
7 |
8 | def web_component(
9 | tag_name: str,
10 | *args: TagChild | TagAttrs,
11 | **kwargs: TagAttrValue,
12 | ) -> Tag:
13 | return Tag(
14 | tag_name,
15 | components_dependencies(),
16 | *args,
17 | _add_ws=False,
18 | **kwargs,
19 | )
20 |
--------------------------------------------------------------------------------
/shiny/ui/css/__init__.py:
--------------------------------------------------------------------------------
1 | from ._css_unit import CssUnit, as_css_unit, as_css_padding
2 |
3 | __all__ = (
4 | "CssUnit",
5 | "as_css_unit",
6 | "as_css_padding",
7 | )
8 |
--------------------------------------------------------------------------------
/shiny/ui/dataframe/__init__.py:
--------------------------------------------------------------------------------
1 | from ._data_frame import output_data_frame
2 |
3 | __all__ = ("output_data_frame",)
4 |
--------------------------------------------------------------------------------
/shiny/ui/fill/__init__.py:
--------------------------------------------------------------------------------
1 | from ._fill import (
2 | as_fill_item,
3 | as_fillable_container,
4 | remove_all_fill,
5 | # is_fill_item,
6 | # is_fillable_container,
7 | )
8 |
9 | __all__ = (
10 | "as_fillable_container",
11 | "as_fill_item",
12 | "remove_all_fill",
13 | # "is_fillable_container",
14 | # "is_fill_item",
15 | )
16 |
--------------------------------------------------------------------------------
/shiny/www/py-shiny/spin/spin.css:
--------------------------------------------------------------------------------
1 | @keyframes py-shiny-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){.py-shiny-spin{animation:py-shiny-spin 2s linear infinite}}
2 | /*# sourceMappingURL=spin.css.map */
3 |
--------------------------------------------------------------------------------
/shiny/www/py-shiny/spin/spin.css.map:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "sources": ["../../../../js/spin/spin.scss"],
4 | "sourcesContent": ["@keyframes py-shiny-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: no-preference) {\n .py-shiny-spin {\n animation: py-shiny-spin 2s linear infinite;\n }\n}"],
5 | "mappings": "AAAA,4BAEI,uBAGA,0BAGJ,+CACE,eACE",
6 | "names": []
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/_version.json:
--------------------------------------------------------------------------------
1 | {
2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand",
3 | "package": "shiny",
4 | "version": "1.10.0.9001 (rstudio/shiny@ca41c0831befcf8feea17980a91983ce21d1b8a2)"
5 | }
6 |
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/_version.json:
--------------------------------------------------------------------------------
1 | {
2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand",
3 | "shiny_version": "1.10.0.9001 (rstudio/shiny@ca41c0831befcf8feea17980a91983ce21d1b8a2)",
4 | "bslib_version": "0.9.0.9000 (rstudio/bslib@7cf80506c6beb9d7e5f2f146d2c9c935bbaf1635)",
5 | "htmltools_version": "0.5.8.9000 (rstudio/htmltools@487aa0bed7313d7597b6edd5810e53cab0061198)",
6 | "bootstrap_version": "5.3.1"
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvQlMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvUlMI.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvXlMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvYlMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvZlMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvalMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_QiYsKILxRpg3hIP6sJ7fM7PqlONvblMIXxw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlM-vWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMOvWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMevWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlMuvWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlOevWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPevW.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/HI_SiYsKILxRpg3hIP6sJ7fM7PqlPuvWjMY.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/bootstrap/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqW106F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWt06F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtE6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtU6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWtk6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWu06F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuU6F.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWuk6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWvU6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memtYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWqWxU6F15M.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-muw.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTUGmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/bootstrap/fonts/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTVOmu1aB.woff2
--------------------------------------------------------------------------------
/shiny/www/shared/bslib/_version.json:
--------------------------------------------------------------------------------
1 | {
2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand",
3 | "package": "bslib",
4 | "version": "0.9.0.9000 (rstudio/bslib@7cf80506c6beb9d7e5f2f146d2c9c935bbaf1635)"
5 | }
6 |
--------------------------------------------------------------------------------
/shiny/www/shared/busy-indicators/spinners/bars.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/busy-indicators/spinners/dots.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/busy-indicators/spinners/pulse.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/busy-indicators/spinners/ring2.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/busy-indicators/spinners/ring3.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar-tn.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["ar-tn"]={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويليه","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ar.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.az.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1,clear:"Təmizlə",monthsTitle:"Aylar"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bg.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.br.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.br={days:["Sul","Lun","Meurzh","Merc'her","Yaou","Gwener","Sadorn"],daysShort:["Sul","Lun","Meu.","Mer.","Yao.","Gwe.","Sad."],daysMin:["Su","L","Meu","Mer","Y","G","Sa"],months:["Genver","C'hwevrer","Meurzh","Ebrel","Mae","Mezheven","Gouere","Eost","Gwengolo","Here","Du","Kerzu"],monthsShort:["Genv.","C'hw.","Meur.","Ebre.","Mae","Mezh.","Goue.","Eost","Gwen.","Here","Du","Kerz."],today:"Hiziv",monthsTitle:"Miz",clear:"Dilemel",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.bs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ca.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",monthsTitle:"Měsíc",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.cy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.da.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.da={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"I Dag",weekStart:1,clear:"Nulstil",format:"dd/mm/yyyy",monthsTitle:"Måneder"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.de.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.el.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-AU.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-CA.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-CA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:0,format:"yyyy-mm-dd"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-GB.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-IE.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-IE"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-NZ.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-NZ"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.en-ZA.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-ZA"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"yyyy/mm/d"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eo.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.es.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.et.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.eu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur",monthsTitle:"Hilabeteak",clear:"Ezabatu",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fa.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fa={days:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fo.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.fr-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.gl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.he.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hi={days:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],daysShort:["सूर्य","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],daysMin:["र","सो","मं","बु","गु","शु","श"],months:["जनवरी","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्टूबर","नवंबर","दिसम्बर"],monthsShort:["जन","फ़रवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितं","अक्टूबर","नवं","दिसम्बर"],today:"आज",monthsTitle:"महीने",clear:"साफ",weekStart:1,format:"dd / mm / yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.hy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կիր","Երկ","Երե","Չոր","Հին","Ուրբ","Շաբ"],daysMin:["Կի","Եկ","Եք","Չո","Հի","Ու","Շա"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հնվ","Փետ","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ամիսնէր"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.id.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.is.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.it.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ja.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ka.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.km.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.km={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ko.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.kr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]},a.fn.datepicker.deprecated('The language code "kr" is deprecated and will be removed in 2.0. For korean support use "ko" instead.')}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.lv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],monthsTitle:"Mēneši",today:"Šodien",clear:"Nodzēst",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.me.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.mn.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ms.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl-BE.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.nl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.no.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.no={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthsShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],today:"i dag",monthsTitle:"Måneder",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.oc.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.oc={days:["Dimenge","Diluns","Dimars","Dimècres","Dijòus","Divendres","Dissabte"],daysShort:["Dim","Dil","Dmr","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dr","dc","dj","dv","ds"],months:["Genièr","Febrièr","Març","Abrial","Mai","Junh","Julhet","Agost","Setembre","Octobre","Novembre","Decembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Dec"],today:"Uèi",monthsTitle:"Meses",clear:"Escafar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt-BR.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.pt.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ro.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ru.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Месяцы"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sq.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],monthsTitle:"Muaj",today:"Sot",weekStart:1,format:"dd/mm/yyyy",clear:"Pastro"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr-latin.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sv={days:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],daysShort:["sön","mån","tis","ons","tor","fre","lör"],daysMin:["sö","må","ti","on","to","fr","lö"],months:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.sw.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.ta.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ta={days:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],daysShort:["ஞாயி","திங்","செவ்","புத","வியா","வெள்","சனி"],daysMin:["ஞா","தி","செ","பு","வி","வெ","ச"],months:["ஜனவரி","பிப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்டு","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],monthsShort:["ஜன","பிப்","மார்","ஏப்","மே","ஜூன்","ஜூலை","ஆக","செப்","அக்","நவ","டிச"],today:"இன்று",monthsTitle:"மாதங்கள்",clear:"நீக்கு",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tg.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.tg={days:["Якшанбе","Душанбе","Сешанбе","Чоршанбе","Панҷшанбе","Ҷумъа","Шанбе"],daysShort:["Яшб","Дшб","Сшб","Чшб","Пшб","Ҷум","Шнб"],daysMin:["Яш","Дш","Сш","Чш","Пш","Ҷм","Шб"],months:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Имрӯз",monthsTitle:"Моҳҳо",clear:"Тоза намудан",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.th.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.tk={days:["Ýekşenbe","Duşenbe","Sişenbe","Çarşenbe","Penşenbe","Anna","Şenbe"],daysShort:["Ýek","Duş","Siş","Çar","Pen","Ann","Şen"],daysMin:["Ýe","Du","Si","Ça","Pe","An","Şe"],months:["Ýanwar","Fewral","Mart","Aprel","Maý","Iýun","Iýul","Awgust","Sentýabr","Oktýabr","Noýabr","Dekabr"],monthsShort:["Ýan","Few","Mar","Apr","Maý","Iýn","Iýl","Awg","Sen","Okt","Noý","Dek"],today:"Bu gün",monthsTitle:"Aýlar",clear:"Aýyr",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.tr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-cyrl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["uz-cyrl"]={days:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"],daysShort:["Якш","Ду","Се","Чор","Пай","Жу","Ша"],daysMin:["Як","Ду","Се","Чо","Па","Жу","Ша"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Бугун",clear:"Ўчириш",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Ойлар"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.uz-latn.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["uz-latn"]={days:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"],daysShort:["Yak","Du","Se","Chor","Pay","Ju","Sha"],daysMin:["Ya","Du","Se","Cho","Pa","Ju","Sha"],months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","Iyn","Iyl","Avg","Sen","Okt","Noy","Dek"],today:"Bugun",clear:"O'chirish",format:"dd.mm.yyyy",weekStart:1,monthsTitle:"Oylar"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.vi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-CN.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",monthsTitle:"选择月份",clear:"清除",format:"yyyy-mm-dd",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/datepicker/js/locales/bootstrap-datepicker.zh-TW.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery);
--------------------------------------------------------------------------------
/shiny/www/shared/htmltools/_version.json:
--------------------------------------------------------------------------------
1 | {
2 | "note!": "Generated by scripts/htmlDependencies.R: do not edit by hand",
3 | "package": "htmltools",
4 | "version": "0.5.8.9000 (rstudio/htmltools@487aa0bed7313d7597b6edd5810e53cab0061198)"
5 | }
6 |
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_444444_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_444444_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_555555_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_555555_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_777620_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_777620_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_777777_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_777777_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_cc0000_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_cc0000_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/jqueryui/images/ui-icons_ffffff_256x240.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/shiny/www/shared/jqueryui/images/ui-icons_ffffff_256x240.png
--------------------------------------------------------------------------------
/shiny/www/shared/sass/_sass_layer_markers.scss:
--------------------------------------------------------------------------------
1 | /*-- scss:functions --*/
2 | // SPLIT: functions
3 |
4 | /*-- scss:defaults --*/
5 | // SPLIT: defaults
6 |
7 | /*-- scss:rules --*/
8 | // SPLIT: rules
9 |
10 | /*-- scss:mixins --*/
11 | // SPLIT: mixins
12 |
13 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_defaults.scss:
--------------------------------------------------------------------------------
1 | // BS3 had .navbar { margin-bottom: 20px; }
2 | $navbar-margin-bottom: 20px !default;
3 |
4 | // BS5+ variable used for prefixing CSS vars
5 | $prefix: bs- !default;
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_dt_compat.scss:
--------------------------------------------------------------------------------
1 | // For DataTables with BS 5+
2 | @if $bootstrap-version >= 5 {
3 | // Currently not possible through DT: rstudio/DT#1081
4 | .datatables thead .form-group.has-feedback + div {
5 | background-color: var(--bs-body-bg) !important;
6 | color: var(--bs-body-color) !important;
7 | border-color: var(--bs-border-color) !important;
8 | border-width: var(--bs-border-width);
9 | border-radius: var(--bs-border-radius);
10 | border-style: var(--bs-border-style);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_help_text.scss:
--------------------------------------------------------------------------------
1 | .help-text, .help-block {
2 | @extend .form-text; @extend .text-muted;
3 | }
4 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_progress_compat.scss:
--------------------------------------------------------------------------------
1 | @each $color, $value in $theme-colors {
2 | .progress-bar-#{$color} {
3 | background-color: $value;
4 | color: color-contrast($value);
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_rules.scss:
--------------------------------------------------------------------------------
1 | @import "wells";
2 | @import "help_text";
3 | @import "dropdown_compat";
4 | @import "navbar_compat";
5 | @import "nav_compat";
6 | @import "progress_compat";
7 | @import "dt_compat";
8 |
9 | @import "glyphicons";
10 |
11 | @import "shiny_input";
12 | @import "shiny_misc";
13 |
14 | @import "headers";
15 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bs3compat/_shiny_misc.scss:
--------------------------------------------------------------------------------
1 | // For code inside of showcase mode
2 | // TODO: this should probably ported to shiny itself
3 | // if and when shiny-showcase.css is ported to sass
4 | pre.shiny-code {
5 | padding: 0.5 * $spacer;
6 | }
7 |
8 | // BS5 changed float-left -> float-start
9 | @if $bootstrap-version != 4 {
10 | .float-left {
11 | @extend .float-start;
12 | }
13 | .float-right {
14 | @extend .float-end;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/bslib-scss/bslib.scss:
--------------------------------------------------------------------------------
1 | @import "spacer";
2 | @import "tab-fill";
3 | @import "color-utilities";
4 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/builtin/bs5/shiny/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Accordions
2 | // These definitions can't go in _defaults.scss with a !default flag (because !default doesn't respect null)
3 | $accordion-button-active-bg: null;
4 | $accordion-button-active-color: null;
5 | $accordion-icon-active-color: null;
6 |
7 | // Component Variables
8 | @import "ionrangeslider/_variables.scss";
9 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/_helpers.scss:
--------------------------------------------------------------------------------
1 | @import "helpers/clearfix";
2 | @import "helpers/color-bg";
3 | @import "helpers/colored-links";
4 | @import "helpers/focus-ring";
5 | @import "helpers/icon-link";
6 | @import "helpers/ratio";
7 | @import "helpers/position";
8 | @import "helpers/stacks";
9 | @import "helpers/visually-hidden";
10 | @import "helpers/stretched-link";
11 | @import "helpers/text-truncation";
12 | @import "helpers/vr";
13 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/forms/_form-text.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Form text
3 | //
4 |
5 | .form-text {
6 | margin-top: $form-text-margin-top;
7 | @include font-size($form-text-font-size);
8 | font-style: $form-text-font-style;
9 | font-weight: $form-text-font-weight;
10 | color: $form-text-color;
11 | }
12 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_clearfix.scss:
--------------------------------------------------------------------------------
1 | .clearfix {
2 | @include clearfix();
3 | }
4 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_color-bg.scss:
--------------------------------------------------------------------------------
1 | // All-caps `RGBA()` function used because of this Sass bug: https://github.com/sass/node-sass/issues/2251
2 | @each $color, $value in $theme-colors {
3 | .text-bg-#{$color} {
4 | color: color-contrast($value) if($enable-important-utilities, !important, null);
5 | background-color: RGBA(var(--#{$prefix}#{$color}-rgb), var(--#{$prefix}bg-opacity, 1)) if($enable-important-utilities, !important, null);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_focus-ring.scss:
--------------------------------------------------------------------------------
1 | .focus-ring:focus {
2 | outline: 0;
3 | // By default, there is no `--bs-focus-ring-x`, `--bs-focus-ring-y`, or `--bs-focus-ring-blur`, but we provide CSS variables with fallbacks to initial `0` values
4 | box-shadow: var(--#{$prefix}focus-ring-x, 0) var(--#{$prefix}focus-ring-y, 0) var(--#{$prefix}focus-ring-blur, 0) var(--#{$prefix}focus-ring-width) var(--#{$prefix}focus-ring-color);
5 | }
6 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_ratio.scss:
--------------------------------------------------------------------------------
1 | // Credit: Nicolas Gallagher and SUIT CSS.
2 |
3 | .ratio {
4 | position: relative;
5 | width: 100%;
6 |
7 | &::before {
8 | display: block;
9 | padding-top: var(--#{$prefix}aspect-ratio);
10 | content: "";
11 | }
12 |
13 | > * {
14 | position: absolute;
15 | top: 0;
16 | left: 0;
17 | width: 100%;
18 | height: 100%;
19 | }
20 | }
21 |
22 | @each $key, $ratio in $aspect-ratios {
23 | .ratio-#{$key} {
24 | --#{$prefix}aspect-ratio: #{$ratio};
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_stretched-link.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Stretched link
3 | //
4 |
5 | .stretched-link {
6 | &::#{$stretched-link-pseudo-element} {
7 | position: absolute;
8 | top: 0;
9 | right: 0;
10 | bottom: 0;
11 | left: 0;
12 | z-index: $stretched-link-z-index;
13 | content: "";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_text-truncation.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Text truncation
3 | //
4 |
5 | .text-truncate {
6 | @include text-truncate();
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_visually-hidden.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Visually hidden
3 | //
4 |
5 | .visually-hidden,
6 | .visually-hidden-focusable:not(:focus):not(:focus-within) {
7 | @include visually-hidden();
8 | }
9 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/helpers/_vr.scss:
--------------------------------------------------------------------------------
1 | .vr {
2 | display: inline-block;
3 | align-self: stretch;
4 | -webkit-align-self: stretch;
5 | width: $vr-border-width;
6 | min-height: 1em;
7 | background-color: currentcolor;
8 | opacity: $hr-opacity;
9 | }
10 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_backdrop.scss:
--------------------------------------------------------------------------------
1 | // Shared between modals and offcanvases
2 | @mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity) {
3 | position: fixed;
4 | top: 0;
5 | left: 0;
6 | z-index: $zindex;
7 | width: 100vw;
8 | height: 100vh;
9 | background-color: $backdrop-bg;
10 |
11 | // Fade for backdrop
12 | &.fade { opacity: 0; }
13 | &.show { opacity: $backdrop-opacity; }
14 | }
15 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_banner.scss:
--------------------------------------------------------------------------------
1 | @mixin bsBanner($file) {
2 | /*!
3 | * Bootstrap #{$file} v5.3.1 (https://getbootstrap.com/)
4 | * Copyright 2011-2023 The Bootstrap Authors
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6 | */
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_box-shadow.scss:
--------------------------------------------------------------------------------
1 | @mixin box-shadow($shadow...) {
2 | @if $enable-shadows {
3 | $result: ();
4 |
5 | @each $value in $shadow {
6 | @if $value != null {
7 | $result: append($result, $value, "comma");
8 | }
9 | @if $value == none and length($shadow) > 1 {
10 | @warn "The keyword 'none' must be used as a single argument.";
11 | }
12 | }
13 |
14 | @if (length($result) > 0) {
15 | box-shadow: $result;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_clearfix.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start clearfix
2 | @mixin clearfix() {
3 | &::after {
4 | display: block;
5 | clear: both;
6 | content: "";
7 | }
8 | }
9 | // scss-docs-end clearfix
10 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_color-scheme.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start mixin-color-scheme
2 | @mixin color-scheme($name) {
3 | @media (prefers-color-scheme: #{$name}) {
4 | @content;
5 | }
6 | }
7 | // scss-docs-end mixin-color-scheme
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_container.scss:
--------------------------------------------------------------------------------
1 | // Container mixins
2 |
3 | @mixin make-container($gutter: $container-padding-x) {
4 | --#{$prefix}gutter-x: #{$gutter};
5 | --#{$prefix}gutter-y: 0;
6 | width: 100%;
7 | padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
8 | padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list
9 | margin-right: auto;
10 | margin-left: auto;
11 | }
12 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_image.scss:
--------------------------------------------------------------------------------
1 | // Image Mixins
2 | // - Responsive image
3 | // - Retina image
4 |
5 |
6 | // Responsive image
7 | //
8 | // Keep images from scaling beyond the width of their parents.
9 |
10 | @mixin img-fluid {
11 | // Part 1: Set a maximum relative to the parent
12 | max-width: 100%;
13 | // Part 2: Override the height to auto, otherwise images will be stretched
14 | // when setting a width and height attribute on the img element.
15 | height: auto;
16 | }
17 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_lists.scss:
--------------------------------------------------------------------------------
1 | // Lists
2 |
3 | // Unstyled keeps list items block level, just removes default browser padding and list-style
4 | @mixin list-unstyled {
5 | padding-left: 0;
6 | list-style: none;
7 | }
8 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_pagination.scss:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | // scss-docs-start pagination-mixin
4 | @mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
5 | --#{$prefix}pagination-padding-x: #{$padding-x};
6 | --#{$prefix}pagination-padding-y: #{$padding-y};
7 | @include rfs($font-size, --#{$prefix}pagination-font-size);
8 | --#{$prefix}pagination-border-radius: #{$border-radius};
9 | }
10 | // scss-docs-end pagination-mixin
11 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_resize.scss:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | @mixin resizable($direction) {
4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
5 | resize: $direction; // Options: horizontal, vertical, both
6 | }
7 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bs5/scss/mixins/_text-truncate.scss:
--------------------------------------------------------------------------------
1 | // Text truncate
2 | // Requires inline-block or block for proper styling
3 |
4 | @mixin text-truncate() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/bslib/lib/bsw5/dist/united/_bootswatch.scss:
--------------------------------------------------------------------------------
1 | // United 5.3.1
2 | // Bootswatch
3 |
4 |
5 | // Variables
6 |
7 | $web-font-path: "https://fonts.googleapis.com/css2?family=Ubuntu:wght@400;700&display=swap" !default;
8 | @if $web-font-path {
9 | @import url($web-font-path);
10 | }
11 |
12 | // Indicators
13 |
14 | .badge {
15 | &.bg-light {
16 | color: $body-color;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/bootstrap/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/bootstrap/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/bootstrap/_03_mixins.scss:
--------------------------------------------------------------------------------
1 | $enable-cssgrid: true !default;
2 | @import "../../bslib/bs3compat/_defaults.scss";
3 | @import "../../bslib/lib/bs5/scss/_variables.scss";
4 | @import "../../bslib/lib/bs5/scss/_variables-dark.scss";
5 | $bootstrap-version: 5;
6 | $bslib-preset-name: null !default;
7 | $bslib-preset-type: null !default;
8 | @import "../../bslib/lib/bs5/scss/_maps.scss";
9 | @import "../../bslib/lib/bs5/scss/_mixins.scss";
10 | @import "../../bslib/bs3compat/_declarations.scss";
11 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cerulean/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cerulean/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cosmo/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cosmo/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cyborg/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/cyborg/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/darkly/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/darkly/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/flatly/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/flatly/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/journal/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/journal/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/litera/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/litera/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/lumen/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/lumen/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/lux/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/lux/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/materia/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/materia/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/minty/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/minty/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/morph/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/morph/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/pulse/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/pulse/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/quartz/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/quartz/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/sandstone/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/sandstone/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/shiny/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/shiny/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/simplex/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/simplex/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/sketchy/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/sketchy/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/slate/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/slate/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/solar/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/solar/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/spacelab/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/spacelab/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/superhero/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/superhero/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/united/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/united/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/vapor/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/vapor/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/yeti/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/yeti/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/zephyr/_01_functions.scss:
--------------------------------------------------------------------------------
1 | @import "../../bslib/lib/bs5/scss/_functions.scss";
2 | @import "../../bslib/bslib-scss/functions.scss";
3 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/preset/zephyr/_02_defaults.scss:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/shiny/www/shared/ionrangeslider/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin no-click() {
2 | -webkit-user-select: none;
3 | -khtml-user-select: none;
4 | -moz-user-select: none;
5 | -ms-user-select: none;
6 | user-select: none;
7 | }
8 |
9 | @mixin pos-r() {
10 | position: relative;
11 | display: block;
12 | }
13 |
14 | @mixin pos-a() {
15 | position: absolute;
16 | display: block;
17 | }
18 |
--------------------------------------------------------------------------------
/shiny/www/shared/sass/shiny/www/shared/selectize/scss/plugins/optgroup_columns.scss:
--------------------------------------------------------------------------------
1 | .#{$selectize}-dropdown.plugin-optgroup_columns {
2 | .#{$selectize}-dropdown-content {
3 | display: flex;
4 | }
5 |
6 | .optgroup {
7 | border-right: 1px solid #f2f2f2;
8 | border-top: 0 none;
9 | flex-grow: 1;
10 | flex-basis: 0;
11 | min-width: 0;
12 | }
13 | .optgroup:last-child {
14 | border-right: 0 none;
15 | }
16 | .optgroup:before {
17 | display: none;
18 | }
19 | .optgroup-header {
20 | border-top: 0 none;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/shiny/www/shared/selectize/scss/plugins/optgroup_columns.scss:
--------------------------------------------------------------------------------
1 | .#{$selectize}-dropdown.plugin-optgroup_columns {
2 | .#{$selectize}-dropdown-content {
3 | display: flex;
4 | }
5 |
6 | .optgroup {
7 | border-right: 1px solid #f2f2f2;
8 | border-top: 0 none;
9 | flex-grow: 1;
10 | flex-basis: 0;
11 | min-width: 0;
12 | }
13 | .optgroup:last-child {
14 | border-right: 0 none;
15 | }
16 | .optgroup:before {
17 | display: none;
18 | }
19 | .optgroup-header {
20 | border-top: 0 none;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/shiny/www/shared/shiny-testmode.js:
--------------------------------------------------------------------------------
1 | /*! shiny 1.10.0.9001 | (c) 2012-2025 Posit Software, PBC. | License: GPL-3 | file LICENSE */
2 | "use strict";(()=>{var t=eval;window.addEventListener("message",function(a){let e=a.data;e.code&&t(e.code)});})();
3 | //# sourceMappingURL=shiny-testmode.js.map
4 |
--------------------------------------------------------------------------------
/tests/__init__.py:
--------------------------------------------------------------------------------
1 | """Testing package for shiny. (Used by pytest)"""
2 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/__init__.py:
--------------------------------------------------------------------------------
1 | """Deploy package used to test deploys"""
2 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-accordion/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/deploys/express-accordion/__init__.py
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-accordion/app.py:
--------------------------------------------------------------------------------
1 | from shiny import render
2 | from shiny.express import input, ui
3 |
4 | with ui.accordion(id="express_accordion", open=["Panel 1", "Panel 2"]):
5 | with ui.accordion_panel("Panel 1"):
6 | ui.input_slider("n", "N", 1, 100, 50)
7 |
8 | with ui.accordion_panel("Panel 2"):
9 |
10 | @render.text
11 | def txt():
12 | return f"n = {input.n()}"
13 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-accordion/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-accordion/rsconnect-python/express-accordion.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/shiny_express_accordion/",
5 | "app_id": 10800240,
6 | "app_guid": null,
7 | "title": "shiny_express_accordion",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-dataframe/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 | pandas
3 |
4 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-dataframe/rsconnect-python/express-dataframe.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/shiny-express-dataframe/",
5 | "app_id": 10800260,
6 | "app_guid": null,
7 | "title": "shiny-express-dataframe",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-folium/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 | folium
3 |
4 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-folium/rsconnect-python/express-folium.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/shiny-express-folium/",
5 | "app_id": 10827011,
6 | "app_guid": null,
7 | "title": "shiny-express-folium",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_default/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
3 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_default/rsconnect-python/express-page_default.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/shiny_express_page_default/",
5 | "app_id": 10800233,
6 | "app_guid": null,
7 | "title": "shiny-express-folium",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fillable/app.py:
--------------------------------------------------------------------------------
1 | from shiny import render
2 | from shiny.express import input, ui
3 |
4 | ui.page_opts(fillable=True)
5 |
6 | with ui.card(id="card"):
7 | ui.input_slider("a", "A", 1, 100, 50)
8 |
9 | @render.code
10 | def txt():
11 | return input.a()
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fillable/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fillable/rsconnect-python/express-page_fillable.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/express_page_fillable/",
5 | "app_id": 10800242,
6 | "app_guid": null,
7 | "title": "express_page_fillable",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fluid/app.py:
--------------------------------------------------------------------------------
1 | from shiny import render
2 | from shiny.express import input, ui
3 |
4 | ui.page_opts(full_width=True)
5 |
6 | with ui.card(id="card"):
7 | ui.input_slider("a", "A", 1, 100, 50)
8 |
9 | @render.code
10 | def txt():
11 | return input.a()
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fluid/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
3 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_fluid/rsconnect-python/express-page_fluid.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/express_page_fluid/",
5 | "app_id": 10800235,
6 | "app_guid": null,
7 | "title": "express_page_fluid",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_sidebar/app.py:
--------------------------------------------------------------------------------
1 | from shiny import render
2 | from shiny.express import input, ui
3 |
4 | ui.page_opts(title="PageTitle")
5 |
6 | with ui.sidebar(id="sidebar", title="SidebarTitle"):
7 | "Sidebar Content"
8 |
9 | with ui.card(id="card"):
10 | ui.input_slider("a", "A", 1, 100, 50)
11 |
12 | @render.code
13 | def txt():
14 | return input.a()
15 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_sidebar/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
3 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/express-page_sidebar/rsconnect-python/express-page_sidebar.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/express_page_sidebar/",
5 | "app_id": 10800234,
6 | "app_guid": null,
7 | "title": "express_page_sidebar",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/plotly/app_requirements.txt:
--------------------------------------------------------------------------------
1 | pandas
2 | plotly
3 | anywidget
4 | htmltools
5 | git+https://github.com/posit-dev/py-shinywidgets.git#egg=shinywidgets
6 |
7 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/plotly/rsconnect-python/plotly.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/example_deploy_app_a1/",
5 | "app_id": 10800241,
6 | "app_guid": null,
7 | "title": "example_deploy_app_a1",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/shiny-client-console-error/app.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive, render
2 | from shiny.express import input, ui
3 |
4 | ui.input_action_button("same_id", "Action")
5 | ui.input_action_button("same_id", "Action")
6 |
7 |
8 | @render.text()
9 | @reactive.event(input.same_id)
10 | def counter():
11 | return f"{input.same_id()}"
12 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/shiny-client-console-error/app_requirements.txt:
--------------------------------------------------------------------------------
1 | htmltools
2 |
3 |
--------------------------------------------------------------------------------
/tests/playwright/deploys/shiny-client-console-error/rsconnect-python/shiny-client-console-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "https://api.shinyapps.io": {
3 | "server_url": "https://api.shinyapps.io",
4 | "app_url": "https://testing-apps.shinyapps.io/shiny_client_console_error/",
5 | "app_id": 11634266,
6 | "app_guid": null,
7 | "title": "shiny_client_console_error",
8 | "app_mode": "python-shiny",
9 | "app_store_version": 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/playwright/examples/test_api_examples.py:
--------------------------------------------------------------------------------
1 | import pytest
2 | from example_apps import get_apps, reruns, reruns_delay, validate_example
3 | from playwright.sync_api import Page
4 |
5 |
6 | @pytest.mark.flaky(reruns=reruns, reruns_delay=reruns_delay)
7 | @pytest.mark.parametrize("ex_app_path", get_apps("shiny/api-examples"))
8 | def test_api_examples(page: Page, ex_app_path: str) -> None:
9 | validate_example(page, ex_app_path)
10 |
--------------------------------------------------------------------------------
/tests/playwright/examples/test_cpuinfo.py:
--------------------------------------------------------------------------------
1 | # pyright: reportUnknownMemberType=false
2 |
3 | import re
4 |
5 | from conftest import create_example_fixture
6 | from playwright.sync_api import Page, expect
7 |
8 | from shiny.run import ShinyAppProc
9 |
10 | cpuinfo_app = create_example_fixture("cpuinfo")
11 |
12 |
13 | def test_cpuinfo(page: Page, cpuinfo_app: ShinyAppProc):
14 | page.goto(cpuinfo_app.url)
15 | plot = page.locator("#plot")
16 | expect(plot).to_have_class(re.compile(r"\bshiny-bound-output\b"))
17 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/bookmark/dir/.gitignore:
--------------------------------------------------------------------------------
1 | bookmarks-*/
2 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0666-sidebar/colors.py:
--------------------------------------------------------------------------------
1 | # Must use resolved rgb colors
2 |
3 | bg_color: str = "rgb(0, 100, 0)" # `darkgreen`
4 | fg_color: str = "rgb(254, 254, 254)" # ~`white` - 1
5 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Adelie_sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Adelie_sm.png
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Chinstrap_sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Chinstrap_sm.png
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Gentoo_sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/Gentoo_sm.png
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0696-resolve-id/imgs/palmerpenguins_sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/bugs/0696-resolve-id/imgs/palmerpenguins_sm.png
--------------------------------------------------------------------------------
/tests/playwright/shiny/bugs/0696-resolve-id/test_file.txt:
--------------------------------------------------------------------------------
1 | test file content43
2 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/chat/append_user_msg/app.py:
--------------------------------------------------------------------------------
1 | from shiny import reactive
2 | from shiny.express import render, ui
3 |
4 | chat = ui.Chat(id="chat")
5 | chat.ui()
6 |
7 |
8 | @reactive.effect
9 | async def _():
10 | await chat.append_message({"content": "A user message", "role": "user"})
11 |
12 |
13 | "chat.messages():"
14 |
15 |
16 | @render.code
17 | def message_state():
18 | return str(chat.messages())
19 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/chat/dynamic_ui/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import render, ui
2 |
3 | chat = ui.Chat(id="chat")
4 |
5 |
6 | @render.ui
7 | def chat_output():
8 | return chat.ui(messages=["A starting message"])
9 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/chat/errors/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import render, ui
2 |
3 | # Set some Shiny page options
4 | ui.page_opts(title="Hello Chat")
5 |
6 |
7 | chat = ui.Chat(id="chat")
8 | chat.ui()
9 |
10 |
11 | @chat.on_user_submit
12 | async def _():
13 | raise Exception("boom!")
14 |
15 |
16 | "Message state:"
17 |
18 |
19 | @render.code
20 | def message_state():
21 | return str(chat.messages())
22 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/chat/icon/img/grace-hopper.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/components/chat/icon/img/grace-hopper.jpg
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/chat/icon/img/shiny.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/components/chat/icon/img/shiny.png
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/default_page_navbar/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(
4 | id="default_page_navbar",
5 | title="Default Page Navbar",
6 | window_title="Page NavBar title",
7 | lang="en",
8 | fillable_mobile=True,
9 | fillable=True,
10 | )
11 |
12 | with ui.nav_panel("Data"):
13 | "This page could be used to pick a dataset."
14 |
15 | with ui.nav_panel("View"):
16 | "This page could be used to view the dataset."
17 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_fillable/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(
4 | id="page_navbar_fillable",
5 | fillable=True,
6 | gap="300px",
7 | )
8 |
9 | with ui.nav_panel("Data"):
10 | "This page could be used to pick a dataset."
11 |
12 | with ui.nav_panel("View"):
13 | "This page could be used to view the dataset."
14 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_fixed_bottom_inverse_bg/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(
4 | id="page_fixed_bottom_inverse_bg",
5 | position="fixed-bottom",
6 | bg="dodgerBlue",
7 | inverse=True,
8 | )
9 |
10 | with ui.nav_panel("Data"):
11 | "This page could be used to pick a dataset."
12 |
13 | with ui.nav_panel("View"):
14 | "This page could be used to view the dataset."
15 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_header_footer_fixed_top/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(
4 | id="page_navbar_header_footer_fixed_top",
5 | header=ui.tags.div("Header", id="page_navbar_header"),
6 | footer=ui.tags.div("Footer", id="page_navbar_footer"),
7 | position="fixed-top",
8 | fluid=False,
9 | )
10 |
11 | with ui.nav_panel("Data"):
12 | "This page could be used to pick a dataset."
13 |
14 | with ui.nav_panel("View"):
15 | "This page could be used to view the dataset."
16 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_selected/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 | ui.page_opts(id="page_navbar_selected", selected="View", fluid=False)
4 |
5 | with ui.nav_panel("Data"):
6 | "This page could be used to pick a dataset."
7 |
8 | with ui.nav_panel("View"):
9 | "This page could be used to view the dataset."
10 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/components/nav/page_navbar_kitchensink/page_navbar_sidebar/app.py:
--------------------------------------------------------------------------------
1 | from shiny.express import ui
2 |
3 |
4 | def navset_sidebar():
5 | from shiny import ui as core_ui
6 |
7 | return core_ui.sidebar(core_ui.markdown("Sidebar content"))
8 |
9 |
10 | ui.page_opts(id="page_navbar_sidebar", sidebar=navset_sidebar())
11 |
12 | with ui.nav_panel("Data"):
13 | "This page could be used to pick a dataset."
14 |
15 | with ui.nav_panel("View"):
16 | "This page could be used to view the dataset."
17 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/default-render-ui/app.py:
--------------------------------------------------------------------------------
1 | from shiny import App, Inputs, Outputs, Session, render, ui
2 |
3 | app_ui = ui.page_fluid(ui.output_ui("dynamic_ui"))
4 |
5 |
6 | def server(input: Inputs, output: Outputs, session: Session):
7 | @render.ui
8 | def dynamic_ui():
9 | @render.text
10 | def txt():
11 | return "Hello"
12 |
13 | return txt
14 |
15 |
16 | app = App(app_ui, server)
17 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/default-render-ui/test_default_render_ui.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import Page, expect
2 |
3 | from shiny.run import ShinyAppProc
4 |
5 |
6 | def test_implicit_register(page: Page, local_app: ShinyAppProc) -> None:
7 | page.goto(local_app.url)
8 |
9 | expect(page.locator("#txt")).to_have_text("Hello")
10 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/implicit-register/test_implicit_register.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import Page, expect
2 |
3 | from shiny.run import ShinyAppProc
4 |
5 |
6 | def test_implicit_register(page: Page, local_app: ShinyAppProc) -> None:
7 | page.goto(local_app.url)
8 |
9 | expect(page.locator("#out2")).to_have_text("One")
10 | expect(page.locator("#out3")).to_have_text("Two")
11 | expect(page.locator("#out4")).to_have_text("Two")
12 | expect(page.locator("#out1")).to_be_empty()
13 |
--------------------------------------------------------------------------------
/tests/playwright/shiny/plot-sizing/bike.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/shiny/plot-sizing/bike.jpg
--------------------------------------------------------------------------------
/tests/playwright/shiny/shiny-express/hold/test_hold.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import Page, expect
2 |
3 | from shiny.playwright import controller
4 | from shiny.run import ShinyAppProc
5 |
6 |
7 | def test_express_page_fluid(page: Page, local_app: ShinyAppProc) -> None:
8 | page.goto(local_app.url)
9 |
10 | txt = controller.OutputTextVerbatim(page, "visible")
11 | txt.expect_value("40")
12 |
13 | expect(page.locator("#visible")).to_have_count(1)
14 | expect(page.locator("#hidden")).to_have_count(0)
15 |
--------------------------------------------------------------------------------
/tests/playwright/utils/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-shiny/2b4d1a0155567b06e300286b6cce33f752f232b2/tests/playwright/utils/__init__.py
--------------------------------------------------------------------------------
/tests/pytest/__init__.py:
--------------------------------------------------------------------------------
1 | """Pytest test module for shiny. (Used by pytest)"""
2 |
--------------------------------------------------------------------------------
/tests/pytest/_utils.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | import sys
4 | from typing import Any, Callable, TypeVar
5 |
6 | import pytest
7 |
8 | CallableT = TypeVar("CallableT", bound=Callable[..., Any])
9 |
10 |
11 | def skip_on_windows(fn: CallableT) -> CallableT:
12 | fn = pytest.mark.skipif(
13 | sys.platform.startswith("win"),
14 | reason="Does not run on windows",
15 | )(fn)
16 |
17 | return fn
18 |
--------------------------------------------------------------------------------