feat(auth,dashboard): 2FA mobile session persistence and sparkline cards

- Persist 2FA state in sessionStorage to survive mobile page reloads
- Reuse existing valid OTP on re-login to avoid rate limiting and duplicate emails
- Add embedded sparkline charts to SolduriCompactCard with expand toggle
- Mobile dashboard redesigned: 2 pages with enriched compact cards + cashflow type
- Login UI simplified: remove gradient bg, subtitle, icon; use design tokens
- Focus OTP input when session is restored from 2FA state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-02-26 14:36:22 +00:00
parent cbcd5fe8e7
commit 06cbf8fb9d
13 changed files with 654 additions and 248 deletions

View File

@@ -610,10 +610,7 @@ onBeforeUnmount(() => {
<style scoped>
/* Component-specific: Dual-chart layout for CashFlowMetricCard */
/* Override min-height for dual chart layout */
.cashflow-card {
min-height: 420px;
}
/* Ultra-compact cashflow card */
/* Metric label and value typography */
.metric-label {
@@ -631,7 +628,7 @@ onBeforeUnmount(() => {
.values-section {
display: grid;
grid-template-columns: 1fr auto 1fr;
gap: 1rem;
gap: 2px;
align-items: start;
}
@@ -646,8 +643,8 @@ onBeforeUnmount(() => {
.divider {
width: 1px;
height: 100%;
background: var(--color-border);
min-height: 60px;
border-left: 1px dotted var(--color-border);
background: none;
}
/* Charts toggle header */
@@ -715,10 +712,6 @@ onBeforeUnmount(() => {
/* Responsive: Stack vertically on mobile */
@media (max-width: 768px) {
.cashflow-card {
min-height: 380px;
}
.values-section {
grid-template-columns: 1fr;
gap: 0.75rem;