Add main donate page with TMN and PromptPay flows, donation schema with retry system, SSE integration, heartbeat endpoint, and file-to-data-url utility. Remove unused donate client component.
- FormIf for conditional field rendering based on form values - FormWrapper for wrapping inputs with shared props - Reset support in FormProvider and FormAction via return { reset: true }
Move checkSlip into a shared lib/payment module so the donate page can reuse it without duplicating SlipOK API logic.
- rework form core and migrate all old usages