'use client' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { z } from 'zod' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Loader2, ArrowRight, ArrowLeft, Calculator, SkipForward } from 'lucide-react' const schema = z.object({ preliminary_tax_monthly: z.number().min(0).optional().nullable(), }) type FormData = z.infer interface Step4Props { initialData: Partial onNext: (data: FormData) => void onBack: () => void onSkip: () => void isSaving: boolean } export default function Step4PreliminaryTax({ initialData, onNext, onBack, onSkip, isSaving, }: Step4Props) { const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(schema), mode: 'onTouched', defaultValues: { preliminary_tax_monthly: initialData.preliminary_tax_monthly ?? undefined, }, }) const onSubmit = (data: FormData) => { onNext({ preliminary_tax_monthly: data.preliminary_tax_monthly || null, }) } return (
Månatlig F-skatt Detta är frivilligt men hjälper oss visa varningar om du betalar för lite skatt.
{ const fields = Object.keys(errs).join(', ') console.error('[onboarding] step 4 validation failed:', fields, errs) fetch('/api/log', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ message: 'step 4 validation failed', extra: { fields } }) }).catch(() => {}) })} className="space-y-6">
{errors.preliminary_tax_monthly && (

{errors.preliminary_tax_monthly.message}

)}

Beloppet hittar du på ditt F-skattsedelsbeslut från Skatteverket.

Varför är detta användbart?

  • • Vi jämför din inbetalda skatt mot beräknad skatt
  • • Du får varningar om du riskerar restskatt
  • • Lättare att planera för slutskattebeskedet
) }