From 9c7d9c54063d1b3bffe04820f7665cafdd04d6d2 Mon Sep 17 00:00:00 2001 From: Sir Blob Date: Sat, 29 Nov 2025 19:05:54 +0000 Subject: [PATCH] Nested Groups Fixes --- src/lib/components/TerminalTUI.svelte | 13 ++++- src/lib/components/tui/TuiButton.svelte | 2 + src/lib/components/tui/TuiGroup.svelte | 6 +- src/lib/components/tui/terminal-keyboard.ts | 61 +++++++++++++-------- src/lib/config/navigation.ts | 2 +- src/lib/pages/home.ts | 28 ++++++---- 6 files changed, 73 insertions(+), 39 deletions(-) diff --git a/src/lib/components/TerminalTUI.svelte b/src/lib/components/TerminalTUI.svelte index 8acd06a..c98d079 100644 --- a/src/lib/components/TerminalTUI.svelte +++ b/src/lib/components/TerminalTUI.svelte @@ -83,10 +83,19 @@ lastColorMapId = colorMapId; }); - // Get all interactive button indices + // Helper to check if a line or its children contain buttons + function hasButtons(line: TerminalLine): boolean { + if (line.type === 'button') return true; + if (line.type === 'group' && line.children) { + return line.children.some(child => hasButtons(child)); + } + return false; + } + + // Get all interactive button indices (including buttons nested in groups) const buttonIndices = $derived( displayedLines - .map((item, i) => item.parsed.line.type === 'button' ? i : -1) + .map((item, i) => hasButtons(item.parsed.line) ? i : -1) .filter(i => i !== -1) ); diff --git a/src/lib/components/tui/TuiButton.svelte b/src/lib/components/tui/TuiButton.svelte index f706e0d..0d3accb 100644 --- a/src/lib/components/tui/TuiButton.svelte +++ b/src/lib/components/tui/TuiButton.svelte @@ -26,6 +26,8 @@ style="--btn-color: {getButtonStyle(line.style)}" on:click={() => onClick(index)} on:mouseenter={() => onHover(index)} + data-href={line.href || ''} + data-external={isExternal ? 'true' : 'false'} > {selected ? '▶' : ' '} {#if line.icon} diff --git a/src/lib/components/tui/TuiGroup.svelte b/src/lib/components/tui/TuiGroup.svelte index 101a2ab..52cf446 100644 --- a/src/lib/components/tui/TuiGroup.svelte +++ b/src/lib/components/tui/TuiGroup.svelte @@ -1,6 +1,7 @@