aboutsummaryrefslogtreecommitdiff
path: root/templates/@theme-base
diff options
context:
space:
mode:
Diffstat (limited to 'templates/@theme-base')
-rw-r--r--templates/@theme-base/pm-styles/_pm-apps-dropdown.scss59
-rw-r--r--templates/@theme-base/pm-styles/_pm-aside.scss52
-rw-r--r--templates/@theme-base/pm-styles/_pm-badges.scss23
-rw-r--r--templates/@theme-base/pm-styles/_pm-buttons-mixins.scss35
-rw-r--r--templates/@theme-base/pm-styles/_pm-buttons.scss188
-rw-r--r--templates/@theme-base/pm-styles/_pm-choose-account.scss40
-rw-r--r--templates/@theme-base/pm-styles/_pm-circlebar.scss16
-rw-r--r--templates/@theme-base/pm-styles/_pm-color-selector.scss69
-rw-r--r--templates/@theme-base/pm-styles/_pm-containers.scss51
-rw-r--r--templates/@theme-base/pm-styles/_pm-context-bar.scss20
-rw-r--r--templates/@theme-base/pm-styles/_pm-conversations.scss925
-rw-r--r--templates/@theme-base/pm-styles/_pm-custom-scrollbar.scss80
-rw-r--r--templates/@theme-base/pm-styles/_pm-dark-theme.scss116
-rw-r--r--templates/@theme-base/pm-styles/_pm-dropdown-logout.scss75
-rw-r--r--templates/@theme-base/pm-styles/_pm-dropdown.scss30
-rw-r--r--templates/@theme-base/pm-styles/_pm-editableSection.scss30
-rw-r--r--templates/@theme-base/pm-styles/_pm-ellipsis-loader.scss19
-rw-r--r--templates/@theme-base/pm-styles/_pm-forms.scss159
-rw-r--r--templates/@theme-base/pm-styles/_pm-header-searchbar.scss39
-rw-r--r--templates/@theme-base/pm-styles/_pm-header-topnav.scss202
-rw-r--r--templates/@theme-base/pm-styles/_pm-input-button.scss27
-rw-r--r--templates/@theme-base/pm-styles/_pm-label-stack.scss134
-rw-r--r--templates/@theme-base/pm-styles/_pm-layout.scss3
-rw-r--r--templates/@theme-base/pm-styles/_pm-loader-animation.scss194
-rw-r--r--templates/@theme-base/pm-styles/_pm-loadingcontent.scss98
-rw-r--r--templates/@theme-base/pm-styles/_pm-meterbar.scss192
-rw-r--r--templates/@theme-base/pm-styles/_pm-mini-calendar.scss30
-rw-r--r--templates/@theme-base/pm-styles/_pm-modal.scss76
-rw-r--r--templates/@theme-base/pm-styles/_pm-navigation.scss163
-rw-r--r--templates/@theme-base/pm-styles/_pm-notifications.scss22
-rw-r--r--templates/@theme-base/pm-styles/_pm-overview-grid.scss20
-rw-r--r--templates/@theme-base/pm-styles/_pm-progress-contact.scss37
-rw-r--r--templates/@theme-base/pm-styles/_pm-progressbar.scss66
-rw-r--r--templates/@theme-base/pm-styles/_pm-reset-display-messages.scss22
-rw-r--r--templates/@theme-base/pm-styles/_pm-scale.scss6
-rw-r--r--templates/@theme-base/pm-styles/_pm-scrollshadow.scss37
-rw-r--r--templates/@theme-base/pm-styles/_pm-settings-home.scss13
-rw-r--r--templates/@theme-base/pm-styles/_pm-stepdots.scss27
-rw-r--r--templates/@theme-base/pm-styles/_pm-sticky-header.scss11
-rw-r--r--templates/@theme-base/pm-styles/_pm-subnav.scss25
-rw-r--r--templates/@theme-base/pm-styles/_pm-table-plans.scss4
-rw-r--r--templates/@theme-base/pm-styles/_pm-table.scss151
-rw-r--r--templates/@theme-base/pm-styles/_pm-tabs.scss42
-rw-r--r--templates/@theme-base/pm-styles/_pm-toolbar.scss75
-rw-r--r--templates/@theme-base/pm-styles/_pm-treeview.scss108
-rw-r--r--templates/@theme-base/reusable-components/_design-system-colors.scss31
-rw-r--r--templates/@theme-base/reusable-components/_design-system-config.scss152
-rw-r--r--templates/@theme-base/reusable-components/_design-system-forms.scss12
-rw-r--r--templates/@theme-base/reusable-components/_design-system-layout-modules.scss875
-rw-r--r--templates/@theme-base/reusable-components/_design-system-links-icons.scss37
-rw-r--r--templates/@theme-base/reusable-components/_design-system-print.scss58
-rw-r--r--templates/@theme-base/reusable-components/_design-system-reset.scss180
-rw-r--r--templates/@theme-base/reusable-components/_design-system-responsive.scss180
-rw-r--r--templates/@theme-base/reusable-components/_design-system-util-typo-fix.scss110
-rw-r--r--templates/@theme-base/reusable-components/_includes/_resets/_typo-sub-sup.scss12
55 files changed, 3972 insertions, 1486 deletions
diff --git a/templates/@theme-base/pm-styles/_pm-apps-dropdown.scss b/templates/@theme-base/pm-styles/_pm-apps-dropdown.scss
new file mode 100644
index 0000000..2df125e
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-apps-dropdown.scss
@@ -0,0 +1,59 @@
+.appsDropdown {
+ &.dropDown {
+ --min-width: 13em;
+ --max-width: 15.5em; // Be carefull to not exceed the nav bar
+ --max-height: 25em;
+
+ --dropdown-border-color: #{$pm-tertiary-grey};
+ --dropdown-bg-color: #{$pm-secondary-grey};
+
+ color: $pm-global-light;
+
+ @include respond-to($breakpoint-small, 'min') {
+ box-shadow: 0 .5rem 1.5rem 0 rgba(black, .75);
+ }
+
+ a {
+ &,
+ &:hover,
+ &:focus {
+ color: $white;
+ }
+ }
+ }
+
+ &-button {
+ border-radius: $global-border-radius;
+ padding: .25em;
+
+ &:hover,
+ &:focus,
+ &[aria-expanded="true"] {
+ background-color: $navigation-hover-bg-color;
+ }
+ & &-icon { // override icon-16p
+ width: 1em;
+ height: 1em;
+ font-size: 2em;
+ }
+ }
+
+ /* No border for now
+ &-item.dropDown-item {
+ --bordercolor-input: #{$pm-tertiary-grey};
+ }
+ */
+
+ &-link {
+ &,
+ &:hover,
+ &:focus {
+ text-decoration: none;
+ }
+
+ &:hover,
+ &:focus {
+ background-color: rgba(white, .05);
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-aside.scss b/templates/@theme-base/pm-styles/_pm-aside.scss
index 77ac6c6..b20a714 100644
--- a/templates/@theme-base/pm-styles/_pm-aside.scss
+++ b/templates/@theme-base/pm-styles/_pm-aside.scss
@@ -1,39 +1,29 @@
/*
* aside bar
*/
-.aside {
- background: var(--main-bg-color, $pm-global-grey);
- width: $aside-bar-width;
- min-height: 100vh;
- color: $pm-global-light;
- flex-shrink: 0;
- position: relative;
- z-index: 5;
- padding-top: 1.7em;
-}
-.aside-link {
- border-radius: 50%;
- width: 32px;
- height: 32px;
- padding: 7px;
- background: var(--bgcolor-aside-link, $pm-global-altgrey);
+ .aside-link {
+ border-radius: 50%;
+ width: 32px;
+ height: 32px;
+ padding: 7px;
+ background: var(--bgcolor-aside-link, $pm-global-altgrey);
- &:focus,
- &:hover,
- &:active,
- &[aria-current="true"] {
- background: $white;
- color: $pm-primary;
+ &:focus,
+ &:hover,
+ &:active,
+ &[aria-current="true"] {
+ background: $white;
+ color: $pm-primary;
- .aside-linkIcon {
- fill: $pm-primary;
- }
+ .aside-linkIcon {
+ fill: $pm-primary;
+ }
+ }
+ }
+ .aside-linkIcon {
+ width: 17px;
+ height: 17px;
+ fill: var(--fillcolor-icons, $pm-global-light);
}
-}
-.aside-linkIcon {
- width: 17px;
- height: 17px;
- fill: var(--fillcolor-icons, $pm-global-light);
-} \ No newline at end of file
diff --git a/templates/@theme-base/pm-styles/_pm-badges.scss b/templates/@theme-base/pm-styles/_pm-badges.scss
index 2690c6f..897fb50 100644
--- a/templates/@theme-base/pm-styles/_pm-badges.scss
+++ b/templates/@theme-base/pm-styles/_pm-badges.scss
@@ -1,29 +1,34 @@
/*
- * badges/labels
+ * badges/labels
*/
+$border-width: 2px !default;
[class*="badgeLabel"] {
@extend .uppercase;
@extend .color-white;
- @extend .inbl;
+ @extend .inline-flex;
font-size: rem(11); // to be sure this is the same height everywhere
padding: 0 em(2) em(1);
line-height: 1;
border-radius: $global-border-radius;
- border-width: 2px;
- border-style: solid;
+ border-width: $border-width;
+ border-style: solid;
}
+
.badgeLabel-success {
@extend .bg-global-success;
border-color: $pm-global-success;
}
+
.badgeLabel-blue {
@extend .bg-pm-blue;
border-color: $pm-blue;
}
+
.badgeLabel-green {
@extend .bg-pv-green;
border-color: $pv-green;
}
+
@if ($pm-primary == $pm-blue) {
.badgeLabel-primary,
.badgeLabel {
@@ -38,14 +43,24 @@
border-color: $pv-green;
}
}
+
.badgeLabel-grey {
@extend .bg-global-grey;
border-color: $pm-global-grey;
}
+
+.badgeLabel-greylight {
+ background: var(--bordercolor-input, $pm-global-muted);
+ border-color: var(--bordercolor-input, $pm-global-muted);
+ color: var(--color-main-area, $black);
+}
+
.badgeLabel-warning {
@extend .bg-global-attention;
border-color: $pm-global-attention;
+ color: $black;
}
+
.badgeLabel-error {
@extend .bg-global-warning;
border-color: $pm-global-warning;
diff --git a/templates/@theme-base/pm-styles/_pm-buttons-mixins.scss b/templates/@theme-base/pm-styles/_pm-buttons-mixins.scss
index b1e8d72..c418354 100644
--- a/templates/@theme-base/pm-styles/_pm-buttons-mixins.scss
+++ b/templates/@theme-base/pm-styles/_pm-buttons-mixins.scss
@@ -2,12 +2,29 @@
@import "../reusable-components/design-system-config";
-@mixin button-disabled-state-dm {
- opacity: .6;
+@mixin button-disabled-state ($color: null) {
+ pointer-events: none;
+
+ @if $color == null {
+ background-color: $pm-global-muted;
+ border-color: $pm-global-border;
+ color: rgba( $pm-global-grey, .3 );
+ }
+ @else {
+ background-color: rgba($color, .2);
+ border-color: rgba($color, .25);
+ color: rgba($color, .5);
+ }
+}
+
+@mixin button-disabled-state-dm() {
background-color: $pm-global-grey;
- color: rgba( $pm-global-muted, .6 );
- border-color: rgba( $pm-global-muted, .6 );
+ color: rgba( $pm-global-muted, .3 );
pointer-events: none;
+ border-color: rgba( $pm-global-muted, .3 );
+ & svg {
+ fill: rgba( $pm-global-muted, .3 );
+ }
}
@mixin pm-button-dark {
@@ -23,7 +40,7 @@
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: rgba(0, 0, 0, 0.5);
+ background-color: rgba(0, 0, 0, 0.5);
}
&[disabled],
&.is-disabled {
@@ -47,13 +64,13 @@
&.is-hover,
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: rgba(0, 0, 0, 0.2);
+ background-color: rgba(0, 0, 0, 0.2);
border-color: $pm-primary-light;
color: $pm-primary-dark;
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: rgba(0, 0, 0, 0.5);
+ background-color: rgba(0, 0, 0, 0.5);
}
&[disabled],
&.is-disabled {
@@ -78,10 +95,10 @@
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: rgba(0, 0, 0, 0.5);
+ background-color: rgba(0, 0, 0, 0.5);
}
&[disabled],
&.is-disabled {
@include button-disabled-state-dm;
}
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-buttons.scss b/templates/@theme-base/pm-styles/_pm-buttons.scss
index d206cf9..5b053a0 100644
--- a/templates/@theme-base/pm-styles/_pm-buttons.scss
+++ b/templates/@theme-base/pm-styles/_pm-buttons.scss
@@ -1,4 +1,4 @@
-
+
/*
* Buttons
*/
@@ -11,6 +11,7 @@
border-style: solid;
border-width: 1px;
text-decoration: none;
+ transition: .15s easing(easeOutQuint), background-position 0s;
& > button { // this is for drop down buttons
color: inherit;
}
@@ -24,27 +25,26 @@
.pm-button {
border-color: $pm-global-border;
- background: $white;
+ background-color: $white;
color: $pm-global-grey;
+
&:hover,
&:focus,
&:focus-within,
- &.is-hover {
+ &.is-hover {
color: $pm-global-grey;
box-shadow: 0 0 em(5) 0 rgba(0, 0, 0, 0.2);
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
//background-color: $pm-global-border;
- background: radial-gradient(closest-side, $white, $pm-global-border 90%);
+ background-image: radial-gradient(closest-side, transparent, rgba(black, .1));
box-shadow: none;
}
&[disabled],
&.is-disabled {
- background-color: $pm-global-muted;
- color: rgba( $pm-global-grey, .3 );
- pointer-events: none;
+ @include button-disabled-state;
}
/* just to cancel examples */
&.is-active:hover {
@@ -57,6 +57,22 @@
&.p0 {
padding: 0;
}
+
+ &[aria-expanded="true"] .caret-like {
+ @extend .rotateX-180;
+ }
+
+ &.pm-select {
+ padding-right: .6rem;
+ .mauto {
+ display: flex;
+ width: 100%;
+ }
+ .mr0-5 {
+ flex: 1 1 0px;
+ @extend .ellipsis;
+ }
+ }
}
@@ -77,20 +93,17 @@
&.is-hover {
color: $white;
box-shadow: 0 0 em(5) 0 rgba(0, 0, 0, 0.2);
- background: $pm-primary-dark;
+ background-color: $pm-primary-dark;
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: $pm-primary-dark;
+ background-color: $pm-primary-dark;
text-shadow: 1px 1px 10px rgba( $white, .3 ),-1px -1px 10px rgba( $white, .3 );
box-shadow: none;
}
&[disabled],
&.is-disabled {
- background-color: $pm-global-muted;
- color: rgba( $pm-global-grey, .3 );
- border-color: $pm-global-border;
- pointer-events: none;
+ @include button-disabled-state($pm-primary);
}
/* just to cancel examples */
&.is-hover:hover {
@@ -115,15 +128,12 @@
&.is-active {
border-color: $pm-primary-dark;
color: $pm-primary-dark;
- background: radial-gradient(closest-side, $white, $pm-global-border 90%);
+ background-image: radial-gradient(closest-side, transparent, rgba(black, .1));
box-shadow: none;
}
&[disabled],
&.is-disabled {
- background-color: $pm-global-muted;
- color: rgba( $pm-global-grey, .3 );
- border-color: $pm-global-border;
- pointer-events: none;
+ @include button-disabled-state;
}
}
@@ -144,20 +154,17 @@
&.is-hover {
color: $white;
box-shadow: 0 0 em(5) 0 rgba(0, 0, 0, 0.2);
- background: $pv-green-dark;
+ background-color: $pv-green-dark;
}
&:not(div):active, // not(div) prevents active state in case of button groups with dropdowns
&.is-active {
- background: $pv-green-dark;
+ background-color: $pv-green-dark;
text-shadow: 1px 1px 10px rgba( $white, .3 ),-1px -1px 10px rgba( $white, .3 );
box-shadow: none;
}
&[disabled],
&.is-disabled {
- background-color: $pm-global-muted;
- color: rgba( $pm-global-grey, .3 );
- border-color: $pm-global-border;
- pointer-events: none;
+ @include button-disabled-state($pv-green);
}
/* just to cancel examples */
&.is-hover:hover {
@@ -182,15 +189,12 @@
&.is-active {
border-color: $pv-green-dark;
color: $pv-green-dark;
- background: radial-gradient(closest-side, $white, $pm-global-border 90%);
+ background-image: radial-gradient(closest-side, transparent, rgba(black, .1));
box-shadow: none;
}
&[disabled],
&.is-disabled {
- background-color: $pm-global-muted;
- color: rgba( $pm-global-grey, .3 );
- border: 1px solid $pm-global-border;
- pointer-events: none;
+ @include button-disabled-state;
}
}
@@ -203,10 +207,10 @@
/* modifiers */
.pm-button--large {
- padding: em(10) em(20) em(9); // design want 42px height
+ padding: em(10) em(20) em(9); // design want 42px height
}
.pm-button--small {
- padding: em(1) em(12) em(2); // design want 26px height
+ padding: em(1) em(12) em(2); // design want 26px height
}
.pm-button--for-icon {
@@ -236,6 +240,7 @@
.pm-group-button:active {
position: relative;
}
+
.pm-group-buttons > .pm-group-button:first-child {
border-radius: $global-border-radius 0 0 $global-border-radius;
border-left-width: 1px;
@@ -258,13 +263,43 @@
}
}
+/* special case for group button with primary colors */
+.pm-group-buttons > .pm-group-button.pm-button--primary {
+ border-color: $pm-primary;
+ border-left-width: 0;
+ &:first-child {
+ border-left-width: 1px;
+ }
+ &:not(:last-child) {
+ border-right-color: var(--bgcolor-main-area, $white);
+ }
+}
+
+/* exception for group buttons, disabled state should keep the border */
+.pm-group-button {
+ &[disabled],
+ &.is-disabled {
+ &.pm-button {
+ border-color: $pm-global-border;
+ }
+ &.pm-button-blueborder {
+ border-color: $pm-primary;
+ }
+ &.pv-button-greenborder {
+ border-color: $pv-green;
+ }
+ }
+}
+
+
/* aliases for buttons => different per project */
/* primary/link/error/warning/info */
@if ($pm-primary == $pm-blue) {
.pm-button--primary {
@extend .pm-button-blue;
}
- .pm-button--primaryborder {
+ .pm-button--primaryborder,
+ .pm-button--primaryborderEvenInDarkMode {
@extend .pm-button-blueborder;
}
.pm-button--primaryborder-dark {
@@ -275,7 +310,8 @@
.pm-button--primary {
@extend .pv-button-green;
}
- .pm-button--primaryborder {
+ .pm-button--primaryborder,
+ .pm-button--primaryborderEvenInDarkMode {
@extend .pv-button-greenborder;
}
.pm-button--primaryborder-dark {
@@ -307,41 +343,64 @@
text-decoration: none;
background-color: transparent; // to avoid heriting from other classes
}
+ &.nodecoration {
+ text-decoration: none;
+ }
+ &.pm-button--currentColor {
+ color: currentColor;
+ }
}
-.pm-button--error {
+.pm-button--error,
+.pm-button.pm-button--error {
@extend .pm-button-blue;
background-color: $pm-global-warning;
- border-color: $pm-global-warning;
-}
-.pm-button--error:focus,
-.pm-button--error:hover,
-.pm-button--error:not(div):active { // not div is here for a specificity issue for another fix
- background-color: $pm-global-warning;
- border-color: $pm-global-warning;
+ border-color: $pm-global-warning;
+ &:focus,
+ &:hover,
+ &:not(div):active { // not div is here for a specificity issue for another fix
+ background-color: $pm-global-warning;
+ border-color: $pm-global-warning;
+ }
+ &[disabled],
+ &.is-disabled {
+ @include button-disabled-state($pm-global-warning);
+ }
}
-.pm-button--warning {
+.pm-button--warning,
+.pm-button.pm-button--warning {
@extend .pm-button-blue;
background-color: $pm-global-attention;
- border-color: $pm-global-attention;
-}
-.pm-button--warning:focus,
-.pm-button--warning:hover,
-.pm-button--warning:not(div):active { // not div is here for a specificity issue for another fix
- background-color: $pm-global-attention;
- border-color: $pm-global-attention;
+ border-color: $pm-global-attention;
+ &:focus,
+ &:hover,
+ &:not(div):active { // not div is here for a specificity issue for another fix
+ background-color: $pm-global-attention;
+ border-color: $pm-global-attention;
+ }
+ &[disabled],
+ &.is-disabled {
+ @include button-disabled-state($pm-global-attention);
+ }
}
.pm-button--info {
@extend .pm-button;
}
/* other aliases requested */
-.pm-button--redborder.pm-button--redborder { // for darkmode... again
- @extend .pm-button;
- border-color: $pm-global-warning;
- color: $pm-global-warning;
+.pm-button--redborder,
+.pm-button.pm-button--redborder {
+ @extend .pm-button;
+ border-color: $pm-global-warning;
+ color: $pm-global-warning;
+ &:focus,
+ &:hover,
+ &:not(div):active,
+ &:active {
+ color: $pm-global-warning;
+ }
}
-
-.pm-button--whiteborder {
+.pm-button--whiteborder,
+.pm-button--primary.pm-button.pm-button--whiteborder {
border: 1px solid $white;
}
@@ -349,8 +408,21 @@
.pm-button--noborder {
border: 0;
}
-
-
.pm-button--currentColor {
color: currentColor;
-} \ No newline at end of file
+}
+.pm-button--pill {
+ border-radius: 2em;
+}
+.pm-button--transparent {
+ /* When using currentColor, you need to set the color you want on a container */
+ border: 1px solid currentColor;
+ color: currentColor;
+ &:focus,
+ &:hover,
+ &:not(div):active,
+ &:active {
+ background-color: rgba(black, .2);
+ color: currentColor;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-choose-account.scss b/templates/@theme-base/pm-styles/_pm-choose-account.scss
new file mode 100644
index 0000000..24eb237
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-choose-account.scss
@@ -0,0 +1,40 @@
+/*
+ * Choose account SSO
+ */
+
+
+
+.button-account-container {
+ border: 1px solid var(--bordercolor-input, $pm-global-muted); // inconsistent with borders...
+ max-height: 50vh;
+ @include respond-to($breakpoint-small) {
+ max-height: none;
+ }
+}
+
+.button-account-container-inner {
+ border-right: 1px solid var(--bordercolor-input, $pm-global-muted); // inconsistent with borders...
+}
+
+.button-account {
+
+ &-login {
+ transition: opacity .35s easing(easeInOut), visibility 0s;
+ opacity: 0;
+ width: 0;
+ transition-delay: 0s, .35s;
+ }
+
+ &:focus,
+ &:hover,
+ &:active {
+ background-color: var(--bgcolor-input, $pm-input-background);
+
+ .button-account-login {
+ opacity: 1;
+ width: auto;
+ transition-delay: 0s;
+ }
+
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-circlebar.scss b/templates/@theme-base/pm-styles/_pm-circlebar.scss
index 462ccd9..8cb6629 100644
--- a/templates/@theme-base/pm-styles/_pm-circlebar.scss
+++ b/templates/@theme-base/pm-styles/_pm-circlebar.scss
@@ -1,7 +1,10 @@
$stroke-width: 3px !default; // be careful to udpate SVG if you want to update this value
+// this component is used for VPN
+// and for the moment on Angular/React sidebar
.circle-chart__background {
- stroke: var(--bgcolor-aside-link, rgba($white,.2));
+ stroke: var(--color-main-area, $pm-global-grey);
+ opacity: .2;
stroke-width: $stroke-width;
fill: transparent;
}
@@ -15,18 +18,19 @@ $stroke-width: 3px !default; // be careful to udpate SVG if you want to update t
stroke-width: $stroke-width;
fill: transparent;
animation: circle-chart-fill 2s reverse;
- transform: rotate(-90deg);
+ transform: rotate(-90deg);
transform-origin: center;
}
-.circle-bar--global-attention .circle-chart__circle {
+.circle-bar--medium .circle-chart__circle {
stroke: $pm-global-attention;
}
-.circle-bar--global-warning .circle-chart__circle {
+.circle-bar--full .circle-chart__circle {
stroke: $pm-global-warning;
}
.circle-chart__percent {
- fill: var(--color-standard-text, $white);
+ fill: var(--color-main-area, rgba($pm-global-grey, .5) );
}
+
.circle-chart-info {
color: var(--color-standard-text, $pm-global-light);
}
@@ -34,4 +38,4 @@ $stroke-width: 3px !default; // be careful to udpate SVG if you want to update t
@keyframes circle-chart-fill {
to { stroke-dasharray: 0 100; }
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-color-selector.scss b/templates/@theme-base/pm-styles/_pm-color-selector.scss
new file mode 100644
index 0000000..8e37e9c
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-color-selector.scss
@@ -0,0 +1,69 @@
+.ColorSelector {
+
+ &-container {
+ @include respond-to($breakpoint-small, 'min') {
+ max-width: 13em;
+ }
+ }
+
+ &-item {
+ position: relative;
+ display: inline-block;
+ height: 2.5em;
+ width: 2.5em;
+ border-radius: 50%;
+ padding: 0;
+ margin: .125em;
+ overflow: hidden;
+ cursor: pointer;
+
+ &-mask {
+ position: absolute;
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ border-radius: 50%;
+ z-index: 2;
+ background: currentColor;
+ border: 2px solid var(--bgcolor-main-area, white);
+ pointer-events: none;
+ transition: border .1s ease-out;
+ }
+
+ &.selected &-mask {
+ border:3px solid rgba(0, 0, 0, .1);
+ }
+
+ svg {
+ opacity: 0;
+ color: white;
+ display: inline-block;
+ transition: opacity .1s linear;
+ }
+
+ &:hover svg {
+ opacity: .75;
+ }
+
+ &.selected svg {
+ opacity: 1;
+ }
+
+ }
+
+ &-input-color[type="radio"] {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ margin: 0;
+ cursor: pointer;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-containers.scss b/templates/@theme-base/pm-styles/_pm-containers.scss
index e027ad7..e9b44a4 100644
--- a/templates/@theme-base/pm-styles/_pm-containers.scss
+++ b/templates/@theme-base/pm-styles/_pm-containers.scss
@@ -2,19 +2,22 @@
* containers
*/
.bordered,
-.bordered-container {
+.bordered-container,
+.dashed,
+.dashed-container {
border: 1px solid var(--bordercolor-input, $pm-global-border);
}
-.bordered-container {
+.bordered-container,
+.dashed-container {
border-radius: $global-border-radius;
}
+.bordered-container--error {
+ border-color: $pm-global-warning;
+}
.dashed,
.dashed-container {
- border: 1px dashed var(--bordercolor-input, $pm-global-border);
-}
-.dashed-container {
- border-radius: $global-border-radius;
+ border-style: dashed;
}
.border-bottom {
@@ -23,6 +26,9 @@
.border-bottom--dashed {
border-bottom-style: dashed;
}
+.border-bottom--currentColor {
+ border-bottom-color: currentColor;
+}
.border-top {
border-top: 1px solid var(--bordercolor-input, $pm-global-border);
}
@@ -40,14 +46,23 @@
border: 1px solid currentColor;
}
+.borderColor-primary {
+ border-color: $pm-primary;
+}
+
.shadow-container {
- box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 20px 0 $input-shadow-color;
+}
+
+.tiny-shadow-container {
+ box-shadow: 0 1px 3px 0 var(--bgcolor-main-area, $pm-global-border);
+ border: 1px solid var(--bordercolor-input, transparent);
}
.row--orderable {
z-index: 666; /* In case the modal is open */
- background-color: $white;
- color: $pm-global-grey;
+ background: var(--bgcolor-main-area, $white);
+ color: var(--color-main-area, $pm-global-grey);
}
$block-info-border-width: 3px !default;
@@ -128,3 +143,21 @@ summary {
border: 0;
cursor: pointer;
}
+
+
+
+/* welcome boxes in a 2 column design */
+$breakpoint-2-columns: 1180 !default;
+@include respond-to($breakpoint-2-columns) {
+ .boxes-placeholder-container {
+ flex-direction: column;
+ > * {
+ margin-bottom: 1em;
+ width: 100%;
+ flex-basis: auto;
+ }
+ }
+ .boxes-placeholder-button {
+ margin-top: 0;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-context-bar.scss b/templates/@theme-base/pm-styles/_pm-context-bar.scss
new file mode 100644
index 0000000..49250ba
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-context-bar.scss
@@ -0,0 +1,20 @@
+.context-bar {
+ background: var(--bgcolor-context-bar, $pm-global-muted);
+
+ @include respond-to($breakpoint-medium, 'min') {
+ width: $context-bar-width;
+ min-width: $context-bar-min-width;
+ max-width: var(--width-context-bar, $context-bar-max-width);
+ border-left: 1px solid var(--bordercolor-input, $pm-global-border);
+ }
+
+ @include respond-to($breakpoint-medium) {
+ border-top: 1px solid var(--bordercolor-input, $pm-global-border);
+ }
+
+ &-inner {
+ position: sticky;
+ top: 0;
+ padding: 2em;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-conversations.scss b/templates/@theme-base/pm-styles/_pm-conversations.scss
index 2e7f3d1..184516f 100644
--- a/templates/@theme-base/pm-styles/_pm-conversations.scss
+++ b/templates/@theme-base/pm-styles/_pm-conversations.scss
@@ -1,278 +1,831 @@
/*
+ * Shared for placeholder loading
+ */
+@keyframes loadingItem {
+ from { opacity: .05; }
+ to { opacity: .15; }
+}
+
+%item-loading-pseudo {
+ content: '\00a0';
+ display: inline-block;
+ border-radius: $global-border-radius;
+ background-color: currentColor;
+ line-height: 1.2;
+ opacity: 0;
+}
+
+%appearing-container {
+ animation: itemFadeIn .5s easing(easeOutQuint);
+}
+
+%placeholder-loading {
+ animation: loadingItem .5s calc(var(--index, 0) * 20ms) easing(easeOutSine) infinite alternate;
+}
+
+@keyframes itemFadeIn {
+ from { opacity: 0; }
+ to { opacity: 1; }
+}
+
+
+/*
* items (conversations/contacts lists)
*/
+$container-to-width: 3em !default;
.items-column-list {
- width: calc( (100% + var(--width-sidebar, #{$width-sidebar}) ) * #{$conversations-column-width/1%/100} );
- border-right: 1px solid var(--bordercolor-input, $pm-global-border);
- background: var(--bgcolor-item-column-list, $white);
+ width: var(--width-conversation-column, calc((100% + var(--width-sidebar, #{$width-sidebar})) * #{$conversations-column-width/1%/100}));
+}
+
+.items-column-list-inner,
+.ReactVirtualized__Grid__innerScrollContainer {
+ border: solid var(--bordercolor-input, $pm-global-border);
+ border-width: 0 1px;
+ min-height: 100%;
}
+
+.items-column-list-inner--noborder {
+ // fix for Contact and ReactVirtualized__Grid
+ border: 0;
+}
+
.items-column-list--mobile {
- width: 100%;
+ width: 100%;
}
.items-column-list,
.items-column-list--mobile,
.view-column-detail {
- height: calc(100vh - #{$header-height} - #{$toolbar-height} );
+ height: 100%;
}
.view-column-detail {
- background: var(--bgcolor-view-column-detail, $white);
+ background: var(--bgcolor-view-column-detail, $white);
}
+$item-container-height: 6.4rem !default;
+$item-container-padding-top-bottom: em(8.5) !default;
+$item-container-padding-left-right: em(12) !default;
+
+$item-container-height-compact-mode: 4.8rem !default;
+$item-container-row-height-compact-mode: 4rem !default;
+
.item-container,
.item-container-row {
- padding: em(15) em(12);
- border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
- background-color: var(--bgcolor-item-column-list, $pm-global-light);
+ @extend %appearing-container;
+ position: relative;
+ padding: $item-container-padding-top-bottom $item-container-padding-left-right; // design wants ~64 height
+ border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
+ background-color: var(--bgcolor-item-column-list, $pm-global-muted);
+
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ pointer-events: none;
+ border: 1px solid transparent;
+ transition: .15s easing(easeOutQuart);
+ }
+
+ &:hover::before {
+ border-color: $pm-primary-light;
+ box-shadow: 0 .125em .25em 0 var(--dropdown-box-shadow, $input-shadow-color);
+ }
}
-.item-container-row {
- padding: em(8) em(12);
+
+.item-container {
+ height: $item-container-height;
+}
+// fix for Firefox multi-selection issue
+.item-checkbox-label > .item-checkbox {
+ width: 100%;
+ height: 100%;
+ z-index: 1;
}
-.item-container,
-.item-container-row {
- background: var(--bgcolor-item-column-list, $pm-global-light);
+.item-firstline,
+.item-secondline {
+ margin-bottom: .25em;
+}
+
+.item-secondline:empty {
+ min-height: 1.5em;
+}
+
+/* Compact view */
+.is-shown-when-compact {
+ display: none;
+}
+
+.is-compact {
+
+ .item-container,
+ .item-container-row {
+ height: $item-container-height-compact-mode;
+
+ .item-container-inner {
+ padding: em(0) em(12);
+ }
+ }
+ .item-container-row {
+ height: $item-container-row-height-compact-mode;
+ }
+ .item-icon-compact {
+ &::after {
+ height: $item-container-row-height-compact-mode;
+ }
+ }
+ .item-firstline,
+ .item-secondline {
+ margin: 0;
+ }
+
+ .is-hidden-when-compact {
+ display: none;
+ }
+
+ .is-shown-when-compact {
+ display: flex;
+ }
}
.item-is-selected,
-.item-container.active { // alias for Angular
- background: var(--bgcolor-item-column-active, $conversation-selected-bg);
+.item-container.active {
+ // alias for Angular
+ background-color: var(--bgcolor-item-column-active, $conversation-selected-bg);
+}
+
+.item-container:not(.item-is-selected):not(.read):not(.active),
+.item-container-row:not(.item-is-selected):not(.read):not(.active) {
+ background-color: var(--bgcolor-unread-item-column-list, $white);
}
-.item-container:not(.item-is-selected):not(.item-contact):not(.read):not(.active) {
- background: var(--bgcolor-toolbar, $white);
+.item-is-loading {
+ background-color: var(--bgcolor-main-area, white);
+ pointer-events: none;
+
+ .item-checkbox-label::before,
+ .item-icon-compact::before,
+ .item-senders::before,
+ .item-senddate-col::before,
+ .item-senddate-row::before,
+ .item-weight::before,
+ .item-star,
+ .item-subject::before {
+ @extend %placeholder-loading;
+ }
+
+ .item-checkbox-label,
+ .item-icon-compact {
+ position: relative;
+
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ border-radius: $global-border-radius;
+ background-color: currentColor;
+ opacity: 0;
+ }
+
+ .item-icon,
+ .pm-checkbox-fakecheck {
+ opacity: 0;
+ }
+ }
+
+ .item-senders,
+ .item-senddate-col,
+ .item-senddate-row,
+ .item-weight,
+ .item-subject {
+ &::before {
+ @extend %item-loading-pseudo;
+ }
+ }
+
+ .item-senders {
+ &::before {
+ width: 35%;
+ }
+ }
+
+ .item-senddate-col {
+ min-width: 6em;
+
+ &::before {
+ width: 100%;
+ }
+ }
+
+ .item-senddate-row {
+
+ &::before {
+ width: 70%;
+ }
+ }
+
+ .item-weight {
+ min-width: 4em;
+
+ &::before {
+ width: 100%;
+ }
+ }
+
+ .item-subject {
+ &::before {
+ width: 60%;
+ }
+ }
}
-$conversation-icon-size: 4rem !default;
+
+
+$conversation-icon-size: 3.2rem !default;
+
.item-icon {
- width: $conversation-icon-size;
- height: $conversation-icon-size;
- font-size: 1.2rem;
- border: 1px solid var(--bordercolor-input, $pm-global-border);
- background-color: var(--bordercolor-input, $white);
+ width: $conversation-icon-size;
+ height: $conversation-icon-size;
+ font-size: 1.2rem;
+ border: 1px solid var(--bordercolor-input, $pm-global-border);
+ background-color: var(--bordercolor-input, $white);
+}
+
+.item-icon-compact {
+ width: $conversation-icon-size;
+ height: $conversation-icon-size;
+ border-radius: 50%;
+ font-size: 1.2rem;
+ transition: background .25s ease;
+
+ &:hover {
+ background: var(--bordercolor-input, $pm-global-light);
+ }
+ &::after {
+ content: '';
+ position: absolute;
+ left: -#{em(12)};
+ right: -#{em(12)};
+ top: -#{($item-container-height-compact-mode - $conversation-icon-size)/2};
+ height: $item-container-height-compact-mode;
+ }
}
.item-checkbox {
- // hidden fake check by default
- & + .item-icon > .item-icon-fakecheck {
- display: none;
- }
-
- // focus state (used global hover state) => NEEDS IMPROVEMENTS
- // &:focus + .item-icon {
- // & > .item-abbr {
- // display: none;
- // }
-
- // & > .item-icon-fakecheck {
- // display: flex;
- // transform: scale(1);
- // }
-
- // .item-icon-fakecheck-icon {
- // fill: $pm-global-border;
- // }
- // }
-
- // hover state of checkbox
- & + .item-icon:hover {
- background-color: $white;
- border-color: var(--bordercolor-input, $pm-global-border);
- & > .item-abbr {
- display: none;
- }
- & > .item-icon-fakecheck {
- display: flex;
- transform: scale(1);
- }
- .item-icon-fakecheck-icon {
- fill: $pm-primary;
- }
- }
-
- // checked state
- &:checked + .item-icon {
- background-color: $pm-primary;
- border-color: $pm-primary;
- & > .item-abbr {
- display: none;
- }
- & > .item-icon-fakecheck {
- display: flex;
-
- animation: conversationIconIn ease .15s;
- }
- .item-icon-fakecheck-icon {
- fill: $white;
- }
- }
+ // for allowing hovering larger than fake circle
+ &:after {
+ content: '';
+ position: absolute;
+ top: -#{($item-container-height - $conversation-icon-size)/2};
+ bottom: -#{($item-container-height - $conversation-icon-size)/2};
+ left: em(-12);
+ width: calc(#{$conversation-icon-size} + #{$item-container-padding-left-right} + .5rem);
+ // icon size + padding container + tiny margin for comfort
+ }
+
+ // hidden fake check by default
+ &+.item-icon>.item-icon-fakecheck {
+ display: none;
+ }
+
+ // focus state (used global hover state) => NEEDS IMPROVEMENTS
+ // &:focus + .item-icon {
+ // & > .item-abbr {
+ // display: none;
+ // }
+
+ // & > .item-icon-fakecheck {
+ // display: flex;
+ // transform: scale(1);
+ // }
+
+ // .item-icon-fakecheck-icon {
+ // fill: $pm-global-border;
+ // }
+ // }
+
+ // hover state of checkbox
+ &:hover+.item-icon,
+ &+.item-icon:hover {
+ background-color: var(--bgcolor-input, $white);
+ border-color: var(--bordercolor-input, $pm-global-border);
+
+ &>.item-abbr {
+ display: none;
+ }
+
+ &>.item-icon-fakecheck {
+ display: flex;
+ transform: scale(1);
+ }
+
+ .item-icon-fakecheck-icon {
+ fill: $pm-primary;
+ }
+ }
+
+ // checked state
+ &:checked+.item-icon {
+ background-color: $pm-primary;
+ border-color: $pm-primary;
+
+ &>.item-abbr {
+ display: none;
+ }
+
+ &>.item-icon-fakecheck {
+ display: flex;
+ animation: conversationIconIn ease .15s;
+ }
+
+ .item-icon-fakecheck-icon {
+ fill: $white;
+ }
+ }
+}
+
+// fix pseudo element for row layout
+.item-container-row {
+ .item-checkbox {
+ &:after {
+ top: -#{$item-container-padding-top-bottom};
+ bottom: -#{$item-container-padding-top-bottom};
+ }
+ }
+ .item-weight {
+ min-width: 5em;
+ }
}
+
@keyframes conversationIconIn {
- 0% {
- transform: scale(0);
- }
- 100% {
- transform: scale(1);
- }
+ 0% {
+ transform: scale(0);
+ }
+
+ 100% {
+ transform: scale(1);
+ }
}
+.item-sender--smaller,
+.item-date {
+ font-size: em(12);
+}
-.item-titlesender {
- line-height: 1.3;
+.message-header-metas-container {
+ height: $conversation-icon-size;
}
.starbutton {
- fill: var(--fillcolor-icons, $pm-global-grey);
- width: 1.6rem;
- height: 1.6rem;
- opacity: .5;
- &:focus,
- &:hover {
- fill: $pm-global-attention;
- opacity: 1;
- }
- [class*="starbutton-icon"] {
- position: absolute;
- top: 0;
- left: 0;
- }
- .starbutton-icon-starred {
- transform: scale(0);
- transition: transform .15s ease;
- }
+ color: var(--color-main-area, $pm-global-grey);
+ width: 1.6rem;
+ height: 1.6rem;
+ opacity: .5;
+
+ &:focus,
+ &:hover {
+ color: $pm-global-attention;
+ opacity: 1;
+ }
+
+ [class*="starbutton-icon"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ }
+
+ .starbutton-icon-starred {
+ transform: scale(0);
+ transition: transform .15s ease;
+ }
}
+
.starbutton--is-starred {
- opacity: 1;
- fill: $pm-global-attention;
- .starbutton-icon-starred {
- transform: scale(1);
- }
+ opacity: 1;
+ color: $pm-global-attention;
+
+ .starbutton-icon-starred {
+ transform: scale(1);
+ }
+}
+
+.pill-icon {
+ display: inline-flex;
+ padding: .125em .5em;
+ border-radius: 1em;
+ line-height: 1;
+
+ & > * {
+ color: white;
+ }
+
+ &-attachment {
+ background-color: rgba(black, .5);
+ // Plus some adaptations for dark theme in _pm-dark-theme.scss
+ }
}
/*
* view messages
*/
+.message-conversation-summary {
+ .is-appearing-content {
+ @extend %appearing-container;
+ }
+
+ &-is-loading {
+ pointer-events: none;
+ }
+
+ &-is-loading &-header,
+ &-is-loading &-stat {
+ position: relative;
+
+ &::before {
+ @extend %item-loading-pseudo;
+ @extend %placeholder-loading;
+ }
+ }
+
+ &-is-loading &-header {
+ &::before {
+ width: 25%;
+
+ @include respond-to($breakpoint-small) {
+ width: 50%;
+ }
+ }
+ }
+
+ &-is-loading &-stat {
+ &::before {
+ width: 2em;
+ }
+ }
+
+ &-is-loading &-star {
+ @extend %placeholder-loading;
+ }
+}
+
+.trashed-messages,
+.message-header {
+ background-color: var(--bgcolor-item-column-list, $pm-global-muted);
+}
+
.message-container {
- border: 1px solid var(--bordercolor-input, $pm-global-border);
- border-radius: $global-border-radius;
+ border: 1px solid var(--bordercolor-input, $pm-global-border);
+ border-radius: $global-border-radius;
+ @extend %appearing-container;
}
+
.message-header {
- background-color: var(--bgcolor-input, $pm-global-light);
- @extend .p1;
- @extend .relative;
-
- &.is-inbound::before {
- content: '';
- display: inline-block;
- position: absolute;
- top: -1px;
- left: -1px;
- width: 23px;
- height: 17px;
- transform: skewX(50deg) translateX(-10px);
-
- border-top: 1px solid var(--bordercolor-input, $pm-global-border);
- border-left: 1px solid var(--bordercolor-input, $pm-global-border);
- background-color: var(--bgcolor-input, $pm-global-light);
- }
-
- &.is-outbound::before {
- content: '';
- display: inline-block;
- position: absolute;
- top: -1px;
- right: -1px;
- width: 23px;
- height: 17px;
- transform: skewX(-50deg) translateX(10px);
-
- border-top: 1px solid var(--bordercolor-input, $pm-global-border);
- border-right: 1px solid var(--bordercolor-input, $pm-global-border);
- background-color: var(--bgcolor-input, $pm-global-light);
- }
+ border-radius: $global-border-radius; // Can't overflow 'cause of ::before, so repeat radius
+ padding: .6em;
+
+ .is-appearing-content {
+ @extend %appearing-container;
+ }
+
+ &.is-unread {
+ background: var(--bgcolor-unread-item-column-list, $white);
+ box-shadow: 2px 2px 3px 0px $input-shadow-color;
+ font-weight: bold;
+ }
+
+ &.is-loading {
+ pointer-events: none;
+ }
+
+ &.is-loading .message-recipient-item-icon,
+ &.is-loading &-star {
+ @extend %placeholder-loading;
+ }
+
+ &.is-loading .message-recipient-item-icon {
+ background-color: currentColor;
+ opacity: 0;
+ }
+
+ &.is-loading .message-recipient-item-label,
+ &.is-loading .message-recipient-item-address,
+ &.is-loading &-metas,
+ &.is-loading &-to,
+ &.is-loading &-contact,
+ &.is-loading .message-show-hide-link-container {
+ position: relative;
+
+ &::before {
+ @extend %item-loading-pseudo;
+ @extend %placeholder-loading;
+ }
+ }
+
+ &.is-loading .message-recipient-item-label {
+ width: 100%;
+ max-width: 7.5em;
+
+ &::before {
+ width: 100%;
+ }
+ }
+
+ &.is-loading .message-recipient-item-address {
+ width: 100%;
+ max-width: 12.5em;
+
+ &::before {
+ width: 100%;
+ }
+ }
+
+ &.is-loading &-metas {
+ &::before {
+ width: 10em;
+ }
+ }
+
+ &.is-loading &-to {
+ &::before {
+ width: 1.25em;
+ }
+ }
+
+ &.is-loading &-contact {
+ &::before {
+ width: 7.5em;
+ }
+ }
+
+ &.is-loading .message-show-hide-link-container {
+ &::before {
+ width: 6em;
+ }
+ }
+}
+
+// hide extra container when there is nothing inside
+.message-header-extra:empty {
+ display: none;
+}
+
+// when expanded but no full details
+.message-header-expanded {
+ padding: .6em .6em 0 .6em;
+ .message-show-hide-link {
+ padding: 0;
+ }
+}
+
+// alignements when expanded/details
+.message-header--showDetails {
+ .message-show-hide-link-container {
+ padding-left: calc(#{$container-to-width} + #{$conversation-icon-size} + .75em);
+ }
+
+ // show/hide details should go below otherwise it will be strangely place depending of recipients
+ .message-header-recipients {
+ flex-direction: column;
+
+ &>* {
+ width: 100%;
+ flex-basis: auto;
+ }
+ }
+
+ .message-recipient-item-expanded {
+ margin-top: .25em;
+
+ @include respond-to($breakpoint-small) {
+ margin-top: .5em;
+ }
+
+ .message-recipient-item:not(:first-child) {
+ margin-top: .25em;
+ }
+ }
+
+ // display of email default none except when details
+ .message-recipient-item-address,
+ .message-recipient-item-label {
+ @extend .ellipsis;
+
+ @include respond-to($breakpoint-small) {
+ display: block;
+ }
+ }
+ .message-recipient-item-lockIcon::before {
+ @include respond-to($breakpoint-small) {
+ content: '\00a0';
+ width: 100%;
+ }
+ }
+}
+
+.message-detailed-header-extra {
+ .item-date {
+ font-size: 1.4rem;
+ }
}
/* states classes */
.message-container.is-opened {
- > .message-header {
- border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
- }
+ >.message-header {
+ border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
+ }
}
+.message-container--hasAttachment {
+ .message-content {
+ border-radius: 0;
+ }
+}
.message-content {
- @extend .p1;
+ transition: .5s easing(easeOutSine);
+ transition-property: background-color, color;
+
+ &-loading-placeholder {
+ position: relative;
+
+ &::before {
+ @extend %item-loading-pseudo;
+ @extend %placeholder-loading;
+ width: 100%;
+ }
+ }
}
.message-expand {
- padding: 0 .5em .6em; // centers
- background-color: var(--bgcolor-input, $pm-global-light);
- line-height: .75;
+ padding: 0 .5em .6em; // centers
+ background-color: var(--bgcolor-item-column-list, $pm-global-light);
+ line-height: .75;
}
.message-attachments {
- @extend .p1;
- border-top: 1px solid var(--bordercolor-input, $pm-global-border);
- font-size: 1.4rem;
+ font-size: 1.4rem;
+}
+
+.message-attachmentPrimaryAction,
+.message-attachmentSecondaryAction {
+ &:hover,
+ &:focus-within {
+ box-shadow: 0 0 em(5) 0 rgba(0, 0, 0, 0.2);
+ }
+}
+.isDarkMode {
+ .message-attachmentPrimaryAction,
+ .message-attachmentSecondaryAction {
+ background-color: $pm-global-grey;
+ &:hover,
+ &:focus-within {
+ background-color: rgba(0, 0, 0, 0.2);
+ }
+ }
+}
+
+
+.message-attachmentSecondaryAction {
+ svg[aria-busy="true"] {
+ background-size: 16px;
+ }
}
.message-attachment {
- line-height: 1.3;
- padding: 0;
- &:hover,
- &:focus,
- &:active {
- text-decoration: none;
- }
+ line-height: 1.3;
+ padding: 0;
+
+ &:hover,
+ &:focus,
+ &:active {
+ text-decoration: none;
+ }
}
+
+.message-attachmentList-item-container {
+ margin-top: .5em;
+ width: 50%;
+
+ &:first-child,
+ &:nth-child(2) {
+ margin-top: 0;
+ }
+ &:nth-child(even) {
+ padding-left: 0.5em;
+ }
+ &:nth-child(odd) {
+ padding-right: 0.5em;
+ }
+ // fix on last only if there are more than 4
+ &:nth-child(n + 5):last-child {
+ padding-bottom: 0.5em;
+ }
+
+ @include respond-to($breakpoint-tiny) {
+ width: 100%;
+ &:nth-child(even),
+ &:nth-child(odd) {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ &:nth-child(2) {
+ margin-top: .5em;
+ }
+ }
+
+}
+
+
+.message-attachmentList-item {
+ &--uploadInProgress {
+ background-color: var(--bordercolor-input, $pm-global-muted);
+ .message-attachmentSecondaryAction {
+ border: 0;
+ }
+ }
+ &--loading {
+ background: var(--bordercolor-input, $pm-global-muted);
+ }
+}
+
+
+$message-attachment-icon-width: 2.6em !default;
.message-attachmentIcon {
- width: 2.6em;
- svg:not([class*="fill-"]) {
- fill: var(--color-main-area, $black);
- }
+ width: $message-attachment-icon-width;
+
+ svg:not([class*="fill-"]) {
+ fill: var(--color-main-area, $black);
+ }
}
.message-attachmentInfo {
- border-left: 1px solid var(--bordercolor-input, $pm-global-border);
- padding: .3em .7em;
+ border-left: 1px solid var(--bordercolor-input, $pm-global-border);
+ padding: .3em .7em;
+ max-width: calc(100% - #{$message-attachment-icon-width});
}
+
.message-attachmentSize {
- font-size: 1.2rem;
- opacity: .5;
+ font-size: 1.2rem;
+ opacity: .5;
}
+
.message-infobox {
- background: var(--bgcolor-main-area, $white);
+ background: var(--bgcolor-main-area, $white);
}
.container-to {
- min-width: 3em;
+ min-width: $container-to-width;
+
+ .item-icon {
+ &:focus,
+ &:hover {
+ .item-abbr {
+ display: none;
+ }
+
+ .item-caret {
+ display: block;
+ }
+ }
+ }
}
.compose-fab {
- position: fixed;
- bottom: 1em;
- right: 1.6em;
- z-index: 77;
- height: 6.6rem;
- width: 6.6rem;
- border-radius: 50%;
- padding: .5em;
- box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.3);
+ position: fixed;
+ bottom: 1em;
+ right: 1.6em;
+ z-index: 77;
+ height: 6.6rem;
+ width: 6.6rem;
+ border-radius: 50%;
+ padding: .5em;
+ box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.3);
+ transition: bottom .5s easing(easeOutQuart);
+
+ &--is-higher {
+ bottom: 4em;
+ }
+
+ &--inBackground {
+ z-index: 0;
+ }
}
-.compose-fab--inBackground {
- z-index: 0;
-}
-.protonmail_quote {
- border-left: 1px solid var(--bordercolor-input, $pm-global-border);
- padding-left: 1rem;
-} \ No newline at end of file
+@import "_pm-reset-display-messages";
diff --git a/templates/@theme-base/pm-styles/_pm-custom-scrollbar.scss b/templates/@theme-base/pm-styles/_pm-custom-scrollbar.scss
index a284984..9770856 100644
--- a/templates/@theme-base/pm-styles/_pm-custom-scrollbar.scss
+++ b/templates/@theme-base/pm-styles/_pm-custom-scrollbar.scss
@@ -1,30 +1,54 @@
-$scrollbar-width: 6px !default;
-$scrollbar-color: $black !default;
-$scrollbar-thumb-color: #586065 !default;
-$scrollbar-thumb-height: 40px !default;
-
-.customScrollBar-container {
- scrollbar-color: $scrollbar-thumb-color $black;
- scrollbar-width: thin;
-}
+$scrollbar-track-color: transparent !default;
+$scrollbar-size : .6rem !default;
+$scrollbar-margin : .2rem !default;
-.customScrollBar-container::-webkit-scrollbar {
- width: $scrollbar-width;
-}
-.customScrollBar-container::-webkit-scrollbar-button:start:decrement,
-.customScrollBar-container::-webkit-scrollbar-button:end:increment,
-.customScrollBar-container::-webkit-scrollbar-button:vertical:start:increment,
-.customScrollBar-container::-webkit-scrollbar-button:vertical:end:decrement {
- display: none;
-}
-.customScrollBar-container::-webkit-scrollbar-track:vertical,
-.customScrollBar-container::-webkit-scrollbar-track-piece {
- background-color: $black;
- border: 0;
- border-radius: #{$scrollbar-width/2};
-}
-::-webkit-scrollbar-thumb:vertical {
- height: $scrollbar-thumb-height;
- background-color: $scrollbar-thumb-color;
- border-radius: #{$scrollbar-width/2};
+@if $custom-scroll {
+
+ body {
+ &:not(.isDarkMode) {
+ --scrollbar-thumb-color : #{rgba(black, .35)};
+ --scrollbar-thumb-hover-color: #{rgba(black, .5)};
+ }
+
+ &.isDarkMode {
+ --scrollbar-thumb-color : #{rgba(white, .2)};
+ --scrollbar-thumb-hover-color: #{rgba(white, .5)};
+ }
+ }
+
+ * {
+ $real-size: $scrollbar-size + ($scrollbar-margin * 2);
+
+ // W3C, Firefox
+ scrollbar-width: thin;
+ scrollbar-color: var(--scrollbar-thumb-color) $scrollbar-track-color;
+
+ // webkit specific
+ &::-webkit-scrollbar {
+ width: $real-size;
+ height: $real-size;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border: $scrollbar-margin solid transparent; // Margin
+ background-clip: padding-box; // Booyah!
+ border-radius: $real-size/2;
+ background-color: var(--scrollbar-thumb-color);
+ }
+
+ &::-webkit-scrollbar-track {
+ background-color: $scrollbar-track-color;
+ }
+
+ &::-webkit-scrollbar-thumb:horizontal,
+ &::-webkit-scrollbar-thumb:vertical {
+ &:hover {
+ background-color: var(--scrollbar-thumb-hover-color);
+ }
+ }
+
+ &::-webkit-scrollbar-corner {
+ visibility: hidden;
+ }
+ }
}
diff --git a/templates/@theme-base/pm-styles/_pm-dark-theme.scss b/templates/@theme-base/pm-styles/_pm-dark-theme.scss
index 02f2d80..7e3dbbc 100644
--- a/templates/@theme-base/pm-styles/_pm-dark-theme.scss
+++ b/templates/@theme-base/pm-styles/_pm-dark-theme.scss
@@ -5,24 +5,38 @@
@import "./pm-buttons-mixins";
// forms/buttons
-.pm-button {
+.pm-button:not(.pm-button-blue):not(.pv-button-green):not(.pm-button--primary):not(.pm-button--primaryborderEvenInDarkMode):not(.pm-button--link):not(.pm-button--error):not(.pm-button--warning):not(.pm-button--redborder):not(.pm-button--primaryborder),
+.pm-button--info {
@include pm-button-dark;
}
-.pm-button-blueborder {
+
+// didn’t used extend, not possible in @media for design system website
+$primary-border-blue-selectors: ".pm-button-blueborder";
+@if ($pm-primary == $pm-blue) {
+ $primary-border-blue-selectors: $primary-border-blue-selectors + ", .pm-button--primaryborder";
+}
+#{$primary-border-blue-selectors} {
@include pm-button-blueborder-dark;
}
-.pv-button-greenborder {
+
+$primary-border-green-selectors: ".pv-button-greenborder";
+@if ($pm-primary == $pv-green) {
+ $primary-border-green-selectors: $primary-border-green-selectors + ", .pm-button--primaryborder";
+}
+#{$primary-border-green-selectors} {
@include pv-button-greenborder-dark;
}
-.pm-button-blue,
-.pm-button.pm-button-blue,
-.pv-button-green,
-.pm-button.pv-button-green {
- &[disabled],
- &.is-disabled {
- @include button-disabled-state-dm;
- }
+
+.pm-button--redborder,
+.pm-button.pm-button--redborder {
+ background-color: transparent;
+ &:focus,
+ &:hover,
+ &:not(div):active,
+ &:active {
+ color: $pm-global-warning;
+ }
}
.pm-button--link,
@@ -40,6 +54,21 @@ a, .link,
}
}
+.pm-group-button {
+ &[disabled],
+ &.is-disabled {
+ &.pm-button {
+ border-color: var(--bordercolor-input, $pm-global-border);
+ }
+ &.pm-button-blueborder {
+ border-color: $pm-primary-light;
+ }
+ &.pv-button-greenborder {
+ border-color: $pv-green-light;
+ }
+ }
+}
+
.pm-field {
&[type="search"] {
@@ -80,11 +109,16 @@ select.pm-field {
}
}
-
.searchbox-field[type="search"] {
background-image: none;
}
+.pm-toggle-label {
+ & > .pm-toggle-label-text:first-child .pm-toggle-label-img {
+ fill: $white;
+ }
+}
+
// loading
[aria-busy="true"] {
background-image: url(#{$path-images}loading-atom-smaller-dark.svg);
@@ -96,14 +130,29 @@ button[aria-busy="true"] {
+tr[aria-busy="true"] td,
td[aria-busy="true"] {
- position: relative;
- background-image: none;
&::before {
background-image: url(#{$path-images}loading-atom-smaller-dark.svg);
}
}
+.progressive[aria-busy="true"] {
+ &::before {
+ animation-name: backgroundLoading-dark;
+ }
+}
+
+@keyframes backgroundLoading-dark {
+ 0% {
+ background-color: $pm-secondary-grey;
+ }
+ 100% {
+ background-color: lighten($pm-secondary-grey, 10%);
+ }
+}
+
+
// others
details {
&[open] > summary {
@@ -115,25 +164,52 @@ summary {
}
+.appConfigBody-darkmode, // for Angular
+.isDarkMode {
+ .display-on-darkmode {
+ display: flex;
+ }
+ .hide-on-darkmode {
+ display: none;
+ }
+}
+
+
// quick and dirty
-.fill-global-grey,
-.fill-black { fill: $white; } // dirty, I know
+.fill-global-grey:not(.fill-pm-blue):not(.fill-primary),
+.fill-black:not(.fill-pm-blue):not(.fill-primary) { fill: $white; } // dirty, I know
+
+.fill-currentColor { fill: currentColor; } // to avoid some issues
+
+
+.qr-code {
+ border: 1px solid $white;
+}
+
+.pill-icon-attachment {
+ background-color: rgba(black, .45);
+
+}
// global
:root {
--bgcolor-item-column-list: #{$pm-global-grey};
+ --bgcolor-unread-item-column-list: #{$pm-global-altgrey};
--bgcolor-view-column-detail: #{$pm-secondary-grey};
--bgcolor-main-area: #{$pm-secondary-grey};
- --bgcolor-subnav: #{$pm-global-grey};
+ --bgcolor-context-bar: #{$pm-secondary-grey};
+ --bgcolor-subheader: #{$bluish-grey};
--bgcolor-toolbar: #{$pm-global-altgrey};
- --color-subnav-link: #{$white};
--color-main-area: #{$white};
- --fillcolor-icons: #{$white};
--bgcolor-disabled-checkboxes-radios: #{$pm-global-altgrey};
--bgcolor-item-column-active: #{$pm-blue-dark};
--bordercolor-input: #{$pm-tertiary-grey};
+ --bgcolor-muted: #{$pm-tertiary-grey};
--bgcolor-input: #{$pm-global-altgrey};
+ --bgcolor-highlight: #{$pm-global-altgrey};
--color-input: #{$white};
-} \ No newline at end of file
+ --dropdown-box-shadow: #{rgba(black, .75)};
+ --bgcolor-meterbar: #{rgba(black, .375)};
+}
diff --git a/templates/@theme-base/pm-styles/_pm-dropdown-logout.scss b/templates/@theme-base/pm-styles/_pm-dropdown-logout.scss
index 33b2b2f..66a51ee 100644
--- a/templates/@theme-base/pm-styles/_pm-dropdown-logout.scss
+++ b/templates/@theme-base/pm-styles/_pm-dropdown-logout.scss
@@ -1,41 +1,56 @@
.dropDown-logout-button {
- color: var(--color-nav-link, $white);
- .expand-caret {
- display: none;
- }
- &:focus,
- &:hover,
- &[aria-expanded="true"] {
- .expand-caret {
- display: flex;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- }
- .dropDown-logout-text {
- opacity: 0;
- }
- }
+ border-radius: $global-border-radius;
+ color: var(--color-nav-link, $white);
+
+ &:focus,
+ &:hover,
+ &[aria-expanded="true"] {
+ background-color: $navigation-hover-bg-color;
+
+ }
+
+ &:focus,
+ &:hover {
+ .dropDown-logout-initials {
+ background-color: rgba(0, 0, 0, 0.2);
+ }
+ }
+
+ &[aria-expanded="true"] {
+ .dropDown-logout-initials {
+ background-color: rgba(0, 0, 0, 0.5);
+ }
+ }
}
-.dropDown-logout-displayName {
- max-width: 15em;
+.dropDown-logout-text {
+ margin-top: auto;
+ margin-bottom: auto;
}
+
+// yes, but only on HUGE screens for looooooooooong accounts
+@include respond-to(1400, 'min') {
+ .dropDown-logout-button {
+ max-width: 18em;
+ }
+}
+
.dropDown-logout-email {
- font-size: 1rem;
+ font-size: 1rem;
}
+
.dropDown-logout-initials {
- border-color: var(--color-nav-link, $pm-global-border);
- min-width: 2.7em;
+ min-width: 2.5em;
+ min-height: 2.5em;
+ border: 1px solid var(--bordercolor-input, $pm-global-border);
+ color: $white;
}
@if $rtl-option == true {
- [dir="rtl"] {
- .dropDown-logout-button > span:first-child {
- margin-left: .5em;
- margin-right: 0;
- }
- }
+ [dir="rtl"] {
+ .dropDown-logout-button > span:first-child {
+ margin-left: .5em;
+ margin-right: 0;
+ }
+ }
}
diff --git a/templates/@theme-base/pm-styles/_pm-dropdown.scss b/templates/@theme-base/pm-styles/_pm-dropdown.scss
index 77569d7..c864c1a 100644
--- a/templates/@theme-base/pm-styles/_pm-dropdown.scss
+++ b/templates/@theme-base/pm-styles/_pm-dropdown.scss
@@ -19,10 +19,10 @@ $dropDown-narrow-width: 8em !default;
transform: scale(1,1);
visibility: visible;
transition-delay: 0s;
- width: $dropDown-width;
+ width: $dropDown-width;
background: var(--bgcolor-main-area, $white);
border-radius: $global-border-radius;
- box-shadow: 0 0 16px 3px rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 16px 3px $input-shadow-color;
color: var(--color-main-area, $pm-global-grey);
}
@@ -74,17 +74,13 @@ $dropDown-narrow-width: 8em !default;
min-height: 4em;
max-height: 30vh;
padding: 0; // no padding for the drop shadow :-\
- margin: 0 0 0 1em;
-
+ margin: 0;
+
background: var(--bgcolor-main-area, $white) no-repeat;
background-image: radial-gradient(farthest-side at 50% 0,var(--bordercolor-input, #acb0bf),transparent),radial-gradient(farthest-side at 50% 100%,var(--bordercolor-input, #acb0bf),transparent);
background-position: 50% 0, 0 100%;
background-size: calc(100% - 20px) 3px;
- > * {
- margin-right: .5em;
- }
-
}
.dropDown-contentInner {
&::before,
@@ -124,7 +120,7 @@ $dropDown-narrow-width: 8em !default;
.dropDown-content::before {
content: '';
position: absolute;
- top: -2rem;
+ top: -2rem;
left: calc(50% - 1rem);
width: 1rem;
height: 1rem;
@@ -173,10 +169,20 @@ $dropDown-narrow-width: 8em !default;
}
}
-.dropDown-link {
+.dropDown-link,
+.dropDown-link:focus,
+.dropDown-link:hover,
+.dropDown-link:active {
color: currentColor;
+ text-decoration: none;
+}
+.dropDown-item:focus-within,
+.dropDown-item:hover {
+ background-color: var(--bgcolor-input, $pm-global-light);
+}
+.dropDown-item {
+ padding-left: 1em;
}
-
/* border on items */
.dropDown-item + .dropDown-item {
@@ -189,4 +195,4 @@ $dropDown-narrow-width: 8em !default;
}
.dropDown [aria-expanded="true"] .expand-caret {
@extend .rotateX-180;
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-editableSection.scss b/templates/@theme-base/pm-styles/_pm-editableSection.scss
new file mode 100644
index 0000000..b629c41
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-editableSection.scss
@@ -0,0 +1,30 @@
+@import '~design-system/_sass/reusable-components/_design-system-config.scss';
+
+.editableSection-container {
+ grid-template-columns: min-content minmax(5em, 1fr);
+ > .border-bottom {
+ padding-bottom: 1em;
+ }
+
+ > :not(.border-bottom) {
+ margin-top: 1em;
+ }
+
+ // not enough place
+ &--sizeTablet {
+ @include respond-to(780) {
+ --label-width: 15em;
+ }
+ }
+
+ @include respond-to($breakpoint-small) {
+ grid-template-columns: auto;
+ gap: .5em;
+ > .onmobile-pb0 {
+ padding-bottom: 0;
+ }
+ > :not(.border-bottom) {
+ margin-top: 0;
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-ellipsis-loader.scss b/templates/@theme-base/pm-styles/_pm-ellipsis-loader.scss
new file mode 100644
index 0000000..89db271
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-ellipsis-loader.scss
@@ -0,0 +1,19 @@
+.ellipsis-loader {
+ display: inline-block;
+ width: 1.4em;
+ vertical-align: baseline;
+ text-align: left;
+
+ &::before {
+ content: '\00a0';
+ font-family: monospace;
+ animation: ellipsis-loading linear 1s infinite;
+ }
+}
+
+@keyframes ellipsis-loading {
+ 0% { content: '\00a0'; }
+ 25% { content: '.'; }
+ 50% { content: '..'; }
+ 75% { content: '...'; }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-forms.scss b/templates/@theme-base/pm-styles/_pm-forms.scss
index c01ba51..3d424fb 100644
--- a/templates/@theme-base/pm-styles/_pm-forms.scss
+++ b/templates/@theme-base/pm-styles/_pm-forms.scss
@@ -1,7 +1,9 @@
/* input design */
+.placeholder,
::placeholder {
color: var(--color-input, rgba($pm-global-grey, .65));
- font-style: italic;
+ font-style: normal;
+ opacity: .6;
}
// fix "autofill state"
@@ -24,6 +26,7 @@ $field-container: 26rem !default;
width: $field-container;
@extend .mw100;
@extend .inbl;
+ @extend .relative;
&.auto {
@extend .auto;
}
@@ -37,11 +40,17 @@ $field-container: 26rem !default;
border-radius: $global-border-radius;
color: var(--color-input, $pm-global-grey);
outline: 0;
+ height: $default-height-fields;
+ &.pm-field--tiny,
+ &.pm-field--small,
+ &.pm-field--large {
+ height: auto;
+ }
&:focus,
&.focus,
&:focus-within {
background-color: var(--bgcolor-main-area, $white);
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 10px 0 $input-shadow-color;
}
&[aria-invalid="true"]:not(:focus),
&[aria-invalid="true"]:not(.ng-pristine) {
@@ -53,11 +62,13 @@ $field-container: 26rem !default;
}
&[disabled] {
color: rgba( $pm-global-grey, .3 );
- font-style: italic;
}
&.w100 {
width: 100%;
}
+ &.wauto {
+ width: auto;
+ }
&:-moz-ui-invalid { // fixes some Firefox issues with HTML5 validation
box-shadow: none;
}
@@ -70,6 +81,10 @@ $field-container: 26rem !default;
display: none;
}
}
+
+ &[type="number"] {
+ padding-right: .25em;
+ }
}
@if $rtl-option == true {
[dir="rtl"] {
@@ -85,12 +100,58 @@ select.pm-field {
background: var(--bgcolor-input, $pm-input-background) url("#{$path-images}sprite-for-css-only.svg#css-caret") calc(100% - 6px) 50% no-repeat;
background-size: 1.5rem;
padding-left: 1em;
- height: 3.5rem;
padding-right: 20px;
text-overflow: ellipsis;
+ overflow: hidden;
+ cursor: pointer;
&::-ms-expand {
display: none;
}
+ > optgroup {
+ background-color: var(--bgcolor-highlight, $pm-global-light);
+ }
+ &.pm-field--linkSelect {
+ border: 1px solid transparent;
+ padding-left: 0;
+ width: auto;
+ color: $pm-primary;
+ padding-right: 2.5rem;
+ @if ($pm-primary == $pm-blue) {
+ background-image: url("#{$path-images}sprite-for-css-only.svg#css-caret-primary-blue");
+ }
+ @else {
+ background-image: url("#{$path-images}sprite-for-css-only.svg#css-caret-primary-green");
+ }
+ &,
+ &:focus,
+ &.focus,
+ &:focus-within,
+ &:hover {
+ background-color: transparent;
+ box-shadow: none;
+ }
+ &:focus,
+ &.focus,
+ &:focus-within,
+ &:hover {
+ background-image: url("#{$path-images}sprite-for-css-only.svg#css-caret");
+ border-color: transparent;
+ text-decoration: underline;
+ color: $color-hover;
+ }
+
+ > * {
+ color: $pm-primary;
+ }
+ }
+}
+
+
+textarea {
+ min-height: $default-height-fields; // Equals pm-field inputs height
+ &.pm-field {
+ height: auto;
+ }
}
/* firefox bug */
@@ -154,6 +215,10 @@ textarea[required].pm-field.field-pristine:invalid {
height: 1.6rem;
margin: auto .5rem auto 0;
}
+.item-icon-compact .pm-checkbox-fakecheck {
+ margin: auto;
+ background: var(--bgcolor-input, $white);
+}
.pm-checkbox-fakecheck-img {
margin: auto;
width: 1rem;
@@ -168,7 +233,7 @@ textarea[required].pm-field.field-pristine:invalid {
}
}
&:focus + .pm-checkbox-fakecheck {
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 10px 0 $input-shadow-color;
}
&[disabled] + .pm-checkbox-fakecheck,
&:indeterminate + .pm-checkbox-fakecheck {
@@ -200,6 +265,10 @@ textarea[required].pm-field.field-pristine:invalid {
@extend .pm-checkbox-fakecheck;
border-radius: 50%;
}
+.pm-radio--onTop .pm-radio-fakeradio {
+ margin-top: .25em;
+}
+
.pm-radio-fakeradio::before {
content: '';
margin: auto;
@@ -210,6 +279,7 @@ textarea[required].pm-field.field-pristine:invalid {
transform: scale(0);
transition: .15s transform linear;
}
+
.pm-radio {
@extend .sr-only;
&:checked + .pm-radio-fakeradio::before {
@@ -217,7 +287,7 @@ textarea[required].pm-field.field-pristine:invalid {
transform: scale(1);
}
&:focus + .pm-radio-fakeradio {
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 10px 0 $input-shadow-color;
}
&[disabled] + .pm-radio-fakeradio {
background: var(--bgcolor-disabled-checkboxes-radios, $pm-global-muted);
@@ -225,7 +295,7 @@ textarea[required].pm-field.field-pristine:invalid {
}
-/* toogle */
+/* toggle */
$width: 5.5em !default;
.pm-toggle-label {
margin-top: .15em;
@@ -233,17 +303,18 @@ $width: 5.5em !default;
width: $width;
display: inline-flex;
border: 1px solid var(--bordercolor-input, $pm-global-border);
- background: var(--bgcolor-input, #fcfdff);
+ background: var(--bgcolor-view-column-detail, $pm-input-background);
border-radius: 2rem;
padding: 2px;
position: relative;
+ transition: border-color .15s ease-out;
&::before {
content: '';
position: absolute;
width: calc( #{$width/2} - 2px);
transition: transform .25s ease, background-color .25s ease, border-color .25s linear;
border-radius: 2rem;
- background: var(--bgcolor-input, $pm-global-muted);
+ background: var(--bgcolor-context-bar, $pm-global-muted);
top: 2px;
left: 0;
bottom: 2px;
@@ -259,8 +330,10 @@ $width: 5.5em !default;
width: #{$width/2};
position: relative;
z-index: 2;
- transition: fill .1s steps(1, end);
display: inline-flex;
+ & .pm-toggle-label-img {
+ transition: fill .1s steps(1, end);
+ }
}
}
@if $rtl-option == true {
@@ -275,10 +348,24 @@ $width: 5.5em !default;
}
}
+.pm-toggle-label-img {
+ margin: auto;
+ width: 1.6rem;
+ height: 1.6rem;
+ fill: var(--bordercolor-input, $black);
+ .pm-toggle-label--theme-toggle & {
+ fill: black;
+ }
+}
+
+// checked state
.pm-toggle-checkbox {
@extend .invisible;
&:checked + .pm-toggle-label {
- & > .pm-toggle-label-text:last-child {
+ & > .pm-toggle-label-text:first-child .pm-toggle-label-img {
+ fill: var(--bordercolor-input, $black);
+ }
+ & > .pm-toggle-label-text:last-child .pm-toggle-label-img {
fill: $white;
}
&::before {
@@ -288,8 +375,17 @@ $width: 5.5em !default;
border-color: $pm-primary-dark;
}
}
+ &:checked + .pm-toggle-label--theme-toggle { // Theme toggle inside user dropdown
+ & > .pm-toggle-label-text:last-child .pm-toggle-label-img {
+ fill: #fce988;
+ }
+ &::before {
+ background: rgba(black, .75);
+ border-color: rgba(white, .25);
+ }
+ }
&:focus + .pm-toggle-label {
- box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.16);
+ box-shadow: 0 0 10px 0 $input-shadow-color;
}
&[disabled] + .pm-toggle-label {
background: rgba($pm-global-muted, .6);
@@ -327,11 +423,7 @@ $width: 5.5em !default;
}
}
}
-.pm-toggle-label-img {
- margin: auto;
- width: 1.6rem;
- height: 1.6rem;
-}
+
.pm-toggle-label--small {
margin-top: .25em;
@@ -345,21 +437,27 @@ $width: 5.5em !default;
/* label */
-$pm-label-width: 18em !default;
+// $pm-label-width defined in global vars
.pm-label {
padding-top: .5em;
width: var(--label-width, $pm-label-width);
padding-right: .5em;
+ max-width: 100%;
+ flex-shrink: 0;
&.pt0 {
padding-top: 0;
}
&.auto {
width: auto;
}
+ &--small {
+ font-size: 1.2rem;
+ line-height: 2;
+ }
}
// case for forms labelled only with icons (calendar popover, etc.)
-$pm-label-icon-width: 2em !default;
+$pm-label-icon-width: 2.4em !default;
.pm-form--iconLabels .pm-label {
width: $pm-label-icon-width;
}
@@ -373,6 +471,7 @@ $pm-label-icon-width: 2em !default;
/* field with icon */
.pm-field-icon-container {
@extend .pm-field; // added focus-within inside on pm-field for this fake-field :)
+ min-height: calc(#{$default-height-fields} + 2px);
padding: 0;
> .pm-field {
border: 0;
@@ -393,25 +492,39 @@ $pm-label-icon-width: 2em !default;
}
}
+/* @protonmail.com field */
+.pm-field--username,
+.signLayout-container .pm-field--username.pm-field--username {
+ padding-right: var(--padding-right-field-above, 9em);
+}
+
/* special case for very large inputs in modals, like rich text editor */
.pm-modalContainer .pm-field-container--full {
width: calc(100% - var(--label-width, #{$pm-label-width}));
}
-@include respond-to(1360) {
+@include respond-to(1360) {
.pm-modalContainer .pm-field-container--full {
width: $field-container;
}
}
-@include respond-to(830) {
+@include respond-to(830) {
.pm-modalContainer .pm-field-container--full {
width: calc(100% - var(--label-width, #{$pm-label-width}));
}
}
-@include respond-to($breakpoint-small) {
+@include respond-to($breakpoint-small) {
.pm-modalContainer .pm-field-container--full {
width: 100%;
}
}
-/* end special case */ \ No newline at end of file
+/* end special case */
+
+
+/* special stupid case for signup iframe challenge... not using same styles for the moment */
+.signLayout-container {
+ .pm-field--username {
+ padding: em(10) em(16); // design want 42px height (actually 41 to avoid .5px)
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-header-searchbar.scss b/templates/@theme-base/pm-styles/_pm-header-searchbar.scss
index 44a14ef..169dc02 100644
--- a/templates/@theme-base/pm-styles/_pm-header-searchbar.scss
+++ b/templates/@theme-base/pm-styles/_pm-header-searchbar.scss
@@ -47,16 +47,31 @@
}
.searchbox-advanced-search-button {
position: absolute;
- right: 0;
- top: 0;
- bottom: 0;
- padding: 0 1rem;
+ right: .25em;
+ top: .5em;
+ bottom: .5em;
+ padding: 0 .5rem;
+ border-radius: 50%;
+ &:focus,
+ &:hover,
+ &:active {
+ background-color: $pm-global-altgrey;
+ }
& > .searchbox-advanced-search-icon {
fill: var(--fillcolor-icons, $white);
}
}
-@include respond-to($breakpoint-small) {
+.searchbox-container--reset-advanced {
+ .searchbox-field[type="search"] {
+ padding-right: 6.25rem;
+ }
+ [type="reset"].searchbox-advanced-search-button {
+ right: 2.75rem;
+ }
+}
+
+@include respond-to($breakpoint-small) {
.searchbox-advanced-search-button {
position: static;
}
@@ -64,7 +79,7 @@
@if $rtl-option == true {
[dir="rtl"] {
- .searchbox-field[type="search"] {
+ .searchbox-field[type="search"] {
padding-right: calc(2em + 2rem);
padding-left: 4rem;
background-image: none;
@@ -81,5 +96,15 @@
right: auto;
left: 0;
}
+ .searchbox-container--reset-advanced {
+ .searchbox-field[type="search"] {
+ padding-right: calc(2em + 2rem);
+ padding-left: 6rem;
+ }
+ .searchbox-advanced-search-button {
+ right: auto;
+ left: 2.5rem;
+ }
+ }
}
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-header-topnav.scss b/templates/@theme-base/pm-styles/_pm-header-topnav.scss
index 65af0f9..64b60db 100644
--- a/templates/@theme-base/pm-styles/_pm-header-topnav.scss
+++ b/templates/@theme-base/pm-styles/_pm-header-topnav.scss
@@ -1,101 +1,143 @@
.topnav-link {
- border: 1px solid transparent;
- padding: 1rem;
- color: var(--color-nav-link, $white);
- &:focus,
- &:hover,
- &:active,
- &[aria-current="true"] {
- color: var(--color-nav-active, $pm-primary);
- text-decoration: none;
-
- > .topnav-icon {
- fill: var(--color-nav-active, $pm-primary);
- }
- }
- &[aria-current="true"] {
- font-weight: bold;
- }
- & > svg {
- fill: var(--fillcolor-icons, $white);
- }
+ border: 1px solid transparent;
+ border-radius: $global-border-radius;
+ padding: 1.25rem 1.75rem;
+ color: var(--color-nav-link, $white);
+ text-decoration: none;
+
+ &:focus,
+ &:hover,
+ &:active,
+ &[aria-current="true"] {
+ background-color: $navigation-hover-bg-color;
+ color: inherit;
+ text-decoration: none;
+ }
+
+ &[aria-current="true"] {
+ font-weight: bold;
+ }
+
+ & > svg {
+ fill: var(--fillcolor-icons, $white);
+ }
+ &--blackfriday:before {
+ content: '';
+ position: absolute;
+ width: 7px;
+ height: 7px;
+ background: $pm-global-warning;
+ border-radius: 50%;
+ left: calc(1.75rem + 15px);
+ top: calc(50% - 14px);
+ }
}
+
@if $rtl-option == true {
- [dir="rtl"] {
- .topnav-list {
- margin-left: 0;
- margin-right: 1em;
- }
- .topnav-icon {
- margin-right: 0;
- margin-left: .5em;
- }
- }
+ [dir="rtl"] {
+ .topnav-list {
+ margin-left: 0;
+ margin-right: 1em;
+ }
+ .topnav-icon {
+ margin-right: 0;
+ margin-left: .5em;
+ }
+ }
}
/* Decrease margins (was 1em) */
@include respond-to(1500) {
-
- .topnav-list {
- > li {
- margin-right: 1px;
- }
- }
-
+ .topnav-list {
+ > li {
+ margin-right: 1px;
+ }
+ }
}
@include respond-to(1300) {
-
- .topnav-list--four-elements {
- .navigation-title {
- // equivalent of .sr-only, but impossible to extend in a breakpoint
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
- }
- .topnav-icon {
- margin-right: 0;
- &.expand-caret {
- margin-left: .25em;
- }
- }
- }
-
-
+ .topnav-list--four-elements {
+ .navigation-title {
+ // equivalent of .sr-only, but impossible to extend in a breakpoint
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+ }
+
+ .topnav-icon {
+ margin-right: 0;
+
+ &.expand-caret {
+ margin-left: .25em;
+ }
+ }
+ }
}
+@include respond-to(870) {
+ .topnav-list--four-elements {
+
+ .topnav-link {
+ padding-left: .5rem;
+ padding-right: .5rem;
+ }
+ .topnav-link--blackfriday:before {
+ left: calc(.5rem + 15px);
+ }
+ }
+}
@include respond-to(1100) {
+ .navigation-title {
+ // equivalent of .sr-only, but impossible to extend in a breakpoint
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+ }
+
+ .topnav-icon {
+ margin-right: 0;
+ }
+}
- .navigation-title {
- // equivalent of .sr-only, but impossible to extend in a breakpoint
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
- }
- .topnav-icon {
- margin-right: 0;
- }
+@include respond-to($breakpoint-small) {
+ .topnav-icon {
+ width: 24px;
+ height: 24px;
+ }
+ .topnav-list--four-elements .topnav-link {
+ padding-left: 1.75rem;
+ padding-right: 1.75rem;
+ }
+ .topnav-list--four-elements .topnav-link--blackfriday:before,
+ .topnav-link--blackfriday:before {
+ left: calc(1.75rem + 22px);
+ top: calc(50% - 18px);
+ }
}
+@include respond-to($breakpoint-tiny) {
+ .topnav-list--four-elements .topnav-link,
+ .topnav-link {
+ padding-left: .5rem;
+ padding-right: .5rem;
+ }
+ .topnav-list--four-elements .topnav-link--blackfriday:before,
+ .topnav-link--blackfriday:before {
+ left: calc(.5rem + 22px);
+ }
+}
-
-@include respond-to($breakpoint-small) {
- .topnav-icon {
- width: 25px;
- height: 25px;
- }
-} \ No newline at end of file
diff --git a/templates/@theme-base/pm-styles/_pm-input-button.scss b/templates/@theme-base/pm-styles/_pm-input-button.scss
new file mode 100644
index 0000000..2a0f313
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-input-button.scss
@@ -0,0 +1,27 @@
+.input-button.pm-button {
+ width: 2.5em;
+ padding: em(6); // Same as inputs
+}
+
+.input-button-input {
+ &:focus + .input-button {
+ // Same as buttons
+ box-shadow: 0 0 em(5) 0 rgba(0, 0, 0, 0.2);
+ }
+
+ &:checked + .input-button {
+ // Need !important because current dark mode management. Remove those as soon as possible.
+ background-color: $pm-primary !important;
+ border-color: $pm-primary !important;
+ }
+
+ &:checked:not(:active) + .input-button {
+ // Need !important because current dark mode management. Remove those as soon as possible.
+ color: $white !important;
+ }
+
+ &:active + .input-button {
+ // Need !important because current dark mode management. Remove those as soon as possible.
+ border-color: $pm-global-border !important;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-label-stack.scss b/templates/@theme-base/pm-styles/_pm-label-stack.scss
new file mode 100644
index 0000000..abba58d
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-label-stack.scss
@@ -0,0 +1,134 @@
+.label-stack {
+ --item-wide: 10em;
+ --item-narrow: 1.25em;
+ --item-scale: .7;
+
+ font-weight: normal; // Overrides when unread email context
+
+ &.mw100 {
+ --item-wide: 100%;
+ }
+
+ &-item,
+ &-overflow-count {
+ border-radius: 1em;
+ line-height: 1;
+ }
+
+ &-item {
+ max-width: var(--item-wide);
+ margin: .125em;
+ background-color: var(--color, currentColor);
+
+ &-button,
+ &-delete {
+ color: white;
+ }
+
+ &-button {
+ padding: .125em .5em;
+ text-align: left;
+ }
+
+ &-delete {
+ margin-right: .5em;
+
+ &-icon {
+ display: block;
+ }
+ }
+ }
+
+ &-overflow-count {
+ background-color: rgba(black, .5);
+ margin-left: .125em;
+ cursor: pointer;
+
+ & > * {
+ display: block;
+ padding: .125em .375em .125em .25em;
+ color: white;
+ }
+ }
+
+ &:not(.is-stacked) {
+ margin: -.125em;
+
+ .label-stack-item {
+ &:hover,
+ &:focus-within {
+ box-shadow: 0 0 em(5) 0 rgba(black, .2); // Same hover style than buttons
+ }
+ }
+ }
+
+ &.is-stacked {
+ overflow: hidden;
+ align-items: baseline;
+ flex-wrap: nowrap;
+
+ .label-stack-item {
+ overflow: hidden;
+ margin: 0;
+ transition: transform .1s .2s easing(easeOutQuart),
+ max-width .2s 0s easing(easeOutQuart);
+
+ &:hover,
+ &:focus-within,
+ &:first-child {
+ transition-delay: 0s, .075s;
+ }
+
+ &:not(:first-child) {
+ --button-opacity: 0;
+ max-width: var(--item-narrow);
+ transform: scale(var(--item-scale));
+ }
+
+ &-button,
+ &-delete-icon {
+ transition: opacity .2s .1s easing(easeOutQuart);
+ }
+
+ &-button {
+ opacity: var(--button-opacity, 1);
+ }
+
+ &-delete {
+ overflow: hidden;
+
+ &-icon {
+ opacity: var(--button-opacity, 1);
+ }
+ }
+ }
+
+ @include respond-to($breakpoint-small, 'max') {
+ .label-stack-item-delete {
+ display: none;
+ }
+ }
+
+ @include respond-to($breakpoint-small, 'min') {
+ &:hover,
+ &:focus-within {
+ .label-stack-item {
+ // Avoid gitch effect on first-child
+ &:first-child:not(:hover):not(:focus-within) {
+ --button-opacity: 0;
+ max-width: var(--item-narrow);
+ transform: scale(var(--item-scale));
+ transition-delay: .2s, 0s;
+ }
+
+ &:not(:first-child):hover,
+ &:not(:first-child):focus-within {
+ --button-opacity: 1;
+ max-width: var(--item-wide);
+ transform: scale(1);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-layout.scss b/templates/@theme-base/pm-styles/_pm-layout.scss
index d459ad2..5ded72d 100644
--- a/templates/@theme-base/pm-styles/_pm-layout.scss
+++ b/templates/@theme-base/pm-styles/_pm-layout.scss
@@ -11,6 +11,7 @@ hr {
/* rounded corners */
.rounded { border-radius: $global-border-radius; }
.rounded50 { border-radius: 50%; }
+.rounded1e { border-radius: 1em; }
.rounded0 { border-radius: 0; }
.rounded0-left { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.rounded0-right { border-top-right-radius: 0; border-bottom-right-radius: 0; }
@@ -19,4 +20,4 @@ kbd {
@extend .rounded;
background-color: var(--bgcolor-main-area, $pm-global-light);
border: 1px solid var(--bordercolor-input, $pm-global-border);
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-loader-animation.scss b/templates/@theme-base/pm-styles/_pm-loader-animation.scss
index be2e286..79d4682 100644
--- a/templates/@theme-base/pm-styles/_pm-loader-animation.scss
+++ b/templates/@theme-base/pm-styles/_pm-loader-animation.scss
@@ -1,117 +1,79 @@
-$loader-size-big: 200px !default;
-$stroke-width-big: 4 !default;
-
-.loadingAnimation {
- animation: protonRotate 3s linear infinite;
- will-change: transform;
-}
-
-
-@keyframes protonRotate {
- 0% {
- transform: rotate(0);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
-
-
-.loadingAnimation-circle {
- fill: transparent;
- stroke: var(--fillcolor-icons, $pm-global-grey);
- stroke-width: $stroke-width-big;
- transform-origin: 50%;
- will-change: transform;
-}
-
-.loadingAnimation-circle--pm-primary {
- stroke: $pm-primary;
+// Init values
+$animation-duration : 3s !default;
+$second-circle-time-offset: .125s !default;
+
+// We need to adjust animation for each size.
+$stroke-map: (
+ default: 4.5,
+ bold : 6.5,
+ xbold : 15
+) !default;
+
+.loadingAnimation {
+ // We need a different duration than each circle for the whole loader
+ // to have an animation that seems visually "random", so here, duration +20% and ease.
+ animation: loaderRotation #{$animation-duration * 1.2} ease-in-out infinite;
+ will-change: transform;
+
+ @keyframes loaderRotation {
+ from { transform: rotate(0); }
+ to { transform: rotate(360deg); }
+ }
+
+ &-circle {
+ transform-origin: 50%;
+ fill: none;
+ stroke: currentColor;
+ stroke-width: map-get($stroke-map, default);
+ will-change: transform;
+ animation: $animation-duration linear infinite;
+
+ &:nth-of-type(1) {
+ animation-name: loaderOrbitX;
+ }
+
+ &:nth-of-type(2) {
+ animation-name: loaderOrbitY;
+ animation-delay: $second-circle-time-offset;
+ }
+ }
+
+ @each $name, $value in $stroke-map {
+
+ @if $name != 'default' {
+ &.is-#{$name} &-circle {
+ stroke-width: $value;
+
+ &:nth-of-type(1) {
+ animation-name: #{'loaderOrbitX-' + $name};
+ }
+
+ &:nth-of-type(2) {
+ animation-name: #{'loaderOrbitY-' + $name};
+ }
+ }
+ }
+
+ @each $axis in (X,Y) {
+ @keyframes #{'loaderOrbit' + $axis + if($name == 'default', '', '-' + $name)} {
+ from {
+ transform: #{'rotate' + $axis + '(0)'};
+ stroke-width: $value;
+ }
+ 25% {
+ stroke-width: $value * 2;
+ }
+ 50% {
+ stroke-width: $value;
+ }
+ 75% {
+ stroke-width: $value * 2;
+ }
+ to {
+ transform: #{'rotate' + $axis + '(360deg)'};
+ stroke-width: $value;
+ }
+ }
+ }
+ }
}
-.loadingAnimation-circle--global-light {
- stroke: $pm-global-light;
-}
-
-.loadingAnimation-orbit1 {
- animation: protonOrbit1 3s linear infinite;
-}
-.loadingAnimation-orbit2 {
- animation: protonOrbit2 3s linear infinite;
-}
-
-
-// Generates orbit animation function
-// @author Nicolas Hoffmann
-// @param {String} $name - animation name
-// @param {String} $stroke-width - Default stroke-width of your circle
-// @param {Float} $stroke-width-ratioplus - ratio to increase $stroke-width value (mitigates disparition effect during rotation)
-// @param {String} $type-rotate
-@mixin orbit( $name, $stroke-width, $stroke-width-ratioplus, $type-rotate ){
-
- @keyframes #{$name} {
- 0% {
- transform: unquote("#{$type-rotate}(0)");
- stroke-width: $stroke-width;
- }
-
- 25% {
- stroke-width: $stroke-width*$stroke-width-ratioplus;
- }
-
- 50% {
- stroke-width: $stroke-width;
- }
-
- 75% {
- stroke-width: $stroke-width*$stroke-width-ratioplus;
- }
-
- 100% {
- transform: unquote("#{$type-rotate}(360deg)");
- stroke-width: $stroke-width;
- }
- }
-
-}
-
-@include orbit('protonOrbit1', $stroke-width-big, 2.5, 'rotateX');
-@include orbit('protonOrbit2', $stroke-width-big, 2.5, 'rotateY');
-
-
-
-/* smaller version */
-$loader-size-smaller: 20px !default;
-$stroke-width-smaller: 1 !default;
-
-.loadingAnimation-circle--smaller {
- stroke-width: $stroke-width-smaller;
-}
-
-.loadingAnimation-orbit1--smaller {
- animation: protonOrbit1-smaller 3s linear infinite;
-}
-.loadingAnimation-orbit2--smaller {
- animation: protonOrbit2-smaller 3s linear infinite;
-}
-
-@include orbit('protonOrbit1-smaller', $stroke-width-smaller, 2, 'rotateX');
-@include orbit('protonOrbit2-smaller', $stroke-width-smaller, 2, 'rotateY');
-
-
-
-.atomLoader-text::after {
- position: absolute;
- overflow: hidden;
- display: inline-block;
- animation: ellipsis steps(4,end) 900ms infinite;
- content: "\2026"; /* ascii code for the ellipsis character */
- width: 0;
-}
-
-@keyframes ellipsis {
- to { width: 1.25em }
-}
-
-
-
diff --git a/templates/@theme-base/pm-styles/_pm-loadingcontent.scss b/templates/@theme-base/pm-styles/_pm-loadingcontent.scss
index bafb0e6..0cf480b 100644
--- a/templates/@theme-base/pm-styles/_pm-loadingcontent.scss
+++ b/templates/@theme-base/pm-styles/_pm-loadingcontent.scss
@@ -1,54 +1,76 @@
[aria-busy="true"] {
- background-image: url(#{$path-images}loading-atom-smaller.svg);
- background-position: 50% 50%;
- background-repeat: no-repeat;
+ background-image: url(#{$path-images}loading-atom-smaller.svg);
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
}
button[aria-busy="true"] {
- background-image: url(#{$path-images}loading-atom-smaller-disabled.svg);
- background-position: calc(100% - 4px) 50%;
- background-size: 10px 10px;
- background-repeat: no-repeat;
+ padding-left: em(5);
+ padding-right: em(27);
+ background-image: url(#{$path-images}loading-atom-smaller-disabled.svg);
+ background-position: calc(100% - .25em) 50%;
+ background-size: 1.5em;
+ background-repeat: no-repeat;
+}
+
+.pm-button--small[aria-busy="true"] {
+ padding-left: em(2);
+ padding-right: em(22);
+ background-size: 1.25em;
+ background-position: calc(100% - .125em) 50%;
}
tr[aria-busy="true"] {
- height: 5rem;
+ background-image: none;
+
+ td::after {
+ content: '\00a0'; // Force a height with default line height
+ pointer-events: none;
+ visibility: hidden;
+ }
}
+tr[aria-busy="true"] td,
td[aria-busy="true"] {
- position: relative;
- background-image: none;
- &::before {
- content: '';
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
- background: $white url(#{$path-images}loading-atom-smaller.svg) 50% 50% no-repeat;
- }
+ position: relative;
+ background-image: none;
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ background: var(--bgcolor-main-area, white) url(#{$path-images}loading-atom-smaller.svg) 50% 50% no-repeat;
+ }
+}
+
+svg[aria-busy="true"] {
+ & > * {
+ visibility: hidden;
+ }
}
.progressive[aria-busy="true"] {
- position: relative;
- background-image: none;
- &::before {
- content: '';
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
- background-image: none;
- animation: backgroundLoading 1s linear infinite alternate;
- }
+ position: relative;
+ background-image: none;
+ &::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ bottom: 0;
+ background-image: none;
+ animation: backgroundLoading 1s linear infinite alternate;
+ }
}
@keyframes backgroundLoading {
- 0% {
- background-color: $white;
- }
- 100% {
- background-color: #eee;
- }
-} \ No newline at end of file
+ 0% {
+ background-color: $white;
+ }
+ 100% {
+ background-color: #eee;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-meterbar.scss b/templates/@theme-base/pm-styles/_pm-meterbar.scss
index 0e395ef..b717caf 100644
--- a/templates/@theme-base/pm-styles/_pm-meterbar.scss
+++ b/templates/@theme-base/pm-styles/_pm-meterbar.scss
@@ -1,114 +1,88 @@
-/*
- * Space remaining bar
- */
-$meterbar-height: 6px !default;
-
-.spacebar-container {
- padding: 1rem 2rem;
- color: var(--color-standard-text, $white);
-}
+@mixin meterbar-size($size: 1.5rem) {
+ height: $size;
+ border-radius: #{$size/2};
-.spacebar {
- /* Reset the default appearance */
- //-webkit-appearance: none; // well, because Chrome.
- -moz-appearance: none;
- //-ms-appearance: none;
- /* autoprefixer: ignore next */
- appearance: none;
-
- height: $meterbar-height;
- border-radius: #{$meterbar-height/2};
- background: var(--bgcolor-spacebar, $black);
-
- &::-webkit-meter-bar {
- background: var(--bgcolor-spacebar, $black);
- border-radius: #{$meterbar-height/2};
- }
-
- // &::-webkit-meter-optimum-value {
- // background: $pm-primary;
- // border-radius: #{$meterbar-height/2};
- // }
- &::-webkit-meter-optimum-value {
- background: $pm-primary;
- border-radius: #{$meterbar-height/2};
- }
- &:-moz-meter-optimum::-moz-meter-bar {
- border-radius: #{$meterbar-height/2};
- background: $pm-primary;
- }
-
-}
+ &::-moz-meter-bar {
+ border-radius: #{$size/2};
+ }
+
+ &::-webkit-meter-bar {
+ height: $size; // Chrome 83 does not make meter and its bar the same height -_-v
+ }
+
+ &::-webkit-meter-optimum-value {
+ border-radius: #{$size/2};
+ }
-// .spacebar-percent {
-// border-radius: 3px;
-// background: $pm-primary;
-// height: 6px;
-// position: absolute;
-// top: 0;
-// left: 0;
-// }
-
-/* to target IE/EDGE: hack */
-// _:-ms-input-placeholder, :root {
-// .spacebar {
-// visibility: hidden;
-// }
-// .spacebar-gauge {
-// visibility: visible;
-// }
-// }
-
-// .spacebar-version {
-// color: rgba($white, .3);
-// }
-
-
-.setting-meterbar {
- //-webkit-appearance: none;
- -moz-appearance: none;
- //-ms-appearance: none;
- /* autoprefixer: ignore next */
- appearance: none;
- height: 1.5rem;
- background: var(--bordercolor-input, $pm-global-muted);
- box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);
-
- &::-webkit-meter-bar {
- background: none; /* Required to get rid of the default background property */
- display: inherit;
- border: 0; // For Edge
- }
- &::-moz-meter-bar {
- display: inherit;
- }
- &::-webkit-meter-optimum-value {
- background: $pm-global-success;
- }
- &::-webkit-meter-suboptimum-value {
- background: $pm-global-attention;
- }
- &::-webkit-meter-even-less-good-value {
- background: $pm-global-warning;
- }
-
- &:-moz-meter-optimum::-moz-meter-bar {
- background: $pm-global-success;
- }
- &:-moz-meter-sub-optimum::-moz-meter-bar {
- background: $pm-global-attention;
- }
- &:-moz-meter-sub-sub-optimum::-moz-meter-bar {
- background: $pm-global-warning;
- }
+ &::-webkit-meter-suboptimum-value {
+ border-radius: #{$size/2};
+ }
+ &::-webkit-meter-even-less-good-value {
+ border-radius: #{$size/2};
+ }
}
-.setting-meterbar--high {
- &::-webkit-meter-suboptimum-value {
- background: $pm-global-warning;
- }
- &:-moz-meter-sub-optimum::-moz-meter-bar {
- background-color: $pm-global-warning;
- }
-} \ No newline at end of file
+.meterbar {
+ @include meterbar-size;
+
+ width: 100%;
+ background: var(--bgcolor-meterbar, $pm-global-muted);
+
+ //-webkit-appearance: none; // Can't. Well, because Chrome.
+ // -moz-appearance: none;
+ /* autoprefixer: ignore next */
+ // appearance: none;
+
+
+ &::-webkit-meter-bar {
+ border: none;
+ background: none;
+ }
+
+ &::-moz-meter-bar {
+ display: inherit;
+ }
+
+ &:not(#{&}--primary) {
+ &::-webkit-meter-optimum-value {
+ background: $pm-global-success;
+ }
+ &::-webkit-meter-suboptimum-value {
+ background: $pm-global-attention;
+ }
+ &::-webkit-meter-even-less-good-value {
+ background: $pm-global-warning;
+ }
+
+ &:-moz-meter-optimum::-moz-meter-bar {
+ background: $pm-global-success;
+ }
+ &:-moz-meter-sub-optimum::-moz-meter-bar {
+ background: $pm-global-attention;
+ }
+ &:-moz-meter-sub-sub-optimum::-moz-meter-bar {
+ background: $pm-global-warning;
+ }
+ }
+
+ &--primary {
+ &::-webkit-meter-optimum-value {
+ background: $pm-primary;
+ }
+ &::-webkit-meter-suboptimum-value {
+ background: $pm-primary;
+ }
+ &::-webkit-meter-even-less-good-value {
+ background: $pm-primary;
+ }
+
+ &::-moz-meter-bar {
+ background: $pm-primary;
+ }
+ }
+
+ &.is-thin {
+ @include meterbar-size(.375em);
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-mini-calendar.scss b/templates/@theme-base/pm-styles/_pm-mini-calendar.scss
index 5ec5071..65368bd 100644
--- a/templates/@theme-base/pm-styles/_pm-mini-calendar.scss
+++ b/templates/@theme-base/pm-styles/_pm-mini-calendar.scss
@@ -35,9 +35,6 @@ $minicalendar-bg-color-range-selection: #51555F !default;
.minicalendar-day {
color: var(--color-main-area, $minicalendar-day-color);
}
-.minicalendar-icon {
- fill: $minicalendar-day-color;
-}
.minicalendar-days {
user-select: none;
}
@@ -76,6 +73,7 @@ $minicalendar-bg-color-range-selection: #51555F !default;
min-width: $minicalendar-cell-size;
min-height: $minicalendar-cell-size;
}
+
.minicalendar-day[aria-current="date"]::before {
content: attr(data-current-day);
speak: none;
@@ -84,13 +82,21 @@ $minicalendar-bg-color-range-selection: #51555F !default;
left: 0;
right: 0;
bottom: 0;
+ font-weight: bold;
line-height: 2.3; // check modifier below when no week displayed
-
color: $white;
- font-weight: bold;
- background: $pm-primary-dark;
+ background: $calendar-today-color;
border-radius: 50%;
}
+.minicalendar-day[aria-current="date"][aria-pressed=true]::before {
+ background: $calendar-selected-day-color;
+}
+// fix in case of range selection in responsive view
+$mini-calendar-currentDay-size: 2.5em !default;
+.minicalendar-day--range.minicalendar-day[aria-current="date"]::before {
+ left: calc(50% - #{$mini-calendar-currentDay-size/2});
+ max-width: $mini-calendar-currentDay-size;
+}
.minicalendar-grid--displayWeekNumber .minicalendar-day {
&[aria-current="date"]::before {
@@ -106,15 +112,11 @@ $minicalendar-bg-color-range-selection: #51555F !default;
background: rgba($minicalendar-bg-color-range-selection, .8);
}
}
- .minicalendar-icon {
- fill: $minicalendar-day-color-on-dark-background;
- }
}
.minicalendar-day[aria-pressed=true] {
color: $white;
- font-weight: bold;
- background: $pm-primary;
+ background: $calendar-selected-day-color;
border-radius: 50%;
}
@@ -139,6 +141,10 @@ $minicalendar-day-marker-size: 3px !default;
}
}
+.minicalendar-day--range {
+ width: 100%;
+}
+
.minicalendar-day--range-bound {
background: $pm-primary;
}
@@ -154,7 +160,7 @@ $minicalendar-day-marker-size: 3px !default;
.minicalendar {
.minicalendar-day--range-bound-begin,
.minicalendar-day--range-bound-begin:hover,
- .minicalendar-day--range-bound-begin:focus {
+ .minicalendar-day--range-bound-begin:focus {
border-top-left-radius: 40%;
border-bottom-left-radius: 40%;
}
diff --git a/templates/@theme-base/pm-styles/_pm-modal.scss b/templates/@theme-base/pm-styles/_pm-modal.scss
index f7414bc..5ea41aa 100644
--- a/templates/@theme-base/pm-styles/_pm-modal.scss
+++ b/templates/@theme-base/pm-styles/_pm-modal.scss
@@ -15,6 +15,7 @@ $modal-wider-width: 70% !default;
$modal-wider-max-width: 100rem !default;
$modal-full-dimension: 98% !default;
+$modal-full-max-width: 150rem !default;
$modal-smaller-width: 28em !default;
@@ -114,6 +115,9 @@ $modal-smaller-width: 28em !default;
animation-fill-mode: both;
}
+.pm-modal--auto {
+ width: auto;
+}
.pm-modal--smaller {
width: $modal-smaller-width;
}
@@ -128,27 +132,32 @@ $modal-smaller-width: 28em !default;
max-height: $modal-full-dimension;
margin: 1%;
}
+.pm-modal--heightAuto {
+ height: auto;
+ max-height: $modal-full-dimension;
+ margin-top: 1%;
+ margin-bottom: 1%;
+}
.pm-modalClose {
position: absolute;
- @extend .flex;
right: .5rem;
- top: 1rem;
+ top: .5rem;
+ @extend .flex;
+ overflow: hidden;
background: transparent;
border-radius: 1em;
- color: $pm-global-grey;
border: 0;
- font-size: 2em;
+ font-size: 1em;
padding: 0;
line-height: 1;
cursor: pointer;
+ z-index: 1;
}
-.pm-modalClose-icon {
- fill: $pm-global-grey;
-}
+
// not defined, left this in case of
// .pm-modalClose:focus,
// .pm-modalClose:hover,
@@ -171,6 +180,7 @@ $modal-smaller-width: 28em !default;
flex-direction: column;
flex: 1 1 auto;
overflow: auto;
+ position: relative;
}
.pm-modalHeader {
@@ -181,11 +191,12 @@ $modal-smaller-width: 28em !default;
font-size: 2.2rem;
line-height: 1.5;
margin-bottom: 0;
- padding-right: 1em;
}
.pm-modalFooter {
padding: rem(15) rem(30) rem(30);
flex: 0;
+
+ min-height: 7.9rem; // only for Safari the ugly
[class*="pm-button"] { // only for Safari the ugly
min-height: 3.4rem;
}
@@ -193,35 +204,21 @@ $modal-smaller-width: 28em !default;
.pm-modalContentInner {
position: relative;
- overflow: auto;
+ overflow-x: hidden;
+ overflow-y: auto;
flex: 1 1 auto;
padding: 0 rem(30);
background: var(--bgcolor-main-area, $white) no-repeat;
- background-image: radial-gradient(farthest-side at 50% 0,var(--bordercolor-input, #acb0bf),transparent),radial-gradient(farthest-side at 50% 100%,var(--bordercolor-input, #acb0bf),transparent);
- background-position: 50% 0, 0 100%;
- background-size: calc(100% - 20px) 3px;
-}
-.pm-modalContentInner {
- &::before,
- &::after {
- content: '';
- position: relative;
- display: block;
- z-index: 1;
- background: var(--bgcolor-main-area, $white);
- height: 10px;
+
+ > p:first-child {
+ margin-top: 0;
+ }
+ > p:last-child {
+ margin-bottom: 0;
}
-}
-.pm-modalContentInner > p:first-child {
- margin-top: 0;
-}
-.pm-modalContentInner > p:last-child {
- margin-bottom: 0;
}
-
-
// adaptation for labels
$pm-label-shorter-width: 10em !default;
.pm-modal--shorterLabels .pm-label {
@@ -234,6 +231,13 @@ $pm-label-shorter-width: 10em !default;
}
}
+
+// modal with title visually hidden
+.pm-modalHeader--no-title {
+ padding-top: 2rem;
+}
+
+
// single button on right
.pm-modalFooter [class*="pm-button"]:only-child {
margin-left: auto;
@@ -247,13 +251,13 @@ $pm-label-shorter-width: 10em !default;
}
}
-
@media (max-height: $breakpoint-low-height-modal) {
.pm-modal {
max-height: $modal-full-dimension;
}
.pm-modalFooter {
- padding-bottom: 1rem;
+ padding-bottom: 1rem;
+ min-height: 5.9rem; // only for Safari the ugly
}
.pm-modalHeader {
padding-top: 1rem;
@@ -274,4 +278,10 @@ $pm-label-shorter-width: 10em !default;
}
}
-
+@include respond-to($breakpoint-large, 'min') {
+ .pm-modal--full {
+ max-width: $modal-full-max-width;
+ margin-left: auto;
+ margin-right: auto;
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-navigation.scss b/templates/@theme-base/pm-styles/_pm-navigation.scss
index 46a41e1..d8e7e0a 100644
--- a/templates/@theme-base/pm-styles/_pm-navigation.scss
+++ b/templates/@theme-base/pm-styles/_pm-navigation.scss
@@ -1,25 +1,28 @@
/*
* navigation
*/
+$navigation-fillcolor-icons: #6D7178 !default;
+$padding-left-link: 2rem !default;
-.navigation__link {
- padding: 1.1rem 1em 1.1rem 2rem;
- line-height: 1.3;
- color: var(--color-nav-link, $white);
+.navigation__link,
+.navigation__link--groupHeader {
+ padding: .95rem 1em .95rem $padding-left-link;
+ color: var(--color-nav-link, $white);
text-decoration: none;
display: block;
}
@if $rtl-option == true {
[dir="rtl"] {
- .navigation__link {
- padding: .75rem 3rem .75rem 1rem;
+ .navigation__link,
+ .navigation__link--groupHeader {
+ padding: .95rem $padding-left-link .95rem 1em;
}
}
}
.navigation__icon {
- fill: var(--fillcolor-icons, #6D7178);
+ color: var(--fillcolor-icons, $navigation-fillcolor-icons);
}
.navigation__refresh {
@@ -28,34 +31,150 @@
.navigation__link:focus,
.navigation__link:hover {
- background: rgba(255,255,255,.05);
- color: var(--color-nav-link, $pm-global-light);
+ background: $navigation-hover-bg-color;
+ color: var(--color-nav-link, $pm-global-light);
text-decoration: none;
- .navigation__icon {
- fill: var(--fillcolor-icons, $white);
- }
}
[aria-current="page"].navigation__link {
- background: var(--main-bg-color, $pm-global-grey);
- color: var(--color-nav-active, $pm-primary);
+ background: $navigation-hover-bg-color;
+ color: var(--color-nav-active, $white);
font-weight: bold;
-
- &:hover .navigation__icon,
+
+ &:hover .navigation__icon:not(.navigation__icon--expand),
.navigation__icon {
- fill: var(--color-nav-active, $pm-primary);
+ color: var(--color-nav-active, $white);
}
-
+
.navigation__refresh {
display: inline-flex;
}
}
+
+// labels/folders sections
+.navigation__link--groupHeader-link {
+ color: var(--color-nav-link, $white);
+ .navigation__icon--expand {
+ color: var(--fillcolor-icons, $navigation-fillcolor-icons);
+ }
+ //&:focus, // gimme focus-visible !!!!
+ &:hover {
+ color: var(--color-nav-link, $pm-global-light);
+ .navigation__icon {
+ color: var(--fillcolor-icons, $white);
+ }
+ }
+}
+
+/* expand hover only on button + groupHeader */
+.navigation__link--groupHeader-link {
+ color: var(--fillcolor-icons, $navigation-fillcolor-icons);
+}
+.navigation__link--expand:focus,
+.navigation__link--expand:hover,
+//.navigation__link--groupHeader-link:focus,
+.navigation__link--groupHeader-link:hover {
+ .navigation__icon--expand {
+ color: var(--fillcolor-icons, $white);
+ }
+}
+
+/* items counters */
.navigation__counterItem {
- background: rgba($white, 0.1);
+ background: $pm-primary;
+ color: $white;
font-size: 1.1rem;
- padding: .1em em(6, 11) .2em;
- font-weight: normal;
+ padding: 0.2rem .4em 0; // em value for top gives non rounded value, so rem
+ border-radius: 1.1rem;
+ line-height: 1;
+ height: 1.6rem;
+ font-variant: tabular-nums;
&:empty {
display: none; // removes a bug on Webkit
}
-} \ No newline at end of file
+}
+
+
+/* Sub folders */
+.navigation__item {
+ [data-level="1"] {
+ padding-left: 1em;
+ }
+ [data-level="2"] {
+ padding-left: 2em;
+ }
+}
+
+
+
+/* Sub-navigation */
+.navigation__sublist {
+ margin-left: $padding-left-link;
+ overflow: hidden;
+ opacity: 1;
+ transition: visibility 0s ease, transform .5s ease, opacity .5s ease, max-height .5s ease ;
+ transform-origin: top center;
+ transform: scale(1,1);
+ max-height: 44em;
+ visibility: visible;
+ transition-delay: 0s;
+ &[aria-hidden="true"] {
+ display: block;
+ opacity: 0;
+ max-height: 0;
+ visibility: hidden;
+ transform: scale(1,0);
+ transition-duration: 0s, .25s, .25s, .25s;
+ transition-delay: .5s, 0s, 0s, 0s;
+ }
+}
+.navigation__subitem {
+ margin-left: .7rem;
+}
+.navigation__sublink {
+ border-left: 2px solid $navigation-fillcolor-icons;
+ display: block;
+ padding: .75rem 1rem .75rem 1.5rem;
+ text-decoration: none;
+ color: var(--color-nav-link, $white);
+ &:focus,
+ &:hover {
+ background: $navigation-hover-bg-color;
+ color: var(--color-nav-link, $pm-global-light);
+ text-decoration: none;
+ }
+ &:hover {
+ border-left: 2px solid var(--color-nav-link, rgba($pm-global-light, .5));
+ }
+ &[aria-current="true"] {
+ border-left: 2px solid var(--color-nav-active, $white);
+ font-weight: bold;
+ }
+}
+
+
+@if $rtl-option == true {
+ [dir="rtl"] {
+ .navigation__sublist {
+ margin-left: 0;
+ margin-right: $padding-left-link;
+ }
+ .navigation__subitem {
+ margin-left: 0;
+ margin-right: .7rem;
+ }
+ .navigation__sublink {
+ border-left: 0;
+ border-right: 2px solid $navigation-fillcolor-icons;
+ padding: .75rem 1.5rem .75rem 1rem;
+ &:hover {
+ border-left: 0;
+ border-right: 2px solid var(--color-nav-link, $pm-global-light);
+ }
+ &[aria-current="true"] {
+ border-left: 0;
+ border-right: 2px solid var(--color-nav-active, $pm-primary);
+ }
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-notifications.scss b/templates/@theme-base/pm-styles/_pm-notifications.scss
index 93ed558..6215758 100644
--- a/templates/@theme-base/pm-styles/_pm-notifications.scss
+++ b/templates/@theme-base/pm-styles/_pm-notifications.scss
@@ -79,13 +79,21 @@
}
-@include respond-to($breakpoint-small) {
+@include respond-to($breakpoint-small) {
.notifications-container {
- left: 1em;
- right: 1em;
- -webkit-transform: none;
- transform: none;
- text-align: center;
+ text-align: center;
}
-} \ No newline at end of file
+}
+
+@include respond-to($breakpoint-tiny) {
+
+ .notifications-container,
+ [class*="notification-"] {
+ -webkit-transform: none;
+ transform: none;
+ left: 1em;
+ right: 1em;
+ width: calc(100% - 2em);
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-overview-grid.scss b/templates/@theme-base/pm-styles/_pm-overview-grid.scss
new file mode 100644
index 0000000..0ec1f6b
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-overview-grid.scss
@@ -0,0 +1,20 @@
+/*
+ * settings home
+ */
+
+.overview-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(25rem,1fr));
+ grid-auto-flow: row dense;
+ grid-gap: 2rem;
+
+ &-item {
+ &--tall {
+ grid-row: span 2;
+ }
+
+ &--full {
+ grid-column: 1 / -1;
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-progress-contact.scss b/templates/@theme-base/pm-styles/_pm-progress-contact.scss
deleted file mode 100644
index eb4beff..0000000
--- a/templates/@theme-base/pm-styles/_pm-progress-contact.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-$progress-contact-height: 6px !default;
-
-.progress-contact {
- /* Reset the default appearance */
- -webkit-appearance: none;
- -moz-appearance: none;
- -ms-appearance: none;
- appearance: none;
-
- background: var(--bordercolor-input, $pm-global-border);
- // for Edge/IE
- color: $pm-primary;
-
- border-radius: #{$progress-contact-height/2};
- height: $progress-contact-height;
-
- &::-webkit-progress-bar {
- background-color: var(--bordercolor-input, $pm-global-border);
- border-radius: #{$progress-contact-height/2};
- }
-
- &::-webkit-progress-value {
- border-radius: #{$progress-contact-height/2};
- background: $pm-primary;
- transition: .15s width ease;
- }
-
- &::-moz-progress-bar {
- border-radius: #{$progress-contact-height/2};
- background: $pm-primary;
- transition: .15s width ease;
- }
-
- &::-ms-fill {
- border-color: currentColor;
- }
-} \ No newline at end of file
diff --git a/templates/@theme-base/pm-styles/_pm-progressbar.scss b/templates/@theme-base/pm-styles/_pm-progressbar.scss
new file mode 100644
index 0000000..339edc5
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-progressbar.scss
@@ -0,0 +1,66 @@
+@mixin progressbar-size($size: .5em) {
+ height: $size;
+ border-radius: #{$size/2};
+
+ &::-webkit-progress-bar {
+ border-radius: #{$size/2};
+ }
+
+ &::-webkit-progress-value {
+ border-radius: #{$size/2};
+ }
+
+ &::-moz-progress-bar {
+ border-radius: #{$size/2};
+ }
+}
+
+.progressbar {
+ @include progressbar-size();
+
+ background: var(--bordercolor-input, $pm-global-border);
+ color: $pm-primary;
+ appearance: none;
+
+ &::-webkit-progress-bar {
+ background-color: var(--bordercolor-input, $pm-global-border);
+ }
+
+ &::-webkit-progress-value {
+ background: $pm-primary;
+ transition: .25s width easing(easeInOutQuint);
+ }
+
+ &::-moz-progress-bar {
+ background: $pm-primary;
+ transition: .25s width easing(easeInOutQuint);
+ }
+
+ &::-ms-fill {
+ border-color: currentColor;
+ }
+
+ @each $variant, $color in (
+ disabled : darken($pm-global-muted, 25%),
+ running : $pm-global-info,
+ success : $pm-global-success,
+ warning : $pm-global-attention,
+ error : $pm-global-warning
+ ) {
+ &--#{$variant} {
+ color: $color;
+
+ &::-webkit-progress-value {
+ background: $color;
+ }
+
+ &::-moz-progress-bar {
+ background: $color;
+ }
+ }
+ }
+
+ &.is-thin {
+ @include progressbar-size(.25em);
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-reset-display-messages.scss b/templates/@theme-base/pm-styles/_pm-reset-display-messages.scss
new file mode 100644
index 0000000..15cb319
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-reset-display-messages.scss
@@ -0,0 +1,22 @@
+// reset/display fixes for emails contents
+.message-content {
+ @extend .p1;
+ // rules coming from Angular
+ box-sizing: content-box; // to avoid problems in some emails
+ border-radius: 0 0 $global-border-radius $global-border-radius;
+
+ // remove reset margins
+ blockquote, dl, ol, p, pre, td, th, ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ p {
+ margin-top: 1em;
+ margin-bottom: 1em;
+ }
+
+ table {
+ margin-bottom: 0;
+ }
+
+}
diff --git a/templates/@theme-base/pm-styles/_pm-scale.scss b/templates/@theme-base/pm-styles/_pm-scale.scss
new file mode 100644
index 0000000..37f3994
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-scale.scss
@@ -0,0 +1,6 @@
+.scale-buttons-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, 2.5em);
+ grid-gap: 0.5rem;
+ justify-content: space-between;
+}
diff --git a/templates/@theme-base/pm-styles/_pm-scrollshadow.scss b/templates/@theme-base/pm-styles/_pm-scrollshadow.scss
new file mode 100644
index 0000000..6f23256
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-scrollshadow.scss
@@ -0,0 +1,37 @@
+$scrollshadow-height: .5rem !default;
+
+.scrollshadow {
+
+ &-sticky {
+ position: sticky;
+ display: block;
+ height: $scrollshadow-height;
+
+ &--top {
+ top: 0;
+ background-image: radial-gradient(farthest-side at 50% 0, var(--bordercolor-input, #acb0bf), transparent);
+ }
+
+ &--bottom {
+ bottom: 0;
+ background-image: radial-gradient(farthest-side at 50% 100%, var(--bordercolor-input, #acb0bf), transparent);
+ }
+ }
+
+ &-static {
+ position: absolute;
+ display: block;
+ left: 0;
+ right: 0;
+ height: $scrollshadow-height;
+ background: var(--bgcolor-main-area, #fff);
+
+ &--top {
+ top: 0;
+ }
+
+ &--bottom {
+ bottom: 0;
+ }
+ }
+}
diff --git a/templates/@theme-base/pm-styles/_pm-settings-home.scss b/templates/@theme-base/pm-styles/_pm-settings-home.scss
deleted file mode 100644
index fbc7541..0000000
--- a/templates/@theme-base/pm-styles/_pm-settings-home.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * settings home
- */
-.settings-grid-container {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(250px,1fr));
-}
-.setting-grid {
- padding-right: 1em;
-}
-.setting-grid--tall {
- grid-row: span 2;
-} \ No newline at end of file
diff --git a/templates/@theme-base/pm-styles/_pm-stepdots.scss b/templates/@theme-base/pm-styles/_pm-stepdots.scss
new file mode 100644
index 0000000..dfd0d21
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-stepdots.scss
@@ -0,0 +1,27 @@
+/*
+ *
+ */
+
+.stepDots {
+
+ &-item:not(:last-child) {
+ margin-right: .5em;
+ }
+
+ &-dot {
+ width: .8rem;
+ height: .8rem;
+ background-color: var(--bordercolor-input, $pm-global-border);
+ transition: background-color .25s easing(ease);
+
+ &:focus,
+ &:hover,
+ &:active {
+ background-color: $pm-primary;
+ }
+ &[aria-selected="true"] {
+ background-color: var(--secondary-bg-color, $pm-global-altgrey);
+ }
+ }
+
+}
diff --git a/templates/@theme-base/pm-styles/_pm-sticky-header.scss b/templates/@theme-base/pm-styles/_pm-sticky-header.scss
index c478872..e5baac2 100644
--- a/templates/@theme-base/pm-styles/_pm-sticky-header.scss
+++ b/templates/@theme-base/pm-styles/_pm-sticky-header.scss
@@ -21,16 +21,21 @@ $sticky-title-height: 10rem !default;
.container-section-sticky {
padding: 3em 2em 0 2em;
- max-width: 85ch; // avoid too long lines
+ max-width: 120ch; // avoid too long lines
margin-left: auto;
margin-right: auto;
}
+
+.container-section-sticky.pt0 { // 😓
+ padding-top: 0;
+}
+
.container-section-sticky--fullwidth {
max-width: none;
}
.container-section-sticky-section {
- margin-bottom: 12rem;
+ margin-bottom: 8rem;
}
@@ -41,7 +46,7 @@ $sticky-title-height: 10rem !default;
}
// not sticky on mobile
-@include respond-to($breakpoint-small) {
+@include respond-to($breakpoint-small) {
.sticky-title:not(.onmobile-remain-sticky) {
position: static;
box-shadow: none;
diff --git a/templates/@theme-base/pm-styles/_pm-subnav.scss b/templates/@theme-base/pm-styles/_pm-subnav.scss
deleted file mode 100644
index 7d78646..0000000
--- a/templates/@theme-base/pm-styles/_pm-subnav.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * subnavigation
- */
-
-.subnav {
- width: var(--width-subnav, $subnav-width);
- background: var(--bgcolor-subnav, $pm-global-light);
-}
-.subnav-inner {
- position: -webkit-sticky;
- position: sticky;
- top: 0;
- padding: 2em;
-}
-.subnav-link {
- @extend .nodecoration;
- color: var(--color-subnav-link, $pm-global-grey);
- &:focus,
- &:hover {
- color: var(--color-subnav-link, $pm-global-grey);
- }
-}
-[aria-current="true"].subnav-link {
- font-weight: bold;
-} \ No newline at end of file
diff --git a/templates/@theme-base/pm-styles/_pm-table-plans.scss b/templates/@theme-base/pm-styles/_pm-table-plans.scss
index 1158f29..55096ce 100644
--- a/templates/@theme-base/pm-styles/_pm-table-plans.scss
+++ b/templates/@theme-base/pm-styles/_pm-table-plans.scss
@@ -9,10 +9,6 @@
@extend .min-w35e;
}
-.pm-simple-table-row-th {
- font-weight: normal;
-}
-
.pm-plans-table {
caption {
transform: scale(0);
diff --git a/templates/@theme-base/pm-styles/_pm-table.scss b/templates/@theme-base/pm-styles/_pm-table.scss
index e17e38f..867cf26 100644
--- a/templates/@theme-base/pm-styles/_pm-table.scss
+++ b/templates/@theme-base/pm-styles/_pm-table.scss
@@ -2,51 +2,118 @@
* tables
*/
.pm-simple-table {
- @extend .border-collapse;
- @extend .noborder;
- @extend .w100;
- caption {
- transform: scale(0);
- }
-}
-.pm-simple-table td,
-.pm-simple-table th {
- padding: em(9);
- border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
-}
-.pm-simple-table th:not(.pm-simple-table-row-th) {
- @extend .uppercase;
- @extend .alignleft;
- &.aligncenter {
- @extend .aligncenter;
- }
- &.alignright {
- @extend .alignright;
- }
-}
+ @extend .border-collapse;
+ @extend .noborder;
+ @extend .w100;
-.pm-plans-table-row--highlighted {
- background-color: var(--bgcolor-input, $pm-global-light);
-}
+ caption {
+ transform: scale(0);
+ }
-/* alternate bg for rows */
-.pm-simple-table--alternate-bg-row tbody tr:nth-child(odd){
- background-color: var(--bgcolor-input, $pm-global-light);
-}
+ td,
+ th {
+ padding: em(9);
+ border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
+ }
-.pm-simple-table--has-actions {
- td:last-child,
- th:last-child {
- text-align: right;
- }
-}
+ th:not(#{&}-row-th) {
+ @extend .uppercase;
+ @extend .alignleft;
+
+ &.aligncenter {
+ @extend .aligncenter;
+ }
+
+ &.alignright {
+ @extend .alignright;
+ }
+ @include respond-to($breakpoint-small) {
+ &.onmobile-aligncenter {
+ @extend .onmobile-aligncenter;
+ }
+ }
+ }
+
+ // no style for this case
+ &-row-th {
+ font-weight: normal;
+ }
+
+ /* alternate bg for rows */
+ &--alternate-bg-row tbody tr:nth-child(odd){
+ background-color: var(--bgcolor-input, $pm-global-light);
+ }
+
+ &--isHoverable tbody tr {
+ @media (hover: hover) {
+ &:hover,
+ &:focus-within {
+ background-color: var(--bgcolor-input, $pm-global-light);
+ }
+ }
+ }
-/* simple dirty fix */
-.pm-simple-table button svg {
- @extend .relative;
- top: -0.25em;
+ tr#{&}-stickyRow {
+ td,
+ th {
+ position: sticky;
+ top: 0;
+ background: var(--bgcolor-main-area, $white);
+ z-index: 1;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ z-index: -1;
+ height: 1rem;
+ background: linear-gradient(to bottom, rgba(black, .1) 0%, transparent 100%);
+ pointer-events: none;
+ transition: opacity .125s ease-out;
+ }
+ }
+ }
+
+ tr#{&}-stickyRow#{&}-stickyRow--isOnTop {
+ td,
+ th {
+ &::after {
+ opacity: 0;
+ }
+ }
+ }
+
+ /* bordered-table */
+ &--bordered {
+ &,
+ th,
+ td {
+ border: 1px solid var(--bordercolor-input, $pm-global-border);
+ }
+ }
+
+ &--has-actions {
+ td,
+ th {
+ &:last-child {
+ text-align: right;
+ }
+ }
+ }
+
+ /* simple dirty fix */
+ a svg {
+ @extend .relative;
+ top: -0.15em;
+ }
}
-.pm-simple-table a svg {
- @extend .relative;
- top: -0.15em;
+
+
+/*
+ * specifics case
+ */
+.pm-plans-table-row--highlighted {
+ background-color: var(--bgcolor-input, $pm-global-light);
}
diff --git a/templates/@theme-base/pm-styles/_pm-tabs.scss b/templates/@theme-base/pm-styles/_pm-tabs.scss
index 8f60520..b726541 100644
--- a/templates/@theme-base/pm-styles/_pm-tabs.scss
+++ b/templates/@theme-base/pm-styles/_pm-tabs.scss
@@ -3,41 +3,61 @@
padding: 0;
@extend .unstyled;
@extend .flex;
- border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
+ @extend .relative;
+ white-space: nowrap;
}
.tabs-list-item {
margin-right: 1rem;
+ color: var(--text-sub-header, $text-sub-header);
+ min-width: auto;
}
.tabs-list-link {
@extend .flex;
- color: var(--color-main-area, $pm-global-grey);
- border-bottom: 2px solid var(--bordercolor-input, $pm-global-border);
+ color: inherit;
+ border-bottom: 2px solid transparent;
padding: .5em;
@extend .nodecoration;
@extend .relative;
top: 1px;
+ transition: color 0.15s ease-out, border-bottom 0.15s ease-out;
&:focus,
&:hover {
- color: var(--color-main-area, $pm-global-grey);
- font-weight: bold;
@extend .nodecoration;
+ color: var(--color-main-area, $pm-global-grey);
+ border-bottom: 2px solid var(--bordercolor-input, $pm-global-border);
}
&[disabled] {
opacity: .4;
cursor: default;
pointer-events: none;
- &:focus,
- &:hover {
- font-weight: normal;
- }
}
}
[aria-selected="true"].tabs-list-link {
- font-weight: bold;
border-bottom: 2px solid $pm-primary;
+ color: var(--color-main-area, $pm-global-grey);
}
-/* hidden state for content is not necessary for React, added in exception for Design system website */ \ No newline at end of file
+.tabs-container {
+ border-bottom: 1px solid var(--bordercolor-input, $pm-global-border);
+
+ &[class*='sticky'] {
+ background: var(--bgcolor-main-area, $white);
+ }
+}
+
+.tabs-indicator {
+ position: absolute;
+ border-bottom: 2px solid $pm-primary;
+ content: "";
+ height: 0;
+ bottom: -1px;
+ left: 0;
+ right: 0;
+ transform-origin: left center;
+ transition: transform .15s ease-out;
+ transform: translateX(var(--translate)) scaleX(var(--scale));
+}
+/* hidden state for content is not necessary for React, added in exception for Design system website */
diff --git a/templates/@theme-base/pm-styles/_pm-toolbar.scss b/templates/@theme-base/pm-styles/_pm-toolbar.scss
index ce06ffa..d9e4fa8 100644
--- a/templates/@theme-base/pm-styles/_pm-toolbar.scss
+++ b/templates/@theme-base/pm-styles/_pm-toolbar.scss
@@ -1,11 +1,18 @@
/*
* toolbar
*/
- .toolbar {
+:root {
+ --padding-toolbar-button: #{em(16, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(12, $base-font)};
+}
+
+.toolbar {
+ position: relative;
+ z-index: 1;
height: $toolbar-height;
background: var(--bgcolor-toolbar, $pm-global-altgrey);
- border-radius: 4px 4px 0 0;
- box-shadow: 0 -1px 0 0 rgba(255, 255, 255, 0.2);
+ box-shadow: 0 -1px 0 0 rgba(white, 0.2),
+ 0 1px 0 0 rgba(black, 0.2);
}
.toolbar-button,
.pm-button.toolbar-button { // to avoid issues in darkmode
@@ -15,8 +22,8 @@
border: unset;
border-radius: unset;
- padding-left: em(16, $base-font);
- padding-right: em(16, $base-font);
+ padding-left: var(--padding-toolbar-button);
+ padding-right: var(--padding-toolbar-button);
display: flex; // alignment fix on Chrome
&:hover {
@@ -36,10 +43,11 @@
}
}
.toolbar-button--dropdown {
- padding-left: em(12, $base-font);
- padding-right: em(12, $base-font);
+ padding-left: var(--padding-toolbar-button-dropdown);
+ padding-right: var(--padding-toolbar-button-dropdown);
}
-.toolbar-icon {
+.toolbar-icon,
+.expand-caret.toolbar-icon {
fill: var(--fillcolor-icons, $white);
}
.toolbar-separator {
@@ -61,10 +69,59 @@
.toolbar-select option {
color: $black; // for Chrome bug
}
+.isDarkMode {
+ .toolbar-select {
+ background-color: var(--bgcolor-toolbar, $pm-global-altgrey);
+ option {
+ color: $pm-global-light; // for Chrome bug
+ }
+
+ }
+}
+
+
+.toolbar--heavy {
+ @include respond-to(1100) {
+ --padding-toolbar-button: #{em(12, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(10, $base-font)};
+ }
+ // use the forceps Luke ^^
+ @include respond-to(980) {
+ --padding-toolbar-button: #{em(11, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(8, $base-font)};
+ }
+
+ @include respond-to($breakpoint-medium) {
+ --padding-toolbar-button: #{em(16, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(12, $base-font)};
+ }
+
+ @include respond-to(750) {
+ --padding-toolbar-button: #{em(12, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(8, $base-font)};
+ }
+
+ @include respond-to($breakpoint-small) {
+ --padding-toolbar-button: #{em(16, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(12, $base-font)};
+ }
+
+ @include respond-to($breakpoint-tiny) {
+ --padding-toolbar-button: #{em(14, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(10, $base-font)};
+ }
+ @include respond-to(320) {
+ --padding-toolbar-button: #{em(12, $base-font)};
+ --padding-toolbar-button-dropdown: #{em(6, $base-font)};
+ }
+
+}
+
+
@include respond-to($breakpoint-small) {
.toolbar {
border-radius: 0;
}
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/pm-styles/_pm-treeview.scss b/templates/@theme-base/pm-styles/_pm-treeview.scss
new file mode 100644
index 0000000..aef046d
--- /dev/null
+++ b/templates/@theme-base/pm-styles/_pm-treeview.scss
@@ -0,0 +1,108 @@
+/*
+ Tree view (subfolders, etc.)
+ */
+
+$treeview-border-width: 1px !default;
+$treeview-indentation-margin: 3rem !default;
+
+
+.treeview-item {
+
+ border-bottom : $treeview-border-width solid var(--bordercolor-input, $pm-global-border);
+ margin-bottom: -$treeview-border-width;
+
+ $arrow-width: .9rem !default;
+ $arrow-height: .7rem !default;
+ $circle-size: .8rem !default;
+
+ &--moveInside,
+ &--moveTop,
+ &--moveBottom {
+ &::before {
+ content: '';
+ position: absolute;
+ }
+ }
+ &--moveInside {
+ &::before {
+ left: -$arrow-width;
+ height: 0;
+ width: 0;
+ border: $arrow-height solid transparent;
+ border-left-color: $pm-primary;
+ border-left-width: $arrow-width;
+ }
+ }
+ &--moveTop,
+ &--moveBottom {
+ &::before {
+ left: -#{$circle-size/2};
+ height: $circle-size;
+ width: $circle-size;
+ border-radius: 50%;
+ background: $pm-primary;
+ }
+ }
+ &--moveInside#{&}--selfGrabbed { // no primary color on the self grabbed element
+ &::before {
+ border-left-color: $pm-global-muted;
+ }
+ }
+ &--moveTop::before {
+ top: -#{$circle-size/2};
+ }
+ &--moveBottom::before {
+ bottom: -#{$circle-size/2};
+ }
+
+ &--moveTop::after,
+ &--moveBottom::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ right: 0;
+ height: 1px;
+ background: $pm-primary;
+ }
+ &--moveTop::after {
+ top: 0;
+ }
+ &--moveBottom::after {
+ bottom: -1px;
+ }
+ &--moveInside {
+ background-color: var(--bgcolor-highlight, $pm-global-light);
+ }
+
+ .treeview-item .treeview-item {
+ padding-left: $treeview-indentation-margin;
+ &.treeview-item--moveInside {
+ background: linear-gradient(to right, transparent 0, transparent #{$treeview-indentation-margin}, var(--bgcolor-highlight, $pm-global-light) #{$treeview-indentation-margin});
+ &::before {
+ left: calc(-#{$arrow-width} + #{$treeview-indentation-margin});
+ }
+ }
+ &.treeview-item--moveTop,
+ &.treeview-item--moveBottom {
+ &::before {
+ left: calc(-#{$circle-size/2} + #{$treeview-indentation-margin});
+ }
+ }
+ &--moveTop::after,
+ &--moveBottom::after {
+ left: #{$treeview-indentation-margin};
+ }
+ }
+
+}
+
+
+
+
+
+@include respond-to($breakpoint-medium) {
+ .treeview-toggle,
+ .treeview-actions {
+ width: em(100);
+ }
+}
diff --git a/templates/@theme-base/reusable-components/_design-system-colors.scss b/templates/@theme-base/reusable-components/_design-system-colors.scss
index 3dfeda4..650d1aa 100644
--- a/templates/@theme-base/reusable-components/_design-system-colors.scss
+++ b/templates/@theme-base/reusable-components/_design-system-colors.scss
@@ -12,11 +12,14 @@
background-color: $pm-global-light;
}
.bg-global-border {
- background-color: $pm-global-border;
+ background-color: var(--bordercolor-input, $pm-global-border);
}
.bg-global-muted {
background-color: $pm-global-muted;
}
+.bg-global-muted-dm {
+ background-color: var(--bgcolor-muted, $pm-global-muted);
+}
.bg-global-success {
background-color: $pm-global-success;
}
@@ -26,6 +29,9 @@
.bg-global-attention {
background-color: $pm-global-attention;
}
+.bg-global-info {
+ background-color: $pm-global-info;
+}
.bg-pm-blue {
background-color: $pm-blue;
}
@@ -35,9 +41,12 @@
.bg-pm-blue-light {
background-color: $pm-blue-light;
}
+.bg-pm-blue-gradient {
+ background-image: $pm-blue-gradient;
+}
.bg-global-highlight {
- background-color: var(--bgcolor-input, $pm-global-light);
+ background-color: var(--bgcolor-highlight, $pm-global-light);
}
@@ -83,6 +92,9 @@
.bg-inherit {
background: inherit;
}
+.bg-currentColor {
+ background: currentColor;
+}
.fill-global-grey {
fill: $pm-global-grey;
@@ -93,6 +105,9 @@
.fill-global-light {
fill: $pm-global-light;
}
+.fill-global-highlight {
+ fill: var(--bgcolor-highlight, $pm-global-light);
+}
.fill-global-border {
fill: $pm-global-border;
}
@@ -131,6 +146,9 @@
.fill-white {
fill: $white;
}
+.fill-white-dm {
+ fill: var(--bgcolor-main-area, $white);
+}
.fill-black {
fill: $black;
}
@@ -241,6 +259,9 @@
.color-global-grey {
color: $pm-global-grey;
}
+.color-global-grey-dm {
+ color: var(--color-main-area, $pm-global-grey);
+}
.color-global-altgrey {
color: $pm-global-altgrey;
}
@@ -262,6 +283,9 @@
.color-global-attention {
color: $pm-global-attention;
}
+.color-global-info {
+ color: $pm-global-info;
+}
.color-pm-blue {
color: $pm-blue;
}
@@ -271,6 +295,9 @@
.color-pm-blue-light {
color: $pm-blue-light;
}
+.color-subheader {
+ color: var(--bgcolor-subheader, $text-sub-header);
+}
.color-pv-green {
color: $pv-green;
diff --git a/templates/@theme-base/reusable-components/_design-system-config.scss b/templates/@theme-base/reusable-components/_design-system-config.scss
index 6502e2f..98473cd 100644
--- a/templates/@theme-base/reusable-components/_design-system-config.scss
+++ b/templates/@theme-base/reusable-components/_design-system-config.scss
@@ -12,6 +12,10 @@ $size-h4 : 18 !default;
$size-h5 : 17 !default;
$size-h6 : 16 !default;
+// Use typo helpers on demand
+$use-other-typo-helpers : true !default;
+$use-other-line-height-helpers: true !default;
+
$size-smallest : 9 !default;
$size-smaller : 10 !default;
$size-small : 12 !default;
@@ -21,20 +25,24 @@ $size-biggest : 20 !default;
// fonts
$font-family : -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif !default;
-
+$font-family-monospace : SFMono-Regular,Consolas,"Liberation Mono","Menlo",monospace,monospace !default;
+// explanation for double monospace http://code.iamkate.com/html-and-css/fixing-browsers-broken-monospace-font-handling/
// project colors
$pm-global-grey : #262a33 !default;
$pm-global-altgrey : #3c414e !default;
+$bluish-grey : #9799a6 !default;
$pm-global-light : #f6f7fa !default;
$pm-global-border : #dde6ec !default;
-$pm-global-muted : #eeeff1 !default;
+$pm-global-muted : #eeeff3 !default;
+$pm-global-info : #008cff !default;
$pm-global-success : #5db039 !default;
$pm-global-warning : #ec5858 !default;
$pm-global-attention : #eac819 !default;
$pm-blue : #657ee4 !default;
$pm-blue-dark : #526ee0 !default;
$pm-blue-light : #788ee8 !default;
+$pm-blue-gradient : linear-gradient(130deg, #657ee4 -7%, #7351d1 64%, #7350d1 127%);
$white : #fff !default;
$black : #000 !default;
@@ -58,11 +66,20 @@ $pm-primary-dark : $pm-blue-dark !default;
// not approved colors
$pm-input-background : #fcfdff !default;
$plan-logo-color : #8ed60f !default;
-$conversation-selected-bg: #e3e7f6 !default;
+$conversation-selected-bg: rgba($pm-blue, .5) !default;
+$input-shadow-color : rgba(0, 0, 0, 0.16) !default;
+$autocomplete-bg-color-hover : #f4f4f4 !default;
+$text-sub-header : #767676 !default;
// needed for darkmode
$pm-secondary-grey : #2e323d !default;
-$pm-tertiary-grey : #505560 !default; // border input
+$pm-tertiary-grey : #505560 !default; // border input
+
+// needed globally
+$calendar-selected-day-color: $pm-blue-light !default;
+$calendar-today-color: $pm-primary-dark !default;
+
+$navigation-hover-bg-color: rgba(white, .05) !default;
// colors
$color-links : $pm-primary !default;
@@ -80,6 +97,7 @@ $input-defaut-border : $pm-global-border !default;
// main breakpoints
$breakpoint-large : 1500 !default;
+$breakpoint-medium-landscape : 1100 !default;
$breakpoint-medium : 910 !default;
$breakpoint-small : 680 !default;
$breakpoint-tiny : 450 !default;
@@ -90,6 +108,9 @@ $rtl-option : false !default;
// to adapt a website in a language that is written from right to left
// designed for multilingual websites with LTR et RTL
+// Custom scrollbar everywhere
+$custom-scroll : true !default;
+
// hyphens
$hyphenation : false !default;
@@ -99,9 +120,14 @@ $use-clearleft_right : false !default;
$use-clearhidden : false !default;
$use-clearfix : false !default;
-// vertical rythm
-// possible values : 'double_top_single_bottom', 'single_top', 'single_bottom'
-$vertical-rythm : 'single_bottom' !default;
+// color reset for mark tag
+$use-color-reset-mark : true !default;
+$default-bgColor-mark : #ff0 !default;
+
+
+// vertical rhythm
+// possible values : 'double_top_single_bottom', 'single_top_single_bottom', 'single_top', 'single_bottom'
+$vertical-rhythm : 'single_bottom' !default;
// units for typo
// possible values : 'use_em', 'use_rem', 'use_rem_with_em_fallback'
@@ -114,23 +140,34 @@ $root-equiv-10-px : true !default;
// you should NEVER update this value, however… who can predict the future…
$root-default-font-size: 16 !default;
+// applies main colors on body tag
+$apply-body-styles : true !default;
+
// others
$use-reset-button : true !default;
+$use-ie-calc-font-fallback: false !default;
$use-old-ie-fallbacks : true !default;
+$use-height-auto-img : true !default;
+$use-height-auto-td : true !default;
+$use-height-auto-table : true !default;
// default config for webpack, can be overriden by "global config" in styles-pm.scss
$path-images : '../../assets/img/shared/' !default;
// variables for global layouts, allowing you to use calc for components and adapt quickly if needed
-$aside-bar-width : 4.5rem !default;
$header-height : 8rem !default;
-$width-sidebar : 19rem !default; // main navigation
+$width-sidebar : 24rem !default; // main navigation
$toolbar-height : 5rem !default;
-$subnav-width : 25rem !default; // quick nav on the right
+$context-bar-width : 25vw !default; // context bar on the right
+$context-bar-min-width : 30rem !default;
+$context-bar-max-width : 40rem !default;
+
+$default-height-fields : 3.5rem !default;
$conversations-column-width: 35% !default; // used also to align search bar on top
+$pm-label-width: 18em !default;
// Sass functions: don’t touch if you are not sure ;)
@@ -176,45 +213,22 @@ $conversations-column-width: 35% !default; // used also to align search bar on
@if $type-vr == 'double_top_single_bottom' {
@return ( ($margin * $other_coef)*1em 0 ( ($margin/2) * $other_coef) *1em 0 );
}
+ @if $type-vr == 'single_top_single_bottom' {
+ @return ( ( ($margin/2) * $other_coef) *1em 0 );
+ }
@else if $type-vr == 'single_bottom' {
@return ( 0 0 ( ($margin/2) * $other_coef) *1em 0 );
}
@else if $type-vr == 'single_top' {
@return ( ( ($margin/2) * $other_coef) *1em 0 0 0 );
}
-}
-
-
-@function margin-em-other ($font-size, $base-height, $base-font, $type-vr){
-
- $coef: ceil(1 / ($base-height * $base-font / $font-size));
- $height: ($base-font * $base-height / $font-size) ;
- $margin: ($height * $coef );
-
- @return ( ($margin)*1em 0 );
-
-}
-
-
-@mixin flow-hr( $value, $type-vr: $vertical-rythm, $type-unit: $typo-unit ){
-
- @if $type-unit == 'use_em' {
- font-size: em($value);
- }
- @else if $type-unit == 'use_rem' {
- font-size: rem($value);
+ @else if $type-vr == 'double_top_double_bottom_without_coef' {
+ @return (($margin *1em) 0);
}
- @else if $type-unit == 'use_rem_with_em_fallback' {
- font-size: em($value);
- font-size: rem($value);
- }
- line-height: line-height($value, $l-h, $base-font, $type-vr);
- margin: margin-em($value, $l-h, $base-font, $type-vr) ;
-
}
-@mixin flow-other( $value, $type-vr: $vertical-rythm, $type-unit: $typo-unit ){
+@mixin rhythm( $value, $type-vr: $vertical-rhythm, $type-unit: $typo-unit ){
@if $type-unit == 'use_em' {
font-size: em($value);
@@ -227,7 +241,7 @@ $conversations-column-width: 35% !default; // used also to align search bar on
font-size: rem($value);
}
line-height: line-height($value, $l-h, $base-font, $type-vr);
- margin: margin-em-other($value, $l-h, $base-font, $type-vr) ;
+ margin: margin-em($value, $l-h, $base-font, $type-vr) ;
}
@@ -377,7 +391,7 @@ $conversations-column-width: 35% !default; // used also to align search bar on
}
@else if $query-type == "min" {
- @media (min-width: em($breakpoint, $root-default-font-size)) {
+ @media (min-width: em($breakpoint + 1, $root-default-font-size)) {
@content;
}
}
@@ -388,6 +402,12 @@ $conversations-column-width: 35% !default; // used also to align search bar on
}
}
+ @else if $query-type == "min-height" {
+ @media (min-height: em($breakpoint, $root-default-font-size)) {
+ @content;
+ }
+ }
+
@else {
@warn "Type non supported.";
}
@@ -410,4 +430,52 @@ $conversations-column-width: 35% !default; // used also to align search bar on
@warn "$value-content not specified";
}
-} \ No newline at end of file
+}
+
+
+//
+// Easing functions for transitions and animations
+// Learn more at http://easings.net/
+//
+
+@function easing($type: 'ease') {
+
+ $value: '';
+
+ @if $type == 'linear' { $value: '0, 0, 1, 1'; }
+ @else if $type == 'ease' { $value: '0.25, 0.1, 0.25, 1'; }
+ @else if $type == 'easeIn' { $value: '0.42, 0, 1, 1'; }
+ @else if $type == 'easeOut' { $value: '0, 0, 0.58, 1'; }
+ @else if $type == 'easeInOut' { $value: '0.42, 0, 0.58, 1'; }
+
+ @else if $type == 'easeInSine' { $value: '0.12, 0, 0.39, 0'; }
+ @else if $type == 'easeInQuad' { $value: '0.11, 0, 0.5, 0'; }
+ @else if $type == 'easeInCubic' { $value: '0.32, 0, 0.67, 0'; }
+ @else if $type == 'easeInQuart' { $value: '0.5 , 0, 0.75, 0'; }
+ @else if $type == 'easeInQuint' { $value: '0.64, 0, 0.78, 0'; }
+ @else if $type == 'easeInExpo' { $value: '0.7 , 0, 0.84, 0'; }
+ @else if $type == 'easeInCirc' { $value: '0.55, 0, 1, 0.45'; }
+ @else if $type == 'easeInBack' { $value: '0.36, 0, 0.66, -0.56'; }
+
+ @else if $type == 'easeOutSine' { $value: '0.61, 1, 0.88, 1'; }
+ @else if $type == 'easeOutQuad' { $value: '0.5, 1, 0.89, 1'; }
+ @else if $type == 'easeOutCubic' { $value: '0.33, 1, 0.68, 1'; }
+ @else if $type == 'easeOutQuart' { $value: '0.25, 1, 0.5, 1'; }
+ @else if $type == 'easeOutQuint' { $value: '0.22, 1, 0.36, 1'; }
+ @else if $type == 'easeOutExpo' { $value: '0.16, 1, 0.3, 1'; }
+ @else if $type == 'easeOutCirc' { $value: '0, 0.55, 0.45, 1'; }
+ @else if $type == 'easeOutBack' { $value: '0.34, 1.56, 0.64, 1'; }
+
+ @else if $type == 'easeInOutSine' { $value: '0.37, 0, 0.63, 1'; }
+ @else if $type == 'easeInOutQuad' { $value: '0.45, 0, 0.55, 1'; }
+ @else if $type == 'easeInOutCubic' { $value: '0.65, 0, 0.35, 1'; }
+ @else if $type == 'easeInOutQuart' { $value: '0.76, 0, 0.24, 1'; }
+ @else if $type == 'easeInOutQuint' { $value: '0.83, 0, 0.17, 1'; }
+ @else if $type == 'easeInOutExpo' { $value: '0.87, 0, 0.13, 1'; }
+ @else if $type == 'easeInOutCirc' { $value: '0.85, 0, 0.15, 1'; }
+ @else if $type == 'easeInOutBack' { $value: '0.68, -0.6, 0.32, 1.6'; }
+
+ @else { @error "'#{$type}' is not a correct value for easing()."; }
+
+ @return cubic-bezier(unquote($value));
+}
diff --git a/templates/@theme-base/reusable-components/_design-system-forms.scss b/templates/@theme-base/reusable-components/_design-system-forms.scss
index ead9aa3..8b34cdb 100644
--- a/templates/@theme-base/reusable-components/_design-system-forms.scss
+++ b/templates/@theme-base/reusable-components/_design-system-forms.scss
@@ -16,6 +16,7 @@ input[type="submit"][disabled],
input[type="button"][disabled],
input[type="reset"][disabled] {
cursor: default;
+ pointer-events: none;
}
/* for field texts */
@@ -26,6 +27,7 @@ input[type="reset"][disabled] {
/* avoid dummy resize */
textarea {
resize: vertical;
+ cursor: auto; // fixes an issue on Chrome using CSS custom scroll
}
/* remove a Firefox difference on button tag */
button::-moz-focus-inner { border: 0; padding: 0; }
@@ -34,6 +36,7 @@ label,
button,
input,
select {
+ color: currentColor;
vertical-align: middle;
}
@@ -59,6 +62,15 @@ input[type="image"] {
border: 0;
width: auto;
}
+// for components that rely on checkboxes
+input[type="radio"],
+input[type="checkbox"] {
+ opacity: 0;
+ // this is a crazy fix for Firefox - for having ::after stuff working on it for mail conversations
+ // to have increased area around checkbox for clicking
+ /* autoprefixer: ignore next */
+ -moz-appearance: initial;
+}
/* to cancel input sizing or other if needed */
.auto {
diff --git a/templates/@theme-base/reusable-components/_design-system-layout-modules.scss b/templates/@theme-base/reusable-components/_design-system-layout-modules.scss
index ce68eb0..8b2b5be 100644
--- a/templates/@theme-base/reusable-components/_design-system-layout-modules.scss
+++ b/templates/@theme-base/reusable-components/_design-system-layout-modules.scss
@@ -3,483 +3,679 @@
*/
/* it depends, it exceeds (french joke) */
-img,
-table,
-td,
+%reset-responsive-height-max-width {
+ height: auto;
+ max-width: 100%;
+}
+
blockquote,
code,
pre,
textarea,
input,
svg {
- height: auto;
- max-width: 100%;
+ @extend %reset-responsive-height-max-width;
+}
+
+%reset-responsive-max-width-only {
+ max-width: 100%;
+}
+
+@if $use-height-auto-td==true {
+ td {
+ @extend %reset-responsive-height-max-width;
+ }
+}
+@else {
+ td {
+ @extend %reset-responsive-max-width-only;
+ }
+}
+
+@if $use-height-auto-img==true {
+ img {
+ @extend %reset-responsive-height-max-width;
+ }
}
+@else {
+ img {
+ @extend %reset-responsive-max-width-only;
+ }
+}
+@if $use-height-auto-table==true {
+ table {
+ @extend %reset-responsive-height-max-width;
+ }
+}
+@else {
+ table {
+ @extend %reset-responsive-max-width-only;
+ }
+}
+
/* no reset on embed, object & video, some players don't like */
+
+.hauto {
+ height: auto;
+}
+
/* useful to manage floats */
/* containing floats */
.mod,
.scroll-if-needed {
- overflow: auto;
+ overflow: auto;
}
+
.scroll-horizontal-if-needed {
- overflow-x: auto;
+ overflow-x: auto;
}
+
.mod--hidden,
.no-scroll {
- overflow: hidden;
+ overflow: hidden;
}
.scroll-smooth-touch {
- -webkit-overflow-scrolling: touch;
+ -webkit-overflow-scrolling: touch;
}
/* some floattings */
.left {
- float: left;
+ float: left;
}
+
.right {
- float: right;
+ float: right;
}
-@if $rtl-option == true {
- /* RTL */
- [dir="rtl"] .left {
- float: right;
- }
- [dir="rtl"] .right {
- float: left;
- }
+@if $rtl-option==true {
+
+ /* RTL */
+ [dir="rtl"] .left {
+ float: right;
+ }
+
+ [dir="rtl"] .right {
+ float: left;
+ }
}
/* clear floats */
.clear {
- clear: both;
-}
-@if $use-clearleft_right == true {
- .clearleft {
- clear: left;
- }
- .clearright {
- clear: right;
- }
- @if $rtl-option == true {
- /* RTL */
- [dir="rtl"] .clearleft {
- clear: right;
+ clear: both;
+}
+
+@if $use-clearleft_right==true {
+ .clearleft {
+ clear: left;
+ }
+
+ .clearright {
+ clear: right;
}
- [dir="rtl"] .clearright {
- clear: left;
+
+ @if $rtl-option==true {
+
+ /* RTL */
+ [dir="rtl"] .clearleft {
+ clear: right;
+ }
+
+ [dir="rtl"] .clearright {
+ clear: left;
+ }
}
- }
}
-@if $use-clearhidden == true {
- .clearhidden {
- clear: both;
- margin: 0;
- padding: 0;
- visibility: hidden;
- }
+
+@if $use-clearhidden==true {
+ .clearhidden {
+ clear: both;
+ margin: 0;
+ padding: 0;
+ visibility: hidden;
+ }
}
-@if $use-clearfix == true {
- .clearfix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
+
+@if $use-clearfix==true {
+ .clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ }
}
/* gut: "spacing" empty div */
.gut {
- height: 1px;
+ height: 1px;
}
/* table-design in CSS */
.row {
- display: table;
- table-layout: fixed;
+ display: table;
+ table-layout: fixed;
}
+
.inline-row {
- display: inline-table;
- table-layout: fixed;
+ display: inline-table;
+ table-layout: fixed;
}
+
.line {
- display: table-row;
+ display: table-row;
}
+
.col {
- display: table-cell;
- vertical-align: top;
+ display: table-cell;
+ vertical-align: top;
}
+
.col-noalign {
- display: table-cell;
+ display: table-cell;
}
/* alignments */
.aligntop {
- vertical-align: top;
+ vertical-align: top;
}
+
.alignbottom {
- vertical-align: bottom;
+ vertical-align: bottom;
}
+
.alignmiddle {
- vertical-align: middle;
+ vertical-align: middle;
}
+
.alignbaseline {
- vertical-align: baseline;
+ vertical-align: baseline;
}
+
.alignsub {
- vertical-align: sub;
+ vertical-align: sub;
}
/* block */
.bl {
- display: block;
+ display: block;
+}
+
+.inline {
+ display: inline;
}
/* inline-block, useful for grids, and not only */
.inbl {
- display: inline-block;
+ display: inline-block;
}
/* grid = element of inline-grid */
.grid {
- @extend .inbl;
- @extend .aligntop;
+ @extend .inbl;
+ @extend .aligntop;
}
/* to relativize */
.relative {
- position: relative;
+ position: relative;
}
/* centered block */
.center {
- margin-left: auto;
- margin-right: auto;
+ margin-left: auto;
+ margin-right: auto;
}
/* to absolute */
.absolute {
- position: absolute;
- z-index: 1;
+ position: absolute;
+ z-index: 1;
+}
+.z667 {
+ z-index: 667;
}
/* to centered absolute */
.centered-absolute {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+.centered-absolute-horizontal {
+ left: 50%;
+ transform: translate(-50%, 0%);
+}
+
+.covered-absolute {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
}
/* to top right */
.top-right {
- top: 0;
- right: 0;
-}
-@if $rtl-option == true {
- [dir="rtl"] {
- .top-right {
- left: 0;
- right: auto;
+ top: 0;
+ right: 0;
+}
+
+.bottom {
+ bottom: 0;
+}
+
+@if $rtl-option==true {
+ [dir="rtl"] {
+ .top-right {
+ left: 0;
+ right: auto;
+ }
}
- }
}
-.right-icon {
- top: 0;
- right: .5em;
- height: 3.5rem; // height of field
+.right-icon,
+.right-text {
+ top: 0;
+ right: .5em;
+ height: $default-height-fields; // height of field
+ align-content: center;
+}
+.right-text {
+ right: 1em;
}
-@if $rtl-option == true {
- [dir="rtl"] {
- .right-icon {
- left: .5em;
- right: auto;
+.right-text-inner {
+ padding-bottom: .2rem;
+}
+
+@if $rtl-option==true {
+ [dir="rtl"] {
+ .right-icon,
+ .right-text {
+ left: .5em;
+ right: auto;
+ }
+ .right-text {
+ left: 1em;
+ }
}
- }
}
+
+
.fixed {
- position: fixed;
+ position: fixed;
+}
+
+
+.sticky {
+ &-top,
+ &-bottom {
+ position: sticky;
+ z-index: 1;
+ }
+
+ &-top {
+ top: 0;
+ }
+
+ &-bottom {
+ bottom: 0;
+ }
}
/* hardware-acceleration activation */
.hardware-accelerated {
- @include vendor-prefix(transform, translateZ(0));
+ @include vendor-prefix(transform, translateZ(0));
}
/* block widths */
.w0 {
- width: 0;
+ width: 0;
}
+
.w1 {
- width: 1%;
+ width: 1%;
}
+
.w2 {
- width: 2%;
+ width: 2%;
}
+
.w3 {
- width: 3%;
+ width: 3%;
}
+
.w5 {
- width: 5%;
+ width: 5%;
}
+
.w10 {
- width: 10%;
+ width: 10%;
}
+
.w15 {
- width: 15%;
+ width: 15%;
}
+
.w20 {
- width: 20%;
+ width: 20%;
}
+
.w25 {
- width: 25%;
+ width: 25%;
}
+
.w30 {
- width: 30%;
+ width: 30%;
}
+
.w33 {
- width: 33.333%;
+ width: 33.333%;
}
+
.w40 {
- width: 40%;
+ width: 40%;
}
+
.w45 {
- width: 45%;
+ width: 45%;
}
+
.w49 {
- width: 49%;
+ width: 49%;
}
+
.w50 {
- width: 50%;
+ width: 50%;
}
+
.w60 {
- width: 60%;
+ width: 60%;
}
+
.w66 {
- width: 66.666%;
+ width: 66.666%;
}
+
.w70 {
- width: 70%;
+ width: 70%;
}
+
.w75 {
- width: 75%;
+ width: 75%;
}
+
.w80 {
- width: 80%;
+ width: 80%;
}
+
.w90 {
- width: 90%;
+ width: 90%;
}
+
.w95 {
- width: 95%;
+ width: 95%;
}
+
.w100 {
- width: 100%;
+ width: 100%;
}
/* here you may add px widths */
-$list-width-px: 50, 150, 200, 500 !default;
+$list-width-px: 40, 50, 70, 150, 200, 500 !default;
// ex .w500p { width: 500px; }
@each $width in $list-width-px {
- .w#{$width}p {
- width: #{$width}px;
- }
+ .w#{$width}p {
+ width: #{$width}px;
+ }
+}
+
+/* here you may add rem widths */
+$list-width-rem: 33 !default; // say 33
+// ex .w500p { width: 500px; }
+
+@each $width in $list-width-rem {
+ .w#{$width}r {
+ width: #{$width}rem;
+ }
}
/* here you may add em widths */
-$list-width-em: 400 !default;
-// ex .w500e { width: 60em; }
+$list-width-em: 2, 6, 8, 10, 11, 13, 14, 16 !default;
+// ex .w16e { width: 16em; }
@each $width in $list-width-em {
- $size_em: em($width);
- .w#{$width}e {
- width: $size_em;
- }
+ .w#{$width}e {
+ width: #{$width}em;
+ }
}
/* max-block widths */
/* here you may add max-widths % */
-$list-max-widths: 50, 80, 100 !default;
+$list-max-widths: 50, 60, 80, 100 !default;
@each $max-width in $list-max-widths {
- .mw#{$max-width} {
- max-width: #{$max-width * 1%};
- }
+ .mw#{$max-width} {
+ max-width: #{$max-width * 1%};
+ }
}
/* here you may add pixel max-widths */
$list-max-width-px: 100, 650 !default;
@each $max-width in $list-max-width-px {
- .mw#{$max-width}p {
- max-width: #{$max-width}px;
- }
+ .mw#{$max-width}p {
+ max-width: #{$max-width}px;
+ }
}
/* here you may add ch max-widths */
$list-max-width-ch: 70 !default;
@each $max-width in $list-max-width-ch {
- .mw#{$max-width}ch {
- max-width: #{$max-width}ch;
- }
+ .mw#{$max-width}ch {
+ max-width: #{$max-width}ch;
+ }
}
/* here you may add em max-widths */
-$list-max-width-em: 8, 15, 40, 50 !default;
+$list-max-width-em: 5, 7, 8, 13, 15, 18, 30, 37, 40, 50 !default;
@each $max-width in $list-max-width-em {
- .mw#{$max-width}e {
- max-width: #{$max-width}em;
- }
+ .mw#{$max-width}e {
+ max-width: #{$max-width}em;
+ }
}
-$list-min-width-em: 3, 5, 35 !default;
+$list-min-width-em: 1.4, 3, 5, 14, 35 !default;
@each $min-width in $list-min-width-em {
- .min-w#{$min-width}e {
- min-width: #{$min-width}em;
- }
+ $fragment-class: str-replace(inspect($min-width), '.', '-'); // inspect to convert to string
+
+ .min-w#{$fragment-class}e {
+ min-width: #{$min-width}em;
+ }
}
+
+$list-min-height-em: 5, 16 !default;
+
+@each $min-height in $list-min-height-em {
+ .min-h#{$min-height}e {
+ min-height: #{$min-height}em;
+ }
+}
+
+
.h100 {
- height: 100%;
+ height: 100%;
}
+
.h100v {
- height: 100vh;
+ height: 100vh;
}
/* margins */
.mt1r {
- margin-top: 1rem;
+ margin-top: 1rem;
+}
+
+.mt0-5r {
+ margin-top: .5rem;
+}
+
+.mr0-5r {
+ margin-right: .5rem;
}
$list-margins: m, mt, mr, mb, ml !default;
-$list-margins-values: 0, 0.25, 0.5, 0.75, 1, 1.5, 2 !default; // specify 2.5 if needed
+$list-margins-values: 0, 0.1, 0.25, 0.4, 0.5, 0.6, 0.75, 1, 1.5, 2, 4 !default; // specify 2.5 if needed
@include margin-generator($list-margins, $list-margins-values);
.mtauto {
- margin-top: auto;
+ margin-top: auto;
}
+
.mrauto {
- margin-right: auto;
+ margin-right: auto;
}
+
.mbauto {
- margin-bottom: auto;
+ margin-bottom: auto;
}
+
.mlauto {
- margin-left: auto;
+ margin-left: auto;
}
+
.mauto {
- margin: auto;
+ margin: auto;
}
-@if $rtl-option == true {
- [dir="rtl"] {
- .mrauto {
- margin-right: 0;
- margin-left: auto;
- }
- .mlauto {
- margin-left: 0;
- margin-right: auto;
+@if $rtl-option==true {
+ [dir="rtl"] {
+ .mrauto {
+ margin-right: 0;
+ margin-left: auto;
+ }
+
+ .mlauto {
+ margin-left: 0;
+ margin-right: auto;
+ }
}
- }
}
/* paddings */
$list-paddings: p, pt, pr, pb, pl !default;
-$list-paddings-values: 0, 0.25, 0.5, 0.75, 1, 1.25, 2, 3 !default; // specify 2.5 if needed
+$list-paddings-values: 0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 3, 4 !default; // specify 2.5 if needed
@include padding-generator($list-paddings, $list-paddings-values);
/* to hide text with accessibility… a11y */
.invisible,
.sr-only {
- border: 0;
- clip: rect(0 0 0 0);
- height: 1px;
- margin: -1px;
- overflow: hidden;
- padding: 0;
- position: absolute;
- width: 1px;
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+ top: 0; // needed for Safari dumb and 💩 behaviour
}
+
.nonvisible {
- visibility: hidden;
+ visibility: hidden;
}
.opacity-50 {
- opacity: 0.5;
+ opacity: 0.5;
}
+
.opacity-40 {
- opacity: 0.4;
+ opacity: 0.4;
}
+
.opacity-30 {
- opacity: 0.3;
+ opacity: 0.3;
}
.filter-blur {
- filter: blur(4px);
+ filter: blur(4px);
}
.hidden,
-[hidden] {
- display: none;
-} /* hidden everywhere */
+[hidden],
+.display-on-darkmode {
+ display: none;
+}
+
+/* hidden everywhere */
.nodesktop {
- display: none;
-} /* hidden on desktop */
+ display: none;
+}
+
+/* hidden on desktop */
/*.noprint {} /* hidden on print */
/*.notablet {} /* hidden on tablets */
/*.nomobile {} /* hidden on mobile */
.list-2columns {
- -webkit-column-count: 2;
- -moz-column-count: 2;
- column-count: 2;
- -webkit-column-gap: 0;
- -moz-column-gap: 0;
- column-gap: 0;
-
- & > li {
- -webkit-column-break-inside: avoid; /* Chrome, Safari, Opera */
- page-break-inside: avoid; /* Firefox */
- break-inside: avoid; /* IE 10+ */
- break-inside: avoid-column; /* W3C */
- }
+ -webkit-column-count: 2;
+ -moz-column-count: 2;
+ column-count: 2;
+ -webkit-column-gap: 0;
+ -moz-column-gap: 0;
+ column-gap: 0;
+
+ & > * {
+ -webkit-column-break-inside: avoid;
+ /* Chrome, Safari, Opera */
+ page-break-inside: avoid;
+ /* Firefox */
+ break-inside: avoid;
+ /* IE 10+ */
+ break-inside: avoid-column;
+ /* W3C */
+ }
}
/*
* ratio container (for responsive iframes/videos/etc.)
*/
[class*="ratio-container-"] {
- width: 100%;
- height: 0;
- @extend .relative;
+ width: 100%;
+ height: 0;
+ @extend .relative;
}
+
.ratio-container-square {
- padding-top: 100%;
+ padding-top: 100%;
}
+
.ratio-container-16-9 {
- padding-top: 56.25%;
+ padding-top: 56.25%;
+}
+
+.ratio-container-5-1 {
+ padding-top: 20%;
}
.inner-ratio-container {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
/*
@@ -487,179 +683,238 @@ $list-paddings-values: 0, 0.25, 0.5, 0.75, 1, 1.25, 2, 3 !default; // specify 2.
*/
.inline-flex,
.inline-flex-vcenter {
- display: -webkit-inline-box;
- display: -ms-inline-flexbox;
- display: inline-flex;
- -ms-flex-wrap: wrap;
- flex-wrap: wrap;
-}
-.flex {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -ms-flex-wrap: wrap;
- flex-wrap: wrap;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.flex,
+.flex-flex-children,
+.flex-noMinChildren {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
}
+
.flex-row {
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -ms-flex-direction: row;
- flex-direction: row;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
}
+
.flex-reverse {
- -webkit-box-orient: horizontal;
- -webkit-box-direction: reverse;
- -ms-flex-direction: row-reverse;
- flex-direction: row-reverse;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: reverse;
+ -ms-flex-direction: row-reverse;
+ flex-direction: row-reverse;
}
+
.flex-column {
- -webkit-box-orient: vertical;
- -webkit-box-direction: normal;
- -ms-flex-direction: column;
- flex-direction: column;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
}
+
.flex-column-reverse {
- -webkit-box-orient: vertical;
- -webkit-box-direction: reverse;
- -ms-flex-direction: column-reverse;
- flex-direction: column-reverse;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: reverse;
+ -ms-flex-direction: column-reverse;
+ flex-direction: column-reverse;
}
+
.flex-spacebetween {
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: space-between;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
}
+
.flex-spacearound {
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: space-around;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-around;
}
+
.flex-justify-start {
- -webkit-box-pack: start;
- -ms-flex-pack: start;
- justify-content: flex-start;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
}
+
.flex-justify-end {
- -webkit-box-pack: end;
- -ms-flex-pack: end;
- justify-content: flex-end;
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
}
+
.flex-justify-center {
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
}
+
.flex-nowrap {
- -ms-flex-wrap: nowrap;
- flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
}
/* fix aspect ratio */
-.flex > * {
+.flex > *,
+.no-min-dims {
min-height: 0;
min-width: 0;
}
+.flex-flex-children > * {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
.inline-flex-vcenter > *,
.flex-item-centered-vert {
- margin-top: auto;
- margin-bottom: auto;
- align-self: center;
+ margin-top: auto;
+ margin-bottom: auto;
+ align-self: center;
}
.flex-items-center {
- -webkit-box-align: center;
- -ms-flex-align: center;
- -ms-grid-row-align: center;
- align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ -ms-grid-row-align: center;
+ align-items: center;
}
+
+.flex-items-baseline {
+ -webkit-box-align: baseline;
+ -ms-flex-align: baseline;
+ -ms-grid-row-align: baseline;
+ align-items: baseline;
+}
+
.flex-items-start {
- -webkit-box-align: start;
- -ms-flex-align: start;
- -ms-grid-row-align: flex-start;
- align-items: flex-start;
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ -ms-grid-row-align: flex-start;
+ align-items: flex-start;
}
+
.flex-items-end {
- -webkit-box-align: end;
- -ms-flex-align: end;
- -ms-grid-row-align: flex-end;
- align-items: flex-end;
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ -ms-grid-row-align: flex-end;
+ align-items: flex-end;
+}
+
+.flex-items-stretch {
+ align-items: stretch;
}
.flex-item-fluid {
- -webkit-box-flex: 1;
- -ms-flex: 1 1 0px;
- flex: 1 1 0px;
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0px;
}
+
.flex-item-fluid-auto {
- flex: 1 1 auto;
+ flex: 1 1 auto;
}
.flex-item-noshrink {
- -ms-flex-negative: 0;
- flex-shrink: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
}
+
.flex-item-nogrow {
- -webkit-box-flex: 0;
- -ms-flex-positive: 0;
- flex-grow: 0;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
}
+
.flex-item-grow-2 {
- -webkit-box-flex: 2;
- -ms-flex-positive: 2;
- flex-grow: 2;
+ -webkit-box-flex: 2;
+ -ms-flex-positive: 2;
+ flex-grow: 2;
}
+
.flex-item-noflex {
- -webkit-box-flex: 0;
- -ms-flex: 0;
- flex: 0;
+ -webkit-box-flex: 0;
+ -ms-flex: 0;
+ flex: 0;
}
.flex-self-vcenter {
- -ms-flex-item-align: center;
- align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+
+.flex-self-start {
+ -ms-flex-item-align: start;
+ align-self: flex-start;
+}
+
+.flex-self-end {
+ -ms-flex-item-align: end;
+ align-self: flex-end;
}
.flex-autogrid {
- margin: 0 -0.5em;
- @extend .flex;
- @extend .flex-spacebetween;
+ margin: 0 -0.5em;
+ @extend .flex;
+ @extend .flex-spacebetween;
}
+
.flex-autogrid-item {
- @extend .flex-item-fluid;
- padding: 0 0.5em 1em;
+ @extend .flex-item-fluid;
+ padding: 0 0.5em 1em;
}
+
.flex-autogrid-item.pb0 {
- padding-bottom: 0;
+ padding-bottom: 0;
+}
+
+.inline-grid-container {
+ display: inline-grid;
}
/* RTL/others */
-.mirror {
- -webkit-transform: rotateY(180deg);
- transform: rotateY(180deg);
+.mirror,
+[dir="rtl"] .on-rtl-mirror {
+ -webkit-transform: rotateY(180deg);
+ transform: rotateY(180deg);
}
+
.rotateX-180 {
- -webkit-transform: rotateX(180deg);
- transform: rotateX(180deg);
+ -webkit-transform: rotateX(180deg);
+ transform: rotateX(180deg);
}
+
.rotateZ-90 {
- -webkit-transform: rotateZ(90deg);
- transform: rotateZ(90deg);
+ -webkit-transform: rotateZ(90deg);
+ transform: rotateZ(90deg);
}
+
.rotateZ-270 {
- -webkit-transform: rotateZ(270deg);
- transform: rotateZ(270deg);
+ -webkit-transform: rotateZ(270deg);
+ transform: rotateZ(270deg);
}
+
/* increase surface click/tap */
.increase-surface-click::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
}
+
.no-pointer-events,
.no-pointer-events-children * {
- pointer-events: none;
+ pointer-events: none;
}
diff --git a/templates/@theme-base/reusable-components/_design-system-links-icons.scss b/templates/@theme-base/reusable-components/_design-system-links-icons.scss
index f6b9ef1..0207be2 100644
--- a/templates/@theme-base/reusable-components/_design-system-links-icons.scss
+++ b/templates/@theme-base/reusable-components/_design-system-links-icons.scss
@@ -1,8 +1,10 @@
/* links */
+
/* remember focus */
a,
.link {
color: $color-links;
+ text-decoration: underline;
cursor: pointer;
&:focus,
@@ -12,12 +14,7 @@ a,
text-decoration: underline;
}
}
-/* avoid border on images in links + fix border image IE */
-a:link img,
-a:visited img,
-img {
- border-style: none;
-}
+
.nodecoration {
text-decoration: none;
}
@@ -48,6 +45,15 @@ img {
}
}
+.button-showOnHover:focus,
+.button-showOnHover:hover {
+ .button-showOnHover-element {
+ visibility: visible;
+ }
+}
+
+
+
/* links with icons, may use DATA-URI */
/* external links */
@@ -73,28 +79,29 @@ a[href^="mailto:"] {
[class*="icon-"] {
@extend .alignmiddle;
@extend .inbl;
+ fill: currentColor;
}
-$list-icon-pixels: 12,16,20,25,40,100 !default;
+$list-icon-pixels: 6,8,10,11,12,14,16,18,20,24,28,40,42,60,100 !default;
@each $width in $list-icon-pixels {
- .icon-#{$width}p {
- width: #{$width}px;
- height: #{$width}px;
+ .icon-#{$width}p {
+ width: #{$width}px;
+ height: #{$width}px;
}
}
$list-icon-percent: 50 !default;
@each $width in $list-icon-percent {
- .icon-#{$width} {
- width: percentage($width / 100);
- height: percentage($width / 100);
+ .icon-#{$width} {
+ width: percentage($width / 100);
+ height: percentage($width / 100);
}
}
.path2x {
stroke-width: 1px;
&.fill-global-light {
- stroke: $pm-global-light;
+ stroke: $pm-global-light;
}
-} \ No newline at end of file
+}
diff --git a/templates/@theme-base/reusable-components/_design-system-print.scss b/templates/@theme-base/reusable-components/_design-system-print.scss
index fa339e4..eadc123 100644
--- a/templates/@theme-base/reusable-components/_design-system-print.scss
+++ b/templates/@theme-base/reusable-components/_design-system-print.scss
@@ -25,23 +25,73 @@
display: block;
}
+ .is-printed-version {
+ .pm-modalContainer,
+ .pm-modal,
+ .pm-modalContentInner,
+ .pm-modalContent {
+ @extend .reset4print;
+ }
+ .pm-modalContentInner::before,
+ .pm-modalContentInner::after {
+ content: none;
+ }
+ }
+
body {
padding: .5em;
- overflow: auto;
+ overflow: auto;
+
+ /* put back normal mode for print :) */
+ --bgcolor-item-column-list: initial;
+ --bgcolor-unread-item-column-list: initial;
+ --bgcolor-view-column-detail: initial;
+ --bgcolor-main-area: initial;
+ --bgcolor-context-bar: initial;
+ --bgcolor-toolbar: initial;
+ --color-context-bar-link: initial;
+ --color-main-area: initial;
+ --fillcolor-icons: initial;
+ --bgcolor-disabled-checkboxes-radios: initial;
+ --bgcolor-item-column-active: initial;
+ --bordercolor-input: initial;
+ --bgcolor-input: initial;
+ --bgcolor-highlight: initial;
+ --color-input: initial;
+
+ .pm-button:not(.pm-button--primary):not(.pm-button--link), .pm-button--info {
+ border-color: $pm-global-border;
+ background: $white;
+ color: $pm-global-grey;
+ }
+
}
+
/* hide unnecessary elements */
.noprint {
display: none;
}
-
+ .is-printed-version {
+ .app-root,
+ .pm-modalOverlay,
+ .pm-modalHeader,
+ .pm-modalFooter,
+ .pm-modalContentInnerTopShadow,
+ .pm-modalContentInnerBottomShadow,
+ .item-icon,
+ [class^="scrollshadow-"] {
+ @extend .noprint;
+ }
+ }
+
/* display specific elements for print */
.onprint {
display: block;
}
-
+
/* avoid problematic page break */
- blockquote, ul, ol {
+ ul, ol {
page-break-inside: avoid;
}
h1, h2, h3, caption {
diff --git a/templates/@theme-base/reusable-components/_design-system-reset.scss b/templates/@theme-base/reusable-components/_design-system-reset.scss
index 10c91ed..3554888 100644
--- a/templates/@theme-base/reusable-components/_design-system-reset.scss
+++ b/templates/@theme-base/reusable-components/_design-system-reset.scss
@@ -12,7 +12,7 @@ html { box-sizing: border-box; }
/* reset minimum */
html, body, blockquote, ul, ol, form, button, figure { margin: 0; padding: 0; }
button, progress { border: 0; }
-p, ul, ol, dl, blockquote, pre, td, th {
+p, ul, ol, dl, blockquote, pre, menu, td, th {
font-size: 1em;
line-height: $l-h;
margin: $l-h * 1em 0;
@@ -26,70 +26,156 @@ p, ul, ol, dl, blockquote, pre, td, th {
font: inherit;
-webkit-appearance: none;
}
+ // -webkit-appearance: none makes vocalization failing
+ input[type="checkbox"] {
+ -webkit-appearance: checkbox;
+ }
+ input[type="radio"] {
+ -webkit-appearance: radio;
+ }
+
+}
+@else {
+ input, select, textarea, optgroup, button {
+ font: inherit;
+ }
}
/* fix display img/iframe */
img,
iframe { vertical-align: middle; }
-ul, ol { padding-left: 2em; }
+ul, ol, menu { padding-left: 2em; }
+
+dd { margin-left: 2em; }
-.unstyled {
- padding-left: 0;
- list-style-type: none;
-}
@if $rtl-option == true {
/* RTL */
- [dir="rtl"] ul,
- [dir="rtl"] ol {
- padding-left: 0;
- padding-right: 2em;
- }
- [dir="rtl"] .unstyled {
- padding-right: 0;
+ [dir="rtl"] {
+ ul,
+ ol {
+ padding-left: 0;
+ padding-right: 2em;
+ }
+ dd {
+ margin-left: 0;
+ margin-right: 2em;
+ }
}
}
@if $root-equiv-10-px == true {
/* base font size at 10px */
- html {
- font-size: 62.5%;
- /* IE9-IE11 math fixing. See https://connect.microsoft.com/IE/feedback/details/816709/ */
- /* Thanks to @guardian, @victorbritopro, @eQRoeil & Knacss */
- font-size: calc(1em * 0.625);
+ html {
+ font-size: 62.5%;
+ @if ( $use-ie-calc-font-fallback == true ){
+ font-size: calc(1em * 0.625);
+ }
}
}
-body {
- background: $pm-global-grey;
- color: $pm-global-light;
- font-family: $font-family;
- text-rendering: geometricPrecision;
- -webkit-font-smoothing: antialiased;
-
- @if $typo-unit == 'use_em' {
- @if $root-equiv-10-px == true {
- font-size: em($base-font, 10);
- }
- @else {
- font-size: em($base-font, $root-default-font-size);
- }
- }
- @else if $typo-unit == 'use_rem' {
- font-size: var(--body-fontsize, rem($base-font));
- }
- @else if $typo-unit == 'use_rem_with_em_fallback' {
- @if $root-equiv-10-px == true {
- font-size: em($base-font, 10);
- }
- @else {
- font-size: em($base-font, $root-default-font-size);
- }
- font-size: rem($base-font);
- }
- line-height: $l-h;
- min-height: 100%;
+
+@if $apply-body-styles == true {
+ body {
+ background: $pm-global-grey;
+ color: $pm-global-light;
+ font-family: $font-family;
+ text-rendering: geometricPrecision;
+ -webkit-font-smoothing: antialiased;
+
+ @if $typo-unit == 'use_em' {
+ @if $root-equiv-10-px == true {
+ font-size: em($base-font, 10);
+ }
+ @else {
+ font-size: em($base-font, $root-default-font-size);
+ }
+ }
+ @else if $typo-unit == 'use_rem' {
+ font-size: var(--body-fontsize, rem($base-font));
+ }
+ @else if $typo-unit == 'use_rem_with_em_fallback' {
+ @if $root-equiv-10-px == true {
+ font-size: em($base-font, 10);
+ }
+ @else {
+ font-size: em($base-font, $root-default-font-size);
+ }
+ font-size: rem($base-font);
+ }
+ line-height: $l-h;
+ min-height: 100%;
+ }
+}
+
+
+// Sass placeholder, don't touch if you are not sure ;)
+%bold {
+ font-weight: bold;
+}
+b, strong {
+ @extend %bold;
}
+/* harmonization between Chrome/Firefox */
+pre, code, kbd, samp {
+ font-family: $font-family-monospace;
+ font-size: 1em;
+}
+pre {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+// tiny reset for mark tag
+mark {
+ @if ( $use-color-reset-mark == true ) {
+ background-color: unset;
+ }
+ @else {
+ background-color: var(--bgcolor-mark, $default-bgColor-mark);
+ }
+ color: var(--color-mark, currentColor);
+ font-weight: bold;
+}
+
+small {
+ font-size: 80%;
+}
+
+
+/* avoid border on images in links + fix border image IE */
+a:link img,
+a:visited img,
+img {
+ border-style: none;
+}
+/* tiny control */
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/* important, abbr are good */
+/* only those with a title are shown */
+abbr[title] {
+ border-bottom: dotted 1px;
+ cursor: help;
+ text-decoration: none;
+ /* color inherited from text */
+}
+
+
+code,
+pre,
+samp {
+ white-space: pre-wrap;
+}
+code {
+ line-height: 1;
+}
+dfn {
+ font-style: italic;
+}
diff --git a/templates/@theme-base/reusable-components/_design-system-responsive.scss b/templates/@theme-base/reusable-components/_design-system-responsive.scss
index 5acf8e5..83edd6d 100644
--- a/templates/@theme-base/reusable-components/_design-system-responsive.scss
+++ b/templates/@theme-base/reusable-components/_design-system-responsive.scss
@@ -1,11 +1,35 @@
/* general case */
@include body-before ('desktop', true);
+
+/**
+ * medium/tablet landscape minor breakpoint
+ */
+@include respond-to($breakpoint-medium-landscape) {
+
+ $list-paddings-medium-landscape: p, pt, pr, pb, pl !default;
+ $list-paddings-medium-landscape-values: 0, 1 !default; // specify 2.5 if needed
+
+ @include padding-generator($list-paddings-medium-landscape, $list-paddings-medium-landscape-values, "ontablet-landscape-");
+
+}
+
+/**
+ * medium/tablet breakpoint
+ */
+@include respond-to($breakpoint-medium, 'min') {
+ .ondesktop {
+ &-h100 {
+ height: 100%;
+ }
+ }
+}
+
/**
* medium/tablet breakpoint
*/
-@include respond-to($breakpoint-medium) {
-
+@include respond-to($breakpoint-medium) {
+
/**
* layout/modules
*/
@@ -15,26 +39,26 @@
/* hide unnecessary elements */
.notablet { display: none; }
-
+
/* linearization of floating content/table-layout */
.autotablet {
float: none;
display: block;
width: auto;
}
-
+
/* margins */
- $list-margins-tablet: m, mt, mr, mb, ml;
- $list-margins-tablet-values: 0, 1, 2; // specify 2.5 if needed
+ $list-margins-tablet: m, mt, mr, mb, ml !default;
+ $list-margins-tablet-values: 0, 1, 2 !default; // specify 2.5 if needed
@include margin-generator($list-margins-tablet, $list-margins-tablet-values, "ontablet-");
/* paddings */
- $list-paddings-tablet: p, pt, pr, pb, pl;
- $list-paddings-tablet-values: 0, 1, 2; // specify 2.5 if needed
+ $list-paddings-tablet: p, pt, pr, pb, pl !default;
+ $list-paddings-tablet-values: 0, 1, 2 !default; // specify 2.5 if needed
@include padding-generator($list-paddings-tablet, $list-paddings-tablet-values, "ontablet-");
-
+
/* text aligns */
.ontablet- {
&alignleft { text-align: left; }
@@ -49,9 +73,27 @@
width: 100%;
flex-basis: auto;
}
- }
+ }
+
+ &w25 { width: 25%; }
&w100 { width: 100%; }
- &mw100 { max-width: 100% }
+ &mw100 { max-width: 100%; }
+ &wauto { width: auto; }
+
+ @for $i from 2 through 3 {
+ &hideTd#{$i} {
+ td:nth-child(#{$i}) {
+ display: none;
+ }
+ }
+ }
+
+ &list-1column {
+ -webkit-column-count: 1;
+ -moz-column-count: 1;
+ column-count: 1;
+ }
+
}
/**
@@ -67,7 +109,7 @@
/**
* small/mobile breakpoint
*/
-@include respond-to($breakpoint-small) {
+@include respond-to($breakpoint-small) {
/**
* layout/modules
@@ -85,19 +127,19 @@
display: block;
width: auto;
}
-
+
/* margins */
- $list-margins-mobile: m, mt, mr, mb, ml;
- $list-margins-mobile-values: 0, 0.5, 1, 2; // specify 2.5 if needed
+ $list-margins-mobile: m, mt, mr, mb, ml !default;
+ $list-margins-mobile-values: 0, 0.25, 0.5, 1, 2, 3.5 !default; // specify 2.5 if needed
@include margin-generator($list-margins-mobile, $list-margins-mobile-values, "onmobile-");
-
+
/* paddings */
- $list-paddings-mobile: p, pt, pr, pb, pl;
- $list-paddings-mobile-values: 0, 1, 2; // specify 2.5 if needed
+ $list-paddings-mobile: p, pt, pr, pb, pl !default;
+ $list-paddings-mobile-values: 0, 0.25, 0.5, 1, 2 !default; // specify 2.5 if needed
@include padding-generator($list-paddings-mobile, $list-paddings-mobile-values, "onmobile-");
-
+
/* text aligns */
.onmobile- {
&alignleft { text-align: left; }
@@ -113,7 +155,10 @@
flex-basis: auto;
}
&.flex-autogrid {
- margin: 0;
+ margin: 0;
+ &.mb1 {
+ margin-bottom: 1em;
+ }
}
& > .flex-autogrid-item {
padding: 0;
@@ -125,24 +170,64 @@
& > * {
align-self: center;
}
- }
- &wauto {
- width: auto;
- }
- &flex-wrap {
+ }
+ &flex-item-fluid {
+ flex: 1 1 0px;
+ }
+ &flex-item-fluid-auto {
+ flex: 1 1 auto;
+ }
+ &no-flex {
+ flex: 0 0 auto;
+ }
+ &flex-shrink {
+ flex-shrink: 1;
+ }
+ &flex-self-start {
+ align-self: start;
+ }
+ &flex-wrap {
flex-wrap: wrap;
}
- &min-w100 {
+ &mw100 {
+ max-width: 100%;
+ }
+ &min-w100 {
min-width: 100%;
}
- &w100 {
- width: 100%;
+ &wauto {
+ width: auto;
}
+ &w25{
+ width: 25%;
+ }
+ &w33{
+ width: 33%;
+ }
+ &w100 {
+ width: 100%;
+ }
+ &no-border {
+ border: 0;
+ }
+
&static {
position: static;
- }
+ }
+ @for $i from 2 through 5 {
+ &hideTd#{$i} {
+ td:nth-child(#{$i}) {
+ display: none;
+ }
+ }
+ }
+ &list-1column {
+ -webkit-column-count: 1;
+ -moz-column-count: 1;
+ column-count: 1;
+ }
}
-
+
/**
* global structure adaptation (page / skip links / header / main content / footer)
@@ -156,7 +241,7 @@
/**
* tiny/small mobile breakpoint
*/
-@include respond-to($breakpoint-tiny) {
+@include respond-to($breakpoint-tiny) {
/**
* layout/modules
@@ -174,18 +259,37 @@
display: block;
width: auto;
}
-
+ .ontinymobile- {
+ &wauto {
+ width: auto;
+ }
+ &flex-self-start {
+ align-self: flex-start;
+ }
+ &flex-column {
+ flex-direction: column;
+ & > * {
+ width: 100%;
+ flex-basis: auto;
+ }
+ }
+ &hideTd3 {
+ td:nth-child(3) {
+ display: none;
+ }
+ }
+ }
/* margins */
- //$list-margins-tinymobile: m, mt, mr, mb, ml;
- //$list-margins-tinymobile-values: 0, 1, 2; // specify 2.5 if needed
+ $list-margins-tinymobile: m, mt, mr, mb, ml !default;
+ $list-margins-tinymobile-values: 0, 1 !default;
- //@include margin-generator($list-margins-tinymobile, $list-margins-tinymobile-values, "ontinymobile-");
+ @include margin-generator($list-margins-tinymobile, $list-margins-tinymobile-values, "ontinymobile-");
/* paddings */
- //$list-paddings-tinymobile: p, pt, pr, pb, pl;
- //$list-paddings-tinymobile-values: 0, 1, 2; // specify 2.5 if needed
+ //$list-paddings-tinymobile: p, pt, pr, pb, pl !default;
+ //$list-paddings-tinymobile-values: 0, 1, 2 !default; // specify 2.5 if needed
- //@include padding-generator($list-paddings-tinymobile, $list-paddings-tinymobile-values, "ontinymobile-");
+ //@include padding-generator($list-paddings-tinymobile, $list-paddings-tinymobile-values, "ontinymobile-");
/**
* global structure adaptation (page / skip links / header / main content / footer)
diff --git a/templates/@theme-base/reusable-components/_design-system-util-typo-fix.scss b/templates/@theme-base/reusable-components/_design-system-util-typo-fix.scss
index fe793a3..b54dd8f 100644
--- a/templates/@theme-base/reusable-components/_design-system-util-typo-fix.scss
+++ b/templates/@theme-base/reusable-components/_design-system-util-typo-fix.scss
@@ -6,6 +6,20 @@ dialog { border: 0; }
border-collapse: collapse;
}
+.unstyled {
+ padding-left: 0;
+ list-style-type: none;
+}
+
+@if $rtl-option == true {
+ /* RTL */
+ [dir="rtl"] {
+ .unstyled {
+ padding-right: 0;
+ }
+ }
+}
+
/*
* taken from http://tinytypo.tetue.net/ made by @tetue
* tuned with the help of https://www.nicolas-hoffmann.net/utilitaires/codes-hexas-ascii-unicode-utf8-caracteres-usuels.php
@@ -28,21 +42,10 @@ q:after {
content: close-quote;
}
-/* avoid ugly line-height */
-sup,
-sub {
- vertical-align: 0;
- position: relative;
-}
-sup {
- bottom: 1ex;
-}
-sub {
- top: .5ex;
-}
+@import './_includes/_resets/typo-sub-sup';
/* avoid margin problems */
-@if $vertical-rythm == 'single_top' or $vertical-rythm == 'double_top_single_bottom' {
+@if $vertical-rhythm == 'single_top' or $vertical-rhythm == 'double_top_single_bottom' {
h1,.h1,
h2,.h2,
h3,.h3,
@@ -63,7 +66,7 @@ sub {
table {
&:last-child {
margin-bottom: 0;
- }
+ }
}
}
@@ -87,7 +90,7 @@ li ul {
p {
word-break: break-word;
}
- @supports (-webkit-hyphens: auto) or (-ms-hyphens: auto) or (hyphens: auto) {
+ @supports (-webkit-hyphens: auto) or (hyphens: auto) {
textarea,
table,
td,
@@ -98,7 +101,7 @@ li ul {
div,
p {
word-break: normal;
- @include vendor-prefix(hyphens, auto, webkit ms);
+ @include vendor-prefix(hyphens, auto, webkit);
}
}
}
@@ -106,10 +109,10 @@ li ul {
.cut {
word-break: break-word;
}
- @supports (-webkit-hyphens: auto) or (-ms-hyphens: auto) or (hyphens: auto) {
+ @supports (-webkit-hyphens: auto) or (hyphens: auto) {
.cut {
word-break: normal;
- @include vendor-prefix(hyphens, auto, webkit ms);
+ @include vendor-prefix(hyphens, auto, webkit);
}
}
}
@@ -118,24 +121,19 @@ li ul {
.nocut {
word-wrap: normal;
}
-@supports (-webkit-hyphens: auto) or (-ms-hyphens: auto) or (hyphens: auto) {
+@supports (-webkit-hyphens: auto) or (hyphens: auto) {
.nocut {
- @include vendor-prefix(hyphens, none, webkit ms);
+ @include vendor-prefix(hyphens, none, webkit);
}
}
.break {
- word-wrap: break-word;
-}
-
-code,
-pre,
-samp {
- white-space: pre-wrap;
+ word-break: break-word;
}
-code {
- line-height: 1;
+.hyphens {
+ @include vendor-prefix(hyphens, auto, webkit);
}
+
kbd {
border: solid 1px;
border-top-left-radius: .5em;
@@ -146,14 +144,6 @@ table {
margin-bottom: 1.5em;
table-layout: fixed;
}
-/* important, abbr are good */
-/* only those with a title are shown */
-abbr[title] {
- border-bottom: dotted 1px;
- cursor: help;
- text-decoration: none;
- /* color inherited from text */
-}
/* text aligns */
.alignright { text-align: right; }
@@ -168,15 +158,21 @@ abbr[title] {
.ellipsis {
overflow: hidden;
- text-overflow: ellipsis;
+ text-overflow: ellipsis;
white-space: nowrap;
}
+.ellipsis-two-lines,
.ellipsis-four-lines {
display: -webkit-box;
- -webkit-line-clamp: 4;
- -webkit-box-orient: vertical;
+ -webkit-box-orient: vertical;
overflow: hidden;
}
+.ellipsis-two-lines {
+ -webkit-line-clamp: 2;
+}
+.ellipsis-four-lines {
+ -webkit-line-clamp: 4;
+}
.uppercase {
text-transform: uppercase;
@@ -184,9 +180,22 @@ abbr[title] {
.capitalize {
text-transform: capitalize;
}
+.capitalize-block {
+ text-transform: lowercase;
+ &:first-letter {
+ text-transform: uppercase;
+ }
+}
-b, strong, .strong, .bold {
- font-weight: bold;
+.strong, .bold {
+ @extend %bold;
+}
+.nobold {
+ font-weight: normal;
+}
+
+.semibold {
+ font-weight: 600;
}
.italic {
@@ -195,4 +204,19 @@ b, strong, .strong, .bold {
.no-outline {
outline: 0;
-} \ No newline at end of file
+}
+
+.strike {
+ text-decoration: line-through;
+}
+
+.pre-wrap {
+ white-space: pre-wrap;
+}
+.no-wrap {
+ white-space: nowrap;
+}
+.pre {
+ white-space: pre;
+}
+
diff --git a/templates/@theme-base/reusable-components/_includes/_resets/_typo-sub-sup.scss b/templates/@theme-base/reusable-components/_includes/_resets/_typo-sub-sup.scss
new file mode 100644
index 0000000..6e9b3d7
--- /dev/null
+++ b/templates/@theme-base/reusable-components/_includes/_resets/_typo-sub-sup.scss
@@ -0,0 +1,12 @@
+/* avoid ugly line-height */
+sup,
+sub {
+ vertical-align: 0;
+ position: relative;
+}
+sup {
+ bottom: 1ex;
+}
+sub {
+ top: .5ex;
+}