'use client' import { Card, CardContent } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { InfoTooltip } from '@/components/ui/info-tooltip' import { formatCurrency } from '@/lib/utils' import { AlertTriangle, Info, CheckCircle, AlertCircle, TrendingUp, ChevronDown, ChevronUp, } from 'lucide-react' import { useState } from 'react' import type { TaxWarningStatus } from '@/types' interface FSkattWarningCardProps { warningStatus: TaxWarningStatus onAdjustClick?: () => void } export default function FSkattWarningCard({ warningStatus, onAdjustClick, }: FSkattWarningCardProps) { const [isExpanded, setIsExpanded] = useState(false) // Don't show if everything is safe if (warningStatus.level === 'safe') { return null } // Icon and colors based on warning level const levelConfig = { safe: { icon: CheckCircle, iconColor: 'text-success', bgColor: 'bg-success/5', borderColor: 'border-success/50', badgeVariant: 'outline' as const, }, info: { icon: Info, iconColor: 'text-primary', bgColor: 'bg-primary/5', borderColor: 'border-primary/20', badgeVariant: 'outline' as const, }, warning: { icon: AlertTriangle, iconColor: 'text-warning', bgColor: 'bg-warning/5', borderColor: 'border-warning/50', badgeVariant: 'warning' as const, }, danger: { icon: AlertCircle, iconColor: 'text-destructive', bgColor: 'bg-destructive/5', borderColor: 'border-destructive/50', badgeVariant: 'destructive' as const, }, } const config = levelConfig[warningStatus.level] const Icon = config.icon return (
{/* Main warning */}

Vad betyder detta?

Vi jämför din beräknade skatt med vad du betalat in via F-skatt hittills i år.

Om du betalat för lite kan du få restskatt. Justera din månatliga F-skatt för att undvika överraskningar.

} side="right" >

F-skatt varning

{Math.round(warningStatus.percentageDifference * 100)}% skillnad

{warningStatus.message}

{/* Expandable projection section */} {warningStatus.yearEndProjection && (
{isExpanded && (
Beräknad årsskatt {formatCurrency(warningStatus.yearEndProjection.estimatedTotalTax)}
Projicerad inbetalning {formatCurrency(warningStatus.yearEndProjection.projectedPreliminaryPayments)}
Projicerad skillnad 0 ? 'text-destructive font-medium' : 'text-success font-medium' } > {warningStatus.yearEndProjection.projectedDifference > 0 ? '+' : ''} {formatCurrency(warningStatus.yearEndProjection.projectedDifference)}
)}
)} {/* Recommendation */} {warningStatus.recommendation && (

Rekommendation: {warningStatus.recommendation}

)} {/* Action button */} {onAdjustClick && (
)}
) }