mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 14:35:41 +00:00
fb02b62a54
* fix(titlebar): hide traffic-light glyphs until hover The lucide Minus/Square/X icons at 9×9 with stroke-width 2.5 looked chunky at all times — especially the Square for maximize. Match real macOS behaviour: glyphs fade in only when the controls group is hovered (or a button is keyboard-focused). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(titlebar): drop traffic-light glyphs entirely, add coloured hover glow Following review feedback: even on-hover the lucide glyphs at 9×9 weren't pleasant. Remove them outright and signal hover with a soft coloured glow matching each button (red/yellow/green) plus a subtle brightness lift. Keyboard focus uses a white outer ring for accessibility. - TitleBar.tsx: remove lucide imports + icon children, add aria-label - layout.css: drop svg sizing rules, add per-variant box-shadow hover, add focus-visible ring, transition box-shadow Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Psychotoxical <dev@psysonic.app> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49 lines
1.5 KiB
TypeScript
49 lines
1.5 KiB
TypeScript
import React from 'react';
|
||
import { getCurrentWindow } from '@tauri-apps/api/window';
|
||
import { usePlayerStore } from '../store/playerStore';
|
||
|
||
export default function TitleBar() {
|
||
const win = getCurrentWindow();
|
||
const currentTrack = usePlayerStore(s => s.currentTrack);
|
||
const isPlaying = usePlayerStore(s => s.isPlaying);
|
||
|
||
return (
|
||
<div className="titlebar" data-tauri-drag-region>
|
||
<div className="titlebar-track" data-tauri-drag-region>
|
||
{currentTrack && (
|
||
<>
|
||
<span className="titlebar-track-state">{isPlaying ? '▶' : '⏸'}</span>
|
||
<span className="titlebar-track-text truncate">
|
||
{currentTrack.artist && `${currentTrack.artist} – `}{currentTrack.title}
|
||
</span>
|
||
</>
|
||
)}
|
||
</div>
|
||
|
||
<div className="titlebar-controls">
|
||
<button
|
||
className="titlebar-btn titlebar-btn-minimize"
|
||
onClick={() => win.minimize()}
|
||
data-tooltip="Minimize"
|
||
data-tooltip-pos="bottom"
|
||
aria-label="Minimize"
|
||
/>
|
||
<button
|
||
className="titlebar-btn titlebar-btn-maximize"
|
||
onClick={() => win.toggleMaximize()}
|
||
data-tooltip="Maximize"
|
||
data-tooltip-pos="bottom"
|
||
aria-label="Maximize"
|
||
/>
|
||
<button
|
||
className="titlebar-btn titlebar-btn-close"
|
||
onClick={() => win.close()}
|
||
data-tooltip="Close"
|
||
data-tooltip-pos="bottom"
|
||
aria-label="Close"
|
||
/>
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|