UNPKG

@penaprieto/design-system

Version:

Multi-brand React design system with design tokens from Figma

165 lines (146 loc) 4.25 kB
/* Base Toast */ .ds-toast { display: flex; align-items: flex-start; gap: var(--size4, 16px); padding: var(--size4, 16px); border-radius: var(--br-xs, 4px); background: var(--ds-toast-bg); border: 1px solid var(--ds-toast-border); color: var(--ds-toast-text); font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif)); min-width: 320px; max-width: 420px; box-shadow: var(--semantic-elevation-elevation2, 0 2px 8px rgba(0, 0, 0, 0.06)); box-sizing: border-box; -webkit-font-smoothing: antialiased; /* Entry animation */ animation: ds-toast-enter 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; } /* Entry animation */ @keyframes ds-toast-enter { from { opacity: 0; transform: translateY(-16px); } to { opacity: 1; transform: translateY(0); } } /* Exit animation */ .ds-toast--exiting { animation: ds-toast-exit 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) forwards; } @keyframes ds-toast-exit { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-8px); } } /* Center content vertically when no description */ .ds-toast--no-description { align-items: center; } /* Icon */ .ds-toast__icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--ds-toast-icon); } /* Content */ .ds-toast__content { flex: 1; display: flex; flex-direction: column; gap: var(--size1, 4px); min-width: 0; } /* Title */ .ds-toast__title { font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-weight: var(--body-small-fontWeight, 400); font-size: var(--body-small-fontSize, 14px); line-height: var(--body-small-lineHeight, 150%); color: inherit; } /* Description */ .ds-toast__description { font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-weight: var(--body-small-fontWeight, 400); font-size: var(--body-small-fontSize, 14px); line-height: var(--body-small-lineHeight, 150%); color: inherit; } /* Link */ .ds-toast__link { color: var(--ds-toast-link); font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-small-fontSize, 14px); font-weight: var(--body-small-fontWeight, 400); line-height: var(--body-small-lineHeight, 150%); text-decoration: underline; text-underline-offset: 2px; white-space: nowrap; flex-shrink: 0; align-self: center; transition: opacity 0.2s ease-in-out; } .ds-toast__link:hover { opacity: 0.8; } /* Close button */ .ds-toast__close { flex-shrink: 0; align-self: flex-start; } /* Variant: Success */ .ds-toast--success { --ds-toast-bg: var(--alert-success-bg); --ds-toast-border: var(--alert-success-border); --ds-toast-icon: var(--semantic-icon-success); --ds-toast-text: var(--semantic-text-success); --ds-toast-link: var(--semantic-text-success); } /* Variant: Error */ .ds-toast--error { --ds-toast-bg: var(--alert-error-bg); --ds-toast-border: var(--alert-error-border); --ds-toast-icon: var(--semantic-icon-error); --ds-toast-text: var(--semantic-text-error); --ds-toast-link: var(--semantic-text-error); } /* Variant: Warning */ .ds-toast--warning { --ds-toast-bg: var(--alert-warning-bg); --ds-toast-border: var(--alert-warning-border); --ds-toast-icon: var(--semantic-icon-warning); --ds-toast-text: var(--semantic-text-warning); --ds-toast-link: var(--semantic-text-warning); } /* Variant: Info */ .ds-toast--info { --ds-toast-bg: var(--alert-info-bg); --ds-toast-border: var(--alert-info-border); --ds-toast-icon: var(--semantic-icon-brand-default); --ds-toast-text: var(--semantic-text-indigo-primary); --ds-toast-link: var(--semantic-text-indigo-primary); } /* Variant: Neutral */ .ds-toast--neutral { --ds-toast-bg: var(--alert-neutral-bg); --ds-toast-border: var(--alert-neutral-border); --ds-toast-text: var(--semantic-text-white-primary); --ds-toast-link: var(--semantic-text-white-primary); --ds-toast-icon: var(--semantic-icon-inverse-default); } /* Neutral variant close button icon color */ .ds-toast--neutral .ds-toast__close svg { color: var(--semantic-icon-inverse-default); }