From 65c3422610d2a2ca2cb61177cab3b0a6c95a97d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Forment?= Date: Wed, 15 Oct 2025 11:27:58 +0200 Subject: [PATCH] Better UI --- src/App.svelte | 263 +++++++++--------- .../components/editor/EditorWithLogs.svelte | 15 +- src/lib/components/editor/LogPanel.svelte | 100 ++++--- src/lib/components/ui/FileBrowser.svelte | 11 +- src/lib/components/ui/SidePanel.svelte | 60 +++- src/lib/stores/uiState.svelte.ts | 4 +- 6 files changed, 270 insertions(+), 183 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 74dee1a..d4dfae5 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,38 +1,48 @@ @@ -238,46 +257,33 @@
{#snippet leftActions()} + + {/snippet} - - - + {#if !uiState.sidePanelVisible} + + {/if} -
- {#if uiState.sidePanelPosition === 'left'} +
+ {#if uiState.sidePanelPosition === "left"} uiState.toggleSidePanel()} + onCyclePosition={() => uiState.cyclePanelPosition()} /> {/if} @@ -320,22 +348,13 @@ />
- {#if uiState.sidePanelPosition === 'right'} + {#if uiState.sidePanelPosition === "right"} - {/if} - - {#if uiState.sidePanelPosition === 'bottom'} - uiState.toggleSidePanel()} + onCyclePosition={() => uiState.cyclePanelPosition()} /> {/if}
@@ -343,8 +362,8 @@ e.currentTarget.select()} />
-

Anyone with this link can import the project.

+

+ Anyone with this link can import the project. +

{/snippet} @@ -370,10 +391,10 @@

Enable Audio Context

OldBoy needs permission to use audio playback.

-

Click the button below to enable audio and start using the application.

@@ -393,8 +413,8 @@ {#snippet children()} - + {/snippet} {#snippet children()} - + {/snippet} @@ -462,10 +482,6 @@ overflow: hidden; } - .main-content.panel-bottom { - flex-direction: column; - } - .editor-area { flex: 1; overflow: hidden; @@ -578,4 +594,3 @@ background-color: #424ab8; } - diff --git a/src/lib/components/editor/EditorWithLogs.svelte b/src/lib/components/editor/EditorWithLogs.svelte index 3fc0b14..ac6bb07 100644 --- a/src/lib/components/editor/EditorWithLogs.svelte +++ b/src/lib/components/editor/EditorWithLogs.svelte @@ -28,6 +28,8 @@ let isResizing = $state(false); let startY = $state(0); let startHeight = $state(0); + let previousHeight = $state(70); + let isCollapsed = $state(false); function handleResizeStart(e: MouseEvent) { isResizing = true; @@ -54,6 +56,17 @@ isResizing = false; } + function toggleCollapse() { + if (isCollapsed) { + editorHeight = previousHeight; + isCollapsed = false; + } else { + previousHeight = editorHeight; + editorHeight = 96; + isCollapsed = true; + } + } + onMount(() => { document.addEventListener('mousemove', handleResizeMove); document.addEventListener('mouseup', handleResizeEnd); @@ -80,7 +93,7 @@
- +
diff --git a/src/lib/components/editor/LogPanel.svelte b/src/lib/components/editor/LogPanel.svelte index 17c33bd..5c070b5 100644 --- a/src/lib/components/editor/LogPanel.svelte +++ b/src/lib/components/editor/LogPanel.svelte @@ -6,9 +6,11 @@ interface Props { logs?: LogEntry[]; + onHeaderClick?: () => void; + collapsed?: boolean; } - let { logs = [] }: Props = $props(); + let { logs = [], onHeaderClick, collapsed = false }: Props = $props(); const { csound } = getAppContext(); @@ -109,48 +111,50 @@
-
- Output -
- - - - -
+
+ Logs + {#if !collapsed} +
e.stopPropagation()}> + + + + +
+ {/if}
- {#if searchVisible} + {#if searchVisible && !collapsed} {/if} -
+ {#if !collapsed} +
{#if filteredLogs.length === 0 && searchQuery.trim() !== ''}
No matching logs found...
{:else if logs.length === 0} @@ -174,7 +179,8 @@
{/each} {/if} -
+
+ {/if}