import resolveConfig from 'tailwindcss/resolveConfig'; import tailwindConfig from '../tailwind.config'; import type { DefaultTheme } from 'tailwindcss/types/generated/default-theme'; import type { DefaultColors } from 'tailwindcss/types/generated/colors'; import type { Config, ResolvableTo, ThemeConfig } from 'tailwindcss/types/config'; export const useTailwindConf = (): ResolvedConfig => resolveConfig(tailwindConfig); export type ResolvedConfig = Omit & { theme: MergeThemes>, T['theme'] extends { extend: infer TExtend } ? UnwrapResolvables : {}>; }; type MergeThemes = { [K in keyof ThemeConfigResolved | keyof Overrides]: (K extends keyof Overrides ? Overrides[K] : K extends keyof DefaultThemeFull ? DefaultThemeFull[K] : K extends keyof ThemeConfigResolved ? ThemeConfigResolved[K] : never) & (K extends keyof Extensions ? Extensions[K] : {}); }; type UnwrapResolvables = { [K in keyof T]: T[K] extends ResolvableTo ? R : T[K]; }; type ThemeConfigResolved = UnwrapResolvables; type DefaultThemeFull = DefaultTheme & { colors: DefaultColors };