mirror of
https://github.com/block/buzz.git
synced 2026-11-02 07:22:55 +00:00
Registers all eight palette ramps as Tailwind classes, so a screen writes `bg-purple-9` or `text-red-12` directly. This reverses the rule the colour guard used to enforce, and the reversal turns on one fact: every step in this palette is authored per mode, so `neutral-4` is one value in light and another in dark and a component naming it behaves correctly in both. That is what makes a raw step safe here and unsafe in stock Tailwind, where `neutral-200` is a single literal. Once a step is mode-aware, a role whose light and dark values are the same step is a name in front of a number, and a name in front of a number hides the decision instead of recording it. `bg-accent` was `purple-9`; `text-error` was `red-12`. Nineteen roles were exactly that. The fifteen that remain each earn the name: the four structural surfaces take a different step per mode, so no class can express them; the emphasis roles enforce a rule a ramp cannot state, which is that there are three levels of text and one border weight; the glass materials are a bundled treatment; and `--text-on-accent` follows its fill rather than the mode. Also fixes a namespace collision that had shipped a real defect. `--color-x` is not one utility, it is all of them — one declaration defines `bg-x`, `text-x`, `border-x` and `ring-x` from a single value — so `text-danger` resolved to the saturated fill (red-9) instead of the text step. Three error messages rendered at APCA Lc 34 on a dark panel against a target of 60, and `check-contrast` passed the whole time because it measured `--text-danger`, a token no class could reach. Text roles now register as `--text-color-*`, matching the `--border-color-*` split that fixed the same bug for borders. Guards updated to enforce the new rule rather than the old one: `check-color` now rejects a role whose two modes agree and names the class to write instead, and `check-contrast` measures the ramp steps screens actually use, so deleting a role cannot leave it auditing a name nobody types. `registry.test.ts` binds the documented token list to the stylesheet, and `pnpm census` reports every role's readers without failing a build. Signed-off-by: Morgan Martin <morganmartin@squareup.com> Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
51 lines
1.7 KiB
JSON
51 lines
1.7 KiB
JSON
{
|
|
"name": "buzz-desktop-new",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"typecheck": "tsc --noEmit",
|
|
"preview": "vite preview",
|
|
"lint": "biome lint .",
|
|
"check": "biome check . && node scripts/check-type.mjs && node scripts/check-contrast.mjs && node scripts/check-color.mjs",
|
|
"format": "biome format --write .",
|
|
"check:type": "node scripts/check-type.mjs",
|
|
"check:contrast": "node scripts/check-contrast.mjs",
|
|
"test": "vitest run src",
|
|
"test:e2e": "playwright test",
|
|
"tauri:dev": "node ../desktop/scripts/tauri-command.mjs dev --config ../desktop-new/tauri.conf.json --config ../desktop/src-tauri/tauri.dev.conf.json",
|
|
"check:color": "node scripts/check-color.mjs",
|
|
"census": "node scripts/token-consumers.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@base-ui/react": "1.7.0",
|
|
"@fontsource-variable/inter": "^5.2.8",
|
|
"@fontsource/jetbrains-mono": "^5.3.0",
|
|
"@tabler/icons-react": "^3.46.0",
|
|
"@tanstack/react-router": "^1.168.10",
|
|
"@tauri-apps/api": "~2.11.1",
|
|
"@tiptap/core": "^3.22.3",
|
|
"@tiptap/pm": "^3.22.3",
|
|
"@tiptap/react": "^3.22.3",
|
|
"@tiptap/starter-kit": "^3.22.3",
|
|
"dockview-react": "8.2.0",
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.60.0",
|
|
"@tailwindcss/postcss": "^4.3.0",
|
|
"@tanstack/router-plugin": "^1.167.12",
|
|
"@types/node": "25.6.0",
|
|
"@types/react": "^19.1.8",
|
|
"@types/react-dom": "^19.1.6",
|
|
"@vitejs/plugin-react": "^6.0.0",
|
|
"tailwindcss": "^4.3.0",
|
|
"typescript": "~6.0.0",
|
|
"vite": "^8.0.0",
|
|
"vitest": "^4.1.11"
|
|
}
|
|
}
|