import { type DarkTheme, isDarkTheme } from './themes.ts'

export function usePreferredThemes() {
	// TODO: migrate theme preferences out of cosmetics to theme settings
	const cosmetics = useCosmetics()

	const dark = computed({
		get(): DarkTheme {
			const theme = cosmetics.value?.preferredDarkTheme

			if (theme == null) {
				console.warn('[theme] cosmetics.preferredDarkTheme is not defined')
				return 'dark'
			}

			if (!isDarkTheme(theme)) {
				console.warn(`[theme] cosmetics.preferredDarkTheme contains invalid value: ${theme}`)
				return 'dark'
			}

			return theme
		},
		set(value) {
			cosmetics.value.preferredDarkTheme = value
		},
	})

	return reactive({
		dark,
		light: 'light' as const,
	})
}
