aliaset
Version:
twind monorepo
55 lines (45 loc) • 1.6 kB
text/typescript
import { assert, test, afterEach } from 'vitest'
import { twind, virtual } from '@twind/core'
import presetTailwind from '@twind/preset-tailwind'
import presetExt from '.'
import data from './preset-ext.test.json'
const tw = twind(
{
presets: [presetExt(), presetTailwind({ disablePreflight: true })],
variants: [['not-logged-in', 'body:not(.logged-in) &']],
},
virtual(),
)
afterEach(() => tw.clear())
Object.entries(data)
.filter(([tokens]) => !tokens.startsWith('//'))
.map(([tokens, declarations]): [string, string, string[]] => {
if (Array.isArray(declarations)) {
return Array.isArray(declarations[1])
? [tokens, declarations[0] as string, declarations[1]]
: [tokens, tokens, declarations as string[]]
}
return [tokens, tokens, [declarations]]
})
.forEach(([tokens, classNames, rules]) =>
test(`${JSON.stringify(tokens)} => ${classNames}`, () => {
assert.strictEqual(tw(tokens), classNames)
assert.deepEqual(tw.target, rules)
// Cached access
assert.strictEqual(tw(tokens), classNames)
assert.deepEqual(tw.target, rules)
}),
)
test('dark class using peer', () => {
const tw = twind(
{
presets: [presetExt(), presetTailwind({ disablePreflight: true })],
darkMode: 'class',
},
virtual(),
)
assert.strictEqual(tw('dark:group-hocus:underline'), 'dark:group-hocus:underline')
assert.deepEqual(tw.target, [
'.dark .group:hover .dark\\:group-hocus\\:underline,.dark .group:focus-visible .dark\\:group-hocus\\:underline{text-decoration-line:underline}',
])
})