UNPKG

@prefecthq/prefect-ui-library

Version:

This library is the Vue and Typescript component library for [Prefect 2](https://github.com/PrefectHQ/prefect) and [Prefect Cloud 2](https://www.prefect.io/cloud/). _The components and utilities in this project are not meant to be used independently_.

36 lines (26 loc) 879 B
import { Ref, readonly, ref } from 'vue' import { ColorMode, colorModes } from '@/types/ColorMode' const internalValue = ref<ColorMode | null>(null) export function getColorModeClass(mode: ColorMode | null): string { return `color-mode-${mode ?? 'default'}` } export function isColorMode(value: unknown): value is ColorMode { if (typeof value !== 'string') { return false } return colorModes.includes(value as ColorMode) } export function applyColorModeClass(value: ColorMode | null): void { colorModes.forEach(mode => document.body.classList.remove(getColorModeClass(mode))) const classes = getColorModeClass(value) document.body.classList.add(classes) internalValue.value = value } type UseColorMode = { value: Readonly<Ref<ColorMode | null>>, } export function useColorMode(): UseColorMode { return { value: readonly(internalValue), } }