Passer de tailwind-variants 3.x à 4.x
Comparaison de l’API publique de tailwind-variants 3.3.1 et 4.0.0, calculée automatiquement à partir de leurs types TypeScript. Une signature modifiée est un changement incompatible possible, pas une certitude.
Résumé
| Chemins d’importation supprimés | 0 |
|---|---|
| Exports supprimés | 0 |
| Signatures modifiées | 35 |
| Membres de classes ou d’interfaces supprimés | 0 |
| Membres de classes ou d’interfaces modifiés | 12 |
| Nouvelles dépréciations | 0 |
| Changements d’exigences (engines, dépendances peer) | 2 |
| Nouveaux exports | 32 |
Exports supprimés
Aucun détecté.
Signatures modifiées
| export | Avant | Après |
|---|---|---|
tailwind-variants · TV | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | interface |
tailwind-variants · cn | <T extends CnOptions>(...classnames: T): CnReturn | (...inputs: ClassValue[]): string |
tailwind-variants · cx | <T extends CnOptions>(...classnames: T): CnReturn | <T extends CnOptions>(...classnames: T): string |
tailwind-variants · tv | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | <V extends TVVariantsConstraint = {}, DV = {}, CV extends readonly object[] = [], B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> | TVExtendList | undefined = undefined, EV extends TVVariantsShape = VariantsOfExtend<E>, ES extends TVSlots = SlotsOfExtend<E>>(options: TVOptionsFields<V, DV, CV, B, S, EV, ES> & { extend?: E | undefined; compoundSlots?: TVCompoundSlots<NoInfer<V>, TVMergedSlots<NoInfer<S>, NoInfer<SlotsOfExtend<E>>>, NoInfer<B>, NoInfer<EV>> | undefined; }, config?: TVConfig | undefined): TVReturnType<V, S, B, EV, ES, E> |
tailwind-variants · TVLite | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | interface |
tailwind-variants · TVProps | EV extends undefined ? V extends undefined ? ClassProp<ClassNameValue> : { [K in keyof V]?: VariantValue<V, K> | undefined; } & ClassProp<ClassNameValue> : V extends undefined ? { [K in keyof EV]?: VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> : { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> | [TVResolvedVariants<V, EV>] extends [undefined] ? ClassProp<ClassNameValue> : { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })]: ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })[K]; } | { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: undefined; className?: ClassNam… |
tailwind-variants · cnMerge | <T extends CnOptions>(...classnames: T): (config?: TWMConfig | undefined) => CnReturn | <T extends CnOptions>(...classnames: T): (config?: TWMConfig | undefined) => string |
tailwind-variants · CnReturn | string | undefined | string |
tailwind-variants · TVConfig | { twMerge?: boolean | undefined; twMergeConfig?: TWMergeConfig | undefined; } | TWMConfig & { debug?: boolean | undefined; } |
tailwind-variants · createTV | (config: TWMConfig): TV | (config: TVConfig): TV<TVConfig> |
tailwind-variants · TWMConfig | { twMerge?: boolean | undefined; twMergeConfig?: TWMergeConfig | undefined; } | { twMerge?: boolean | TwMergeFn | undefined; } |
tailwind-variants · TVVariants | EV extends undefined ? TVVariantsDefault<S, B> : TVVariantsDefault<S, B> | { [K in keyof EV]: { [K2 in keyof EV[K]]: S extends TVSlots ? ClassNameValue | SlotsClassValue<S, B> : ClassNameValue; }; } | { [x: string]: Record<string, VariantClassValue<TVMergedSlots<S, ES>, B>>; } |
tailwind-variants · TVVariantKeys | V extends undefined ? undefined : (keyof V)[] | [V] extends [undefined] ? undefined : Extract<keyof V, string>[] |
tailwind-variants · defaultConfig | TWMConfig | TVConfig |
tailwind-variants · StringToBoolean | T extends "true" | "false" ? boolean : T | T extends boolean | "true" | "false" ? boolean : T |
tailwind-variants · TVCompoundSlots | ({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in keyof V]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<V, K>[] | undefined; } & ClassProp<ClassNameValue>))[] | ({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in Exclude<keyof TVResolvedVariants<V, EV> & string, "slots" | "class" | "className">]?: VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K> | VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K>[] | undefined; } & ClassProp<ClassNameValue>))[] |
tailwind-variants · TVDefaultVariants | { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } | [TVResolvedVariants<V, EV>] extends [undefined] ? {} : { [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } |
tailwind-variants · TVCompoundVariants | ({ [K in keyof V | keyof EV]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<EV, K> | (K extends keyof V ? VariantValueWithBooleanUndefined<V, K>[] : never) | undefined; } & ClassProp<ClassNameValue | SlotsClassValue<S, B>>)[] | TVCompoundVariant<V, S, B, EV, ES>[] |
tailwind-variants · TVScreenPropsValue | { initial?: StringToBoolean<keyof V[K]> | undefined; } | { initial?: StringToBoolean<keyof V[K] & string> | undefined; } |
tailwind-variants/lite · TV | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | interface |
tailwind-variants/lite · cn | <T extends CnOptions>(...classnames: T): (config?: any) => CnReturn | <T extends CnOptions>(...classnames: T): (config?: TVLiteConfig | undefined) => string |
tailwind-variants/lite · cx | <T extends CnOptions>(...classnames: T): CnReturn | <T extends CnOptions>(...classnames: T): string |
tailwind-variants/lite · tv | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | <V extends TVVariantsConstraint = {}, DV = {}, CV extends readonly object[] = [], B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> | TVExtendList | undefined = undefined, EV extends TVVariantsShape = VariantsOfExtend<E>, ES extends TVSlots = SlotsOfExtend<E>>(options: TVOptionsFields<V, DV, CV, B, S, EV, ES> & { extend?: E | undefined; compoundSlots?: TVCompoundSlots<NoInfer<V>, TVMergedSlots<NoInfer<S>, NoInfer<SlotsOfExtend<E>>>, NoInfer<B>, NoInfer<EV>> | undefined; }, config?: TVLiteConfig | undefined): TVReturnType<V, S, B, EV, ES, … |
tailwind-variants/lite · TVLite | <V extends TVVariants<S, B, EV>, CV extends TVCompoundVariants<V, S, B, EV, ES>, DV extends TVDefaultVariants<V, S, EV, ES>, B extends ClassNameValue = undefined, S extends TVSlots = undefined, E extends TVReturnTypeLike<any, any> = TVReturnTypeLike<V, S>, EV extends TVVariants<ES, B, E["variants"], ES> = E["variants"], ES extends TVSlots = E["slots"] extends TVSlots ? E["slots"] : undefined>(options: { extend?: E | undefined; base?: B | undefined; slots?: S | undefined; variants?: V | undefined; compoundVariants?: CV | undefined; compoundSlots?: TVCompoundSlots<V, S, B> | undefined; defaultVa… | interface |
tailwind-variants/lite · TVProps | EV extends undefined ? V extends undefined ? ClassProp<ClassNameValue> : { [K in keyof V]?: VariantValue<V, K> | undefined; } & ClassProp<ClassNameValue> : V extends undefined ? { [K in keyof EV]?: VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> : { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } & ClassProp<ClassNameValue> | [TVResolvedVariants<V, EV>] extends [undefined] ? ClassProp<ClassNameValue> : { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })]: ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: ClassNameValue; className?: undefined; })[K]; } | { [K in keyof ({ [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } & { class?: undefined; className?: ClassNam… |
tailwind-variants/lite · CnReturn | string | undefined | string |
tailwind-variants/lite · createTV | (): TVLite | (config?: TVLiteConfig | undefined): TVLite |
tailwind-variants/lite · TVVariants | EV extends undefined ? TVVariantsDefault<S, B> : TVVariantsDefault<S, B> | { [K in keyof EV]: { [K2 in keyof EV[K]]: S extends TVSlots ? ClassNameValue | SlotsClassValue<S, B> : ClassNameValue; }; } | { [x: string]: Record<string, VariantClassValue<TVMergedSlots<S, ES>, B>>; } |
tailwind-variants/lite · TVVariantKeys | V extends undefined ? undefined : (keyof V)[] | [V] extends [undefined] ? undefined : Extract<keyof V, string>[] |
tailwind-variants/lite · StringToBoolean | T extends "true" | "false" ? boolean : T | T extends boolean | "true" | "false" ? boolean : T |
tailwind-variants/lite · TVCompoundSlots | ({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in keyof V]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<V, K>[] | undefined; } & ClassProp<ClassNameValue>))[] | ({ slots: TVSlotsWithBase<S, B>[]; } & ({ [K in Exclude<keyof TVResolvedVariants<V, EV> & string, "slots" | "class" | "className">]?: VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K> | VariantValueWithBooleanUndefined<TVResolvedVariants<V, EV>, K>[] | undefined; } & ClassProp<ClassNameValue>))[] |
tailwind-variants/lite · TVDefaultVariants | { [K in keyof V | keyof EV]?: VariantValue<V, K> | VariantValue<EV, K> | undefined; } | [TVResolvedVariants<V, EV>] extends [undefined] ? {} : { [K in keyof TVResolvedVariants<V, EV> & string]?: VariantValue<TVResolvedVariants<V, EV>, K> | undefined; } |
tailwind-variants/lite · TVCompoundVariants | ({ [K in keyof V | keyof EV]?: VariantValueWithBooleanUndefined<V, K> | VariantValueWithBooleanUndefined<EV, K> | (K extends keyof V ? VariantValueWithBooleanUndefined<V, K>[] : never) | undefined; } & ClassProp<ClassNameValue | SlotsClassValue<S, B>>)[] | TVCompoundVariant<V, S, B, EV, ES>[] |
tailwind-variants/lite · TVScreenPropsValue | { initial?: StringToBoolean<keyof V[K]> | undefined; } | { initial?: StringToBoolean<keyof V[K] & string> | undefined; } |
tailwind-variants/utils · cx | <T extends CnOptions>(...classnames: T): CnReturn | <T extends CnOptions>(...classnames: T): string |
Membres de classes ou d’interfaces supprimés
Aucun détecté.
Membres de classes ou d’interfaces modifiés
| member | Avant | Après |
|---|---|---|
TVReturnType.variants | TVMergedVariants<V, EV> | MergeVariantMaps<V, EV> |
TVReturnType.variantKeys | TVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>> | TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>> |
TVReturnType.compoundSlots | TVCompoundSlots<V, S, B> | TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV> |
TVReturnProps.variants | TVMergedVariants<V, EV> | MergeVariantMaps<V, EV> |
TVReturnProps.variantKeys | TVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>> | TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>> |
TVReturnProps.compoundSlots | TVCompoundSlots<V, S, B> | TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV> |
TVReturnType.variants | TVMergedVariants<V, EV> | MergeVariantMaps<V, EV> |
TVReturnType.variantKeys | TVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>> | TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>> |
TVReturnType.compoundSlots | TVCompoundSlots<V, S, B> | TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV> |
TVReturnProps.variants | TVMergedVariants<V, EV> | MergeVariantMaps<V, EV> |
TVReturnProps.variantKeys | TVVariantKeys<TVMergedVariants<V, EV>, TVMergedSlots<S, ES>> | TVVariantKeys<MergeVariantMaps<V, EV>, TVMergedSlots<S, ES>> |
TVReturnProps.compoundSlots | TVCompoundSlots<V, S, B> | TVCompoundSlots<V, TVMergedSlots<S, ES>, B, EV> |
Nouvelles dépréciations
Aucun détecté.
Changements d’exigences (engines, dépendances peer)
| Avant | Après | |
|---|---|---|
peerDependencies.tailwindcss | * | — |
peerDependencies.tailwind-merge | >=3.0.0 | — |
Nouveaux exports (32)
| import | export | kind |
|---|---|---|
tailwind-variants | clsx | variable |
tailwind-variants | twJoin | variable |
tailwind-variants | default | variable |
tailwind-variants | twMerge | variable |
tailwind-variants | TVExtend | type |
tailwind-variants | TVFactory | type |
tailwind-variants | TwMergeFn | type |
tailwind-variants | ClassArray | type |
tailwind-variants | CnFunction | type |
tailwind-variants | TVExtendList | type |
tailwind-variants | TVLiteConfig | type |
tailwind-variants | TVExtendInput | type |
tailwind-variants | ClassNameArray | type |
tailwind-variants | ClassNameValue | type |
tailwind-variants | TVCustomConfig | type |
tailwind-variants | ClassDictionary | interface |
tailwind-variants | TWMCustomConfig | type |
tailwind-variants | TVCompoundVariant | type |
tailwind-variants/lite | clsx | variable |
tailwind-variants/lite | default | variable |
tailwind-variants/lite | TVConfig | type |
tailwind-variants/lite | TVExtend | type |
tailwind-variants/lite | createCN | variable |
tailwind-variants/lite | TVFactory | type |
tailwind-variants/lite | TWMConfig | type |
tailwind-variants/lite | TwMergeFn | type |
tailwind-variants/lite | TVExtendList | type |
tailwind-variants/lite | TVLiteConfig | type |
tailwind-variants/lite | TVExtendInput | type |
tailwind-variants/lite | TWMergeConfig | type |
tailwind-variants/lite | TVCompoundVariant | type |
tailwind-variants/utils | normalizeClassString | variable |
Donnez ces données à votre agent IA
Vigia est un serveur MCP gratuit : votre agent de code vérifie les versions, les changements incompatibles et les vulnérabilités avant d'écrire du code. Sans inscription ni clé d'API.
claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp
Ajouter à CursorAjouter à VS Code★ Étoile sur GitHub
Tout autre client MCP
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }Skill pour agents (SKILL.md) : indique à l'agent quand utiliser Vigia · GitHub Action pour les pull requests
Questions fréquentes
Quels sont les changements incompatibles en passant de tailwind-variants 3 à 4 ?
Entre tailwind-variants 3.3.1 et 4.0.0, Vigia a trouvé 0 exports supprimés, 35 signatures modifiées et 12 membres de classes ou d’interfaces supprimés ou modifiés.
Qu’est-ce qui a été déprécié dans tailwind-variants 4 ?
0 exports ou membres sont désormais marqués comme dépréciés dans tailwind-variants 4.0.0.
Pour les agents
GET https://vigia.coredls.cloud/v1/packages/npm/tailwind-variants/upgrade?from=3.3.1&to=4.0.0