Backend
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
let passwordInput: HTMLInputElement | null = null;
|
||||
const currentYear = new Date().getFullYear();
|
||||
const appVersion = `v${packageInfo.version}`;
|
||||
const releaseStage = 'Alpha';
|
||||
const releaseStage = 'Beta';
|
||||
|
||||
const monthLabels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'];
|
||||
|
||||
@@ -141,9 +141,9 @@
|
||||
|
||||
function buildSegments(current: DashboardSummary | null) {
|
||||
return [
|
||||
{ label: 'Materials', value: current?.raw_materials?.count ?? 0, color: '#2c9b5f' },
|
||||
{ label: 'Mixes', value: current?.mixes?.count ?? 0, color: '#d7802a' },
|
||||
{ label: 'Products', value: current?.products?.count ?? 0, color: '#286ea7' }
|
||||
{ label: 'Materials', value: current?.raw_materials?.count ?? 0, color: '#15803d' },
|
||||
{ label: 'Mixes', value: current?.mixes?.count ?? 0, color: '#bf8700' },
|
||||
{ label: 'Products', value: current?.products?.count ?? 0, color: '#0969da' }
|
||||
];
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
y1: Number(inner.y.toFixed(2)),
|
||||
x2: Number(outer.x.toFixed(2)),
|
||||
y2: Number(outer.y.toFixed(2)),
|
||||
color: activeStop?.color ?? '#2c9b5f'
|
||||
color: activeStop?.color ?? '#15803d'
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -325,7 +325,8 @@
|
||||
|
||||
<div class="auth-footer">
|
||||
<div class="lean-brand">
|
||||
<img class="footer-login-logo" src="/logo-hsf.png" alt="Lean 101" />
|
||||
<img class="lean-isotipo" src="/lean101-isotipo.png" alt="Lean 101" />
|
||||
<span class="powered-by-label">Powered by Lean 101</span>
|
||||
</div>
|
||||
<div class="auth-meta">
|
||||
<span class="version-badge">
|
||||
@@ -387,7 +388,8 @@
|
||||
|
||||
<div class="auth-footer">
|
||||
<div class="lean-brand">
|
||||
<img class="footer-login-logo" src="/logo-hsf.png" alt="Lean 101" />
|
||||
<img class="lean-isotipo" src="/lean101-isotipo.png" alt="Lean 101" />
|
||||
<span class="powered-by-label">Powered by Lean 101</span>
|
||||
</div>
|
||||
<div class="auth-meta">
|
||||
<span class="version-badge">
|
||||
@@ -579,13 +581,13 @@
|
||||
<svg viewBox="0 0 100 56" preserveAspectRatio="none" aria-hidden="true">
|
||||
<defs>
|
||||
<linearGradient id="chart-fill" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#59c97f" stop-opacity="0.32" />
|
||||
<stop offset="100%" stop-color="#59c97f" stop-opacity="0.02" />
|
||||
<stop offset="0%" stop-color="#15803d" stop-opacity="0.22" />
|
||||
<stop offset="100%" stop-color="#15803d" stop-opacity="0.02" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<path d={trendArea} fill="url(#chart-fill)"></path>
|
||||
<path d={trendLine} fill="none" stroke="#2ba560" stroke-width="1.6" stroke-linecap="round"></path>
|
||||
<path d={trendLine} fill="none" stroke="#15803d" stroke-width="1.6" stroke-linecap="round"></path>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
@@ -753,7 +755,7 @@
|
||||
radial-gradient(circle at top left, rgba(115, 197, 146, 0.16), transparent 32%),
|
||||
radial-gradient(circle at bottom right, rgba(33, 94, 60, 0.1), transparent 30%),
|
||||
rgba(255, 255, 255, 0.96);
|
||||
box-shadow: 0 28px 70px rgba(17, 37, 25, 0.14);
|
||||
box-shadow: none;
|
||||
backdrop-filter: blur(14px);
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -833,10 +835,10 @@
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.48rem 0.8rem;
|
||||
border: 1px solid rgba(44, 123, 72, 0.12);
|
||||
border: 1px solid color-mix(in srgb, var(--color-brand) 16%, transparent);
|
||||
border-radius: 999px;
|
||||
background: rgba(240, 249, 244, 0.96);
|
||||
color: #1e6a3d;
|
||||
background: var(--color-brand-tint);
|
||||
color: var(--color-success);
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.04em;
|
||||
@@ -858,10 +860,10 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0.28rem 0.62rem;
|
||||
border: 1px solid rgba(20, 130, 73, 0.16);
|
||||
border: 1px solid color-mix(in srgb, var(--color-brand) 16%, transparent);
|
||||
border-radius: 999px;
|
||||
background: #eaf8ef;
|
||||
color: #148249;
|
||||
background: var(--color-brand-tint);
|
||||
color: var(--color-success);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.08em;
|
||||
@@ -910,8 +912,8 @@
|
||||
height: 0.95rem;
|
||||
flex-shrink: 0;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
box-shadow: 0 0 0 0 rgba(47, 123, 72, 0.28);
|
||||
background: var(--color-brand);
|
||||
box-shadow: 0 0 0 0 rgba(21, 128, 61, 0.28);
|
||||
animation: pulse 1.8s ease-out infinite;
|
||||
}
|
||||
|
||||
@@ -946,8 +948,8 @@
|
||||
|
||||
.auth-form input:focus {
|
||||
outline: none;
|
||||
border-color: #4d9668;
|
||||
box-shadow: 0 0 0 0.24rem rgba(77, 150, 104, 0.12);
|
||||
border-color: var(--color-brand);
|
||||
box-shadow: 0 0 0 0.24rem color-mix(in srgb, var(--color-brand) 12%, transparent);
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
@@ -975,6 +977,20 @@
|
||||
.lean-brand {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.lean-isotipo {
|
||||
width: 2.2rem;
|
||||
height: 2.2rem;
|
||||
object-fit: contain;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.powered-by-label {
|
||||
font-size: 0.78rem;
|
||||
font-weight: 500;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.auth-meta {
|
||||
@@ -987,17 +1003,17 @@
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
box-shadow: 0 0 0 0 rgba(47, 123, 72, 0.26);
|
||||
box-shadow: 0 0 0 0 rgba(21, 128, 61, 0.26);
|
||||
transform: scale(0.96);
|
||||
}
|
||||
|
||||
70% {
|
||||
box-shadow: 0 0 0 0.7rem rgba(47, 123, 72, 0);
|
||||
box-shadow: 0 0 0 0.7rem rgba(21, 128, 61, 0);
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
100% {
|
||||
box-shadow: 0 0 0 0 rgba(47, 123, 72, 0);
|
||||
box-shadow: 0 0 0 0 rgba(21, 128, 61, 0);
|
||||
transform: scale(0.96);
|
||||
}
|
||||
}
|
||||
@@ -1102,8 +1118,8 @@
|
||||
.primary-button {
|
||||
border: none;
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
box-shadow: 0 8px 20px rgba(23, 75, 45, 0.2);
|
||||
background: var(--color-brand);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.secondary-button {
|
||||
@@ -1195,7 +1211,7 @@
|
||||
justify-content: center;
|
||||
border-radius: 0.75rem;
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
background: var(--green-deep);
|
||||
font-size: 0.74rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.05em;
|
||||
@@ -1297,7 +1313,7 @@
|
||||
|
||||
.toggle-pill .active {
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
background: var(--green-deep);
|
||||
}
|
||||
|
||||
.market-layout {
|
||||
@@ -1441,8 +1457,8 @@
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(135deg, #eef8f1 0%, #dff5e8 100%);
|
||||
border: 1px solid #d3eadb;
|
||||
background: var(--color-brand-tint);
|
||||
border: 1px solid color-mix(in srgb, var(--color-brand) 15%, transparent);
|
||||
}
|
||||
|
||||
.metric-card strong {
|
||||
@@ -1457,11 +1473,11 @@
|
||||
margin-top: 0.4rem;
|
||||
border-radius: 1.25rem;
|
||||
background:
|
||||
linear-gradient(180deg, rgba(88, 197, 121, 0.06) 0%, rgba(88, 197, 121, 0.01) 100%),
|
||||
linear-gradient(180deg, rgba(21, 128, 61, 0.05) 0%, rgba(21, 128, 61, 0.01) 100%),
|
||||
repeating-linear-gradient(
|
||||
to bottom,
|
||||
transparent 0 3.45rem,
|
||||
rgba(196, 226, 205, 0.45) 3.45rem 3.55rem
|
||||
rgba(21, 128, 61, 0.08) 3.45rem 3.55rem
|
||||
);
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -1481,7 +1497,7 @@
|
||||
border-radius: 0.8rem;
|
||||
background: #1e2420;
|
||||
color: #fff;
|
||||
box-shadow: 0 10px 20px rgba(15, 23, 17, 0.16);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.focus-badge span {
|
||||
@@ -1700,7 +1716,7 @@
|
||||
|
||||
.owner-chip span {
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
background: var(--green-deep);
|
||||
border-radius: 999px;
|
||||
}
|
||||
|
||||
@@ -1764,7 +1780,7 @@
|
||||
width: 0.75rem;
|
||||
height: 0.75rem;
|
||||
border-radius: 999px;
|
||||
background: linear-gradient(135deg, #2f7b48 0%, #174b2d 100%);
|
||||
background: var(--color-brand);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user