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.
This commit is contained in:
@@ -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 (
|
||||
<Button
|
||||
variant="contained"
|
||||
disableElevation
|
||||
disabled={disabled}
|
||||
sx={[
|
||||
(theme: any) => ({
|
||||
background: disabled ? undefined : GRADIENT_CTA,
|
||||
color: disabled ? undefined : "#fff",
|
||||
boxShadow: disabled ? undefined : theme.vars.customShadows.gradientButton,
|
||||
"&:hover": disabled
|
||||
? undefined
|
||||
: { background: GRADIENT_CTA, filter: "brightness(1.06)", boxShadow: theme.vars.customShadows.gradientButton },
|
||||
}),
|
||||
...(Array.isArray(sx) ? sx : sx ? [sx] : []),
|
||||
]}
|
||||
{...props}
|
||||
/>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user