aliaset
Version:
twind monorepo
69 lines (57 loc) • 1.78 kB
text/typescript
import { assert, test, afterEach } from 'vitest'
import type { TwindUserConfig } from '..'
import { twind, setup, virtual, tx, tw, colorFromTheme } from '..'
const config = {
theme: {
screens: {
sm: '640px',
md: '768px',
},
spacing: {
lg: '2rem',
xl: '3rem',
'0.5': '0.5rem',
},
colors: {
gray: {
50: '#f9fafb',
100: '#f3f4f6',
200: '#e5e7eb',
300: '#d1d5db',
400: '#9ca3af',
500: '#6b7280',
600: '#4b5563',
700: '#374151',
800: '#1f2937',
900: '#111827',
},
},
},
rules: [
['bg-', colorFromTheme({ section: 'colors', property: 'background-color' })],
['text-', colorFromTheme({ section: 'colors', property: 'color' })],
],
} as TwindUserConfig
setup(config, virtual())
afterEach(() => tw.clear())
test('using tx', () => {
assert.strictEqual(tx`${true && 'bg-gray-500'} ${false && 'text-gray-500'}`, 'bg-gray-500')
assert.deepEqual(tw.target, [
'.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}',
])
})
test('using tx with falsey values', () => {
assert.strictEqual(tx(true && 'bg-gray-500', false && 'text-gray-500'), 'bg-gray-500')
assert.deepEqual(tw.target, [
'.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}',
])
})
test('using custom tw with tx', () => {
const custom = twind(config, virtual())
const tx$ = tx.bind(custom)
assert.strictEqual(tx$({ 'text-gray-100': true, 'text-gray-700': false }), 'text-gray-100')
assert.deepEqual(custom.target, [
'.text-gray-100{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}',
])
assert.lengthOf(tw.target as string[], 0)
})