{#if location} · {location} {/if} ·

{#if isFuture(startsAt)} {intlFormatDistance(startsAt, new Date())} {:else if isFuture(endsAt)} Jusqu'à {isSameDay(endsAt, new Date()) ? format(endsAt, 'HH:mm') : formatDateTime(endsAt)} {:else} {intlFormatDistance(endsAt, new Date())} {/if}

{#if visibility && ![Visibility.Public, Visibility.SchoolRestricted].includes(visibility)} {DISPLAY_VISIBILITIES[visibility]} {/if}

{title}

{descriptionPreview}

{#if tickets.length}
{#if shotgunning(now)} {@const end = lastTicketToClose(now).closesAt} {#if end} Shotgun jusqu'à {intlFormatDistance(end, now)} {:else} Shotgun sans fin {/if} {:else} {@const start = soonestTicket(now).opensAt} {#if start} Shotgun dans {intlFormatDistance(start, now)} {/if} {/if}
{/if} {#if links.length > 0} {/if}
{#if likes !== undefined}
{ try { ({ toggleReaction: liked } = await $zeus.mutate({ toggleReaction: [ { articleId: id, emoji: '❤️', }, true, ], })); if (likes !== undefined) likes += liked ? 1 : -1; } catch (error) { toasts.error('Impossible de réagir', error?.toString()); } }} >
{#if liked} {:else} {/if} {likes}
{/if}