]> git.r.bdr.sh - rbdr/forum/blob - src/lib/components/topic/topic.svelte
ec89876590d44f25f1475db9f804777c45b3e20b
[rbdr/forum] / src / lib / components / topic / topic.svelte
1 <script lang="ts">
2 import type { Topic } from '$lib/data/types';
3
4 export let topic: Topic;
5
6 import { _ } from 'svelte-i18n';
7 import Post from '$lib/components/post/post.svelte';
8 import { readableTime } from '$lib/utils/readable_time';
9
10 $: remainingTime = topic.updated_at + topic.ttl - Date.now();
11 $: remaining = readableTime(remainingTime);
12 </script>
13
14 <div class="h-entry" title={$_('topic.title')}>
15 <h1 class="p-name">{topic.title}</h1>
16 <aside class="topic-meta" title={$_('topic.metadata_title')}>
17 {#if topic.forum}
18 <span class="topic-location">
19 {$_('topic.category_location')}
20 <a href="/f/{topic.forum.id}" class="p-category">
21 {topic.forum.glyph}
22 {$_(topic.forum.label)}
23 </a>.
24 </span>
25 {/if}
26 <span class="topic-ttl">
27 <a class="u-url u-uid" title={$_('topic.permalink_title')} href="/t/{topic.id}">
28 ({$_('topic.remaining_time', {
29 values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) }
30 })})
31 </a>.
32 </span>
33 </aside>
34 {#if topic.tags.length > 0}
35 <aside class="topic-tags" title={$_('topic.tags_title')}>
36 {$_('topic.tags_location')}
37 {#each topic.tags as tag}
38 <a href="/g/{tag.id}" class="p-category">
39 {tag.id}<span class="tag-weight">({tag.weight})</span>
40 </a>{' '}
41 {/each}
42 </aside>
43 {/if}
44 {#each topic.posts as post, index}
45 <Post {post} {index} count={topic.posts.length} />
46 {/each}
47 </div>