UNPKG

@dialpad/dialtone-css

Version:

Dialpad's design system

289 lines (256 loc) 8.38 kB
// // DIALTONE // COMPONENTS: TOOLTIPS // // These are tooltip classes for Dialpad's design system Dialtone. // For further documentation of these and other classes, // visit https://dialtone.dialpad.com/components/tooltips // // TABLE OF CONTENTS // • VARIABLES // • BASE STYLE // • ALTERNATE STYLES // • ARROW DIRECTIONS // - TOP LEFT // - TOP CENTER // - TOP RIGHT // - RIGHT TOP // - RIGHT CENTER // - RIGHT BOTTOM // - BOTTOM LEFT // - BOTTOM CENTER // - BOTTOM RIGHT // - LEFT TOP // - LEFT CENTER // - LEFT BOTTOM // // ============================================================================ // $ BASE STYLE // ---------------------------------------------------------------------------- @import (inline) 'tippy.js/dist/svg-arrow.css'; .d-tooltip-container { position: relative; display: inline-flex; align-items: center; justify-content: center; } .tippy-box[data-reference-hidden] { visibility: hidden; pointer-events: none; } .tippy-box > .tippy-svg-arrow { fill: var(--dt-color-surface-contrast); } .tippy-box[data-theme~='inverted'] > .tippy-svg-arrow { fill: var(--dt-color-surface-contrast-inverted); } .tippy-box[data-animation='fade'][data-state='hidden'] { opacity: 0; } .d-tooltip { // -- COMPONENT CSS VARS // ----------------------- --tooltip-color-background: var(--dt-color-surface-contrast); --tooltip-color-text: var(--dt-color-foreground-primary-inverted); --tooltip-font-weight: var(--dt-font-weight-medium); --tooltip-line-height: var(--dt-font-line-height-300); --tooltip-padding-y: var(--dt-space-400); // 8 --tooltip-padding-x: var(--dt-space-450); // 12 --tooltip-border-radius: var(--dt-size-radius-300); // 4 z-index: var(--zi-tooltip); max-width: var(--dt-size-875); padding: var(--tooltip-padding-y) var(--tooltip-padding-x); color: var(--tooltip-color-text); font-weight: var(--tooltip-font-weight); font-size: var(--dt-font-size-100); line-height: var(--tooltip-line-height); letter-spacing: calc(var(--dt-space-100) * 0.25); text-align: center; overflow-wrap: break-word; background-color: var(--tooltip-color-background); border-radius: var(--tooltip-border-radius); &::after { position: absolute; border: var(--dt-size-350) solid transparent; content: ''; } } // ============================================================================ // $ INVERTED STYLE // ---------------------------------------------------------------------------- .d-tooltip--inverted { // -- COMPONENT CSS VARS // ----------------------- --tooltip-color-background: var(--dt-color-surface-contrast-inverted); --tooltip-color-text: var(--dt-color-foreground-primary); } // ============================================================================ // $ HIDE STYLE // ---------------------------------------------------------------------------- .d-tooltip--hide { visibility: hidden; opacity: 0; transition: visibility 0s 200ms, transform 200ms var(--ttf-in-out) 0s, opacity 200ms var(--ttf-in-out) 0s; } // ============================================================================ // $ SHOW STYLE // ---------------------------------------------------------------------------- .d-tooltip--show { transform: translate(0, 0); visibility: visible; opacity: 1; transition: visibility 0s 0s, transform 200ms var(--ttf-in-out) 10ms, opacity 200ms var(--ttf-in-out) 10ms; } // ============================================================================ // $ HOVER AND FOCUS STYLES // ---------------------------------------------------------------------------- .d-tooltip--hover { .d-tooltip { &:extend(.d-tooltip--hide); } &:hover, &:focus-visible { .d-tooltip { &:extend(.d-tooltip--show); } } } // ============================================================================ // $ TOOLTIP DIRECTIONS // ============================================================================ // $$ TOP // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--bottom-start, .d-tooltip__arrow-tippy--bottom, .d-tooltip__arrow-tippy--bottom-end, .d-tooltip__arrow--top-left, .d-tooltip__arrow--top-center, .d-tooltip__arrow--top-right { top: calc(100% + var(--dt-space-450)); // 100% + 12 transform: translateY(var(--dt-space-500)); // 16 &::after { top: calc(var(--dt-space-350-negative) - var(--dt-space-50-negative)); // -5.5 border-top-width: 0; border-bottom-color: var(--tooltip-color-background); } } // $$ BOTTOM // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--top-start, .d-tooltip__arrow-tippy--top, .d-tooltip__arrow-tippy--top-end, .d-tooltip__arrow--bottom-left, .d-tooltip__arrow--bottom-center, .d-tooltip__arrow--bottom-right { bottom: calc(100% + var(--dt-space-450)); // 100% + 12 transform: translateY(var(--dt-space-500-negative)); // -16 &::after { bottom: calc(var(--dt-space-350-negative) - var(--dt-space-50-negative)); // -5.5 border-top-color: var(--tooltip-color-background); border-bottom-width: 0; } } // $$ TOP / BOTTOM LEFT // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--bottom-start, .d-tooltip__arrow-tippy--top-start, .d-tooltip__arrow--top-left, .d-tooltip__arrow--bottom-left { left: var(--dt-space-200-negative); // -2 &::after { left: var(--dt-space-500); // 16 } } // $$ TOP / BOTTOM CENTER // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--bottom, .d-tooltip__arrow-tippy--top, .d-tooltip__arrow--top-center, .d-tooltip__arrow--bottom-center { &::after { left: 50%; margin-left: var(--dt-space-350-negative); // -6 } } // $$ TOP / BOTTOM RIGHT // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--bottom-end, .d-tooltip__arrow-tippy--top-end, .d-tooltip__arrow--top-right, .d-tooltip__arrow--bottom-right { right: var(--dt-space-200-negative); // -2 &::after { right: var(--dt-space-500); // 16 } } // $$ RIGHT // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--left-start, .d-tooltip__arrow-tippy--left, .d-tooltip__arrow-tippy--left-end, .d-tooltip__arrow--right-top, .d-tooltip__arrow--right-center, .d-tooltip__arrow--right-bottom { right: calc(100% + var(--dt-space-450)); // 100% + 12 transform: translateX(var(--dt-space-500-negative)); // -16 &::after { right: calc(var(--dt-space-350-negative) - var(--dt-space-50-negative)); // -5.5 border-right-width: 0; border-left-color: var(--tooltip-color-background); } } // $$ LEFT // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--right-start, .d-tooltip__arrow-tippy--right, .d-tooltip__arrow-tippy--right-end, .d-tooltip__arrow--left-top, .d-tooltip__arrow--left-center, .d-tooltip__arrow--left-bottom { left: calc(100% + var(--dt-space-450)); // 100% + 12 transform: translateX(var(--dt-space-500)); // 16 &::after { left: calc(var(--dt-space-350-negative) - var(--dt-space-50-negative)); // -5.5 border-right-color: var(--tooltip-color-background); border-left-width: 0; } } // $$ RIGHT / LEFT TOP // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--right-start, .d-tooltip__arrow-tippy--left-start, .d-tooltip__arrow--right-top, .d-tooltip__arrow--left-top { top: var(--dt-space-100-negative); // -1 &::after { top: var(--dt-space-400); // 8 } } // $$ RIGHT / LEFT CENTER // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--right, .d-tooltip__arrow-tippy--left, .d-tooltip__arrow--right-center, .d-tooltip__arrow--left-center { &::after { top: 50%; margin-top: var(--dt-space-350-negative); // -6 } } // $$ RIGHT / LEFT BOTTOM // ---------------------------------------------------------------------------- .d-tooltip__arrow-tippy--right-end, .d-tooltip__arrow-tippy--left-end, .d-tooltip__arrow--right-bottom, .d-tooltip__arrow--left-bottom { bottom: var(--dt-space-100-negative); // -1 &::after { bottom: var(--dt-space-400); // 8 } }