@gamecp/ui 0.1.0 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Button.tsx","../src/Badge.tsx","../src/DropDown.tsx","../src/Card.tsx","../src/Link.tsx","../src/FormInput.tsx","../src/Switch.tsx","../src/Modal.tsx","../src/LoadingSpinner.tsx","../src/PageHeader.tsx","../src/FormSection.tsx","../src/Grid.tsx"],"names":["variantClasses","sizeClasses","jsx","jsxs","forwardRef","useState","React","paddingClasses","RiCloseLine"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport React, { ButtonHTMLAttributes, forwardRef } from 'react';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'ghost' | 'link' | 'outline';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 border-transparent',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90 border-transparent',\n ghost: 'bg-transparent hover:bg-muted hover:text-foreground border-transparent',\n link: 'bg-transparent text-primary underline-offset-4 hover:underline border-transparent p-0',\n outline: 'bg-transparent border-border hover:bg-muted hover:text-foreground',\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-sm',\n lg: 'px-6 py-3 text-base',\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n isLoading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n className = '',\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses =\n 'inline-flex items-center justify-center gap-2 font-medium rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';\n\n const classes = [\n baseClasses,\n variantClasses[variant],\n variant !== 'link' ? sizeClasses[size] : '',\n fullWidth ? 'w-full' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )}\n {!isLoading && leftIcon && <span className=\"flex-shrink-0\">{leftIcon}</span>}\n {children}\n {!isLoading && rightIcon && <span className=\"flex-shrink-0\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","'use client';\n\nimport React from 'react';\n\nexport type BadgeVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'gray'\n | 'purple'\n | 'pink'\n | 'indigo'\n | 'yellow'\n | 'orange'\n | 'teal'\n | 'cyan'\n | 'lime'\n | 'emerald'\n | 'rose'\n | 'sky'\n | 'violet'\n | 'fuchsia'\n | 'amber'\n | 'custom';\n\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\ninterface BadgeProps {\n children: React.ReactNode;\n variant?: BadgeVariant;\n size?: BadgeSize;\n className?: string;\n customColors?: {\n background: string;\n text: string;\n border?: string;\n };\n}\n\nconst badgeVariants: Record<Exclude<BadgeVariant, 'custom'>, string> = {\n default: 'bg-gray-100 text-foreground border-border',\n primary: 'bg-primary-100 text-primary-800 border-primary-200',\n secondary: 'bg-gray-100 text-foreground border-border',\n success: 'bg-success text-success-dark border-success-light',\n warning: 'bg-yellow-100 text-yellow-800 border-yellow-200',\n error: 'bg-red-100 text-red-800 border-red-200',\n info: 'bg-muted text-muted-foreground border-ring',\n gray: 'bg-gray-100 text-foreground border-border',\n purple: 'bg-purple-100 text-purple-800 border-purple-200',\n pink: 'bg-pink-100 text-pink-800 border-pink-200',\n indigo: 'bg-indigo-100 text-indigo-800 border-indigo-200',\n yellow: 'bg-yellow-100 text-yellow-800 border-yellow-200',\n orange: 'bg-orange-100 text-orange-800 border-orange-200',\n teal: 'bg-teal-100 text-teal-800 border-teal-200',\n cyan: 'bg-cyan-100 text-cyan-800 border-cyan-200',\n lime: 'bg-lime-100 text-lime-800 border-lime-200',\n emerald: 'bg-emerald-100 text-emerald-800 border-emerald-200',\n rose: 'bg-rose-100 text-rose-800 border-rose-200',\n sky: 'bg-sky-100 text-sky-800 border-sky-200',\n violet: 'bg-violet-100 text-violet-800 border-violet-200',\n fuchsia: 'bg-fuchsia-100 text-fuchsia-800 border-fuchsia-200',\n amber: 'bg-amber-100 text-amber-800 border-amber-200',\n};\n\nconst badgeSizes: Record<BadgeSize, string> = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs',\n lg: 'px-3 py-1 text-sm',\n};\n\nexport default function Badge({\n children,\n variant = 'default',\n size = 'md',\n className = '',\n customColors,\n}: BadgeProps) {\n const baseClasses =\n 'inline-flex items-center font-medium rounded-full border';\n\n const variantClasses = variant === 'custom' ? '' : badgeVariants[variant];\n\n const sizeClasses = badgeSizes[size];\n\n const customStyles =\n variant === 'custom' && customColors\n ? {\n backgroundColor: customColors.background,\n color: customColors.text,\n borderColor: customColors.border || customColors.background,\n }\n : {};\n\n return (\n <span\n className={`${baseClasses} ${variantClasses} ${sizeClasses} ${className}`}\n style={customStyles}\n >\n {children}\n </span>\n );\n}\n\n// Convenience components for common variants\nexport const SuccessBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"success\" />\n);\n\nexport const WarningBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"warning\" />\n);\n\nexport const ErrorBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"error\" />\n);\n\nexport const InfoBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"info\" />\n);\n\nexport const PrimaryBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"primary\" />\n);\n\nexport const GrayBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"gray\" />\n);\n\n// Status badge component for common use cases\nexport function StatusBadge({\n isActive,\n activeText = 'Active',\n inactiveText = 'Inactive',\n ...props\n}: {\n isActive: boolean;\n activeText?: string;\n inactiveText?: string;\n} & Omit<BadgeProps, 'children' | 'variant'>) {\n return (\n <Badge {...props} variant={isActive ? 'success' : 'error'}>\n {isActive ? activeText : inactiveText}\n </Badge>\n );\n}\n","import { RiArrowDownSLine } from 'react-icons/ri';\n\ntype Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2' | '3' | '4' | '5' | '6';\n\ninterface DropDownArrowProps {\n isOpen: boolean;\n disabled?: boolean;\n size?: Size;\n color?: 'default' | 'gray' | 'primary' | 'secondary';\n className?: string;\n 'aria-hidden'?: boolean;\n}\n\nconst sizeClasses: Record<Size, string> = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-8 h-8',\n '2': 'w-2 h-2',\n '3': 'w-3 h-3',\n '4': 'w-4 h-4',\n '5': 'w-5 h-5',\n '6': 'w-6 h-6',\n};\n\nconst colorClasses = {\n default: 'text-muted-foreground hover:text-muted-foreground',\n gray: 'text-muted-foreground hover:text-muted-foreground',\n primary: 'text-ring hover:text-primary-foreground',\n secondary: 'text-secondary-foreground hover:text-foreground',\n};\n\nexport function DropDownArrow({\n isOpen,\n disabled = false,\n size = 'sm',\n color = 'default',\n className = '',\n 'aria-hidden': ariaHidden,\n}: DropDownArrowProps) {\n const baseClasses = `${sizeClasses[size]} flex-shrink-0 transition-transform`;\n const rotationClasses = isOpen ? 'rotate-180' : '';\n const colorClassesApplied = disabled\n ? 'text-muted-foreground'\n : colorClasses[color];\n const combinedClasses =\n `${baseClasses} ${rotationClasses} ${colorClassesApplied} ${className}`.trim();\n\n return (\n <RiArrowDownSLine className={combinedClasses} aria-hidden={ariaHidden} />\n );\n}\n","'use client';\n\nimport React, { ReactNode, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { DropDownArrow } from './DropDown';\n\n// Base card props\ninterface BaseCardProps {\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n disabled?: boolean;\n}\n\n// Padding variants\ntype CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\n// Border accent variants\ntype BorderAccent =\n | 'none'\n | 'green'\n | 'blue'\n | 'red'\n | 'yellow'\n | 'purple'\n | 'orange'\n | 'gray';\n\n// Card variants\ntype CardVariant = 'default' | 'elevated' | 'outlined' | 'filled';\n\n// Interactive card props\ninterface InteractiveCardProps extends BaseCardProps {\n hover?: boolean;\n clickable?: boolean;\n}\n\n// Header card props\ninterface HeaderCardProps extends InteractiveCardProps {\n title?: string;\n subtitle?: string;\n description?: string;\n icon?: IconType;\n iconColor?:\n | 'green'\n | 'blue'\n | 'red'\n | 'yellow'\n | 'purple'\n | 'orange'\n | 'gray'\n | 'indigo'\n | 'pink';\n iconSize?: 'sm' | 'md' | 'lg';\n actionButton?: ReactNode;\n headerClassName?: string;\n}\n\n// Accordion card props\ninterface AccordionCardProps extends HeaderCardProps {\n accordion?: boolean;\n defaultExpanded?: boolean;\n onToggle?: (isExpanded: boolean) => void;\n contentClassName?: string;\n}\n\n// Status card props\ninterface StatusCardProps extends HeaderCardProps {\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n statusIcon?: ReactNode;\n statusText?: string;\n}\n\n// Main card component props\ninterface CardProps extends AccordionCardProps, StatusCardProps {\n padding?: CardPadding;\n borderAccent?: BorderAccent;\n variant?: CardVariant;\n overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';\n minHeight?: string;\n maxHeight?: string;\n}\n\n// Padding class mapping\nconst paddingClasses: Record<CardPadding, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n};\n\n// Border accent class mapping\nconst borderAccentClasses: Record<BorderAccent, string> = {\n none: '',\n green: 'border-l-4 border-l-green-500',\n blue: 'border-l-4 border-l-ring',\n red: 'border-l-4 border-l-red-500',\n yellow: 'border-l-4 border-l-yellow-500',\n purple: 'border-l-4 border-l-purple-500',\n orange: 'border-l-4 border-l-orange-500',\n gray: 'border-l-4 border-l-gray-500',\n};\n\n// Variant class mapping\nconst variantClasses: Record<CardVariant, string> = {\n default: 'card',\n elevated: 'card shadow-lg border border-border',\n outlined: 'card rounded-lg border-2 border-border',\n filled: 'bg-muted rounded-lg border border-border',\n};\n\n// Icon color class mapping\nconst iconColorClasses: Record<string, string> = {\n green: 'text-success',\n blue: 'text-primary',\n red: 'text-destructive',\n yellow: 'text-yellow-600',\n purple: 'text-purple-600',\n orange: 'text-orange-600',\n gray: 'text-muted-foreground',\n indigo: 'text-indigo-600',\n pink: 'text-pink-600',\n};\n\n// Icon size class mapping\nconst iconSizeClasses: Record<string, string> = {\n sm: 'w-4 h-4',\n md: 'w-6 h-6',\n lg: 'w-8 h-8',\n};\n\n// Status class mapping\nconst statusClasses: Record<string, string> = {\n success: 'bg-success-light border-success-light',\n warning: 'bg-yellow-50 border-yellow-200',\n error: 'bg-destructive border-destructive',\n info: 'bg-primary border-primary',\n neutral: 'bg-muted border-border',\n};\n\nexport default function Card({\n children,\n className = '',\n onClick,\n disabled = false,\n padding = 'md',\n borderAccent = 'none',\n variant = 'default',\n overflow = 'visible',\n minHeight,\n maxHeight,\n hover = false,\n clickable = false,\n title,\n subtitle,\n description,\n icon: Icon,\n iconColor = 'blue',\n iconSize = 'md',\n actionButton,\n headerClassName = '',\n accordion = false,\n defaultExpanded = true,\n onToggle,\n contentClassName = '',\n status,\n statusIcon,\n statusText,\n}: CardProps) {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n\n // Build base classes\n const baseClasses = [\n variantClasses[variant],\n paddingClasses[padding],\n borderAccentClasses[borderAccent],\n overflow !== 'visible' ? `overflow-${overflow}` : '',\n hover ? 'hover:shadow-md transition-shadow' : '',\n clickable || onClick ? 'cursor-pointer' : '',\n disabled ? 'opacity-50 cursor-not-allowed' : '',\n status ? statusClasses[status] : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build style object for dynamic properties\n const style: React.CSSProperties = {};\n if (minHeight) style.minHeight = minHeight;\n if (maxHeight) style.maxHeight = maxHeight;\n\n const handleClick = () => {\n if (disabled) return;\n onClick?.();\n };\n\n const handleToggle = () => {\n if (accordion) {\n const newExpanded = !isExpanded;\n setIsExpanded(newExpanded);\n onToggle?.(newExpanded);\n }\n };\n\n return (\n <div\n className={`${baseClasses} ${className}`}\n style={style}\n onClick={clickable || onClick ? handleClick : undefined}\n >\n {/* Header Section */}\n {(title || subtitle || description || Icon || actionButton || status) && (\n <div className={`${headerClassName}`}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3 flex-1 min-w-0\">\n {/* Icon */}\n {Icon && (\n <div className={`${iconColorClasses[iconColor]} flex-shrink-0`}>\n <Icon className={iconSizeClasses[iconSize]} />\n </div>\n )}\n\n {/* Status Icon */}\n {statusIcon && <div className=\"flex-shrink-0\">{statusIcon}</div>}\n\n {/* Title and Description */}\n <div className=\"min-w-0 flex-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground truncate\">\n {title}\n </h3>\n )}\n {subtitle && (\n <p className=\"text-sm font-medium text-muted-foreground truncate\">\n {subtitle}\n </p>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground mt-1\">\n {description}\n </p>\n )}\n {statusText && (\n <p className=\"text-xs text-muted-foreground mt-1\">\n {statusText}\n </p>\n )}\n </div>\n </div>\n\n {/* Action Button */}\n {actionButton && (\n <div className=\"flex-shrink-0 ml-4\">{actionButton}</div>\n )}\n\n {/* Accordion Toggle */}\n {accordion && (\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n handleToggle();\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${title || 'content'}`}\n className=\"flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors ml-4\"\n >\n <span className=\"mr-1\">{isExpanded ? 'Hide' : 'Show'}</span>\n <DropDownArrow\n isOpen={isExpanded}\n size=\"sm\"\n color=\"gray\"\n aria-hidden={true}\n />\n </button>\n )}\n </div>\n </div>\n )}\n\n {/* Content Section */}\n <div\n className={`${contentClassName} ${accordion && !isExpanded ? 'hidden' : ''}`}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// Convenience components for common patterns\nexport function SimpleCard({\n children,\n className = '',\n ...props\n}: BaseCardProps) {\n return (\n <Card className={className} {...props}>\n {children}\n </Card>\n );\n}\n\nexport function HeaderCard({\n title,\n subtitle,\n description,\n icon,\n iconColor,\n iconSize,\n actionButton,\n children,\n className = '',\n ...props\n}: HeaderCardProps) {\n return (\n <Card\n title={title}\n subtitle={subtitle}\n description={description}\n icon={icon}\n iconColor={iconColor}\n iconSize={iconSize}\n actionButton={actionButton}\n className={className}\n {...props}\n >\n {children}\n </Card>\n );\n}\n\nexport function StatusCard({\n status,\n statusIcon,\n statusText,\n children,\n className = '',\n ...props\n}: StatusCardProps) {\n return (\n <Card\n status={status}\n statusIcon={statusIcon}\n statusText={statusText}\n className={className}\n {...props}\n >\n {children}\n </Card>\n );\n}\n\nexport function ClickableCard({\n onClick,\n children,\n className = '',\n ...props\n}: InteractiveCardProps) {\n return (\n <Card onClick={onClick} clickable hover className={className} {...props}>\n {children}\n </Card>\n );\n}\n\nexport function AccordionCard({\n accordion = true,\n children,\n className = '',\n ...props\n}: AccordionCardProps) {\n return (\n <Card accordion={accordion} className={className} {...props}>\n {children}\n </Card>\n );\n}\n","'use client';\n\nimport React, { AnchorHTMLAttributes, forwardRef } from 'react';\nimport NextLink from 'next/link';\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n variant?: 'default' | 'primary' | 'muted';\n underline?: boolean;\n external?: boolean;\n}\n\nconst variantClasses: Record<string, string> = {\n default: 'text-foreground hover:text-primary',\n primary: 'text-primary hover:text-primary/80',\n muted: 'text-muted-foreground hover:text-foreground',\n};\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n href,\n variant = 'default',\n underline = false,\n external = false,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const classes = [\n 'transition-colors',\n variantClasses[variant],\n underline ? 'underline underline-offset-4' : 'hover:underline hover:underline-offset-4',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // External links\n if (external || href.startsWith('http')) {\n return (\n <a\n ref={ref}\n href={href}\n className={classes}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...props}\n >\n {children}\n </a>\n );\n }\n\n // Internal Next.js links\n return (\n <NextLink ref={ref} href={href} className={classes} {...props}>\n {children}\n </NextLink>\n );\n }\n);\n\nLink.displayName = 'Link';\n\nexport default Link;\n","'use client';\n\nimport React, { useState } from 'react';\nimport {\n RiEyeLine,\n RiEyeOffLine,\n RiCloseLine,\n RiRefreshLine,\n RiFileCopyLine,\n RiCheckLine,\n} from 'react-icons/ri';\n\n\ntype IconConfig =\n | React.ReactNode\n | { left?: React.ReactNode; right?: React.ReactNode };\n\ninterface FormInputProps {\n label: string;\n name: string;\n type?:\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'checkbox'\n | 'textarea'\n | 'color';\n value: string | number | boolean;\n onChange: (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string | React.ReactNode;\n className?: string;\n inputClassName?: string;\n min?: number;\n max?: number;\n step?: number;\n maxLength?: number;\n autoComplete?: string;\n description?: string | React.ReactNode;\n footerDescription?: string | React.ReactNode;\n autoFocus?: boolean;\n onKeyDown?: (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n onBlur?: (\n e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n // Icon props\n icon?: IconConfig;\n // Textarea-specific props\n rows?: number;\n // Password-specific props\n showHidePassword?: boolean;\n onGeneratePassword?: () => void;\n // Copy to clipboard\n copyable?: boolean;\n // Read-only display (no onChange required)\n readOnly?: boolean;\n // Clearable\n clearable?: boolean;\n}\n\nexport default function FormInput({\n label,\n name,\n type = 'text',\n value,\n onChange,\n placeholder,\n required = false,\n disabled = false,\n error,\n className = '',\n inputClassName = '',\n min,\n max,\n step,\n maxLength,\n autoComplete,\n description,\n footerDescription,\n autoFocus = false,\n onKeyDown,\n onBlur,\n icon,\n rows = 3,\n showHidePassword = false,\n onGeneratePassword,\n copyable = false,\n readOnly = false,\n clearable = true,\n}: FormInputProps) {\n const [showPassword, setShowPassword] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(String(value));\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n };\n\n // Helper function to determine if icons should be shown for this input type\n const shouldShowIcons = (inputType: string) => {\n return inputType !== 'checkbox' && inputType !== 'textarea';\n };\n\n // Helper function to get icon configuration\n const getIconConfig = (\n iconProp: IconConfig | undefined\n ): { left: React.ReactNode; right: React.ReactNode } => {\n if (!iconProp) return { left: null, right: null };\n\n // If it's a React element (like <RiUserLine />), treat it as a left icon\n if (React.isValidElement(iconProp)) {\n return { left: iconProp, right: null };\n }\n\n // If it's an object with left/right properties\n if (\n typeof iconProp === 'object' &&\n iconProp !== null &&\n ('left' in iconProp || 'right' in iconProp)\n ) {\n return { left: iconProp.left || null, right: iconProp.right || null };\n }\n\n // Fallback: treat as left icon (but only if it's a valid ReactNode)\n return {\n left: React.isValidElement(iconProp) ? iconProp : null,\n right: null,\n };\n };\n\n // Helper function to render icon\n const renderIcon = (\n iconNode: React.ReactNode,\n position: 'left' | 'right'\n ) => {\n if (!iconNode) return null;\n\n // For number inputs, move right icons further left to avoid browser arrows\n const rightPositionClass =\n position === 'right' && type === 'number'\n ? 'right-4 pr-3' // Move slightly left for number inputs\n : position === 'right'\n ? 'right-0 pr-3' // Normal position for other inputs\n : 'left-0 pl-3'; // Left position unchanged\n\n return (\n <div\n className={`absolute inset-y-0 ${rightPositionClass} flex items-center pointer-events-none`}\n >\n <div className=\"text-muted-foreground\">{iconNode}</div>\n </div>\n );\n };\n\n // Helper function to get input padding classes based on icons\n const getInputPaddingClasses = (\n inputType: string,\n iconConfig: { left: any; right: any }\n ) => {\n if (!shouldShowIcons(inputType)) return '';\n\n const paddingClasses = [];\n if (iconConfig.left) paddingClasses.push('pl-10');\n if (iconConfig.right) {\n // For number inputs, add extra padding to account for moved icon\n paddingClasses.push(inputType === 'number' ? 'pr-12' : 'pr-10');\n }\n\n return paddingClasses.join(' ');\n };\n\n return (\n <div className={`form-group ${className}`}>\n {type === 'checkbox' ? (\n <div className=\"flex items-center p-2 space-x-3 h-full\">\n {/* Visually hidden but accessible checkbox for form submission and accessibility */}\n <input\n id={name}\n name={name}\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={e => {\n // Update the visual state immediately\n const newValue = e.target.checked;\n // Create a synthetic event that matches what the parent expects\n const syntheticEvent = {\n target: {\n name: e.target.name,\n value: newValue,\n checked: newValue,\n },\n currentTarget: {\n name: e.target.name,\n value: newValue,\n checked: newValue,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }}\n required={required}\n disabled={disabled}\n onKeyDown={onKeyDown}\n className=\"sr-only\"\n aria-label={label}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n aria-invalid={error ? 'true' : 'false'}\n />\n\n {/* Custom toggle switch */}\n <button\n type=\"button\"\n onClick={() => {\n if (!disabled) {\n // Trigger the hidden checkbox instead of creating synthetic event\n const checkbox = document.getElementById(\n name\n ) as HTMLInputElement;\n if (checkbox) {\n checkbox.click();\n }\n }\n }}\n disabled={disabled}\n className={`\n relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\n ${Boolean(value) ? 'bg-primary' : 'bg-muted'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n ${error ? 'ring-2 ring-destructive' : ''}\n `}\n aria-label={`${label}${required ? ' (required)' : ''}`}\n aria-describedby={name}\n >\n <span\n className={`\n inline-block h-4 w-4 transform rounded-full bg-background border border-border transition duration-200 ease-in-out\n ${Boolean(value) ? 'translate-x-6' : 'translate-x-1'}\n `}\n />\n </button>\n\n {/* Label and description inline */}\n <div className=\"flex flex-col\">\n <label\n htmlFor={name}\n className=\"text-sm font-medium text-foreground cursor-pointer\"\n onClick={() => {\n if (!disabled) {\n // Trigger the hidden checkbox when label is clicked\n const checkbox = document.getElementById(\n name\n ) as HTMLInputElement;\n if (checkbox) {\n checkbox.click();\n }\n }\n }}\n >\n {label}\n {required && (\n <span className=\"text-destructive ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </label>\n {description && (\n <span\n id={`${name}-description`}\n className=\"text-xs text-muted-foreground\"\n >\n {description}\n </span>\n )}\n </div>\n\n {error && (\n <div id={`${name}-error`} className=\"form-error\" role=\"alert\">\n {typeof error === 'string' ? <p>{error}</p> : error}\n </div>\n )}\n </div>\n ) : (\n <>\n {label && (\n <label htmlFor={name} className=\"form-label\">\n {label}\n {required && <span className=\"form-label-required\">*</span>}\n </label>\n )}\n {description && (\n <p id={`${name}-description`} className=\"form-description\">\n {description}\n </p>\n )}\n {type === 'textarea' ? (\n <textarea\n id={name}\n name={name}\n value={value as string}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n rows={rows}\n maxLength={maxLength}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${inputClassName}`}\n />\n ) : type === 'color' ? (\n <div className=\"flex items-center space-x-3\">\n <div className=\"relative w-10 h-10 border border-input rounded-md overflow-hidden bg-card\">\n <input\n id={name}\n name={name}\n type=\"color\"\n value={value as string}\n onChange={onChange}\n required={required}\n disabled={disabled}\n className=\"absolute inset-0 w-full h-full cursor-pointer opacity-0\"\n />\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: value as string }}\n />\n </div>\n\n <div className=\"relative\">\n <input\n id={`${name}-text`}\n name={`${name}-text`}\n type=\"text\"\n value={value as string}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n className={`form-input max-w-24 ${error ? 'form-input-error' : ''} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n aria-label={`${label} text input`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n </div>\n </div>\n ) : showHidePassword && type === 'password' ? (\n <div className=\"relative\">\n <input\n id={name}\n name={name}\n type={showPassword ? 'text' : 'password'}\n value={value as string | number}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${readOnly ? 'bg-muted cursor-default' : ''} ${copyable ? 'pr-20' : 'pr-10'} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n {/* Copy button for password */}\n {copyable && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute inset-y-0 right-8 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10\"\n aria-label={`Copy ${label}`}\n title={copied ? 'Copied!' : `Copy ${label}`}\n >\n {copied ? (\n <RiCheckLine className=\"w-4 h-4 text-green-500\" aria-hidden=\"true\" />\n ) : (\n <RiFileCopyLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n title={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <RiEyeOffLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n ) : (\n <RiEyeLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n {onGeneratePassword && !readOnly && (\n <button\n type=\"button\"\n onClick={onGeneratePassword}\n className={`absolute inset-y-0 ${copyable ? 'right-16' : 'right-8'} flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10`}\n aria-label=\"Generate new password\"\n title=\"Generate new password\"\n >\n <RiRefreshLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n ) : (\n <div className=\"relative group\">\n <input\n id={name}\n name={name}\n type={type}\n value={value as string | number}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${readOnly ? 'bg-muted cursor-default' : ''} ${copyable ? 'pr-10' : ''} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n {/* Copy button */}\n {copyable && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className={`absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-all duration-200 z-10`}\n aria-label={`Copy ${label}`}\n title={copied ? 'Copied!' : `Copy ${label}`}\n >\n {copied ? (\n <RiCheckLine className=\"w-4 h-4 text-green-500\" aria-hidden=\"true\" />\n ) : (\n <RiFileCopyLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n {/* Clear button for text inputs */}\n {clearable && !copyable && value !== '' && value !== null && value !== undefined && !disabled && !readOnly && (\n <button\n type=\"button\"\n onClick={() => {\n const syntheticEvent = {\n target: { name, value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }}\n className={`absolute inset-y-0 ${type === 'number' ? 'right-4' : 'right-0'} flex items-center pr-3 text-muted-foreground hover:text-muted-foreground transition-all duration-200 z-10 opacity-0 group-hover:opacity-100`}\n aria-label={`Clear ${label}`}\n title={`Clear ${label}`}\n >\n <RiCloseLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n )}\n {footerDescription && (\n <p className=\"text-xs mt-1\">{footerDescription}</p>\n )}\n {error && (\n <div id={`${name}-error`} className=\"form-error\" role=\"alert\">\n {typeof error === 'string' ? <p>{error}</p> : error}\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\n\ninterface SwitchProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n label?: string;\n description?: string;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport default function Switch({\n checked,\n onChange,\n disabled = false,\n label,\n description,\n className = '',\n size = 'md',\n}: SwitchProps) {\n const toggle = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n const sizes = {\n sm: { track: 'w-8 h-4', thumb: 'w-3 h-3', translate: 'translate-x-4' },\n md: { track: 'w-11 h-6', thumb: 'w-5 h-5', translate: 'translate-x-5' },\n lg: { track: 'w-14 h-8', thumb: 'w-7 h-7', translate: 'translate-x-6' },\n };\n\n const currentSize = sizes[size];\n\n return (\n <div className={`flex items-start ${className}`}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={toggle}\n className={`\n relative inline-flex flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent \n transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\n ${checked ? 'bg-primary' : 'bg-muted'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${currentSize.track}\n `}\n >\n <span\n aria-hidden=\"true\"\n className={`\n pointer-events-none inline-block transform rounded-full bg-white shadow ring-0 \n transition duration-200 ease-in-out\n ${checked ? currentSize.translate : 'translate-x-0'}\n ${currentSize.thumb}\n `}\n />\n </button>\n {(label || description) && (\n <div className=\"ml-3 text-sm leading-6\">\n {label && (\n <label className=\"font-medium text-foreground cursor-pointer\" onClick={toggle}>\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, ReactNode, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { motion, AnimatePresence, Variants } from 'framer-motion';\nimport { RiCloseLine } from 'react-icons/ri';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n header?: ReactNode;\n blocking?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n className?: string;\n footer?: ReactNode;\n fullScreen?: boolean;\n noPadding?: boolean;\n footerBg?: 'white' | 'gray';\n variant?: 'default' | 'plain';\n scrollable?: boolean;\n 'aria-describedby'?: string;\n customStyles?: {\n container?: string;\n backdrop?: string;\n content?: string;\n header?: string;\n footer?: string;\n };\n}\n\nconst sizeClasses = {\n sm: 'max-w-md',\n md: 'max-w-2xl',\n lg: 'max-w-4xl',\n xl: 'max-w-6xl',\n full: 'max-w-full mx-4',\n};\n\nexport default function Modal({\n isOpen,\n onClose,\n children,\n title,\n header,\n blocking = false,\n size = 'md',\n className = '',\n footer,\n fullScreen = false,\n noPadding = false,\n footerBg = 'gray',\n variant = 'default',\n scrollable = true,\n 'aria-describedby': ariaDescribedBy,\n customStyles = {},\n}: ModalProps) {\n const modalContentRef = useRef<HTMLDivElement>(null);\n const previousActiveElementRef = useRef<HTMLElement | null>(null);\n const hasPerformedInitialFocusRef = useRef(false);\n\n // Get all focusable elements within modal\n const getFocusableElements = (): HTMLElement[] => {\n if (!modalContentRef.current) return [];\n\n const focusableSelectors = [\n 'button:not([disabled])',\n 'a[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n\n return Array.from(\n modalContentRef.current.querySelectorAll<HTMLElement>(focusableSelectors)\n );\n };\n\n // Focus management\n useEffect(() => {\n if (!isOpen) {\n // Reset the flag when modal closes\n hasPerformedInitialFocusRef.current = false;\n return;\n }\n\n // Store the previously active element only on first open\n if (!hasPerformedInitialFocusRef.current) {\n previousActiveElementRef.current = document.activeElement as HTMLElement;\n }\n\n let timeoutId: NodeJS.Timeout | null = null;\n\n // Only auto-focus the first element on initial open, not on every render\n if (!hasPerformedInitialFocusRef.current) {\n // Focus first focusable element in modal\n const focusableElements = getFocusableElements();\n const firstFocusable = focusableElements[0];\n\n // Small delay to ensure modal is rendered\n timeoutId = setTimeout(() => {\n // Only auto-focus if user is not currently typing in an input\n const activeElement = document.activeElement;\n const isHTMLElement = activeElement instanceof HTMLElement;\n const isUserTyping = activeElement && (\n activeElement.tagName === 'INPUT' ||\n activeElement.tagName === 'TEXTAREA' ||\n (isHTMLElement && activeElement.isContentEditable)\n );\n\n // Only focus if:\n // 1. User is not typing\n // 2. Current focus is not already inside the modal\n const isFocusInModal = modalContentRef.current?.contains(activeElement);\n if (!isUserTyping && !isFocusInModal) {\n if (firstFocusable) {\n firstFocusable.focus();\n hasPerformedInitialFocusRef.current = true;\n } else if (modalContentRef.current) {\n // If no focusable elements, focus the modal itself\n modalContentRef.current.focus();\n hasPerformedInitialFocusRef.current = true;\n }\n } else if (isFocusInModal) {\n // Focus is already in modal, mark as done\n hasPerformedInitialFocusRef.current = true;\n }\n }, 100);\n }\n\n // Handle Tab key for focus trapping\n const handleTab = (event: KeyboardEvent) => {\n if (event.key !== 'Tab') return;\n\n const focusableElements = getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n };\n\n // Handle ESC key press\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && !blocking) {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleTab);\n document.addEventListener('keydown', handleEsc);\n // Prevent body scroll when modal is open\n document.body.style.overflow = 'hidden';\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n document.removeEventListener('keydown', handleTab);\n document.removeEventListener('keydown', handleEsc);\n document.body.style.overflow = 'unset';\n\n // Restore focus to previously active element only on close\n if (!isOpen && previousActiveElementRef.current) {\n previousActiveElementRef.current.focus();\n }\n };\n }, [isOpen, onClose, blocking]);\n\n // Get the existing modal root from layout, or create one if it doesn't exist\n const modalRoot = (() => {\n if (typeof document === 'undefined') return null;\n\n let root = document.getElementById('modal-root');\n if (!root) {\n // Create modal root if it doesn't exist\n root = document.createElement('div');\n root.id = 'modal-root';\n document.body.appendChild(root);\n }\n return root;\n })();\n\n if (!modalRoot) {\n return null;\n }\n\n // Animation variants\n const backdropVariants: Variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n };\n\n const modalVariants: Variants = {\n hidden: {\n opacity: 0,\n scale: 0.95,\n y: 20,\n },\n visible: {\n opacity: 1,\n scale: 1,\n y: 0,\n transition: {\n duration: 0.2,\n ease: 'easeOut',\n },\n },\n exit: {\n opacity: 0,\n scale: 0.9,\n y: 100, // Slide down much further for reverse effect\n transition: {\n duration: 0.3,\n ease: 'easeIn',\n },\n },\n };\n\n if (!isOpen) return null;\n\n // Plain variant renders as interstitial with internal controls\n if (variant === 'plain') {\n return createPortal(\n <AnimatePresence>\n <motion.div\n key=\"modal-backdrop\"\n className={`modal-backdrop fixed inset-0 w-screen h-screen flex items-center ${customStyles.backdrop?.includes('justify-')\n ? customStyles.backdrop\n : customStyles.backdrop\n ? `${customStyles.backdrop} justify-center`\n : 'justify-center bg-black/10'\n } z-[999999] m-0 ${fullScreen ? 'p-0' : 'p-4'}`}\n variants={backdropVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'hidden'}\n exit=\"hidden\"\n onClick={blocking ? undefined : onClose}\n >\n <motion.div\n key=\"modal-content\"\n ref={modalContentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title-plain' : undefined}\n aria-describedby={ariaDescribedBy || 'modal-content-plain'}\n tabIndex={-1}\n className={`w-full flex flex-col overflow-hidden relative z-[1000000] ${customStyles.container || 'bg-card shadow-xl'\n } ${fullScreen\n ? 'h-full rounded-none'\n : `rounded-lg ${className} ${sizeClasses[size]} max-h-[90vh]`\n }`}\n variants={modalVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'exit'}\n exit=\"exit\"\n onClick={e => e.stopPropagation()}\n >\n {/* Content with internal controls */}\n <div\n id=\"modal-content-plain\"\n className={`flex-1 ${customStyles.content || ''}`}\n >\n {children}\n </div>\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n modalRoot\n );\n }\n\n // Default variant with header/footer structure\n return createPortal(\n <AnimatePresence>\n <motion.div\n key=\"modal-backdrop\"\n className={`modal-backdrop fixed inset-0 w-screen h-screen bg-black/10 flex items-center ${customStyles.backdrop || 'justify-center'\n } z-[999999] m-0 ${fullScreen ? 'p-0' : 'p-4'}`}\n variants={backdropVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'hidden'}\n exit=\"hidden\"\n onClick={blocking ? undefined : onClose}\n >\n <motion.div\n key=\"modal-content\"\n ref={modalContentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n aria-describedby={ariaDescribedBy || 'modal-content'}\n tabIndex={-1}\n className={`bg-card border border-border shadow-xl w-full flex flex-col overflow-hidden relative z-[1000000] ${fullScreen\n ? 'h-full rounded-none'\n : `rounded-lg ${customStyles.container || className || sizeClasses[size]} max-h-[90vh]`\n }`}\n variants={modalVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'exit'}\n exit=\"exit\"\n onClick={e => e.stopPropagation()}\n >\n {/* Fixed Header */}\n {header ? (\n <div className=\"flex-shrink-0\">{header}</div>\n ) : title ? (\n <div\n className={`px-6 py-4 border-b border-border flex justify-between items-center flex-shrink-0 ${customStyles.header || ''}`}\n >\n <h2\n id=\"modal-title\"\n className=\"text-xl font-semibold text-foreground\"\n >\n {title}\n </h2>\n <button\n onClick={onClose}\n className=\"p-2 text-muted-foreground hover:text-foreground hover:bg-muted rounded-full transition-colors\"\n title=\"Close\"\n aria-label=\"Close modal\"\n disabled={blocking}\n >\n <RiCloseLine className=\"w-5 h-5\" aria-hidden=\"true\" />\n </button>\n </div>\n ) : null}\n\n {/* Scrollable Content */}\n <div\n id=\"modal-content\"\n className={`bg-background text-foreground flex-1 ${scrollable ? 'overflow-y-auto' : ''} ${fullScreen || noPadding ? 'p-0' : 'px-6 py-4'}`}\n >\n {children}\n </div>\n\n {/* Sticky Footer */}\n {footer && (\n <div\n className={`flex-shrink-0 px-6 py-4 border-t border-border ${footerBg === 'white' ? 'bg-card' : 'bg-muted'} ${customStyles.footer || ''}`}\n >\n {footer}\n </div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n modalRoot\n );\n}\n","'use client';\n\ninterface LoadingSpinnerProps {\n message?: string;\n className?: string;\n showMessage?: boolean;\n}\n\nconst LoadingSpinner = ({\n message = 'Initializing...',\n className,\n showMessage = false,\n}: LoadingSpinnerProps) => {\n // Use provided className or default to full viewport height container with centering\n const containerClasses =\n className !== undefined\n ? className\n : 'flex items-center justify-center h-screen min-h-screen';\n\n return (\n <div\n className={containerClasses}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message}\n >\n <div className=\"text-center\">\n {/* Scale loader */}\n <div\n className=\"flex items-center justify-center space-x-2 mb-6\"\n aria-hidden=\"true\"\n >\n <div className=\"w-1.5 h-12 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0s]\"></div>\n <div className=\"w-1.5 h-8 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.2s]\"></div>\n <div className=\"w-1.5 h-8 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.4s]\"></div>\n <div className=\"w-1.5 h-12 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.6s]\"></div>\n </div>\n\n {/* Loading text */}\n {showMessage && (\n <div className=\"space-y-2\">\n <p\n className=\"text-sm text-secondary-foreground animate-pulse\"\n aria-live=\"polite\"\n >\n {message}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default LoadingSpinner;\n","import React from 'react';\nimport { IconType } from 'react-icons';\n\ninterface PageHeaderProps {\n icon?: IconType;\n title: string;\n subtitle?: string;\n rightContent?: React.ReactNode;\n className?: string;\n}\n\nexport default function PageHeader({\n icon: Icon,\n title,\n subtitle,\n rightContent,\n className = '',\n}: PageHeaderProps) {\n return (\n <div className={`mb-6 lg:mb-8 ${className}`}>\n <div className=\"header-layout\">\n <div className=\"flex items-center space-x-3\">\n {Icon && <Icon className=\"w-6 h-6 lg:w-8 lg:h-8 flex-shrink-0\" />}\n <div className=\"min-w-0\">\n <h1 className=\"text-xl lg:text-3xl font-bold text-foreground truncate\">\n {title}\n </h1>\n {subtitle && (\n <p className=\"text-sm lg:text-base text-muted-foreground\">\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {rightContent && (\n <div className=\"flex items-center space-x-2 lg:space-x-3 flex-shrink-0\">\n {rightContent}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import React, { ReactNode } from 'react';\n\ninterface FormSectionProps {\n title: string;\n description?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport default function FormSection({\n title,\n description,\n children,\n className = '',\n}: FormSectionProps) {\n return (\n <div className={`space-y-4 ${className}`}>\n <div>\n <h3 className=\"text-lg font-medium \">{title}</h3>\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n}\n","import React from 'react';\n\ninterface GridProps {\n children: React.ReactNode;\n cols?: 1 | 2 | 3 | 4 | 5 | 6 | 12;\n gap?: 1 | 2 | 3 | 4 | 6 | 8;\n className?: string;\n}\n\nexport default function Grid({\n children,\n cols = 1,\n gap = 4,\n className = '',\n}: GridProps) {\n const colClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n 12: 'grid-cols-12',\n };\n\n const gapClasses = {\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n 6: 'gap-6',\n 8: 'gap-8',\n };\n\n return (\n <div className={`grid ${colClasses[cols]} ${gapClasses[gap]} ${className}`}>\n {children}\n </div>\n );\n}\n\nexport function GridItem({\n children,\n span = 1,\n className = '',\n}: {\n children: React.ReactNode;\n span?: number;\n className?: string;\n}) {\n return (\n <div className={`col-span-${span} ${className}`}>\n {children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/Badge.tsx","../src/Button.tsx","../src/DropDown.tsx","../src/Card.tsx","../src/Modal.tsx","../src/ConfirmDialog.tsx","../src/Container.tsx","../src/EmptyState.tsx","../src/useKeyboardNavigation.ts","../src/SmartDropdown.tsx","../src/Skeleton.tsx","../src/FormInput.tsx","../src/FormSection.tsx","../src/Grid.tsx","../src/InfoBox.tsx","../src/Link.tsx","../src/LoadingSpinner.tsx","../src/PageHeader.tsx","../src/Switch.tsx","../src/Typography.tsx","../src/Spinner.tsx","../src/DataTable.tsx","../src/SharedTooltip.tsx","../src/CountBadge.tsx","../src/ClearButton.tsx","../src/IconButtonWithCount.tsx","../src/buttons/ActionButton.tsx","../src/SearchCard.tsx","../src/ViewToggle.tsx","../src/index.ts"],"names":["variantClasses","sizeClasses","jsx","jsxs","useState","paddingClasses","useRef","useCallback","useEffect","createPortal","RiCloseLine","_","React","Fragment","RiCheckLine","forwardRef","colorClasses","iconSizeClasses","RiEyeLine","RiFileCopyLine","Link","RiRefreshLine"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client';\n\nimport React from 'react';\n\nexport type BadgeVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'gray'\n | 'purple'\n | 'pink'\n | 'indigo'\n | 'yellow'\n | 'orange'\n | 'teal'\n | 'cyan'\n | 'lime'\n | 'emerald'\n | 'rose'\n | 'sky'\n | 'violet'\n | 'fuchsia'\n | 'amber'\n | 'custom';\n\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\ninterface BadgeProps {\n children: React.ReactNode;\n variant?: BadgeVariant;\n size?: BadgeSize;\n className?: string;\n customColors?: {\n background: string;\n text: string;\n border?: string;\n };\n}\n\nconst badgeVariants: Record<Exclude<BadgeVariant, 'custom'>, string> = {\n default: 'bg-gray-100 text-foreground border-border',\n primary: 'bg-primary-100 text-primary-800 border-primary-200',\n secondary: 'bg-gray-100 text-foreground border-border',\n success: 'bg-success text-success-dark border-success-light',\n warning: 'bg-yellow-100 text-yellow-800 border-yellow-200',\n error: 'bg-red-100 text-red-800 border-red-200',\n info: 'bg-muted text-muted-foreground border-ring',\n gray: 'bg-gray-100 text-foreground border-border',\n purple: 'bg-purple-100 text-purple-800 border-purple-200',\n pink: 'bg-pink-100 text-pink-800 border-pink-200',\n indigo: 'bg-indigo-100 text-indigo-800 border-indigo-200',\n yellow: 'bg-yellow-100 text-yellow-800 border-yellow-200',\n orange: 'bg-orange-100 text-orange-800 border-orange-200',\n teal: 'bg-teal-100 text-teal-800 border-teal-200',\n cyan: 'bg-cyan-100 text-cyan-800 border-cyan-200',\n lime: 'bg-lime-100 text-lime-800 border-lime-200',\n emerald: 'bg-emerald-100 text-emerald-800 border-emerald-200',\n rose: 'bg-rose-100 text-rose-800 border-rose-200',\n sky: 'bg-sky-100 text-sky-800 border-sky-200',\n violet: 'bg-violet-100 text-violet-800 border-violet-200',\n fuchsia: 'bg-fuchsia-100 text-fuchsia-800 border-fuchsia-200',\n amber: 'bg-amber-100 text-amber-800 border-amber-200',\n};\n\nconst badgeSizes: Record<BadgeSize, string> = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs',\n lg: 'px-3 py-1 text-sm',\n};\n\nexport default function Badge({\n children,\n variant = 'default',\n size = 'md',\n className = '',\n customColors,\n}: BadgeProps) {\n const baseClasses =\n 'inline-flex items-center font-medium rounded-full border';\n\n const variantClasses = variant === 'custom' ? '' : badgeVariants[variant];\n\n const sizeClasses = badgeSizes[size];\n\n const customStyles =\n variant === 'custom' && customColors\n ? {\n backgroundColor: customColors.background,\n color: customColors.text,\n borderColor: customColors.border || customColors.background,\n }\n : {};\n\n return (\n <span\n className={`${baseClasses} ${variantClasses} ${sizeClasses} ${className}`}\n style={customStyles}\n >\n {children}\n </span>\n );\n}\n\n// Convenience components for common variants\nexport const SuccessBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"success\" />\n);\n\nexport const WarningBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"warning\" />\n);\n\nexport const ErrorBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"error\" />\n);\n\nexport const InfoBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"info\" />\n);\n\nexport const PrimaryBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"primary\" />\n);\n\nexport const GrayBadge = (props: Omit<BadgeProps, 'variant'>) => (\n <Badge {...props} variant=\"gray\" />\n);\n\n// Status badge component for common use cases\nexport function StatusBadge({\n isActive,\n activeText = 'Active',\n inactiveText = 'Inactive',\n ...props\n}: {\n isActive: boolean;\n activeText?: string;\n inactiveText?: string;\n} & Omit<BadgeProps, 'children' | 'variant'>) {\n return (\n <Badge {...props} variant={isActive ? 'success' : 'error'}>\n {isActive ? activeText : inactiveText}\n </Badge>\n );\n}\n","'use client';\n\nimport React, { ButtonHTMLAttributes, forwardRef } from 'react';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'danger' | 'ghost' | 'link' | 'outline';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n isLoading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n}\n\nconst variantClasses: Record<ButtonVariant, string> = {\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 border-transparent',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent',\n destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90 border-transparent',\n danger: 'bg-red-600 text-white hover:bg-red-700 border-transparent',\n ghost: 'bg-transparent hover:bg-muted hover:text-foreground border-transparent',\n link: 'bg-transparent text-primary underline-offset-4 hover:underline border-transparent p-0',\n outline: 'bg-transparent border-border hover:bg-muted hover:text-foreground',\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-sm',\n lg: 'px-6 py-3 text-base',\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n isLoading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n className = '',\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses =\n 'inline-flex items-center justify-center gap-2 font-medium rounded-md border transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';\n\n const classes = [\n baseClasses,\n variantClasses[variant],\n variant !== 'link' ? sizeClasses[size] : '',\n fullWidth ? 'w-full' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading && (\n <svg\n className=\"animate-spin h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n )}\n {!isLoading && leftIcon && <span className=\"flex-shrink-0\">{leftIcon}</span>}\n {children}\n {!isLoading && rightIcon && <span className=\"flex-shrink-0\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n\nexport default Button;\n","'use client';\n\nimport { RiArrowDownSLine } from 'react-icons/ri';\n\ntype Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2' | '3' | '4' | '5' | '6';\n\ninterface DropDownArrowProps {\n isOpen: boolean;\n disabled?: boolean;\n size?: Size;\n color?: 'default' | 'gray' | 'primary' | 'secondary';\n className?: string;\n 'aria-hidden'?: boolean;\n}\n\nconst sizeClasses: Record<Size, string> = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-8 h-8',\n '2': 'w-2 h-2',\n '3': 'w-3 h-3',\n '4': 'w-4 h-4',\n '5': 'w-5 h-5',\n '6': 'w-6 h-6',\n};\n\nconst colorClasses = {\n default: 'text-muted-foreground hover:text-muted-foreground',\n gray: 'text-muted-foreground hover:text-muted-foreground',\n primary: 'text-ring hover:text-primary-foreground',\n secondary: 'text-secondary-foreground hover:text-foreground',\n};\n\nexport function DropDownArrow({\n isOpen,\n disabled = false,\n size = 'sm',\n color = 'default',\n className = '',\n 'aria-hidden': ariaHidden,\n}: DropDownArrowProps) {\n const baseClasses = `${sizeClasses[size]} flex-shrink-0 transition-transform`;\n const rotationClasses = isOpen ? 'rotate-180' : '';\n const colorClassesApplied = disabled\n ? 'text-muted-foreground'\n : colorClasses[color];\n const combinedClasses =\n `${baseClasses} ${rotationClasses} ${colorClassesApplied} ${className}`.trim();\n\n return (\n <RiArrowDownSLine className={combinedClasses} aria-hidden={ariaHidden} />\n );\n}\n","'use client';\n\nimport React, { ReactNode, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { DropDownArrow } from './DropDown';\n\n// Base card props\ninterface BaseCardProps {\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n disabled?: boolean;\n}\n\n// Padding variants\ntype CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\n// Border accent variants\ntype BorderAccent =\n | 'none'\n | 'green'\n | 'blue'\n | 'red'\n | 'yellow'\n | 'purple'\n | 'orange'\n | 'gray';\n\n// Card variants\ntype CardVariant = 'default' | 'elevated' | 'outlined' | 'filled';\n\n// Interactive card props\ninterface InteractiveCardProps extends BaseCardProps {\n hover?: boolean;\n clickable?: boolean;\n}\n\n// Header card props\ninterface HeaderCardProps extends InteractiveCardProps {\n title?: string;\n subtitle?: string;\n description?: string;\n icon?: IconType;\n iconColor?:\n | 'green'\n | 'blue'\n | 'red'\n | 'yellow'\n | 'purple'\n | 'orange'\n | 'gray'\n | 'indigo'\n | 'pink';\n iconSize?: 'sm' | 'md' | 'lg';\n actionButton?: ReactNode;\n headerClassName?: string;\n}\n\n// Accordion card props\ninterface AccordionCardProps extends HeaderCardProps {\n accordion?: boolean;\n defaultExpanded?: boolean;\n onToggle?: (isExpanded: boolean) => void;\n contentClassName?: string;\n}\n\n// Status card props\ninterface StatusCardProps extends HeaderCardProps {\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n statusIcon?: ReactNode;\n statusText?: string;\n}\n\n// Main card component props\ninterface CardProps extends AccordionCardProps, StatusCardProps {\n padding?: CardPadding;\n borderAccent?: BorderAccent;\n variant?: CardVariant;\n overflow?: 'visible' | 'hidden' | 'scroll' | 'auto';\n minHeight?: string;\n maxHeight?: string;\n id?: string;\n}\n\n// Padding class mapping\nconst paddingClasses: Record<CardPadding, string> = {\n none: '',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n};\n\n// Border accent class mapping\nconst borderAccentClasses: Record<BorderAccent, string> = {\n none: '',\n green: 'border-l-4 border-l-green-500',\n blue: 'border-l-4 border-l-ring',\n red: 'border-l-4 border-l-red-500',\n yellow: 'border-l-4 border-l-yellow-500',\n purple: 'border-l-4 border-l-purple-500',\n orange: 'border-l-4 border-l-orange-500',\n gray: 'border-l-4 border-l-gray-500',\n};\n\n// Variant class mapping\nconst variantClasses: Record<CardVariant, string> = {\n default: 'card',\n elevated: 'card shadow-lg border border-border',\n outlined: 'card rounded-lg border-2 border-border',\n filled: 'bg-muted rounded-lg border border-border',\n};\n\n// Icon color class mapping\nconst iconColorClasses: Record<string, string> = {\n green: 'text-success',\n blue: 'text-primary',\n red: 'text-destructive',\n yellow: 'text-yellow-600',\n purple: 'text-purple-600',\n orange: 'text-orange-600',\n gray: 'text-muted-foreground',\n indigo: 'text-indigo-600',\n pink: 'text-pink-600',\n};\n\n// Icon size class mapping\nconst iconSizeClasses: Record<string, string> = {\n sm: 'w-4 h-4',\n md: 'w-6 h-6',\n lg: 'w-8 h-8',\n};\n\n// Status class mapping\nconst statusClasses: Record<string, string> = {\n success: 'bg-success-light border-success-light',\n warning: 'bg-yellow-50 border-yellow-200',\n error: 'bg-destructive border-destructive',\n info: 'bg-primary border-primary',\n neutral: 'bg-muted border-border',\n};\n\nexport default function Card({\n children,\n className = '',\n onClick,\n disabled = false,\n padding = 'md',\n borderAccent = 'none',\n variant = 'default',\n overflow = 'visible',\n minHeight,\n maxHeight,\n hover = false,\n clickable = false,\n title,\n subtitle,\n description,\n icon: Icon,\n iconColor = 'blue',\n iconSize = 'md',\n actionButton,\n headerClassName = '',\n accordion = false,\n defaultExpanded = true,\n onToggle,\n contentClassName = '',\n status,\n statusIcon,\n statusText,\n id,\n}: CardProps) {\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n\n // Build base classes\n const baseClasses = [\n variantClasses[variant],\n paddingClasses[padding],\n borderAccentClasses[borderAccent],\n overflow !== 'visible' ? `overflow-${overflow}` : '',\n hover ? 'hover:shadow-md transition-shadow' : '',\n clickable || onClick ? 'cursor-pointer' : '',\n disabled ? 'opacity-50 cursor-not-allowed' : '',\n status ? statusClasses[status] : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n // Build style object for dynamic properties\n const style: React.CSSProperties = {};\n if (minHeight) style.minHeight = minHeight;\n if (maxHeight) style.maxHeight = maxHeight;\n\n const handleClick = () => {\n if (disabled) return;\n onClick?.();\n };\n\n const handleToggle = () => {\n if (accordion) {\n const newExpanded = !isExpanded;\n setIsExpanded(newExpanded);\n onToggle?.(newExpanded);\n }\n };\n\n return (\n <div\n id={id}\n className={`${baseClasses} ${className}`}\n style={style}\n onClick={clickable || onClick ? handleClick : undefined}\n >\n {/* Header Section */}\n {(title || subtitle || description || Icon || actionButton || status) && (\n <div className={`${headerClassName}`}>\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3 flex-1 min-w-0\">\n {/* Icon */}\n {Icon && (\n <div className={`${iconColorClasses[iconColor]} flex-shrink-0`}>\n <Icon className={iconSizeClasses[iconSize]} />\n </div>\n )}\n\n {/* Status Icon */}\n {statusIcon && <div className=\"flex-shrink-0\">{statusIcon}</div>}\n\n {/* Title and Description */}\n <div className=\"min-w-0 flex-1\">\n {title && (\n <h3 className=\"text-lg font-semibold text-foreground truncate\">\n {title}\n </h3>\n )}\n {subtitle && (\n <p className=\"text-sm font-medium text-muted-foreground truncate\">\n {subtitle}\n </p>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground mt-1\">\n {description}\n </p>\n )}\n {statusText && (\n <p className=\"text-xs text-muted-foreground mt-1\">\n {statusText}\n </p>\n )}\n </div>\n </div>\n\n {/* Action Button */}\n {actionButton && (\n <div className=\"flex-shrink-0 ml-4\">{actionButton}</div>\n )}\n\n {/* Accordion Toggle */}\n {accordion && (\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n handleToggle();\n }}\n aria-expanded={isExpanded}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${title || 'content'}`}\n className=\"flex items-center text-sm text-muted-foreground hover:text-foreground transition-colors ml-4\"\n >\n <span className=\"mr-1\">{isExpanded ? 'Hide' : 'Show'}</span>\n <DropDownArrow\n isOpen={isExpanded}\n size=\"sm\"\n color=\"gray\"\n aria-hidden={true}\n />\n </button>\n )}\n </div>\n </div>\n )}\n\n {/* Content Section */}\n <div\n className={`${contentClassName} ${accordion && !isExpanded ? 'hidden' : ''}`}\n >\n {children}\n </div>\n </div>\n );\n}\n\n// Convenience components for common patterns\nexport function SimpleCard({\n children,\n className = '',\n ...props\n}: BaseCardProps) {\n return (\n <Card className={className} {...props}>\n {children}\n </Card>\n );\n}\n\nexport function HeaderCard({\n title,\n subtitle,\n description,\n icon,\n iconColor,\n iconSize,\n actionButton,\n children,\n className = '',\n ...props\n}: HeaderCardProps) {\n return (\n <Card\n title={title}\n subtitle={subtitle}\n description={description}\n icon={icon}\n iconColor={iconColor}\n iconSize={iconSize}\n actionButton={actionButton}\n className={className}\n {...props}\n >\n {children}\n </Card>\n );\n}\n\nexport function StatusCard({\n status,\n statusIcon,\n statusText,\n children,\n className = '',\n ...props\n}: StatusCardProps) {\n return (\n <Card\n status={status}\n statusIcon={statusIcon}\n statusText={statusText}\n className={className}\n {...props}\n >\n {children}\n </Card>\n );\n}\n\nexport function ClickableCard({\n onClick,\n children,\n className = '',\n ...props\n}: InteractiveCardProps) {\n return (\n <Card onClick={onClick} clickable hover className={className} {...props}>\n {children}\n </Card>\n );\n}\n\nexport function AccordionCard({\n accordion = true,\n children,\n className = '',\n ...props\n}: AccordionCardProps) {\n return (\n <Card accordion={accordion} className={className} {...props}>\n {children}\n </Card>\n );\n}\n","'use client';\n\nimport { useEffect, ReactNode, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { motion, AnimatePresence, Variants } from 'framer-motion';\nimport { RiCloseLine } from 'react-icons/ri';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n title?: string;\n header?: ReactNode;\n blocking?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n className?: string;\n footer?: ReactNode;\n fullScreen?: boolean;\n noPadding?: boolean;\n footerBg?: 'white' | 'gray';\n variant?: 'default' | 'plain';\n scrollable?: boolean;\n 'aria-describedby'?: string;\n customStyles?: {\n container?: string;\n backdrop?: string;\n content?: string;\n header?: string;\n footer?: string;\n };\n}\n\nconst sizeClasses = {\n sm: 'max-w-md',\n md: 'max-w-2xl',\n lg: 'max-w-4xl',\n xl: 'max-w-6xl',\n full: 'max-w-full mx-4',\n};\n\nexport default function Modal({\n isOpen,\n onClose,\n children,\n title,\n header,\n blocking = false,\n size = 'md',\n className = '',\n footer,\n fullScreen = false,\n noPadding = false,\n footerBg = 'gray',\n variant = 'default',\n scrollable = true,\n 'aria-describedby': ariaDescribedBy,\n customStyles = {},\n}: ModalProps) {\n const modalContentRef = useRef<HTMLDivElement>(null);\n const previousActiveElementRef = useRef<HTMLElement | null>(null);\n const hasPerformedInitialFocusRef = useRef(false);\n\n // Get all focusable elements within modal\n const getFocusableElements = (): HTMLElement[] => {\n if (!modalContentRef.current) return [];\n\n const focusableSelectors = [\n 'button:not([disabled])',\n 'a[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n\n return Array.from(\n modalContentRef.current.querySelectorAll<HTMLElement>(focusableSelectors)\n );\n };\n\n // Focus management\n useEffect(() => {\n if (!isOpen) {\n // Reset the flag when modal closes\n hasPerformedInitialFocusRef.current = false;\n return;\n }\n\n // Store the previously active element only on first open\n if (!hasPerformedInitialFocusRef.current) {\n previousActiveElementRef.current = document.activeElement as HTMLElement;\n }\n\n let timeoutId: NodeJS.Timeout | null = null;\n\n // Only auto-focus the first element on initial open, not on every render\n if (!hasPerformedInitialFocusRef.current) {\n // Focus first focusable element in modal\n const focusableElements = getFocusableElements();\n const firstFocusable = focusableElements[0];\n\n // Small delay to ensure modal is rendered\n timeoutId = setTimeout(() => {\n // Only auto-focus if user is not currently typing in an input\n const activeElement = document.activeElement;\n const isHTMLElement = activeElement instanceof HTMLElement;\n const isUserTyping = activeElement && (\n activeElement.tagName === 'INPUT' ||\n activeElement.tagName === 'TEXTAREA' ||\n (isHTMLElement && activeElement.isContentEditable)\n );\n\n // Only focus if:\n // 1. User is not typing\n // 2. Current focus is not already inside the modal\n const isFocusInModal = modalContentRef.current?.contains(activeElement);\n if (!isUserTyping && !isFocusInModal) {\n if (firstFocusable) {\n firstFocusable.focus();\n hasPerformedInitialFocusRef.current = true;\n } else if (modalContentRef.current) {\n // If no focusable elements, focus the modal itself\n modalContentRef.current.focus();\n hasPerformedInitialFocusRef.current = true;\n }\n } else if (isFocusInModal) {\n // Focus is already in modal, mark as done\n hasPerformedInitialFocusRef.current = true;\n }\n }, 100);\n }\n\n // Handle Tab key for focus trapping\n const handleTab = (event: KeyboardEvent) => {\n if (event.key !== 'Tab') return;\n\n const focusableElements = getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n };\n\n // Handle ESC key press\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && !blocking) {\n onClose();\n }\n };\n\n document.addEventListener('keydown', handleTab);\n document.addEventListener('keydown', handleEsc);\n // Prevent body scroll when modal is open\n document.body.style.overflow = 'hidden';\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n document.removeEventListener('keydown', handleTab);\n document.removeEventListener('keydown', handleEsc);\n document.body.style.overflow = 'unset';\n\n // Restore focus to previously active element only on close\n if (!isOpen && previousActiveElementRef.current) {\n previousActiveElementRef.current.focus();\n }\n };\n }, [isOpen, onClose, blocking]);\n\n // Get the existing modal root from layout, or create one if it doesn't exist\n const modalRoot = (() => {\n if (typeof document === 'undefined') return null;\n\n let root = document.getElementById('modal-root');\n if (!root) {\n // Create modal root if it doesn't exist\n root = document.createElement('div');\n root.id = 'modal-root';\n document.body.appendChild(root);\n }\n return root;\n })();\n\n if (!modalRoot) {\n return null;\n }\n\n // Animation variants\n const backdropVariants: Variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n };\n\n const modalVariants: Variants = {\n hidden: {\n opacity: 0,\n scale: 0.95,\n y: 20,\n },\n visible: {\n opacity: 1,\n scale: 1,\n y: 0,\n transition: {\n duration: 0.2,\n ease: 'easeOut',\n },\n },\n exit: {\n opacity: 0,\n scale: 0.9,\n y: 100, // Slide down much further for reverse effect\n transition: {\n duration: 0.3,\n ease: 'easeIn',\n },\n },\n };\n\n if (!isOpen) return null;\n\n // Plain variant renders as interstitial with internal controls\n if (variant === 'plain') {\n return createPortal(\n <AnimatePresence>\n <motion.div\n key=\"modal-backdrop\"\n className={`modal-backdrop fixed inset-0 w-screen h-screen flex items-center ${customStyles.backdrop?.includes('justify-')\n ? customStyles.backdrop\n : customStyles.backdrop\n ? `${customStyles.backdrop} justify-center`\n : 'justify-center bg-black/10'\n } z-[999999] m-0 ${fullScreen ? 'p-0' : 'p-4'}`}\n variants={backdropVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'hidden'}\n exit=\"hidden\"\n onClick={blocking ? undefined : onClose}\n >\n <motion.div\n key=\"modal-content\"\n ref={modalContentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title-plain' : undefined}\n aria-describedby={ariaDescribedBy || 'modal-content-plain'}\n tabIndex={-1}\n className={`w-full flex flex-col overflow-hidden relative z-[1000000] ${customStyles.container || 'bg-card shadow-xl'\n } ${fullScreen\n ? 'h-full rounded-none'\n : `rounded-lg ${className} ${sizeClasses[size]} max-h-[90vh]`\n }`}\n variants={modalVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'exit'}\n exit=\"exit\"\n onClick={e => e.stopPropagation()}\n >\n {/* Content with internal controls */}\n <div\n id=\"modal-content-plain\"\n className={`flex-1 ${customStyles.content || ''}`}\n >\n {children}\n </div>\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n modalRoot\n );\n }\n\n // Default variant with header/footer structure\n return createPortal(\n <AnimatePresence>\n <motion.div\n key=\"modal-backdrop\"\n className={`modal-backdrop fixed inset-0 w-screen h-screen bg-black/10 flex items-center ${customStyles.backdrop || 'justify-center'\n } z-[999999] m-0 ${fullScreen ? 'p-0' : 'p-4'}`}\n variants={backdropVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'hidden'}\n exit=\"hidden\"\n onClick={blocking ? undefined : onClose}\n >\n <motion.div\n key=\"modal-content\"\n ref={modalContentRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n aria-describedby={ariaDescribedBy || 'modal-content'}\n tabIndex={-1}\n className={`bg-card border border-border shadow-xl w-full flex flex-col overflow-hidden relative z-[1000000] ${fullScreen\n ? 'h-full rounded-none'\n : `rounded-lg ${customStyles.container || className || sizeClasses[size]} max-h-[90vh]`\n }`}\n variants={modalVariants}\n initial=\"hidden\"\n animate={isOpen ? 'visible' : 'exit'}\n exit=\"exit\"\n onClick={e => e.stopPropagation()}\n >\n {/* Fixed Header */}\n {header ? (\n <div className=\"flex-shrink-0\">{header}</div>\n ) : title ? (\n <div\n className={`px-6 py-4 border-b border-border flex justify-between items-center flex-shrink-0 ${customStyles.header || ''}`}\n >\n <h2\n id=\"modal-title\"\n className=\"text-xl font-semibold text-foreground\"\n >\n {title}\n </h2>\n <button\n onClick={onClose}\n className=\"p-2 text-muted-foreground hover:text-foreground hover:bg-muted rounded-full transition-colors\"\n title=\"Close\"\n aria-label=\"Close modal\"\n disabled={blocking}\n >\n <RiCloseLine className=\"w-5 h-5\" aria-hidden=\"true\" />\n </button>\n </div>\n ) : null}\n\n {/* Scrollable Content */}\n <div\n id=\"modal-content\"\n className={`bg-background text-foreground flex-1 ${scrollable ? 'overflow-y-auto' : ''} ${fullScreen || noPadding ? 'p-0' : 'px-6 py-4'}`}\n >\n {children}\n </div>\n\n {/* Sticky Footer */}\n {footer && (\n <div\n className={`flex-shrink-0 px-6 py-4 border-t border-border ${footerBg === 'white' ? 'bg-card' : 'bg-muted'} ${customStyles.footer || ''}`}\n >\n {footer}\n </div>\n )}\n </motion.div>\n </motion.div>\n </AnimatePresence>,\n modalRoot\n );\n}\n","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport Modal from './Modal';\nimport Button from './Button';\n\nexport interface ConfirmDialogOptions {\n title: string;\n message: string;\n confirmText: string;\n cancelText?: string;\n confirmButtonColor?: 'red' | 'blue' | 'green';\n}\n\ninterface ConfirmDialogProps {\n isOpen: boolean;\n options: ConfirmDialogOptions;\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nexport function ConfirmDialog({ isOpen, options, onConfirm, onCancel }: ConfirmDialogProps) {\n const { title, message, confirmText, cancelText = 'Cancel', confirmButtonColor = 'blue' } = options;\n\n const getConfirmVariant = () => {\n switch (confirmButtonColor) {\n case 'red':\n return 'danger' as const;\n case 'green':\n return 'primary' as const;\n case 'blue':\n default:\n return 'primary' as const;\n }\n };\n\n return (\n <Modal isOpen={isOpen} onClose={onCancel} title={title}>\n <div className=\"space-y-4\">\n <p className=\"text-foreground\">{message}</p>\n\n <div className=\"flex gap-3 justify-end\">\n <Button variant=\"secondary\" onClick={onCancel}>\n {cancelText}\n </Button>\n <Button variant={getConfirmVariant()} onClick={onConfirm}>\n {confirmText}\n </Button>\n </div>\n </div>\n </Modal>\n );\n}\n\n/**\n * Hook to use confirmation dialogs\n * \n * @example\n * ```tsx\n * const { confirm } = useConfirmDialog();\n * \n * const handleDelete = async () => {\n * const confirmed = await confirm({\n * title: 'Delete Item',\n * message: 'Are you sure you want to delete this item?',\n * confirmText: 'Delete',\n * confirmButtonColor: 'red'\n * });\n * \n * if (confirmed) {\n * // Delete the item\n * }\n * };\n * ```\n */\nexport function useConfirmDialog() {\n const [isOpen, setIsOpen] = useState(false);\n const [options, setOptions] = useState<ConfirmDialogOptions>({\n title: '',\n message: '',\n confirmText: 'Confirm',\n });\n const [resolver, setResolver] = useState<((value: boolean) => void) | null>(null);\n\n const confirm = (opts: ConfirmDialogOptions): Promise<boolean> => {\n setOptions(opts);\n setIsOpen(true);\n\n return new Promise<boolean>((resolve) => {\n setResolver(() => resolve);\n });\n };\n\n const handleConfirm = () => {\n setIsOpen(false);\n if (resolver) {\n resolver(true);\n setResolver(null);\n }\n };\n\n const handleCancel = () => {\n setIsOpen(false);\n if (resolver) {\n resolver(false);\n setResolver(null);\n }\n };\n\n const dialog = (\n <ConfirmDialog\n isOpen={isOpen}\n options={options}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n\n return { confirm, dialog };\n}\n\nexport default ConfirmDialog;\n","import React from 'react';\n\nexport interface ContainerProps {\n children: React.ReactNode;\n className?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n id?: string;\n}\n\nconst paddingClasses = {\n none: '',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n};\n\nexport default function Container({\n children,\n className = '',\n padding = 'md',\n id\n}: ContainerProps) {\n return (\n <div id={id} className={`${paddingClasses[padding]} ${className}`}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { IconType } from 'react-icons';\n\ninterface EmptyStateProps {\n icon: IconType;\n title: string;\n subtitle: string;\n action?: React.ReactNode;\n className?: string;\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n icon: Icon,\n title,\n subtitle,\n action,\n className = '',\n}) => {\n return (\n <div\n className={`text-center py-12 text-secondary-foreground p-6 lg:p-12 ${className}`}\n role=\"status\"\n aria-live=\"polite\"\n >\n <Icon\n className=\"w-12 h-12 mx-auto mb-3 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n <p className=\"text-sm font-medium mb-1\">{title}</p>\n <p className=\"text-xs text-muted-foreground mb-4\">{subtitle}</p>\n {action && <div className=\"flex justify-center\">{action}</div>}\n </div>\n );\n};\n\nexport default EmptyState;\n","'use client';\n\nimport { useState, useCallback } from 'react';\n\ninterface UseKeyboardNavigationOptions {\n isOpen: boolean;\n optionsLength: number;\n onSelect: (index: number) => void;\n onClose: () => void;\n onOpen?: () => void;\n}\n\ninterface UseKeyboardNavigationReturn {\n focusedIndex: number;\n handleKeyDown: (e: React.KeyboardEvent) => void;\n resetFocus: () => void;\n setFocusedIndex: (index: number) => void;\n}\n\n/**\n * Reusable hook for keyboard navigation in dropdown components\n * Provides consistent arrow key navigation, Enter selection, and Escape handling\n */\nexport function useKeyboardNavigation({\n isOpen,\n optionsLength,\n onSelect,\n onClose,\n onOpen,\n}: UseKeyboardNavigationOptions): UseKeyboardNavigationReturn {\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n const resetFocus = useCallback(() => {\n setFocusedIndex(-1);\n }, []);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (!isOpen) {\n // Handle opening the dropdown\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n onOpen?.();\n }\n return;\n }\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n setFocusedIndex(prev => (prev < optionsLength - 1 ? prev + 1 : 0));\n break;\n case 'ArrowUp':\n e.preventDefault();\n setFocusedIndex(prev => (prev > 0 ? prev - 1 : optionsLength - 1));\n break;\n case 'Enter':\n e.preventDefault();\n if (focusedIndex >= 0 && focusedIndex < optionsLength) {\n onSelect(focusedIndex);\n }\n break;\n case 'Escape':\n e.preventDefault();\n onClose();\n resetFocus();\n break;\n case 'Tab':\n onClose();\n resetFocus();\n break;\n }\n },\n [isOpen, optionsLength, focusedIndex, onSelect, onClose, onOpen, resetFocus]\n );\n\n return {\n focusedIndex,\n handleKeyDown,\n resetFocus,\n setFocusedIndex,\n };\n}\n","'use client';\n\nimport { useState, useRef, useEffect, useCallback, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { RiCheckLine, RiCloseLine, RiLoader4Line } from 'react-icons/ri';\nimport { DropDownArrow } from './DropDown';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\n\ninterface SmartDropdownProps {\n isOpen: boolean;\n onClose: () => void;\n trigger: ReactNode;\n children: ReactNode | ((position: { isAbove: boolean }) => ReactNode);\n className?: string;\n width?: number | 'auto' | 'fit-content';\n maxHeight?: number;\n offset?: number;\n margin?: number;\n id?: string;\n position?:\n | 'auto'\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'top-left-aligned'\n | 'bottom-left-aligned';\n}\n\ninterface DropdownPosition {\n top: number;\n left: number | undefined;\n right: number | undefined;\n width: number;\n maxHeight: number;\n isAbove: boolean;\n}\n\nexport default function SmartDropdown({\n isOpen,\n onClose,\n trigger,\n children,\n className = '',\n width = 384,\n maxHeight = 450,\n offset = 8,\n margin = 16,\n id = 'dropdown-listbox',\n position = 'auto',\n}: SmartDropdownProps) {\n const [dropdownPosition, setDropdownPosition] = useState<DropdownPosition>({\n top: 0,\n left: 0,\n right: undefined,\n width: 0,\n maxHeight: 0,\n isAbove: false,\n });\n const dropdownRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n // Calculate dropdown position and size\n const calculateDropdownPosition = useCallback(() => {\n if (!triggerRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Calculate available space in all directions\n const spaceAbove = triggerRect.top - margin;\n const spaceBelow = viewportHeight - triggerRect.bottom - margin;\n\n // Determine dropdown dimensions\n let calculatedWidth: number;\n\n if (width === 'fit-content') {\n // For fit-content, we'll measure the content after rendering\n calculatedWidth = triggerRect.width;\n } else if (width === 'auto') {\n calculatedWidth = triggerRect.width;\n } else if (typeof width === 'number') {\n calculatedWidth = Math.min(width, viewportWidth - margin * 2);\n } else {\n calculatedWidth = triggerRect.width;\n }\n const calculatedMaxHeight = Math.min(\n maxHeight,\n Math.max(spaceAbove, spaceBelow)\n );\n\n // Determine horizontal position based on position prop\n let left = triggerRect.left;\n let right: number | undefined = undefined;\n\n if (position === 'top-right' || position === 'bottom-right') {\n left = triggerRect.right - calculatedWidth;\n } else if (position === 'top-left' || position === 'bottom-left') {\n left = triggerRect.left;\n } else if (\n position === 'top-left-aligned' ||\n position === 'bottom-left-aligned'\n ) {\n // Position dropdown to the left with fully dynamic offset\n // Calculate how much space we have to the left of the trigger\n const availableLeftSpace = triggerRect.left - margin;\n // Use a percentage of available space for offset (e.g., 20% of available space)\n const dynamicOffset = Math.max(20, availableLeftSpace * 0.2);\n right = viewportWidth - triggerRect.left + dynamicOffset;\n left = 0; // Set to 0 instead of undefined\n // Ensure width is calculated properly for right positioning\n calculatedWidth = Math.min(\n calculatedWidth,\n triggerRect.left - dynamicOffset - margin\n );\n } else {\n // Auto positioning (existing logic)\n // If dropdown would overflow right edge, align to right of trigger\n if (left + calculatedWidth > viewportWidth - margin) {\n left = triggerRect.right - calculatedWidth;\n }\n }\n\n // If still overflowing left edge, clamp to margin\n if (left !== undefined && left < margin) {\n left = margin;\n }\n\n // Determine vertical position\n let top = triggerRect.bottom + offset;\n let finalMaxHeight = calculatedMaxHeight;\n let isAbove = false;\n\n // If there's more space above and dropdown would overflow below\n if (\n spaceAbove > spaceBelow &&\n top + calculatedMaxHeight > viewportHeight - margin\n ) {\n // Position above the trigger\n isAbove = true;\n top = triggerRect.top - calculatedMaxHeight - offset;\n finalMaxHeight = Math.min(calculatedMaxHeight, spaceAbove);\n\n // If still overflowing top, clamp to top margin\n if (top < margin) {\n top = margin;\n finalMaxHeight = triggerRect.top - margin - offset;\n }\n } else {\n // Position below the trigger\n finalMaxHeight = Math.min(calculatedMaxHeight, spaceBelow);\n\n // If overflowing bottom, clamp to bottom margin\n if (top + finalMaxHeight > viewportHeight - margin) {\n top = viewportHeight - margin - finalMaxHeight;\n }\n }\n\n // Override positioning based on position prop\n if (position === 'top-right') {\n left = triggerRect.right - calculatedWidth;\n top = triggerRect.top - offset;\n isAbove = true;\n finalMaxHeight = Math.min(maxHeight, spaceAbove);\n } else if (position === 'top-left') {\n left = triggerRect.left;\n top = triggerRect.top - offset;\n isAbove = true;\n finalMaxHeight = Math.min(maxHeight, spaceAbove);\n } else if (position === 'bottom-right') {\n left = triggerRect.right - calculatedWidth;\n top = triggerRect.bottom + offset;\n isAbove = false;\n finalMaxHeight = Math.min(maxHeight, spaceBelow);\n } else if (position === 'bottom-left') {\n left = triggerRect.left;\n top = triggerRect.bottom + offset;\n isAbove = false;\n finalMaxHeight = Math.min(maxHeight, spaceBelow);\n } else if (position === 'top-left-aligned') {\n right = viewportWidth - triggerRect.right;\n left = 0;\n top = triggerRect.top - offset;\n isAbove = true;\n finalMaxHeight = Math.min(maxHeight, spaceAbove);\n } else if (position === 'bottom-left-aligned') {\n right = viewportWidth - triggerRect.right;\n left = 0;\n top = triggerRect.bottom + offset;\n isAbove = false;\n finalMaxHeight = Math.min(maxHeight, spaceBelow);\n }\n\n setDropdownPosition({\n top,\n left,\n right,\n width: calculatedWidth,\n maxHeight: finalMaxHeight,\n isAbove,\n });\n }, [width, maxHeight, margin, offset, position]);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n\n // Check if click is inside the dropdown or trigger\n const isInsideDropdown = dropdownRef.current?.contains(target);\n const isInsideTrigger = triggerRef.current?.contains(target);\n\n // Only close if click is truly outside\n if (!isInsideDropdown && !isInsideTrigger) {\n onClose();\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [onClose]);\n\n // Calculate smart dropdown position when opening\n useEffect(() => {\n if (isOpen) {\n calculateDropdownPosition();\n }\n }, [isOpen, calculateDropdownPosition]);\n\n // Recalculate position on window resize and scroll\n useEffect(() => {\n if (!isOpen) return;\n\n const handleResize = () => {\n calculateDropdownPosition();\n };\n\n const handleScroll = () => {\n calculateDropdownPosition();\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('scroll', handleScroll, true); // Use capture to catch all scroll events\n return () => {\n window.removeEventListener('resize', handleResize);\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, [isOpen, calculateDropdownPosition]);\n\n // Adjust position after dropdown content is rendered (for above positioning)\n useEffect(() => {\n if (!isOpen || !dropdownRef.current || !triggerRef.current) return;\n\n // Only adjust if dropdown is positioned above\n if (dropdownPosition.isAbove) {\n const adjustPosition = () => {\n const dropdownRect = dropdownRef.current?.getBoundingClientRect();\n const triggerRect = triggerRef.current?.getBoundingClientRect();\n\n if (!dropdownRect || !triggerRect) return;\n\n // Calculate the actual height of the dropdown content\n const actualHeight = dropdownRect.height;\n\n // Reposition to align with the bottom of the trigger\n const newTop = triggerRect.top - actualHeight - offset;\n\n // Only update if the position would be different and within bounds\n if (newTop !== dropdownPosition.top && newTop >= margin) {\n setDropdownPosition(prev => ({\n ...prev,\n top: newTop,\n }));\n }\n };\n\n // Use ResizeObserver to watch for content changes\n const resizeObserver = new ResizeObserver(() => {\n // Small delay to ensure content is fully rendered\n setTimeout(adjustPosition, 0);\n });\n\n resizeObserver.observe(dropdownRef.current);\n\n // Also adjust immediately in case content is already rendered\n adjustPosition();\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [isOpen, dropdownPosition.isAbove, dropdownPosition.top, offset, margin]);\n\n return (\n <>\n <div\n ref={triggerRef}\n className=\"w-full\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls=\"dropdown-listbox\"\n >\n {trigger}\n </div>\n\n {isOpen &&\n typeof window !== 'undefined' &&\n createPortal(\n <div\n ref={dropdownRef}\n id={id}\n data-smart-dropdown\n role=\"listbox\"\n aria-label=\"Dropdown options\"\n className={`fixed z-[1000001] card overflow-hidden`}\n style={{\n top: dropdownPosition.top,\n ...(dropdownPosition.left !== undefined\n ? { left: dropdownPosition.left }\n : {}),\n ...(dropdownPosition.right !== undefined\n ? { right: dropdownPosition.right }\n : {}),\n width: width === 'fit-content' ? 'auto' : dropdownPosition.width,\n maxHeight: dropdownPosition.maxHeight,\n }}\n onClick={e => {\n // Prevent clicks inside the dropdown from bubbling up\n e.stopPropagation();\n }}\n >\n <div\n className={className ? className : 'overflow-y-auto'}\n style={{ maxHeight: dropdownPosition.maxHeight }}\n >\n {typeof children === 'function'\n ? children({ isAbove: dropdownPosition.isAbove })\n : children}\n </div>\n </div>,\n document.body\n )}\n </>\n );\n}\n\n// SmartSelect component interfaces\ninterface Option {\n value: string;\n label: string;\n description?: string;\n icon?: React.ReactNode;\n metadata?: {\n isDefault?: boolean;\n args?: string[];\n };\n}\n\ninterface SmartSelectProps {\n options: Option[];\n value: string | string[];\n onChange: (value: string | string[]) => void;\n placeholder?: string;\n className?: string;\n description?: string;\n disabled?: boolean;\n multiple?: boolean;\n width?: number;\n searchable?: boolean;\n keepOpen?: boolean;\n clearable?: boolean;\n // API integration props\n onOpen?: () => void;\n onClose?: () => void;\n onSearch?: (search: string) => void;\n isLoading?: boolean;\n}\n\n// SmartSelect component\nexport function SmartSelect({\n options,\n value,\n onChange,\n placeholder = 'Select option...',\n className = '',\n description,\n disabled = false,\n multiple = false,\n width,\n searchable = false,\n keepOpen = false,\n clearable = true,\n // API integration props\n onOpen,\n onClose,\n onSearch,\n isLoading = false,\n}: SmartSelectProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [triggerWidth, setTriggerWidth] = useState<number | undefined>(\n undefined\n );\n const [searchTerm, setSearchTerm] = useState('');\n const [displayValue, setDisplayValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n // Handle both single and multiple selection\n const selectedValues = multiple\n ? (value as string[]) || []\n : [value as string];\n const selectedOptions = options.filter(opt =>\n selectedValues.includes(opt.value)\n );\n\n // Check if there's actually a selection (not empty)\n const hasSelection = multiple\n ? selectedValues.length > 0\n : (value as string) && (value as string) !== '';\n\n // Filter options based on search term\n const filteredOptions =\n searchable && searchTerm.trim()\n ? options.filter(\n option =>\n option.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\n option.value.toLowerCase().includes(searchTerm.toLowerCase()) ||\n option.description?.toLowerCase().includes(searchTerm.toLowerCase())\n )\n : options;\n\n // Use keyboard navigation hook\n const { focusedIndex, handleKeyDown, resetFocus } = useKeyboardNavigation({\n isOpen,\n optionsLength: filteredOptions.length,\n onSelect: index => handleSelect(filteredOptions[index].value),\n onClose: () => setIsOpen(false),\n onOpen: () => setIsOpen(true),\n });\n\n // Update display value when selection changes\n useEffect(() => {\n if (selectedOptions.length > 0) {\n if (multiple) {\n setDisplayValue(selectedOptions.map(opt => opt.label).join(', '));\n } else {\n setDisplayValue(selectedOptions[0].label);\n }\n } else {\n setDisplayValue('');\n }\n }, [selectedOptions, multiple]);\n\n const handleSelect = (optionValue: string) => {\n if (multiple) {\n const currentValues = (value as string[]) || [];\n const newValues = currentValues.includes(optionValue)\n ? currentValues.filter(v => v !== optionValue) // Remove if already selected\n : [...currentValues, optionValue]; // Add if not selected\n\n onChange(newValues);\n // For multiple selection, keep dropdown open\n } else {\n onChange(optionValue);\n setSearchTerm('');\n // For single selection, close immediately\n setIsOpen(false);\n }\n };\n\n // Get the current trigger element\n const currentTriggerRef = searchable ? inputRef : buttonRef;\n\n // Measure trigger width when it mounts and when dropdown opens\n useEffect(() => {\n if (currentTriggerRef.current) {\n const rect = currentTriggerRef.current.getBoundingClientRect();\n setTriggerWidth(rect.width);\n }\n }, [isOpen, currentTriggerRef]); // Re-measure when dropdown opens\n\n // Add resize observer to handle window resizing\n useEffect(() => {\n if (!currentTriggerRef.current) return;\n\n const resizeObserver = new ResizeObserver(() => {\n if (currentTriggerRef.current) {\n const rect = currentTriggerRef.current.getBoundingClientRect();\n setTriggerWidth(rect.width);\n }\n });\n\n resizeObserver.observe(currentTriggerRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [currentTriggerRef]);\n\n // Focus input when dropdown opens and clear search when it closes\n useEffect(() => {\n if (isOpen && searchable && inputRef.current) {\n // Small delay to ensure the dropdown is rendered\n setTimeout(() => {\n inputRef.current?.focus();\n }, 0);\n } else if (!isOpen) {\n setSearchTerm('');\n resetFocus();\n }\n }, [isOpen, searchable, resetFocus]);\n\n // Handle API integration callbacks\n const handleOpen = () => {\n setIsOpen(true);\n onOpen?.();\n };\n\n const handleClose = () => {\n setIsOpen(false);\n onClose?.();\n };\n\n const handleSearchChange = (search: string) => {\n setSearchTerm(search);\n onSearch?.(search);\n };\n\n return (\n <div className=\"w-full\" data-smart-select>\n {description && <p className=\"form-description\">{description}</p>}\n <SmartDropdown\n isOpen={isOpen}\n onClose={handleClose}\n width={width !== undefined ? width : triggerWidth}\n maxHeight={200}\n trigger={\n searchable ? (\n <div className=\"relative\">\n <input\n ref={inputRef}\n type=\"text\"\n value={isOpen ? searchTerm : displayValue}\n onChange={e => {\n if (isOpen) {\n handleSearchChange(e.target.value);\n resetFocus(); // Reset focus when searching\n }\n }}\n onFocus={() => !disabled && handleOpen()}\n onClick={e => {\n e.stopPropagation();\n !disabled && handleOpen();\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls=\"dropdown-listbox\"\n aria-autocomplete=\"list\"\n aria-activedescendant={\n focusedIndex >= 0 ? `option-${focusedIndex}` : undefined\n }\n className={`form-input truncate ${hasSelection ? 'pr-12' : 'pr-8'} ${disabled ? 'opacity-50 cursor-not-allowed' : ''} ${className}`}\n />\n {/* Clear button - only show when there are selected values and clearable is true */}\n {hasSelection && clearable && (\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n onChange(multiple ? [] : '');\n }}\n className=\"absolute right-6 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground hover:text-muted-foreground transition-colors\"\n aria-label=\"Clear selection\"\n title=\"Clear selection\"\n >\n <RiCloseLine className=\"w-4 h-4\" aria-hidden={true} />\n </button>\n )}\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n !disabled && setIsOpen(!isOpen);\n }}\n className={`absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground hover:text-muted-foreground transition-colors ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n disabled={disabled}\n aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}\n aria-expanded={isOpen}\n >\n <DropDownArrow\n isOpen={isOpen}\n disabled={disabled}\n size=\"sm\"\n color=\"gray\"\n aria-hidden={true}\n />\n </button>\n </div>\n ) : (\n <div className=\"relative group\">\n <button\n ref={buttonRef}\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n !disabled && (isOpen ? handleClose() : handleOpen());\n }}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls=\"dropdown-listbox\"\n aria-label={placeholder}\n aria-activedescendant={\n focusedIndex >= 0 ? `option-${focusedIndex}` : undefined\n }\n className={`form-input flex items-center justify-between text-left ${hasSelection ? 'pr-12' : 'pr-8'} ${disabled ? 'opacity-60 cursor-not-allowed' : ''} ${className}`}\n >\n <span\n className={`flex items-center gap-2 min-w-0 flex-1 ${selectedOptions.length > 0 ? '' : 'text-muted-foreground opacity-60'}`}\n >\n {multiple ? (\n selectedOptions.length > 0 ? (\n (() => {\n const displayText = selectedOptions\n .map(opt => opt.label)\n .join(', ');\n return (\n <span className=\"flex items-center gap-1 min-w-0 flex-1\">\n {selectedOptions[0].icon && (\n <span className=\"flex-shrink-0\">\n {selectedOptions[0].icon}\n </span>\n )}\n <span className=\"truncate\">{displayText}</span>\n </span>\n );\n })()\n ) : (\n <span className=\"truncate\">{placeholder}</span>\n )\n ) : selectedOptions[0] ? (\n <span className=\"flex items-center gap-1 min-w-0 flex-1\">\n {selectedOptions[0].icon && (\n <span className=\"flex-shrink-0\">\n {selectedOptions[0].icon}\n </span>\n )}\n <span className=\"truncate\">\n {selectedOptions[0].label}\n </span>\n </span>\n ) : (\n <span className=\"truncate\">{placeholder}</span>\n )}\n </span>\n </button>\n {/* Clear button - only show when there are selected values and clearable is true */}\n {hasSelection && clearable && (\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n onChange(multiple ? [] : '');\n }}\n className=\"absolute right-6 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground hover:text-muted-foreground transition-all duration-200 opacity-0 group-hover:opacity-100\"\n aria-label=\"Clear selection\"\n title=\"Clear selection\"\n >\n <RiCloseLine className=\"w-4 h-4\" aria-hidden={true} />\n </button>\n )}\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n !disabled && setIsOpen(!isOpen);\n }}\n className={`absolute right-2 top-1/2 transform -translate-y-1/2 w-4 h-4 text-muted-foreground hover:text-muted-foreground transition-colors ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`}\n disabled={disabled}\n aria-label={isOpen ? 'Close dropdown' : 'Open dropdown'}\n aria-expanded={isOpen}\n >\n <DropDownArrow\n isOpen={isOpen}\n disabled={disabled}\n size=\"sm\"\n color=\"gray\"\n aria-hidden={true}\n />\n </button>\n </div>\n )\n }\n >\n <div className=\"py-2\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option, index) => (\n <button\n key={option.value}\n id={`option-${index}`}\n type=\"button\"\n role=\"option\"\n aria-selected={selectedValues.includes(option.value)}\n onMouseDown={e => {\n e.preventDefault();\n e.stopPropagation();\n handleSelect(option.value);\n }}\n className={`w-full px-3 py-2 text-left text-sm hover:bg-accent flex items-center justify-between min-h-[40px] transition-colors ${selectedValues.includes(option.value)\n ? 'bg-accent border-l-2 border-l-ring'\n : index === focusedIndex\n ? 'bg-muted ring-2 ring-ring'\n : ''\n }`}\n >\n <div className=\"flex items-center gap-2 min-w-0 flex-1\">\n {option.icon && (\n <span className=\"flex-shrink-0\">{option.icon}</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2\">\n <div className=\"font-medium text-foreground truncate\">\n {option.label}\n </div>\n {option.metadata?.isDefault && (\n <span className=\"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium success-badge flex-shrink-0\">\n Default\n </span>\n )}\n </div>\n {option.description && (\n <div className=\"text-xs text-muted-foreground truncate\">\n {option.description}\n </div>\n )}\n {option.metadata?.args &&\n option.metadata.args.length > 0 && (\n <div className=\"mt-1\">\n <div className=\"text-xs text-secondary-foreground mb-1\">\n Arguments:\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {option.metadata.args\n .slice(0, 3)\n .map((arg: string, argIndex: number) => (\n <span\n key={argIndex}\n className=\"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-mono bg-muted text-muted-foreground\"\n >\n {arg}\n </span>\n ))}\n {option.metadata.args.length > 3 && (\n <span className=\"text-xs text-secondary-foreground\">\n +{option.metadata.args.length - 3} more\n </span>\n )}\n </div>\n </div>\n )}\n </div>\n </div>\n {multiple ? (\n <input\n type=\"checkbox\"\n checked={selectedValues.includes(option.value)}\n onChange={() => { }} // Handled by button click\n className=\"w-4 h-4 text-primary bg-muted border-border rounded focus:ring-primary focus:ring-2\"\n />\n ) : (\n selectedValues.includes(option.value) && (\n <RiCheckLine className=\"w-4 h-4 text-primary flex-shrink-0\" />\n )\n )}\n </button>\n ))\n ) : (\n <div className=\"px-3 py-2 text-sm text-secondary-foreground flex items-center gap-2\">\n {isLoading ? (\n <>\n <RiLoader4Line className=\"w-4 h-4 animate-spin\" />\n <span>Loading...</span>\n </>\n ) : searchTerm.trim() ? (\n <span>No results found</span>\n ) : (\n <span>No options available</span>\n )}\n </div>\n )}\n </div>\n </SmartDropdown>\n </div>\n );\n}\n","'use client';\n\nimport { ReactNode } from 'react';\n\ninterface SkeletonProps {\n className?: string;\n children?: ReactNode;\n}\n\ninterface SkeletonItemProps {\n className?: string;\n width?: string;\n height?: string;\n rounded?: boolean;\n animate?: boolean;\n}\n\ninterface SkeletonCardProps {\n className?: string;\n children: ReactNode;\n}\n\ninterface SkeletonTableProps {\n rows?: number;\n columns?: number;\n className?: string;\n showHeader?: boolean;\n}\n\ninterface SkeletonListProps {\n items?: number;\n className?: string;\n itemHeight?: string;\n}\n\ninterface SkeletonCardsProps {\n items?: number;\n className?: string;\n}\n\n// Base skeleton item with pulse animation\nexport function Skeleton({ className = '', children }: SkeletonProps) {\n return <div className={`animate-pulse ${className}`}>{children}</div>;\n}\n\n// Individual skeleton item\nexport function SkeletonItem({\n className = '',\n width = 'w-full',\n height = 'h-4',\n rounded = true,\n animate = true,\n}: SkeletonItemProps) {\n // Check if height contains arbitrary values (like h-[350px])\n const isArbitraryHeight = height.includes('[') && height.includes(']');\n\n const baseClasses = isArbitraryHeight\n ? `bg-muted ${width}`\n : `${height} bg-muted ${width}`;\n const roundedClasses = rounded ? 'rounded' : '';\n const animateClasses = animate ? 'animate-pulse' : '';\n\n // For arbitrary heights, use inline style\n const style = isArbitraryHeight\n ? { height: height.replace('h-[', '').replace(']', '') }\n : {};\n\n return (\n <div\n className={`${baseClasses} ${roundedClasses} ${animateClasses} ${className}`}\n style={style}\n />\n );\n}\n\n// Skeleton card container\nexport function SkeletonCard({ className = '', children }: SkeletonCardProps) {\n return <div className={`card card-padding ${className}`}>{children}</div>;\n}\n\n// Skeleton table rows\nexport function SkeletonTable({\n rows = 5,\n columns = 4,\n className = '',\n showHeader = true,\n}: SkeletonTableProps) {\n return (\n <div className={`card overflow-hidden ${className}`}>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full divide-y divide-border\">\n {showHeader && (\n <thead className=\"bg-muted\">\n <tr>\n {Array.from({ length: columns }).map((_, i) => (\n <th key={i} className=\"px-6 py-3 text-left\">\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n </th>\n ))}\n </tr>\n </thead>\n )}\n <tbody className=\"table-body-card\">\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr key={rowIndex}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td key={colIndex} className=\"px-6 py-4\">\n <div className=\"space-y-2\">\n <SkeletonItem width=\"w-full\" height=\"h-4\" />\n {colIndex === 0 && (\n <SkeletonItem width=\"w-3/4\" height=\"h-3\" />\n )}\n </div>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n}\n\n// Skeleton list items\nexport function SkeletonList({\n items = 5,\n className = '',\n itemHeight = 'h-20',\n}: SkeletonListProps) {\n return (\n <div className={`space-y-4 ${className}`}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"card card-padding-sm\">\n <div className=\"flex items-center space-x-4\">\n <SkeletonItem width=\"w-12\" height=\"h-12\" rounded={true} />\n <div className=\"flex-1 space-y-2\">\n <SkeletonItem width=\"w-1/3\" height=\"h-4\" />\n <SkeletonItem width=\"w-1/2\" height=\"h-3\" />\n </div>\n <div className=\"flex space-x-2\">\n <SkeletonItem width=\"w-16\" height=\"h-8\" />\n <SkeletonItem width=\"w-16\" height=\"h-8\" />\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// Skeleton for search cards\nexport function SkeletonSearchCard({ className = '' }: { className?: string }) {\n return (\n <SkeletonCard className={className}>\n <div className=\"space-y-4\">\n {/* Header */}\n <div className=\"flex flex-col md:flex-row md:items-center md:justify-between gap-4\">\n <div className=\"space-y-2\">\n <SkeletonItem width=\"w-48\" height=\"h-6\" />\n <SkeletonItem width=\"w-32\" height=\"h-4\" />\n </div>\n <div className=\"flex gap-3\">\n <SkeletonItem width=\"w-32\" height=\"h-10\" />\n </div>\n </div>\n\n {/* Search and filters */}\n <div className=\"flex flex-col md:flex-row gap-3\">\n <SkeletonItem width=\"w-full\" height=\"h-10\" />\n <SkeletonItem width=\"w-32\" height=\"h-10\" />\n <SkeletonItem width=\"w-32\" height=\"h-10\" />\n <SkeletonItem width=\"w-10\" height=\"h-10\" />\n </div>\n </div>\n </SkeletonCard>\n );\n}\n\n// Skeleton for game server cards (enhanced to match actual card layout)\nexport function SkeletonGameServerCard({\n className = '',\n}: {\n className?: string;\n}) {\n return (\n <div\n className={`card overflow-hidden h-[380px] flex flex-col ${className}`}\n >\n {/* Game Server Header */}\n <div className=\"relative px-5 py-4 border-b border-border bg-muted overflow-hidden\">\n {/* Title Row */}\n <div className=\"flex items-center space-x-3 relative z-10\">\n <div className=\"min-w-0 flex-1\">\n <SkeletonItem width=\"w-32\" height=\"h-6\" className=\"mb-2\" />\n <div className=\"flex items-center space-x-1\">\n <SkeletonItem width=\"w-4\" height=\"h-4\" rounded={true} />\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n </div>\n </div>\n </div>\n </div>\n\n {/* Game Server Info */}\n <div className=\"relative px-4 py-3 pt-0 flex-grow\">\n <div className=\"relative p-2\">\n {/* Resource Pie Charts */}\n <div className=\"grid gap-3 grid-cols-3\">\n {/* Players Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem\n width=\"w-12\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n\n {/* CPU Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto mb-1\" />\n <SkeletonItem width=\"w-6\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n\n {/* Memory Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem\n width=\"w-12\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n </div>\n </div>\n\n {/* Additional Info */}\n <div className=\"border-t border-border pt-4 space-y-1\">\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-12\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n </div>\n\n {/* Game Server Actions */}\n <div className=\"px-4 py-3 bg-card border-t border-border\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex items-center gap-1\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n\n <div className=\"flex items-center gap-1\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// Skeleton for game configuration cards\nexport function SkeletonGameCard({ className = '' }: { className?: string }) {\n return (\n <div className={`card card-padding-sm ${className}`}>\n <div className=\"flex items-center space-x-4\">\n <SkeletonItem width=\"w-12\" height=\"h-12\" rounded={true} />\n <div className=\"flex-1 space-y-2\">\n <SkeletonItem width=\"w-40\" height=\"h-4\" />\n <SkeletonItem width=\"w-64\" height=\"h-3\" />\n </div>\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-24\" height=\"h-6\" rounded={true} />\n <SkeletonItem width=\"w-20\" height=\"h-6\" rounded={true} />\n </div>\n </div>\n </div>\n );\n}\n\n// Skeleton for user cards\nexport function SkeletonUserCard({ className = '' }: { className?: string }) {\n return (\n <div className={`card card-padding-sm ${className}`}>\n <div className=\"flex items-center space-x-4\">\n <SkeletonItem width=\"w-12\" height=\"h-12\" rounded={true} />\n <div className=\"flex-1 space-y-2\">\n <SkeletonItem width=\"w-32\" height=\"h-4\" />\n <SkeletonItem width=\"w-40\" height=\"h-3\" />\n </div>\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-20\" height=\"h-6\" rounded={true} />\n <SkeletonItem width=\"w-16\" height=\"h-6\" rounded={true} />\n </div>\n </div>\n </div>\n );\n}\n\n// Skeleton for node cards (enhanced to match actual card layout)\nexport function SkeletonNodeCard({ className = '' }: { className?: string }) {\n return (\n <div className={`card overflow-hidden min-h-[320px] ${className}`}>\n {/* Node Header */}\n <div className=\"px-4 py-3 border-b border-border bg-muted\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3\">\n {/* OS Icon */}\n <SkeletonItem width=\"w-8\" height=\"h-8\" />\n <div>\n <SkeletonItem width=\"w-32\" height=\"h-5\" className=\"mb-1\" />\n <SkeletonItem width=\"w-24\" height=\"h-4\" className=\"mb-1\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n <SkeletonItem width=\"w-20\" height=\"h-6\" rounded={true} />\n </div>\n </div>\n\n {/* Node Info */}\n <div className=\"px-4 py-3\">\n {/* Resource Usage Charts */}\n <div className=\"grid grid-cols-3 gap-4 mb-4\">\n {/* CPU Chart */}\n <div className=\"text-center\">\n <SkeletonItem\n width=\"w-16\"\n height=\"h-16\"\n rounded={true}\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto mb-1\" />\n <SkeletonItem width=\"w-6\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n\n {/* RAM Chart */}\n <div className=\"text-center\">\n <SkeletonItem\n width=\"w-16\"\n height=\"h-16\"\n rounded={true}\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto mb-1\" />\n <SkeletonItem width=\"w-6\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n\n {/* Storage Chart */}\n <div className=\"text-center\">\n <SkeletonItem\n width=\"w-16\"\n height=\"h-16\"\n rounded={true}\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem width=\"w-12\" height=\"h-3\" className=\"mx-auto mb-1\" />\n <SkeletonItem width=\"w-8\" height=\"h-3\" className=\"mx-auto\" />\n </div>\n </div>\n\n {/* Game Servers Info */}\n <div className=\"bg-muted rounded-lg p-3 mb-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n <SkeletonItem width=\"w-16\" height=\"h-4\" />\n </div>\n <SkeletonItem\n width=\"w-full\"\n height=\"h-2\"\n rounded={true}\n className=\"mb-1\"\n />\n <SkeletonItem width=\"w-32\" height=\"h-3\" />\n </div>\n\n {/* System Info */}\n <div className=\"text-xs text-muted-foreground mb-3\">\n <div className=\"flex justify-between mb-1\">\n <SkeletonItem width=\"w-12\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex justify-end items-center pt-3 border-t border-border\">\n <div className=\"flex space-x-2\">\n <SkeletonItem width=\"w-20\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n// Skeleton for tenant cards\nexport function SkeletonTenantCard({ className = '' }: { className?: string }) {\n return (\n <div className={`card card-padding-sm ${className}`}>\n <div className=\"flex items-center space-x-4\">\n <SkeletonItem width=\"w-12\" height=\"h-12\" rounded={true} />\n <div className=\"flex-1 space-y-2\">\n <SkeletonItem width=\"w-40\" height=\"h-4\" />\n <SkeletonItem width=\"w-56\" height=\"h-3\" />\n </div>\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-28\" height=\"h-6\" rounded={true} />\n <SkeletonItem width=\"w-20\" height=\"h-6\" rounded={true} />\n </div>\n </div>\n </div>\n );\n}\n\n// Skeleton for dashboard stats\nexport function SkeletonStats({ className = '' }: { className?: string }) {\n return (\n <div\n className={`grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 ${className}`}\n >\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"card card-padding\">\n <div className=\"space-y-3\">\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n <SkeletonItem width=\"w-16\" height=\"h-8\" />\n <SkeletonItem width=\"w-32\" height=\"h-3\" />\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// Skeleton for recent activity\nexport function SkeletonRecentActivity({\n items = 5,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div className={`space-y-4 ${className}`}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"flex items-center space-x-3\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <div className=\"flex-1 space-y-2\">\n <SkeletonItem width=\"w-full\" height=\"h-4\" />\n <SkeletonItem width=\"w-1/2\" height=\"h-3\" />\n </div>\n <SkeletonItem width=\"w-20\" height=\"h-4\" />\n </div>\n ))}\n </div>\n );\n}\n\n// Skeleton for forms\nexport function SkeletonForm({\n fields = 4,\n className = '',\n}: {\n fields?: number;\n className?: string;\n}) {\n return (\n <SkeletonCard className={className}>\n <div className=\"space-y-6\">\n {Array.from({ length: fields }).map((_, i) => (\n <div key={i} className=\"space-y-2\">\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n <SkeletonItem width=\"w-full\" height=\"h-10\" />\n </div>\n ))}\n <div className=\"flex justify-end space-x-3 pt-4\">\n <SkeletonItem width=\"w-20\" height=\"h-10\" />\n <SkeletonItem width=\"w-24\" height=\"h-10\" />\n </div>\n </div>\n </SkeletonCard>\n );\n}\n\n// Skeleton cards grid layout for game servers\nexport function SkeletonGameServerCards({\n items = 4,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div\n className={`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6 ${className}`}\n >\n {Array.from({ length: items }).map((_, i) => (\n <SkeletonGameServerCard key={i} />\n ))}\n </div>\n );\n}\n\n// Skeleton cards grid layout for nodes\nexport function SkeletonNodeCards({\n items = 3,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div\n className={`grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 2xl:grid-cols-4 gap-6 ${className}`}\n >\n {Array.from({ length: items }).map((_, i) => (\n <SkeletonNodeCard key={i} />\n ))}\n </div>\n );\n}\n\n// Skeleton for node table/list view (card-style layout)\nexport function SkeletonNodeTable({\n items = 3,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div className={`space-y-4 ${className}`}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"card overflow-hidden\">\n {/* Node Card Header */}\n <div className=\"px-6 py-4 border-b border-border bg-muted\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n {/* OS Icon */}\n <SkeletonItem width=\"w-8\" height=\"h-8\" />\n <div>\n <SkeletonItem width=\"w-32\" height=\"h-5\" className=\"mb-1\" />\n <SkeletonItem width=\"w-28\" height=\"h-4\" className=\"mb-1\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n\n <div className=\"flex items-center space-x-4\">\n {/* Node Type */}\n <div className=\"flex items-center\">\n <SkeletonItem width=\"w-6\" height=\"h-6\" className=\"mr-2\" />\n <SkeletonItem width=\"w-16\" height=\"h-4\" />\n </div>\n\n {/* Status Badge */}\n <SkeletonItem width=\"w-20\" height=\"h-6\" rounded={true} />\n </div>\n </div>\n </div>\n\n {/* Node Card Content */}\n <div className=\"px-6 py-4\">\n <div className=\"grid grid-cols-1 lg:grid-cols-4 gap-6\">\n {/* Resources Section */}\n <div className=\"lg:col-span-2\">\n <SkeletonItem width=\"w-20\" height=\"h-4\" className=\"mb-3\" />\n <div className=\"flex items-start space-x-6\">\n {/* Resource Charts */}\n {Array.from({ length: 3 }).map((_, chartIndex) => (\n <div key={chartIndex} className=\"text-center\">\n <SkeletonItem\n width=\"w-14\"\n height=\"h-14\"\n rounded={true}\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem\n width=\"w-8\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem\n width=\"w-10\"\n height=\"h-3\"\n className=\"mx-auto\"\n />\n </div>\n ))}\n </div>\n </div>\n\n {/* Game Servers Section */}\n <div>\n <SkeletonItem width=\"w-24\" height=\"h-4\" className=\"mb-3\" />\n <div className=\"space-y-2\">\n <SkeletonItem width=\"w-12\" height=\"h-5\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n\n {/* System Info Section */}\n <div>\n <SkeletonItem width=\"w-20\" height=\"h-4\" className=\"mb-3\" />\n <div className=\"space-y-2\">\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-12\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex justify-end items-center pt-4 border-t border-border mt-4\">\n <div className=\"flex space-x-2\">\n <SkeletonItem width=\"w-16\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// Skeleton for game server table/list view (card-style layout)\nexport function SkeletonGameServerTable({\n items = 3,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div className={`space-y-4 ${className}`}>\n {Array.from({ length: items }).map((_, i) => (\n <div\n key={i}\n className=\"card overflow-hidden min-h-[200px] flex flex-col\"\n >\n {/* Game Server Header */}\n <div className=\"relative px-5 py-4 border-b border-border bg-muted overflow-hidden\">\n {/* Title Row */}\n <div className=\"flex items-center space-x-3 relative z-10\">\n <div className=\"min-w-0 flex-1\">\n <SkeletonItem width=\"w-32\" height=\"h-6\" className=\"mb-2\" />\n <div className=\"flex items-center space-x-1\">\n <SkeletonItem width=\"w-4\" height=\"h-4\" rounded={true} />\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n </div>\n </div>\n </div>\n </div>\n\n {/* Game Server Info */}\n <div className=\"relative px-4 py-3 pt-0 flex-grow\">\n <div className=\"flex flex-col md:flex-row items-start md:items-center gap-4 md:gap-8\">\n {/* Player Stats and Resource Usage */}\n <div className=\"flex-shrink-0 w-full md:w-auto\">\n <div className=\"grid gap-2 grid-cols-3\">\n {/* Players Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem\n width=\"w-12\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem\n width=\"w-8\"\n height=\"h-3\"\n className=\"mx-auto\"\n />\n </div>\n\n {/* CPU Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem\n width=\"w-8\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem\n width=\"w-6\"\n height=\"h-3\"\n className=\"mx-auto\"\n />\n </div>\n\n {/* Memory Chart */}\n <div className=\"text-center\">\n <div className=\"mx-auto mb-1 w-16 h-16 rounded-full border-4 border-border animate-pulse\" />\n <SkeletonItem\n width=\"w-12\"\n height=\"h-3\"\n className=\"mx-auto mb-1\"\n />\n <SkeletonItem\n width=\"w-8\"\n height=\"h-3\"\n className=\"mx-auto\"\n />\n </div>\n </div>\n </div>\n\n {/* Additional Info */}\n <div className=\"text-sm text-muted-foreground flex-1 w-full grid grid-cols-1 md:grid-cols-2 gap-x-6 gap-y-1\">\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-12\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n <div className=\"flex justify-between\">\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </div>\n </div>\n </div>\n </div>\n\n {/* Game Server Actions */}\n <div className=\"px-4 py-3 bg-card border-t border-border\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"flex items-center gap-1\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n\n <div className=\"flex items-center gap-1\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n// Skeleton for games table (traditional DataTable layout)\nexport function SkeletonGamesTable({\n items = 3,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div\n className={`overflow-hidden shadow ring-1 ring-black ring-opacity-5 md:rounded-lg ${className}`}\n >\n <table className=\"min-w-full divide-y divide-gray-300\">\n {/* Table Header */}\n <thead className=\"bg-muted\">\n <tr>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Game\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Type\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Port\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Mode\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Status\n </th>\n <th className=\"px-6 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n Created\n </th>\n <th className=\"px-2 py-1 rounded-md bg-muted backdrop-blur-sm text-center text-xs font-medium text-muted-foreground uppercase tracking-wider sticky right-0\">\n Actions\n </th>\n </tr>\n </thead>\n\n {/* Table Body */}\n <tbody className=\"table-body-card\">\n {Array.from({ length: items }).map((_, i) => (\n <tr key={i} className=\"hover:bg-muted\">\n {/* Game Column */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center\">\n <div className=\"flex-shrink-0 h-10 w-10\">\n <SkeletonItem width=\"w-10\" height=\"h-10\" rounded={true} />\n </div>\n <div className=\"ml-4 min-w-0 flex-1\">\n <SkeletonItem width=\"w-32\" height=\"h-4\" className=\"mb-1\" />\n <SkeletonItem width=\"w-48\" height=\"h-3\" />\n </div>\n </div>\n </td>\n\n {/* Type Column */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <SkeletonItem width=\"w-20\" height=\"h-4\" className=\"mb-1\" />\n <SkeletonItem width=\"w-16\" height=\"h-3\" />\n </td>\n\n {/* Port Column */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-16\" height=\"h-6\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-3\" />\n </div>\n </td>\n\n {/* Mode Column */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <SkeletonItem\n width=\"w-16\"\n height=\"h-6\"\n rounded={true}\n className=\"mb-1\"\n />\n <SkeletonItem width=\"w-24\" height=\"h-3\" />\n </td>\n\n {/* Status Column */}\n <td className=\"px-6 py-4 whitespace-nowrap\">\n <SkeletonItem width=\"w-16\" height=\"h-6\" rounded={true} />\n </td>\n\n {/* Created Column */}\n <td className=\"px-6 py-4 whitespace-nowrap text-sm text-muted-foreground\">\n <SkeletonItem width=\"w-20\" height=\"h-4\" />\n </td>\n\n {/* Actions Column */}\n <td className=\"px-6 py-4 whitespace-nowrap text-right text-sm font-medium sticky right-0 bg-card\">\n <div className=\"flex items-center justify-end space-x-1\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\n// Skeleton for environments list (card-style layout)\nexport function SkeletonEnvironmentsList({\n items = 3,\n className = '',\n}: {\n items?: number;\n className?: string;\n}) {\n return (\n <div className={`space-y-4 ${className}`}>\n {Array.from({ length: items }).map((_, i) => (\n <div key={i} className=\"card p-3\">\n {/* Environment Header */}\n <div className=\"p-4 border-b border-border\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-3 w-full\">\n <SkeletonItem width=\"w-5\" height=\"h-5\" />\n <div className=\"flex items-center justify-between w-full pr-6 md:pr-12\">\n <div className=\"space-y-1\">\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-24\" height=\"h-5\" />\n <SkeletonItem width=\"w-16\" height=\"h-5\" rounded={true} />\n </div>\n <SkeletonItem width=\"w-48\" height=\"h-3\" />\n </div>\n <div className=\"text-xs text-muted-foreground\">\n <SkeletonItem width=\"w-20\" height=\"h-3\" />\n </div>\n </div>\n </div>\n <div className=\"flex items-center space-x-2\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n\n {/* Environment Variables */}\n <div className=\"p-6\">\n {Array.from({ length: 2 + (i % 3) }).map((_, varIndex) => (\n <div key={varIndex} className=\"mb-4 last:mb-0\">\n <div className=\"grid grid-cols-12 gap-4 items-center\">\n <div className=\"col-span-5\">\n <SkeletonItem width=\"w-32\" height=\"h-4\" className=\"mb-1\" />\n <SkeletonItem width=\"w-48\" height=\"h-3\" />\n </div>\n <div className=\"col-span-5 flex items-center space-x-2\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n <SkeletonItem width=\"w-24\" height=\"h-4\" />\n </div>\n <div className=\"col-span-2 flex justify-end\">\n <SkeletonItem width=\"w-8\" height=\"h-8\" rounded={true} />\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport {\n RiEyeLine,\n RiEyeOffLine,\n RiCloseLine,\n RiRefreshLine,\n RiFileCopyLine,\n RiCheckLine,\n} from 'react-icons/ri';\nimport { SmartSelect } from './SmartDropdown';\nimport { SkeletonItem } from './Skeleton';\n\ninterface SelectOption {\n value: string;\n label: string;\n description?: string;\n}\n\ntype IconConfig =\n | React.ReactNode\n | { left?: React.ReactNode; right?: React.ReactNode };\n\ninterface FormInputProps {\n label?: string;\n name: string;\n type?:\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'select'\n | 'checkbox'\n | 'textarea'\n | 'color';\n value: string | number | boolean;\n onChange: (\n e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n ) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string | React.ReactNode;\n className?: string;\n inputClassName?: string;\n min?: number;\n max?: number;\n step?: number;\n maxLength?: number;\n autoComplete?: string;\n description?: string | React.ReactNode;\n footerDescription?: string | React.ReactNode;\n autoFocus?: boolean;\n onKeyDown?: (\n e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n onBlur?: (\n e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>\n ) => void;\n // Icon props\n icon?: IconConfig;\n // Select-specific props\n options?: SelectOption[];\n multiSelect?: boolean;\n selectWidth?: number;\n searchable?: boolean;\n clearable?: boolean;\n // Textarea-specific props\n rows?: number;\n // Password-specific props\n showHidePassword?: boolean;\n onGeneratePassword?: () => void; // New prop for password generation\n // Loading state\n isLoading?: boolean;\n // Copy to clipboard\n copyable?: boolean;\n // Read-only display (no onChange required)\n readOnly?: boolean;\n}\n\nexport default function FormInput({\n label,\n name,\n type = 'text',\n value,\n onChange,\n placeholder,\n required = false,\n disabled = false,\n error,\n className = '',\n inputClassName = '',\n min,\n max,\n step,\n maxLength,\n autoComplete,\n description,\n footerDescription,\n autoFocus = false,\n onKeyDown,\n onBlur,\n icon,\n options = [],\n multiSelect = false,\n selectWidth,\n searchable = false,\n clearable = true,\n rows = 3,\n showHidePassword = false,\n onGeneratePassword,\n isLoading = false,\n copyable = false,\n readOnly = false,\n}: FormInputProps) {\n const [showPassword, setShowPassword] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(String(value));\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n };\n\n // Helper function to determine if icons should be shown for this input type\n const shouldShowIcons = (inputType: string) => {\n return inputType !== 'checkbox' && inputType !== 'textarea';\n };\n\n // Helper function to get icon configuration\n const getIconConfig = (\n iconProp: IconConfig | undefined\n ): { left: React.ReactNode; right: React.ReactNode } => {\n if (!iconProp) return { left: null, right: null };\n\n // If it's a React element (like <RiUserLine />), treat it as a left icon\n if (React.isValidElement(iconProp)) {\n return { left: iconProp, right: null };\n }\n\n // If it's an object with left/right properties\n if (\n typeof iconProp === 'object' &&\n iconProp !== null &&\n ('left' in iconProp || 'right' in iconProp)\n ) {\n return { left: iconProp.left || null, right: iconProp.right || null };\n }\n\n // Fallback: treat as left icon (but only if it's a valid ReactNode)\n return {\n left: React.isValidElement(iconProp) ? iconProp : null,\n right: null,\n };\n };\n\n // Helper function to render icon\n const renderIcon = (\n iconNode: React.ReactNode,\n position: 'left' | 'right'\n ) => {\n if (!iconNode) return null;\n\n // For number inputs, move right icons further left to avoid browser arrows\n const rightPositionClass =\n position === 'right' && type === 'number'\n ? 'right-4 pr-3' // Move slightly left for number inputs\n : position === 'right'\n ? 'right-0 pr-3' // Normal position for other inputs\n : 'left-0 pl-3'; // Left position unchanged\n\n return (\n <div\n className={`absolute inset-y-0 ${rightPositionClass} flex items-center pointer-events-none`}\n >\n <div className=\"text-muted-foreground\">{iconNode}</div>\n </div>\n );\n };\n\n // Helper function to get input padding classes based on icons\n const getInputPaddingClasses = (\n inputType: string,\n iconConfig: { left: any; right: any }\n ) => {\n if (!shouldShowIcons(inputType)) return '';\n\n const paddingClasses = [];\n if (iconConfig.left) paddingClasses.push('pl-10');\n if (iconConfig.right) {\n // For number inputs, add extra padding to account for moved icon\n paddingClasses.push(inputType === 'number' ? 'pr-12' : 'pr-10');\n }\n\n return paddingClasses.join(' ');\n };\n\n const handleSelectChange = (selectedValue: string) => {\n // Create a synthetic event to maintain compatibility with existing onChange handlers\n const syntheticEvent = {\n target: {\n name,\n value: selectedValue,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n onChange(syntheticEvent);\n };\n\n // Skeleton component for loading state - shows real labels, skeletons only the input\n const SkeletonInput = () => {\n const iconConfig = getIconConfig(icon);\n const hasLeftIcon = iconConfig.left;\n const hasRightIcon = iconConfig.right;\n\n if (type === 'checkbox') {\n return (\n <div className=\"flex items-center p-2 space-x-3 h-full\">\n <div className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-muted\">\n <span className=\"inline-block h-4 w-4 transform rounded-full bg-white border border-border translate-x-1\" />\n </div>\n <div className=\"flex flex-col\">\n <label className=\"form-label\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n </div>\n );\n }\n\n if (type === 'textarea') {\n return (\n <div className=\"space-y-2\">\n <label className=\"form-label\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-sm text-secondary-foreground\">{description}</p>\n )}\n <div className=\"relative\">\n <SkeletonItem\n width=\"w-full\"\n height=\"h-24\"\n className={`rounded-md`}\n />\n </div>\n {footerDescription && (\n <p className=\"text-sm text-secondary-foreground\">\n {footerDescription}\n </p>\n )}\n </div>\n );\n }\n\n if (type === 'color') {\n return (\n <div className=\"space-y-2\">\n <label className=\"form-label\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-sm text-secondary-foreground\">{description}</p>\n )}\n <div className=\"flex items-center space-x-3\">\n <SkeletonItem width=\"w-10\" height=\"h-10\" className=\"rounded-md\" />\n <div className=\"relative\">\n <SkeletonItem width=\"w-24\" height=\"h-10\" className=\"rounded-md\" />\n </div>\n </div>\n </div>\n );\n }\n\n // Default input skeleton (text, email, password, number, tel, url, select)\n return (\n <div>\n <label className=\"form-label\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {description && (\n <p className=\"text-sm text-secondary-foreground\">{description}</p>\n )}\n <div className=\"relative\">\n <SkeletonItem\n width=\"w-full\"\n height=\"h-10\"\n className={`rounded-md ${hasLeftIcon ? 'pl-10' : ''\n } ${hasRightIcon ? 'pr-10' : ''}`}\n />\n {hasLeftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center\">\n <SkeletonItem width=\"w-5\" height=\"h-5\" className=\"rounded-full\" />\n </div>\n )}\n {hasRightIcon && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center\">\n <SkeletonItem width=\"w-5\" height=\"h-5\" className=\"rounded-full\" />\n </div>\n )}\n </div>\n {footerDescription && (\n <p className=\"text-sm text-secondary-foreground\">\n {footerDescription}\n </p>\n )}\n </div>\n );\n };\n\n return (\n <div className={`form-group ${className}`}>\n {isLoading ? (\n <SkeletonInput />\n ) : type === 'checkbox' ? (\n <div className=\"flex items-center p-2 space-x-3 h-full\">\n {/* Visually hidden but accessible checkbox for form submission and accessibility */}\n <input\n id={name}\n name={name}\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={e => {\n // Update the visual state immediately\n const newValue = e.target.checked;\n // Create a synthetic event that matches what the parent expects\n const syntheticEvent = {\n target: {\n name: e.target.name,\n value: newValue,\n checked: newValue,\n },\n currentTarget: {\n name: e.target.name,\n value: newValue,\n checked: newValue,\n },\n } as unknown as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }}\n required={required}\n disabled={disabled}\n onKeyDown={onKeyDown}\n className=\"sr-only\"\n aria-label={label}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n aria-invalid={error ? 'true' : 'false'}\n />\n\n {/* Custom toggle switch */}\n <button\n type=\"button\"\n onClick={() => {\n if (!disabled) {\n // Trigger the hidden checkbox instead of creating synthetic event\n const checkbox = document.getElementById(\n name\n ) as HTMLInputElement;\n if (checkbox) {\n checkbox.click();\n }\n }\n }}\n disabled={disabled}\n className={`\n relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\n ${Boolean(value) ? 'bg-primary' : 'bg-muted'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}\n ${error ? 'ring-2 ring-destructive' : ''}\n `}\n aria-label={`${label}${required ? ' (required)' : ''}`}\n aria-describedby={name}\n >\n <span\n className={`\n inline-block h-4 w-4 transform rounded-full bg-background border border-border transition duration-200 ease-in-out\n ${Boolean(value) ? 'translate-x-6' : 'translate-x-1'}\n `}\n />\n </button>\n\n {/* Label and description inline */}\n <div className=\"flex flex-col\">\n <label\n htmlFor={name}\n className=\"text-sm font-medium text-foreground cursor-pointer\"\n onClick={() => {\n if (!disabled) {\n // Trigger the hidden checkbox when label is clicked\n const checkbox = document.getElementById(\n name\n ) as HTMLInputElement;\n if (checkbox) {\n checkbox.click();\n }\n }\n }}\n >\n {label}\n {required && (\n <span className=\"text-destructive ml-1\" aria-label=\"required\">\n *\n </span>\n )}\n </label>\n {description && (\n <span\n id={`${name}-description`}\n className=\"text-xs text-muted-foreground\"\n >\n {description}\n </span>\n )}\n </div>\n\n {error && (\n <div id={`${name}-error`} className=\"form-error\" role=\"alert\">\n {typeof error === 'string' ? <p>{error}</p> : error}\n </div>\n )}\n </div>\n ) : (\n <>\n {label && (\n <label htmlFor={name} className=\"form-label\">\n {label}\n {required && <span className=\"form-label-required\">*</span>}\n </label>\n )}\n {description && (\n <p id={`${name}-description`} className=\"form-description\">\n {description}\n </p>\n )}\n {type === 'select' ? (\n <div className=\"relative\">\n <SmartSelect\n value={\n multiSelect\n ? Array.isArray(value)\n ? value\n : value\n ? String(value).split(',')\n : []\n : String(value)\n }\n onChange={\n multiSelect\n ? (selectedValue: string | string[]) => {\n // Create a synthetic event for the select change\n const syntheticEvent = {\n target: {\n name,\n value: Array.isArray(selectedValue) ? selectedValue.join(',') : selectedValue,\n },\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(syntheticEvent);\n }\n : (selectedValue: string | string[]) => {\n // Create a synthetic event for the select change\n const syntheticEvent = {\n target: {\n name,\n value: selectedValue,\n },\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(syntheticEvent);\n }\n }\n options={options}\n placeholder={placeholder || 'Select an option...'}\n className={`form-input ${error ? 'form-input-error' : ''} ${disabled ? 'opacity-50 cursor-not-allowed' : ''} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n multiple={multiSelect}\n width={selectWidth}\n searchable={searchable}\n clearable={clearable}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n </div>\n ) : type === 'textarea' ? (\n <textarea\n id={name}\n name={name}\n value={value as string}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n rows={rows}\n maxLength={maxLength}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${inputClassName}`}\n />\n ) : type === 'color' ? (\n <div className=\"flex items-center space-x-3\">\n <div className=\"relative w-10 h-10 border border-input rounded-md overflow-hidden bg-card\">\n <input\n id={name}\n name={name}\n type=\"color\"\n value={value as string}\n onChange={onChange}\n required={required}\n disabled={disabled}\n className=\"absolute inset-0 w-full h-full cursor-pointer opacity-0\"\n />\n <div\n className=\"w-full h-full rounded-md\"\n style={{ backgroundColor: value as string }}\n />\n </div>\n\n <div className=\"relative\">\n <input\n id={`${name}-text`}\n name={`${name}-text`}\n type=\"text\"\n value={value as string}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n className={`form-input max-w-24 ${error ? 'form-input-error' : ''} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n aria-label={`${label} text input`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n </div>\n </div>\n ) : showHidePassword && type === 'password' ? (\n <div className=\"relative\">\n <input\n id={name}\n name={name}\n type={showPassword ? 'text' : 'password'}\n value={value as string | number}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${readOnly ? 'bg-muted cursor-default' : ''} ${copyable ? 'pr-20' : 'pr-10'} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n {/* Copy button for password */}\n {copyable && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className=\"absolute inset-y-0 right-8 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10\"\n aria-label={`Copy ${label}`}\n title={copied ? 'Copied!' : `Copy ${label}`}\n >\n {copied ? (\n <RiCheckLine className=\"w-4 h-4 text-green-500\" aria-hidden=\"true\" />\n ) : (\n <RiFileCopyLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n title={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <RiEyeOffLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n ) : (\n <RiEyeLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n {onGeneratePassword && !readOnly && (\n <button\n type=\"button\"\n onClick={onGeneratePassword}\n className={`absolute inset-y-0 ${copyable ? 'right-16' : 'right-8'} flex items-center pr-3 text-muted-foreground hover:text-foreground transition-colors duration-200 z-10`}\n aria-label=\"Generate new password\"\n title=\"Generate new password\"\n >\n <RiRefreshLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n ) : (\n <div className=\"relative group\">\n <input\n id={name}\n name={name}\n type={type}\n value={value as string | number}\n onChange={onChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n maxLength={maxLength}\n autoComplete={autoComplete}\n autoFocus={autoFocus}\n onKeyDown={onKeyDown}\n onBlur={onBlur}\n aria-invalid={error ? 'true' : 'false'}\n aria-describedby={\n error\n ? `${name}-error`\n : description\n ? `${name}-description`\n : undefined\n }\n className={`form-input ${error ? 'form-input-error' : ''} ${readOnly ? 'bg-muted cursor-default' : ''} ${copyable ? 'pr-10' : ''} ${getInputPaddingClasses(type, getIconConfig(icon))} ${inputClassName}`}\n />\n {shouldShowIcons(type) &&\n (() => {\n const iconConfig = getIconConfig(icon);\n return (\n <>\n {renderIcon(iconConfig.left, 'left')}\n {renderIcon(iconConfig.right, 'right')}\n </>\n );\n })()}\n {/* Copy button */}\n {copyable && (\n <button\n type=\"button\"\n onClick={handleCopy}\n className={`absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground transition-all duration-200 z-10`}\n aria-label={`Copy ${label}`}\n title={copied ? 'Copied!' : `Copy ${label}`}\n >\n {copied ? (\n <RiCheckLine className=\"w-4 h-4 text-green-500\" aria-hidden=\"true\" />\n ) : (\n <RiFileCopyLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n {/* Clear button for text inputs */}\n {clearable && !copyable && value !== '' && value !== null && value !== undefined && !disabled && !readOnly && (\n <button\n type=\"button\"\n onClick={() => {\n const syntheticEvent = {\n target: { name, value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(syntheticEvent);\n }}\n className={`absolute inset-y-0 ${type === 'number' ? 'right-4' : 'right-0'} flex items-center pr-3 text-muted-foreground hover:text-muted-foreground transition-all duration-200 z-10 opacity-0 group-hover:opacity-100`}\n aria-label={`Clear ${label}`}\n title={`Clear ${label}`}\n >\n <RiCloseLine className=\"w-4 h-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n )}\n {footerDescription && (\n <p className=\"text-xs mt-1\">{footerDescription}</p>\n )}\n {error && (\n <div id={`${name}-error`} className=\"form-error\" role=\"alert\">\n {typeof error === 'string' ? <p>{error}</p> : error}\n </div>\n )}\n </>\n )}\n </div>\n );\n}\n","import React, { ReactNode } from 'react';\n\ninterface FormSectionProps {\n title: string;\n description?: string;\n children: ReactNode;\n className?: string;\n}\n\nexport default function FormSection({\n title,\n description,\n children,\n className = '',\n}: FormSectionProps) {\n return (\n <div className={`space-y-4 ${className}`}>\n <div>\n <h3 className=\"text-lg font-medium \">{title}</h3>\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n}\n","import React from 'react';\n\ninterface GridProps {\n children: React.ReactNode;\n cols?: 1 | 2 | 3 | 4 | 5 | 6 | 12;\n gap?: 1 | 2 | 3 | 4 | 6 | 8;\n className?: string;\n}\n\nexport default function Grid({\n children,\n cols = 1,\n gap = 4,\n className = '',\n}: GridProps) {\n const colClasses = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5',\n 6: 'grid-cols-2 md:grid-cols-3 lg:grid-cols-6',\n 12: 'grid-cols-12',\n };\n\n const gapClasses = {\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n 6: 'gap-6',\n 8: 'gap-8',\n };\n\n return (\n <div className={`grid ${colClasses[cols]} ${gapClasses[gap]} ${className}`}>\n {children}\n </div>\n );\n}\n\nexport function GridItem({\n children,\n span = 1,\n className = '',\n}: {\n children: React.ReactNode;\n span?: number;\n className?: string;\n}) {\n return (\n <div className={`col-span-${span} ${className}`}>\n {children}\n </div>\n );\n}\n","import React from 'react';\n\ninterface InfoBoxProps {\n title: string;\n children: React.ReactNode;\n variant?: 'default' | 'warning' | 'info' | 'success';\n className?: string;\n}\n\nconst variantStyles = {\n default: 'bg-accent border-border text-muted-foreground',\n warning: 'bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800 text-yellow-700 dark:text-yellow-300',\n info: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-700 dark:text-blue-300',\n success: 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-700 dark:text-green-300',\n};\n\nconst titleStyles = {\n default: 'text-foreground',\n warning: 'text-yellow-800 dark:text-yellow-200',\n info: 'text-blue-800 dark:text-blue-200',\n success: 'text-green-800 dark:text-green-200',\n};\n\nexport default function InfoBox({\n title,\n children,\n variant = 'default',\n className = ''\n}: InfoBoxProps) {\n return (\n <div className={`border rounded-md p-4 ${variantStyles[variant]} ${className}`}>\n <h4 className={`font-medium mb-2 ${titleStyles[variant]}`}>\n {title}\n </h4>\n <div className=\"text-sm space-y-1 [&>ul]:list-disc [&>ul]:list-outside [&>ul]:pl-3 [&>ol]:list-decimal [&>ol]:list-outside [&>ol]:pl-4\">\n {children}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React, { AnchorHTMLAttributes, forwardRef } from 'react';\nimport NextLink from 'next/link';\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n href: string;\n variant?: 'default' | 'primary' | 'muted';\n underline?: boolean;\n external?: boolean;\n}\n\nconst variantClasses: Record<string, string> = {\n default: 'text-foreground hover:text-primary',\n primary: 'text-primary hover:text-primary/80',\n muted: 'text-muted-foreground hover:text-foreground',\n};\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n href,\n variant = 'default',\n underline = false,\n external = false,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const classes = [\n 'transition-colors',\n variantClasses[variant],\n underline ? 'underline underline-offset-4' : 'hover:underline hover:underline-offset-4',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // External links\n if (external || href.startsWith('http')) {\n return (\n <a\n ref={ref}\n href={href}\n className={classes}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n {...props}\n >\n {children}\n </a>\n );\n }\n\n // Internal Next.js links\n return (\n <NextLink ref={ref} href={href} className={classes} {...props}>\n {children}\n </NextLink>\n );\n }\n);\n\nLink.displayName = 'Link';\n\nexport default Link;\n","'use client';\n\ninterface LoadingSpinnerProps {\n message?: string;\n className?: string;\n showMessage?: boolean;\n}\n\nconst LoadingSpinner = ({\n message = 'Initializing...',\n className,\n showMessage = false,\n}: LoadingSpinnerProps) => {\n // Use provided className or default to full viewport height container with centering\n const containerClasses =\n className !== undefined\n ? className\n : 'flex items-center justify-center h-screen min-h-screen';\n\n return (\n <div\n className={containerClasses}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={message}\n >\n <div className=\"text-center\">\n {/* Scale loader */}\n <div\n className=\"flex items-center justify-center space-x-2 mb-6\"\n aria-hidden=\"true\"\n >\n <div className=\"w-1.5 h-12 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0s]\"></div>\n <div className=\"w-1.5 h-8 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.2s]\"></div>\n <div className=\"w-1.5 h-8 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.4s]\"></div>\n <div className=\"w-1.5 h-12 bg-gradient-to-t from-primary-600 to-primary-400 rounded-full shadow-sm [animation:wave_1.2s_ease-in-out_infinite] [animation-delay:0.6s]\"></div>\n </div>\n\n {/* Loading text */}\n {showMessage && (\n <div className=\"space-y-2\">\n <p\n className=\"text-sm text-secondary-foreground animate-pulse\"\n aria-live=\"polite\"\n >\n {message}\n </p>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default LoadingSpinner;\n","import React from 'react';\nimport { IconType } from 'react-icons';\n\ninterface PageHeaderProps {\n icon?: IconType;\n title: string;\n subtitle?: string;\n rightContent?: React.ReactNode;\n className?: string;\n}\n\nexport default function PageHeader({\n icon: Icon,\n title,\n subtitle,\n rightContent,\n className = '',\n}: PageHeaderProps) {\n return (\n <div className={`mb-6 lg:mb-8 ${className}`}>\n <div className=\"header-layout\">\n <div className=\"flex items-center space-x-3\">\n {Icon && <Icon className=\"w-6 h-6 lg:w-8 lg:h-8 flex-shrink-0\" />}\n <div className=\"min-w-0\">\n <h1 className=\"text-xl lg:text-3xl font-bold text-foreground truncate\">\n {title}\n </h1>\n {subtitle && (\n <p className=\"text-sm lg:text-base text-muted-foreground\">\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {rightContent && (\n <div className=\"flex items-center space-x-2 lg:space-x-3 flex-shrink-0\">\n {rightContent}\n </div>\n )}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\n\ninterface SwitchProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n label?: string;\n description?: string;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport default function Switch({\n checked,\n onChange,\n disabled = false,\n label,\n description,\n className = '',\n size = 'md',\n}: SwitchProps) {\n const toggle = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n const sizes = {\n sm: { track: 'w-8 h-4', thumb: 'w-3 h-3', translate: 'translate-x-4' },\n md: { track: 'w-11 h-6', thumb: 'w-5 h-5', translate: 'translate-x-5' },\n lg: { track: 'w-14 h-8', thumb: 'w-7 h-7', translate: 'translate-x-6' },\n };\n\n const currentSize = sizes[size];\n\n return (\n <div className={`flex items-start ${className}`}>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n onClick={toggle}\n className={`\n relative inline-flex flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent \n transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\n ${checked ? 'bg-primary' : 'bg-muted'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n ${currentSize.track}\n `}\n >\n <span\n aria-hidden=\"true\"\n className={`\n pointer-events-none inline-block transform rounded-full bg-white shadow ring-0 \n transition duration-200 ease-in-out\n ${checked ? currentSize.translate : 'translate-x-0'}\n ${currentSize.thumb}\n `}\n />\n </button>\n {(label || description) && (\n <div className=\"ml-3 text-sm leading-6\">\n {label && (\n <label className=\"font-medium text-foreground cursor-pointer\" onClick={toggle}>\n {label}\n </label>\n )}\n {description && (\n <p className=\"text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\n\ntype TypographyElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div';\ntype TypographyVariant = 'default' | 'muted' | 'bold';\ntype TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl';\n\ninterface TypographyProps {\n as?: TypographyElement;\n variant?: TypographyVariant;\n size?: TypographySize;\n children: React.ReactNode;\n className?: string;\n}\n\nconst variantClasses: Record<TypographyVariant, string> = {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n bold: 'font-semibold',\n};\n\nconst sizeClasses: Record<TypographySize, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n base: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n '3xl': 'text-3xl',\n};\n\nexport function Typography({\n as: Element = 'p',\n variant = 'default',\n size = 'base',\n children,\n className = ''\n}: TypographyProps) {\n const classes = `${variantClasses[variant]} ${sizeClasses[size]} ${className}`;\n return <Element className={classes}>{children}</Element>;\n}\n","import React from 'react';\n\ninterface SpinnerProps {\n size?: 'sm' | 'md' | 'lg' | 'xl';\n color?: 'primary' | 'blue' | 'white' | 'current';\n className?: string;\n}\n\nconst Spinner: React.FC<SpinnerProps> = ({\n size = 'md',\n color = 'primary',\n className = '',\n}) => {\n const sizeClasses = {\n sm: 'h-4 w-4',\n md: 'h-8 w-8',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n };\n\n const colorClasses = {\n primary: 'border-primary-600',\n blue: 'border-ring',\n white: 'border-white',\n current: 'border-current',\n };\n\n const baseClasses = 'animate-spin rounded-full border-2 border-t-transparent';\n const sizeClass = sizeClasses[size];\n const colorClass = colorClasses[color];\n\n const finalClasses =\n `${baseClasses} ${sizeClass} ${colorClass} ${className}`.trim();\n\n return <div className={finalClasses}></div>;\n};\n\nexport default Spinner;\n","'use client';\n\nimport { ReactNode } from 'react';\nimport { SkeletonTable } from './Skeleton';\nimport Spinner from './Spinner';\n\ninterface DataTableProps {\n children: ReactNode;\n className?: string;\n containerClassName?: string;\n stickyActions?: boolean;\n}\n\ninterface DataTableHeaderProps {\n children: ReactNode;\n className?: string;\n}\n\ninterface DataTableBodyProps {\n children: ReactNode;\n className?: string;\n}\n\ninterface DataTableRowProps {\n children: ReactNode;\n className?: string;\n onClick?: () => void;\n hover?: boolean;\n}\n\ninterface DataTableCellProps {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n padding?: 'sm' | 'md' | 'lg';\n sticky?: 'left' | 'right';\n stickyOffset?: number;\n}\n\ninterface DataTableHeaderCellProps {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n padding?: 'sm' | 'md' | 'lg';\n sticky?: 'left' | 'right';\n stickyOffset?: number;\n}\n\n// Main table container\nexport function DataTable({\n children,\n className = '',\n containerClassName = '',\n stickyActions = false,\n}: DataTableProps) {\n return (\n <div className={`card overflow-hidden ${containerClassName}`}>\n <div className=\"overflow-x-auto\">\n <table\n role=\"table\"\n aria-label=\"Data table\"\n className={`w-full divide-y divide-border ${className} ${stickyActions ? 'relative' : ''}`}\n >\n {children}\n </table>\n </div>\n </div>\n );\n}\n\n// Table header\nexport function DataTableHeader({\n children,\n className = '',\n}: DataTableHeaderProps) {\n return <thead className={`bg-muted ${className}`}>{children}</thead>;\n}\n\n// Table body\nexport function DataTableBody({\n children,\n className = '',\n}: DataTableBodyProps) {\n return <tbody className={`table-body-card ${className}`}>{children}</tbody>;\n}\n\n// Table row\nexport function DataTableRow({\n children,\n className = '',\n onClick,\n hover = true,\n}: DataTableRowProps) {\n const baseClasses = 'hover:bg-muted transition-colors duration-150';\n const clickableClasses = onClick ? 'cursor-pointer' : '';\n const hoverClasses = hover ? baseClasses : '';\n\n return (\n <tr\n className={`${hoverClasses} ${clickableClasses} ${className}`}\n onClick={onClick}\n >\n {children}\n </tr>\n );\n}\n\n// Table header cell\nexport function DataTableHeaderCell({\n children,\n className = '',\n align = 'left',\n padding = 'md',\n sticky,\n stickyOffset = 0,\n}: DataTableHeaderCellProps) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n\n const paddingClasses = {\n sm: 'px-3 py-2',\n md: 'px-6 py-3',\n lg: 'px-8 py-4',\n };\n\n const stickyClasses = sticky\n ? `sticky ${sticky === 'left' ? 'left-0' : 'right-0'} z-10`\n : '';\n const stickyOffsetClasses =\n sticky && stickyOffset > 0\n ? sticky === 'left'\n ? `left-${stickyOffset}`\n : `right-${stickyOffset}`\n : '';\n\n // Add visual styling for sticky columns\n const stickyStyling = '';\n\n return (\n <th\n scope=\"col\"\n className={`${paddingClasses[padding]} ${alignClasses[align]} text-xs font-medium text-muted-foreground uppercase tracking-wider ${stickyClasses} ${stickyOffsetClasses} ${stickyStyling} ${className}`}\n >\n {children}\n </th>\n );\n}\n\n// Table cell\nexport function DataTableCell({\n children,\n className = '',\n align = 'left',\n padding = 'md',\n sticky,\n stickyOffset = 0,\n}: DataTableCellProps) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n };\n\n const paddingClasses = {\n sm: 'px-3 py-2',\n md: 'px-6 py-4',\n lg: 'px-8 py-6',\n };\n\n const stickyClasses = sticky\n ? `sticky ${sticky === 'left' ? 'left-0' : 'right-0'} z-10`\n : '';\n const stickyOffsetClasses =\n sticky && stickyOffset > 0\n ? sticky === 'left'\n ? `left-${stickyOffset}`\n : `right-${stickyOffset}`\n : '';\n\n // Add visual styling for sticky columns\n const stickyStyling = '';\n\n return (\n <td\n className={`${paddingClasses[padding]} whitespace-nowrap ${alignClasses[align]} text-sm ${stickyClasses} ${stickyOffsetClasses} ${stickyStyling} ${className}`}\n >\n {children}\n </td>\n );\n}\n\n// Empty state component\nexport function DataTableEmptyState({\n icon: Icon,\n title,\n description,\n action,\n variant = 'table',\n}: {\n icon: React.ComponentType<{ className?: string }>;\n title: string;\n description: string;\n action?: ReactNode;\n variant?: 'table' | 'div';\n}) {\n const content = (\n <>\n <Icon className=\"w-20 h-20 text-primary-500 mx-auto mb-4\" />\n <h3 className=\"text-lg font-medium text-foreground mb-2\">{title}</h3>\n <p className=\"text-muted-foreground mb-6\">{description}</p>\n {action && <div className=\"flex justify-center\">{action}</div>}\n </>\n );\n\n if (variant === 'div') {\n return (\n <div className=\"card card-padding text-center lg:p-24\">{content}</div>\n );\n }\n\n return (\n <tr>\n <td colSpan={100} className=\"px-6 py-12 text-center\">\n {content}\n </td>\n </tr>\n );\n}\n\n// Loading state component\nexport function DataTableLoadingState({\n message = 'Loading...',\n rows = 5,\n columns = 4,\n}: {\n message?: string;\n rows?: number;\n columns?: number;\n}) {\n return (\n <div className=\"card card-padding\">\n <div className=\"text-center mb-4\">\n <Spinner size=\"md\" color=\"primary\" className=\"mx-auto mb-2\" />\n <p className=\"text-muted-foreground\">{message}</p>\n </div>\n <SkeletonTable rows={rows} columns={columns} showHeader={false} />\n </div>\n );\n}\n\n// Status badge component\nexport function StatusBadge({\n status,\n variant = 'default',\n}: {\n status: string;\n variant?: 'default' | 'success' | 'warning' | 'error' | 'info';\n}) {\n const variantClasses = {\n default: 'bg-muted text-muted-foreground',\n success: 'bg-success text-success-dark',\n warning: 'bg-yellow-100 text-yellow-800',\n error: 'bg-red-100 text-red-800',\n info: 'bg-primary-100 text-primary-800',\n };\n\n return <span className={`badge ${variantClasses[variant]}`}>{status}</span>;\n}\n\n// Enhanced actions container with better visual styling\nexport function DataTableActions({\n children,\n className = '',\n enhanced = false,\n}: {\n children: ReactNode;\n className?: string;\n enhanced?: boolean;\n}) {\n const baseClasses = 'flex items-center justify-end space-x-2 dt-actions';\n const enhancedClasses = enhanced\n ? 'px-2 py-1 rounded-md bg-card backdrop-blur-sm'\n : '';\n\n return (\n <div className={`${baseClasses} ${enhancedClasses} ${className}`}>\n {children}\n </div>\n );\n}\n\n// Sticky actions column wrapper - use this to wrap your actions column\nexport function StickyActionsColumn({\n children,\n className = '',\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={`border-l border-border shadow-[-1px_0_3px_-1px_rgba(0,0,0,0.02)] ${className}`}\n >\n {children}\n </div>\n );\n}\n","import React from 'react';\nimport { Tooltip } from 'react-tooltip';\n\ninterface SharedTooltipProps {\n id: string;\n place?: 'top' | 'bottom' | 'left' | 'right';\n offset?: number;\n delayShow?: number;\n delayHide?: number;\n className?: string;\n style?: React.CSSProperties;\n children?: React.ReactNode;\n}\n\nexport default function SharedTooltip({\n id,\n place = 'top',\n offset = 8,\n delayShow = 200,\n delayHide = 100,\n className = '',\n style = {},\n children,\n}: SharedTooltipProps) {\n return (\n <Tooltip\n id={id}\n place={place}\n offset={offset}\n delayShow={delayShow}\n delayHide={delayHide}\n className={`!bg-popover !text-popover-foreground !border !border-border !shadow-md !text-xs !px-2 !py-1 !rounded-md z-50 ${className}`}\n style={style}\n positionStrategy=\"fixed\"\n render={children ? () => <>{children}</> : undefined}\n />\n );\n}\n","'use client';\n\ninterface CountBadgeProps {\n count: number;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n}\n\nexport default function CountBadge({\n count,\n className = '',\n size = 'sm',\n variant = 'primary',\n}: CountBadgeProps) {\n const sizeClasses = {\n sm: 'text-xs px-1.5 py-0.5 min-w-[18px]',\n md: 'text-sm px-2 py-1 min-w-[20px]',\n lg: 'text-base px-2.5 py-1.5 min-w-[24px]',\n };\n\n const variantClasses = {\n primary: 'bg-ring ',\n secondary: 'bg-muted0 ',\n success: 'bg-green-500 ',\n warning: 'bg-yellow-500 ',\n error: 'bg-red-500 ',\n };\n\n if (count <= 0) return null;\n\n return (\n <span\n aria-label={`Count: ${count}`}\n className={`${sizeClasses[size]} ${variantClasses[variant]} rounded-full text-center font-medium ${className}`}\n >\n {count}\n </span>\n );\n}\n","'use client';\n\nimport { RiCloseLine } from 'react-icons/ri';\n\ninterface ClearButtonProps {\n onClick: (e: React.MouseEvent) => void;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n variant?: 'overlay' | 'inline' | 'ghost';\n tooltipId?: string;\n tooltipContent?: string;\n}\n\nexport default function ClearButton({\n onClick,\n className = '',\n size = 'sm',\n variant = 'overlay',\n tooltipId,\n tooltipContent = 'Clear',\n}: ClearButtonProps) {\n const sizeClasses = {\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n };\n\n const iconSizeClasses = {\n sm: 'w-3 h-3',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n };\n\n const variantClasses = {\n overlay:\n 'absolute -top-1 -right-1 bg-red-500 rounded-full flex items-center justify-center hover:bg-red-600 transition-colors cursor-pointer',\n inline:\n 'bg-red-500 rounded-full flex items-center justify-center hover:bg-red-600 transition-colors',\n ghost:\n 'text-muted-foreground hover:text-muted-foreground transition-colors',\n };\n\n const baseProps = {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation();\n onClick(e);\n },\n className: `${sizeClasses[size]} ${variantClasses[variant]} ${className}`,\n title: tooltipContent,\n };\n\n const tooltipProps = tooltipId\n ? {\n 'data-tooltip-id': tooltipId,\n 'data-tooltip-content': tooltipContent,\n }\n : {};\n\n // Use span for overlay variant to avoid nested buttons\n const Element = variant === 'overlay' ? 'span' : 'button';\n\n return (\n <Element {...baseProps} {...tooltipProps}>\n <RiCloseLine className={iconSizeClasses[size]} />\n </Element>\n );\n}\n","'use client';\n\nimport { ReactNode } from 'react';\nimport CountBadge from './CountBadge';\nimport ClearButton from './ClearButton';\n\ninterface IconButtonWithCountProps {\n icon: ReactNode;\n label?: string;\n count?: number;\n onClick: () => void;\n onClear?: () => void;\n showLabel?: boolean;\n className?: string;\n buttonClassName?: string;\n countVariant?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n clearVariant?: 'overlay' | 'inline' | 'ghost';\n tooltipId?: string;\n tooltipContent?: string;\n clearTooltipId?: string;\n clearTooltipContent?: string;\n}\n\nexport default function IconButtonWithCount({\n icon,\n label,\n count = 0,\n onClick,\n onClear,\n showLabel = true,\n className = '',\n buttonClassName = '',\n countVariant = 'primary',\n clearVariant = 'overlay',\n tooltipId,\n tooltipContent,\n clearTooltipId,\n clearTooltipContent = 'Clear',\n}: IconButtonWithCountProps) {\n const hasActiveCount = count > 0;\n const shouldShowLabel = showLabel && !hasActiveCount;\n\n return (\n <button\n onClick={onClick}\n className={`btn-alt btn-md flex items-center space-x-1 relative ${buttonClassName} ${className}`}\n data-tooltip-id={tooltipId}\n data-tooltip-content={tooltipContent}\n >\n {icon}\n {shouldShowLabel && label && (\n <span className=\"hidden sm:inline\">{label}</span>\n )}\n {hasActiveCount && <CountBadge count={count} variant={countVariant} />}\n {hasActiveCount && onClear && (\n <ClearButton\n onClick={onClear}\n variant={clearVariant}\n tooltipId={clearTooltipId}\n tooltipContent={clearTooltipContent}\n />\n )}\n </button>\n );\n}\n","'use client';\n\nimport React, { useState, useCallback } from 'react';\nimport Link from 'next/link';\nimport SharedTooltip from '../SharedTooltip';\nimport { useIntlayer } from 'next-intlayer';\nimport {\n RiEditLine,\n RiEditFill,\n RiDeleteBinLine,\n RiDeleteBinFill,\n RiStopCircleLine,\n RiStopCircleFill,\n RiPlayCircleLine,\n RiPlayCircleFill,\n RiEyeLine,\n RiEyeFill,\n RiBarChartLine,\n RiBarChartFill,\n RiPlayLine,\n RiPlayFill,\n RiStopLine,\n RiStopFill,\n RiRestartLine,\n RiRestartFill,\n RiPauseLine,\n RiPauseFill,\n RiFileCopyLine,\n RiFileCopyFill,\n} from 'react-icons/ri';\n\nexport interface ActionButtonProps {\n icon?: React.ComponentType<{ className?: string }>;\n label?: string;\n onClick?: () => void | Promise<void>;\n href?: string;\n disabled?: boolean;\n loading?: boolean; // External loading state\n loadingIcon?: React.ComponentType<{ className?: string }>; // Custom loading icon\n disableLoadingSpin?: boolean; // Disable spin animation for custom loading icons\n size?: 'sm' | 'md' | 'lg';\n iconOnly?: boolean;\n className?: string;\n title?: string;\n tooltipId?: string; // Unique ID for tooltip\n tooltipPlace?: 'top' | 'bottom' | 'left' | 'right';\n tooltipOffset?: number;\n tooltipDelayShow?: number;\n tooltipDelayHide?: number;\n type?: 'button' | 'submit' | 'reset';\n variant?:\n | 'primary'\n | 'secondary'\n | 'danger'\n | 'success'\n | 'warning'\n | 'info'\n | 'edit'\n | 'delete'\n | 'deactivate'\n | 'activate'\n | 'view'\n | 'metrics'\n | 'start'\n | 'stop'\n | 'restart'\n | 'pause'\n | 'clone';\n terminalMode?: boolean; // Special prop for terminal styling\n fill?: boolean; // Use filled icons instead of outlined\n [key: string]: any; // Allow additional props to be passed through\n}\n\nexport default function ActionButton({\n icon: IconComponent,\n label,\n onClick,\n href,\n disabled = false,\n size = 'md',\n iconOnly = false,\n className = '',\n title,\n tooltipId,\n tooltipPlace = 'bottom',\n tooltipOffset = 12,\n tooltipDelayShow = 200,\n tooltipDelayHide = 100,\n type = 'button',\n variant,\n terminalMode = false,\n fill = false,\n loading: externalLoading, // Extract loading prop to prevent it from being passed to DOM\n loadingIcon: LoadingIconComponent, // Custom loading icon\n disableLoadingSpin = false, // Disable spin animation for custom loading icons\n ...restProps\n}: ActionButtonProps) {\n // Internal loading state for instant feedback\n const [loading, setLoading] = useState(false);\n\n // Handle click with instant loading feedback\n const handleClick = useCallback(async () => {\n if (onClick && !disabled && !loading) {\n // Set loading immediately for instant visual feedback\n setLoading(true);\n try {\n await onClick();\n } catch (error) {\n console.error('ActionButton onClick error:', error);\n } finally {\n // Always clear loading state when action completes\n setLoading(false);\n }\n }\n }, [onClick, disabled, loading]);\n\n const iconSizes = {\n sm: terminalMode ? 'w-4 h-4' : 'w-4 h-4',\n md: terminalMode ? 'w-4 h-4' : 'w-4 h-4',\n lg: terminalMode ? 'w-5 h-5' : 'w-5 h-5',\n };\n\n // Consistent height classes matching the global button system\n const heightClasses = {\n sm: terminalMode ? '' : 'btn-sm',\n md: terminalMode ? '' : 'btn-md',\n lg: terminalMode ? '' : 'btn-lg',\n };\n\n const paddingClasses = iconOnly ? (terminalMode ? '' : 'p-2') : 'px-3 py-1.5';\n\n // Get translations\n const t = useIntlayer('action-button');\n\n const getVariantConfig = () => {\n switch (variant) {\n case 'edit':\n return {\n icon: fill ? RiEditFill : RiEditLine,\n label: t.edit,\n className: 'btn-secondary',\n };\n case 'delete':\n return {\n icon: fill ? RiDeleteBinFill : RiDeleteBinLine,\n label: t.delete,\n className: 'btn-danger',\n };\n case 'deactivate':\n return {\n icon: fill ? RiStopCircleFill : RiStopCircleLine,\n label: t.deactivate,\n className:\n 'bg-slate-50 text-slate-600 hover:bg-slate-100 hover:text-slate-700 border border-slate-200 transition-all duration-300 ease-in-out',\n };\n case 'activate':\n return {\n icon: fill ? RiPlayCircleFill : RiPlayCircleLine,\n label: t.activate,\n className:\n 'bg-emerald-50 text-emerald-600 hover:bg-emerald-100 hover:text-emerald-700 border border-emerald-200 transition-all duration-300 ease-in-out',\n };\n case 'view':\n return {\n icon: fill ? RiEyeFill : RiEyeLine,\n label: t.view,\n className:\n 'bg-muted text-muted-foreground hover:bg-gray-100 hover:text-foreground border border-border transition-all duration-300 ease-in-out',\n };\n case 'metrics':\n return {\n icon: fill ? RiBarChartFill : RiBarChartLine,\n label: t.metrics,\n className:\n 'bg-purple-50 text-purple-600 hover:bg-purple-100 hover:text-purple-700 border border-purple-200 transition-all duration-300 ease-in-out',\n };\n case 'start':\n return {\n icon: fill ? RiPlayFill : RiPlayLine,\n label: t.start,\n className:\n 'bg-green-50 text-green-600 hover:bg-green-100 hover:text-green-700 border border-green-200 transition-all duration-300 ease-in-out',\n };\n case 'stop':\n return {\n icon: fill ? RiStopFill : RiStopLine,\n label: t.stop,\n className:\n 'bg-red-50 text-red-600 hover:bg-red-100 hover:text-red-700 border border-red-200 transition-all duration-300 ease-in-out',\n };\n case 'restart':\n return {\n icon: fill ? RiRestartFill : RiRestartLine,\n label: t.restart,\n className:\n 'bg-orange-50 text-orange-600 hover:bg-orange-100 hover:text-orange-700 border border-orange-200 transition-all duration-300 ease-in-out',\n };\n case 'pause':\n return {\n icon: fill ? RiPauseFill : RiPauseLine,\n label: t.pause,\n className:\n 'bg-yellow-50 text-yellow-600 hover:bg-yellow-100 hover:text-yellow-700 border border-yellow-200 transition-all duration-300 ease-in-out',\n };\n case 'clone':\n return {\n icon: fill ? RiFileCopyFill : RiFileCopyLine,\n label: t.clone,\n className:\n 'bg-indigo-50 text-indigo-600 hover:bg-indigo-100 hover:text-indigo-700 border border-indigo-200 transition-all duration-300 ease-in-out',\n };\n default:\n return null;\n }\n };\n\n const variantConfig = getVariantConfig();\n const variantClasses: Record<string, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n danger: 'btn-danger',\n success:\n 'bg-green-50 text-green-600 hover:bg-green-100 hover:text-green-700 border border-green-200 transition-all duration-300 ease-in-out',\n warning:\n 'bg-yellow-50 text-yellow-600 hover:bg-yellow-100 hover:text-yellow-700 border border-yellow-200 transition-all duration-300 ease-in-out',\n info: 'bg-muted text-muted-foreground hover:bg-primary hover:text-primary-foreground border border-ring transition-all duration-300 ease-in-out',\n metrics:\n 'bg-purple-50 text-purple-600 hover:bg-purple-100 hover:text-purple-700 border border-purple-200 transition-all duration-300 ease-in-out',\n };\n\n let variantClass = variantConfig\n ? variantConfig.className\n : variant\n ? variantClasses[variant]\n : '';\n\n // Apply terminal mode styling - remove background/border, change text to gray, keep hover colors\n if (terminalMode && variantClass) {\n // Extract the hover color from the original variant class\n const hoverMatch = variantClass.match(/hover:text-(\\w+)-(\\d+)/);\n const hoverColor = hoverMatch\n ? `hover:text-${hoverMatch[1]}-${hoverMatch[2]}`\n : 'hover:text-muted-foreground';\n\n // Replace the variant class with terminal styling\n variantClass = `text-muted-foreground ${hoverColor} transition-colors duration-200`;\n }\n const isDisabled = disabled || loading || externalLoading;\n\n const buttonContent = (\n <>\n {loading || externalLoading ? (\n <div\n className={`${iconSizes[size]} flex items-center justify-center flex-shrink-0 ${terminalMode ? 'text-muted-foreground p-0.5' : ''}`}\n aria-hidden=\"true\"\n >\n {LoadingIconComponent ? (\n <LoadingIconComponent\n className={`w-full h-full ${disableLoadingSpin ? '' : 'animate-spin-slow'}`}\n aria-hidden=\"true\"\n />\n ) : (\n <div\n className=\"w-full h-full border-2 border-current border-t-transparent rounded-full animate-spin\"\n aria-hidden=\"true\"\n ></div>\n )}\n </div>\n ) : (\n (variantConfig?.icon || IconComponent) && (\n <div\n className={`${iconSizes[size]} flex items-center justify-center flex-shrink-0`}\n aria-hidden=\"true\"\n >\n {variantConfig?.icon ? (\n <variantConfig.icon\n className=\"w-full h-full\"\n aria-hidden=\"true\"\n />\n ) : IconComponent ? (\n <IconComponent className=\"w-full h-full\" aria-hidden=\"true\" />\n ) : null}\n </div>\n )\n )}\n {!iconOnly &&\n (restProps.children\n ? restProps.children\n : (variantConfig?.label || label) && (\n <span className=\"flex items-center\">\n {variantConfig?.label || label}\n </span>\n ))}\n </>\n );\n\n // Determine accessible label\n const accessibleLabel =\n title || (iconOnly ? variantConfig?.label || label : undefined);\n const buttonAriaLabel =\n iconOnly && !accessibleLabel\n ? variantConfig?.label || label || 'Action button'\n : accessibleLabel;\n\n // Tooltip content can be ReactNode (Intlayer object) or string\n const tooltipContent = title || (iconOnly ? variantConfig?.label || label : undefined);\n\n const buttonClassName = `\n\n ${terminalMode\n ? 'btn-terminal'\n : `btn ${variantClass} ${paddingClasses} ${heightClasses[size]} ${className} ${isDisabled ? 'opacity-50 cursor-not-allowed' : ''}`\n }`;\n\n // Render as Link if href is provided\n if (href) {\n return (\n <>\n <Link\n href={href}\n // Only pass title if it's a string, otherwise rely on the tooltip content\n title={typeof title === 'string' ? title : undefined}\n aria-label={iconOnly ? typeof buttonAriaLabel === 'string' ? buttonAriaLabel : undefined : undefined}\n onClick={handleClick}\n className={buttonClassName}\n data-tooltip-id={tooltipId}\n aria-busy={loading || externalLoading ? 'true' : undefined}\n {...restProps}\n >\n {buttonContent}\n </Link>\n {tooltipId && (\n <SharedTooltip\n id={tooltipId}\n place={tooltipPlace}\n offset={tooltipOffset}\n delayShow={tooltipDelayShow}\n delayHide={tooltipDelayHide}\n >\n {tooltipContent}\n </SharedTooltip>\n )}\n </>\n );\n }\n\n // Otherwise render as button\n return (\n <>\n <button\n type={type}\n onClick={handleClick}\n // Only pass title if it's a string, otherwise rely on the tooltip component\n title={typeof title === 'string' ? title : undefined}\n aria-label={iconOnly ? typeof buttonAriaLabel === 'string' ? buttonAriaLabel : undefined : undefined}\n className={buttonClassName}\n data-tooltip-id={tooltipId}\n aria-busy={loading || externalLoading ? 'true' : undefined}\n {...restProps}\n disabled={isDisabled}\n >\n {buttonContent}\n </button>\n {tooltipId && (\n <SharedTooltip\n id={tooltipId}\n place={tooltipPlace}\n offset={tooltipOffset}\n delayShow={tooltipDelayShow}\n delayHide={tooltipDelayHide}\n >\n {tooltipContent}\n </SharedTooltip>\n )}\n </>\n );\n}\n","'use client';\n\nimport { ReactNode, useState } from 'react';\nimport { IconType } from 'react-icons';\nimport { RiSearchLine, RiRefreshLine, RiFilterLine } from 'react-icons/ri';\nimport SharedTooltip from './SharedTooltip';\nimport { SmartSelect } from './SmartDropdown';\nimport SmartDropdown from './SmartDropdown';\nimport FormInput from './FormInput';\nimport IconButtonWithCount from './IconButtonWithCount';\nimport { default as BaseActionButton } from './buttons/ActionButton';\n\ninterface SearchCardProps {\n title: string;\n count: number;\n total: number;\n actionButton?: ReactNode;\n children: ReactNode;\n className?: string;\n icon?: IconType;\n description?: string;\n}\n\ninterface SearchCardHeaderProps {\n title: string;\n count: number;\n total: number;\n actionButton?: ReactNode;\n icon?: IconType;\n description?: string;\n}\n\ninterface SearchCardContentProps {\n children: ReactNode;\n className?: string;\n}\n\n// Main search card container\nexport function SearchCard({\n title,\n count,\n total,\n actionButton,\n children,\n className = '',\n icon: Icon,\n description,\n}: SearchCardProps) {\n return (\n <div className={`card p-4 lg:p-6 ${className}`}>\n <SearchCardHeader\n title={title}\n count={count}\n total={total}\n actionButton={actionButton}\n icon={Icon}\n description={description}\n />\n <SearchCardContent>{children}</SearchCardContent>\n </div>\n );\n}\n\n// Search card header with title, count, action button, icon, and description\nexport function SearchCardHeader({\n title,\n count,\n total,\n actionButton,\n icon: Icon,\n description,\n}: SearchCardHeaderProps) {\n return (\n <div className=\"flex items-center justify-between gap-4 mb-6\">\n <div className=\"flex items-center space-x-3 min-w-0 flex-1\">\n {Icon && (\n <Icon className=\"w-6 h-6 lg:w-8 lg:h-8 text-foreground flex-shrink-0\" />\n )}\n <div className=\"min-w-0\">\n <h2 className=\"text-lg lg:text-2xl font-bold truncate\">{title}</h2>\n {description && (\n <p className=\"text-sm text-muted-foreground hidden md:block\">\n {description}\n </p>\n )}\n <p className=\"mt-1 lg:mt-2 text-xs text-secondary-foreground\">\n {count} of {total} {title.toLowerCase()}\n </p>\n </div>\n </div>\n\n {actionButton && (\n <div className=\"flex flex-row gap-2 lg:gap-3 flex-shrink-0\">\n {actionButton}\n </div>\n )}\n </div>\n );\n}\n\n// Search card content area\nexport function SearchCardContent({\n children,\n className = '',\n}: SearchCardContentProps) {\n return <div className={className}>{children}</div>;\n}\n\n// Search input component\nexport function SearchInput({\n placeholder,\n value,\n onChange,\n className = '',\n}: {\n placeholder: string;\n value: string;\n onChange: (value: string) => void;\n className?: string;\n}) {\n return (\n <div className={`flex-1 ${className}`}>\n <FormInput\n label=\"\"\n name=\"search\"\n type=\"text\"\n value={value}\n onChange={e => onChange(e.target.value)}\n placeholder={placeholder}\n icon={{\n left: <RiSearchLine className=\"w-4 h-4 text-muted-foreground\" />,\n }}\n className=\"mb-0\"\n />\n </div>\n );\n}\n\n// Filter select component\nexport function FilterSelect({\n value,\n onChange,\n options,\n placeholder,\n className = '',\n multiple = false,\n searchable = true,\n}: {\n value: string | string[];\n onChange: (value: string | string[]) => void;\n options: { value: string; label: string; icon?: React.ReactNode }[];\n placeholder: string;\n className?: string;\n multiple?: boolean;\n searchable?: boolean;\n}) {\n return (\n <SmartSelect\n value={value}\n onChange={onChange}\n options={options}\n placeholder={placeholder}\n className={`form-input form-input-md ${className}`}\n keepOpen={multiple}\n multiple={multiple}\n searchable={searchable}\n />\n );\n}\n\n// Action button component\nexport function ActionButton({\n children,\n onClick,\n variant = 'primary',\n size = 'md',\n className = '',\n disabled = false,\n title = '',\n hideTextOnMobile = false,\n}: {\n children: ReactNode;\n onClick: () => void;\n variant?: 'primary' | 'secondary' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n disabled?: boolean;\n title?: string;\n hideTextOnMobile?: boolean;\n}) {\n const variantClasses = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n danger: 'btn-danger',\n };\n\n const sizeClasses = {\n sm: 'btn-sm',\n md: 'btn-md',\n lg: 'btn-lg',\n };\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n title={title}\n className={`${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n >\n {children}\n </button>\n );\n}\n\n// Refresh button component\nexport function RefreshButton({\n onClick,\n isLoading = false,\n className = '',\n}: {\n onClick: () => void;\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <BaseActionButton\n icon={RiRefreshLine}\n onClick={onClick}\n disabled={isLoading}\n loading={isLoading}\n iconOnly\n size=\"md\"\n variant=\"secondary\"\n tooltipId=\"refresh-button-tooltip\"\n title=\"Refresh\"\n tooltipPlace=\"top\"\n className={`btn-alt ${className}`}\n />\n );\n}\n\n// Filter toggle button component\nexport function FilterToggleButton({\n isOpen,\n onClick,\n onClear,\n activeCount = 0,\n className = '',\n}: {\n isOpen: boolean;\n onClick: () => void;\n onClear?: () => void;\n activeCount?: number;\n className?: string;\n}) {\n const tooltipText =\n activeCount > 0\n ? `${activeCount} filter${activeCount === 1 ? '' : 's'} active`\n : 'Filters';\n\n return (\n <>\n <IconButtonWithCount\n icon={<RiFilterLine className=\"w-4 h-4\" />}\n label=\"Filters\"\n count={activeCount}\n onClick={onClick}\n onClear={onClear}\n className={className}\n tooltipId=\"filter-button-tooltip\"\n tooltipContent={tooltipText}\n clearTooltipId=\"clear-filters-tooltip\"\n clearTooltipContent=\"Clear all filters\"\n />\n\n <SharedTooltip id=\"filter-button-tooltip\" />\n </>\n );\n}\n\n// Mobile-friendly search layout component\nexport function MobileSearchLayout({\n searchInput,\n filters,\n viewControls,\n activeFilterCount = 0,\n onClearFilters,\n className = '',\n filterInline = false,\n searchButton,\n}: {\n searchInput: ReactNode;\n filters: ReactNode;\n viewControls?: ReactNode;\n activeFilterCount?: number;\n onClearFilters?: () => void;\n className?: string;\n filterInline?: boolean;\n searchButton?: ReactNode;\n}) {\n const [showFilters, setShowFilters] = useState(false);\n\n // Render inline filters on desktop, dropdown on mobile\n if (filterInline) {\n return (\n <div className={`space-y-4 ${className}`}>\n {/* Search bar with view controls */}\n <div className=\"flex gap-2 items-center\">\n <div className=\"flex-1\">{searchInput}</div>\n <div className=\"flex gap-2 items-center\">\n {/* Mobile dropdown button - hidden on lg+ */}\n <div className=\"lg:hidden\">\n <SmartDropdown\n isOpen={showFilters}\n onClose={() => setShowFilters(false)}\n width={600}\n maxHeight={320}\n trigger={\n <FilterToggleButton\n isOpen={showFilters}\n onClick={() => setShowFilters(!showFilters)}\n activeCount={activeFilterCount}\n onClear={onClearFilters}\n />\n }\n >\n <div className=\"\">\n <div className=\"p-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filters}\n </div>\n </div>\n </div>\n </SmartDropdown>\n </div>\n {viewControls && viewControls}\n </div>\n </div>\n\n {/* Inline filters below search - hidden on mobile, shown on lg+ */}\n <div className=\"hidden lg:flex lg:flex-col lg:gap-3\">\n <div className=\"flex flex-col lg:flex-row gap-3\">{filters}</div>\n {searchButton && (\n <div className=\"flex justify-end\">{searchButton}</div>\n )}\n </div>\n\n {/* Tooltips */}\n <SharedTooltip id=\"clear-filters-tooltip\" />\n </div>\n );\n }\n\n // Original dropdown filters (for non-inline mode)\n return (\n <div className={`space-y-4 ${className}`}>\n {/* Search bar with view controls */}\n <div className=\"flex gap-2 items-center\">\n <div className=\"flex-1\">{searchInput}</div>\n <div className=\"flex gap-2 items-center\">\n <SmartDropdown\n isOpen={showFilters}\n onClose={() => setShowFilters(false)}\n width={600}\n maxHeight={320}\n trigger={\n <FilterToggleButton\n isOpen={showFilters}\n onClick={() => setShowFilters(!showFilters)}\n activeCount={activeFilterCount}\n onClear={onClearFilters}\n />\n }\n >\n <div className=\"\">\n <div className=\"p-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {filters}\n </div>\n </div>\n </div>\n </SmartDropdown>\n {viewControls && viewControls}\n </div>\n </div>\n\n {/* Tooltips */}\n <SharedTooltip id=\"clear-filters-tooltip\" />\n </div>\n );\n}\n","'use client';\n\nimport { RiGridFill, RiListUnordered } from 'react-icons/ri';\nimport ActionButton from './buttons/ActionButton';\n\ninterface ViewToggleProps {\n currentView: 'cards' | 'list';\n onViewChange: (view: 'cards' | 'list') => void;\n className?: string;\n}\n\nexport default function ViewToggle({\n currentView,\n onViewChange,\n className = '',\n}: ViewToggleProps) {\n const toggleView = () => {\n onViewChange(currentView === 'cards' ? 'list' : 'cards');\n };\n\n return (\n <ActionButton\n icon={currentView === 'cards' ? RiGridFill : RiListUnordered}\n onClick={toggleView}\n iconOnly\n size=\"md\"\n variant=\"secondary\"\n tooltipId=\"view-toggle-tooltip\"\n title={\n currentView === 'cards' ? 'Switch to List View' : 'Switch to Card View'\n }\n tooltipPlace=\"top\"\n className={`btn-alt ${className}`}\n />\n );\n}\n","/**\n * @gamecp/ui - GameCP UI Component Library\n * \n * A collection of reusable React components for GameCP extensions.\n * All components are built with TypeScript and Tailwind CSS.\n */\n\n// Core Components\nexport { default as Badge } from './Badge';\nexport { default as Button } from './Button';\nexport { default as Card } from './Card';\nexport { default as ConfirmDialog, useConfirmDialog } from './ConfirmDialog';\nexport { default as Container } from './Container';\nexport { default as EmptyState } from './EmptyState';\nexport { default as FormInput } from './FormInput';\nexport { default as FormSection } from './FormSection';\nexport { default as Grid } from './Grid';\nexport { default as InfoBox } from './InfoBox';\nexport { default as Link } from './Link';\nexport { default as LoadingSpinner } from './LoadingSpinner';\nexport { default as Modal } from './Modal';\nexport { default as PageHeader } from './PageHeader';\nexport { default as Switch } from './Switch';\nexport { default as SmartDropdown, SmartSelect } from './SmartDropdown';\nexport { Skeleton, SkeletonItem, SkeletonCard, SkeletonTable, SkeletonList, SkeletonSearchCard, SkeletonGameServerCard, SkeletonGameCard, SkeletonUserCard, SkeletonNodeCard, SkeletonTenantCard, SkeletonStats, SkeletonRecentActivity, SkeletonForm, SkeletonGameServerCards, SkeletonNodeCards, SkeletonNodeTable, SkeletonGameServerTable, SkeletonGamesTable, SkeletonEnvironmentsList } from './Skeleton';\nexport { Typography } from './Typography';\n\n// Data Display Components\nexport { DataTable, DataTableHeader, DataTableBody, DataTableRow, DataTableCell, DataTableHeaderCell, DataTableEmptyState, DataTableLoadingState, DataTableActions, StickyActionsColumn, StatusBadge } from './DataTable';\nexport { SearchCard, SearchCardHeader, SearchCardContent, SearchInput, FilterSelect, RefreshButton, FilterToggleButton, MobileSearchLayout } from './SearchCard';\nexport { default as ViewToggle } from './ViewToggle';\nexport { default as ActionButton } from './buttons/ActionButton';\nexport { default as SharedTooltip } from './SharedTooltip';\nexport { default as Spinner } from './Spinner';\nexport { default as IconButtonWithCount } from './IconButtonWithCount';\n\n// Type exports\nexport type { ButtonProps, ButtonVariant, ButtonSize } from './Button';\nexport type { BadgeVariant, BadgeSize } from './Badge';\nexport type { LinkProps } from './Link';\nexport type { ConfirmDialogOptions } from './ConfirmDialog';\n\n// Version\nexport const VERSION = '0.1.3';\n"]}