2026-09-21 10:45:53 -04:00
|
|
|
<script lang="ts">
|
|
|
|
|
import UrlInput from '$lib/components/UrlInput.svelte';
|
|
|
|
|
import VideoPlayer from '$lib/components/VideoPlayer.svelte';
|
|
|
|
|
import TransportControls from '$lib/components/TransportControls.svelte';
|
|
|
|
|
import Timeline from '$lib/components/Timeline.svelte';
|
|
|
|
|
import ClipList from '$lib/components/ClipList.svelte';
|
|
|
|
|
import StatusBar from '$lib/components/StatusBar.svelte';
|
2026-09-21 10:50:24 -04:00
|
|
|
import SetupWizard from '$lib/components/SetupWizard.svelte';
|
2026-09-21 10:54:42 -04:00
|
|
|
import PreferencesPanel from '$lib/components/PreferencesPanel.svelte';
|
|
|
|
|
import { loadPreferences } from '$lib/stores/preferences.svelte';
|
2026-09-21 10:50:24 -04:00
|
|
|
|
|
|
|
|
let showSetupWizard = $state(true);
|
2026-09-21 10:54:42 -04:00
|
|
|
let showPreferences = $state(false);
|
|
|
|
|
|
|
|
|
|
$effect(() => {
|
|
|
|
|
loadPreferences();
|
|
|
|
|
});
|
2026-09-21 10:45:53 -04:00
|
|
|
</script>
|
|
|
|
|
|
2026-09-21 10:50:24 -04:00
|
|
|
{#if showSetupWizard}
|
|
|
|
|
<SetupWizard onComplete={() => (showSetupWizard = false)} />
|
|
|
|
|
{/if}
|
|
|
|
|
|
2026-09-21 10:54:42 -04:00
|
|
|
{#if showPreferences}
|
|
|
|
|
<PreferencesPanel onClose={() => (showPreferences = false)} />
|
|
|
|
|
{/if}
|
|
|
|
|
|
2026-09-21 10:45:53 -04:00
|
|
|
<div class="app-shell">
|
|
|
|
|
<header class="toolbar">
|
|
|
|
|
<UrlInput />
|
2026-09-21 10:54:42 -04:00
|
|
|
<button class="prefs-btn" onclick={() => (showPreferences = true)} title="Preferences">⚙</button>
|
2026-09-21 10:45:53 -04:00
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<main class="content">
|
|
|
|
|
<VideoPlayer />
|
|
|
|
|
<TransportControls />
|
|
|
|
|
<Timeline />
|
|
|
|
|
<ClipList />
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
<StatusBar />
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.app-shell {
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.toolbar {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding: 8px 12px;
|
|
|
|
|
background: var(--bg-secondary);
|
|
|
|
|
border-bottom: 1px solid var(--border);
|
|
|
|
|
gap: 8px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.content {
|
|
|
|
|
flex: 1;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
2026-09-21 10:54:42 -04:00
|
|
|
|
|
|
|
|
.prefs-btn {
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
padding: 4px 8px;
|
|
|
|
|
}
|
2026-09-21 10:45:53 -04:00
|
|
|
</style>
|