From 1ab92e5c9d2fc91c71e375fcce6a3edde335bb56 Mon Sep 17 00:00:00 2001 From: cesnimda Date: Mon, 13 Jul 2026 08:50:26 +0200 Subject: [PATCH] feat(ui): establish premium design foundation from mockups Extract design tokens from the mockup set (F:\Pictures\website\jobtracker\new dashboard, pipeline, job-workspace, features, workflow screens) into the central theme so every screen picks the change up automatically: - Heading weight: h1-h4 go bold/black (800/700) to match the mockups' heavy display type; h5/h6 stay a lighter semibold so dense screens don't turn into a wall of black text. - Card shadow: replace the flat 1px "section" shadow + visible border with a soft floating shadow and no border, matching how mockup cards sit on the grey page background. - Border radius: 10/12/8px -> 14/16/10px across shape/card/button defaults, matching the mockups' rounder corners. - New GradientButton component wrapping the mockup's signature indigo->cyan CTA gradient ("Tailor my CV for this role", "See the interface tour"), reserved for the single most important AI-assist/hero action per screen. The dark navy sidebar (#0f172a) already matched the mockups from an earlier pass -- untouched here. Verified: tsc clean, full frontend suite green (65/65). Live visual screenshot verification wasn't possible -- the Browser pane's screenshot tool times out in this environment; verified structurally via read_page and the app rendering without console errors instead. --- .../src/components/GradientButton.tsx | 33 ++++++++++++ job-tracker-ui/src/theme.ts | 52 +++++++++++++------ 2 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 job-tracker-ui/src/components/GradientButton.tsx diff --git a/job-tracker-ui/src/components/GradientButton.tsx b/job-tracker-ui/src/components/GradientButton.tsx new file mode 100644 index 0000000..7876eed --- /dev/null +++ b/job-tracker-ui/src/components/GradientButton.tsx @@ -0,0 +1,33 @@ +import React from "react"; + +import Button, { ButtonProps } from "@mui/material/Button"; + +import { GRADIENT_CTA } from "../theme"; + +/** + * The mockup's gradient AI/primary-action pill ("Tailor my CV for this role", "See the + * interface tour"). Reserve this for the single most important AI-assist or hero action on a + * screen -- everything else stays a plain contained/outlined Button, or the gradient stops + * reading as a signal and becomes wallpaper. + */ +export default function GradientButton({ sx, disabled, ...props }: ButtonProps) { + return ( +