@@ -325,22 +325,19 @@ export function OverlaySettingsPanel() {
325325 < CardHeader >
326326 < CardTitle > Layout and behavior</ CardTitle >
327327 </ CardHeader >
328- < CardContent className = "grid gap-4 " >
328+ < CardContent className = "overflow-hidden border border-(--border) p-0 " >
329329 < ToggleRow
330330 label = "Show creator"
331- description = "Show creator"
332331 checked = { form . overlayShowCreator }
333332 onChange = { ( value ) => setBoolean ( "overlayShowCreator" , value ) }
334333 />
335334 < ToggleRow
336335 label = "Show album"
337- description = "Show album"
338336 checked = { form . overlayShowAlbum }
339337 onChange = { ( value ) => setBoolean ( "overlayShowAlbum" , value ) }
340338 />
341339 < ToggleRow
342340 label = "Animate now playing"
343- description = "Animate current song"
344341 checked = { form . overlayAnimateNowPlaying }
345342 onChange = { ( value ) =>
346343 setBoolean ( "overlayAnimateNowPlaying" , value )
@@ -353,7 +350,7 @@ export function OverlaySettingsPanel() {
353350 < CardHeader >
354351 < CardTitle > Theme</ CardTitle >
355352 </ CardHeader >
356- < CardContent className = "grid gap-4 " >
353+ < CardContent className = "overflow-hidden border border-(--border) p-0 " >
357354 < ColorField
358355 label = "Accent"
359356 value = { form . overlayAccentColor }
@@ -380,8 +377,8 @@ export function OverlaySettingsPanel() {
380377 onChange = { ( value ) => setColor ( "overlayPanelColor" , value ) }
381378 />
382379 < ColorField
383- label = "Overlay background / chroma key "
384- description = "Use a normal visible background, or pick a deliberate key color like bright pink or green for OBS chroma key ."
380+ label = "Background color "
381+ description = "For a transparent background, set background opacity to 0 ."
385382 value = { form . overlayBackgroundColor }
386383 onChange = { ( value ) =>
387384 setColor ( "overlayBackgroundColor" , value )
@@ -399,10 +396,10 @@ export function OverlaySettingsPanel() {
399396 < CardHeader >
400397 < CardTitle > Density and sizing</ CardTitle >
401398 </ CardHeader >
402- < CardContent className = "grid gap-4 " >
399+ < CardContent className = "overflow-hidden border border-(--border) p-0 " >
403400 < RangeField
404401 label = "Overlay background opacity"
405- description = "Set this to 0 for a fully transparent page behind the playlist items."
402+ description = "Set this to 0 for a fully transparent background behind the playlist items."
406403 min = { 0 }
407404 max = { 100 }
408405 value = { form . overlayBackgroundOpacity }
@@ -557,24 +554,24 @@ export function OverlaySettingsPanel() {
557554
558555function ToggleRow ( props : {
559556 label : string ;
560- description : string ;
557+ description ? : string ;
561558 checked : boolean ;
562559 onChange : ( value : boolean ) => void ;
563560} ) {
564561 return (
565- < label className = "flex items-start justify-between gap-4 border border -(--border) bg-(--panel-soft) p-4 " >
566- < div >
562+ < label className = "grid gap-2 px-4 py-3 odd:bg -(--panel-soft) even: bg-(--panel-muted) " >
563+ < div className = "flex items-center justify-between gap-4" >
567564 < p className = "font-medium text-(--text)" > { props . label } </ p >
568- < p className = "mt-1 text-sm leading-7 text-(--muted)" >
569- { props . description }
570- </ p >
565+ < input
566+ type = "checkbox"
567+ checked = { props . checked }
568+ onChange = { ( event ) => props . onChange ( event . target . checked ) }
569+ className = "h-5 w-5 shrink-0"
570+ />
571571 </ div >
572- < input
573- type = "checkbox"
574- checked = { props . checked }
575- onChange = { ( event ) => props . onChange ( event . target . checked ) }
576- className = "mt-1 h-5 w-5"
577- />
572+ { props . description ? (
573+ < p className = "text-sm leading-6 text-(--muted)" > { props . description } </ p >
574+ ) : null }
578575 </ label >
579576 ) ;
580577}
@@ -586,23 +583,27 @@ function ColorField(props: {
586583 onChange : ( value : string ) => void ;
587584} ) {
588585 return (
589- < div className = "grid gap-2 border border-(--border) bg-(--panel-soft) p-4" >
590- < p className = "text-sm font-medium text-(--text)" > { props . label } </ p >
586+ < div className = "grid gap-2 px-4 py-3 odd:bg-(--panel-soft) even:bg-(--panel-muted)" >
587+ < div className = "flex flex-wrap items-center justify-between gap-3" >
588+ < p className = "text-sm font-medium text-(--text)" > { props . label } </ p >
589+ < div className = "flex min-w-0 items-center gap-3 sm:w-auto" >
590+ < input
591+ type = "color"
592+ value = { props . value }
593+ onChange = { ( event ) => props . onChange ( event . target . value ) }
594+ className = "h-10 w-12 shrink-0 border border-(--border) bg-transparent"
595+ />
596+ < div className = "w-full sm:w-44" >
597+ < Input
598+ value = { props . value }
599+ onChange = { ( event ) => props . onChange ( event . target . value ) }
600+ />
601+ </ div >
602+ </ div >
603+ </ div >
591604 { props . description ? (
592605 < p className = "text-sm leading-6 text-(--muted)" > { props . description } </ p >
593606 ) : null }
594- < div className = "flex items-center gap-3" >
595- < input
596- type = "color"
597- value = { props . value }
598- onChange = { ( event ) => props . onChange ( event . target . value ) }
599- className = "h-11 w-14 border border-(--border) bg-transparent"
600- />
601- < Input
602- value = { props . value }
603- onChange = { ( event ) => props . onChange ( event . target . value ) }
604- />
605- </ div >
606607 </ div >
607608 ) ;
608609}
@@ -616,21 +617,26 @@ function RangeField(props: {
616617 onChange : ( value : number ) => void ;
617618} ) {
618619 return (
619- < div className = "grid gap-3 border border- (--border) bg-(--panel-soft) p-4 " >
620+ < div className = "grid gap-2 px-4 py-3 odd:bg- (--panel-soft) even: bg-(--panel-muted) " >
620621 < div className = "flex items-center justify-between gap-3" >
621622 < p className = "text-sm font-medium text-(--text)" > { props . label } </ p >
622- < span className = "text-sm text-(--muted)" > { props . value } </ span >
623+ < div className = "flex items-center justify-between gap-3" >
624+ < span className = "text-xs font-semibold uppercase tracking-[0.16em] text-(--muted)" >
625+ Value
626+ </ span >
627+ < span className = "text-sm text-(--text)" > { props . value } </ span >
628+ </ div >
623629 </ div >
624- { props . description ? (
625- < p className = "text-sm leading-6 text-(--muted)" > { props . description } </ p >
626- ) : null }
627630 < input
628631 type = "range"
629632 min = { props . min }
630633 max = { props . max }
631634 value = { props . value }
632635 onChange = { ( event ) => props . onChange ( Number ( event . target . value ) ) }
633636 />
637+ { props . description ? (
638+ < p className = "text-sm leading-6 text-(--muted)" > { props . description } </ p >
639+ ) : null }
634640 </ div >
635641 ) ;
636642}
0 commit comments