feat: better reminder tab
CI / build-and-test (push) Canceled after 0s

This commit is contained in:
2026-10-20 10:39:06 +02:00
parent 874f68b4b1
commit fb6d26a468
8 changed files with 441 additions and 86 deletions
+50 -4
View File
@@ -220,8 +220,8 @@ const translations: Record<Lang, Record<string, string>> = {
'reminders.desc': 'Send payment reminders to customers with an unpaid tab',
'reminders.candidates': 'Eligible for a reminder',
'reminders.candidates_desc': 'These customers have an unpaid tab and an email address on file. Reminders are sent via Resend.',
'reminders.no_candidates': 'No eligible customers',
'reminders.no_candidates_desc': 'Make sure planned customers have an email address.',
'reminders.no_candidates': 'No unpaid tabs',
'reminders.no_candidates_desc': 'Customers with an open balance show up here.',
'reminders.send': 'Send Reminders',
'reminders.sending': 'Sending...',
'reminders.admin_only': 'Only admins can send reminders.',
@@ -239,6 +239,29 @@ const translations: Record<Lang, Record<string, string>> = {
'reminders.sent_at': 'Sent At',
'reminders.status': 'Status',
'reminders.status_sent': 'Sent',
'reminders.customers': 'Customers with an unpaid tab',
'reminders.customers_desc': 'Eligible customers are selected by default. Anyone reminded in the last {days} days can still be picked by hand.',
'reminders.search': 'Search name or email',
'reminders.select_eligible': 'Select eligible',
'reminders.select_all': 'Select all',
'reminders.select_none': 'Clear',
'reminders.count': 'Reminders',
'reminders.last_sent': 'Last reminder',
'reminders.never': 'Never',
'reminders.state_eligible': 'Eligible',
'reminders.state_no_email': 'No email',
'reminders.state_cooldown': 'Eligible in {count} day',
'reminders.state_cooldown_plural': 'Eligible in {count} days',
'reminders.view_history': 'View reminders sent to this customer',
'reminders.no_matches': 'No customers match your search',
'reminders.selected': '{count} customer selected · {amount} outstanding',
'reminders.selected_plural': '{count} customers selected · {amount} outstanding',
'reminders.confirm_cooldown': '{count} of them was already reminded in the last {days} days.',
'reminders.confirm_cooldown_plural': '{count} of them were already reminded in the last {days} days.',
'reminders.recent': 'Recently reminded',
'reminders.person_history': 'Reminders for {name}',
'reminders.person_history_desc': '{count} reminder sent',
'reminders.person_history_desc_plural': '{count} reminders sent',
},
nl: {
'nav.overview': 'Overzicht',
@@ -456,8 +479,8 @@ const translations: Record<Lang, Record<string, string>> = {
'reminders.desc': 'Stuur betalingsherinneringen naar klanten met een openstaande poef',
'reminders.candidates': 'Komen in aanmerking',
'reminders.candidates_desc': 'Deze klanten hebben een openstaande poef en een gekend e-mailadres. Herinneringen worden verstuurd via Resend.',
'reminders.no_candidates': 'Geen klanten die in aanmerking komen',
'reminders.no_candidates_desc': 'Zorg dat geplande klanten een e-mailadres hebben.',
'reminders.no_candidates': 'Niemand heeft een openstaande poef',
'reminders.no_candidates_desc': 'Klanten met een openstaand bedrag verschijnen hier.',
'reminders.send': 'Herinneringen versturen',
'reminders.sending': 'Bezig met versturen...',
'reminders.admin_only': 'Alleen beheerders kunnen herinneringen versturen.',
@@ -475,6 +498,29 @@ const translations: Record<Lang, Record<string, string>> = {
'reminders.sent_at': 'Verstuurd op',
'reminders.status': 'Status',
'reminders.status_sent': 'Verstuurd',
'reminders.customers': 'Klanten met een openstaande poef',
'reminders.customers_desc': 'Klanten die in aanmerking komen zijn standaard geselecteerd. Wie de laatste {days} dagen al een herinnering kreeg, kun je nog steeds zelf aanvinken.',
'reminders.search': 'Zoek op naam of e-mail',
'reminders.select_eligible': 'Selecteer in aanmerking',
'reminders.select_all': 'Alles selecteren',
'reminders.select_none': 'Wissen',
'reminders.count': 'Herinneringen',
'reminders.last_sent': 'Laatste herinnering',
'reminders.never': 'Nooit',
'reminders.state_eligible': 'In aanmerking',
'reminders.state_no_email': 'Geen e-mail',
'reminders.state_cooldown': 'Over {count} dag',
'reminders.state_cooldown_plural': 'Over {count} dagen',
'reminders.view_history': 'Bekijk de herinneringen aan deze klant',
'reminders.no_matches': 'Geen klanten gevonden',
'reminders.selected': '{count} klant geselecteerd · {amount} openstaand',
'reminders.selected_plural': '{count} klanten geselecteerd · {amount} openstaand',
'reminders.confirm_cooldown': '{count} ervan kreeg de laatste {days} dagen al een herinnering.',
'reminders.confirm_cooldown_plural': '{count} ervan kregen de laatste {days} dagen al een herinnering.',
'reminders.recent': 'Recent herinnerd',
'reminders.person_history': 'Herinneringen voor {name}',
'reminders.person_history_desc': '{count} herinnering verstuurd',
'reminders.person_history_desc_plural': '{count} herinneringen verstuurd',
},
};