@patryk_walach/tailwind-variants
Version:
🦄 Tailwindcss first-class variant API
39 lines (35 loc) • 1.3 kB
TypeScript
import type {extendTailwindMerge} from "tailwind-merge";
import type {TVVariants} from "./index";
import type {TVGeneratedScreens} from "./generated";
type MergeConfig = Parameters<typeof extendTailwindMerge>[0];
type LegacyMergeConfig = Extract<MergeConfig, {extend?: unknown}>["extend"];
export type TWMConfig = {
/**
* Whether to merge the class names with `tailwind-merge` library.
* It's avoid to have duplicate tailwind classes. (Recommended)
* @see https://github.com/dcastil/tailwind-merge/blob/v2.2.0/README.md
* @default true
*/
twMerge?: boolean;
/**
* The config object for `tailwind-merge` library.
* @see https://github.com/dcastil/tailwind-merge/blob/v2.2.0/docs/configuration.md
*/
twMergeConfig?: MergeConfig & LegacyMergeConfig;
};
export type TVConfig<
// @ts-expect-error
V extends TVVariants | undefined = undefined,
// @ts-expect-error
EV extends TVVariants | undefined = undefined,
> = {
/**
* Whether to enable responsive variant transform.
* Which variants or screens(breakpoints) for responsive variant transform.
* @default false
*/
responsiveVariants?:
| boolean
| TVGeneratedScreens[]
| {[K in keyof V | keyof EV]?: boolean | TVGeneratedScreens[]};
} & TWMConfig;