]>
Commit | Line | Data |
---|---|---|
a7cf03c1 | 1 | <script lang="ts"> |
be1ce532 RBR |
2 | import type { Topic } from '$lib/data/types'; |
3 | ||
4 | export let topic: Topic; | |
74b03c33 | 5 | |
58f7d521 | 6 | import { _ } from 'svelte-i18n'; |
a7cf03c1 RBR |
7 | import Post from '$lib/components/post/post.svelte'; |
8 | import { readableTime } from '$lib/utils/readable_time'; | |
bd8e98d7 | 9 | |
852ee620 | 10 | $: remainingTime = new Date(topic.updated_at).getTime() + topic.ttl - Date.now(); |
58f7d521 | 11 | $: remaining = readableTime(remainingTime); |
74b03c33 | 12 | </script> |
66dc4cae | 13 | |
58f7d521 | 14 | <div class="h-entry" title={$_('topic.title')}> |
852ee620 | 15 | <h1 class="py-4 font-bold text-3xl p-name">{topic.title}</h1> |
58f7d521 RBR |
16 | <aside class="topic-meta" title={$_('topic.metadata_title')}> |
17 | {#if topic.forum} | |
47b0bfe4 | 18 | <span class="topic-location"> |
cac85db0 | 19 | {$_('topic.category_location')} |
852ee620 | 20 | <a href="/f/{topic.forum.id}" class="p-category underline text-blue-600 visited:text-purple-500"> |
cac85db0 RBR |
21 | {topic.forum.glyph} |
22 | {$_(topic.forum.label)} | |
23 | </a>. | |
24 | </span> | |
58f7d521 | 25 | {/if} |
47b0bfe4 | 26 | <span class="topic-ttl"> |
852ee620 | 27 | <a class="u-url u-uid underline text-blue-600 visited:text-purple-500" title={$_('topic.permalink_title')} href="/t/{topic.id}"> |
cac85db0 | 28 | ({$_('topic.remaining_time', { |
58f7d521 | 29 | values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) } |
cac85db0 | 30 | })}) |
852ee620 | 31 | </a> |
cac85db0 | 32 | </span> |
58f7d521 | 33 | </aside> |
852ee620 | 34 | {#if topic.tags} |
58f7d521 RBR |
35 | <aside class="topic-tags" title={$_('topic.tags_title')}> |
36 | {$_('topic.tags_location')} | |
37 | {#each topic.tags as tag} | |
852ee620 RBR |
38 | <a href="/g/{tag.tag}" class="p-category underline text-blue-600 visited:text-purple-500"> |
39 | {tag.tag}<span class="tag-weight">({tag.count})</span></a | |
40 | >{' '} | |
58f7d521 RBR |
41 | {/each} |
42 | </aside> | |
43 | {/if} | |
852ee620 RBR |
44 | {#if topic.posts} |
45 | {#each topic.posts as post, index} | |
46 | <Post {post} {index} count={topic.posts.length} /> | |
47 | {/each} | |
48 | {/if} | |
58f7d521 | 49 | </div> |