diff --git a/src/default-config.ts b/src/default-config.ts index a5921b44..7fb868d8 100644 --- a/src/default-config.ts +++ b/src/default-config.ts @@ -584,16 +584,32 @@ export function getDefaultConfig() { * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ - 'font-variant-numeric': [ - 'normal-nums', - 'ordinal', - 'slashed-zero', - 'lining-nums', - 'oldstyle-nums', - 'tabular-nums', - 'diagonal-nums', - 'stacked-fractons', - ], + 'fvn-normal': ['normal-nums'], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + 'fvn-ordinal': ['ordinal'], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + 'fvn-slashed-zero': ['slashed-zero'], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + 'fvn-figure': ['lining-nums', 'oldstyle-nums'], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + 'fvn-spacing': ['proportional-nums', 'tabular-nums'], + /** + * Font Variant Numeric + * @see https://tailwindcss.com/docs/font-variant-numeric + */ + 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'], /** * Letter Spacing * @see https://tailwindcss.com/docs/letter-spacing @@ -1228,6 +1244,18 @@ export function getDefaultConfig() { mx: ['mr', 'ml'], my: ['mt', 'mb'], 'font-size': ['leading'], + 'fvn-normal': [ + 'fvn-ordinal', + 'fvn-slashed-zero', + 'fvn-figure', + 'fvn-spacing', + 'fvn-fraction', + ], + 'fvn-ordinal': ['fvn-normal'], + 'fvn-slashed-zero': ['fvn-normal'], + 'fvn-figure': ['fvn-normal'], + 'fvn-spacing': ['fvn-normal'], + 'fvn-fraction': ['fvn-normal'], rounded: [ 'rounded-t', 'rounded-r', diff --git a/tests/class-group-conflicts.test.ts b/tests/class-group-conflicts.test.ts new file mode 100644 index 00000000..c3396d82 --- /dev/null +++ b/tests/class-group-conflicts.test.ts @@ -0,0 +1,23 @@ +import { twMerge } from '../src' + +test('merges classes from same group correctly', () => { + expect(twMerge('overflow-x-auto overflow-x-hidden')).toBe('overflow-x-hidden') + expect(twMerge('overflow-x-auto overflow-x-hidden overflow-x-scroll')).toBe('overflow-x-scroll') + expect(twMerge('overflow-x-auto hover:overflow-x-hidden overflow-x-scroll')).toBe( + 'hover:overflow-x-hidden overflow-x-scroll' + ) + expect( + twMerge('overflow-x-auto hover:overflow-x-hidden hover:overflow-x-auto overflow-x-scroll') + ).toBe('hover:overflow-x-auto overflow-x-scroll') +}) + +test('merges classes from Font Variant Numeric section correctly', () => { + expect(twMerge('lining-nums tabular-nums diagonal-fractions')).toBe( + 'lining-nums tabular-nums diagonal-fractions' + ) + expect(twMerge('normal-nums tabular-nums diagonal-fractions')).toBe( + 'tabular-nums diagonal-fractions' + ) + expect(twMerge('tabular-nums diagonal-fractions normal-nums')).toBe('normal-nums') + expect(twMerge('tabular-nums proportional-nums')).toBe('proportional-nums') +}) diff --git a/tests/dynamic-classes.test.ts b/tests/dynamic-classes.test.ts deleted file mode 100644 index 42d77f88..00000000 --- a/tests/dynamic-classes.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { twMerge } from '../src' - -test('merges dynamic classes from same group correctly', () => { - expect(twMerge('overflow-x-auto overflow-x-hidden')).toBe('overflow-x-hidden') - expect(twMerge('overflow-x-auto overflow-x-hidden overflow-x-scroll')).toBe('overflow-x-scroll') - expect(twMerge('overflow-x-auto hover:overflow-x-hidden overflow-x-scroll')).toBe( - 'hover:overflow-x-hidden overflow-x-scroll' - ) - expect( - twMerge('overflow-x-auto hover:overflow-x-hidden hover:overflow-x-auto overflow-x-scroll') - ).toBe('hover:overflow-x-auto overflow-x-scroll') -})