/* Definitions for contextual background elements, toasts and tooltips. */ $mark-back-color: #0277bd !default; // Background color for $mark-fore-color: #fafafa !default; // Text color for $mark-font-size: 0.95em !default; // Font size for $mark-line-height: 1em !default; // Line height for $mark-inline-block-name: 'inline-block' !default;// Class name for inline-block $_include-toast: true !default; // [Hidden] Should toasts be included? (boolean) $toast-name: 'toast' !default; // Class name for toast component $toast-back-color: #424242 !default; // Background color for toast component $toast-fore-color: #fafafa !default; // Text color for toast component $_include-tooltip: true !default; // [Hidden] Should tooltips be included? (boolean) $tooltip-name: 'tooltip' !default; // Class name for tooltip component $tooltip-bottom-name: 'bottom' !default; // Bottom tooltip class name $tooltip-back-color: #212121 !default; // Background color for tooltip component $tooltip-fore-color: #fafafa !default; // Text color for tooltip component $_include-modal: true !default; // [Hidden] Should modal dialogs be included? (boolean) $modal-name: 'modal' !default; // Class name for modal dialog component $modal-overlay-color: rgba(0, 0, 0, 0.45) !default; // Overlay color for modal dialog component $modal-close-name: 'modal-close' !default;// Class name for modal dialog close button $modal-close-color: #444 !default; // Text color for the close button of the modal dialog component $modal-close-hover-back-color: #f0f0f0 !default; // Background color for the close button of the modal dialog component (on hover/focus) $modal-close-size: 1.75rem !default; // Font size for the close button of the modal dialog component $_include-collapse: true !default; // [Hidden] Should collapse components be included? (boolean) $collapse-name: 'collapse' !default; // Class name for collapse component $collapse-label-height: 1.5rem !default; // Height for the labels in the collapse component $collapse-content-max-height: 400px !default; // Max height for the content panes in the collapse component $collapse-label-back-color: #e8e8e8 !default;// Background color for labels in the collapse component $collapse-label-fore-color: #212121 !default;// Text color for labels in the collapse component $collapse-label-hover-back-color:#f0f0f0 !default;// Background color for labels in the collapse component (hover) $collapse-selected-label-back-color:#ececec !default;// Background color for selected labels in the collapse component $collapse-border-color: #ddd !default; // Border color for collapse component $collapse-selected-label-border-color: #0277bd !default; // Border color for collapse component's selected labels $collapse-content-back-color: #fafafa !default; // Background color for collapse component's content panes // CSS variable name definitions [exercise caution if modifying these] $mark-back-color-var: '--mark-back-color' !default; $mark-fore-color-var: '--mark-fore-color' !default; $toast-back-color-var: '--toast-back-color' !default; $toast-fore-color-var: '--toast-fore-color' !default; $tooltip-back-color-var: '--tooltip-back-color' !default; $tooltip-fore-color-var: '--tooltip-fore-color' !default; $modal-overlay-color-var: '--modal-overlay-color' !default; $modal-close-color-var: '--modal-close-color' !default; $modal-close-hover-back-color-var: '--modal-close-hover-color' !default; $collapse-label-back-color-var: '--collapse-label-back-color' !default; $collapse-label-fore-color-var: '--collapse-label-fore-color' !default; $collapse-label-hover-back-color-var: '--collapse-label-hover-back-color' !default; $collapse-selected-label-back-color-var: '--collapse-selected-label-back-color' !default; $collapse-border-color-var: '--collapse-border-color' !default; $collapse-content-back-color-var: '--collapse-content-back-color' !default; $collapse-selected-label-border-color-var: '--collapse-selected-label-border-color' !default; // == Uncomment below code if this module is used on its own == // // $base-line-height: 1.5 !default; // Line height for most elements // $universal-margin: 0.5rem !default; // Universal margin for the most elements // $universal-padding: 0.5rem !default; // Universal padding for the most elements // $universal-border-radius: 0.125rem !default; // Universal border-radius for most elements // $universal-box-shadow: none !default; // Universal box-shadow for most elements // $universal-margin-var: '--universal-margin' !default; // $universal-padding-var: '--universal-padding' !default; // $universal-border-radius-var: '--universal-border-radius' !default; // $universal-box-shadow-var: '--universal-box-shadow' !default; // :root { // #{$universal-margin-var}: $universal-margin; // #{$universal-padding-var}: $universal-padding; // #{$universal-border-radius-var}: $universal-border-radius; // @if $universal-box-shadow != none { // #{$universal-box-shadow-var}: $universal-box-shadow; // } // } // // ============================================================ // Check the `_contextual_mixins.scss` file to find this module's mixins. @import '_contextual_mixins'; /* Contextual module CSS variable definitions */ :root { #{$mark-back-color-var}: $mark-back-color; #{$mark-fore-color-var}: $mark-fore-color; } // Default styling for mark. Use mixins for alternate styles. mark { background: var(#{$mark-back-color-var}); color: var(#{$mark-fore-color-var}); font-size: $mark-font-size; line-height: $mark-line-height; border-radius: var(#{$universal-border-radius-var}); padding: calc(var(#{$universal-padding-var}) / 4) calc(var(#{$universal-padding-var}) / 2); @if $universal-box-shadow != none { box-shadow: var(#{$universal-box-shadow-var}); } &.#{$mark-inline-block-name} { display: inline-block; // This is hardcoded, as we want inline-block elements to be styled as normal pieces of text, instead of look small and weird. font-size: 1em; // Line height is reset to the normal line-height from `core`. Also hardcoded for same reasons. line-height: $base-line-height; padding: calc(var(#{$universal-padding-var}) / 2) var(#{$universal-padding-var}); } } // Styling for toasts. - No border styling, I think it's unnecessary anyways. @if $_include-toast { :root { #{$toast-back-color-var}: $toast-back-color; #{$toast-fore-color-var}: $toast-fore-color; } .#{$toast-name} { position: fixed; bottom: calc(var(#{$universal-margin-var}) * 3); left: 50%; transform: translate(-50%, -50%); z-index: 1111; color: var(#{$toast-fore-color-var}); background: var(#{$toast-back-color-var}); border-radius: calc(var(#{$universal-border-radius-var}) * 16); padding: var(#{$universal-padding-var}) calc(var(#{$universal-padding-var}) * 3); @if $universal-box-shadow != none { box-shadow: var(#{$universal-box-shadow-var}); } } } // Styling for tooltips. @if $_include-tooltip { :root { #{$tooltip-back-color-var}: $tooltip-back-color; #{$tooltip-fore-color-var}: $tooltip-fore-color; } .#{$tooltip-name} { position: relative; display: inline-block; &:before, &:after { position: absolute; opacity: 0; clip: rect(0 0 0 0); -webkit-clip-path: inset(100%); clip-path: inset(100%); transition: all 0.3s; // Remember to keep this index a lower value than the one used for stickies. z-index: 1010; // Deals with certain problems when combined with cards and tables. left: 50%; } &:not(.#{$tooltip-bottom-name}):before, &:not(.#{$tooltip-bottom-name}):after { // Top (default) tooltip styling bottom: 75%; } &.#{$tooltip-bottom-name}:before, &.#{$tooltip-bottom-name}:after { // Bottom tooltip styling top: 75%; } &:hover, &:focus { &:before, &:after { opacity: 1; clip: auto; -webkit-clip-path: inset(0%); clip-path: inset(0%); } } &:before { // This is the little tooltip triangle content: ''; background: transparent; border: var(#{$universal-margin-var}) solid transparent; // Newer browsers will center the tail properly left: calc(50% - var(#{$universal-margin-var})); } &:not(.#{$tooltip-bottom-name}):before { // Top (default) tooltip styling border-top-color: $tooltip-back-color; } &.#{$tooltip-bottom-name}:before { // Bottom tooltip styling border-bottom-color: $tooltip-back-color; } &:after { // This is the actual tooltip's text block content: attr(aria-label); color: var(#{$tooltip-fore-color-var}); background: var(#{$tooltip-back-color-var}); border-radius: var(#{$universal-border-radius-var}); padding: var(#{$universal-padding-var}); @if $universal-box-shadow != none { box-shadow: var(#{$universal-box-shadow-var}); } white-space: nowrap; transform: translateX(-50%); } &:not(.#{$tooltip-bottom-name}):after { // Top (default) tooltip styling margin-bottom: calc(2 * var(#{$universal-margin-var})); } &.#{$tooltip-bottom-name}:after { // Bottom tooltip styling margin-top: calc(2 * var(#{$universal-margin-var})); } } } // Styling for modal dialogs. @if $_include-modal { :root { #{$modal-overlay-color-var}: $modal-overlay-color; #{$modal-close-color-var}: $modal-close-color; #{$modal-close-hover-back-color-var}: $modal-close-hover-back-color; } [type="checkbox"].#{$modal-name} { height: 1px; width: 1px; margin: -1px; overflow: hidden; position: absolute; clip: rect(0 0 0 0); -webkit-clip-path: inset(100%); clip-path: inset(100%); & + div { position: fixed; top: 0; left: 0; display: none; width: 100vw; height: 100vh; background: var(#{$modal-overlay-color-var}); & .card { margin: 0 auto; max-height: 50vh; overflow: auto; & .#{$modal-close-name} { position: absolute; top: 0; right: 0; width: $modal-close-size; height: $modal-close-size; border-radius: var(#{$universal-border-radius-var}); padding: var(#{$universal-padding-var}); margin: 0; cursor: pointer; transition: background 0.3s; &:before { display: block; content: '\00D7'; color: var(#{$modal-close-color-var}); position: relative; font-family: sans-serif; font-size: $modal-close-size; line-height: 1; text-align: center; } &:hover, &:focus { background: var(#{$modal-close-hover-back-color-var}); } } } } &:checked + div { display: flex; flex: 0 1 auto; z-index: 1200; & .card { & .#{$modal-close-name} { z-index: 1211; } } } } } // Styling for collapse. @if $_include-collapse { :root { #{$collapse-label-back-color-var}: $collapse-label-back-color; #{$collapse-label-fore-color-var}: $collapse-label-fore-color; #{$collapse-label-hover-back-color-var}: $collapse-label-hover-back-color; #{$collapse-selected-label-back-color-var}: $collapse-selected-label-back-color; #{$collapse-border-color-var}: $collapse-border-color; #{$collapse-content-back-color-var} : $collapse-content-back-color; #{$collapse-selected-label-border-color-var}: $collapse-selected-label-border-color; } .#{$collapse-name} { width: calc(100% - 2 * var(#{$universal-margin-var})); opacity: 1; display: flex; flex-direction: column; margin: var(#{$universal-margin-var}); border-radius: var(#{$universal-border-radius-var}); @if $universal-box-shadow != none { box-shadow: var(#{$universal-box-shadow-var}); } & > [type="radio"], & > [type="checkbox"] { height: 1px; width: 1px; margin: -1px; overflow: hidden; position: absolute; clip: rect(0 0 0 0); -webkit-clip-path: inset(100%); clip-path: inset(100%); } & > label { flex-grow: 1; display: inline-block; height: $collapse-label-height; cursor: pointer; transition: background 0.3s; color: var(#{$collapse-label-fore-color-var}); background: var(#{$collapse-label-back-color-var}); border: $__1px solid var(#{$collapse-border-color-var}); padding: calc(1.5 * var(#{$universal-padding-var})); &:hover, &:focus { background: var(#{$collapse-label-hover-back-color-var}); } + div { flex-basis: auto; height: 1px; width: 1px; margin: -1px; overflow: hidden; position: absolute; clip: rect(0 0 0 0); -webkit-clip-path: inset(100%); clip-path: inset(100%); transition: max-height 0.3s; max-height: 1px; // for transition } } > :checked + label { background: var(#{$collapse-selected-label-back-color-var}); // border: 0.0625rem solid #bdbdbd; // var it border-bottom-color: var(#{$collapse-selected-label-border-color-var}); & + div { box-sizing: border-box; position: relative; width: 100%; height: auto; overflow: auto; margin: 0; background: var(#{$collapse-content-back-color-var}); border: $__1px solid var(#{$collapse-border-color-var}); border-top: 0; padding: var(#{$universal-padding-var}); clip: auto; -webkit-clip-path: inset(0%); clip-path: inset(0%); max-height: $collapse-content-max-height; } } & > label:not(:first-of-type) { // Keep these down here, as it overrides some other styles. border-top: 0; } & > label:first-of-type { border-radius: var(#{$universal-border-radius-var}) var(#{$universal-border-radius-var}) 0 0; } & > label:last-of-type:not(:first-of-type) { border-radius: 0 0 var(#{$universal-border-radius-var}) var(#{$universal-border-radius-var}); } & > label:last-of-type:first-of-type { border-radius: var(#{$universal-border-radius-var}); } & > :checked:last-of-type:not(:first-of-type) + label { border-radius: 0; } & > :checked:last-of-type + label + div { border-radius: 0 0 var(#{$universal-border-radius-var}) var(#{$universal-border-radius-var}); } } }