/*! Hint.css - v3.0.0 - 2023-11-29 * https://kushagra.dev/lab/hint/ * Copyright (c) 2023 Kushagra Gour */ /*-------------------------------------*\ HINT.css - A CSS tooltip library \*-------------------------------------*/ /** * HINT.css is a tooltip library made in pure CSS. * * Source: https://github.com/chinchang/hint.css * Demo: http://kushagragour.in/lab/hint/ * */ /** * source: hint-core.scss * * Defines the basic styling for the tooltip. * Each tooltip is made of 2 parts: * 1) body (:after) * 2) arrow (:before) * * Classes added: * 1) hint */ [class*=hint--] { position: relative; display: inline-block; /** * tooltip arrow */ /** * tooltip body */ } [class*=hint--]:before, [class*=hint--]:after { position: absolute; transform: translate3d(0, 0, 0); visibility: hidden; opacity: 0; z-index: 1000000; pointer-events: none; transition: 0.3s ease; transition-delay: 0ms; } [class*=hint--]:hover:before, [class*=hint--]:hover:after { visibility: visible; opacity: 1; } [class*=hint--]:hover:before, [class*=hint--]:hover:after { transition-delay: 100ms; } [class*=hint--]:before { content: ""; position: absolute; background: transparent; border: 6px solid transparent; background-color: hsl(0, 0%, 22%); clip-path: polygon(0% 0%, 100% 0%, 100% 100%); z-index: 1000001; } [class*=hint--]:after { background: hsl(0, 0%, 22%); color: white; padding: 8px 10px; font-size: 1rem; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 1rem; white-space: nowrap; } [class*=hint--][aria-label]:after { content: attr(aria-label); } [class*=hint--][data-hint]:after { content: attr(data-hint); } [aria-label=""]:before, [aria-label=""]:after, [data-hint=""]:before, [data-hint=""]:after { display: none !important; } /** * source: hint-position.scss * * Defines the positoning logic for the tooltips. * * Classes added: * 1) hint--top * 2) hint--bottom * 3) hint--left * 4) hint--right */ /** * top tooltip */ .hint--top { --rotation: 135deg; } .hint--top:before { margin-bottom: -5.5px; transform: rotate(var(--rotation)); } .hint--top:before, .hint--top:after { bottom: 100%; left: 50%; } .hint--top:before { left: calc(50% - 6px); } .hint--top:after { transform: translateX(-50%); } .hint--top:hover:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--top:hover:after { transform: translateX(-50%) translateY(-8px); } /** * bottom tooltip */ .hint--bottom { --rotation: -45deg; } .hint--bottom:before { margin-top: -5.5px; transform: rotate(var(--rotation)); } .hint--bottom:before, .hint--bottom:after { top: 100%; left: 50%; } .hint--bottom:before { left: calc(50% - 6px); } .hint--bottom:after { transform: translateX(-50%); } .hint--bottom:hover:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--bottom:hover:after { transform: translateX(-50%) translateY(8px); } /** * right tooltip */ .hint--right { --rotation: -135deg; } .hint--right:before { margin-left: -5.5px; margin-bottom: -6px; transform: rotate(var(--rotation)); } .hint--right:after { margin-bottom: calc(-1 * (1rem + 16px) / 2); } .hint--right:before, .hint--right:after { left: 100%; bottom: 50%; } .hint--right:hover:before { transform: translateX(8px) rotate(var(--rotation)); } .hint--right:hover:after { transform: translateX(8px); } /** * left tooltip */ .hint--left { --rotation: 45deg; } .hint--left:before { margin-right: -5.5px; margin-bottom: -6px; transform: rotate(var(--rotation)); } .hint--left:after { margin-bottom: calc(-1 * (1rem + 16px) / 2); } .hint--left:before, .hint--left:after { right: 100%; bottom: 50%; } .hint--left:hover:before { transform: translateX(-8px) rotate(var(--rotation)); } .hint--left:hover:after { transform: translateX(-8px); } /** * top-left tooltip */ .hint--top-left { --rotation: 135deg; } .hint--top-left:before { margin-bottom: -5.5px; transform: rotate(var(--rotation)); } .hint--top-left:before, .hint--top-left:after { bottom: 100%; left: 50%; } .hint--top-left:before { left: calc(50% - 6px); } .hint--top-left:after { transform: translateX(-100%); } .hint--top-left:after { margin-left: 12px; } .hint--top-left:hover:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--top-left:hover:after { transform: translateX(-100%) translateY(-8px); } /** * top-right tooltip */ .hint--top-right { --rotation: 135deg; } .hint--top-right:before { margin-bottom: -5.5px; transform: rotate(var(--rotation)); } .hint--top-right:before, .hint--top-right:after { bottom: 100%; left: 50%; } .hint--top-right:before { left: calc(50% - 6px); } .hint--top-right:after { transform: translateX(0); } .hint--top-right:after { margin-left: -12px; } .hint--top-right:hover:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--top-right:hover:after { transform: translateY(-8px); } /** * bottom-left tooltip */ .hint--bottom-left { --rotation: -45deg; } .hint--bottom-left:before { margin-top: -5.5px; transform: rotate(var(--rotation)); } .hint--bottom-left:before, .hint--bottom-left:after { top: 100%; left: 50%; } .hint--bottom-left:before { left: calc(50% - 6px); } .hint--bottom-left:after { transform: translateX(-100%); } .hint--bottom-left:after { margin-left: 12px; } .hint--bottom-left:hover:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--bottom-left:hover:after { transform: translateX(-100%) translateY(8px); } /** * bottom-right tooltip */ .hint--bottom-right { --rotation: -45deg; } .hint--bottom-right:before { margin-top: -5.5px; transform: rotate(var(--rotation)); } .hint--bottom-right:before, .hint--bottom-right:after { top: 100%; left: 50%; } .hint--bottom-right:before { left: calc(50% - 6px); } .hint--bottom-right:after { transform: translateX(0); } .hint--bottom-right:after { margin-left: -12px; } .hint--bottom-right:hover:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--bottom-right:hover:after { transform: translateY(8px); } /** * source: hint-sizes.scss * * Defines width restricted tooltips that can span * across multiple lines. * * Classes added: * 1) hint--small * 2) hint--medium * 3) hint--large * 4) hint--fit * */ .hint--small:after, .hint--medium:after, .hint--large:after, .hint--fit:after { box-sizing: border-box; white-space: normal; line-height: 1.4em; word-wrap: break-word; } .hint--small:after { width: 80px; } .hint--medium:after { width: 150px; } .hint--large:after { width: 300px; } .hint--fit:after { width: 100%; } /** * source: hint-theme.scss * * Defines basic theme for tooltips. * */ [class*=hint--] { /** * tooltip body */ } [class*=hint--]:after { text-shadow: 0 1px 0px black; box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3); } /** * source: hint-color-types.scss * * Contains tooltips of various types based on color differences. * * Classes added: * 1) hint--error * 2) hint--warning * 3) hint--info * 4) hint--success * */ /** * Error */ .hint--error:after { background-color: hsl(1, 40%, 50%); text-shadow: 0 1px 0px #592726; } .hint--error:before { background-color: hsl(1, 40%, 50%); } /** * Warning */ .hint--warning:after { background-color: hsl(38, 46%, 54%); text-shadow: 0 1px 0px #6c5328; } .hint--warning:before { background-color: hsl(38, 46%, 54%); } /** * Info */ .hint--info:after { background-color: hsl(200, 50%, 45%); text-shadow: 0 1px 0px #1a3c4d; } .hint--info:before { background-color: hsl(200, 50%, 45%); } /** * Success */ .hint--success:after { background-color: hsl(121, 32%, 40%); text-shadow: 0 1px 0px #1a321a; } .hint--success:before { background-color: hsl(121, 32%, 40%); } /** * source: hint-always.scss * * Defines a persisted tooltip which shows always. * * Classes added: * 1) hint--always * */ .hint--always:after, .hint--always:before { opacity: 1; visibility: visible; } .hint--always.hint--top:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--always.hint--top:after { transform: translateX(-50%) translateY(-8px); } .hint--always.hint--top-left:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--always.hint--top-left:after { transform: translateX(-100%) translateY(-8px); } .hint--always.hint--top-right:before { transform: translateY(-8px) rotate(var(--rotation)); } .hint--always.hint--top-right:after { transform: translateY(-8px); } .hint--always.hint--bottom:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--always.hint--bottom:after { transform: translateX(-50%) translateY(8px); } .hint--always.hint--bottom-left:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--always.hint--bottom-left:after { transform: translateX(-100%) translateY(8px); } .hint--always.hint--bottom-right:before { transform: translateY(8px) rotate(var(--rotation)); } .hint--always.hint--bottom-right:after { transform: translateY(8px); } .hint--always.hint--left:before { transform: translateX(-8px) rotate(var(--rotation)); } .hint--always.hint--left:after { transform: translateX(-8px); } .hint--always.hint--right:before { transform: translateX(8px) rotate(var(--rotation)); } .hint--always.hint--right:after { transform: translateX(8px); } /** * source: hint-rounded.scss * * Defines rounded corner tooltips. * * Classes added: * 1) hint--rounded * */ .hint--rounded:before { border-radius: 0 4px 0 0; } .hint--rounded:after { border-radius: 4px; } /** * source: hint-effects.scss * * Defines various transition effects for the tooltips. * * Classes added: * 1) hint--no-animate * 2) hint--bounce * */ .hint--no-animate:before, .hint--no-animate:after { transition-duration: 0ms; } .hint--bounce:before, .hint--bounce:after { transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24); } @supports (transition-timing-function: linear(0, 1)) { .hint--bounce:before, .hint--bounce:after { --spring-easing: linear( 0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938, 1.077 20.4%, 1.121, 1.149 24.3%, 1.159, 1.163 27%, 1.154, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, 0.991, 0.977 51%, 0.975 57.1%, 0.997 69.8%, 1.003 76.9%, 1 ); transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.5s var(--spring-easing); } } .hint--no-shadow:before, .hint--no-shadow:after { text-shadow: initial; box-shadow: initial; } .hint--no-arrow:before { display: none; }