<template>
	<div id="app" @mousemove="updateMouse" :style="theme">
		<Nav />
		<Tabs />
		<TPS v-if="showTPS" />
	</div>
</template>

<script>
import Nav from './components/system/Nav.vue';
import Tabs from './components/system/Tabs.vue';
import TPS from './components/system/TPS.vue';
import themes from './data/themes.js';
import { mapState } from 'vuex';

export default {
	name: 'App',
	components: {
		Nav, Tabs, TPS
	},
	computed: {
		...mapState([ 'showTPS' ]),
		theme() {
			return themes[this.$store.state.theme || "default"];
		}
	},
	methods: {
		updateMouse(/* event */) {
			// TODO use event to update mouse position for particles
		}
	}
};
</script>

<style>
* {
	transition-duration: 0.5s;
	font-family: "Roboto Mono", monospace;
	font-weight: bold;
	margin: auto;
	text-size-adjust: none;
}

*:focus {
	outline: none;
}

body {
	overflow: hidden;
	min-width: 640px;
	transition: none;
	text-align: center;
}

html, body, #app {
	min-height: 100%;
	height: 100%;
}

h1, h2, h3, b, input {
	display: inline;
}

a,
button,
.link {
	display: block;
	color: var(--link);
	background: none;
	border: none;
	cursor: pointer;
	text-decoration: none;
}

a:hover,
button:hover,
.link:hover {
	text-shadow: 5px 0 10px var(--link),
		-3px 0 12px var(--link);
}

ul {
	list-style-type: none;
}

#app {
	background-color: var(--background);
	color: var(--color);
	display: flex;
	flex-flow: column;
}
</style>