mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-06 05:55:28 +08:00
Co-authored-by: gujiaming <52187003+AtomsH4@users.noreply.github.com> Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com> Signed-off-by: kangfenmao <kangfenmao@qq.com> Signed-off-by: gujiaming <52187003+AtomsH4@users.noreply.github.com>
38 lines
2.0 KiB
TypeScript
38 lines
2.0 KiB
TypeScript
import path from 'node:path'
|
|
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
import { buildThemeContractCss, loadThemeContractInputs } from '../build-theme-css'
|
|
|
|
describe('buildThemeContractCss', () => {
|
|
it('maps token sources into the public theme contract', async () => {
|
|
const stylesDir = path.resolve(import.meta.dirname, '../../src/styles')
|
|
const css = buildThemeContractCss(await loadThemeContractInputs(stylesDir))
|
|
|
|
expect(css).toContain("@import './tokens.css';")
|
|
expect(css).toContain('/* Runtime Theme Inputs */')
|
|
expect(css).toContain('--cs-theme-primary: var(--cs-primary);')
|
|
expect(css).toContain('--cs-theme-ring: color-mix(in srgb, var(--cs-theme-primary) 40%, transparent);')
|
|
expect(css).not.toContain('--cs-user-font-family:')
|
|
expect(css).not.toContain('--cs-user-code-font-family:')
|
|
expect(css).toContain('/* Compatibility Aliases */')
|
|
expect(css).toContain('--primary: var(--color-primary);')
|
|
expect(css).toContain('--ring: var(--color-ring);')
|
|
expect(css).toContain('--color-neutral-50: var(--cs-neutral-50);')
|
|
expect(css).toContain('--color-brand-500: var(--cs-brand-500);')
|
|
expect(css).toContain('/* Semantic Colors */')
|
|
expect(css).toContain('--color-primary: var(--cs-theme-primary);')
|
|
expect(css).toContain('--color-ring: var(--cs-theme-ring);')
|
|
expect(css).not.toContain('--color-ring: var(--cs-ring);')
|
|
expect(css).toContain('--color-destructive: var(--cs-destructive);')
|
|
expect(css).toContain('--color-error-base: var(--cs-error-base);')
|
|
expect(css).toContain('--radius-md: var(--cs-radius-md);')
|
|
expect(css).toContain('--font-size-body-md: var(--cs-font-size-body-md);')
|
|
expect(css).toContain('--animate-checkbox-bounce: checkbox-bounce 300ms cubic-bezier(0.4, 0, 0.2, 1);')
|
|
expect(css).toContain('--animate-checkbox-icon-in: checkbox-icon-in 160ms ease-out both;')
|
|
expect(css).toContain('@keyframes checkbox-bounce {')
|
|
expect(css).toContain('@keyframes checkbox-icon-in {')
|
|
expect(css).not.toContain('.dark {')
|
|
})
|
|
})
|