<template>
	<Dialog title="Settings">
		<div class="dialog-body">
			<div class="dialog-section">
				<h3 class="dialog-heading">Filter</h3>

				<p class="dialog-description">Check the tags that you prefer to be <strong>excluded</strong> from the results. The filter is a courtesy, and provides no guarantees.</p>

				<ul class="tags nolist">
					<li
						v-for="tag in tags"
						:key="`tag-${tag}`"
						class="tags-item"
					>
						<label class="tag noselect">
							<Checkbox
								:checked="checkedTags.has(tag)"
								class="minus"
								@change="(checked) => toggleTag(tag, checked)"
							/>{{ tag }}
						</label>
					</li>
				</ul>
			</div>
		</div>
	</Dialog>
</template>

<script setup>
import { ref } from 'vue';
import Cookies from 'js-cookie';

import Dialog from '#/components/dialog/dialog.vue';
import Checkbox from '#/components/form/checkbox.vue';

const cookies = Cookies.withConverter({
	write: (value) => value,
});

const tags = [
	'anal',
	'anal prolapse',
	'bisexual',
	'gay',
	'pissing',
	'transsexual',
];

const storedTags = cookies.get('tags');
const checkedTags = ref(new Set(storedTags ? JSON.parse(storedTags) : []));

function toggleTag(tag, isChecked) {
	if (isChecked) {
		checkedTags.value.add(tag);
	} else {
		checkedTags.value.delete(tag);
	}

	cookies.set('tags', JSON.stringify(Array.from(checkedTags.value)), { expires: 400 }); // 100 years from now
}
</script>

<style scoped>
.dialog-body {
	padding: 1rem;
	width: 30rem;
	max-width: 100%;
}

.tags-item {
	display: block;
}

.tag {
	display: flex;
	padding: .5rem 0;
	text-transform: capitalize;

	.check-container {
		margin-right: 1rem;
	}
}
</style>