feat(idaa): add Jitsi URL Builder tool to reports page

New component ae_idaa_comp__jitsi_url_builder.svelte builds and previews
Jitsi iframe URLs for testing and Novi page configuration. Features:
- Environment selector (prod / dev / local / custom)
- Room name, Novi UUID, site key inputs
- Moderator toggle (explains JWT + logging implication)
- Advanced: domain, start muted/hidden, all 5 sound settings
- Output in URL or iframe HTML snippet mode with copy button
- "Open in new tab" for quick testing

Embedded on jitsi_reports page as a collapsible panel, gated to
trusted_access users only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scott Idem
2026-03-17 19:24:38 -04:00
parent 8693989a69
commit dcfeb99024
2 changed files with 319 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
<script lang="ts">
import { ae_util } from '$lib/ae_utils/ae_utils';
import { ae_loc } from '$lib/stores/ae_stores';
import JitsiUrlBuilder from './ae_idaa_comp__jitsi_url_builder.svelte';
interface MeetingEvent {
timestamp: string;
@@ -114,6 +116,7 @@
// --- Accordion state ---
let open_accordions = $state<{ [key: string]: boolean }>({});
let show_url_builder = $state(false);
function toggle_accordion(meeting_id: string) {
open_accordions[meeting_id] = !open_accordions[meeting_id];
@@ -193,6 +196,33 @@
</div>
</div>
<!-- Jitsi URL Builder — trusted_access only -->
{#if $ae_loc.trusted_access}
<div class="bg-surface-100-900 border border-surface-200-800 rounded-xl overflow-hidden">
<button
type="button"
onclick={() => (show_url_builder = !show_url_builder)}
class="w-full flex items-center justify-between gap-2 p-3 hover:bg-surface-200-800 transition-colors duration-200 text-left"
>
<span class="flex items-center gap-2 font-semibold text-sm">
<span class="fas fa-tools" aria-hidden="true"></span>
Jitsi URL Builder
</span>
<span
class="fas text-xs opacity-60"
class:fa-chevron-down={!show_url_builder}
class:fa-chevron-up={show_url_builder}
aria-hidden="true"
></span>
</button>
{#if show_url_builder}
<div class="border-t border-surface-200-800 p-4">
<JitsiUrlBuilder />
</div>
{/if}
</div>
{/if}
<!-- Filter bar -->
<div class="bg-surface-100-900 border border-surface-200-800 rounded-xl p-3 flex flex-row flex-wrap gap-3 items-end">
<div>