import { useThemeTokens as useDesignThemeTokens } from '@prefecthq/prefect-design' import { reactive, watch, readonly } from 'vue' import { useColorMode } from '@/utilities/colorMode' type ThemeTokens = ReturnType & ReturnType function factory(): () => Readonly { const { value: mode } = useColorMode() const designTokens = useDesignThemeTokens() const tokens = reactive({}) as ThemeTokens setTokens() watch(mode, () => setTokens()) function setTokens(): void { requestAnimationFrame(() => { Object.assign(tokens, designTokens, getTokens()) }) } function useThemeTokens(): Readonly { return readonly(tokens) } return useThemeTokens } export const useThemeTokens = factory() // this makes more sense to just infer the return type // eslint-disable-next-line @typescript-eslint/explicit-function-return-type function getTokens() { const style = getComputedStyle(document.body) return { stateCompleted50: style.getPropertyValue('--state-completed-50'), stateCompleted100: style.getPropertyValue('--state-completed-100'), stateCompleted200: style.getPropertyValue('--state-completed-200'), stateCompleted300: style.getPropertyValue('--state-completed-300'), stateCompleted400: style.getPropertyValue('--state-completed-400'), stateCompleted500: style.getPropertyValue('--state-completed-500'), stateCompleted600: style.getPropertyValue('--state-completed-600'), stateCompleted700: style.getPropertyValue('--state-completed-700'), stateCompleted800: style.getPropertyValue('--state-completed-800'), stateCompleted900: style.getPropertyValue('--state-completed-900'), stateFailed50: style.getPropertyValue('--state-failed-50'), stateFailed100: style.getPropertyValue('--state-failed-100'), stateFailed200: style.getPropertyValue('--state-failed-200'), stateFailed300: style.getPropertyValue('--state-failed-300'), stateFailed400: style.getPropertyValue('--state-failed-400'), stateFailed500: style.getPropertyValue('--state-failed-500'), stateFailed600: style.getPropertyValue('--state-failed-600'), stateFailed700: style.getPropertyValue('--state-failed-700'), stateFailed800: style.getPropertyValue('--state-failed-800'), stateFailed900: style.getPropertyValue('--state-failed-900'), stateRunning50: style.getPropertyValue('--state-running-50'), stateRunning100: style.getPropertyValue('--state-running-100'), stateRunning200: style.getPropertyValue('--state-running-200'), stateRunning300: style.getPropertyValue('--state-running-300'), stateRunning400: style.getPropertyValue('--state-running-400'), stateRunning500: style.getPropertyValue('--state-running-500'), stateRunning600: style.getPropertyValue('--state-running-600'), stateRunning700: style.getPropertyValue('--state-running-700'), stateRunning800: style.getPropertyValue('--state-running-800'), stateRunning900: style.getPropertyValue('--state-running-900'), statePending50: style.getPropertyValue('--state-pending-50'), statePending100: style.getPropertyValue('--state-pending-100'), statePending200: style.getPropertyValue('--state-pending-200'), statePending300: style.getPropertyValue('--state-pending-300'), statePending400: style.getPropertyValue('--state-pending-400'), statePending500: style.getPropertyValue('--state-pending-500'), statePending600: style.getPropertyValue('--state-pending-600'), statePending700: style.getPropertyValue('--state-pending-700'), statePending800: style.getPropertyValue('--state-pending-800'), statePending900: style.getPropertyValue('--state-pending-900'), statePaused50: style.getPropertyValue('--state-paused-50'), statePaused100: style.getPropertyValue('--state-paused-100'), statePaused200: style.getPropertyValue('--state-paused-200'), statePaused300: style.getPropertyValue('--state-paused-300'), statePaused400: style.getPropertyValue('--state-paused-400'), statePaused500: style.getPropertyValue('--state-paused-500'), statePaused600: style.getPropertyValue('--state-paused-600'), statePaused700: style.getPropertyValue('--state-paused-700'), statePaused800: style.getPropertyValue('--state-paused-800'), statePaused900: style.getPropertyValue('--state-paused-900'), stateScheduled50: style.getPropertyValue('--state-scheduled-50'), stateScheduled100: style.getPropertyValue('--state-scheduled-100'), stateScheduled200: style.getPropertyValue('--state-scheduled-200'), stateScheduled300: style.getPropertyValue('--state-scheduled-300'), stateScheduled400: style.getPropertyValue('--state-scheduled-400'), stateScheduled500: style.getPropertyValue('--state-scheduled-500'), stateScheduled600: style.getPropertyValue('--state-scheduled-600'), stateScheduled700: style.getPropertyValue('--state-scheduled-700'), stateScheduled800: style.getPropertyValue('--state-scheduled-800'), stateScheduled900: style.getPropertyValue('--state-scheduled-900'), stateCancelled50: style.getPropertyValue('--state-cancelled-50'), stateCancelled100: style.getPropertyValue('--state-cancelled-100'), stateCancelled200: style.getPropertyValue('--state-cancelled-200'), stateCancelled300: style.getPropertyValue('--state-cancelled-300'), stateCancelled400: style.getPropertyValue('--state-cancelled-400'), stateCancelled500: style.getPropertyValue('--state-cancelled-500'), stateCancelled600: style.getPropertyValue('--state-cancelled-600'), stateCancelled700: style.getPropertyValue('--state-cancelled-700'), stateCancelled800: style.getPropertyValue('--state-cancelled-800'), stateCancelled900: style.getPropertyValue('--state-cancelled-900'), stateCrashed50: style.getPropertyValue('--state-crashed-50'), stateCrashed100: style.getPropertyValue('--state-crashed-100'), stateCrashed200: style.getPropertyValue('--state-crashed-200'), stateCrashed300: style.getPropertyValue('--state-crashed-300'), stateCrashed400: style.getPropertyValue('--state-crashed-400'), stateCrashed500: style.getPropertyValue('--state-crashed-500'), stateCrashed600: style.getPropertyValue('--state-crashed-600'), stateCrashed700: style.getPropertyValue('--state-crashed-700'), stateCrashed800: style.getPropertyValue('--state-crashed-800'), stateCrashed900: style.getPropertyValue('--state-crashed-900'), } }