tailwind-merge
Version:
Merge Tailwind CSS classes without style conflicts
18 lines (13 loc) • 624 B
text/typescript
import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'
const fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []
export const fromTheme = <
AdditionalThemeGroupIds extends string = never,
DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,
>(
key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,
): ThemeGetter => {
const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>
theme[key] || fallbackThemeArr
themeGetter.isThemeGetter = true as const
return themeGetter
}