'use client' import * as React from 'react' import * as TooltipPrimitive from '@radix-ui/react-tooltip' import { Info, HelpCircle } from 'lucide-react' import { cn } from '@/lib/utils' const TooltipProvider = TooltipPrimitive.Provider const Tooltip = TooltipPrimitive.Root const TooltipTrigger = TooltipPrimitive.Trigger const TooltipContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => ( )) TooltipContent.displayName = TooltipPrimitive.Content.displayName interface InfoTooltipProps { content: React.ReactNode children?: React.ReactNode className?: string iconClassName?: string side?: 'top' | 'right' | 'bottom' | 'left' align?: 'start' | 'center' | 'end' variant?: 'info' | 'help' maxWidth?: string } /** * InfoTooltip - En återanvändbar tooltip-komponent för kontextuell hjälp * * Användning: * * Text att förklara * * * Eller som fristående info-ikon: * */ function InfoTooltip({ content, children, className, iconClassName, side = 'top', align = 'center', variant = 'info', maxWidth = '280px', }: InfoTooltipProps) { const Icon = variant === 'help' ? HelpCircle : Info return ( {children ? ( {children} ) : ( )}
{content}
) } interface InfoTextProps { term: string explanation: string className?: string termClassName?: string } /** * InfoText - Kombination av primär text med fackterm i parentes * * Användning: * * Visar: "Enkla avdrag (schablonavdrag)" */ function InfoText({ term, explanation, className, termClassName }: InfoTextProps) { return ( {term} ({explanation}) ) } interface HelpLinkProps { href: string children: React.ReactNode className?: string external?: boolean } /** * HelpLink - Länk till mer information (t.ex. Skatteverket) */ function HelpLink({ href, children, className, external = true }: HelpLinkProps) { return ( {children} ) } export { InfoTooltip, InfoText, HelpLink, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, }