tv-anarchy/Sources/TVAnarchyCore/Display/AppTheme.swift
Natalie 4a2ceb9781 feat(offline): inline star-to-keep and trash-to-cull on cache rows
Surface the existing pin (keep-from-cull) and per-file delete actions as
visible inline buttons on each offline cache row instead of context-menu-only:
a star toggles protection from auto-cull (and restore-if-missing), a trash
culls that file early. Aligns wording/icons to the star metaphor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 00:12:41 -04:00

41 lines
No EOL
1.4 KiB
Swift

import Foundation
/// App-wide visual theme. Persisted in `settings.json` as `appTheme`.
public enum AppTheme: String, Codable, Sendable, CaseIterable, Identifiable {
/// Current Netflix-style dark UI (default).
case standard = "standard"
/// Winamp 2.x classic green / beige skin.
case winampClassic = "winamp-classic"
/// Late Winamp: dark blue / purple chrome.
case winampModern = "winamp-modern"
/// High-contrast yellow / black (Llama-adjacent).
case winampLlama = "winamp-llama"
public var id: String { rawValue }
public var label: String {
switch self {
case .standard: "Standard"
case .winampClassic: "Winamp Classic"
case .winampModern: "Winamp Modern"
case .winampLlama: "Winamp Llama"
}
}
public var help: String {
switch self {
case .standard: "Dark streaming-style layout"
case .winampClassic: "Green title bar, beveled buttons, LED time readout"
case .winampModern: "Compact player with purple spectrum and dark chrome"
case .winampLlama: "Loud yellow accents on black — maximum contrast"
}
}
/// Themes that swap Player chrome to the compact Winamp control deck.
public var usesWinampChrome: Bool {
switch self {
case .standard: false
case .winampClassic, .winampModern, .winampLlama: true
}
}
}