Trixie
◇TRIXIE
{connectionState}{#if connectionNotice}{connectionNotice}{/if}{#if authenticated}
{#if showNotifications}
NOTIFICATIONS
{#if notifications.length}{#each notifications as notification}
{notification.title}{notification.severity}
{notification.message}
{#if !notification.seen_at}{/if}
{/each}{:else}
No notifications.
{/if}
{/if}
{/if}
{#if !authenticated}
AUTHENTICATION REQUIRED
⌁
Sign in to TrixieThe server connection is ready, but the dashboard requires administrator authentication.
{:else if mustReplaceCredentials}
FIRST-RUN SETUP
Replace the generated administrator credentials {#if authError}
{authError}
{/if}
{:else}
STREAM PREVIEW⋮
{#if playerSrc}{:else}
STREAM OFFLINE
CONNECT TWITCH TO BEGIN
{/if}
ACTIVITY FEED⋮
{#if activityEvents.filter((event) => activityFilter === 'all' || event.event_type.startsWith('moderation.')).length}
{#each activityEvents.filter((event) => activityFilter === 'all' || event.event_type.startsWith('moderation.')) as event}
{event.event_type}{new Date(event.occurred_at).toLocaleTimeString()}
{/each}
{:else}
◌
Nothing here yet{activityFilter === 'moderation' ? 'Moderation events will appear here.' : 'Follows, subscriptions, raids, and server events will appear here.'}
{/if}
MY CHAT⋮
{#if pinnedMessageIds.length}
PINNED{#each chatMessages.filter((message) => pinnedMessageIds.includes(message.message_id)) as message}
{message.user_name}{message.text}
{/each}
{/if}{#if chatMessages.length}
{#each chatMessages as message}
{#if message.fragments.length}{#each message.fragments as fragment}{#if fragment.type === 'emote' && fragment.emote_id}{fragment.text}{:else}{fragment.text}{/if}{/each}{:else}{message.text}{/if}
{/each}
{:else}
⌁
Chat is waitingConnect a streamer or bot account to begin.
{/if}
{#if chatReplyParent}
REPLYING TO @{chatReplyParent.user_name}
{/if}
{#if chatEmoteOptions.length}
{#each chatEmoteOptions as emote}{/each}
{/if}
searchChatEmotes(chatMessage)} onkeydown={(event) => event.key === 'Enter' && sendChatMessage()} />
{#if chatError}
{chatError}
{/if}
QUICK ACTIONS⋮
{#if showCollaboration}
GUEST STAR SESSION
{#if collaborationSession}
ACTIVE · {collaborationSession.guests.length} GUESTS
{#if collaborationInvites.length}
PENDING INVITES
{#each collaborationInvites as invite}
{invite.user_id} · {invite.status}
{/each}{/if}{:else}
No active collaboration.
{/if}{#if collaborationError}
{collaborationError}
{/if}
{/if}{#if showStreamEditor}
searchCategories(event.currentTarget.value)} autocomplete="off" placeholder="Search Twitch categories" />{#if categoryOptions.length}
{#each categoryOptions as category}{/each}
{/if}{#if streamError}
{streamError}
{/if}
{/if}{#if showModeration}
{#if moderationError}
{moderationError}
{/if}
{/if}
{/if}