From 27f84cc3371aaf519c1bb5c0cca9e728a9dd3967 Mon Sep 17 00:00:00 2001 From: Wicklow Date: Thu, 16 Feb 2023 12:30:30 +0100 Subject: Refactoring class helpers + add bootstrap mixins --- client/src/sass/class-helpers.scss | 292 --------------------- client/src/sass/class-helpers/_buttons.scss | 37 +++ client/src/sass/class-helpers/_common.scss | 123 +++++++++ .../class-helpers/_custom-bootstrap-helpers.scss | 36 +++ client/src/sass/class-helpers/_forms.scss | 55 ++++ client/src/sass/class-helpers/_menu.scss | 80 ++++++ client/src/sass/class-helpers/index.scss | 10 + client/src/sass/include/_bootstrap-mixins.scss | 5 + client/src/sass/include/_mixins.scss | 29 +- 9 files changed, 361 insertions(+), 306 deletions(-) delete mode 100644 client/src/sass/class-helpers.scss create mode 100644 client/src/sass/class-helpers/_buttons.scss create mode 100644 client/src/sass/class-helpers/_common.scss create mode 100644 client/src/sass/class-helpers/_custom-bootstrap-helpers.scss create mode 100644 client/src/sass/class-helpers/_forms.scss create mode 100644 client/src/sass/class-helpers/_menu.scss create mode 100644 client/src/sass/class-helpers/index.scss create mode 100644 client/src/sass/include/_bootstrap-mixins.scss (limited to 'client/src') diff --git a/client/src/sass/class-helpers.scss b/client/src/sass/class-helpers.scss deleted file mode 100644 index feb3a6de2..000000000 --- a/client/src/sass/class-helpers.scss +++ /dev/null @@ -1,292 +0,0 @@ -@use '_variables' as *; -@use '_mixins' as *; -@use '_badges' as *; -@use '_icons' as *; -@use '_fonts' as *; - -.link-orange { - color: pvar(--mainForegroundColor); - font-weight: $font-semibold; - border-bottom: 0.18em solid pvar(--mainColor); - display: inline-block; - line-height: 1.1; - - &:hover { - color: pvar(--mainForegroundColor); - opacity: 0.8; - } -} - -.underline-orange { - display: inline-block; - border-bottom: 0.19em solid pvar(--mainColor); -} - -// --------------------------------------------------------------------------- - -.peertube-button { - @include peertube-button; -} - -.peertube-button-big { - @include peertube-button-big; -} - -.peertube-button-link { - @include peertube-button-link; -} - -.peertube-button-big-link { - @include peertube-button-big-link; -} - -.orange-button { - @include orange-button; -} - -.orange-button-inverted { - @include orange-button-inverted; -} - -.grey-button { - @include grey-button; -} - -.tertiary-button { - @include tertiary-button; -} - -.peertube-radio-container { - @include peertube-radio-container; -} - -// --------------------------------------------------------------------------- - -.muted { - @include muted; -} - -// --------------------------------------------------------------------------- - -.pt-badge { - @include peertube-badge; -} - -// --------------------------------------------------------------------------- - -.form-group { - margin-bottom: 1rem; -} - -.input-error:not(:focus) { - &, - + .nav-preview, // Markdown textarea - + * + .tab-content { - border-color: $red !important; - } -} - -.input-group .input-error { - z-index: 3; -} - -.form-error, -.form-warning { - display: block; - margin-top: 5px; - font-size: 0.9em; -} - -.form-error { - color: $red; -} - -// Disable red error on input focus -.input-error:focus, -.input-group:focus-within { - + .form-error, - + * + .form-error, // Markdown textarea - + * + * + .form-error { - color: pvar(--mainForegroundColor); - } -} - -.form-group-description { - @include muted; - - font-size: 14px; - margin-top: 10px; -} - -label + .form-group-description { - margin-bottom: 10px; - margin-top: 0; -} - -// --------------------------------------------------------------------------- - - -.sub-menu-entry { - @include disable-default-a-behaviour; - @include margin-right(55px); - - opacity: 0.7; - color: pvar(--mainForegroundColor); - display: inline-block; - font-weight: $font-semibold; - border-bottom: 2px solid transparent; - white-space: nowrap; - font-size: 1rem; - - &.active { - border-bottom-color: pvar(--mainColor); - } - - &:hover, - &:active, - &:focus { - color: pvar(--mainForegroundColor); - } - - &.active, - &:hover, - &:active, - &:focus { - opacity: 1; - outline: 0 hidden !important; - } - - @media screen and (max-width: $mobile-view) { - @include margin-left(15px); - } -} - -.title-page-v2 { - font-weight: normal; - font-size: 15px; - padding: 35px 25px; -} - -.title-page { - @include margin-right(55px); - - margin-top: 30px; - margin-bottom: 25px; - - color: pvar(--mainForegroundColor); - display: inline-block; - font-weight: $font-semibold; - font-size: 1.25rem; - - a { - @include disable-default-a-behaviour; - - color: inherit; - - &:hover { - color: inherit; - opacity: 0.8; - } - } - - @media screen and (max-width: $mobile-view) { - @include margin-left(15px); - } -} - -.admin-sub-header { - display: flex; - align-items: center; - margin-bottom: 30px; - - @media screen and (max-width: $small-view) { - flex-direction: column; - } -} - -// --------------------------------------------------------------------------- - -.no-results { - height: 40vh; - max-height: 500px; - - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-weight: $font-semibold; -} - -// --------------------------------------------------------------------------- - -.chevron-down { - @include chevron-down-default; -} - -.chevron-up { - @include chevron-up-default; -} - -.chevron-right { - @include chevron-right-default; -} - -.chevron-left { - @include chevron-left-default; -} - -// --------------------------------------------------------------------------- - -.callout { - padding: 1.25rem; - border: 1px solid #eee; - border-radius: .25rem; - position: relative; - - > label { - position: relative; - top: -5px; - left: -10px; - color: #6c757d !important; - } - - &:not(.callout-light) { - border-left-width: .25rem; - } - - &.callout-orange { - border-color: pvar(--mainColorLightest); - - &:not(.callout-light) { - border-left-color: pvar(--mainColor); - } - } -} - -// --------------------------------------------------------------------------- - -.anchor { - position: relative; - top: #{-($header-height + 20px)}; -} - -.offset-content { // if sub-menu fixed - .anchor { - top: #{-($header-height + $sub-menu-height + 20px)}; - } -} - -// --------------------------------------------------------------------------- - -.alert { - &.pt-alert-primary { - background-color: pvar(--mainColorVeryLight); - border: 2px solid pvar(--mainColorLightest); - } -} - -// --------------------------------------------------------------------------- - -.chip { - @include chip; -} diff --git a/client/src/sass/class-helpers/_buttons.scss b/client/src/sass/class-helpers/_buttons.scss new file mode 100644 index 000000000..61fdbbf70 --- /dev/null +++ b/client/src/sass/class-helpers/_buttons.scss @@ -0,0 +1,37 @@ +@use '_mixins' as *; + +.peertube-button { + @include peertube-button; +} + +.peertube-button-big { + @include peertube-button-big; +} + +.peertube-button-link { + @include peertube-button-link; +} + +.peertube-button-big-link { + @include peertube-button-big-link; +} + +.orange-button { + @include orange-button; +} + +.orange-button-inverted { + @include orange-button-inverted; +} + +.grey-button { + @include grey-button; +} + +.tertiary-button { + @include tertiary-button; +} + +.peertube-radio-container { + @include peertube-radio-container; +} \ No newline at end of file diff --git a/client/src/sass/class-helpers/_common.scss b/client/src/sass/class-helpers/_common.scss new file mode 100644 index 000000000..182c51c8f --- /dev/null +++ b/client/src/sass/class-helpers/_common.scss @@ -0,0 +1,123 @@ +@use '_variables' as *; +@use '_mixins' as *; +@use '_badges' as *; +@use '_icons' as *; + +.link-orange { + color: pvar(--mainForegroundColor); + font-weight: $font-semibold; + border-bottom: 0.18em solid pvar(--mainColor); + display: inline-block; + line-height: 1.1; + + &:hover { + color: pvar(--mainForegroundColor); + opacity: 0.8; + } +} + +.underline-orange { + display: inline-block; + border-bottom: 0.19em solid pvar(--mainColor); +} + +// --------------------------------------------------------------------------- + +.muted { + @include muted; +} + +// --------------------------------------------------------------------------- + +.pt-badge { + @include peertube-badge; +} + +// --------------------------------------------------------------------------- + +.no-results { + height: 40vh; + max-height: 500px; + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-weight: $font-semibold; +} + +// --------------------------------------------------------------------------- + +.chevron-down { + @include chevron-down-default; +} + +.chevron-up { + @include chevron-up-default; +} + +.chevron-right { + @include chevron-right-default; +} + +.chevron-left { + @include chevron-left-default; +} + +// --------------------------------------------------------------------------- + +.callout { + padding: 1.25rem; + border: 1px solid #eee; + border-radius: 0.25rem; + position: relative; + + >label { + position: relative; + top: -5px; + left: -10px; + color: #6c757d !important; + } + + &:not(.callout-light) { + border-left-width: 0.25rem; + } + + &.callout-orange { + border-color: pvar(--mainColorLightest); + + &:not(.callout-light) { + border-left-color: pvar(--mainColor); + } + } +} + +// --------------------------------------------------------------------------- + +.anchor { + position: relative; + top: #{- ($header-height + 20px)}; +} + +.offset-content { + + // if sub-menu fixed + .anchor { + top: #{- ($header-height + $sub-menu-height + 20px)}; + } +} + +// --------------------------------------------------------------------------- + +.alert { + &.pt-alert-primary { + background-color: pvar(--mainColorVeryLight); + border: 2px solid pvar(--mainColorLightest); + } +} + +// --------------------------------------------------------------------------- + +.chip { + @include chip; +} \ No newline at end of file diff --git a/client/src/sass/class-helpers/_custom-bootstrap-helpers.scss b/client/src/sass/class-helpers/_custom-bootstrap-helpers.scss new file mode 100644 index 000000000..78c4d30df --- /dev/null +++ b/client/src/sass/class-helpers/_custom-bootstrap-helpers.scss @@ -0,0 +1,36 @@ +@use '_variables' as *; +@use '_mixins' as *; + +// Font sizes + +.pt-fs-1 { + @include font-size(2.5rem); +} + +.pt-fs-2 { + @include font-size(2rem); +} + +.pt-fs-3 { + @include font-size(1.75rem); +} + +.pt-fs-4 { + @include font-size(1.5rem); +} + +.pt-fs-5 { + @include font-size(1.25rem); +} + +.pt-fs-5-5 { + @include font-size(1.125rem); +} + +.pt-fs-6 { + @include font-size(1rem); +} + +.pt-fs-7 { + @include font-size(0.875rem); +} \ No newline at end of file diff --git a/client/src/sass/class-helpers/_forms.scss b/client/src/sass/class-helpers/_forms.scss new file mode 100644 index 000000000..79495aeb4 --- /dev/null +++ b/client/src/sass/class-helpers/_forms.scss @@ -0,0 +1,55 @@ +@use '_variables' as *; +@use '_mixins' as *; + +.form-group { + margin-bottom: 1rem; +} + +.input-error:not(:focus) { + + &, + +.nav-preview, + // Markdown textarea + +*+.tab-content { + border-color: $red !important; + } +} + +.input-group .input-error { + z-index: 3; +} + +.form-error, +.form-warning { + display: block; + margin-top: 5px; + font-size: 0.9em; +} + +.form-error { + color: $red; +} + +// Disable red error on input focus +.input-error:focus, +.input-group:focus-within { + + +.form-error, + +*+.form-error, + // Markdown textarea + +*+*+.form-error { + color: pvar(--mainForegroundColor); + } +} + +.form-group-description { + @include muted; + + font-size: 14px; + margin-top: 10px; +} + +label+.form-group-description { + margin-bottom: 10px; + margin-top: 0; +} \ No newline at end of file diff --git a/client/src/sass/class-helpers/_menu.scss b/client/src/sass/class-helpers/_menu.scss new file mode 100644 index 000000000..1d17f9f2e --- /dev/null +++ b/client/src/sass/class-helpers/_menu.scss @@ -0,0 +1,80 @@ +@use '_variables' as *; +@use '_mixins' as *; + +.sub-menu-entry { + @include disable-default-a-behaviour; + @include margin-right(55px); + + opacity: 0.7; + color: pvar(--mainForegroundColor); + display: inline-block; + font-weight: $font-semibold; + border-bottom: 2px solid transparent; + white-space: nowrap; + font-size: 1rem; + + &.active { + border-bottom-color: pvar(--mainColor); + } + + &:hover, + &:active, + &:focus { + color: pvar(--mainForegroundColor); + } + + &.active, + &:hover, + &:active, + &:focus { + opacity: 1; + outline: 0 hidden !important; + } + + @media screen and (max-width: $mobile-view) { + @include margin-left(15px); + } +} + +.title-page-v2 { + font-weight: normal; + font-size: 15px; + padding: 35px 25px; +} + +.title-page { + @include margin-right(55px); + + margin-top: 30px; + margin-bottom: 25px; + + color: pvar(--mainForegroundColor); + display: inline-block; + font-weight: $font-semibold; + font-size: 1.25rem; + + a { + @include disable-default-a-behaviour; + + color: inherit; + + &:hover { + color: inherit; + opacity: 0.8; + } + } + + @media screen and (max-width: $mobile-view) { + @include margin-left(15px); + } +} + +.admin-sub-header { + display: flex; + align-items: center; + margin-bottom: 30px; + + @media screen and (max-width: $small-view) { + flex-direction: column; + } +} \ No newline at end of file diff --git a/client/src/sass/class-helpers/index.scss b/client/src/sass/class-helpers/index.scss new file mode 100644 index 000000000..ad5fd7838 --- /dev/null +++ b/client/src/sass/class-helpers/index.scss @@ -0,0 +1,10 @@ +@use '_variables' as *; +@use '_mixins' as *; +@use '_badges' as *; +@use '_icons' as *; +@use '_fonts' as *; +@use '_menu' as *; +@use '_buttons' as *; +@use '_forms' as *; +@use '_common' as *; +@use '_custom-bootstrap-helpers' as *; \ No newline at end of file diff --git a/client/src/sass/include/_bootstrap-mixins.scss b/client/src/sass/include/_bootstrap-mixins.scss new file mode 100644 index 000000000..2be16ebad --- /dev/null +++ b/client/src/sass/include/_bootstrap-mixins.scss @@ -0,0 +1,5 @@ +@import 'bootstrap/scss/functions'; +@import 'bootstrap/scss/variables'; +@import 'bootstrap/scss/maps'; +@import 'bootstrap/scss/mixins'; +@import 'bootstrap/scss/utilities'; \ No newline at end of file diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index 34af9e8c1..bd467a0ed 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -1,6 +1,9 @@ @use 'sass:math'; @use '_variables' as *; +@import '_bootstrap-mixins'; + + @mixin disable-default-a-behaviour { &:hover, &:focus, @@ -919,55 +922,53 @@ @mixin margin ($block-start, $inline-end, $block-end, $inline-start) { @include margin-left($inline-start); @include margin-right($inline-end); - - margin-top: $block-start; - margin-bottom: $block-end; + @include margin-top($block-start); + @include margin-bottom($block-end); } @mixin padding ($block-start, $inline-end, $block-end, $inline-start) { @include padding-left($inline-start); @include padding-right($inline-end); - - padding-top: $block-start; - padding-bottom: $block-end; + @include padding-top($block-start); + @include padding-bottom($block-end); } @mixin margin-left ($value) { @supports (margin-inline-start: $value) { - margin-inline-start: $value; + @include rfs($value, margin-inline-start); } @supports not (margin-inline-start: $value) { - margin-left: $value; + @include rfs($value, margin-left); } } @mixin margin-right ($value) { @supports (margin-inline-end: $value) { - margin-inline-end: $value; + @include rfs($value, margin-inline-end); } @supports not (margin-inline-end: $value) { - margin-right: $value; + @include rfs($value, margin-right); } } @mixin padding-left ($value) { @supports (padding-inline-start: $value) { - padding-inline-start: $value; + @include rfs($value, padding-inline-start); } @supports not (padding-inline-start: $value) { - padding-left: $value; + @include rfs($value, padding-left); } } @mixin padding-right ($value) { @supports (padding-inline-end: $value) { - padding-inline-end: $value; + @include rfs($value, padding-inline-end); } @supports not (padding-inline-end: $value) { - padding-right: $value; + @include rfs($value, padding-right); } } -- cgit v1.2.3