@gamecp/ui 0.1.0
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.
- package/README.md +244 -0
- package/dist/index.d.mts +211 -0
- package/dist/index.d.ts +211 -0
- package/dist/index.js +1306 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1276 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +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"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gamecp/ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "React UI components for GameCP",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"dev": "tsup --watch",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"prepublishOnly": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"gamecp",
|
|
24
|
+
"ui",
|
|
25
|
+
"react",
|
|
26
|
+
"components"
|
|
27
|
+
],
|
|
28
|
+
"author": "GameCP",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/GameCP/packages.git",
|
|
32
|
+
"directory": "ui"
|
|
33
|
+
},
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/GameCP/packages/issues"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/GameCP/packages/tree/main/ui#readme",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"framer-motion": "^11.0.0",
|
|
41
|
+
"next": "^15.0.0",
|
|
42
|
+
"react": "^19.0.0",
|
|
43
|
+
"react-dom": "^19.0.0",
|
|
44
|
+
"react-icons": "^5.0.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^25.0.3",
|
|
48
|
+
"@types/react": "^19.2.7",
|
|
49
|
+
"@types/react-dom": "^19.0.0",
|
|
50
|
+
"tsup": "^8.0.0",
|
|
51
|
+
"typescript": "^5.3.3"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public"
|
|
55
|
+
}
|
|
56
|
+
}
|