<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>

			<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>

		<div class="content">
			<nav class="domains">
				<Link
					:href="getPath('scenes')"
					class="domain nolink"
					:active="domain === 'scenes'"
				>Scenes</Link>

				<Link
					:href="getPath('actors')"
					class="domain nolink"
					:active="domain === 'actors'"
				>Actors</Link>

				<Link
					:href="getPath('movies')"
					class="domain nolink"
					:active="domain === 'movies'"
				>Movies</Link>
			</nav>

			<slot />
		</div>
	</div>
</template>

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

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

const domain = routeParams.domain;
const stash = pageContext.pageProps.stash;

function getPath(targetDomain) {
	return `/stash/${stash.user.username}/${stash.slug}/${targetDomain}`;
}
</script>

<style scoped>
.stash {
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.header {
	display: flex;
	justify-content: space-between;
	padding: .5rem 1rem;
	color: var(--text-light);
	background: var(--grey-dark-40);
	flex-shrink: 0;
}

.title {
	margin: 0;
	text-transform: capitalize;
	display: flex;
	align-items: center;
	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;
}

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

.domains {
	display: flex;
	gap: .5rem;
	padding: .5rem 1rem;
}

.domain {
	box-sizing: border-box;
	padding: .5rem 1rem;
	background: var(--background-dark-20);
	border-radius: 1rem;
	color: var(--shadow);
	font-size: .9rem;
	font-weight: bold;

	&.active {
		background: var(--primary);
		color: var(--text-light);
	}
}

.content {
	overflow-y: auto;
}

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

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

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