Files
ita-ito-horaires/package.json
T
vliaudatandClaude Opus 5 61074d02f9 fix: keep the thin strokes of the wordmark on the panel
The A of ITA had lost its diagonal: at 260px the hairlines of a Didone
fall below a pixel, downscaling averages them into grey, and the
panel's mid-grey cut then discarded them. What reached the shop window
was a detached serif and something closer to a lambda.

Letting more grey count as ink keeps them whole. 165 was not enough —
the diagonal came back dotted — and 195 holds it solid without
thickening the stems into mud. The number belongs to this particular
drawing, so `npm run brand:variants` renders the grid of widths and
thresholds it was chosen from, magnified, for the day the logo changes.

Width stays at 260: the header shares its line with the date, and the
main block is narrower now the week runs down the right-hand side.

The panel will redraw once when it next wakes, since the image and
therefore its content hash have changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012cSY9pVhZmJUKNN7wf1Myd
2026-09-21 23:24:53 +02:00

74 lines
2.1 KiB
JSON

{
"name": "ita-ito-trmnl-admin",
"version": "0.1.0",
"private": true,
"license": "UNLICENSED",
"engines": {
"node": ">=20.9"
},
"scripts": {
"dev": "next dev --port 3010",
"build": "next build",
"start": "next start --port ${PORT:-3010}",
"lint": "eslint . --max-warnings 0",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"coverage": "vitest run --coverage",
"seed": "tsx prisma/seed.ts",
"screen:preview": "tsx scripts/preview.ts",
"brand": "tsx scripts/brand.ts",
"e2e": "playwright test",
"holidays:sync": "tsx scripts/sync-holidays.ts",
"translate:test": "tsx scripts/test-translation.ts",
"e2e:ui": "playwright test --ui",
"screen:fonts": "tsx scripts/typography-preview.ts",
"brand:variants": "tsx scripts/logo-variants.ts"
},
"dependencies": {
"@fontsource-variable/inter": "^5.3.0",
"@fontsource-variable/source-serif-4": "^5.3.0",
"@prisma/adapter-pg": "^7.10.0",
"@prisma/client": "^7.10.0",
"@resvg/resvg-js": "^2.6.2",
"date-fns": "^4.4.0",
"date-fns-tz": "^3.2.0",
"dotenv": "^18.0.1",
"next": "^16.3.5",
"next-auth": "^5.0.0-beta.32",
"node-cron": "^4.6.0",
"pg": "^8.23.0",
"prisma": "^7.10.0",
"react": "^19.3.0",
"react-dom": "^19.3.0",
"satori": "^0.33.4",
"zod": "^4.6.5"
},
"devDependencies": {
"@eslint/js": "^9.39.5",
"@fontsource/atkinson-hyperlegible": "^5.3.0",
"@fontsource/ibm-plex-sans": "^5.3.0",
"@fontsource/inter": "^5.3.0",
"@fontsource/silkscreen": "^5.3.0",
"@fontsource/source-serif-4": "^5.3.0",
"@playwright/test": "^1.63.0",
"@tailwindcss/postcss": "^4.3.3",
"@types/node": "^26.6.2",
"@types/node-cron": "^3.0.11",
"@types/pg": "^8.23.1",
"@types/react": "^19.3.0",
"@types/react-dom": "^19.3.0",
"@vitest/coverage-v8": "^4.1.11",
"eslint": "^9.39.5",
"eslint-config-next": "^16.3.5",
"msw": "^2.15.0",
"postcss": "^8.5.28",
"sharp": "^0.35.4",
"tailwindcss": "^4.3.3",
"tsx": "^4.23.15",
"typescript": "^6.0.3",
"typescript-eslint": "^8.70.0",
"vitest": "^4.1.11"
}
}