$badge-border-size: 1px !default
$badge-padding: .1rem .25rem !default
$badge-border-radius: 1rem !default
$badge-size-small: .75rem !default
$badge-size-normal: 1rem !default
$badge-size-medium: 1.2rem !default
$badge-size-large: 1.4rem !default
$badge-z-index: 99 !default

=badge-size($size)
	&::after
		min-width: $size
		min-height: $size
		font-size: $size * .75
		top: 0
		right: 0
		bottom: auto
		left: auto
		transform: translate(50%, -50%)
	&.has-badge-left
		&::after
			top: 0
			right: auto
			bottom: auto
			left: 0
			transform: translate(-50%, -50%)
	&.has-badge-bottom
		&::after
			top: auto
			right: 0
			bottom: 0
			left: auto
			transform: translate(50%, 50%)
	&.has-badge-bottom-left
		&::after
			top: auto
			right: auto
			bottom: 0
			left: 0
			transform: translate(-50%, 50%)
	&.has-badge-inline
		margin-right: $size * 1.5
		&::after
			top: 50%
			right: -20%
		&.has-badge-left
			margin-right: inherit
			margin-left: $size * 1.5
			top: 50%
			left: 20%
		&.has-badge-bottom
			margin-right: $size * 1.5
			top: 50%
			right: -20%
		&.has-badge-bottom-left
			margin-right: inherit
			margin-left: $size * 1.5
			top: 50%
			left: 20%

=badge
	position: relative
	&::after
		display: inline-block
		position: absolute
		margin: 0
		padding: $badge-padding
		text-align: center
		white-space: nowrap
		line-height: 1
		background: $primary
		background-clip: padding-box
		border-radius: 0
		box-shadow: 0 0 0 $badge-border-size $white
		color: $white
		content: attr(data-badge)
		z-index: $badge-z-index           
	&[data-badge=""]
		&::after
			// content: none
			vertical-align: inherit

	@each $name, $pair in $colors
		$color: nth($pair, 1)
		$color-invert: nth($pair, 2)
		&.has-badge-#{$name}
			&::after
				background: $color
				color: $color-invert

	&.has-badge-outlined
		&::after
			background-color: $white
			box-shadow: none
			border: $badge-border-size solid $primary
			color: $primary
		@each $name, $pair in $colors
			$color: nth($pair, 1)
			$color-invert: nth($pair, 2)
			&.has-badge-#{$name}
				&::after
					background: $white
					box-shadow: none
					border: $badge-border-size solid $color
					color: $color
	&.has-badge-rounded
		&::after
			border-radius: $radius-rounded
				
	+badge-size($badge-size-normal)
		
	&.has-badge-small
		+badge-size($badge-size-small)
	&.has-badge-medium
		+badge-size($badge-size-medium)
	&.has-badge-large
		+badge-size($badge-size-large)
		
	// IE FIX: on IE badge was cropped
	&.button
		&:not(.is-clipped)
			&::after
				overflow: visible

[data-badge]
	+badge
		
