+ {deduction + ? t('balance.statusLine', { left: deduction.daysLeft, total: deduction.totalDays }) + : raw + ? t('balance.statusLine', { left: raw.daysLeft, total: raw.totalDays }) + : t('balance.statusNone')} +
+ {!deduction && raw && ( ++ {t(sourceLabelKey(raw.source), { date: formatDateForDisplay(raw.fetchedAt.slice(0, 10), locale) })} +
+ )} + +{t('balance.deducedPartnerPrompt', { days: partnerDeduction.daysLeft })}
+{t('settings.redDaysHelp')}
+ +{t('redDaysList.loading')}
} + {error && ( ++ {error} +
+ )} + {toggleError && ( ++ {toggleError} +
+ )} + + {!isLoading && + !error && + Array.from(byYear.entries()).map(([year, items]) => ( +{t('redDaysList.emptyYear')}
+ ) : ( +{t('settings.dayOverridesHelp')}
+ +
- ⏳ {status === 'authenticating' ? t('qrModal.authenticating') : t('qrModal.fetching')}
+
✅ {t('qrModal.success')}
+
+
| {t('vacationDaysTable.yearHeader')} | -{t('vacationDaysTable.vacationDaysHeader')} | -{t('vacationDaysTable.savedDaysHeader')} | -- |
|---|---|---|---|
| - {row.year} - {row.isAssumed && ( - - {t('vacationDaysTable.assumedBadge')} - - )} - | -- updateDraft(row.year, 'totalDays', Number(e.target.value))} - data-testid={`vacation-total-days-${row.year}`} - className="vacation-days-table__input" - /> - | -- updateDraft(row.year, 'savedDaysIn', Number(e.target.value))} - data-testid={`vacation-saved-days-${row.year}`} - className="vacation-days-table__input" - /> - | -- | -