'use client' import { useTranslations } from 'next-intl' import { BankDetailsForm, validateBankFields } from '@/components/settings/BankDetailsForm' import { InvoiceSettingsForm } from '@/components/settings/InvoiceSettingsForm' import { InvoicePreviewCard } from '@/components/settings/InvoicePreviewCard' import { PdfPrintSettings } from '@/components/settings/PdfPrintSettings' import { SettingsFormWrapper } from '@/components/settings/SettingsFormWrapper' import { SettingsLoadError } from '@/components/settings/SettingsLoadError' import { SettingsLoadingSkeleton } from '@/components/settings/SettingsLoadingSkeleton' import { useSettings } from '@/components/settings/useSettings' import { useToast } from '@/components/ui/use-toast' import { normaliseSwish } from '@/lib/payments/swish' import { formatPlusgiroNumber } from '@/lib/bankgiro/luhn' import type { CompanySettings } from '@/types' export function InvoicingSettingsContent() { const t = useTranslations('settings_invoicing') const { settings, isLoading, updateSettings, refetch } = useSettings() const { toast } = useToast() if (isLoading) return if (!settings) return function handleSave(formData: FormData) { const bankErrors = validateBankFields(formData) if (bankErrors.length > 0) { toast({ title: t('bank_validation_title'), description: bankErrors.map(e => e.message).join(', '), variant: 'destructive', }) return {} } const updates: Record = { bank_name: formData.get('bank_name') as string, clearing_number: formData.get('clearing_number') as string, account_number: formData.get('account_number') as string, bankgiro: (formData.get('bankgiro') as string) || null, plusgiro: (formData.get('plusgiro') as string)?.trim() ? formatPlusgiroNumber((formData.get('plusgiro') as string).trim()) : null, swish: normaliseSwish(formData.get('swish') as string) || null, invoice_prefix: (formData.get('invoice_prefix') as string) || null, next_invoice_number: parseInt(formData.get('next_invoice_number') as string) || 1, invoice_default_days: parseInt(formData.get('invoice_default_days') as string) || 30, invoice_default_notes: (formData.get('invoice_default_notes') as string) || null, default_our_reference: (formData.get('default_our_reference') as string) || null, } return { updates, onSuccess: (data: Record) => { updateSettings(data as Partial) }, } } return (
{/* PDF settings — saves individually via toggle switches */}
) }