Newer
Older
gnexus-ui-kit / src / scss / components / _avatar.scss
@use "../kit-deps" as *;
@use "typography" as *;

.avatar {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: $control-height-md;
	height: $control-height-md;
	flex: 0 0 auto;
	overflow: hidden;
	border: $border-width-base solid $border-color-muted;
	color: $color-black;
	background: $color-primary;
	font-family: $font-family-base;
	font-size: $font-size-sm;
	font-weight: $font-weight-bold;
	line-height: $line-height-base;
	text-transform: uppercase;

	img {
		width: 100%;
		height: 100%;
		object-fit: cover;
	}

	.ph,
	.ph-bold {
		font-size: $icon-size-md;
	}

	.avatar-status {
		position: absolute;
		right: -2px;
		bottom: -2px;
		width: 13px;
		height: 13px;
		border: $border-width-base solid $surface-page;
		background: $color-text-dark;
	}

	&.avatar-sm {
		width: $control-height-sm;
		height: $control-height-sm;
		font-size: $font-size-xs;

		.ph,
		.ph-bold {
			font-size: $icon-size-sm;
		}
	}

	&.avatar-lg {
		width: $control-height-lg;
		height: $control-height-lg;
		font-size: $font-size-md;

		.ph,
		.ph-bold {
			font-size: $icon-size-lg;
		}
	}

	&.avatar-secondary {
		background: $color-secondary;
	}

	&.avatar-success {
		background: $color-success;
	}

	&.avatar-warning {
		background: $color-warning;
	}

	&.avatar-danger,
	&.avatar-error {
		background: $color-error;
	}

	&.avatar-outline {
		color: $color-text-light;
		background: $surface-panel-muted;
		border-color: $color-text-light;
	}

	&.is-online .avatar-status {
		background: $color-success;
	}

	&.is-busy .avatar-status {
		background: $color-warning;
	}

	&.is-offline .avatar-status {
		background: $color-text-dark;
	}
}

.identity {
	display: inline-flex;
	align-items: center;
	gap: $space-3;
	min-width: 0;
}

.identity-content {
	display: flex;
	flex-direction: column;
	gap: $space-1;
	min-width: 0;
}

.identity-title {
	color: $color-text-light;
	font-size: $font-size-base;
	font-weight: $font-weight-semibold;
	line-height: $line-height-base;
}

.identity-meta {
	color: $color-text-dark;
	font-size: $font-size-sm;
	line-height: $line-height-normal;
}

.avatar-stack {
	display: inline-flex;
	align-items: center;

	.avatar {
		margin-right: -$space-2;
		border-color: $surface-page;
	}

	.avatar-stack-count {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		min-width: $control-height-md;
		height: $control-height-md;
		padding: 0 $space-2;
		border: $border-width-base solid $surface-page;
		color: $color-black;
		background: $color-warning;
		font-size: $font-size-sm;
		font-weight: $font-weight-bold;
	}
}