🎨
This commit is contained in:
		@@ -1,62 +1,64 @@
 | 
			
		||||
<template>
 | 
			
		||||
<div class="header" :class="$store.state.device.navbar">
 | 
			
		||||
	<div class="post">
 | 
			
		||||
		<button @click="post" title="%i18n:@post%">%fa:pencil-alt%</button>
 | 
			
		||||
	</div>
 | 
			
		||||
<div class="header" :class="navbar">
 | 
			
		||||
	<div class="body">
 | 
			
		||||
		<div class="post">
 | 
			
		||||
			<button @click="post" title="%i18n:@post%">%fa:pencil-alt%</button>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
	<div class="nav" v-if="$store.getters.isSignedIn">
 | 
			
		||||
		<div class="home" :class="{ active: $route.name == 'index' }" @click="goToTop">
 | 
			
		||||
			<router-link to="/">%fa:home%</router-link>
 | 
			
		||||
		<div class="nav" v-if="$store.getters.isSignedIn">
 | 
			
		||||
			<div class="home" :class="{ active: $route.name == 'index' }" @click="goToTop">
 | 
			
		||||
				<router-link to="/">%fa:home%</router-link>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="deck" :class="{ active: $route.name == 'deck' }" @click="goToTop">
 | 
			
		||||
				<router-link to="/deck">%fa:columns%</router-link>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="messaging">
 | 
			
		||||
				<a @click="messaging">%fa:comments%<template v-if="hasUnreadMessagingMessage">%fa:circle%</template></a>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="game">
 | 
			
		||||
				<a @click="game">%fa:gamepad%<template v-if="hasGameInvitations">%fa:circle%</template></a>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="deck" :class="{ active: $route.name == 'deck' }" @click="goToTop">
 | 
			
		||||
			<router-link to="/deck">%fa:columns%</router-link>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="messaging">
 | 
			
		||||
			<a @click="messaging">%fa:comments%<template v-if="hasUnreadMessagingMessage">%fa:circle%</template></a>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="game">
 | 
			
		||||
			<a @click="game">%fa:gamepad%<template v-if="hasGameInvitations">%fa:circle%</template></a>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="nav bottom" v-if="$store.getters.isSignedIn">
 | 
			
		||||
		<div>
 | 
			
		||||
			<a @click="drive">%fa:cloud%</a>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div ref="notificationsButton" :class="{ active: showNotifications }" style="z-index:1;">
 | 
			
		||||
			<a @click="notifications">%fa:R bell%</a>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div>
 | 
			
		||||
			<a @click="settings">%fa:cog%</a>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="account">
 | 
			
		||||
		<router-link :to="`/@${ $store.state.i.username }`">
 | 
			
		||||
			<mk-avatar class="avatar" :user="$store.state.i"/>
 | 
			
		||||
		</router-link>
 | 
			
		||||
 | 
			
		||||
		<div class="nav menu">
 | 
			
		||||
			<div class="signout">
 | 
			
		||||
				<a @click="signout">%fa:power-off%</a>
 | 
			
		||||
		<div class="nav bottom" v-if="$store.getters.isSignedIn">
 | 
			
		||||
			<div>
 | 
			
		||||
				<a @click="drive">%fa:cloud%</a>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div ref="notificationsButton" :class="{ active: showNotifications }">
 | 
			
		||||
				<a @click="notifications">%fa:R bell%</a>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div>
 | 
			
		||||
				<router-link to="/i/favorites">%fa:star%</router-link>
 | 
			
		||||
				<a @click="settings">%fa:cog%</a>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div v-if="($store.state.i.isLocked || $store.state.i.carefulBot)">
 | 
			
		||||
				<a @click="followRequests">%fa:envelope R%<i v-if="$store.state.i.pendingReceivedFollowRequestsCount">{{ $store.state.i.pendingReceivedFollowRequestsCount }}</i></a>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="account">
 | 
			
		||||
			<router-link :to="`/@${ $store.state.i.username }`">
 | 
			
		||||
				<mk-avatar class="avatar" :user="$store.state.i"/>
 | 
			
		||||
			</router-link>
 | 
			
		||||
 | 
			
		||||
			<div class="nav menu">
 | 
			
		||||
				<div class="signout">
 | 
			
		||||
					<a @click="signout">%fa:power-off%</a>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div>
 | 
			
		||||
					<router-link to="/i/favorites">%fa:star%</router-link>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div v-if="($store.state.i.isLocked || $store.state.i.carefulBot)">
 | 
			
		||||
					<a @click="followRequests">%fa:envelope R%<i v-if="$store.state.i.pendingReceivedFollowRequestsCount">{{ $store.state.i.pendingReceivedFollowRequestsCount }}</i></a>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="nav dark">
 | 
			
		||||
			<div>
 | 
			
		||||
				<a @click="dark"><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></a>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<div class="nav dark">
 | 
			
		||||
		<div>
 | 
			
		||||
			<a @click="dark"><template v-if="$store.state.device.darkmode">%fa:moon%</template><template v-else>%fa:R moon%</template></a>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
 | 
			
		||||
	<transition name="slide">
 | 
			
		||||
		<div class="notifications" v-if="showNotifications" ref="notifications">
 | 
			
		||||
	<transition :name="`slide-${navbar}`">
 | 
			
		||||
		<div class="notifications" v-if="showNotifications" ref="notifications" :class="navbar">
 | 
			
		||||
			<mk-notifications/>
 | 
			
		||||
		</div>
 | 
			
		||||
	</transition>
 | 
			
		||||
@@ -85,7 +87,11 @@ export default Vue.extend({
 | 
			
		||||
	computed: {
 | 
			
		||||
		hasUnreadMessagingMessage(): boolean {
 | 
			
		||||
			return this.$store.getters.isSignedIn && this.$store.state.i.hasUnreadMessagingMessage;
 | 
			
		||||
		}
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		navbar(): string {
 | 
			
		||||
			return this.$store.state.device.navbar;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	mounted() {
 | 
			
		||||
@@ -204,52 +210,114 @@ export default Vue.extend({
 | 
			
		||||
	z-index 1000
 | 
			
		||||
	width $width
 | 
			
		||||
	height 100%
 | 
			
		||||
	background var(--desktopHeaderBg)
 | 
			
		||||
	box-shadow var(--shadowRight)
 | 
			
		||||
 | 
			
		||||
	&.left
 | 
			
		||||
		left 0
 | 
			
		||||
		box-shadow var(--shadowRight)
 | 
			
		||||
 | 
			
		||||
	&.right
 | 
			
		||||
		right 0
 | 
			
		||||
		box-shadow var(--shadowLeft)
 | 
			
		||||
 | 
			
		||||
	> .post
 | 
			
		||||
	> .body
 | 
			
		||||
		position fixed
 | 
			
		||||
		top 0
 | 
			
		||||
		z-index 1
 | 
			
		||||
		width $width
 | 
			
		||||
		height $width
 | 
			
		||||
		padding 12px
 | 
			
		||||
		height 100%
 | 
			
		||||
		background var(--desktopHeaderBg)
 | 
			
		||||
 | 
			
		||||
		> button
 | 
			
		||||
			display inline-block
 | 
			
		||||
			margin 0
 | 
			
		||||
			padding 0
 | 
			
		||||
			height 100%
 | 
			
		||||
			width 100%
 | 
			
		||||
			font-size 1.2em
 | 
			
		||||
			font-weight normal
 | 
			
		||||
			text-decoration none
 | 
			
		||||
			color var(--primaryForeground)
 | 
			
		||||
			background var(--primary) !important
 | 
			
		||||
			outline none
 | 
			
		||||
			border none
 | 
			
		||||
			border-radius 100%
 | 
			
		||||
			transition background 0.1s ease
 | 
			
		||||
			cursor pointer
 | 
			
		||||
		> .post
 | 
			
		||||
			width $width
 | 
			
		||||
			height $width
 | 
			
		||||
			padding 12px
 | 
			
		||||
 | 
			
		||||
			*
 | 
			
		||||
				pointer-events none
 | 
			
		||||
			> button
 | 
			
		||||
				display inline-block
 | 
			
		||||
				margin 0
 | 
			
		||||
				padding 0
 | 
			
		||||
				height 100%
 | 
			
		||||
				width 100%
 | 
			
		||||
				font-size 1.2em
 | 
			
		||||
				font-weight normal
 | 
			
		||||
				text-decoration none
 | 
			
		||||
				color var(--primaryForeground)
 | 
			
		||||
				background var(--primary) !important
 | 
			
		||||
				outline none
 | 
			
		||||
				border none
 | 
			
		||||
				border-radius 100%
 | 
			
		||||
				transition background 0.1s ease
 | 
			
		||||
				cursor pointer
 | 
			
		||||
 | 
			
		||||
				*
 | 
			
		||||
					pointer-events none
 | 
			
		||||
 | 
			
		||||
				&:hover
 | 
			
		||||
					background var(--primaryLighten10) !important
 | 
			
		||||
 | 
			
		||||
				&:active
 | 
			
		||||
					background var(--primaryDarken10) !important
 | 
			
		||||
					transition background 0s ease
 | 
			
		||||
 | 
			
		||||
		> .nav.bottom
 | 
			
		||||
			position absolute
 | 
			
		||||
			bottom 128px
 | 
			
		||||
			left 0
 | 
			
		||||
 | 
			
		||||
		> .account
 | 
			
		||||
			position absolute
 | 
			
		||||
			bottom 64px
 | 
			
		||||
			left 0
 | 
			
		||||
			width $width
 | 
			
		||||
			height $width
 | 
			
		||||
			padding 14px
 | 
			
		||||
 | 
			
		||||
			> .menu
 | 
			
		||||
				display none
 | 
			
		||||
				position absolute
 | 
			
		||||
				bottom 64px
 | 
			
		||||
				left 0
 | 
			
		||||
				background var(--desktopHeaderBg)
 | 
			
		||||
 | 
			
		||||
			&:hover
 | 
			
		||||
				background var(--primaryLighten10) !important
 | 
			
		||||
				> .menu
 | 
			
		||||
					display block
 | 
			
		||||
 | 
			
		||||
			&:active
 | 
			
		||||
				background var(--primaryDarken10) !important
 | 
			
		||||
				transition background 0s ease
 | 
			
		||||
			> *:not(.menu)
 | 
			
		||||
				display block
 | 
			
		||||
				width 100%
 | 
			
		||||
				height 100%
 | 
			
		||||
 | 
			
		||||
				> .avatar
 | 
			
		||||
					pointer-events none
 | 
			
		||||
					width 100%
 | 
			
		||||
					height 100%
 | 
			
		||||
 | 
			
		||||
		> .dark
 | 
			
		||||
			position absolute
 | 
			
		||||
			bottom 0
 | 
			
		||||
			left 0
 | 
			
		||||
			width $width
 | 
			
		||||
			height $width
 | 
			
		||||
 | 
			
		||||
	> .notifications
 | 
			
		||||
		position fixed
 | 
			
		||||
		top 0
 | 
			
		||||
		width 350px
 | 
			
		||||
		height 100%
 | 
			
		||||
		overflow auto
 | 
			
		||||
		background var(--face)
 | 
			
		||||
 | 
			
		||||
		&.left
 | 
			
		||||
			left $width
 | 
			
		||||
			box-shadow var(--shadowRight)
 | 
			
		||||
 | 
			
		||||
		&.right
 | 
			
		||||
			right $width
 | 
			
		||||
			box-shadow var(--shadowLeft)
 | 
			
		||||
 | 
			
		||||
	.nav
 | 
			
		||||
		> *
 | 
			
		||||
			&.active
 | 
			
		||||
				box-shadow -4px 0 var(--primary) inset
 | 
			
		||||
 | 
			
		||||
			> *
 | 
			
		||||
				display block
 | 
			
		||||
				width $width
 | 
			
		||||
@@ -266,64 +334,35 @@ export default Vue.extend({
 | 
			
		||||
				&:active
 | 
			
		||||
					background rgba(0, 0, 0, 0.1)
 | 
			
		||||
 | 
			
		||||
	> .nav.bottom
 | 
			
		||||
		position absolute
 | 
			
		||||
		bottom 128px
 | 
			
		||||
		left 0
 | 
			
		||||
	&.left
 | 
			
		||||
		.nav
 | 
			
		||||
			> *
 | 
			
		||||
				&.active
 | 
			
		||||
					box-shadow -4px 0 var(--primary) inset
 | 
			
		||||
 | 
			
		||||
	> .account
 | 
			
		||||
		position absolute
 | 
			
		||||
		bottom 64px
 | 
			
		||||
		left 0
 | 
			
		||||
		width $width
 | 
			
		||||
		height $width
 | 
			
		||||
		padding 14px
 | 
			
		||||
	&.right
 | 
			
		||||
		.nav
 | 
			
		||||
			> *
 | 
			
		||||
				&.active
 | 
			
		||||
					box-shadow 4px 0 var(--primary) inset
 | 
			
		||||
 | 
			
		||||
		> .menu
 | 
			
		||||
			display none
 | 
			
		||||
			position absolute
 | 
			
		||||
			bottom 64px
 | 
			
		||||
			left 0
 | 
			
		||||
			background var(--desktopHeaderBg)
 | 
			
		||||
 | 
			
		||||
		&:hover
 | 
			
		||||
			> .menu
 | 
			
		||||
				display block
 | 
			
		||||
 | 
			
		||||
		> *:not(.menu)
 | 
			
		||||
			display block
 | 
			
		||||
			width 100%
 | 
			
		||||
			height 100%
 | 
			
		||||
 | 
			
		||||
			> .avatar
 | 
			
		||||
				pointer-events none
 | 
			
		||||
				width 100%
 | 
			
		||||
				height 100%
 | 
			
		||||
 | 
			
		||||
	> .dark
 | 
			
		||||
		position absolute
 | 
			
		||||
		bottom 0
 | 
			
		||||
		left 0
 | 
			
		||||
		width $width
 | 
			
		||||
		height $width
 | 
			
		||||
 | 
			
		||||
	> .notifications
 | 
			
		||||
		position fixed
 | 
			
		||||
		top 0
 | 
			
		||||
		left $width
 | 
			
		||||
		width 350px
 | 
			
		||||
		height 100%
 | 
			
		||||
		overflow auto
 | 
			
		||||
		background var(--face)
 | 
			
		||||
		box-shadow var(--shadowRight)
 | 
			
		||||
 | 
			
		||||
.slide-enter-active,
 | 
			
		||||
.slide-leave-active {
 | 
			
		||||
.slide-left-enter-active,
 | 
			
		||||
.slide-left-leave-active {
 | 
			
		||||
	transition: all 0.2s ease;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.slide-enter, .slide-leave-to {
 | 
			
		||||
.slide-left-enter, .slide-left-leave-to {
 | 
			
		||||
	transform: translateX(-16px);
 | 
			
		||||
	opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.slide-right-enter-active,
 | 
			
		||||
.slide-right-leave-active {
 | 
			
		||||
	transition: all 0.2s ease;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.slide-right-enter, .slide-right-leave-to {
 | 
			
		||||
	transform: translateX(16px);
 | 
			
		||||
	opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user