<template>
	<div class="stash">
		<div class="header">
			<h2 class="title">
				<Icon
					v-if="stash.isPrimary"
					icon="heart7"
				/>

				<Icon
					v-else
					icon="box"
				/>

				{{ stash.name }}
			</h2>

			<Domains
				:stash="stash"
				:domain="domain"
				class="domains-header"
			/>

			<a
				:href="`/user/${stash.user.username}`"
				class="user nolink"
			>
				<img
					:src="stash.user.avatar"
					class="avatar"
				><span class="userame ellipsis">{{ stash.user.username }}</span>
			</a>
		</div>

		<Domains
			:stash="stash"
			:domain="domain"
			class="domains-bar"
		/>

		<div class="content">
			<slot />
		</div>
	</div>
</template>

<script setup>
import { inject } from 'vue';

import Domains from './domains.vue';

const pageContext = inject('pageContext');
const { routeParams } = pageContext;

const domain = routeParams.domain;
const stash = pageContext.pageProps.stash;
</script>

<style scoped>
.stash {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
}

.header {
	display: flex;
	justify-content: space-between;
	align-items: stretch;
	position: sticky;
	top: 0;
	z-index: 1;
	padding: 0 1rem;
	color: var(--text-light);
	background: var(--grey-dark-40);
	flex-shrink: 0;
}

.title {
	margin: 0;
	text-transform: capitalize;
	display: flex;
	align-items: center;
	padding: .5rem 0;
	font-size: 1.2rem;
	margin-right: 1rem;

	.icon {
		width: 1.25rem;
		height: 1.25rem;
		margin-right: .75rem;
		fill: var(--text-light);
	}
}

.user {
	display: flex;
	align-items: center;
	font-weight: bold;
	overflow: hidden;
}

.avatar {
	width: 1.5rem;
	height: 1.5rem;
	margin-right: .75rem;
	border-radius: .25rem;
}

.domains-bar {
	display: none;
}

.scenes-container {
	overflow-y: auto;
}

.content {
	display: flex;
	flex-direction: column;
	flex-grow: 1;
	overflow-y: auto;
}

@media(--small) {
	.domains-header {
		display: none;
	}

	.domains-bar {
		display: flex;
	}
}

@media(--small-50) {
	.title {
		font-size: 1rem;

		.icon {
			width: 1rem;
			height: 1rem;
		}
	}

	.avatar {
		display: none;
	}
}
</style>
