diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c2126..cf7a2f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ O formato segue [Keep a Changelog](https://keepachangelog.com/pt-BR/). Este projeto adota [Versionamento Semântico](https://semver.org/pt-BR/). +## [1.43.2] - 2025-12-16 + +### Improved +- **Página Accounts - Contas Passivo Mobile** - Layout em cards para mobile + - Seção "Passivos" convertida para cards em dispositivos mobile + - Cards mostram: ícone + nome + status + número contrato + credor + - Valores principal e saldo devedor lado a lado + - Barra de progresso com percentagem visual + - Fontes otimizadas: 0.65-0.85rem para legibilidade mobile + - Padding compacto: p-3, background escuro (#0f172a) + - Mantém onClick para navegar para /liabilities + - Desktop mantém layout de tabela completo + + ## [1.43.1] - 2025-12-16 ### Fixed diff --git a/VERSION b/VERSION index 3987c47..6426a65 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.43.1 +1.43.2 diff --git a/frontend/src/pages/Accounts.jsx b/frontend/src/pages/Accounts.jsx index d3c28a9..39d2152 100644 --- a/frontend/src/pages/Accounts.jsx +++ b/frontend/src/pages/Accounts.jsx @@ -26,6 +26,7 @@ const Accounts = () => { const [saving, setSaving] = useState(false); const [recalculating, setRecalculating] = useState(false); const [filter, setFilter] = useState({ type: '', is_active: '' }); + const [isMobile, setIsMobile] = useState(window.innerWidth < 768); const [formData, setFormData] = useState({ name: '', @@ -45,6 +46,12 @@ const Accounts = () => { const accountTypes = accountService.types; const accountIcons = accountService.icons; + useEffect(() => { + const handleResize = () => setIsMobile(window.innerWidth < 768); + window.addEventListener('resize', handleResize); + return () => window.removeEventListener('resize', handleResize); + }, []); + useEffect(() => { loadAccounts(); }, [filter]); @@ -293,53 +300,55 @@ const Accounts = () => { {/* Header */}
{t('accounts.title')}
+ {!isMobile &&{t('accounts.title')}
}{t('dashboard.totalBalance')}
+{t('dashboard.totalBalance')}
{Object.keys(getTotalsByCurrency()).length > 0 ? ( -{t('common.active')}
-{t('common.active')}
+{t('common.total')}
-{t('common.total')}
+| {t('liabilities.contractName')} | -{t('liabilities.creditor')} | -{t('liabilities.principal')} | -{t('liabilities.remaining')} | -{t('liabilities.progress')} | -{t('common.status')} | -||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
-
+
+ {isMobile ? (
+ // Mobile: Cards Layout
+
+ {liabilityAccounts.map((liability) => (
+ navigate('/liabilities')}
+ >
+
+ {/* Header with Icon and Name */}
+
+
+
+ {/* Creditor */}
+ {liability.creditor && (
+
+
+
+
+
+
+ {liability.name}
+
+ {liability.contract_number && (
+
+ Nº {liability.contract_number}
+
+ )}
+
+ {liability.status === 'active' ? (
+
+ {t('common.active')}
+
+ ) : liability.status === 'paid_off' ? (
+
+ {t('liabilities.paid')}
+
+ ) : (
+
+ {liability.status}
+
+ )}
+
+
+
+ {liability.creditor}
+
+ )}
+
+ {/* Amounts */}
+
+
+
+ {/* Progress Bar */}
+
+
+ Principal
+
+ {formatCurrency(liability.principal_amount, liability.currency)}
+
+
+
+ Saldo Devedor
+
+ -{formatCurrency(liability.remaining_balance, liability.currency)}
+
+
+
-
+ Progresso
+
+ {liability.progress_percentage || 0}%
+
+
+
-
-
-
-
+ className="progress-bar bg-success"
+ style={{ width: `${liability.progress_percentage || 0}%` }}
+ >{liability.name}
- {liability.contract_number && (
- Nº {liability.contract_number}
- )}
- |
- {liability.creditor || '-'} | -- {formatCurrency(liability.principal_amount, liability.currency)} - | -- -{formatCurrency(liability.remaining_balance, liability.currency)} - | -
-
-
-
-
-
- {liability.progress_percentage || 0}%
- |
- - {liability.status === 'active' ? ( - {t('common.active')} - ) : liability.status === 'paid_off' ? ( - {t('liabilities.paid')} - ) : ( - {liability.status} - )} - | + + + + ))} + + ) : ( + // Desktop: Table Layout +
| {t('liabilities.contractName')} | +{t('liabilities.creditor')} | +{t('liabilities.principal')} | +{t('liabilities.remaining')} | +{t('liabilities.progress')} | +{t('common.status')} |
|---|