Source code for panel.theme.bootstrap
from __future__ import annotations
import pathlib
import param
from ..io.resources import CDN_DIST, CSS_URLS, JS_URLS
from ..layout import Accordion, Card
from ..viewable import Viewable
from ..widgets import Number, Tabulator
from .base import (
DarkTheme, DefaultTheme, Design, Inherit,
)
[docs]class BootstrapDefaultTheme(DefaultTheme):
"""
The BootstrapDefaultTheme is a light theme.
"""
css = param.Filename(default=pathlib.Path(__file__).parent / 'css' / 'bootstrap_default.css')
_bs_theme = 'light'
[docs]class BootstrapDarkTheme(DarkTheme):
"""
The BootstrapDarkTheme is a Dark Theme in the style of Bootstrap
"""
css = param.Filename(default=pathlib.Path(__file__).parent / 'css' / 'bootstrap_dark.css')
_bs_theme = 'dark'
modifiers = {
Number: {
'default_color': 'white'
}
}
[docs]class Bootstrap(Design):
modifiers = {
Accordion: {
'active_header_background': 'var(--bs-surface-bg)'
},
Card: {
'children': {'margin': (10, 10)},
'button_css_classes': ['card-button'],
'margin': (10, 5)
},
Tabulator: {
'theme': 'bootstrap5',
'theme_classes': ['table-sm']
},
Viewable: {
'stylesheets': [Inherit, f'{CDN_DIST}bundled/theme/bootstrap.css']
}
}
_themes = {
'dark': BootstrapDarkTheme,
'default': BootstrapDefaultTheme,
}
_resources = {
'css': {
'bootstrap': CSS_URLS['bootstrap5']
},
'js': {
'bootstrap': JS_URLS['bootstrap5']
}
}