UNPKG

react-light-toast

Version:

Simple and lightweight toast package for React.js

249 lines (214 loc) 5.5 kB
@import url('https://fonts.googleapis.com/css2?family=Montserrat&display=swap'); :root { --toastify-icon-color-info: #3498db; --toastify-icon-color-success: #07bc0c; --toastify-icon-color-warning: #f1c40f; --toastify-icon-color-error: #e74c3c; --toastify-toast-background: #fff; } .toastArea { position: fixed; display: flex; flex-direction: column; gap: 15px; transition: 330ms; z-index: 9999999; } .area-top-left { top: 15px; left: 15px; } .area-top-center { top: 15px; left: 50%; transform: translateX(-50%); } .area-top-right { top: 15px; right: 15px; } .area-bottom-left { bottom: 15px; left: 15px; } .area-bottom-center { bottom: 15px; left: 50%; transform: translateX(-50%); } .area-bottom-right { bottom: 15px; right: 15px; } .reverse { flex-direction: column-reverse; } .toastContainer { background-color: #fff; width: 320px; min-height: 60px; display: flex; align-items: center; border-radius: 4px; box-shadow: 0 1px 10px 0 rgb(0 0 0 / 10%), 0 2px 15px 0 rgb(0 0 0 / 5%); transition: 330ms; transition-delay: 500ms; cursor: pointer; overflow: hidden; } /* Left */ .toastArea[class*="left"] .toastContainer { transform: translateX(-125%); } .toastArea.area-top-left .show, .toastArea.area-bottom-left .show { animation: toastInLeft 0.5s linear forwards; } .toastArea.area-top-left .hide, .toastArea.area-bottom-left .hide { animation: toastOutLeft 0.5s ease-in-out forwards; } /* Right */ .toastArea[class*="right"] .toastContainer { transform: translateX(125%); } .toastArea.area-top-right .show, .toastArea.area-bottom-right .show { animation: toastInRight 0.5s linear forwards; } .toastArea.area-top-right .hide, .toastArea.area-bottom-right .hide { animation: toastOutRight 0.5s ease-in-out forwards; } /* Top Center */ .toastArea.area-top-center .toastContainer { transform: translateY(-200%); } .toastArea.area-top-center .show { animation: toastInTopCenter 0.35s linear forwards; } .toastArea.area-top-center .hide { animation: toastOutTopCenter 0.3s ease-in-out forwards; } /* Bottom Center */ .toastArea.area-bottom-center .toastContainer { transform: translateY(200%); } .toastArea.area-bottom-center .show { animation: toastInBottomCenter 0.35s linear forwards; } .toastArea.area-bottom-center .hide { animation: toastOutBottomCenter 0.3s ease-in-out forwards; } .toastContainer.hide { min-height: 0; max-height: 0; height: 0; opacity: 0; transition-delay: 500ms; } .toastBar { height: 5px; width: 100%; position: absolute; background: white; bottom: 0; left: 0; } .toastBar:before { width: 100%; height: 100%; display: block; content: ''; animation: toastProgressBar var(--duration) linear forwards; } .toastContainer[type="info"] .toastBar:before{ background: var(--toastify-icon-color-info); } .toastContainer[type="success"] .toastBar:before{ background: var(--toastify-icon-color-success); } .toastContainer[type="warning"] .toastBar:before{ background: var(--toastify-icon-color-warning); } .toastContainer[type="error"] .toastBar:before{ background: var(--toastify-icon-color-error); } .toastContainer.show + .toastContainer.hide { margin-bottom: -15px; } .toastIcon { width: 20px; height: 20px; margin-left: 15px; margin-right: 10px; } .toastMessage { font-size: 15px; color: #757575; width: calc(100% - 75px); text-align: left; padding: 10px 0; font-family: 'Montserrat', sans-serif; } .toastClose { width: 14px; position: absolute; right: 8px; top: 8px; cursor: pointer; fill: #333; opacity: 0.3; transition: 330ms; } .toastClose:hover { opacity: 1; } @keyframes toastInLeft { 20%, 50%, 100% {transform: translateX(0);} 40% {transform: translateX(50px);} 60% {transform: translateX(0px);} 80% {transform: translateX(20px);} 60% {transform: translateX(0px);} } @keyframes toastOutLeft { 0% {transform: translateX(50px);} 20% {transform: translateX(65px);} 100% {transform: translateX(-125%);} } @keyframes toastInRight { 20%, 50%, 100% {transform: translateX(0);} 40% {transform: translateX(-50px);} 60% {transform: translateX(0px);} 80% {transform: translateX(-20px);} 60% {transform: translateX(0px);} } @keyframes toastOutRight { 0% {transform: translateX(-50px);} 20% {transform: translateX(-65px);} 100% {transform: translateX(125%);} } @keyframes toastInTopCenter { 20%, 50%, 100% {transform: translateY(0);} 40% {transform: translateY(50px);} 60% {transform: translateY(0px);} 80% {transform: translateY(20px);} 60% {transform: translateY(0px);} } @keyframes toastOutTopCenter { 0% {transform: translateY(50px);} 20% {transform: translateY(65px);} 100% {transform: translateY(-200%);} } @keyframes toastInBottomCenter { 20%, 50%, 100% {transform: translateY(0);} 40% {transform: translateY(-50px);} 60% {transform: translateY(0px);} 80% {transform: translateY(-20px);} 60% {transform: translateY(0px);} } @keyframes toastOutBottomCenter { 0% {transform: translateY(-50px);} 20% {transform: translateY(-65px);} 100% {transform: translateY(200%);} } @keyframes toastProgressBar { 0% {width: 100%;} 100% {width: 0;} }