import { SettingsMenuDorakoUI } from "./menu.js"; import { refreshChat } from "./settings.js"; export class ThemeSettings extends SettingsMenuDorakoUI { static namespace = "theme"; static SETTINGS = [ "app-theme", "window-app-theme", "sheet-theme-color", "chat-message-standard-theme", "chat-message-opposition-theme", "chat-message-header-style", "border-radius", ]; static get settings() { return { "app-theme": { name: "pf2e-dorako-ui.settings.theme.app-theme.name", hint: "pf2e-dorako-ui.settings.theme.app-theme.hint", scope: "client", config: true, default: "crb", type: String, choices: { "no-theme": "pf2e-dorako-ui.text.no-theme", crb: "pf2e-dorako-ui.text.glass", foundry2: "pf2e-dorako-ui.text.foundry2", bg3: "pf2e-dorako-ui.text.bg3", discord: "pf2e-dorako-ui.text.discord", opaque: "pf2e-dorako-ui.text.opaque", custom: "pf2e-dorako-ui.text.custom", }, requiresReload: true, // re-render all windows onChange: (choice) => {}, }, "window-app-theme": { name: "pf2e-dorako-ui.settings.theme.window-app-theme.name", hint: "pf2e-dorako-ui.settings.theme.window-app-theme.hint", scope: "client", config: true, default: "crb-light", type: String, choices: { "no-theme": "pf2e-dorako-ui.text.no-theme", "crb-light": "pf2e-dorako-ui.text.crb-light", "crb-dark": "pf2e-dorako-ui.text.crb-dark", foundry2: "pf2e-dorako-ui.text.foundry2", bg3: "pf2e-dorako-ui.text.bg3", "discord-light": `pf2e-dorako-ui.text.discord-light`, "discord-dark": "pf2e-dorako-ui.text.discord-dark", "custom-light": "pf2e-dorako-ui.text.custom-light", "custom-dark": "pf2e-dorako-ui.text.custom-dark", }, requiresReload: true, // re-render all windows onChange: (choice) => {}, }, "sheet-theme-color": { name: "pf2e-dorako-ui.settings.theme.sheet-theme-color.name", hint: "pf2e-dorako-ui.settings.theme.sheet-theme-color.hint", scope: "client", config: true, default: "default", type: String, choices: { default: "pf2e-dorako-ui.text.default", red: "pf2e-dorako-ui.text.colors.red", green: "pf2e-dorako-ui.text.colors.green", blue: "pf2e-dorako-ui.text.colors.blue", purple: "pf2e-dorako-ui.text.colors.purple", black: "pf2e-dorako-ui.text.colors.black", }, requiresReload: false, onChange: () => { const apps = Object.values(ui.windows).filter((w) => w instanceof Application); for (const app of apps) { app.render(); } }, }, "chat-message-standard-theme": { name: "pf2e-dorako-ui.settings.theme.chat-message-standard-theme.name", hint: "pf2e-dorako-ui.settings.theme.chat-message-standard-theme.hint", scope: "client", config: true, default: "crb-light", type: String, choices: { "no-theme": "pf2e-dorako-ui.text.no-theme", "crb-light": "pf2e-dorako-ui.text.crb-light", "crb-dark": "pf2e-dorako-ui.text.crb-dark", foundry2: "pf2e-dorako-ui.text.foundry2", "bg3-brown": "pf2e-dorako-ui.text.bg3-brown", "bg3-blue": "pf2e-dorako-ui.text.bg3-blue", "discord-light": `pf2e-dorako-ui.text.discord-light`, "discord-dark": "pf2e-dorako-ui.text.discord-dark", "custom-light": "pf2e-dorako-ui.text.custom-light", "custom-dark": "pf2e-dorako-ui.text.custom-dark", }, requiresReload: true, // re-render all windows onChange: (choice) => {}, }, "chat-message-opposition-theme": { name: "pf2e-dorako-ui.settings.theme.chat-message-opposition-theme.name", hint: "pf2e-dorako-ui.settings.theme.chat-message-opposition-theme.hint", scope: "client", config: true, default: "bg3-brown", type: String, choices: { "no-theme": "pf2e-dorako-ui.text.no-theme", "crb-light": "pf2e-dorako-ui.text.crb-light", "crb-dark": "pf2e-dorako-ui.text.crb-dark", foundry2: "pf2e-dorako-ui.text.foundry2", "bg3-brown": "pf2e-dorako-ui.text.bg3-brown", "bg3-blue": "pf2e-dorako-ui.text.bg3-blue", "discord-light": `pf2e-dorako-ui.text.discord-light`, "discord-dark": "pf2e-dorako-ui.text.discord-dark", "custom-light": "pf2e-dorako-ui.text.custom-light", "custom-dark": "pf2e-dorako-ui.text.custom-dark", }, requiresReload: true, // re-render all windows onChange: (choice) => {}, }, "chat-message-header-style": { name: "pf2e-dorako-ui.settings.theme.chat-message-header-style.name", hint: "pf2e-dorako-ui.settings.theme.chat-message-header-style.hint", scope: "client", config: true, default: "none", type: String, choices: { tint: "pf2e-dorako-ui.text.colors.player", red: "pf2e-dorako-ui.text.colors.red", green: "pf2e-dorako-ui.text.colors.green", blue: "pf2e-dorako-ui.text.colors.blue", none: "pf2e-dorako-ui.text.disabled", }, requiresReload: false, onChange: refreshChat, }, "border-radius": { name: "pf2e-dorako-ui.settings.theme.border-radius.name", hint: "pf2e-dorako-ui.settings.theme.border-radius.hint", scope: "client", type: Number, default: 3, range: { min: 0, max: 48, step: 1, }, config: true, requiresReload: false, onChange: (value) => { const root = document.querySelector(":root").style; root.setProperty("--border-radius", `${value}px`); }, }, }; } }