Fix layout spacing issues in LED strip configuration

- Remove forced height expansion from display configuration panel
- Change layout from flex-based to space-based for natural content sizing
- Eliminate large empty spaces between configuration sections
- Improve overall UI compactness and visual flow
This commit is contained in:
2025-07-08 03:19:06 +08:00
parent 2834b7fe57
commit 4a3d7681d6
3 changed files with 45 additions and 43 deletions

View File

@ -46,9 +46,9 @@ function App() {
}); });
return ( return (
<div class="min-h-screen bg-base-100" data-theme="dark"> <div class="h-screen bg-base-100 flex flex-col" data-theme="dark">
{/* Fixed Navigation */} {/* Fixed Navigation */}
<div class="navbar bg-base-200 shadow-lg fixed top-0 left-0 right-0 z-50"> <div class="navbar bg-base-200 shadow-lg flex-shrink-0 z-50">
<div class="navbar-start"> <div class="navbar-start">
<div class="dropdown dropdown-hover"> <div class="dropdown dropdown-hover">
<div tabindex="0" role="button" class="btn btn-ghost lg:hidden" onClick={(e) => e.currentTarget.focus()}> <div tabindex="0" role="button" class="btn btn-ghost lg:hidden" onClick={(e) => e.currentTarget.focus()}>
@ -80,8 +80,8 @@ function App() {
</div> </div>
</div> </div>
{/* Main Content with top padding to account for fixed navbar */} {/* Main Content - fills remaining height */}
<main class="container mx-auto px-2 sm:px-4 py-4 pt-20 max-w-full overflow-x-auto"> <main class="flex-1 container mx-auto px-2 sm:px-4 py-4 max-w-full overflow-x-auto min-h-0">
<Routes> <Routes>
<Route path="/info" component={InfoIndex} /> <Route path="/info" component={InfoIndex} />
<Route path="/displays" component={DisplayStateIndex} /> <Route path="/displays" component={DisplayStateIndex} />

View File

@ -75,7 +75,7 @@ export const DisplayListContainer: ParentComponent = (props) => {
createEffect(() => {}); createEffect(() => {});
return ( return (
<section ref={root!} class="relative bg-gray-400/30" style={rootStyle()}> <section ref={root!} class="relative bg-gray-400/30 h-full w-full" style={rootStyle()}>
<ol class="absolute" style={olStyle()}> <ol class="absolute" style={olStyle()}>
{props.children} {props.children}
</ol> </ol>

View File

@ -116,50 +116,52 @@ export const LedStripConfiguration = () => {
</div> </div>
<LedStripConfigurationContext.Provider value={ledStripConfigurationContextValue}> <LedStripConfigurationContext.Provider value={ledStripConfigurationContextValue}>
{/* LED Strip Sorter Panel */} <div class="space-y-4">
<div class="card bg-base-200 shadow-lg"> {/* LED Strip Sorter Panel */}
<div class="card-body p-3"> <div class="card bg-base-200 shadow-lg">
<div class="card-title text-sm mb-2"> <div class="card-body p-3">
<span></span> <div class="card-title text-sm mb-2">
<div class="badge badge-info badge-outline text-xs"></div> <span></span>
</div> <div class="badge badge-info badge-outline text-xs"></div>
<LedStripPartsSorter /> </div>
<div class="text-xs text-base-content/50 mt-2"> <LedStripPartsSorter />
💡 <div class="text-xs text-base-content/50 mt-2">
💡
</div>
</div> </div>
</div> </div>
</div>
{/* Display Configuration Panel */} {/* Display Configuration Panel - Auto height based on content */}
<div class="card bg-base-200 shadow-lg"> <div class="card bg-base-200 shadow-lg">
<div class="card-body p-3"> <div class="card-body p-3">
<div class="card-title text-sm mb-2"> <div class="card-title text-sm mb-2">
<span></span> <span></span>
<div class="badge badge-secondary badge-outline text-xs"></div> <div class="badge badge-secondary badge-outline text-xs"></div>
</div> </div>
<div class="h-80 mb-3"> <div class="mb-3">
<DisplayListContainer> <DisplayListContainer>
{displayStore.displays.map((display) => ( {displayStore.displays.map((display) => (
<DisplayView display={display} /> <DisplayView display={display} />
))} ))}
</DisplayListContainer> </DisplayListContainer>
</div> </div>
<div class="text-xs text-base-content/50"> <div class="text-xs text-base-content/50">
💡 使LED数量 💡 使LED数量
</div>
</div> </div>
</div> </div>
</div>
{/* LED Count Control Panels */} {/* LED Count Control Panels */}
<div class="space-y-3"> <div class="flex-shrink-0">
<div class="flex items-center gap-2 mb-2"> <div class="flex items-center gap-2 mb-2">
<h2 class="text-base font-semibold text-base-content">LED数量控制</h2> <h2 class="text-base font-semibold text-base-content">LED数量控制</h2>
<div class="badge badge-info badge-outline text-xs"></div> <div class="badge badge-info badge-outline text-xs"></div>
</div> </div>
<div class="led-control-grid"> <div class="led-control-grid">
{displayStore.displays.map((display) => ( {displayStore.displays.map((display) => (
<LedCountControlPanel display={display} /> <LedCountControlPanel display={display} />
))} ))}
</div>
</div> </div>
</div> </div>
</LedStripConfigurationContext.Provider> </LedStripConfigurationContext.Provider>