Improve tvOS settings UI styling and navigation

- Add TVOSPlainToggleStyle for cleaner toggle appearance on tvOS
- Remove focus overlays from settings navigation links and buttons
- Apply plain button and list styles across all settings screens
- Implement custom system controls picker for tvOS to avoid focus overlay
- Update SettingsPickerModifier with platform-specific styling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Arkadiusz Fal
2025-11-09 15:36:41 +01:00
parent 495dcec874
commit e0ca48fd44
13 changed files with 166 additions and 9 deletions

View File

@@ -164,6 +164,7 @@ struct SettingsView: View {
Text("Not Selected")
}
}
.buttonStyle(.plain)
}
Divider()
}
@@ -175,30 +176,45 @@ struct SettingsView: View {
} label: {
Label("Browsing", systemImage: "list.and.film").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
NavigationLink {
PlayerSettings()
} label: {
Label("Player", systemImage: "play.rectangle").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
NavigationLink {
PlayerControlsSettings()
} label: {
Label("Controls", systemImage: "hand.tap").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
NavigationLink {
QualitySettings()
} label: {
Label("Quality", systemImage: "4k.tv").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
NavigationLink {
HistorySettings()
} label: {
Label("History", systemImage: "clock.arrow.circlepath").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
if !accounts.isEmpty {
NavigationLink {
@@ -206,6 +222,9 @@ struct SettingsView: View {
} label: {
Label("SponsorBlock", systemImage: "dollarsign.circle").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
}
NavigationLink {
@@ -213,12 +232,18 @@ struct SettingsView: View {
} label: {
Label("Locations", systemImage: "globe").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
NavigationLink {
AdvancedSettings()
} label: {
Label("Advanced", systemImage: "wrench.and.screwdriver").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
}
#if os(tvOS)
.padding(.horizontal, 20)
@@ -232,6 +257,9 @@ struct SettingsView: View {
} label: {
Label("Help", systemImage: "questionmark.circle").labelStyle(SettingsLabel())
}
#if os(tvOS)
.buttonStyle(.plain)
#endif
}
#if os(tvOS)
.padding(.horizontal, 20)
@@ -287,6 +315,7 @@ struct SettingsView: View {
Label("Import Settings", systemImage: "square.and.arrow.down")
.labelStyle(SettingsLabel())
}
.buttonStyle(.plain)
.padding(.horizontal, 20)
#else
Button(action: importSettings) {