mixin alert(clazz, icon, title, subtitle, actions)
	div(class=('notif notif--' + clazz))
		div.notif__content
			i.material-icons.notif__icon #{icon}
			div
				h1.notif__title #{title}
				span.notif__subtitle #{subtitle}
		if (actions.length > 0)
			.notif__actions
				each action in actions
					a.notif__action(href=action.link data-tooltip=(action.tooltip ? action.tooltip : null))
						i.material-icons #{action.icon}

+alert('success', 'check', 'Upload complete', 'Woohoo!', [{link: '#', icon: 'link', tooltip: 'Get link'}])
+alert('error', 'error', 'Upload failed', 'Sorry about that.', [{link: '#', icon: 'refresh', tooltip: 'Retry'}, {link: '#', icon: 'info', tooltip: 'Error info'}])
View Compiled
body {
	font-family: 'Signika Negative', Roboto, sans-serif;
	font-size: 14px;
	
	background: #434343;
}

.notif {
	width: 420px;
	height: 150px;
	margin: 40px auto;
	
	color: white;
	
	border-radius: 4px;
	box-shadow: 0 8px 12px rgba(0,0,0,0.3);
	overflow: hidden;
	
	&--success {
		background: #39cccc;
	}
	
	&--error {
		background: #d35757;
	}
	
	&__icon {
		padding: 20px;
		
		font-size: 56px;
	}
	
	&__content,
	&__actions {
		height: 100%;
		float: left;
	}
	
	&__content {
		width: 85%;
		display: flex;
		flex-direction: row;
		align-items: center;
	}
	
	&__title {
		margin-bottom: 0.2em;
		
		font-size: 2em;
	}
	
	&__actions {
		width: 15%;
		display: flex;
		flex-direction: column;
		
		background: rgba(0, 0, 0, 0.4);
		
		> * {
			flex-grow: 1;
		}
	}
	
	&__action {
		position: relative;
		
		text-align: center;
		text-decoration: none;
		
		&:hover {
			background: rgba(0, 0, 0, 0.4);
			
			&:after {
				display: block;
			}
		}
		
		&:after {
			content: attr(data-tooltip);
			display: none;
			position: absolute;
			right: 110%;
			top: 50%;
			margin-top: -1em;
			padding: 0.5em 1em;
			
			text-align: center;
			white-space: nowrap;
			
			background: rgba(20,20,20,1);
			border-radius: 4px;
		}
		
		> * {
			position: absolute;
			top: 50%;
			left: 50%;
			margin-top: -12px;
			margin-left: -12px;
			
			font-size: 24px;
		}
	}
	
	a {
		color: inherit;
	}
}
View Compiled

External CSS

  1. https://fonts.googleapis.com/icon?family=Material+Icons
  2. https://fonts.googleapis.com/css?family=Signika+Negative:400,300

External JavaScript

This Pen doesn't use any external JavaScript resources.