aboutsummaryrefslogtreecommitdiff
path: root/src/lib/components/topic/topic.svelte
blob: 7fb41011b5bc5c85de8597ffdb9c7d49a588d2a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<script lang="ts">
	import type { Topic } from '$lib/data/types';

	export let topic: Topic;

	import { _ } from 'svelte-i18n';
	import Post from '$lib/components/post/post.svelte';
	import { readableTime } from '$lib/utils/readable_time';

	$: remainingTime = new Date(topic.updated_at).getTime() + topic.ttl - Date.now();
	$: remaining = readableTime(remainingTime);
</script>

<div class="h-entry" title={$_('topic.title')}>
	<h1 class="py-4 font-bold text-3xl p-name">{topic.title}</h1>
	<aside class="topic-meta" title={$_('topic.metadata_title')}>
		{#if topic.forum}
			<span class="topic-location">
				{$_('topic.category_location')}
				<a
					href="/f/{topic.forum.id}"
					class="p-category underline text-blue-600 visited:text-purple-500"
				>
					{topic.forum.glyph}
					{$_(topic.forum.label)}
				</a>.
			</span>
		{/if}
		<span class="topic-ttl">
			<a
				class="u-url u-uid underline text-blue-600 visited:text-purple-500"
				title={$_('topic.permalink_title')}
				href="/t/{topic.id}"
			>
				({$_('topic.remaining_time', {
					values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) }
				})})
			</a>
		</span>
	</aside>
	{#if topic.tags}
		<aside class="topic-tags" title={$_('topic.tags_title')}>
			{$_('topic.tags_location')}
			{#each topic.tags as tag}
				<a href="/g/{tag.tag}" class="p-category underline text-blue-600 visited:text-purple-500">
					{tag.tag}<span class="tag-weight">({tag.count})</span></a
				>{' '}
			{/each}
		</aside>
	{/if}
	{#if topic.posts}
		{#each topic.posts as post, index}
			<Post {post} {index} count={topic.posts.length} />
		{/each}
	{/if}
</div>