UNPKG

uiinfinity-components

Version:

Beautiful UI components with smooth animations and 3D effects

1 lines 23.3 kB
{"version":3,"file":"index.esm","sources":["../src/lib/utils.ts","../src/components/core/Button.tsx","../src/components/core/Card.tsx","../src/components/core/Input.tsx","../src/components/core/Modal.tsx","../src/components/core/CopyCodeButton.tsx","../src/components/Footer.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\r\nimport { twMerge } from \"tailwind-merge\"\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs))\r\n}\r\n","import React from 'react';\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n ({ className, variant = 'primary', size = 'md', children, ...props }, ref) => {\r\n const baseStyles = \"inline-flex items-center justify-center font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none\";\r\n \r\n const variants = {\r\n primary: \"bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary/50\",\r\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 focus:ring-secondary/50\",\r\n outline: \"border-2 border-border bg-transparent hover:bg-accent hover:text-accent-foreground focus:ring-accent/50\",\r\n ghost: \"bg-transparent hover:bg-accent hover:text-accent-foreground focus:ring-accent/50\",\r\n danger: \"bg-destructive text-destructive-foreground hover:bg-destructive/90 focus:ring-destructive/50\"\r\n };\r\n \r\n const sizes = {\r\n sm: \"h-8 px-3 text-sm rounded-md\",\r\n md: \"h-10 px-4 text-sm rounded-md\",\r\n lg: \"h-12 px-6 text-base rounded-lg\"\r\n };\r\n \r\n return (\r\n <button\r\n ref={ref}\r\n className={cn(baseStyles, variants[variant], sizes[size], className)}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n\r\nexport { Button };\r\nexport type { ButtonProps };","import React from 'react';\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"rounded-xl border bg-card text-card-foreground shadow-sm\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nconst CardTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <h3\r\n ref={ref}\r\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </h3>\r\n )\r\n);\r\n\r\nconst CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\r\n ({ className, children, ...props }, ref) => (\r\n <p\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </p>\r\n )\r\n);\r\n\r\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"p-6 pt-0\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\r\n ({ className, children, ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={cn(\"flex items-center p-6 pt-0\", className)}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nCard.displayName = 'Card';\r\nCardHeader.displayName = 'CardHeader';\r\nCardTitle.displayName = 'CardTitle';\r\nCardDescription.displayName = 'CardDescription';\r\nCardContent.displayName = 'CardContent';\r\nCardFooter.displayName = 'CardFooter';\r\n\r\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter };\r\nexport type { CardProps, CardHeaderProps, CardContentProps, CardFooterProps };","import React from 'react';\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n error?: string;\r\n helperText?: string;\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n ({ className, label, error, helperText, id, ...props }, ref) => {\r\n const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;\r\n \r\n return (\r\n <div className=\"w-full space-y-2\">\r\n {label && (\r\n <label \r\n htmlFor={inputId}\r\n className=\"text-sm font-medium text-foreground block\"\r\n >\r\n {label}\r\n </label>\r\n )}\r\n \r\n <input\r\n id={inputId}\r\n ref={ref}\r\n className={cn(\r\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm\",\r\n \"placeholder:text-muted-foreground\",\r\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\r\n \"disabled:cursor-not-allowed disabled:opacity-50\",\r\n error && \"border-destructive focus:ring-destructive\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n \r\n {error && (\r\n <p className=\"text-sm text-destructive\">{error}</p>\r\n )}\r\n \r\n {helperText && !error && (\r\n <p className=\"text-sm text-muted-foreground\">{helperText}</p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = 'Input';\r\n\r\nexport { Input };\r\nexport type { InputProps };","import React, { useEffect, useRef } from 'react';\r\nimport { createPortal } from 'react-dom';\r\nimport { X } from 'lucide-react';\r\nimport { cn } from '@/lib/utils';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n title?: string;\r\n children: React.ReactNode;\r\n className?: string;\r\n showCloseButton?: boolean;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n title,\r\n children,\r\n className,\r\n showCloseButton = true,\r\n}) => {\r\n const modalRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n onClose();\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener('keydown', handleEscape);\r\n document.body.style.overflow = 'hidden';\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.body.style.overflow = 'unset';\r\n };\r\n }, [isOpen, onClose]);\r\n\r\n useEffect(() => {\r\n if (isOpen && modalRef.current) {\r\n modalRef.current.focus();\r\n }\r\n }, [isOpen]);\r\n\r\n if (!isOpen) return null;\r\n\r\n const handleBackdropClick = (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget) {\r\n onClose();\r\n }\r\n };\r\n\r\n const modalContent = (\r\n <div\r\n className=\"fixed inset-0 z-50 flex items-center justify-center p-4\"\r\n onClick={handleBackdropClick}\r\n >\r\n {/* Backdrop */}\r\n <div className=\"absolute inset-0 bg-black/80 backdrop-blur-sm animate-fade-in\" />\r\n \r\n {/* Modal */}\r\n <div\r\n ref={modalRef}\r\n tabIndex={-1}\r\n className={cn(\r\n \"relative bg-background border rounded-lg shadow-xl w-full max-w-md max-h-[90vh] overflow-auto animate-scale-in\",\r\n className\r\n )}\r\n >\r\n {/* Header */}\r\n {(title || showCloseButton) && (\r\n <div className=\"flex items-center justify-between p-6 border-b\">\r\n {title && (\r\n <h2 className=\"text-lg font-semibold text-foreground\">{title}</h2>\r\n )}\r\n {showCloseButton && (\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 hover:bg-accent rounded-md transition-colors\"\r\n aria-label=\"Close modal\"\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n \r\n {/* Content */}\r\n <div className=\"p-6\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n return createPortal(modalContent, document.body);\r\n};\r\n\r\nexport { Modal };\r\nexport type { ModalProps };","import React, { useState } from 'react';\r\nimport { Copy, Check } from 'lucide-react';\r\nimport { Button } from './Button';\r\nimport { toast } from 'sonner';\r\n\r\ninterface CopyCodeButtonProps {\r\n code: string;\r\n className?: string;\r\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nexport function CopyCodeButton({ \r\n code, \r\n className, \r\n variant = 'ghost',\r\n size = 'sm'\r\n}: CopyCodeButtonProps) {\r\n const [isCopied, setIsCopied] = useState(false);\r\n\r\n const copyToClipboard = async () => {\r\n try {\r\n await navigator.clipboard.writeText(code);\r\n setIsCopied(true);\r\n toast.success('Code copied to clipboard!');\r\n \r\n setTimeout(() => setIsCopied(false), 2000);\r\n } catch (error) {\r\n toast.error('Failed to copy code');\r\n }\r\n };\r\n\r\n return (\r\n <Button \r\n variant={variant}\r\n size={size}\r\n className={className}\r\n onClick={copyToClipboard}\r\n >\r\n {isCopied ? (\r\n <>\r\n <Check className=\"w-4 h-4 mr-2\" />\r\n Copied\r\n </>\r\n ) : (\r\n <>\r\n <Copy className=\"w-4 h-4 mr-2\" />\r\n Copy Code\r\n </>\r\n )}\r\n </Button>\r\n );\r\n}","import React from 'react';\r\nimport { Github, Twitter, Linkedin } from 'lucide-react';\r\n\r\nconst Footer = () => {\r\n return (\r\n <footer className=\"py-16 border-t border-gray-800\">\r\n <div className=\"container mx-auto px-4\">\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8\">\r\n {/* Brand */}\r\n <div className=\"space-y-4\">\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"relative h-8 w-8\">\r\n <div className=\"absolute inset-0 bg-neon-purple rounded-full opacity-70\"></div>\r\n <div className=\"absolute inset-0 flex items-center justify-center text-white font-bold\">U</div>\r\n </div>\r\n <span className=\"text-xl font-bold text-white\">UIinfinity</span>\r\n </div>\r\n <p className=\"text-gray-400\">\r\n Beautiful UI components with smooth animations and 3D effects.\r\n </p>\r\n <div className=\"flex gap-4\">\r\n <a href=\"https://github.com/zakir19\" target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-gray-400 hover:text-white transition-colors\">\r\n <Github className=\"h-5 w-5\" />\r\n </a>\r\n <a href=\"https://twitter.com\" target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-gray-400 hover:text-white transition-colors\">\r\n <Twitter className=\"h-5 w-5\" />\r\n </a>\r\n <a href=\"https://www.linkedin.com/in/zakir-husain-patel/\" target=\"_blank\" rel=\"noopener noreferrer\" className=\"text-gray-400 hover:text-white transition-colors\">\r\n <Linkedin className=\"h-5 w-5\" />\r\n </a>\r\n </div>\r\n </div>\r\n\r\n {/* Resources */}\r\n <div>\r\n <h3 className=\"text-white font-medium mb-4\">Resources</h3>\r\n <ul className=\"space-y-2\">\r\n <FooterLink href=\"#\">Documentation</FooterLink>\r\n <FooterLink href=\"#\">Components</FooterLink>\r\n <FooterLink href=\"#\">Examples</FooterLink>\r\n <FooterLink href=\"#\">Playground</FooterLink>\r\n </ul>\r\n </div>\r\n\r\n {/* Company */}\r\n <div>\r\n <h3 className=\"text-white font-medium mb-4\">Company</h3>\r\n <ul className=\"space-y-2\">\r\n <FooterLink href=\"#\">About Us</FooterLink>\r\n <FooterLink href=\"#\">Blog</FooterLink>\r\n <FooterLink href=\"#\">Careers</FooterLink>\r\n <FooterLink href=\"#\">Contact</FooterLink>\r\n </ul>\r\n </div>\r\n\r\n {/* Contact */}\r\n <div>\r\n <h3 className=\"text-white font-medium mb-4\" id=\"contact\">Get in Touch</h3>\r\n <p className=\"text-gray-400 mb-4\">\r\n Have questions? Reach out to us.\r\n </p>\r\n <form \r\n action=\"https://formspree.io/f/xkgryprw\" \r\n method=\"POST\" \r\n className=\"flex\"\r\n >\r\n <input \r\n type=\"email\" \r\n name=\"email\"\r\n placeholder=\"Enter your email\" \r\n required\r\n className=\"bg-gray-800 border border-gray-700 text-white px-3 py-2 rounded-l-md focus:outline-none focus:ring-1 focus:ring-neon-purple\"\r\n />\r\n <button type=\"submit\" className=\"bg-neon-purple hover:bg-neon-purple/80 text-white px-4 py-2 rounded-r-md transition-colors\">\r\n Subscribe\r\n </button>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-12 pt-6 border-t border-gray-800 text-center text-gray-500 text-sm\">\r\n © {new Date().getFullYear()} UIinfinity. All rights reserved. Made with ❤️ by Zakir.\r\n </div>\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nconst FooterLink = ({ href, children }: { href: string, children: React.ReactNode }) => (\r\n <li>\r\n <a \r\n href={href} \r\n className=\"text-gray-400 hover:text-neon-purple transition-colors\"\r\n >\r\n {children}\r\n </a>\r\n </li>\r\n);\r\n\r\nexport default Footer;\r\n"],"names":["cn","inputs","twMerge","clsx","Button","React","className","variant","size","children","props","ref","baseStyles","variants","sizes","jsx","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Input","label","error","helperText","id","inputId","jsxs","Modal","isOpen","onClose","title","showCloseButton","modalRef","useRef","useEffect","handleEscape","e","modalContent","X","createPortal","CopyCodeButton","code","isCopied","setIsCopied","useState","toast","Fragment","Check","Copy","Footer","Github","Twitter","Linkedin","FooterLink","href"],"mappings":"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"}