'use client' import { useState } from 'react' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { BankNameCombobox } from '@/components/settings/BankNameCombobox' import { validateBankgiroNumber, formatBankgiroNumber } from '@/lib/bankgiro/luhn' import { ENABLED_EXTENSION_IDS } from '@/lib/extensions/_generated/enabled-extensions' import type { CompanySettings } from '@/types' interface BankDetailsFormProps { settings: CompanySettings } export function BankDetailsForm({ settings }: BankDetailsFormProps) { const [bankgiroError, setBankgiroError] = useState(null) const [clearingError, setClearingError] = useState(null) const [accountNumberError, setAccountNumberError] = useState(null) const hasBankingExtension = ENABLED_EXTENSION_IDS.has('enable-banking') return (

Bankuppgifter

Visas på dina fakturor

{ e.target.value = e.target.value.replace(/\D/g, '') }} onBlur={(e) => { const val = e.target.value.trim() if (!val) { setClearingError(null); return } setClearingError(!/^\d{4,5}$/.test(val) ? 'Måste vara 4-5 siffror' : null) }} /> {clearingError &&

{clearingError}

}
{ e.target.value = e.target.value.replace(/\D/g, '') }} onBlur={(e) => { const val = e.target.value.trim() if (!val) { setAccountNumberError(null); return } setAccountNumberError(!/^\d{6,12}$/.test(val) ? 'Måste vara 6-12 siffror' : null) }} /> {accountNumberError &&

{accountNumberError}

}
{ const val = e.target.value.trim() if (!val) { setBankgiroError(null); return } if (validateBankgiroNumber(val)) { e.target.value = formatBankgiroNumber(val) setBankgiroError(null) } else { setBankgiroError('Ogiltigt bankgironummer') } }} /> {bankgiroError &&

{bankgiroError}

}
) } /** Validate bank fields from FormData. Returns error messages or null. */ export function validateBankFields(formData: FormData): { field: string; message: string }[] { const errors: { field: string; message: string }[] = [] const clearing = (formData.get('clearing_number') as string || '').trim() const account = (formData.get('account_number') as string || '').trim() const bankgiro = (formData.get('bankgiro') as string || '').trim() if (clearing && !/^\d{4,5}$/.test(clearing)) { errors.push({ field: 'clearing_number', message: 'Clearingnummer måste vara 4-5 siffror' }) } if (account && !/^\d{6,12}$/.test(account)) { errors.push({ field: 'account_number', message: 'Kontonummer måste vara 6-12 siffror' }) } if (bankgiro && !validateBankgiroNumber(bankgiro)) { errors.push({ field: 'bankgiro', message: 'Ogiltigt bankgironummer' }) } return errors }