chore: cleanup theme stuff
This commit is contained in:
@@ -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?.()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user