feat(ui): add autoplay mode setting in Playback section

- Add radio buttons: Continue within source / Play only selected track
- Load preference on settings mount
- Save changes immediately via handleAutoplayModeChange
- Styled with hover states and proper spacing

cp
This commit is contained in:
vicrodh committed 2026-01-18 00:57:42 -06:00
1 parent dbdd664415
commit 1ed541c4ac
1 file changed
+61
@@ -1448,6 +1448,34 @@
<!-- Playback Section -->
<section class="section" bind:this={playbackSection}>
<h3 class="section-title">{$t('settings.playback.title')}</h3>
<div class="setting-row">
<div class="setting-info">
<span class="setting-label">Autoplay behavior</span>
<span class="setting-desc">Choose what happens when you click a track</span>
</div>
<div class="radio-group">
<label class="radio-option">
<input
type="radio"
name="autoplay-mode"
value="continue"
checked={autoplayMode === 'continue'}
onchange={() => handleAutoplayModeChange('continue')}
/>
<span>Continue within source</span>
</label>
<label class="radio-option">
<input
type="radio"
name="autoplay-mode"
value="track_only"
checked={autoplayMode === 'track_only'}
onchange={() => handleAutoplayModeChange('track_only')}
/>
<span>Play only selected track</span>
</label>
</div>
</div>
<div class="setting-row">
<div class="label-with-tooltip">
<span class="setting-label">{$t('settings.playback.gapless')}</span>
@@ -2096,6 +2124,39 @@
width: 240px;
}
.radio-group {
display: flex;
flex-direction: column;
gap: 8px;
}
.radio-option {
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
padding: 8px 12px;
border-radius: 6px;
transition: background 0.15s;
}
.radio-option:hover {
background: rgba(255, 255, 255, 0.05);
}
.radio-option input[type="radio"] {
width: 18px;
height: 18px;
cursor: pointer;
accent-color: var(--accent-color, #1db954);
}
.radio-option span {
font-size: 14px;
color: var(--text-primary);
user-select: none;
}
.connect-btn {
padding: 8px 16px;
border-radius: 8px;