panel.ui.template package#
Module contents#
The Material UI page and its parts. Page replaces the classic templates.
- class panel.ui.template.AppBar(*objects, **params)[source]#
Bases:
MaterialComponentThe AppBar component renders a Material UI App Bar (top navigation bar). It supports a title, icon, color theming, and can contain arbitrary child components (buttons, menus, search fields, etc.) via the objects parameter.
The AppBar is typically placed at the top of an application as a header, either standalone or inside a Page component’s header slot.
- References:
- Example:
>>> pmui.AppBar(title='My App', icon='menu', color='primary')
Parameter Definitions
Parameters inherited from:
panel.viewable.Layoutable: align, aspect_ratio, css_classes, design, height, min_width, min_height, max_width, max_height, margin, styles, stylesheets, tags, width, width_policy, height_policy, sizing_mode, visiblepanel.custom.ReactComponent: use_shadow_dompanel_material_ui.base.MaterialComponent: loading, dark_theme, theme_config, sxcolor = Selector(default='primary', label='Color', names={}, objects=['default', 'inherit', 'primary', 'secondary', 'transparent'])The color of the app bar.
drawer_toggle = Child(allow_None=True, class_=<class 'panel.viewable.Viewable'>, label='Drawer toggle')enable_color_on_dark = Boolean(default=False, label='Enable color on dark')If True, the color prop is applied in dark mode too (by default, Material Design suppresses app bar color in dark mode).
icon = String(allow_None=True, label='Icon')Icon displayed at the start of the app bar. Typically a menu or navigation icon.
objects = Children(bounds=(0, None), default=[], item_type=<class 'panel.viewable.Viewable'>, label='Objects')Components rendered inside the app bar toolbar.
position = Selector(default='static', label='Position', names={}, objects=['fixed', 'absolute', 'sticky', 'static', 'relative'])The CSS position of the app bar.
title = String(allow_None=True, label='Title')Title text displayed in the app bar.
variant = Selector(default='dense', label='Variant', names={}, objects=['dense', 'regular'])The toolbar variant. ‘dense’ produces a compact bar.
- class panel.ui.template.BreakpointSwitcher(*, breakpoint, large, media_query, small, dark_theme, sx, theme_config, use_shadow_dom, loading, align, aspect_ratio, css_classes, design, height, height_policy, margin, max_height, max_width, min_height, min_width, sizing_mode, styles, stylesheets, tags, visible, width, width_policy, name)[source]#
Bases:
MaterialComponentThe BreakpointSwitcher component allows switching between two component implementations based on the declared breakpoint or media_query.
- References:
- Example:
>>> BreakpointSwitcher(breakpoint='sm', small=..., large=...)
Parameter Definitions
Parameters inherited from:
panel.viewable.Layoutable: align, aspect_ratio, css_classes, design, height, min_width, min_height, max_width, max_height, margin, styles, stylesheets, tags, width, width_policy, height_policy, sizing_mode, visiblepanel.custom.ReactComponent: use_shadow_dompanel_material_ui.base.MaterialComponent: loading, dark_theme, theme_config, sxcurrent = Parameter(allow_None=True, constant=True, label='Current', readonly=True)The current object.
breakpoint = Selector(default='md', label='Breakpoint', names={}, objects=['xs', 'sm', 'md', 'lg', 'xl'])Breakpoint at which switcher toggles between.
media_query = String(allow_None=True, label='Media query')Media query to use for the breakpoint (takes precedence over breakpoint).
small = Child(allow_None=True, class_=<class 'panel.viewable.Viewable'>, label='Small')Items rendered in the small breakpoint.
large = Child(allow_None=True, class_=<class 'panel.viewable.Viewable'>, label='Large')Items rendered in the large breakpoint.
- class panel.ui.template.Page(*, _custom_theme, app_bar_width, busy_indicator, config, contextbar, contextbar_open, contextbar_resizable, contextbar_variant, contextbar_width, favicon, header, logo, main, main_width, meta, sidebar, sidebar_open, sidebar_resizable, sidebar_variant, sidebar_width, site_url, template, theme_toggle, title, dark_theme, sx, theme_config, use_shadow_dom, loading, align, aspect_ratio, css_classes, design, height, height_policy, margin, max_height, max_width, min_height, min_width, sizing_mode, styles, stylesheets, tags, visible, width, width_policy, name)[source]#
Bases:
MaterialComponent,ResourceComponentThe Page component is the equivalent of a Template in Panel.
Unlike a Template the Page component is implemented entirely in Javascript, making it possible to dynamically update components.
- References:
- Example:
>>> Page(main=['# Content'], title='My App')
Methods
get_root([doc, comm, preprocess])Returns the root model and applies pre-processing hooks
resolve_resources([cdn, extras])Resolves the resources required for this component.
save(filename[, title, resources, template, ...])Saves Panel objects to file.
server_doc([doc, title, location])Returns a serveable bokeh Document with the panel attached
Parameter Definitions
Parameters inherited from:
panel.viewable.Layoutable: align, aspect_ratio, css_classes, design, height, min_width, min_height, max_width, max_height, margin, styles, stylesheets, tags, width, width_policy, height_policy, sizing_mode, visiblepanel.custom.ReactComponent: use_shadow_dompanel_material_ui.base.MaterialComponent: loading, dark_theme, theme_config, sxapp_bar_width = ClassSelector(allow_None=True, class_=(<class 'int'>, <class 'str'>, <class 'dict'>), label='App bar width')Maximum width of the app bar (header) content. When set, the toolbar content is clamped to this width and centered, aligning it with a clamped main area. Accepts a number (interpreted as pixels), a CSS length string (e.g. ‘70ch’, ‘60rem’, ‘90%’), or a dict mapping Material UI breakpoints to widths (e.g. {‘xs’: ‘100%’, ‘md’: 720, ‘lg’: 960}), where each value applies at that breakpoint and up. Defaults to None (full width); when unset it follows
main_widthso the header stays aligned with the main content.busy = Boolean(constant=True, default=False, label='Busy', readonly=True)Whether the page is busy.
busy_indicator = Selector(default='linear', label='Busy indicator', names={}, objects=['circular', 'linear', None])The type of busy indicator to show.
config = ClassSelector(class_=<class 'panel.config._base_config'>, constant=True, default=_base_config(css_files=[], js_files={}, js_modules={}, name='_base_config00117', raw_css=[]), label='Config')Configuration object declaring custom CSS and JS files to load specifically for this template.
contextbar = Children(bounds=(0, None), default=[], item_type=<class 'panel.viewable.Viewable'>, label='Contextbar')Items rendered in the contextbar.
contextbar_open = Boolean(default=False, label='Contextbar open')Whether the contextbar is open or closed.
contextbar_resizable = Boolean(default=False, label='Contextbar resizable')Whether the contextbar can be resized by dragging.
contextbar_variant = Selector(default='temporary', label='Contextbar variant', names={}, objects=['persistent', 'temporary', 'permanent', 'auto'])Whether the contextbar is persistent, a temporary drawer, a permanent drawer, or automatically switches between the two based on screen size.
contextbar_width = Integer(default=250, inclusive_bounds=(True, True), label='Contextbar width')Width of the contextbar
favicon = ClassSelector(allow_None=True, class_=(<class 'str'>, <class 'pathlib.Path'>), label='Favicon')The favicon of the page.
header = Children(bounds=(0, None), default=[], item_type=<class 'panel.viewable.Viewable'>, label='Header')Items rendered in the header.
main = Children(bounds=(0, None), default=[], item_type=<class 'panel.viewable.Viewable'>, label='Main')Items rendered in the main area.
main_width = ClassSelector(allow_None=True, class_=(<class 'int'>, <class 'str'>, <class 'dict'>), label='Main width')Maximum width of the main content area. When set, the main content is clamped to this width and centered to improve readability. Accepts a number (interpreted as pixels), a CSS length string (e.g. ‘70ch’, ‘60rem’, ‘90%’), or a dict mapping Material UI breakpoints to widths (e.g. {‘xs’: ‘100%’, ‘md’: 720, ‘lg’: 960}), where each value applies at that breakpoint and up. Defaults to None (full width).
meta = ClassSelector(allow_None=True, class_=<class 'panel_material_ui.template.base.Meta'>, label='Meta')Meta tags and other HTML head elements.
logo = ClassSelector(allow_None=True, class_=(<class 'str'>, <class 'pathlib.Path'>, <class 'dict'>), label='Logo')Logo to render in the header. Can be a string, a pathlib.Path, or a dictionary with breakpoints as keys, e.g. {‘sm’: ‘logo_mobile.png’, ‘md’: ‘logo.png’} or themes as keys, e.g. {‘dark’: ‘logo_dark.png’, ‘light’: ‘logo.png’}.
sidebar = Children(bounds=(0, None), default=[], item_type=<class 'panel.viewable.Viewable'>, label='Sidebar')Items rendered in the sidebar.
sidebar_open = Boolean(default=True, label='Sidebar open')Whether the sidebar is open or closed.
sidebar_resizable = Boolean(default=True, label='Sidebar resizable')Whether the sidebar can be resized by dragging.
sidebar_variant = Selector(default='auto', label='Sidebar variant', names={}, objects=['persistent', 'temporary', 'permanent', 'auto'])Whether the sidebar is persistent, a temporary drawer, a permanent drawer, or automatically switches between the two based on screen size.
sidebar_width = Integer(default=320, inclusive_bounds=(True, True), label='Sidebar width')Width of the sidebar
site_url = String(default='/', label='Site url')URL of the site and logo. Default is ‘/’.
template = ClassSelector(allow_None=True, class_=(<class 'str'>, <class 'pathlib.Path'>, <class 'jinja2.environment.Template'>), label='Template')Overrides the default jinja2 template. Template can be provided as a string, Path or jinja2.Template instance.
theme_toggle = Boolean(default=True, label='Theme toggle')Whether to show a theme toggle button.
title = String(default='', label='Title')Title of the application.
_custom_theme = List(bounds=(0, None), default=[], label=' custom theme')- get_root(doc: Document | None = None, comm: Comm | None = None, preprocess: bool = True) Model[source]#
Returns the root model and applies pre-processing hooks
- Parameters:
- doc: bokeh.Document
Bokeh document the bokeh model will be attached to.
- comm: pyviz_comms.Comm
Optional pyviz_comms when working in notebook
- preprocess: boolean (default=True)
Whether to run preprocessing hooks
- Returns:
- Returns the bokeh model corresponding to this panel object
- resolve_resources(cdn: bool | t.Literal['auto'] = 'auto', extras: dict[str, dict[str, str]] | None = None) ResourcesType[source]#
Resolves the resources required for this component.
- Parameters:
- cdn: bool | Literal[‘auto’]
Whether to load resources from CDN or local server. If set to ‘auto’ value will be automatically determine based on global settings.
- extras: dict[str, dict[str, str]] | None
Additional resources to add to the bundle. Valid resource types include js, js_modules and css.
- Returns:
- Dictionary containing JS and CSS resources.
- save(filename: str | PathLike | IO[Any], title: str | None = None, resources: Resources | None = None, template: str | Template | None = None, template_variables: dict[str, Any] | None = None, **kwargs) None[source]#
Saves Panel objects to file.
- Parameters:
- filename: str or file-like object
Filename to save the plot to
- title: string
Optional title for the plot
- resources: bokeh resources
One of the valid bokeh.resources (e.g. CDN or INLINE)
- template:
passed to underlying io.save
- template_variables:
passed to underlying io.save
- embed: bool
Whether the state space should be embedded in the saved file.
- max_states: int
The maximum number of states to embed
- max_opts: int
The maximum number of states for a single widget
- embed_json: boolean (default=True)
Whether to export the data to json files
- json_prefix: str (default=’’)
Prefix for the auto-generated json directory
- save_path: str (default=’./’)
The path to save json files to
- load_path: str (default=None)
The path or URL the json files will be loaded from.
- progress: boolean (default=True)
Whether to report progress
- embed_states: dict (default={})
A dictionary specifying the widget values to embed for each widget
- as_png: boolean (default=None)
To save as a .png. If None save_png will be true if filename is string and ends with png.
- server_doc(doc: Document | None = None, title: str | None = None, location: bool | LocationAreaBase | None = True) Document[source]#
Returns a serveable bokeh Document with the panel attached
- Parameters:
- docbokeh.Document (optional)
The bokeh Document to attach the panel to as a root, defaults to bokeh.io.curdoc()
- titlestr
A string title to give the Document
- locationboolean or panel.io.location.Location
Whether to create a Location component to observe and set the URL location.
- Returns:
- docbokeh.Document
The bokeh document the panel was attached to
- class panel.ui.template.ThemeToggle(*, color, theme, variant, attached, description, disabled, dark_theme, sx, theme_config, use_shadow_dom, loading, align, aspect_ratio, css_classes, design, height, height_policy, margin, max_height, max_width, min_height, min_width, sizing_mode, styles, stylesheets, tags, visible, width, width_policy, label, value, name)[source]#
Bases:
MaterialWidgetA toggle button to switch between light and dark themes.
Parameter Definitions
Parameters inherited from:
panel.viewable.Layoutable: align, aspect_ratio, css_classes, design, height, min_width, min_height, max_width, max_height, styles, stylesheets, tags, width_policy, height_policy, sizing_mode, visiblepanel.custom.ReactComponent: use_shadow_dompanel_material_ui.base.MaterialComponent: loading, dark_theme, theme_config, sxpanel_material_ui.widgets.base.MaterialWidget: label, margin, attached, description, disabledvalue = Boolean(allow_None=True, label='Value')Whether the theme toggle is on or off.
width = Integer(allow_None=True, allow_refs=True, bounds=(0, None), inclusive_bounds=(True, True), label='Width')The width of the theme toggle.
color = Selector(default='primary', label='Color', names={}, objects=['primary', 'secondary'])The color of the theme toggle.
theme = Selector(constant=True, label='Theme', names={}, objects=['dark', 'default'])The current theme.
variant = Selector(default='icon', label='Variant', names={}, objects=['icon', 'switch'])Whether to render just an icon or a toggle
- width = None#