//
// Copyright (c) 2018-present, Vonage. All rights reserved.
//

@import 'prism';
@import '../components/tooltips';

/**
 * Overrides of prism.css to make the styles suited to Vonage
 */

.pre-nowrap {
	pre[class*='language-'] {
		white-space: pre;
	}
}

pre[class*='language-'] {
	-webkit-font-smoothing: antialiased;
	background: $grey-lighter;
	border: 0;
	border-radius: 8px;
	font-size: 1.5rem;
	margin: 0 0 $unit2;
	text-shadow: none;
	white-space: pre-wrap;

	code {
		color: $black;
		display: block;
		font-family: monospace, monospace;
		text-shadow: none;

		span {
			font-size: 100%;
		}

		em {
			font-style: italic;
		}

		&::selection {
			background: rgba($blue, 0.5);
		}

		&::moz-selection {
			background: rgba($blue, 0.5);
		}
	}

	// Light color scheme

	.token {
		&.atrule,
		&.keyword {
		    color: $indigo-dark;
		}

		&.selector,
		&.tag {
		    color: $grey-darker;
		}

		&.attr-name {
			color: $blue;
		}

		&.comment {
		    color: darken($grey, 10);
		}

		code.language-url,
		&.function,
		&.url {
		    color: $blue-dark;
		}

		&.boolean,
		&.builtin,
		&.class-name,
		&.constant,
		&.namespace {
		    color: $blue;
		}

		&.operator {
			background: none;
		}

		&.number {
		    color: $red;
		}

		&.parameter,
		&.symbol {
		    color: $red;
		}

		&.attr-value,
		&.macro,
		&.string,
		&.stripe,
		&.value {
		    color: $green-dark;
		}

		&.variable {
			color: $orange;
		}

		&.macro .keyword {
		    color: $green-darker;
		}

		&.publishable-key,
		&.secret-key,
		&.token-tooltip {
		    background: $grey-light;
		    border-radius: 3px;
		    margin: -2px;
		    padding: 2px;
		}

		&.publishable-key.enabled,
		&.secret-key.enabled,
		&.token-tooltip.enabled {
		    background: $grey-light;
		}
	}

	.command-line-prompt > span,
	.line-numbers-rows > span {
		&:before {
			color: $grey;
		}
	}

	.language-bash .token.option,
	.language-css .property {
	    color: $red;
	}

	.language-html .token,
	.language-markup .token {
		&.punctuation {
			color: $grey-dark;
		}

		&.attr-value {
			color: $orange;

			& > .punctuation:not(:first-child) {
				color: $orange-dark;
			}
		}

		&.namespace {
		    color: $blue-dark;
		}
	}

	.language-php .token.operator {
		background: none;
	    color: $indigo-dark;
	}

	// Dark color scheme (based on Atom dark)

	&.Vlt-prism--dark {
		background: $black;
		color: $grey;

		code {
			background-color: $black;
			color: $grey;
		}

		.token {
			&.comment,
			&.prolog,
			&.doctype,
			&.cdata {
				color: lighten($grey-darker, 10);
			}

			.namespace {
				opacity: 0.7;
			}

			&.property,
			&.keyword,
			&.tag {
			    color: $blue-light;
			}

			&.class-name {
				color: $yellow-lighter;
				text-decoration: underline;
			}

			&.boolean,
			&.constant {
			    color: $green;
			}

			&.symbol,
			&.deleted {
				color: $red;
			}

			&.number {
				color: $indigo;
			}

			&.selector,
			&.attr-name,
			&.string,
			&.char,
			&.builtin,
			&.inserted {
				color: $green-light;
			}

			&.variable {
				color: $indigo-light;
			}

			&.operator,
			&.punctuation {
			    background: none;
			    color: $grey;
			}

			&.entity {
			    color: $yellow-lighter;
			}

			&.url {
			    color: $blue-light;
			}

			&.atrule,
			&.attr-value {
			    color: $yellow-lighter;
			}

			&.function {
				color: $orange-light;
			}

			&.regex {
			    color: $yellow-dark;
			}

			&.important {
				color: $orange;
			}
		}

		.command-line-prompt > span,
		.line-numbers-rows > span {
			&:before {
				color: $grey-dark;
			}
		}

		.language-css .token.string,
		.style .token.string {
			color: $green;
		}

		+ div.toolbar {
			.toolbar-item button {

				&:before {
					background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill%3D%22%23C2C4CC%22%20d%3D%22M1.5%2018H16.5C17.3295%2018%2018%2017.3295%2018%2016.5V1.5C18%200.672%2017.3295%200%2016.5%200H1.5C0.6705%200%200%200.672%200%201.5V16.5C0%2017.3295%200.6705%2018%201.5%2018Z%22%2F%3E%0A%3Cpath%20fill%3D%22%23C2C4CC%22%20d%3D%22M6%2024H22.5C23.3295%2024%2024%2023.3295%2024%2022.5V6H21V21H6V24Z%22%2F%3E%0A%3C%2Fsvg%3E');
				}

				&:hover {
					&:before {
						background-color: $grey-darker;
					}
				}

				&:active,
				&:focus {
					&:before {
						background-color: $white;
						background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill%3D%22%23131415%22%20d%3D%22M1.5%2018H16.5C17.3295%2018%2018%2017.3295%2018%2016.5V1.5C18%200.672%2017.3295%200%2016.5%200H1.5C0.6705%200%200%200.672%200%201.5V16.5C0%2017.3295%200.6705%2018%201.5%2018Z%22%2F%3E%0A%3Cpath%20fill%3D%22%23131415%22%20d%3D%22M6%2024H22.5C23.3295%2024%2024%2023.3295%2024%2022.5V6H21V21H6V24Z%22%2F%3E%0A%3C%2Fsvg%3E');
					}
				}
			}
		}
	}

	&.Vlt-prism--copy-disabled {
		+ div.toolbar {
			.toolbar-item button {
				display: none;
			}
		}
	}

}

div.code-toolbar {
	& > .toolbar {
		opacity: 1;
		right: 4px;
		top: 4px;

		.toolbar-item button {
			@extend %Vlt-btn, %Vlt-btn--tertiary, %Vlt-btn--small, %Vlt-btn--app;
			background-color: transparent;
			box-shadow: none;
			font-family: 'spezia', sans-serif;
			margin: 0;
			min-height: 0;
			padding: 8px;
			text-indent: -9999px;
			transition: none;

			&:before {
				background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill%3D%22%23131415%22%20d%3D%22M1.5%2018H16.5C17.3295%2018%2018%2017.3295%2018%2016.5V1.5C18%200.672%2017.3295%200%2016.5%200H1.5C0.6705%200%200%200.672%200%201.5V16.5C0%2017.3295%200.6705%2018%201.5%2018Z%22%2F%3E%0A%3Cpath%20fill%3D%22%23131415%22%20d%3D%22M6%2024H22.5C23.3295%2024%2024%2023.3295%2024%2022.5V6H21V21H6V24Z%22%2F%3E%0A%3C%2Fsvg%3E');
				background-position: center center;
				background-repeat: no-repeat;
				background-size: 18px 16px;
				border-radius: 6px;
				content: '';
				display: inline-block;
				flex: 0 0 14px;
				height: 14px;
				line-height: 1;
				margin-left: 0;
				padding: 16px;
				position: absolute;
				right: 0;
				text-indent: 0;
				top: 0;
				width: 16px;
			}

			&:after {
				@extend .tooltip-arrow, .arrow-top-mixin;
				content: '';
				display: none;
				height: 26px;
				right: 10px;
				width: 10px;
			}

			&:hover {
				background-color: $black;
				color: $white;
				margin-right: -4px;
				margin-top: -68px;
				text-indent: 0;

				&:before {
					background-color: $grey;
				}

				&:after {
					display: inline-block;
				}
			}

			&:active,
			&:focus {
				background-color: $black !important;

				&:before {
					background-color: $black;
					background-image: url('data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M1.5%2018H16.5C17.3295%2018%2018%2017.3295%2018%2016.5V1.5C18%200.672%2017.3295%200%2016.5%200H1.5C0.6705%200%200%200.672%200%201.5V16.5C0%2017.3295%200.6705%2018%201.5%2018Z%22%2F%3E%0A%3Cpath%20fill%3D%22%23ffffff%22%20d%3D%22M6%2024H22.5C23.3295%2024%2024%2023.3295%2024%2022.5V6H21V21H6V24Z%22%2F%3E%0A%3C%2Fsvg%3E');
				}
			}
		}
	}
}

.command-line-prompt {
	border-right: 1px solid $grey-dark;
	display: block;
	float: left;
	font-size: 100% !important;
	letter-spacing: -1px;
	margin-right: 1em;
	pointer-events: none;
	user-select: none;
}
