From e5deb200012695b6cc7ec31072980d093fd4ae4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Fiedosiuk?= Date: Mon, 28 Feb 2022 17:34:49 +0100 Subject: [PATCH] Add bootstrap theming. --- .../console/static/console/css/console.css | 19 +- physionet-django/physionet/settings/base.py | 11 + .../static/bootstrap/scss/_alert.scss | 51 + .../static/bootstrap/scss/_badge.scss | 47 + .../static/bootstrap/scss/_breadcrumb.scss | 41 + .../static/bootstrap/scss/_button-group.scss | 172 ++++ .../static/bootstrap/scss/_buttons.scss | 143 +++ .../static/bootstrap/scss/_card.scss | 301 ++++++ .../static/bootstrap/scss/_carousel.scss | 236 +++++ .../static/bootstrap/scss/_close.scss | 35 + .../static/bootstrap/scss/_code.scss | 48 + .../static/bootstrap/scss/_custom-forms.scss | 433 ++++++++ .../static/bootstrap/scss/_dropdown.scss | 166 +++ .../static/bootstrap/scss/_forms.scss | 333 ++++++ .../static/bootstrap/scss/_functions.scss | 86 ++ .../static/bootstrap/scss/_grid.scss | 52 + .../static/bootstrap/scss/_images.scss | 42 + .../static/bootstrap/scss/_input-group.scss | 173 ++++ .../static/bootstrap/scss/_jumbotron.scss | 16 + .../static/bootstrap/scss/_list-group.scss | 115 +++ .../static/bootstrap/scss/_media.scss | 8 + .../static/bootstrap/scss/_mixins.scss | 41 + .../static/bootstrap/scss/_modal.scss | 180 ++++ .../static/bootstrap/scss/_nav.scss | 118 +++ .../static/bootstrap/scss/_navbar.scss | 299 ++++++ .../static/bootstrap/scss/_pagination.scss | 78 ++ .../static/bootstrap/scss/_popover.scss | 183 ++++ .../static/bootstrap/scss/_print.scss | 141 +++ .../static/bootstrap/scss/_progress.scss | 34 + .../static/bootstrap/scss/_reboot.scss | 483 +++++++++ .../static/bootstrap/scss/_root.scss | 19 + .../static/bootstrap/scss/_tables.scss | 187 ++++ .../static/bootstrap/scss/_tooltip.scss | 115 +++ .../static/bootstrap/scss/_transitions.scss | 22 + .../static/bootstrap/scss/_type.scss | 125 +++ .../static/bootstrap/scss/_utilities.scss | 15 + .../static/bootstrap/scss/_variables.scss | 952 ++++++++++++++++++ .../static/bootstrap/scss/bootstrap-grid.scss | 32 + .../bootstrap/scss/bootstrap-reboot.scss | 12 + .../static/bootstrap/scss/bootstrap.scss | 42 + .../static/bootstrap/scss/mixins/_alert.scss | 13 + .../scss/mixins/_background-variant.scss | 21 + .../static/bootstrap/scss/mixins/_badge.scss | 12 + .../bootstrap/scss/mixins/_border-radius.scss | 35 + .../bootstrap/scss/mixins/_box-shadow.scss | 5 + .../bootstrap/scss/mixins/_breakpoints.scss | 123 +++ .../bootstrap/scss/mixins/_buttons.scss | 109 ++ .../static/bootstrap/scss/mixins/_caret.scss | 66 ++ .../bootstrap/scss/mixins/_clearfix.scss | 7 + .../static/bootstrap/scss/mixins/_float.scss | 11 + .../static/bootstrap/scss/mixins/_forms.scss | 147 +++ .../bootstrap/scss/mixins/_gradients.scss | 45 + .../scss/mixins/_grid-framework.scss | 67 ++ .../static/bootstrap/scss/mixins/_grid.scss | 52 + .../static/bootstrap/scss/mixins/_hover.scss | 37 + .../static/bootstrap/scss/mixins/_image.scss | 36 + .../bootstrap/scss/mixins/_list-group.scss | 21 + .../static/bootstrap/scss/mixins/_lists.scss | 7 + .../bootstrap/scss/mixins/_nav-divider.scss | 10 + .../bootstrap/scss/mixins/_pagination.scss | 22 + .../bootstrap/scss/mixins/_reset-text.scss | 17 + .../static/bootstrap/scss/mixins/_resize.scss | 6 + .../bootstrap/scss/mixins/_screen-reader.scss | 33 + .../static/bootstrap/scss/mixins/_size.scss | 6 + .../bootstrap/scss/mixins/_table-row.scss | 30 + .../bootstrap/scss/mixins/_text-emphasis.scss | 14 + .../bootstrap/scss/mixins/_text-hide.scss | 13 + .../bootstrap/scss/mixins/_text-truncate.scss | 8 + .../bootstrap/scss/mixins/_transition.scss | 13 + .../bootstrap/scss/mixins/_visibility.scss | 7 + .../bootstrap/scss/utilities/_align.scss | 8 + .../bootstrap/scss/utilities/_background.scss | 19 + .../bootstrap/scss/utilities/_borders.scss | 59 ++ .../bootstrap/scss/utilities/_clearfix.scss | 3 + .../bootstrap/scss/utilities/_display.scss | 38 + .../bootstrap/scss/utilities/_embed.scss | 52 + .../bootstrap/scss/utilities/_flex.scss | 51 + .../bootstrap/scss/utilities/_float.scss | 9 + .../bootstrap/scss/utilities/_position.scss | 37 + .../scss/utilities/_screenreaders.scss | 11 + .../bootstrap/scss/utilities/_shadows.scss | 6 + .../bootstrap/scss/utilities/_sizing.scss | 12 + .../bootstrap/scss/utilities/_spacing.scss | 51 + .../bootstrap/scss/utilities/_text.scss | 58 ++ .../bootstrap/scss/utilities/_visibility.scss | 11 + physionet-django/static/bootstrap/theme.scss | 7 + physionet-django/templates/base_css.html | 7 +- poetry.lock | 140 ++- pyproject.toml | 2 + 89 files changed, 7155 insertions(+), 25 deletions(-) create mode 100644 physionet-django/static/bootstrap/scss/_alert.scss create mode 100644 physionet-django/static/bootstrap/scss/_badge.scss create mode 100644 physionet-django/static/bootstrap/scss/_breadcrumb.scss create mode 100644 physionet-django/static/bootstrap/scss/_button-group.scss create mode 100644 physionet-django/static/bootstrap/scss/_buttons.scss create mode 100644 physionet-django/static/bootstrap/scss/_card.scss create mode 100644 physionet-django/static/bootstrap/scss/_carousel.scss create mode 100644 physionet-django/static/bootstrap/scss/_close.scss create mode 100644 physionet-django/static/bootstrap/scss/_code.scss create mode 100644 physionet-django/static/bootstrap/scss/_custom-forms.scss create mode 100644 physionet-django/static/bootstrap/scss/_dropdown.scss create mode 100644 physionet-django/static/bootstrap/scss/_forms.scss create mode 100644 physionet-django/static/bootstrap/scss/_functions.scss create mode 100644 physionet-django/static/bootstrap/scss/_grid.scss create mode 100644 physionet-django/static/bootstrap/scss/_images.scss create mode 100644 physionet-django/static/bootstrap/scss/_input-group.scss create mode 100644 physionet-django/static/bootstrap/scss/_jumbotron.scss create mode 100644 physionet-django/static/bootstrap/scss/_list-group.scss create mode 100644 physionet-django/static/bootstrap/scss/_media.scss create mode 100644 physionet-django/static/bootstrap/scss/_mixins.scss create mode 100644 physionet-django/static/bootstrap/scss/_modal.scss create mode 100644 physionet-django/static/bootstrap/scss/_nav.scss create mode 100644 physionet-django/static/bootstrap/scss/_navbar.scss create mode 100644 physionet-django/static/bootstrap/scss/_pagination.scss create mode 100644 physionet-django/static/bootstrap/scss/_popover.scss create mode 100644 physionet-django/static/bootstrap/scss/_print.scss create mode 100644 physionet-django/static/bootstrap/scss/_progress.scss create mode 100644 physionet-django/static/bootstrap/scss/_reboot.scss create mode 100644 physionet-django/static/bootstrap/scss/_root.scss create mode 100644 physionet-django/static/bootstrap/scss/_tables.scss create mode 100644 physionet-django/static/bootstrap/scss/_tooltip.scss create mode 100644 physionet-django/static/bootstrap/scss/_transitions.scss create mode 100644 physionet-django/static/bootstrap/scss/_type.scss create mode 100644 physionet-django/static/bootstrap/scss/_utilities.scss create mode 100644 physionet-django/static/bootstrap/scss/_variables.scss create mode 100644 physionet-django/static/bootstrap/scss/bootstrap-grid.scss create mode 100644 physionet-django/static/bootstrap/scss/bootstrap-reboot.scss create mode 100644 physionet-django/static/bootstrap/scss/bootstrap.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_alert.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_background-variant.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_badge.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_border-radius.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_box-shadow.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_breakpoints.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_buttons.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_caret.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_clearfix.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_float.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_forms.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_gradients.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_grid-framework.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_grid.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_hover.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_image.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_list-group.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_lists.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_nav-divider.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_pagination.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_reset-text.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_resize.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_screen-reader.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_size.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_table-row.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_text-emphasis.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_text-hide.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_text-truncate.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_transition.scss create mode 100644 physionet-django/static/bootstrap/scss/mixins/_visibility.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_align.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_background.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_borders.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_clearfix.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_display.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_embed.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_flex.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_float.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_position.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_screenreaders.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_shadows.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_sizing.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_spacing.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_text.scss create mode 100644 physionet-django/static/bootstrap/scss/utilities/_visibility.scss create mode 100644 physionet-django/static/bootstrap/theme.scss diff --git a/physionet-django/console/static/console/css/console.css b/physionet-django/console/static/console/css/console.css index 960a209996..15bfcf3c86 100644 --- a/physionet-django/console/static/console/css/console.css +++ b/physionet-django/console/static/console/css/console.css @@ -255,10 +255,6 @@ body.fixed-nav { } } -#mainNav.fixed-top.navbar-dark .sidenav-toggler { - background-color: #212529; -} - #mainNav.fixed-top.navbar-dark .sidenav-toggler a i { color: #adb5bd; } @@ -391,20 +387,7 @@ body.sidenav-toggled .navbar-sidenav-tooltip.show { }*/ @media (min-width: 1100px) { - #mainNav.navbar-dark .navbar-collapse .navbar-sidenav { - background: #343a40; - } - #mainNav.navbar-dark .navbar-collapse .navbar-sidenav li.active a { - color: white !important; - background-color: #495057; - } - #mainNav.navbar-dark .navbar-collapse .navbar-sidenav li.active a:focus, #mainNav.navbar-dark .navbar-collapse .navbar-sidenav li.active a:hover { - color: white; - } - #mainNav.navbar-dark .navbar-collapse .navbar-sidenav > .nav-item .sidenav-second-level, - #mainNav.navbar-dark .navbar-collapse .navbar-sidenav > .nav-item .sidenav-third-level { - background: #343a40; - } + } #mainNav.navbar-light .navbar-collapse .navbar-sidenav .nav-link-collapse:after { diff --git a/physionet-django/physionet/settings/base.py b/physionet-django/physionet/settings/base.py index 98d15c4b4f..a252e4e88e 100644 --- a/physionet-django/physionet/settings/base.py +++ b/physionet-django/physionet/settings/base.py @@ -54,6 +54,7 @@ 'search', 'lightwave', 'physionet', + 'compressor', ] MIDDLEWARE = [ @@ -509,3 +510,13 @@ class StorageTypes: ENABLE_FILE_DOWNLOADS_OPTION = config('ENABLE_FILE_DOWNLOADS_OPTION', cast=bool, default=False) COPY_FILES_TO_NEW_VERSION = config('COPY_FILES_TO_NEW_VERSION', cast=bool, default=True) + +COMPRESS_PRECOMPILERS = ( + ('text/x-scss', 'django_libsass.SassCompiler'), +) + +STATICFILES_FINDERS = [ + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'compressor.finders.CompressorFinder', +] \ No newline at end of file diff --git a/physionet-django/static/bootstrap/scss/_alert.scss b/physionet-django/static/bootstrap/scss/_alert.scss new file mode 100644 index 0000000000..dd43e2376a --- /dev/null +++ b/physionet-django/static/bootstrap/scss/_alert.scss @@ -0,0 +1,51 @@ +// +// Base styles +// + +.alert { + position: relative; + padding: $alert-padding-y $alert-padding-x; + margin-bottom: $alert-margin-bottom; + border: $alert-border-width solid transparent; + @include border-radius($alert-border-radius); +} + +// Headings for larger alerts +.alert-heading { + // Specified to prevent conflicts of changing $headings-color + color: inherit; +} + +// Provide class for links that match alerts +.alert-link { + font-weight: $alert-link-font-weight; +} + + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissible { + padding-right: ($close-font-size + $alert-padding-x * 2); + + // Adjust close link position + .close { + position: absolute; + top: 0; + right: 0; + padding: $alert-padding-y $alert-padding-x; + color: inherit; + } +} + + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +@each $color, $value in $theme-colors { + .alert-#{$color} { + @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); + } +} diff --git a/physionet-django/static/bootstrap/scss/_badge.scss b/physionet-django/static/bootstrap/scss/_badge.scss new file mode 100644 index 0000000000..b87a1b0049 --- /dev/null +++ b/physionet-django/static/bootstrap/scss/_badge.scss @@ -0,0 +1,47 @@ +// Base class +// +// Requires one of the contextual, color modifier classes for `color` and +// `background-color`. + +.badge { + display: inline-block; + padding: $badge-padding-y $badge-padding-x; + font-size: $badge-font-size; + font-weight: $badge-font-weight; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + @include border-radius($badge-border-radius); + + // Empty badges collapse automatically + &:empty { + display: none; + } +} + +// Quick fix for badges in buttons +.btn .badge { + position: relative; + top: -1px; +} + +// Pill badges +// +// Make them extra rounded with a modifier to replace v3's badges. + +.badge-pill { + padding-right: $badge-pill-padding-x; + padding-left: $badge-pill-padding-x; + @include border-radius($badge-pill-border-radius); +} + +// Colors +// +// Contextual variations (linked badges get darker on :hover). + +@each $color, $value in $theme-colors { + .badge-#{$color} { + @include badge-variant($value); + } +} diff --git a/physionet-django/static/bootstrap/scss/_breadcrumb.scss b/physionet-django/static/bootstrap/scss/_breadcrumb.scss new file mode 100644 index 0000000000..be30950690 --- /dev/null +++ b/physionet-django/static/bootstrap/scss/_breadcrumb.scss @@ -0,0 +1,41 @@ +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: $breadcrumb-padding-y $breadcrumb-padding-x; + margin-bottom: $breadcrumb-margin-bottom; + list-style: none; + background-color: $breadcrumb-bg; + @include border-radius($breadcrumb-border-radius); +} + +.breadcrumb-item { + // The separator between breadcrumbs (by default, a forward-slash: "/") + + .breadcrumb-item { + padding-left: $breadcrumb-item-padding; + + &::before { + display: inline-block; // Suppress underlining of the separator in modern browsers + padding-right: $breadcrumb-item-padding; + color: $breadcrumb-divider-color; + content: $breadcrumb-divider; + } + } + + // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built + // without `