Ver código fonte

no message

reset-do-picking-order
[email protected] 3 semanas atrás
pai
commit
f17ed17f87
2 arquivos alterados com 61 adições e 23 exclusões
  1. +3
    -2
      src/components/LoginPage/LoginPage.tsx
  2. +58
    -21
      src/components/Logo/Logo.tsx

+ 3
- 2
src/components/LoginPage/LoginPage.tsx Ver arquivo

@@ -29,10 +29,11 @@ const LoginPage = () => {
display: "flex", display: "flex",
alignItems: "flex-end", alignItems: "flex-end",
justifyContent: "center", justifyContent: "center",
svg: { maxHeight: 120 },
backgroundImage: "linear-gradient(135deg, rgba(59,130,246,0.15) 0%, #f1f5f9 45%, #f8fafc 100%)",
backgroundColor: "#f8fafc",
}} }}
> >
<Logo />
<Logo height={42} />
</Box> </Box>
<Paper square sx={{ height: "100%" }}> <Paper square sx={{ height: "100%" }}>
<LoginForm /> <LoginForm />


+ 58
- 21
src/components/Logo/Logo.tsx Ver arquivo

@@ -6,14 +6,18 @@ interface Props {
className?: string; className?: string;
} }


/** Same logo height everywhere so login and main page look identical. */
const DEFAULT_LOGO_HEIGHT = 42;

/** /**
* Logo: 3D-style badge (FP) + FP-MTMS wordmark.
* Badge uses gradient and highlight for depth; FP = Food Production, MTMS = system name.
* Logo: rounded badge (FP) with links motif inside + FP-MTMS wordmark.
* Uses fixed typography so words look the same on login and main page.
*/ */
const Logo: React.FC<Props> = ({ height = 44, className = "" }) => {
const Logo: React.FC<Props> = ({ height = DEFAULT_LOGO_HEIGHT, className = "" }) => {
const size = Math.max(28, height); const size = Math.max(28, height);
const badgeSize = Math.round(size * 0.7); const badgeSize = Math.round(size * 0.7);
const fontSize = Math.round(size * 0.5);
const titleFontSize = 21;
const subtitleFontSize = 10;
const fpSize = badgeSize <= 22 ? 10 : badgeSize <= 28 ? 12 : 14; const fpSize = badgeSize <= 22 ? 10 : badgeSize <= 28 ? 12 : 14;


return ( return (
@@ -22,7 +26,7 @@ const Logo: React.FC<Props> = ({ height = 44, className = "" }) => {
style={{ display: "flex", flexShrink: 0 }} style={{ display: "flex", flexShrink: 0 }}
aria-label="FP-MTMS" aria-label="FP-MTMS"
> >
{/* 3D badge: FP with gradient, top bevel, and soft shadow */}
{/* Badge: rounded square with links motif inside + FP */}
<svg <svg
width={badgeSize} width={badgeSize}
height={badgeSize} height={badgeSize}
@@ -32,29 +36,38 @@ const Logo: React.FC<Props> = ({ height = 44, className = "" }) => {
aria-hidden aria-hidden
> >
<defs> <defs>
{/* Energetic blue gradient: bright top → deep blue bottom */}
<linearGradient id="logo-bg" x1="0%" y1="0%" x2="0%" y2="100%"> <linearGradient id="logo-bg" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stopColor="#60a5fa" /> <stop offset="0%" stopColor="#60a5fa" />
<stop offset="40%" stopColor="#3b82f6" /> <stop offset="40%" stopColor="#3b82f6" />
<stop offset="100%" stopColor="#1d4ed8" /> <stop offset="100%" stopColor="#1d4ed8" />
</linearGradient> </linearGradient>
<linearGradient id="logo-bevel" x1="0%" y1="0%" x2="0%" y2="100%"> <linearGradient id="logo-bevel" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" stopColor="rgba(255,255,255,0.45)" />
<stop offset="0%" stopColor="rgba(255,255,255,0.4)" />
<stop offset="100%" stopColor="rgba(255,255,255,0)" /> <stop offset="100%" stopColor="rgba(255,255,255,0)" />
</linearGradient> </linearGradient>
<filter id="logo-shadow" x="-15%" y="-5%" width="130%" height="120%"> <filter id="logo-shadow" x="-15%" y="-5%" width="130%" height="120%">
<feDropShadow dx="0" dy="2" stdDeviation="1.5" floodOpacity="0.35" floodColor="#1e40af" /> <feDropShadow dx="0" dy="2" stdDeviation="1.5" floodOpacity="0.35" floodColor="#1e40af" />
</filter> </filter>
</defs> </defs>
{/* Shadow layer - deep blue */}
<rect x="1" y="2" width="36" height="36" rx="8" fill="#1e40af" fillOpacity="0.4" />
{/* Main 3D body */}
<rect x="0" y="0" width="36" height="36" rx="8" fill="url(#logo-bg)" filter="url(#logo-shadow)" />
{/* Top bevel (inner 3D) */}
<rect x="2" y="2" width="32" height="12" rx="6" fill="url(#logo-bevel)" />
{/* FP text */}
{/* Shadow */}
<rect x="3" y="4" width="34" height="34" rx="8" fill="#1e40af" fillOpacity="0.35" />
{/* Body */}
<rect x="2" y="2" width="36" height="36" rx="8" fill="url(#logo-bg)" filter="url(#logo-shadow)" />
<rect x="2" y="2" width="36" height="12" rx="7" fill="url(#logo-bevel)" />
{/* Links motif inside: small chain links in corners, clear center for FP */}
<g fill="none" stroke="rgba(255,255,255,0.55)" strokeWidth="1.4" strokeLinecap="round">
<path d="M 8 10 a 3 3 0 1 1 0 4.5 a 3 3 0 1 1 0 -4.5" />
<path d="M 12 10 a 3 3 0 1 1 0 4.5 a 3 3 0 1 1 0 -4.5" />
<line x1="11" y1="12.2" x2="12" y2="12.2" />
</g>
<g fill="none" stroke="rgba(255,255,255,0.5)" strokeWidth="1.4" strokeLinecap="round">
<path d="M 28 28 a 3 3 0 1 1 0 4.5 a 3 3 0 1 1 0 -4.5" />
<path d="M 32 28 a 3 3 0 1 1 0 4.5 a 3 3 0 1 1 0 -4.5" />
<line x1="31" y1="30.2" x2="32" y2="30.2" />
</g>
{/* FP text – top-right so it doesn’t overlap the links */}
<text <text
x="18"
x="20"
y="24" y="24"
textAnchor="middle" textAnchor="middle"
fill="#f8fafc" fill="#f8fafc"
@@ -68,17 +81,41 @@ const Logo: React.FC<Props> = ({ height = 44, className = "" }) => {
FP FP
</text> </text>
</svg> </svg>
{/* Wordmark: FP-MTMS + subtitle — strong, energetic */}
<div className="flex flex-col justify-center leading-tight">
{/* Wordmark: fixed typography so login and main page match */}
<div
style={{
display: "flex",
flexDirection: "column",
gap: 4,
fontFamily: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
}}
>
<span <span
className="font-bold tracking-tight text-blue-700 dark:text-blue-200"
style={{ fontSize: `${fontSize}px`, letterSpacing: "0.03em" }}
style={{
display: "block",
whiteSpace: "nowrap",
fontSize: titleFontSize,
fontWeight: 700,
letterSpacing: "0.03em",
lineHeight: 1.25,
color: "#1e40af",
}}
className="dark:text-blue-200"
> >
FP-MTMS FP-MTMS
</span> </span>
<span <span
className="text-[10px] font-semibold uppercase tracking-wider text-blue-600/90 dark:text-blue-300/90"
style={{ letterSpacing: "0.1em" }}
style={{
display: "block",
whiteSpace: "nowrap",
fontSize: subtitleFontSize,
fontWeight: 500,
letterSpacing: "0.12em",
lineHeight: 1.4,
textTransform: "uppercase",
color: "#2563eb",
}}
className="dark:text-blue-300"
> >
Food Production Food Production
</span> </span>


Carregando…
Cancelar
Salvar