import { describe, it, expect } from 'vitest'; import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; const css = readFileSync(resolve(__dirname, '../../app.css'), 'utf-8'); const requiredTokens = [ // Fonts '--font-display', '--font-sans', '--font-mono', // Neutrals '--color-page', '--color-surface', '--color-subtle', '--color-border', '--color-text', '--color-text-muted', // Green scale '--green-tint', '--green-light', '--green', '--green-dark', '--green-deeper', // Yellow scale '--yellow-tint', '--yellow-light', '--yellow', '--yellow-dark', '--yellow-text', // Status '--color-error', // Spacing '--space-1', '--space-4', '--space-8', '--space-12', '--space-16', '--space-20', // Radii '--radius-xs', '--radius-sm', '--radius-md', '--radius-lg', '--radius-xl', '--radius-full', // Shadows '--shadow-card', '--shadow-raised', '--shadow-overlay', // Planner flip-tile semantic tokens '--color-ring-today', '--color-ring-selected', '--opacity-dimmed', // Protein gradient tokens '--gradient-protein-haehnchen', '--gradient-protein-rind', '--gradient-protein-fisch', '--gradient-protein-tofu', '--gradient-protein-veg', '--gradient-protein-schwein', '--gradient-protein-lamm', '--gradient-protein-ei', '--gradient-protein-huelsenfruechte', // Cuisine gradient tokens '--gradient-cuisine-italienisch', '--gradient-cuisine-asiatisch', '--gradient-cuisine-indisch', '--gradient-cuisine-mexikanisch', '--gradient-cuisine-mediterran' ]; describe('design token completeness', () => { it.each(requiredTokens)('%s is defined in app.css', (token) => { expect(css).toContain(token); }); });