chore: cleanup theme stuff

This commit is contained in:
Adam
2025-12-28 19:26:46 -06:00
parent e0bb96a9f9
commit 0156f03e0e
3 changed files with 134 additions and 197 deletions

View File

@@ -3,7 +3,6 @@ import { createSimpleContext } from "@opencode-ai/ui/context"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { Dialog } from "@opencode-ai/ui/dialog"
import { List } from "@opencode-ai/ui/list"
import { useTheme } from "@opencode-ai/ui/theme"
const IS_MAC = typeof navigator === "object" && /(Mac|iPod|iPhone|iPad)/.test(navigator.platform)
@@ -27,6 +26,7 @@ export interface CommandOption {
suggested?: boolean
disabled?: boolean
onSelect?: (source?: "palette" | "keybind" | "slash") => void
onHighlight?: () => (() => void) | void
}
export function parseKeybind(config: string): Keybind[] {
@@ -116,24 +116,18 @@ export function formatKeybind(config: string): string {
function DialogCommand(props: { options: CommandOption[] }) {
const dialog = useDialog()
const theme = useTheme()
let cleanup: (() => void) | void
let committed = false
const handleMove = (option: CommandOption | undefined) => {
if (!option) return
if (option.id.startsWith("theme.set.")) {
const id = option.id.replace("theme.set.", "")
theme.previewTheme(id)
} else if (option.id.startsWith("theme.scheme.") && !option.id.includes("cycle")) {
const scheme = option.id.replace("theme.scheme.", "") as "light" | "dark" | "system"
theme.previewColorScheme(scheme)
}
cleanup?.()
cleanup = option?.onHighlight?.()
}
const handleSelect = (option: CommandOption | undefined) => {
if (option) {
theme.commitPreview()
committed = true
cleanup = undefined
dialog.close()
option.onSelect?.("palette")
}
@@ -141,7 +135,7 @@ function DialogCommand(props: { options: CommandOption[] }) {
onCleanup(() => {
if (!committed) {
theme.cancelPreview()
cleanup?.()
}
})