@moontra/moonui 6.2.0 → 6.4.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/dist/hooks/index.global.js.map +1 -1
- package/dist/index.d.mts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.global.js +14 -14
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +297 -272
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +252 -237
- package/dist/index.mjs.map +1 -1
- package/dist/lib/theme.global.js.map +1 -1
- package/package.json +1 -1
- package/src/components/ui/__tests__/badge.test.tsx +67 -9
- package/src/components/ui/badge.tsx +12 -2
- package/src/components/ui/index.ts +15 -0
- package/src/lib/utils.ts +25 -0
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/button.tsx","../src/components/ui/card.tsx","../src/lib/micro-interactions.ts","../src/components/ui/calendar.tsx","../src/components/ui/card-input.tsx","../src/components/ui/carousel.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/popover.tsx","../src/components/ui/tabs.tsx","../src/components/ui/slider.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/data-table-basic.tsx","../src/components/ui/table.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/draggable-list.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/file-upload.tsx","../src/components/ui/progress.tsx","../src/components/ui/gesture-drawer.tsx","../src/components/ui/github-stars.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/locked-component.tsx","../src/components/ui/moon-logo.tsx","../src/components/ui/pagination.tsx","../src/components/ui/phone-input.tsx","../src/components/ui/select.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/rich-text-editor/index.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/scroll-reveal.tsx","../src/components/ui/separator.tsx","../src/components/ui/simple-editor.tsx","../src/components/ui/toggle.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/swipeable-card.tsx","../src/components/ui/switch.tsx","../src/components/ui/tags-input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toast.tsx","../src/components/ui/kbd.tsx","../src/components/ui/rating.tsx","../src/components/ui/spinner.tsx","../src/components/ui/button-group.tsx","../src/components/ui/toggle-group.tsx"],"names":["React","jsx","jsxs","Icon","cva","ChevronRight","days","format","Check","ChevronDown","Loader2","Fragment","value","min","max","motion","Palette","Pipette","p","q","X","ChevronLeft","Search","AnimatePresence","pageTransitions","DatePicker","DateRangePicker","DateTimePicker","MonthPicker","useCallback","useState","AlertCircle","error","useEffect","isDevelopment","MoreHorizontal","Circle","RadioGroup","animate","Separator","List","ImageIcon","Eye","ColorPicker","selection","toast","props","Star"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"moonui-theme\", \"border-b border-gray-200 dark:border-gray-800\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all dark:text-gray-100\",\n \"hover:underline hover:text-primary dark:hover:text-primary-400\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200 opacity-70 group-hover:opacity-100\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm text-gray-700 dark:text-gray-300 transition-all\", \n \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-4 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle, AlertTriangle, Info, Check, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Alert Component\n *\n * Yüksek kaliteli, özelleştirilebilir ve erişilebilir alert bileşeni.\n * Bildirim, uyarı ve dikkat çekmek gereken içerikler için kullanılır.\n */\n\nconst alertVariants = cva(\n \"relative w-full flex items-center gap-3 p-4 border text-foreground [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n primary: \"bg-primary/10 text-primary border-primary/30\",\n success: \"bg-success/10 text-success border-success/30\",\n warning: \"bg-warning/10 text-warning border-warning/30\",\n error: \"bg-destructive/10 text-destructive border-destructive/30\",\n // `--info` token'ı (tokens.css) blue-500 ile birebir aynı değeri\n // taşır → görsel değişiklik yok, ancak varyant artık temaya ve\n // karanlık moda duyarlı. Kardeş varyantlarla simetrik.\n info: \"bg-info/10 text-info border-info/30\",\n },\n size: {\n sm: \"py-2 text-xs\",\n default: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n withClose: {\n true: \"pr-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n withClose: false,\n },\n }\n);\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Alert ikonunu gizler */\n hideIcon?: boolean;\n /** Kapatma butonu ekler */\n closable?: boolean;\n /** Kapatma butonu tıklandığında çalışacak fonksiyon */\n onClose?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"default\",\n size,\n radius,\n hideIcon = false,\n closable = false,\n onClose,\n children,\n ...props\n },\n ref\n ) => {\n // Alert türüne göre ikon belirleme\n const Icon = React.useMemo(() => {\n switch (variant) {\n case \"success\":\n return Check;\n case \"warning\":\n return AlertTriangle;\n case \"error\":\n return AlertCircle;\n case \"info\":\n return Info;\n default:\n return Info;\n }\n }, [variant]);\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"moonui-theme\",\n alertVariants({\n variant,\n size,\n radius,\n withClose: closable,\n }),\n className\n )}\n {...props}\n >\n {!hideIcon && <Icon className=\"h-5 w-5\" />}\n <div className=\"flex-1\">{children}</div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"absolute right-3 top-3 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-70 transition-opacity hover:opacity-100\"\n aria-label=\"Close alert\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"font-semibold leading-tight tracking-tight mb-1\",\n className\n )}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"text-sm leading-5 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Aspect Ratio Component\n * \n * A component that maintains a specific aspect ratio for content.\n * Particularly useful for images, videos, and media content in responsive designs.\n * Fully integrated with the theme system, accessible and customizable.\n */\n\nconst aspectRatioVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n // `variant` yalnız yüzey/kenarlık eksenini yönetir. Önceden her varyant\n // ayrıca `rounded-md` taşıyordu ve `radius` ekseniyle çakışıyordu\n // (aynı anda iki `rounded-*` sınıfı üretiliyordu). Köşe yuvarlaması artık\n // TEK kaynaktan: `radius`.\n variant: {\n default: \"bg-muted/10\",\n ghost: \"bg-transparent\",\n outline: \"border border-border\",\n card: \"bg-card shadow-sm\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n // Önceki davranış korunur: her varyant `rounded-md` taşıyordu.\n radius: \"md\",\n },\n }\n)\n\ninterface AspectRatioProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof aspectRatioVariants> {\n /**\n * Aspect ratio (width/height). For example 16/9, 4/3, 1/1 etc.\n * @default 16/9\n */\n ratio?: number\n}\n\nconst AspectRatio = React.forwardRef<\n HTMLDivElement,\n AspectRatioProps\n>(({ className, variant, radius, ratio = 16 / 9, style, children, ...props }, ref) => (\n <div\n ref={ref} \n className={cn(\"moonui-theme\", aspectRatioVariants({ variant, radius }), className)}\n style={{\n position: \"relative\",\n paddingBottom: `${(1 / ratio) * 100}%`,\n ...style\n }}\n {...props}\n >\n <div className=\"absolute inset-0\">\n {children}\n </div>\n </div>\n))\nAspectRatio.displayName = \"AspectRatio\"\n\nexport { AspectRatio, aspectRatioVariants }\nexport type { AspectRatioProps }\n","\"use client\"\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n variant: {\n default: \"\",\n ring: \"ring-2 ring-border\",\n ringOffset: \"ring-2 ring-border ring-offset-2 ring-offset-background\",\n border: \"border-2 border-border\"\n }\n },\n defaultVariants: {\n size: \"default\",\n radius: \"default\",\n variant: \"default\"\n },\n }\n);\n\nexport interface AvatarProps \n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, radius, variant, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", avatarVariants({ size, radius, variant }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"moonui-theme\", \"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\n// Avatar Group Component for displaying multiple avatars\n//\n// KIRICI (issue #260): prop sözleşmesi `limit`/`avatars: ReactNode[]` idi;\n// pro paketteki kardeşi (`MoonUIAvatarGroupPro`) ise `max`/`children` kullanıyordu\n// — aynı bileşen ailesi için iki farklı API. Standart React deseni (children)\n// kanonik kabul edilip free tarafı pro'ya hizalandı.\n//\n// Geçiş: <AvatarGroup limit={3} avatars={[<Avatar/>, <Avatar/>]} />\n// → <AvatarGroup max={3}><Avatar/><Avatar/></AvatarGroup>\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Gösterilecek en fazla avatar sayısı; kalanlar \"+N\" olarak özetlenir. */\n max?: number;\n /** Avatar bileşenleri. */\n children?: React.ReactNode;\n /** Avatar'lar arası üst üste binme miktarı (px, negatif). */\n overlapOffset?: number;\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, max, children, overlapOffset = -8, ...props }, ref) => {\n const childrenArray = React.Children.toArray(children);\n const visibleAvatars = max ? childrenArray.slice(0, max) : childrenArray;\n const remainingCount = max ? Math.max(0, childrenArray.length - max) : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex items-center\", className)}\n {...props}\n >\n <div className=\"flex\">\n {visibleAvatars.map((avatar, index) => (\n <div \n key={index} \n className=\"relative\"\n style={{ \n marginLeft: index === 0 ? 0 : `${overlapOffset}px`,\n zIndex: visibleAvatars.length - index \n }}\n >\n {avatar}\n </div>\n ))}\n {remainingCount > 0 && (\n <div \n className=\"relative z-0\"\n style={{ marginLeft: `${overlapOffset}px` }}\n >\n <Avatar variant=\"border\">\n <AvatarFallback>\n +{remainingCount}\n </AvatarFallback>\n </Avatar>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Badge Component\n * \n * Durum, kategori ve etiketleme için yüksek kaliteli badge bileşeni.\n * Dark ve light modda uyumlu, erişilebilir ve çeşitli varyantlar sunar.\n */\n\nconst badgeVariants = cva(\n [\"inline-flex items-center justify-center gap-1.5\", \n \"font-medium transition-colors duration-200\", \n \"border focus:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-1\",\n // Auto spacing between badges\n \"mr-2 mb-2 last:mr-0\"],\n {\n variants: {\n variant: {\n // KIRICI (issue #261): önceden ham `gray-900`/`white` kullanılıyordu;\n // aynı varyant pro pakette token'lıydı → free ve pro `primary` için\n // farklı renk üretiyordu. Artık token'a bağlı (tema/karanlık moda duyarlı).\n // `primary` VARSAYILAN varyant olduğu için görünür bir renk değişimidir.\n primary: [\n \"border-transparent bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n \"focus-visible:ring-primary/30 dark:focus-visible:ring-primary/40\",\n \"dark:bg-primary/90 dark:shadow-inner dark:shadow-primary/10\",\n ],\n secondary: [\n \"border-transparent bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-600\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-700/50 dark:text-gray-50 dark:shadow-inner dark:shadow-gray-950/10\",\n ],\n outline: [\n \"border-gray-200 dark:border-gray-600\",\n \"bg-transparent text-foreground\",\n \"hover:border-gray-300 dark:hover:border-gray-500\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-100 dark:bg-transparent dark:backdrop-blur-sm\",\n ],\n destructive: [\n \"border-transparent bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"focus-visible:ring-error/30 dark:focus-visible:ring-error/25\",\n \"dark:bg-error/90 dark:text-white dark:shadow-inner dark:shadow-error/10\",\n ],\n success: [\n \"border-transparent bg-success text-success-foreground\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"focus-visible:ring-success/30 dark:focus-visible:ring-success/25\",\n \"dark:bg-success/90 dark:text-success-foreground dark:shadow-inner dark:shadow-success/10\",\n ],\n warning: [\n \"border-transparent bg-warning text-warning-foreground\",\n \"hover:bg-warning/90 dark:hover:bg-warning/80\",\n \"focus-visible:ring-warning/30 dark:focus-visible:ring-warning/25\",\n \"dark:bg-warning/90 dark:text-warning-foreground dark:shadow-inner dark:shadow-warning/10\",\n ],\n ghost: [\n \"border border-gray-200 bg-gray-50/50 text-gray-700\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/60\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-300\",\n \"transition-all duration-200\",\n ],\n pro: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\",\n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n admin: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\", \n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n },\n size: {\n sm: \"h-5 px-2 text-xs\",\n md: \"h-6 px-3 text-sm\",\n lg: \"h-8 px-4 text-base\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n none: \"rounded-none\",\n }\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof badgeVariants>, 'variant'> {\n withDot?: boolean;\n dotColor?: string;\n removable?: boolean;\n onRemove?: () => void;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'ghost' | 'pro' | 'admin';\n /** Disable automatic spacing between badges */\n noAutoSpacing?: boolean;\n}\n\n/**\n * Premium Badge Component\n * \n * @param props - Badge bileşeni özellikleri\n * @param props.variant - Badgenin görsel varyantı\n * @param props.size - Badge boyutu\n * @param props.radius - Köşe yuvarlama stili\n * @param props.withDot - Başında nokta gösterimi\n * @param props.dotColor - Noktanın rengi (özel)\n * @param props.removable - Kaldırılabilir badge (X simgesi ile)\n * @param props.onRemove - Kaldırma işlevi\n * @param props.leftIcon - Badge'in solunda görüntülenecek ikon\n * @param props.rightIcon - Badge'in sağında görüntülenecek ikon\n * @param props.noAutoSpacing - Otomatik spacing'i devre dışı bırak\n */\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(({\n className,\n variant,\n size,\n radius,\n withDot,\n dotColor,\n removable,\n onRemove,\n leftIcon,\n rightIcon,\n noAutoSpacing,\n children,\n ...props\n}, ref) => {\n // Auto-assign icons and content for special variants\n let autoLeftIcon = leftIcon;\n let autoChildren = children;\n \n if (variant === 'pro') {\n // Auto Sparkles icon for pro\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 0L13.09 8.26L22 9L13.09 9.74L12 18L10.91 9.74L2 9L10.91 8.26L12 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 5L19.5 7L21 7.5L19.5 8L19 10L18.5 8L17 7.5L18.5 7L19 5Z\" fill=\"currentColor\"/>\n <path d=\"M19 15L19.5 17L21 17.5L19.5 18L19 20L18.5 18L17 17.5L18.5 17L19 15Z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Pro';\n }\n \n if (variant === 'admin') {\n // Auto CheckCircle icon for admin\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Admin Pro';\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"moonui-theme\",\n badgeVariants({ variant, size, radius }),\n // Remove auto-spacing if noAutoSpacing is true\n noAutoSpacing && \"mr-0 mb-0\",\n className\n )}\n data-removable={removable ? \"\" : undefined}\n {...props}\n >\n {withDot && (\n <span \n className={cn(\n \"h-2 w-2 rounded-full\", \n dotColor || \n (variant === \"destructive\" ? \"bg-white\" :\n variant === \"success\" ? \"bg-white\" :\n variant === \"warning\" ? \"bg-white\" :\n variant === \"secondary\" ? \"bg-secondary-foreground\" :\n variant === \"outline\" ? \"bg-foreground\" :\n variant === \"ghost\" ? \"bg-foreground\" :\n variant === \"pro\" ? \"bg-white\" :\n variant === \"admin\" ? \"bg-white\" :\n \"bg-primary-foreground\")\n )} \n aria-hidden=\"true\"\n />\n )}\n {autoLeftIcon && (\n <span className=\"inline-flex shrink-0 items-center\">\n {autoLeftIcon}\n </span>\n )}\n <span className=\"inline-flex items-center\">{autoChildren}</span>\n {rightIcon && (\n <span className=\"inline-flex shrink-0 items-center\">\n {rightIcon}\n </span>\n )}\n {removable && onRemove && (\n <button \n type=\"button\"\n className=\"ml-1 -mr-1 h-3.5 w-3.5 rounded-full inline-flex items-center justify-center hover:bg-black/10 dark:hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n aria-label=\"Remove badge\"\n >\n <svg \n width=\"8\" \n height=\"8\" \n viewBox=\"0 0 8 8\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"opacity-70\"\n aria-hidden=\"true\"\n >\n <path d=\"M0.799988 7.19999L7.19999 0.799988M0.799988 0.799988L7.19999 7.19999\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n </div>\n );\n});\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center gap-1.5 text-sm\",\n {\n variants: {\n variant: {\n default: \"text-foreground transition-colors\",\n muted: \"text-muted-foreground transition-colors\",\n ghost: \"text-foreground/60 transition-colors\",\n },\n size: {\n default: \"text-sm\",\n sm: \"text-xs\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ninterface BreadcrumbProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n separator?: React.ReactNode;\n showHomeIcon?: boolean;\n}\n\ninterface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {\n collapsed?: boolean;\n collapsedWidth?: number;\n}\n\ninterface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement> {\n isCurrent?: boolean;\n href?: string;\n asChild?: boolean;\n}\n\ninterface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom separator icon or text */\n icon?: React.ReactNode;\n}\n\ninterface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom ellipsis icon */\n icon?: React.ReactNode;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, variant, size, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(\"moonui-theme\", breadcrumbVariants({ variant, size }), className)}\n aria-label=\"breadcrumb\"\n {...props}\n />\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, collapsed, collapsedWidth = 3, ...props }, ref) => {\n const childrenArray = React.Children.toArray(props.children).filter(Boolean);\n const childCount = childrenArray.length;\n\n if (collapsed && childCount > collapsedWidth) {\n const firstItem = childrenArray[0];\n // const middleItems = childrenArray.slice(1, -2); // Uncomment when needed\n const lastTwoItems = childrenArray.slice(-2);\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n >\n {firstItem}\n <BreadcrumbEllipsis />\n {lastTwoItems}\n </ol>\n );\n }\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n />\n );\n }\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, isCurrent, href, asChild = false, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : href ? \"a\" : \"span\";\n const itemProps = asChild ? {} : href ? { href } : {};\n\n return (\n <li\n ref={ref}\n className={cn(\"moonui-theme\", \"inline-flex items-center gap-1.5\", className)}\n aria-current={isCurrent ? \"page\" : undefined}\n {...props}\n >\n <Comp \n className={cn(\n \"transition-colors duration-200 hover:text-foreground\",\n isCurrent \n ? \"font-medium text-foreground\" \n : \"text-muted-foreground hover:text-foreground hover:underline hover:underline-offset-4 hover:decoration-muted-foreground/30\"\n )}\n {...itemProps}\n >\n {props.children}\n </Comp>\n </li>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: BreadcrumbSeparatorProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"moonui-theme\", \"text-muted-foreground opacity-70\", className)}\n {...props}\n >\n {children || <ChevronRight className=\"h-3.5 w-3.5\" />}\n </span>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"moonui-theme\", \"flex items-center text-muted-foreground hover:text-foreground/80 transition-colors duration-200\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, href, ...props }, ref) => (\n <a\n ref={ref}\n href={href}\n className={cn(\n \"transition-colors duration-200 hover:text-foreground text-muted-foreground hover:underline hover:underline-offset-4 hover:decoration-muted-foreground/30\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"font-medium text-foreground dark:text-white dark:text-opacity-95\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Button Component\n * \n * A world-class, accessible, and versatile button component.\n * Pixel-perfect design with extensive variants and states.\n */\nconst buttonVariants = cva(\n [\"inline-flex items-center justify-center gap-2 whitespace-nowrap\",\n \"font-medium relative\",\n \"transition-all duration-200 ease-out\",\n \"transform active:scale-[0.98]\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none disabled:transform-none\"],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-primary-foreground\",\n \"dark:bg-primary dark:text-primary-foreground\",\n \"hover:bg-primary/90 dark:hover:bg-primary/90\",\n \"active:bg-primary/80 dark:active:bg-primary/80\",\n \"shadow-sm hover:shadow-md\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n secondary: [\n \"bg-gray-100 text-gray-900\",\n \"dark:bg-gray-800 dark:text-gray-100\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700\",\n \"active:bg-gray-300 dark:active:bg-gray-600\",\n \"border border-input\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"shadow-sm hover:shadow-md\",\n ],\n outline: [\n \"bg-background text-foreground\",\n \"dark:bg-background dark:text-foreground\",\n \"border border-input dark:border-input\",\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent dark:hover:text-accent-foreground\",\n \"active:bg-accent/80 dark:active:bg-accent/80\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n ghost: [\n \"text-gray-700\",\n \"dark:text-gray-300\",\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-100\",\n \"active:bg-gray-200 dark:active:bg-gray-700\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n destructive: [\n \"bg-destructive text-destructive-foreground\",\n \"dark:bg-destructive dark:text-destructive-foreground\",\n \"hover:bg-destructive/90 dark:hover:bg-destructive/90\",\n \"active:bg-destructive/80 dark:active:bg-destructive/80\",\n \"shadow-sm hover:shadow-md\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n success: [\n \"bg-success text-success-foreground\",\n \"dark:bg-success dark:text-success-foreground\",\n \"hover:bg-success/90 dark:hover:bg-success/90\",\n \"active:bg-success/80 dark:active:bg-success/80\",\n \"shadow-sm hover:shadow-md\", \n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n link: [\n \"text-primary bg-transparent\",\n \"underline-offset-4 hover:underline\",\n \"hover:text-primary/80 active:text-primary/70\",\n \"p-0 h-auto\",\n \"transition-colors duration-200\",\n ],\n gradient: [\n \"bg-gradient-to-r from-purple-500 to-pink-500 text-white\",\n \"hover:from-purple-600 hover:to-pink-600\",\n \"active:from-purple-700 active:to-pink-700\",\n \"shadow-xl shadow-purple-500/40\",\n \"hover:shadow-2xl hover:shadow-purple-500/50\",\n \"focus-visible:ring-purple-500/50\",\n \"transition-all duration-300\",\n ],\n glow: [\n \"bg-blue-500 text-white\",\n \"shadow-[0_0_30px_rgba(59,130,246,0.5)]\",\n \"hover:shadow-[0_0_40px_rgba(59,130,246,0.7)]\",\n \"active:shadow-[0_0_20px_rgba(59,130,246,0.4)]\",\n \"hover:bg-blue-600\",\n \"focus-visible:ring-blue-500/50\",\n \"transition-all duration-300\",\n ],\n soft: [\n \"bg-primary/10 text-primary\",\n \"hover:bg-primary/20\",\n \"active:bg-primary/30\",\n \"focus-visible:ring-primary/50\",\n \"dark:bg-primary/20 dark:text-primary-foreground\",\n \"dark:hover:bg-primary/30 dark:active:bg-primary/40\",\n \"transition-colors duration-200\",\n ],\n glass: [\n \"bg-white/10 backdrop-blur-md text-foreground\",\n \"border border-white/20\",\n \"hover:bg-white/20 hover:border-white/30\",\n \"active:bg-white/30\",\n \"shadow-lg\",\n \"focus-visible:ring-white/50\",\n \"dark:bg-gray-800/10 dark:border-gray-700/20\",\n \"dark:hover:bg-gray-800/20 dark:hover:border-gray-700/30\",\n \"transition-all duration-200\",\n ],\n neon: [\n \"bg-transparent text-green-400\",\n \"border-2 border-green-400\",\n \"hover:bg-green-400 hover:text-gray-900\",\n \"hover:shadow-[0_0_30px_rgba(74,222,128,0.6)]\",\n \"active:shadow-[0_0_15px_rgba(74,222,128,0.4)]\",\n \"focus-visible:ring-green-400/50\",\n \"transition-all duration-300\",\n ],\n },\n size: {\n xs: \"h-7 px-2.5 text-xs\",\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-6 text-lg\",\n xl: \"h-14 px-8 text-xl\",\n icon: \"h-10 w-10 p-2\",\n \"icon-sm\": \"h-8 w-8 p-1.5\",\n \"icon-lg\": \"h-12 w-12 p-3\",\n },\n rounded: {\n default: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n sm: \"rounded-lg\",\n lg: \"rounded-2xl\",\n },\n fullWidth: {\n true: \"w-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n rounded: \"default\",\n fullWidth: false,\n },\n }\n);\n\n// Button component props\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\n/**\n * Premium Button Component\n * \n * @param props - Button component properties\n * @param props.variant - Visual variant (primary, secondary, ghost, etc.)\n * @param props.size - Button size (xs, sm, md, lg, xl)\n * @param props.loading - Loading state display\n * @param props.leftIcon - Icon on the left side\n * @param props.rightIcon - Icon on the right side\n * @param props.fullWidth - Full width display\n * @param props.rounded - Corner rounding style (default, full, none)\n * @param props.asChild - For Radix UI polymorphic component\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n className, \n variant, \n size, \n rounded, \n fullWidth,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props \n }, ref) => {\n // Radix UI'ın asChild pattern'i için - \"as\" prop yerine\n const Comp = asChild ? \"button\" : \"button\";\n \n return (\n <Comp\n className={cn(\"moonui-theme\", buttonVariants({ variant, size, rounded, fullWidth, className }))}\n ref={ref}\n disabled={disabled || loading}\n // Görsel spinner + data-loading vardı ama yardımcı teknolojiye meşgul\n // durumu hiç duyurulmuyordu.\n aria-busy={loading || undefined}\n data-loading={loading ? \"\" : undefined}\n {...props}\n >\n {loading && (\n <Loader2 className=\"w-4 h-4 animate-spin\" aria-hidden=\"true\" />\n )}\n {!loading && leftIcon}\n {children}\n {!loading && rightIcon}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, type HTMLMotionProps } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport { microInteractionVariants, hoverAnimations, tapAnimations } from \"@/lib/micro-interactions\";\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground shadow-sm dark:shadow-gray-900/20 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-border shadow-none bg-transparent dark:border-gray-700 dark:bg-transparent dark:text-gray-200\",\n filled: \"border-none bg-secondary dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n elevated: \"border-none shadow-md dark:shadow-lg dark:shadow-gray-900/30 dark:bg-gray-850 dark:text-gray-100\",\n gradient: \"border-none bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20\",\n glass: \"border border-white/20 bg-white/10 backdrop-blur-md dark:border-gray-700/30 dark:bg-gray-800/10\",\n },\n size: {\n default: \"\",\n sm: \"\",\n lg: \"\",\n xl: \"\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-3xl\",\n none: \"rounded-none\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-lg hover:border-primary/20 dark:hover:border-primary/30 hover:-translate-y-0.5 active:translate-y-0 active:shadow-sm\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n microInteraction?: \"lift\" | \"glow\" | \"scale\" | \"none\";\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, radius, interactive, microInteraction = \"lift\", ...props }, ref) => {\n // Interactive özelliği varsa motion.div, yoksa normal div kullan\n if (interactive && microInteraction !== \"none\") {\n const interactionProps = {\n whileHover: microInteraction === \"scale\" ? hoverAnimations.scale : \n microInteraction === \"glow\" ? hoverAnimations.glow : \n hoverAnimations.lift,\n whileTap: tapAnimations.scale,\n };\n \n return (\n <motion.div\n ref={ref}\n className={cn(\"moonui-theme\", cardVariants({ variant, size, radius, interactive, className }))}\n {...interactionProps}\n {...(props as any)}\n />\n );\n }\n \n // Non-interactive version\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", cardVariants({ variant, size, radius, interactive, className }))}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"moonui-theme\", \"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"moonui-theme\", \"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","// MoonUI Micro-interactions System\n// Provides consistent hover, focus, and active states across all components\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\n/**\n * Micro-interaction variants for consistent component behavior\n */\nexport const microInteractionVariants = cva(\"\", {\n variants: {\n hover: {\n lift: [\n \"transition-all duration-200 ease-out\",\n \"hover:-translate-y-0.5\",\n \"hover:shadow-md\",\n ],\n glow: [\n \"transition-all duration-300 ease-out\",\n \"hover:shadow-lg\",\n \"hover:shadow-primary/20\",\n ],\n scale: [\n \"transition-transform duration-200 ease-out\",\n \"hover:scale-105\",\n \"active:scale-95\",\n ],\n brightness: [\n \"transition-all duration-200 ease-out\",\n \"hover:brightness-110\",\n \"active:brightness-95\",\n ],\n border: [\n \"transition-all duration-200 ease-out\",\n \"hover:border-primary/50\",\n ],\n },\n focus: {\n ring: [\n \"focus:outline-none\",\n \"focus-visible:ring-2\",\n \"focus-visible:ring-primary/50\",\n \"focus-visible:ring-offset-2\",\n ],\n glow: [\n \"focus:outline-none\",\n \"focus-visible:shadow-lg\",\n \"focus-visible:shadow-primary/30\",\n ],\n border: [\n \"focus:outline-none\",\n \"focus-visible:border-primary\",\n \"focus-visible:border-2\",\n ],\n },\n active: {\n scale: [\n \"active:scale-95\",\n \"transition-transform duration-100\",\n ],\n darken: [\n \"active:brightness-90\",\n \"transition-all duration-100\",\n ],\n depress: [\n \"active:translate-y-0.5\",\n \"active:shadow-sm\",\n \"transition-all duration-100\",\n ],\n },\n cursor: {\n pointer: \"cursor-pointer\",\n grab: \"cursor-grab active:cursor-grabbing\",\n text: \"cursor-text\",\n wait: \"cursor-wait\",\n help: \"cursor-help\",\n notAllowed: \"cursor-not-allowed\",\n },\n },\n defaultVariants: {\n hover: \"lift\",\n focus: \"ring\",\n active: \"scale\",\n cursor: \"pointer\",\n },\n});\n\n/**\n * Spring animation configurations\n */\nexport const springAnimations = {\n // Smooth spring for general use\n smooth: {\n type: \"spring\",\n stiffness: 260,\n damping: 20,\n },\n // Bouncy spring for playful interactions\n bouncy: {\n type: \"spring\",\n stiffness: 300,\n damping: 15,\n },\n // Stiff spring for quick responses\n stiff: {\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n },\n // Gentle spring for subtle movements\n gentle: {\n type: \"spring\",\n stiffness: 150,\n damping: 15,\n },\n};\n\n/**\n * Hover animation presets\n */\nexport const hoverAnimations = {\n lift: {\n y: -2,\n transition: springAnimations.smooth,\n },\n scale: {\n scale: 1.05,\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 20px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n rotate: {\n rotate: 2,\n transition: springAnimations.bouncy,\n },\n};\n\n/**\n * Tap/Click animation presets\n */\nexport const tapAnimations = {\n scale: {\n scale: 0.95,\n transition: { duration: 0.1 },\n },\n depress: {\n y: 1,\n transition: { duration: 0.1 },\n },\n};\n\n/**\n * Focus animation presets\n */\nexport const focusAnimations = {\n ring: {\n boxShadow: \"0 0 0 2px var(--background), 0 0 0 4px var(--primary)\",\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 0 3px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Stagger animation for lists\n */\nexport const staggerAnimation = {\n container: {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n },\n item: {\n hidden: { opacity: 0, y: 20 },\n show: { \n opacity: 1, \n y: 0,\n transition: springAnimations.smooth,\n },\n },\n};\n\n/**\n * Page transition animations\n */\nexport const pageTransitions = {\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n },\n slideUp: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -20 },\n transition: springAnimations.smooth,\n },\n slideRight: {\n initial: { opacity: 0, x: -20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 20 },\n transition: springAnimations.smooth,\n },\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 1.05 },\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Skeleton loading animation\n */\nexport const skeletonAnimation = {\n initial: { opacity: 0.5 },\n animate: {\n opacity: [0.5, 0.8, 0.5],\n transition: {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n },\n },\n};\n\n/**\n * Tooltip animation\n */\nexport const tooltipAnimation = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n transition: { duration: 0.15 },\n};\n\n/**\n * Notification animation\n */\nexport const notificationAnimation = {\n initial: { opacity: 0, y: -20, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15 } },\n transition: springAnimations.bouncy,\n};\n\nexport type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"./button\";\nimport { \n format, \n startOfMonth, \n endOfMonth, \n eachDayOfInterval, \n getDay, \n isSameMonth, \n isSameDay,\n isToday,\n addMonths,\n subMonths,\n startOfWeek,\n endOfWeek\n} from \"date-fns\";\n\nexport interface CalendarProps {\n mode?: \"single\" | \"range\" | \"multiple\";\n selected?: Date | Date[] | { from?: Date; to?: Date } | undefined;\n onSelect?: (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => void;\n disabled?: (date: Date) => boolean;\n showOutsideDays?: boolean;\n className?: string;\n classNames?: Record<string, string>;\n numberOfMonths?: number;\n defaultMonth?: Date;\n initialFocus?: boolean;\n}\n\nfunction Calendar({\n mode = \"single\",\n selected,\n onSelect,\n disabled,\n showOutsideDays = false,\n className,\n classNames,\n numberOfMonths = 1,\n defaultMonth,\n ...props\n}: CalendarProps) {\n const [currentMonth, setCurrentMonth] = React.useState(\n defaultMonth || (selected && (selected as Date)) || new Date()\n );\n\n const weekDays = [\n { short: \"S\", full: \"Sunday\" },\n { short: \"M\", full: \"Monday\" },\n { short: \"T\", full: \"Tuesday\" },\n { short: \"W\", full: \"Wednesday\" },\n { short: \"T\", full: \"Thursday\" },\n { short: \"F\", full: \"Friday\" },\n { short: \"S\", full: \"Saturday\" }\n ];\n\n const handlePreviousMonth = () => {\n setCurrentMonth(subMonths(currentMonth, 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(addMonths(currentMonth, 1));\n };\n\n const handleDateClick = (date: Date) => {\n if (disabled?.(date)) return;\n\n if (mode === \"single\") {\n onSelect?.(date);\n } else if (mode === \"range\") {\n const currentSelection = selected as { from?: Date; to?: Date } | undefined;\n if (!currentSelection?.from || (currentSelection.from && currentSelection.to)) {\n onSelect?.({ from: date, to: undefined });\n } else {\n if (date < currentSelection.from) {\n onSelect?.({ from: date, to: currentSelection.from });\n } else {\n onSelect?.({ from: currentSelection.from, to: date });\n }\n }\n }\n };\n\n const isDateSelected = (date: Date) => {\n if (!selected) return false;\n \n if (mode === \"single\") {\n return isSameDay(date, selected as Date);\n } else if (mode === \"range\") {\n const range = selected as { from?: Date; to?: Date };\n if (range.from && range.to) {\n return date >= range.from && date <= range.to;\n }\n return range.from ? isSameDay(date, range.from) : false;\n }\n return false;\n };\n\n const isRangeStart = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.from ? isSameDay(date, range.from) : false;\n };\n\n const isRangeEnd = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.to ? isSameDay(date, range.to) : false;\n };\n\n const isRangeMiddle = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n if (!range.from || !range.to) return false;\n return date > range.from && date < range.to;\n };\n\n const getDaysInMonth = () => {\n const start = startOfMonth(currentMonth);\n const end = endOfMonth(currentMonth);\n const days = eachDayOfInterval({ start, end });\n \n // Get days from previous month to fill the first week\n const firstDayOfWeek = getDay(start);\n const previousMonthDays = [];\n if (firstDayOfWeek > 0 && showOutsideDays) {\n const previousMonthStart = startOfWeek(start);\n const previousMonthEnd = new Date(start);\n previousMonthEnd.setDate(previousMonthEnd.getDate() - 1);\n previousMonthDays.push(...eachDayOfInterval({ \n start: previousMonthStart, \n end: previousMonthEnd \n }));\n }\n \n // Get days from next month to fill the last week\n const lastDayOfWeek = getDay(end);\n const nextMonthDays = [];\n if (lastDayOfWeek < 6 && showOutsideDays) {\n const nextMonthStart = new Date(end);\n nextMonthStart.setDate(nextMonthStart.getDate() + 1);\n const nextMonthEnd = endOfWeek(end);\n nextMonthDays.push(...eachDayOfInterval({ \n start: nextMonthStart, \n end: nextMonthEnd \n }));\n }\n \n // Add empty cells for the first week if not showing outside days\n const emptyCells = [];\n if (!showOutsideDays && firstDayOfWeek > 0) {\n for (let i = 0; i < firstDayOfWeek; i++) {\n emptyCells.push(null);\n }\n }\n \n return [...previousMonthDays, ...emptyCells, ...days, ...nextMonthDays];\n };\n\n const days = getDaysInMonth();\n\n return (\n <div className={cn(\"moonui-theme\", \"p-0\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border/50 dark:border-gray-700/50\">\n <button\n onClick={handlePreviousMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronLeft className=\"h-5 w-5\" />\n </button>\n \n <h2 className=\"text-base font-medium\">\n {format(currentMonth, \"MMMM yyyy\")}\n </h2>\n \n <button\n onClick={handleNextMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronRight className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Calendar Grid */}\n <div className=\"px-6 pb-4\">\n {/* Week days header */}\n <div className=\"grid grid-cols-7 mb-2\">\n {weekDays.map((day, index) => (\n <div\n key={`weekday-${index}`}\n className=\"text-muted-foreground text-xs font-medium h-10 flex items-center justify-center\"\n title={day.full}\n >\n {day.short}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, index) => {\n if (!date) {\n return <div key={`empty-${index}`} className=\"h-10 w-10\" />;\n }\n\n const isOutsideMonth = !isSameMonth(date, currentMonth);\n const isDisabled = disabled?.(date) || false;\n const isSelected = isDateSelected(date);\n const isTodayDate = isToday(date);\n const rangeStart = isRangeStart(date);\n const rangeEnd = isRangeEnd(date);\n const rangeMiddle = isRangeMiddle(date);\n\n return (\n <button\n key={date.toISOString()}\n onClick={() => handleDateClick(date)}\n disabled={isDisabled}\n className={cn(\n \"h-10 w-10 p-0 font-normal\",\n \"inline-flex items-center justify-center rounded-lg\",\n \"hover:bg-muted transition-colors text-sm\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n isOutsideMonth && \"text-muted-foreground/50\",\n isDisabled && \"text-muted-foreground/30 cursor-not-allowed hover:bg-transparent\",\n isSelected && !rangeMiddle && \"bg-primary text-primary-foreground font-medium hover:bg-primary hover:text-primary-foreground\",\n isTodayDate && \"font-semibold relative after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:h-1 after:w-1 after:rounded-full after:bg-primary\",\n rangeMiddle && \"bg-accent/30 text-accent-foreground rounded-none\",\n rangeStart && \"rounded-r-none\",\n rangeEnd && \"rounded-l-none\"\n )}\n type=\"button\"\n >\n {format(date, \"d\")}\n </button>\n );\n })}\n </div>\n </div>\n\n </div>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\nimport { Input } from \"@/components/ui\"\nimport { CreditCard } from \"lucide-react\"\n\n// Card type detection\nconst getCardType = (number: string): string => {\n const patterns = {\n visa: /^4/,\n mastercard: /^5[1-5]/,\n amex: /^3[47]/,\n discover: /^6(?:011|5)/,\n diners: /^3(?:0[0-5]|[68])/,\n jcb: /^35/,\n }\n\n for (const [type, pattern] of Object.entries(patterns)) {\n if (pattern.test(number)) return type\n }\n return \"unknown\"\n}\n\n// Format card number with spaces\nconst formatCardNumber = (value: string, cardType: string): string => {\n const cleaned = value.replace(/\\s+/g, \"\")\n const groups = cardType === \"amex\" ? [4, 6, 5] : [4, 4, 4, 4]\n \n let formatted = \"\"\n let position = 0\n \n for (const group of groups) {\n if (position >= cleaned.length) break\n if (formatted) formatted += \" \"\n formatted += cleaned.slice(position, position + group)\n position += group\n }\n \n return formatted\n}\n\n// Card Number Input\nexport interface CardNumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string, cardType: string) => void\n showIcon?: boolean\n}\n\nexport const CardNumberInput = React.forwardRef<HTMLInputElement, CardNumberInputProps>(\n ({ className, value = \"\", onChange, showIcon = true, size, ...props }, ref) => {\n const [cardType, setCardType] = React.useState(\"unknown\")\n \n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\")\n const detectedType = getCardType(rawValue)\n setCardType(detectedType)\n \n const maxLength = detectedType === \"amex\" ? 15 : 16\n const truncated = rawValue.slice(0, maxLength)\n const formatted = formatCardNumber(truncated, detectedType)\n \n onChange?.(truncated, detectedType)\n \n // Update the input value\n e.target.value = formatted\n }\n \n return (\n <div className=\"relative\">\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-number\"\n placeholder=\"1234 5678 9012 3456\"\n value={formatCardNumber(value, cardType)}\n onChange={handleChange}\n className={cn(showIcon && \"pl-10\", className)}\n {...props}\n />\n {showIcon && (\n <CreditCard className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n )}\n </div>\n )\n }\n)\nCardNumberInput.displayName = \"CardNumberInput\"\n\n// Card Expiry Input\nexport interface CardExpiryInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n}\n\nexport const CardExpiryInput = React.forwardRef<HTMLInputElement, CardExpiryInputProps>(\n ({ className, value = \"\", onChange, size, ...props }, ref) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let rawValue = e.target.value.replace(/\\D/g, \"\")\n \n if (rawValue.length >= 2) {\n const month = parseInt(rawValue.slice(0, 2))\n if (month > 12) {\n rawValue = \"12\" + rawValue.slice(2)\n } else if (month === 0) {\n rawValue = \"01\" + rawValue.slice(2)\n }\n }\n \n rawValue = rawValue.slice(0, 4)\n let formatted = rawValue\n \n if (rawValue.length >= 2) {\n formatted = rawValue.slice(0, 2) + \"/\" + rawValue.slice(2)\n }\n \n onChange?.(rawValue)\n e.target.value = formatted\n }\n \n const formattedValue = value.length >= 2 ? value.slice(0, 2) + \"/\" + value.slice(2) : value\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-exp\"\n placeholder=\"MM/YY\"\n value={formattedValue}\n onChange={handleChange}\n className={className}\n {...props}\n />\n )\n }\n)\nCardExpiryInput.displayName = \"CardExpiryInput\"\n\n// Card CVC Input\nexport interface CardCVCInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n cardType?: string\n}\n\nexport const CardCVCInput = React.forwardRef<HTMLInputElement, CardCVCInputProps>(\n ({ className, value = \"\", onChange, cardType = \"unknown\", size, ...props }, ref) => {\n const maxLength = cardType === \"amex\" ? 4 : 3\n \n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\").slice(0, maxLength)\n onChange?.(rawValue)\n }\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-csc\"\n placeholder={cardType === \"amex\" ? \"1234\" : \"123\"}\n value={value}\n onChange={handleChange}\n maxLength={maxLength}\n className={className}\n {...props}\n />\n )\n }\n)\nCardCVCInput.displayName = \"CardCVCInput\"\n\n// Card Zip Input\nexport interface CardZipInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n format?: \"US\" | \"CA\" | \"UK\" | \"other\"\n}\n\nexport const CardZipInput = React.forwardRef<HTMLInputElement, CardZipInputProps>(\n ({ className, value = \"\", onChange, format = \"US\", size, ...props }, ref) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let rawValue = e.target.value\n \n switch (format) {\n case \"US\":\n rawValue = rawValue.replace(/\\D/g, \"\").slice(0, 5)\n break\n case \"CA\":\n rawValue = rawValue.toUpperCase().replace(/[^A-Z0-9]/g, \"\").slice(0, 6)\n if (rawValue.length >= 3) {\n rawValue = rawValue.slice(0, 3) + \" \" + rawValue.slice(3)\n }\n break\n case \"UK\":\n rawValue = rawValue.toUpperCase().replace(/[^A-Z0-9\\s]/g, \"\").slice(0, 8)\n break\n default:\n rawValue = rawValue.slice(0, 10)\n }\n \n onChange?.(rawValue.replace(/\\s/g, \"\"))\n e.target.value = rawValue\n }\n \n const getPlaceholder = () => {\n switch (format) {\n case \"US\": return \"12345\"\n case \"CA\": return \"K1A 0B1\"\n case \"UK\": return \"SW1A 1AA\"\n default: return \"Postal Code\"\n }\n }\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n autoComplete=\"postal-code\"\n placeholder={getPlaceholder()}\n value={value}\n onChange={handleChange}\n className={className}\n {...props}\n />\n )\n }\n)\nCardZipInput.displayName = \"CardZipInput\"","\"use client\"\n\nimport * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n/**\n * Premium Carousel Component\n *\n * Embla Carousel tabanlı, erişilebilir ve esnek carousel bileşeni.\n * Yatay/dikey yön desteği, klavye navigasyonu ve plugin (autoplay vb.) desteği sunar.\n */\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Embla carousel seçenekleri (loop, align, axis vb.) */\n opts?: CarouselOptions;\n /** Embla plugin listesi (ör. autoplay) */\n plugins?: CarouselPlugin;\n /** Kaydırma yönü */\n orientation?: \"horizontal\" | \"vertical\";\n /** Embla API'sine dışarıdan erişmek için callback */\n setApi?: (api: CarouselApi) => void;\n}\n\ninterface CarouselContextProps\n extends Pick<CarouselProps, \"opts\" | \"plugins\" | \"setApi\"> {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\n/**\n * Carousel context hook'u — Carousel alt bileşenlerinin embla API'sine\n * ve yön bilgisine erişmesini sağlar.\n */\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Carousel Root\n * -----------------------------------------------------------------------------------------------*/\nconst Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n // Yön bilgisi opts.axis ile de verilebilir — orientation prop'u öncelikli\n const resolvedOrientation =\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\");\n\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: resolvedOrientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n // Embla \"select\" olayında ileri/geri butonlarının durumunu güncelle\n const onSelect = React.useCallback((emblaApi: CarouselApi) => {\n if (!emblaApi) return;\n setCanScrollPrev(emblaApi.canScrollPrev());\n setCanScrollNext(emblaApi.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n // Klavye navigasyonu: yatayda sol/sağ, dikeyde yukarı/aşağı ok tuşları\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const prevKey =\n resolvedOrientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\";\n const nextKey =\n resolvedOrientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\";\n\n if (event.key === prevKey) {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === nextKey) {\n event.preventDefault();\n scrollNext();\n }\n },\n [resolvedOrientation, scrollPrev, scrollNext]\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api.off(\"reInit\", onSelect);\n api.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api,\n opts,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n orientation: resolvedOrientation,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"moonui-theme\", \"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n }\n);\nCarousel.displayName = \"Carousel\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselContent\n * -----------------------------------------------------------------------------------------------*/\nconst carouselContentVariants = cva(\"flex\", {\n variants: {\n orientation: {\n horizontal: \"-ml-4\",\n vertical: \"-mt-4 flex-col\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface CarouselContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof carouselContentVariants>, \"orientation\"> {}\n\nconst CarouselContent = React.forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(carouselContentVariants({ orientation }), className)}\n {...props}\n />\n </div>\n );\n }\n);\nCarouselContent.displayName = \"CarouselContent\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselItem\n * -----------------------------------------------------------------------------------------------*/\nconst carouselItemVariants = cva(\"min-w-0 shrink-0 grow-0 basis-full\", {\n variants: {\n orientation: {\n horizontal: \"pl-4\",\n vertical: \"pt-4\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface CarouselItemProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof carouselItemVariants>, \"orientation\"> {}\n\nconst CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(carouselItemVariants({ orientation }), className)}\n {...props}\n />\n );\n }\n);\nCarouselItem.displayName = \"CarouselItem\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselPrevious\n * -----------------------------------------------------------------------------------------------*/\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon-sm\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n rounded=\"full\"\n className={cn(\n \"absolute\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n});\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselNext\n * -----------------------------------------------------------------------------------------------*/\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon-sm\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n rounded=\"full\"\n className={cn(\n \"absolute\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n});\nCarouselNext.displayName = \"CarouselNext\";\n\nexport {\n type CarouselApi,\n type CarouselOptions,\n type CarouselPlugin,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n carouselContentVariants,\n carouselItemVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Checkbox Bileşeni\n *\n * Erişilebilir, özelleştirilebilir ve tema sistemiyle tam entegre checkbox bileşeni.\n * Form elemanları ve seçim listeleri için kullanılır.\n */\n\nconst checkboxVariants = cva(\n \"peer shrink-0 border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary-foreground data-[state=indeterminate]:text-primary-foreground\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n outline: \"border-border bg-transparent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n muted: \"border-border bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n ghost: \"border-transparent bg-transparent hover:bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n subtle: \"transition-all duration-200\",\n default: \"transition-all duration-200\",\n bounce: \"transition-all duration-200\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n },\n }\n);\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {\n /**\n * İndeterminate durumu - grup seçimlerinde bazı öğeler seçilmişse kullanılır\n */\n indeterminate?: boolean;\n /**\n * Özel ikon komponenti\n */\n icon?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ \n className, \n variant, \n size, \n radius, \n animation,\n indeterminate = false,\n icon,\n checked,\n ...props \n}, ref) => {\n // Radix'in `CheckedState` tipi: boolean | \"indeterminate\".\n // \"indeterminate\" iletildiğinde Radix kökte `data-state=\"indeterminate\"` +\n // `aria-checked=\"mixed\"` üretir ve Indicator'ı render eder — Minus ikonu ancak\n // bu durumda görünür olur.\n //\n // Eskiden burada `false` iletiliyordu: kök hep `data-state=\"unchecked\"` kalıyor,\n // Radix Indicator unchecked durumda render edilmediği için Minus hiç görünmüyor\n // ve ekran okuyucu \"kısmen seçili\" durumunu duyuramıyordu.\n //\n // `checked` undefined ise olduğu gibi geçirilir — uncontrolled kullanım korunur.\n const effectiveChecked = indeterminate ? \"indeterminate\" : checked;\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={effectiveChecked}\n className={cn(\"moonui-theme\", checkboxVariants({ variant, size, radius, animation }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"flex items-center justify-center text-current\",\n animation === \"bounce\" && \"data-[state=checked]:animate-bounce\"\n )}\n >\n {indeterminate ? (\n <Minus className=\"h-[65%] w-[65%]\" />\n ) : icon ? (\n icon\n ) : (\n <Check className=\"h-[65%] w-[65%]\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\n// CheckboxGroup bileşeni\nexport interface CheckboxGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Grup içi yerleşim - dikey veya yatay\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Öğeler arasındaki boşluk (piksel)\n */\n spacing?: number | string;\n /**\n * Alt bileşenler\n */\n children: React.ReactNode;\n}\n\nconst CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\n ({ className, orientation = \"vertical\", spacing = \"1rem\", children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className\n )}\n style={{ gap: spacing }}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// CheckboxLabel bileşeni\nexport interface CheckboxLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * Checkbox bileşeni için HTML id\n */\n htmlFor?: string;\n /**\n * Label içeriği\n */\n children: React.ReactNode;\n /**\n * Checkbox öncesi veya sonrası\n */\n position?: \"start\" | \"end\";\n /**\n * Devre dışı durum stili\n */\n disabled?: boolean;\n}\n\nconst CheckboxLabel = React.forwardRef<HTMLLabelElement, CheckboxLabelProps>(\n ({ className, htmlFor, children, position = \"end\", disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nCheckboxLabel.displayName = \"CheckboxLabel\";\n\n// Checkbox ve Label içeren bileşen\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n /**\n * Label içeriği\n */\n label: React.ReactNode;\n /**\n * Label pozisyonu\n */\n labelPosition?: \"start\" | \"end\";\n /**\n * Label için HTML sınıfları\n */\n labelClassName?: string;\n}\n\nconst CheckboxWithLabel = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxWithLabelProps\n>(({ \n id, \n label, \n labelPosition = \"end\", \n labelClassName, \n ...checkboxProps \n}, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n {labelPosition === \"start\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"start\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n \n <Checkbox ref={ref} id={checkboxId} {...checkboxProps} />\n \n {labelPosition === \"end\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"end\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n </div>\n );\n});\nCheckboxWithLabel.displayName = \"CheckboxWithLabel\";\n\nexport { Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Collapsible (Daraltılabilir) Bileşeni\n * \n * İçeriği genişletilip daraltılabilen hafif bir bileşendir.\n * Tema sistemiyle tam entegre, erişilebilir ve özelleştirilebilir.\n */\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst collapsibleTriggerVariants = cva(\n \"flex w-full items-center justify-between transition-all\",\n {\n variants: {\n variant: {\n default: \"text-foreground hover:text-primary\",\n ghost: \"text-foreground hover:bg-accent/10 rounded\",\n outline: \"text-foreground border border-border rounded-t-md hover:bg-accent/5\",\n },\n size: {\n sm: \"text-xs py-2 px-3\",\n default: \"text-sm py-3 px-4\",\n md: \"text-base py-4 px-4\",\n lg: \"text-lg py-5 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleTriggerProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n VariantProps<typeof collapsibleTriggerVariants> {}\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(({ className, children, variant, size, asChild, ...props }, ref) => {\n // asChild kullanıldığında otomatik ikon eklemeyi atla\n if (asChild) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleTriggerVariants({ variant, size }), className)}\n asChild={asChild}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Trigger>\n )\n }\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 ml-auto transition-transform duration-200 [&[data-state=open]]:rotate-180\" />\n </CollapsiblePrimitive.Trigger>\n )\n})\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName\n\nconst collapsibleContentVariants = cva(\n \"overflow-hidden transition-all data-[state=closed]:animate-collapse-up data-[state=open]:animate-collapse-down\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n ghost: \"text-muted-foreground rounded-b\",\n outline: \"text-muted-foreground border border-t-0 border-border rounded-b-md\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleContentProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n VariantProps<typeof collapsibleContentVariants> {}\n\nconst CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(({ className, children, variant, size, ...props }, ref) => (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleContentVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"p-4\">{children}</div>\n </CollapsiblePrimitive.Content>\n))\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n collapsibleTriggerVariants,\n collapsibleContentVariants,\n}\n\nexport type {\n CollapsibleTriggerProps,\n CollapsibleContentProps\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"./tabs\";\nimport { Slider } from \"./slider\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { Copy, Check, Palette, Pipette } from \"lucide-react\";\n\n/**\n * ColorPicker Component\n * \n * A comprehensive color picker with multiple input methods\n */\n\nconst colorPickerVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n sm: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n },\n shape: {\n square: \"rounded-md\",\n circle: \"rounded-full\",\n rounded: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"default\",\n shape: \"square\",\n },\n }\n);\n\n// Color utilities\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n}\n\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } | null {\n const rgb = hexToRgb(hex);\n if (!rgb) return null;\n\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nfunction hslToHex(h: number, s: number, l: number): string {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return rgbToHex(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255)\n );\n}\n\nexport interface ColorPickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"value\">,\n VariantProps<typeof colorPickerVariants> {\n /**\n * Current color value\n */\n value?: string;\n /**\n * Callback when color changes\n */\n onChange?: (color: string) => void;\n /**\n * Show color input\n */\n showInput?: boolean;\n /**\n * Show preset colors\n */\n showPresets?: boolean;\n /**\n * Preset colors\n */\n presets?: string[];\n /**\n * Allow opacity\n */\n allowOpacity?: boolean;\n /**\n * Color format\n */\n format?: \"hex\" | \"rgb\" | \"hsl\";\n /**\n * Disable copy button\n */\n disableCopy?: boolean;\n /**\n * Trigger mode\n */\n triggerMode?: \"click\" | \"hover\";\n}\n\n// Default preset colors\nconst defaultPresets = [\n \"#000000\", \"#ffffff\", \"#ff0000\", \"#00ff00\", \"#0000ff\",\n \"#ffff00\", \"#ff00ff\", \"#00ffff\", \"#ff8800\", \"#8800ff\",\n \"#88ff00\", \"#0088ff\", \"#ff0088\", \"#00ff88\", \"#888888\",\n \"#f87171\", \"#fb923c\", \"#fbbf24\", \"#facc15\", \"#a3e635\",\n \"#4ade80\", \"#34d399\", \"#2dd4bf\", \"#22d3ee\", \"#38bdf8\",\n \"#60a5fa\", \"#818cf8\", \"#a78bfa\", \"#c084fc\", \"#e879f9\",\n \"#f472b6\", \"#fb7185\", \"#f43f5e\", \"#ef4444\", \"#dc2626\",\n];\n\nexport function ColorPicker({\n className,\n size,\n shape,\n value = \"#000000\",\n onChange,\n showInput = true,\n showPresets = true,\n presets = defaultPresets,\n allowOpacity = false,\n format = \"hex\",\n disableCopy = false,\n triggerMode = \"click\",\n disabled,\n ...props\n}: ColorPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [color, setColor] = React.useState(value);\n const [opacity, setOpacity] = React.useState(100);\n const [copied, setCopied] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(value);\n\n // Color components\n const hsl = React.useMemo(() => hexToHsl(color) || { h: 0, s: 0, l: 0 }, [color]);\n const rgb = React.useMemo(() => hexToRgb(color) || { r: 0, g: 0, b: 0 }, [color]);\n\n React.useEffect(() => {\n setColor(value);\n setInputValue(value);\n }, [value]);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n setInputValue(newColor);\n onChange?.(newColor);\n };\n\n const handleHslChange = (component: \"h\" | \"s\" | \"l\", value: number) => {\n const newHsl = { ...hsl, [component]: value };\n const newColor = hslToHex(newHsl.h, newHsl.s, newHsl.l);\n handleColorChange(newColor);\n };\n\n const handleRgbChange = (component: \"r\" | \"g\" | \"b\", value: number) => {\n const newRgb = { ...rgb, [component]: value };\n const newColor = rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n handleColorChange(newColor);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n if (/^#[0-9A-F]{6}$/i.test(newValue)) {\n handleColorChange(newValue);\n }\n };\n\n const copyToClipboard = async () => {\n try {\n let textToCopy = color;\n if (format === \"rgb\") {\n textToCopy = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n } else if (format === \"hsl\") {\n textToCopy = `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n const formatDisplay = () => {\n if (format === \"rgb\") return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n if (format === \"hsl\") return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n return color;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n colorPickerVariants({ size, shape }),\n \"p-0 border-2\",\n className\n )}\n style={{ backgroundColor: color }}\n disabled={disabled}\n {...props}\n >\n <span className=\"sr-only\">Pick a color</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80\" align=\"start\" sideOffset={8}>\n <Tabs defaultValue=\"picker\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"picker\">Picker</TabsTrigger>\n <TabsTrigger value=\"sliders\">Sliders</TabsTrigger>\n <TabsTrigger value=\"input\">Input</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"picker\" className=\"space-y-4\">\n {/* Color gradient picker */}\n <div className=\"relative h-48 rounded-md overflow-hidden\">\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(to right, #fff, hsl(${hsl.h}, 100%, 50%))`,\n }}\n />\n <div\n className=\"absolute inset-0\"\n style={{\n background: \"linear-gradient(to bottom, transparent, #000)\",\n }}\n />\n <motion.div\n className=\"absolute w-4 h-4 border-2 border-white rounded-full shadow-md cursor-pointer\"\n drag\n dragConstraints={{\n left: -8,\n right: 280,\n top: -8,\n bottom: 184,\n }}\n dragElastic={0}\n style={{\n backgroundColor: color,\n left: `${(hsl.s / 100) * 280 - 8}px`,\n top: `${(1 - hsl.l / 100) * 192 - 8}px`,\n }}\n />\n </div>\n\n {/* Hue slider */}\n <div className=\"space-y-2\">\n <Label>Hue</Label>\n <div\n className=\"relative h-3 rounded-full\"\n style={{\n background:\n \"linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)\",\n }}\n >\n <Slider\n value={[hsl.h]}\n onValueChange={([value]) => handleHslChange(\"h\", value)}\n max={360}\n step={1}\n className=\"absolute inset-0\"\n />\n </div>\n </div>\n\n {/* Opacity slider */}\n {allowOpacity && (\n <div className=\"space-y-2\">\n <Label>Opacity</Label>\n <div className=\"flex items-center gap-3\">\n <Slider\n value={[opacity]}\n onValueChange={([value]) => setOpacity(value)}\n max={100}\n step={1}\n className=\"flex-1\"\n />\n <span className=\"text-sm w-10 text-right\">{opacity}%</span>\n </div>\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"sliders\" className=\"space-y-4\">\n {/* RGB Sliders */}\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Red</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.r}</span>\n </div>\n <Slider\n value={[rgb.r]}\n onValueChange={([value]) => handleRgbChange(\"r\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-red-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Green</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.g}</span>\n </div>\n <Slider\n value={[rgb.g]}\n onValueChange={([value]) => handleRgbChange(\"g\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-green-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Blue</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.b}</span>\n </div>\n <Slider\n value={[rgb.b]}\n onValueChange={([value]) => handleRgbChange(\"b\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-blue-500\"\n />\n </div>\n </div>\n\n {/* HSL Info */}\n <div className=\"pt-2 border-t\">\n <div className=\"grid grid-cols-3 gap-2 text-sm\">\n <div>\n <p className=\"text-muted-foreground\">H</p>\n <p className=\"font-medium\">{hsl.h}°</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">S</p>\n <p className=\"font-medium\">{hsl.s}%</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">L</p>\n <p className=\"font-medium\">{hsl.l}%</p>\n </div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"input\" className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label>Hex Color</Label>\n <div className=\"flex gap-2\">\n <Input\n value={inputValue}\n onChange={handleInputChange}\n placeholder=\"#000000\"\n className=\"font-mono\"\n />\n <Button\n size=\"icon\"\n variant=\"outline\"\n onClick={() => handleColorChange(inputValue)}\n >\n <Check className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label>RGB Values</Label>\n <div className=\"grid grid-cols-3 gap-2\">\n <Input\n type=\"number\"\n value={rgb.r}\n onChange={(e) => handleRgbChange(\"r\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.g}\n onChange={(e) => handleRgbChange(\"g\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.b}\n onChange={(e) => handleRgbChange(\"b\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n </div>\n </div>\n </TabsContent>\n </Tabs>\n\n {/* Color preview and copy */}\n <div className=\"mt-4 flex items-center justify-between p-3 border rounded-lg\">\n <div className=\"flex items-center gap-3\">\n <div\n className={cn(\n \"h-10 w-10 rounded border-2\",\n colorPickerVariants({ shape })\n )}\n style={{ backgroundColor: color }}\n />\n <div>\n <p className=\"text-sm font-medium\">{formatDisplay()}</p>\n <p className=\"text-xs text-muted-foreground\">Current color</p>\n </div>\n </div>\n {!disableCopy && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={copyToClipboard}\n className=\"h-8 w-8\"\n >\n <AnimatePresence mode=\"wait\">\n {copied ? (\n <motion.div\n key=\"check\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Check className=\"h-4 w-4 text-green-600\" />\n </motion.div>\n ) : (\n <motion.div\n key=\"copy\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Copy className=\"h-4 w-4\" />\n </motion.div>\n )}\n </AnimatePresence>\n </Button>\n )}\n </div>\n\n {/* Preset colors */}\n {showPresets && presets.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n <Label>Preset Colors</Label>\n <div className=\"grid grid-cols-10 gap-1\">\n {presets.map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad\n // olmadan ekran okuyucu yalnızca \"button\" diye okur.\n aria-label={`Select color ${presetColor}`}\n aria-pressed={color === presetColor}\n className={cn(\n \"h-7 w-7 rounded border-2 transition-all hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n color === presetColor\n ? \"border-primary\"\n : \"border-transparent\"\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n />\n ))}\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * SimpleColorPicker Component\n * \n * A simplified color picker with preset colors only\n */\n\nexport interface SimpleColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n colors?: string[];\n className?: string;\n size?: \"sm\" | \"default\" | \"lg\";\n}\n\nexport function SimpleColorPicker({\n value = \"#000000\",\n onChange,\n colors = defaultPresets.slice(0, 10),\n className,\n size = \"default\",\n}: SimpleColorPickerProps) {\n const sizeClasses = {\n sm: \"h-6 w-6\",\n default: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n return (\n <div className={cn(\"moonui-theme\", \"flex flex-wrap gap-2\", className)}>\n {colors.map((color) => (\n <button\n key={color}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad olmadan\n // ekran okuyucu yalnızca \"button\" diye okur.\n aria-label={`Select color ${color}`}\n aria-pressed={value === color}\n className={cn(\n \"rounded-full border-2 transition-all hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n sizeClasses[size],\n value === color ? \"border-primary ring-2 ring-primary/20\" : \"border-transparent\"\n )}\n style={{ backgroundColor: color }}\n onClick={() => onChange?.(color)}\n />\n ))}\n </div>\n );\n}\n\n/**\n * GradientPicker Component\n * \n * Pick gradient colors\n */\n\nexport interface GradientPickerProps {\n value?: { start: string; end: string; angle?: number };\n onChange?: (gradient: { start: string; end: string; angle: number }) => void;\n className?: string;\n}\n\nexport function GradientPicker({\n value = { start: \"#ff0000\", end: \"#0000ff\", angle: 90 },\n onChange,\n className,\n}: GradientPickerProps) {\n const [gradient, setGradient] = React.useState(value);\n\n const handleChange = (field: \"start\" | \"end\" | \"angle\", newValue: string | number) => {\n const newGradient = { ...gradient, [field]: newValue };\n setGradient(newGradient);\n onChange?.(newGradient as { start: string; end: string; angle: number });\n };\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-4\", className)}>\n <div\n className=\"h-20 rounded-lg border-2\"\n style={{\n background: `linear-gradient(${gradient.angle}deg, ${gradient.start}, ${gradient.end})`,\n }}\n />\n \n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <Label>Start Color</Label>\n <ColorPicker\n value={gradient.start}\n onChange={(color) => handleChange(\"start\", color)}\n size=\"sm\"\n />\n </div>\n <div className=\"space-y-2\">\n <Label>End Color</Label>\n <ColorPicker\n value={gradient.end}\n onChange={(color) => handleChange(\"end\", color)}\n size=\"sm\"\n />\n </div>\n </div>\n \n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Angle</Label>\n <span className=\"text-sm text-muted-foreground\">{gradient.angle}°</span>\n </div>\n <Slider\n value={[gradient.angle || 90]}\n onValueChange={([value]) => handleChange(\"angle\", value)}\n max={360}\n step={1}\n />\n </div>\n </div>\n );\n}\n\n// Re-export icons used\nexport { Palette, Pipette } from \"lucide-react\";","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Input Component\n * \n * Erişilebilir, estetik ve işlevsel input bileşeni.\n * İkon desteği, hata gösterimi ve çeşitli varyantlar sunar.\n */\n\nconst inputWrapperVariants = cva(\n \"group relative flex items-center w-full transition-colors\",\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst inputVariants = cva(\n [\n \"w-full bg-background transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground\", \n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"file:border-0 file:bg-transparent file:font-medium\",\n \"focus-visible:outline-none dark:text-gray-200\"\n ],\n {\n variants: {\n variant: {\n standard: \"border border-input rounded-md px-3 py-2 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:bg-gray-800/80 dark:shadow-inner dark:shadow-gray-950/10\",\n filled: \"border border-transparent bg-gray-100 dark:bg-gray-800 rounded-md px-3 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 dark:shadow-inner dark:shadow-gray-950/10\",\n ghost: \"border-none bg-transparent shadow-none px-1 dark:text-gray-300 hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b border-input rounded-none px-0 py-2 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:text-gray-300 dark:bg-transparent\",\n },\n size: {\n sm: \"h-8 text-xs\",\n md: \"h-10 text-sm\",\n lg: \"h-12 text-base\",\n },\n hasLeftIcon: {\n true: \"pl-10\",\n false: \"\",\n },\n hasRightIcon: {\n true: \"pr-10\",\n false: \"\",\n },\n hasRightButton: {\n true: \"pr-10\",\n false: \"\",\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\",\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-800/50 pointer-events-none\",\n false: \"\",\n }\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n isError: false,\n isSuccess: false,\n isDisabled: false,\n hasLeftIcon: false,\n hasRightIcon: false,\n hasRightButton: false,\n },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n Omit<VariantProps<typeof inputVariants>, \"isDisabled\" | \"hasLeftIcon\" | \"hasRightIcon\" | \"hasRightButton\"> {\n /** Label metni */\n label?: string;\n /** Floating label animasyonu (Material Design pattern) */\n floatingLabel?: boolean;\n /** Floating label için ek sınıflar */\n floatingLabelClassName?: string;\n /** Hata mesajı */\n error?: string;\n /** Başarı mesajı */\n success?: string;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek buton (password show/hide vb. için) */\n rightButton?: React.ReactNode;\n /** Mesajın görünürlüğü (true: her zaman görünür, false: sadece hata/başarı durumunda) */\n alwaysShowMessage?: boolean;\n /** Input wrapper için ek sınıflar */\n wrapperClassName?: string;\n /** Mesaj için ek sınıflar */\n messageClassName?: string;\n}\n\n/**\n * Premium Input Component\n * \n * @param props - Input bileşeni özellikleri\n * @param props.variant - Görsel varyant (standard, filled, ghost, underline)\n * @param props.size - Boyut (sm, md, lg)\n * @param props.error - Hata mesajı\n * @param props.success - Başarı mesajı\n * @param props.loading - Yükleniyor durumu\n * @param props.leftIcon - Sol tarafta gösterilecek ikon\n * @param props.rightIcon - Sağ tarafta gösterilecek ikon\n * @param props.rightButton - Sağ tarafta gösterilecek buton\n * @param props.alwaysShowMessage - Mesajın her zaman görünür olması\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({\n className,\n wrapperClassName,\n messageClassName,\n variant,\n size,\n isError,\n disabled,\n error,\n success,\n loading,\n leftIcon,\n rightIcon,\n rightButton,\n alwaysShowMessage = false,\n label,\n floatingLabel = false,\n floatingLabelClassName,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n ...props\n }, ref) => {\n // Mesaj id'leri `props.id` yoksa \"-error\"/\"-success\" gibi SABİT string'e\n // düşüyordu; aynı sayfada iki id'siz Input olduğunda DOM'da yinelenen id\n // oluşuyor ve aria-describedby yanlış elemanı işaret ediyordu.\n const reactId = React.useId();\n const fieldId = props.id || reactId;\n // Floating label state management\n const [isFocused, setIsFocused] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(value || defaultValue || \"\");\n\n // Floating label aktif mi kontrolü\n const hasValue = internalValue !== \"\" && internalValue !== null && internalValue !== undefined;\n const isLabelActive = isFocused || hasValue;\n\n // Event handler'lar\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n // Value değişikliklerini takip et\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Mesajı göster/gizle\n const showMessage = alwaysShowMessage || error || success;\n const messageType = error ? \"error\" : success ? \"success\" : \"normal\";\n\n return (\n <div className=\"space-y-1.5 w-full\">\n <div className={cn(\"moonui-theme\", inputWrapperVariants({ size }), wrapperClassName)}>\n {/* Floating Label */}\n {floatingLabel && label && (\n <label\n htmlFor={props.id}\n className={cn(\n \"absolute transition-all duration-200 pointer-events-none\",\n leftIcon || loading ? \"left-10\" : \"left-3\",\n \"text-gray-500 dark:text-gray-400\",\n isLabelActive\n ? \"top-0 -translate-y-1/2 text-xs bg-background dark:bg-gray-800 px-1\"\n : \"top-1/2 -translate-y-1/2 text-sm\",\n isFocused && \"text-primary dark:text-primary\",\n !!error && \"text-error\",\n disabled && \"opacity-50\",\n floatingLabelClassName\n )}\n >\n {label}\n </label>\n )}\n\n {leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : leftIcon}\n </div>\n )}\n\n <input\n className={cn(\n inputVariants({\n variant,\n size,\n isError: !!error || isError,\n isSuccess: !!success,\n isDisabled: disabled || loading,\n hasLeftIcon: !!leftIcon || loading,\n hasRightIcon: !!rightIcon,\n hasRightButton: !!rightButton,\n }),\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n data-error={!!error ? \"\" : undefined}\n data-success={!!success ? \"\" : undefined}\n aria-invalid={!!error || !!isError || undefined}\n aria-describedby={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={floatingLabel ? (isLabelActive ? placeholder : \"\") : placeholder}\n {...props}\n />\n\n {rightIcon && !loading && (\n <div className=\"absolute right-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {rightIcon}\n </div>\n )}\n\n {rightButton && (\n <div className=\"absolute right-3\">\n {rightButton}\n </div>\n )}\n\n {loading && !leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n\n {showMessage && (\n <p\n className={cn(\n \"text-xs transition-all\",\n messageType === \"error\" && \"text-error\",\n messageType === \"success\" && \"text-success\",\n messageType === \"normal\" && \"text-muted-foreground\",\n messageClassName\n )}\n id={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n >\n {error || success || \"\"}\n </p>\n )}\n </div>\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200\"\n)\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Popover Bileşeni\n * \n * Tıklanabilir bir öğeden açılan, tema sistemiyle tam entegre bir içerik bileşeni.\n * Filtreler, ayarlar ve diğer içerikler için kullanışlı ve erişilebilir bir arayüz sağlar.\n */\n\nconst popoverContentVariants = cva(\n \"z-50 w-72 rounded-md border border-border bg-background p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"border-destructive bg-destructive/5\",\n outline: \"border-border bg-transparent\",\n subtle: \"border-transparent bg-muted/50\",\n },\n size: {\n sm: \"w-48 p-3\",\n default: \"w-72 p-4\",\n lg: \"w-96 p-5\",\n },\n side: {\n top: \"data-[side=top]:slide-in-from-bottom-2\",\n right: \"data-[side=right]:slide-in-from-left-2\",\n bottom: \"data-[side=bottom]:slide-in-from-top-2\",\n left: \"data-[side=left]:slide-in-from-right-2\",\n },\n position: {\n pointerEventsNone: \"pointer-events-none\",\n default: \"\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n default: \"shadow-md\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n shadow: \"default\",\n },\n }\n);\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport interface PopoverContentProps \n extends Omit<React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>, 'side'>,\n VariantProps<typeof popoverContentVariants> {\n /**\n * Popover'ın arka plan bulanıklığı etkin mi\n */\n backdrop?: boolean;\n /**\n * Popover'a tıklandığında kapanıp kapanmayacağı\n */\n closeOnInteractOutside?: boolean;\n /**\n * Popover açıkken arka planın karartılması\n */\n overlayBackdrop?: boolean;\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({\n className,\n variant,\n size,\n side,\n position,\n radius,\n shadow,\n backdrop = false,\n closeOnInteractOutside = true,\n overlayBackdrop = false,\n sideOffset = 4,\n ...props\n}, ref) => (\n <>\n {overlayBackdrop && (\n <div className=\"fixed inset-0 z-40 bg-overlay opacity-30\" />\n )}\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={8}\n onInteractOutside={(e) => {\n if (!closeOnInteractOutside) {\n e.preventDefault();\n }\n }}\n className={cn(\n popoverContentVariants({ \n variant, \n size, \n side, \n position,\n radius,\n shadow\n }),\n backdrop && \"backdrop-blur-md bg-opacity-80\",\n className\n )}\n {...props}\n />\n </>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\n/**\n * PopoverClose bileşeni\n */\nconst PopoverClose = PopoverPrimitive.Close;\n\n/**\n * Popover için bölüm ayırıcı\n */\nconst PopoverSeparator = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"my-2 h-px bg-border\", className)}\n {...props}\n />\n);\nPopoverSeparator.displayName = \"PopoverSeparator\";\n\n/**\n * Popover başlık bileşeni\n */\nconst PopoverHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border\", className)}\n {...props}\n />\n);\nPopoverHeader.displayName = \"PopoverHeader\";\n\n/**\n * Popover footer bileşeni\n */\nconst PopoverFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border\", className)}\n {...props}\n />\n);\nPopoverFooter.displayName = \"PopoverFooter\";\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverSeparator,\n PopoverHeader,\n PopoverFooter,\n popoverContentVariants,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs Root\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /** Mobil görünümde dikey düzen için */\n vertical?: boolean;\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ vertical = false, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", props.className)}\n orientation={vertical ? \"vertical\" : \"horizontal\"}\n {...props}\n />\n));\n\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\nconst tabsListVariants = cva(\n \"flex items-center justify-start transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted rounded-md p-1 text-muted-foreground dark:bg-gray-800/80 dark:text-gray-400\",\n pills: \"bg-transparent gap-3 p-0 dark:text-gray-400\",\n underline: \"bg-transparent border-b border-border dark:border-gray-700 gap-4 dark:text-gray-400\",\n cards: \"bg-transparent gap-2 p-0 dark:text-gray-400\",\n minimal: \"bg-transparent gap-1 p-0 dark:text-gray-400\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col items-start gap-1\"\n },\n fullWidth: {\n true: \"w-full\"\n },\n scrollable: {\n true: \"overflow-x-auto overflow-y-hidden flex-nowrap hide-scrollbar\",\n false: \"flex-wrap\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n fullWidth: false,\n scrollable: false\n }\n }\n);\n\ninterface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n /** Mobil için yatay scroll */\n scrollable?: boolean;\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, orientation, fullWidth, scrollable, ...props }, ref) => {\n // scrollable prop'unu DOM'a geçirmemek için destructure ediyoruz\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\"moonui-theme\", tabsListVariants({ variant, orientation, fullWidth, scrollable, className }))}\n {...props}\n />\n );\n});\n\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap flex-shrink-0 font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"rounded-md data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/10\",\n underline: \"rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground dark:data-[state=active]:border-primary/80 dark:data-[state=active]:text-gray-100\",\n pills: \"rounded-lg bg-gray-100 hover:bg-gray-200/80 border border-gray-300 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-primary dark:bg-gray-800 dark:hover:bg-gray-700 dark:border-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:text-white dark:data-[state=active]:border-primary\",\n cards: \"rounded-md bg-muted/50 hover:bg-muted data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md dark:bg-gray-800/50 dark:hover:bg-gray-700/50 dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/20\",\n minimal: \"rounded-sm bg-transparent hover:bg-muted/30 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:underline data-[state=active]:underline-offset-4 dark:hover:bg-gray-800/30 dark:data-[state=active]:text-gray-200\",\n },\n size: {\n sm: \"h-7 px-2 text-xs\",\n md: \"h-9 px-3 py-1.5 text-sm\",\n lg: \"h-10 px-4 py-2 text-base\",\n },\n orientation: {\n horizontal: \"\",\n vertical: \"justify-start w-full text-left\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n /** İkon konumu */\n iconPosition?: \"left\" | \"right\" | \"none\";\n /** İkon */\n icon?: React.ReactNode;\n /** Badge içeriği */\n badge?: React.ReactNode;\n /** Aktif olmayan durumda yarı saydam */\n fadeTabs?: boolean;\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ \n className, \n variant, \n size, \n icon, \n iconPosition = \"left\", \n badge,\n fadeTabs = false,\n orientation,\n fullWidth,\n children, \n ...props \n}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"moonui-theme\",\n tabsTriggerVariants({ variant, size, orientation, fullWidth }),\n fadeTabs && \"data-[state=inactive]:opacity-60\",\n className\n )}\n {...props}\n >\n {icon && iconPosition === \"left\" && (\n <span className=\"mr-2\">{icon}</span>\n )}\n {children}\n {icon && iconPosition === \"right\" && (\n <span className=\"ml-2\">{icon}</span>\n )}\n {badge && (\n <span className=\"ml-2\">{badge}</span>\n )}\n </TabsPrimitive.Trigger>\n));\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsContentProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> {\n /** İçerik animasyonu */\n animated?: boolean;\n}\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, animated = false, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"mt-6 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n animated && \"data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut\",\n className\n )}\n {...props}\n />\n));\n\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Slider Component\n *\n * Accessible, customizable slider component fully integrated with the theme system.\n * Used for value ranges like volume, brightness, price ranges.\n */\n\nconst sliderVariants = cva(\n \"relative flex w-full touch-none select-none items-center\",\n {\n variants: {\n size: {\n sm: \"h-5\",\n default: \"h-6\",\n md: \"h-8\",\n lg: \"h-10\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nconst sliderTrackVariants = cva(\n \"relative h-1.5 w-full grow overflow-hidden rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n accent: \"bg-accent/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst sliderRangeVariants = cva(\n \"absolute h-full\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n accent: \"bg-accent\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n)\n\nconst sliderThumbVariants = cva(\n \"block rounded-full border-2 ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-foreground bg-background\",\n primary: \"border-primary bg-background\",\n secondary: \"border-secondary bg-background\",\n accent: \"border-accent bg-background\",\n success: \"border-success bg-background\",\n warning: \"border-warning bg-background\",\n error: \"border-error bg-background\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Custom type definition for component properties\nexport type SliderBaseProps = {\n /**\n * Track variant\n */\n trackVariant?: VariantProps<typeof sliderTrackVariants>[\"variant\"];\n /**\n * Range variant\n */\n rangeVariant?: VariantProps<typeof sliderRangeVariants>[\"variant\"];\n /**\n * Thumb variant\n */\n thumbVariant?: VariantProps<typeof sliderThumbVariants>[\"variant\"];\n /**\n * Thumb size\n */\n thumbSize?: VariantProps<typeof sliderThumbVariants>[\"size\"];\n /**\n * Show value label\n */\n showValueLabel?: boolean;\n /**\n * Value label format function\n */\n valueLabelFormat?: (value: number) => string;\n /**\n * Value label class name\n */\n valueLabelClassName?: string;\n /**\n * Slider value\n */\n value?: number[];\n /**\n * Default value\n */\n defaultValue?: number[];\n /**\n * Function called when value changes\n */\n onValueChange?: (value: number[]) => void;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step value\n */\n step?: number;\n /**\n * Slider size\n */\n size?: VariantProps<typeof sliderVariants>[\"size\"];\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\n// Merge HTML properties without defaultValue conflicts\nexport type SliderProps = SliderBaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'>\n\nconst Slider = React.forwardRef<\n HTMLDivElement,\n SliderProps\n>(({\n className,\n size,\n trackVariant,\n rangeVariant,\n thumbVariant,\n thumbSize,\n showValueLabel = false,\n valueLabelFormat,\n valueLabelClassName,\n value,\n defaultValue = [0],\n onValueChange,\n disabled,\n ...props\n}, ref) => {\n // Value management\n const [sliderValue, setSliderValue] = React.useState<number[]>(\n value as number[] || defaultValue as number[] || [0]\n );\n\n React.useEffect(() => {\n if (value !== undefined) {\n setSliderValue(value as number[]);\n }\n }, [value]);\n\n // Format value label with proper precision handling\n const formatValue = (val: number) => {\n if (valueLabelFormat) {\n return valueLabelFormat(val);\n }\n // Round to avoid floating point precision issues\n const roundedValue = Math.round(val * 100) / 100;\n return `${roundedValue}`;\n };\n\n // Calculate percentage for thumb position\n const calculateThumbPercent = (value: number, min: number, max: number) => {\n return ((value - min) / (max - min)) * 100;\n };\n\n // Handle mouse/touch events\n const trackRef = React.useRef<HTMLDivElement>(null);\n \n const min = props.min || 0;\n const max = props.max || 100;\n const step = props.step || 1;\n\n // Handle value change with proper precision\n const handleValueChange = (newValues: number[]) => {\n // Round values to avoid floating point precision issues\n const roundedValues = newValues.map(val => {\n if (step < 1) {\n // For decimal steps, round to appropriate decimal places\n const decimals = step.toString().split('.')[1]?.length || 0;\n return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n }\n return Math.round(val);\n });\n \n setSliderValue(roundedValues);\n if (onValueChange) {\n onValueChange(roundedValues);\n }\n };\n\n // Handle track click\n const handleTrackClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n \n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (event.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n // Just update the first thumb for simplicity\n newValues[0] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleThumbMouseDown = (index: number) => (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n \n const handleMouseMove = (moveEvent: MouseEvent) => {\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (moveEvent.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n newValues[index] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n // Klavyeyle değer değiştirme (WCAG 2.1.1 Keyboard).\n //\n // Thumb'lar `role=\"slider\"` + `aria-valuenow` + `tabIndex=0` taşıyıp\n // odaklanabiliyordu, ancak hiçbir klavye handler'ı yoktu: bileşen ARIA\n // sözleşmesinde slider olduğunu duyuruyor ama yalnızca fareyle çalışıyordu.\n // Tuş eşlemesi Radix Slider davranışını izler.\n const handleThumbKeyDown = (index: number) => (event: React.KeyboardEvent) => {\n if (disabled) return;\n\n const largeStep = step * 10;\n const current = sliderValue[index];\n let next: number;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = current + step;\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = current - step;\n break;\n case \"PageUp\":\n next = current + largeStep;\n break;\n case \"PageDown\":\n next = current - largeStep;\n break;\n case \"Home\":\n next = min;\n break;\n case \"End\":\n next = max;\n break;\n default:\n return;\n }\n\n // Yalnızca yukarıdaki tuşlarda varsayılan davranışı engelle (sayfa kaydırma).\n event.preventDefault();\n\n // Çoklu thumb'da komşu değerleri aşma; tek thumb'da min/max sınırları geçerli.\n const lowerBound = index > 0 ? sliderValue[index - 1] : min;\n const upperBound =\n index < sliderValue.length - 1 ? sliderValue[index + 1] : max;\n const bounded = Math.max(lowerBound, Math.min(upperBound, next));\n\n const newValues = [...sliderValue];\n newValues[index] = bounded;\n // handleValueChange, step hassasiyetine göre yuvarlamayı zaten uyguluyor.\n handleValueChange(newValues);\n };\n\n return (\n <div className=\"w-full\" ref={ref} {...props}>\n {showValueLabel && (\n <div className={cn(\n \"flex justify-end mb-1 text-sm text-muted-foreground\",\n valueLabelClassName\n )}>\n {sliderValue.length === 1 ? (\n <span>{formatValue(sliderValue[0])}</span>\n ) : (\n <span>{formatValue(sliderValue[0])} - {formatValue(sliderValue[sliderValue.length - 1])}</span>\n )}\n </div>\n )}\n \n <div\n className={cn(\"moonui-theme\", sliderVariants({ size }), className)}\n data-disabled={disabled ? true : undefined}\n >\n {/* Track */}\n <div\n ref={trackRef}\n className={cn(sliderTrackVariants({ variant: trackVariant || thumbVariant || \"default\" }))}\n onClick={handleTrackClick}\n >\n {/* Range */}\n <div\n className={cn(sliderRangeVariants({ variant: rangeVariant || thumbVariant || \"primary\" }))}\n style={{\n left: '0%',\n width: `${calculateThumbPercent(sliderValue[0], min, max)}%`,\n }}\n />\n </div>\n\n {/* Thumbs */}\n {sliderValue.map((value, i) => (\n <div\n key={i}\n className={cn(sliderThumbVariants({\n variant: thumbVariant || \"primary\",\n size: thumbSize\n }))}\n style={{\n left: `${calculateThumbPercent(value, min, max)}%`,\n transform: 'translateX(-50%)',\n position: 'absolute',\n top: '50%',\n marginTop: thumbSize === \"sm\" ? '-6px' : thumbSize === \"lg\" ? '-12px' : '-8px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseDown={handleThumbMouseDown(i)}\n onKeyDown={handleThumbKeyDown(i)}\n aria-label={`Thumb ${i + 1}`}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n />\n ))}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n\nexport { Slider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search } from \"lucide-react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog\"\n\n/**\n * Command (Komut Paleti) Bileşeni\n * \n * Gerçek command palette işlevselliği ile klavye navigasyonu, arama ve filtreleme.\n * cmdk kütüphanesi üzerine inşa edilmiş, tam özellikli command interface.\n */\n\nconst commandVariants = cva(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground\",\n glass: \"bg-background/80 text-foreground backdrop-blur-sm\",\n bordered: \"bg-popover text-popover-foreground border border-border\",\n },\n size: {\n sm: \"min-h-[200px]\",\n default: \"min-h-[300px]\",\n lg: \"min-h-[400px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// Command bileşeni - cmdk primitive wrapper\ninterface CommandProps \n extends React.ComponentProps<typeof CommandPrimitive>,\n VariantProps<typeof commandVariants> {}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n CommandProps\n>(({ className, variant, size, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\"moonui-theme\", commandVariants({ variant, size }), className)}\n {...props}\n />\n))\n// NOT: cmdk primitive'leri displayName tanımlamaz (Radix'ten farklı olarak). Bu yüzden\n// `CommandPrimitive.*.displayName` okumak `undefined` üretiyordu ve React DevTools ile hata\n// mesajlarında bileşenler isimsiz görünüyordu. Kütüphane genelindeki konvansiyona uyarak\n// displayName'ler açık string olarak verilir.\nCommand.displayName = \"Command\"\n\n// CommandDialog bileşeni\ninterface CommandDialogProps extends React.ComponentProps<typeof Dialog> {\n commandClassName?: string\n children?: React.ReactNode\n}\n\nconst CommandDialog = ({ \n children, \n commandClassName,\n ...props \n}: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\" hideCloseButton>\n <DialogTitle className=\"sr-only\">Command Menu</DialogTitle>\n <Command className={cn(\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\",\n commandClassName\n )}>\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\n// CommandInput bileşeni\ninterface CommandInputProps \n extends React.ComponentProps<typeof CommandPrimitive.Input> {}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n CommandInputProps\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\nCommandInput.displayName = \"CommandInput\"\n\n// CommandList bileşeni\ninterface CommandListProps \n extends React.ComponentProps<typeof CommandPrimitive.List> {}\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n CommandListProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"moonui-theme\", \"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\nCommandList.displayName = \"CommandList\"\n\n// CommandEmpty bileşeni\ninterface CommandEmptyProps \n extends React.ComponentProps<typeof CommandPrimitive.Empty> {}\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n CommandEmptyProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"moonui-theme\", \"py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCommandEmpty.displayName = \"CommandEmpty\"\n\n// CommandGroup bileşeni\ninterface CommandGroupProps \n extends React.ComponentProps<typeof CommandPrimitive.Group> {}\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n CommandGroupProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nCommandGroup.displayName = \"CommandGroup\"\n\n// CommandSeparator bileşeni\ninterface CommandSeparatorProps \n extends React.ComponentProps<typeof CommandPrimitive.Separator> {}\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n CommandSeparatorProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = \"CommandSeparator\"\n\n// CommandItem bileşeni\ninterface CommandItemProps \n extends React.ComponentProps<typeof CommandPrimitive.Item> {}\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n CommandItemProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\nCommandItem.displayName = \"CommandItem\"\n\n// CommandShortcut bileşeni - utility component\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, Loader2, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Dialog Component\n *\n * Modern, accessible and customizable modal dialog component.\n * Enhances user experience with variants, sizes and rich features.\n * Provides a premium appearance with dark and light mode compatibility and fluid animations.\n */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n {\n variants: {\n variant: {\n default: \"bg-black/80\",\n subtle: \"bg-black/60\",\n blur: \"bg-black/40 backdrop-blur-md\",\n minimal: \"bg-black/20 backdrop-blur-sm\",\n },\n animation: {\n default: \"duration-200\",\n slow: \"duration-300\",\n fast: \"duration-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animation: \"default\",\n },\n }\n);\n\ninterface DialogOverlayProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, variant, animation, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\"moonui-theme\", overlayVariants({ variant, animation }), className)}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-gray-200 dark:border-gray-700\",\n primary: \"border-primary/20 dark:border-primary/30\",\n secondary: \"border-gray-300 dark:border-gray-600\",\n ghost: \"border-transparent shadow-xl\",\n destructive: \"border-error/20 dark:border-error/30\",\n },\n size: {\n xs: \"max-w-xs p-4\",\n sm: \"max-w-sm p-5\",\n default: \"max-w-lg p-6\",\n md: \"max-w-md p-6\",\n lg: \"max-w-2xl p-7\",\n xl: \"max-w-4xl p-8\",\n full: \"max-w-[95vw] max-h-[95vh] p-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n default: \"rounded-lg\",\n lg: \"rounded-xl\",\n xl: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n animation: {\n default:\n \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n fade: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n zoom: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n slide: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n none: \"\",\n },\n position: {\n default: \"top-[50%]\",\n top: \"top-[5%]\",\n bottom: \"bottom-[5%] top-auto translate-y-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n position: \"default\",\n },\n }\n);\n\ninterface DialogContentProps\n extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, 'title'>,\n VariantProps<typeof dialogContentVariants> {\n /** X butonunu gizle */\n hideCloseButton?: boolean;\n /** Overlay varyantı */\n overlayVariant?: VariantProps<typeof overlayVariants>[\"variant\"];\n /** Overlay animasyonu */\n overlayAnimation?: VariantProps<typeof overlayVariants>[\"animation\"];\n /** İçerik başlığı (hızlı kullanım için) */\n title?: React.ReactNode;\n /** İçerik açıklaması (hızlı kullanım için) */\n description?: React.ReactNode;\n /** Başlık ikonu */\n icon?: React.ReactNode;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Success durumu */\n success?: boolean;\n /** Özel onClose handler */\n onClose?: () => void;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n {\n className,\n children,\n variant,\n size,\n radius,\n animation,\n position,\n overlayVariant = \"default\",\n overlayAnimation = \"default\",\n hideCloseButton = false,\n title,\n description,\n icon,\n loading = false,\n success = false,\n onClose,\n ...props\n },\n ref\n ) => {\n // Capturing the close function through the Radix Dialog API\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <DialogPortal>\n <DialogOverlay\n variant={overlayVariant}\n animation={overlayAnimation}\n onClick={hideCloseButton ? undefined : handleClose}\n />\n <DialogPrimitive.Content\n ref={ref}\n onEscapeKeyDown={hideCloseButton ? undefined : handleClose}\n onInteractOutside={\n hideCloseButton ? undefined : handleClose\n }\n className={cn(\n dialogContentVariants({\n variant,\n size,\n radius,\n animation,\n position,\n }),\n \"outline-none\",\n loading && \"pointer-events-none\",\n success && \"border-success/40\",\n className\n )}\n {...props}\n >\n {/* Başlık ve açıklama varsa otomatik olarak DialogHeader oluştur */}\n {(title || description || icon) && (\n <DialogHeader className=\"flex gap-4\">\n {/* İkon veya loading/success durumları */}\n {(icon || loading || success) && (\n <div className=\"flex shrink-0 items-center justify-center\">\n {loading && (\n <Loader2 className=\"h-5 w-5 animate-spin text-primary\" />\n )}\n {success && (\n <Check className=\"h-5 w-5 text-success\" />\n )}\n {!loading && !success && icon && (\n <span className=\"text-primary\">\n {icon}\n </span>\n )}\n </div>\n )}\n <div className=\"flex-1\">\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && (\n <DialogDescription>\n {description}\n </DialogDescription>\n )}\n </div>\n </DialogHeader>\n )}\n\n {/* Main content */}\n {children}\n\n {/* Close button */}\n {!hideCloseButton && (\n <DialogPrimitive.Close\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-2 disabled:pointer-events-none dark:text-gray-300 dark:hover:text-white\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n }\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-2 mt-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-xl font-semibold leading-snug tracking-tight dark:text-white\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n \"text-sm text-muted-foreground leading-normal dark:text-gray-400\",\n className\n )}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\n/**\n * Dialog-Form integration for use with form support\n * Used to integrate form submission processes into the modal\n */\nconst DialogForm = React.forwardRef<\n HTMLFormElement,\n React.HTMLAttributes<HTMLFormElement>\n>(({ className, ...props }, ref) => (\n <form\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col gap-4\", className)}\n {...props}\n />\n));\nDialogForm.displayName = \"DialogForm\";\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogForm,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ColumnDef,\n SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { \n Table, \n TableBody, \n TableCell, \n TableHead, \n TableHeader, \n TableRow \n} from \"./table\";\nimport {\n ChevronLeft, \n ChevronRight, \n ArrowUpDown,\n ArrowUp,\n ArrowDown,\n Search,\n} from \"lucide-react\";\n\n/**\n * Basic DataTable Component\n * \n * A simple data table with sorting, filtering, and pagination.\n * For advanced features, upgrade to MoonUI Pro.\n */\n\ninterface DataTableBasicProps<TData, TValue> {\n /**\n * The table columns definition\n */\n columns: ColumnDef<TData, TValue>[];\n /**\n * The data to display\n */\n data: TData[];\n /**\n * Enable/disable sorting\n */\n enableSorting?: boolean;\n /**\n * Enable/disable pagination\n */\n enablePagination?: boolean;\n /**\n * Enable/disable global search\n */\n enableSearch?: boolean;\n /**\n * Default page size\n */\n pageSize?: number;\n /**\n * Search placeholder text\n */\n searchPlaceholder?: string;\n /**\n * Empty state message\n */\n emptyMessage?: string;\n /**\n * Class name\n */\n className?: string;\n}\n\nexport function DataTableBasic<TData, TValue>({\n columns,\n data,\n enableSorting = true,\n enablePagination = true,\n enableSearch = true,\n pageSize = 10,\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No results found.\",\n className,\n}: DataTableBasicProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = React.useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n onSortingChange: enableSorting ? setSorting : undefined,\n onGlobalFilterChange: enableSearch ? setGlobalFilter : undefined,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: enableSearch ? getFilteredRowModel() : undefined,\n state: {\n sorting,\n globalFilter,\n },\n initialState: {\n pagination: {\n pageSize,\n },\n },\n });\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Search */}\n {enableSearch && (\n <div className=\"flex items-center\">\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={globalFilter}\n onChange={(event) => setGlobalFilter(event.target.value)}\n className=\"pl-8\"\n />\n </div>\n </div>\n )}\n\n {/* Table */}\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() && \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {enableSorting && header.column.getCanSort() && (\n <div className=\"ml-auto\">\n {header.column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"h-4 w-4\" />\n ) : header.column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"h-4 w-4 opacity-50\" />\n )}\n </div>\n )}\n </div>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n {enablePagination && (\n <div className=\"flex items-center justify-end space-x-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredRowModel().rows.length} row(s)\n </div>\n <div className=\"space-x-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n Previous\n </Button>\n <span className=\"text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Simple sortable header helper\n */\nexport function createSortableHeader(label: string) {\n return ({ column }: any) => (\n <Button\n variant=\"ghost\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {label}\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"ml-2 h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n );\n}\n\n// Export utilities\nexport { type ColumnDef } from \"@tanstack/react-table\";","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-200\",\n bordered: \"border border-border dark:border-gray-700\",\n striped: \"dark:text-gray-200\",\n card: \"border border-border dark:border-gray-700 rounded-md shadow-sm dark:shadow-gray-900/20\",\n minimal: \"border-none dark:text-gray-200\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: React.ReactNode;\n accessorKey?: keyof T;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n}\n\ninterface TableProps<T>\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {\n /** Veri yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sıralama için kullanılan sütun */\n sortColumn?: string;\n /** Sıralama yönü */\n sortDirection?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSortChange?: (column: string, direction: SortDirection) => void;\n /** Boş durum için özel içerik */\n emptyContent?: React.ReactNode;\n /** Seçili satır id'leri */\n selectedRowIds?: string[];\n /** Satır seçim değiştiğinde çağrılacak fonksiyon */\n onRowSelectionChange?: (selectedRowIds: string[]) => void;\n /** Satır seçim devre dışı */\n disableRowSelection?: boolean;\n /** Her satır için benzersiz id çıkarma fonksiyonu */\n getRowId?: (row: T) => string;\n}\n\n// Tip parametresiz Table bileşeni için varsayılan tip, herhangi bir veri tipini kabul edebilmesi için\nconst Table = React.forwardRef<\n HTMLTableElement,\n TableProps<unknown>\n>(({ \n className, \n variant, \n size, \n loading, \n emptyContent,\n // Kullanılmayan özellikleri yoruma alarak lint uyarılarını önlüyoruz\n // sortColumn,\n // sortDirection,\n // onSortChange,\n // selectedRowIds,\n // onRowSelectionChange,\n // disableRowSelection,\n // getRowId,\n ...props \n}, ref) => {\n // Apply striped styles to the tbody via a class name\n const striped = variant === \"striped\";\n \n // Çocukları güvenli bir şekilde işle ve tip kontrollerini doğru yap\n const childrenWithProps = React.Children.map(props.children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === \"tbody\") {\n // Tip güvenliği için props'ları düzgün şekilde ele alıyoruz\n const tbodyProps = child.props as Record<string, unknown>;\n return React.cloneElement(child as React.ReactElement<React.HTMLAttributes<HTMLTableSectionElement>>, {\n className: cn(tbodyProps.className as string | undefined, striped && \"even:[&>tr]:bg-muted/50\")\n });\n }\n }\n return child;\n });\n \n return (\n <div className=\"relative w-full overflow-auto\">\n {/* Yükleniyor durumu için overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/60 flex items-center justify-center z-10\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n \n <table\n ref={ref}\n className={cn(\n tableVariants({ variant, size }),\n loading && \"opacity-70\",\n className\n )}\n {...props}\n >\n {childrenWithProps}\n </table>\n \n </div>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"moonui-theme\", \"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\ninterface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Veri yoksa gösterilecek boş durum içeriği */\n emptyContent?: React.ReactNode;\n /** Varsayılan boş durum mesajı */\n emptyMessage?: string;\n}\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, emptyContent, emptyMessage = \"No data available\", children, ...props }, ref) => {\n // Çocuk elementlerin varlığını kontrol et\n const hasChildren = React.Children.count(children) > 0;\n \n return (\n <tbody\n ref={ref}\n className={cn(\"moonui-theme\", \"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {hasChildren ? (\n children\n ) : (\n <tr>\n <td colSpan={100} className=\"h-24 text-center\">\n {emptyContent || (\n <div className=\"py-6 text-muted-foreground\">\n <div className=\"text-sm\">\n {emptyMessage}\n </div>\n </div>\n )}\n </td>\n </tr>\n )}\n </tbody>\n )\n});\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"moonui-theme\", \"bg-primary text-primary-foreground font-medium\", className)}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Bu sütun için sıralama durumu */\n sortable?: boolean;\n /** Bu sütunun sıralanma durumu */\n sorted?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSort?: () => void;\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n}\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted, onSort, align = 'left', children, ...props }, ref) => {\n // Sıralama için simgeler\n const renderSortIcon = () => {\n if (!sortable) return null;\n \n if (sorted === \"asc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.707 10.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 12.586V5a1 1 0 012 0v7.586l2.293-2.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n if (sorted === \"desc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block opacity-30\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n };\n \n const alignmentClasses = {\n left: 'text-left justify-start',\n center: 'text-center justify-center',\n right: 'text-right justify-end'\n };\n\n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n alignmentClasses[align].split(' ')[0], // text alignment\n sortable && \"cursor-pointer hover:text-foreground select-none\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n {sortable || align !== 'left' ? (\n <div className={cn(\"flex items-center\", alignmentClasses[align].split(' ')[1])}>\n {children}\n {sortable && renderSortIcon()}\n </div>\n ) : (\n children\n )}\n </th>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n}\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n TableCellProps\n>(({ className, align = 'left', ...props }, ref) => {\n const alignmentClass = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n }[align];\n\n return (\n <td\n ref={ref}\n className={cn(\"moonui-theme\", \"p-4 align-middle [&:has([role=checkbox])]:pr-0\", alignmentClass, className)}\n {...props}\n />\n );\n});\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"moonui-theme\", \"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n\nexport type { TableBodyProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, isValid } from \"date-fns\";\nimport { Calendar as CalendarIcon, Clock } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n// Define pageTransitions locally since micro-interactions might not exist\nconst pageTransitions = {\n initial: { opacity: 0, x: 20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -20 }\n};\n\n/**\n * DatePicker Component\n * \n * A comprehensive date picker with calendar interface\n */\n\nconst datePickerVariants = cva(\n \"w-full justify-start text-left font-normal\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border-2\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-8 px-3 text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10\",\n },\n state: {\n default: \"\",\n error: \"border-destructive focus:ring-destructive\",\n success: \"border-success focus:ring-success\",\n warning: \"border-warning focus:ring-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n state: \"default\",\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"value\">,\n VariantProps<typeof datePickerVariants> {\n /**\n * Selected date value\n */\n value?: Date;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Date format string\n */\n formatString?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled dates\n */\n disabledDates?: Date[];\n /**\n * Disabled days of week (0-6, Sunday is 0)\n */\n disabledDaysOfWeek?: number[];\n /**\n * Show week numbers\n */\n showWeekNumbers?: boolean;\n /**\n * Icon position\n */\n iconPosition?: \"left\" | \"right\";\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n /**\n * Allow clear\n */\n allowClear?: boolean;\n /**\n * Read only\n */\n readOnly?: boolean;\n /**\n * Show today button\n */\n showTodayButton?: boolean;\n /**\n * Calendar props\n */\n calendarProps?: React.ComponentProps<typeof Calendar>;\n}\n\n// NOT (issue #264): dört seçici de düz fonksiyondu, ref geçme yolu yoktu.\n// Her biri KENDİ gerçek kök DOM elemanına bağlanır — DOM yapısı değişmez.\n// DatePicker/DateTimePicker kök bir <div> render eder; DateRangePicker ve\n// MonthPicker'ın kökü Radix `Popover`'dır ve kendisi DOM üretmez, bu yüzden\n// onlarda ref tetikleyici butona gider.\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker({\n className,\n variant,\n size,\n state,\n value,\n onChange,\n placeholder = \"Pick a date\",\n formatString = \"PPP\",\n minDate,\n maxDate,\n disabledDates,\n disabledDaysOfWeek,\n showWeekNumbers,\n iconPosition = \"left\",\n icon,\n allowClear = true,\n readOnly = false,\n showTodayButton = true,\n calendarProps,\n disabled,\n ...props\n}: DatePickerProps, ref: React.ForwardedRef<HTMLDivElement>) {\n const [open, setOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(value);\n\n React.useEffect(() => {\n setInternalDate(value);\n }, [value]);\n\n const handleSelect = (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => {\n // Handle single date selection for now\n const singleDate = Array.isArray(date) ? date[0] : \n (date && typeof date === 'object' && 'from' in date) ? date.from :\n date as Date | undefined;\n setInternalDate(singleDate);\n onChange?.(singleDate);\n if (singleDate) {\n setOpen(false);\n }\n };\n\n // Hem fare hem klavye (Enter/Space) yolundan çağrılıyor; yalnızca\n // `stopPropagation` kullanıldığı için ortak taban tipi yeterli.\n // (Önceden `React.MouseEvent` bekliyordu ve klavye yolunda `as any` ile\n // zorlanıyordu.)\n const handleClear = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n handleSelect(undefined);\n };\n\n const handleToday = () => {\n const today = new Date();\n handleSelect(today);\n };\n\n const isDateDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n if (disabledDates?.some(d => d.toDateString() === date.toDateString())) return true;\n if (disabledDaysOfWeek?.includes(date.getDay())) return true;\n return false;\n };\n\n const displayValue = internalDate && isValid(internalDate)\n ? format(internalDate, formatString)\n : null;\n\n const iconElement = icon || <CalendarIcon className=\"h-4 w-4\" />;\n\n return (\n <div ref={ref} className=\"moonui-theme\">\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={variant === \"ghost\" ? \"ghost\" : \"outline\"}\n className={cn(\n datePickerVariants({ variant, size, state }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={disabled || readOnly}\n {...props}\n >\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={displayValue || \"placeholder\"}\n initial={{ opacity: 0, y: -2 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 2 }}\n transition={{ duration: 0.15 }}\n className=\"flex items-center gap-2 flex-1\"\n >\n {iconPosition === \"left\" && iconElement}\n <span className=\"flex-1 truncate\">\n {displayValue || placeholder}\n </span>\n {iconPosition === \"right\" && iconElement}\n </motion.div>\n </AnimatePresence>\n {allowClear && displayValue && !readOnly && !disabled && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n className=\"ml-2 h-4 w-4 shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer\"\n onClick={handleClear}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClear(e);\n }\n }}\n >\n <span className=\"sr-only\">Clear date</span>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent \n className=\"w-[360px] p-0 shadow-2xl rounded-2xl border border-border bg-background/95 backdrop-blur-sm !z-[9999]\" \n align=\"start\"\n sideOffset={12}\n >\n <motion.div\n {...pageTransitions}\n className=\"rounded-2xl bg-background overflow-hidden\"\n >\n <Calendar\n mode=\"single\"\n selected={internalDate}\n onSelect={handleSelect}\n disabled={isDateDisabled}\n showOutsideDays={false}\n className={cn(\"rounded-2xl\", calendarProps?.className)}\n {...calendarProps}\n />\n {showTodayButton && (\n <div className=\"border-t px-4 py-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleToday}\n className=\"w-full justify-center hover:bg-accent hover:text-accent-foreground transition-all duration-200\"\n >\n Today\n </Button>\n </div>\n )}\n </motion.div>\n </PopoverContent>\n </Popover>\n </div>\n );\n});\nDatePicker.displayName = \"DatePicker\";\n\n/**\n * DateRangePicker Component\n * \n * Select a date range with start and end dates\n */\n\nexport interface DateRangePickerProps\n extends Omit<DatePickerProps, \"value\" | \"onChange\"> {\n /**\n * Selected date range\n */\n value?: { from: Date | undefined; to?: Date | undefined };\n /**\n * Callback when date range changes\n */\n onChange?: (range: { from: Date | undefined; to?: Date | undefined } | undefined) => void;\n /**\n * Separator between dates\n */\n separator?: string;\n}\n\nexport const DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(function DateRangePicker({\n className,\n value,\n onChange,\n placeholder = \"Pick a date range\",\n formatString = \"LLL dd, y\",\n separator = \" - \",\n ...props\n}: DateRangePickerProps, ref: React.ForwardedRef<HTMLButtonElement>) {\n const [open, setOpen] = React.useState(false);\n const [internalRange, setInternalRange] = React.useState(value);\n\n React.useEffect(() => {\n setInternalRange(value);\n }, [value]);\n\n // NOT: `to` OPSİYONEL. react-day-picker'ın `DateRange` tipi de öyle\n // (`to?: Date | undefined`). Önce burada zorunlu-ama-undefined yazılmıştı ve\n // uyuşmadığı için `onSelect={handleSelect}` cast'i gerekiyordu.\n const handleSelect = (range: { from: Date | undefined; to?: Date | undefined } | undefined) => {\n setInternalRange(range);\n onChange?.(range);\n if (range?.from && range?.to) {\n setOpen(false);\n }\n };\n\n const displayValue = React.useMemo(() => {\n if (!internalRange?.from) return null;\n if (!internalRange?.to) {\n return format(internalRange.from, formatString);\n }\n return `${format(internalRange.from, formatString)}${separator}${format(\n internalRange.to,\n formatString\n )}`;\n }, [internalRange, formatString, separator]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={props.variant === \"ghost\" ? \"ghost\" : \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n <span className=\"flex-1 truncate text-left\">\n {displayValue || placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 shadow-2xl rounded-2xl border border-border bg-background/95 backdrop-blur-sm !z-[9999]\" align=\"start\" sideOffset={12}>\n <Calendar\n mode=\"range\"\n defaultMonth={internalRange?.from}\n selected={internalRange}\n onSelect={handleSelect}\n showOutsideDays={false}\n {...props.calendarProps}\n className=\"rounded-2xl\"\n />\n </PopoverContent>\n </Popover>\n );\n});\nDateRangePicker.displayName = \"DateRangePicker\";\n\n/**\n * DateTimePicker Component\n * \n * Combined date and time picker\n */\n\nexport interface DateTimePickerProps extends DatePickerProps {\n /**\n * Show time picker\n */\n showTimePicker?: boolean;\n /**\n * Time format (12 or 24 hour)\n */\n timeFormat?: \"12\" | \"24\";\n /**\n * Time interval in minutes\n */\n timeInterval?: number;\n}\n\nexport const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(function DateTimePicker({\n value,\n onChange,\n // Saat ayrı bir <select> ile gösterildiği için buton yalnızca TARİHİ yazar;\n // varsayılan bu yüzden \"PPP p\" değil \"PPP\". (Eski hâlde \"PPP p\" alınıp hiç\n // kullanılmıyordu — çağıranın verdiği formatString sessizce yok sayılıyordu.)\n formatString = \"PPP\",\n showTimePicker = true,\n timeFormat = \"24\",\n timeInterval = 15,\n ...props\n}: DateTimePickerProps, ref: React.ForwardedRef<HTMLDivElement>) {\n const [date, setDate] = React.useState<Date | undefined>(value);\n const [time, setTime] = React.useState<string>(\n value ? format(value, timeFormat === \"24\" ? \"HH:mm\" : \"hh:mm a\") : \"00:00\"\n );\n\n const handleDateChange = (newDate: Date | undefined) => {\n if (!newDate) {\n setDate(undefined);\n onChange?.(undefined);\n return;\n }\n\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const newTime = e.target.value;\n setTime(newTime);\n\n if (date) {\n const [hours, minutes] = newTime.split(\":\").map(Number);\n const newDate = new Date(date);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n }\n };\n\n // Generate time options\n const timeOptions = React.useMemo(() => {\n const options = [];\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m += timeInterval) {\n const hour24 = h.toString().padStart(2, \"0\");\n const minute = m.toString().padStart(2, \"0\");\n const time24 = `${hour24}:${minute}`;\n \n if (timeFormat === \"12\") {\n const hour12 = h === 0 ? 12 : h > 12 ? h - 12 : h;\n const ampm = h < 12 ? \"AM\" : \"PM\";\n const time12 = `${hour12}:${minute} ${ampm}`;\n options.push({ value: time24, label: time12 });\n } else {\n options.push({ value: time24, label: time24 });\n }\n }\n }\n return options;\n }, [timeFormat, timeInterval]);\n\n return (\n <div ref={ref} className=\"flex flex-col gap-2\">\n <DatePicker\n {...props}\n value={date}\n onChange={handleDateChange}\n formatString={formatString}\n showTodayButton={false}\n />\n {showTimePicker && date && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"flex items-center gap-2\"\n >\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <select\n value={time}\n onChange={handleTimeChange}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {timeOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </motion.div>\n )}\n </div>\n );\n});\nDateTimePicker.displayName = \"DateTimePicker\";\n\n/**\n * MonthPicker Component\n * \n * Select month and year\n */\n\nexport interface MonthPickerProps extends Omit<DatePickerProps, \"formatString\"> {\n /**\n * Format for displaying the month\n */\n formatString?: string;\n}\n\nexport const MonthPicker = React.forwardRef<HTMLButtonElement, MonthPickerProps>(function MonthPicker({\n value,\n onChange,\n placeholder = \"Pick a month\",\n formatString = \"MMMM yyyy\",\n ...props\n}: MonthPickerProps, ref: React.ForwardedRef<HTMLButtonElement>) {\n const [open, setOpen] = React.useState(false);\n const [viewDate, setViewDate] = React.useState(value || new Date());\n\n const months = [\n \"January\", \"February\", \"March\", \"April\",\n \"May\", \"June\", \"July\", \"August\",\n \"September\", \"October\", \"November\", \"December\"\n ];\n\n const handleMonthSelect = (monthIndex: number) => {\n const newDate = new Date(viewDate);\n newDate.setMonth(monthIndex);\n onChange?.(newDate);\n setOpen(false);\n };\n\n const handleYearChange = (increment: number) => {\n const newDate = new Date(viewDate);\n newDate.setFullYear(newDate.getFullYear() + increment);\n setViewDate(newDate);\n };\n\n const displayValue = value ? format(value, formatString) : null;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={props.variant === \"default\" ? \"outline\" : (props.variant || \"outline\")}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n props.className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0 shadow-2xl border border-border bg-background !z-[9999]\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"flex items-center justify-between mb-3\">\n {/* İkon-only butonlar: erişilebilir ad olmadan ekran okuyucu\n yalnızca \"button\" der, hangi yöne gidileceği anlaşılmaz. */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={`Previous year, ${viewDate.getFullYear() - 1}`}\n onClick={() => handleYearChange(-1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"font-semibold\">\n {viewDate.getFullYear()}\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={`Next year, ${viewDate.getFullYear() + 1}`}\n onClick={() => handleYearChange(1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <Button\n key={month}\n variant={value && value.getMonth() === index ? \"primary\" : \"outline\"}\n size=\"sm\"\n onClick={() => handleMonthSelect(index)}\n className=\"h-8 text-xs\"\n >\n {month.slice(0, 3)}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n});\nMonthPicker.displayName = \"MonthPicker\";\n\n// Re-export utilities\nexport { format } from \"date-fns\";\n\n// Import ChevronLeft and ChevronRight for MonthPicker\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";","\"use client\"\n\n// Basic Draggable List - Free Version\n\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface DraggableListProps<T> {\n items: T[]\n onReorder: (items: T[]) => void\n renderItem: (item: T, index: number) => React.ReactNode\n keyExtractor: (item: T) => string\n className?: string\n disabled?: boolean\n}\n\nexport function DraggableList<T>({\n items,\n onReorder,\n renderItem,\n keyExtractor,\n className,\n disabled = false\n}: DraggableListProps<T>) {\n const [draggedIndex, setDraggedIndex] = React.useState<number | null>(null)\n\n const handleDragStart = (e: React.DragEvent, index: number) => {\n if (disabled) return\n setDraggedIndex(index)\n e.dataTransfer.effectAllowed = \"move\"\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"move\"\n }\n\n const handleDrop = (e: React.DragEvent, dropIndex: number) => {\n e.preventDefault()\n \n if (disabled || draggedIndex === null || draggedIndex === dropIndex) {\n setDraggedIndex(null)\n return\n }\n\n const newItems = [...items]\n const draggedItem = newItems[draggedIndex]\n \n newItems.splice(draggedIndex, 1)\n newItems.splice(dropIndex, 0, draggedItem)\n \n onReorder(newItems)\n setDraggedIndex(null)\n }\n\n const handleDragEnd = () => {\n setDraggedIndex(null)\n }\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-2\", className)}>\n {items.map((item, index) => (\n <div\n key={keyExtractor(item)}\n draggable={!disabled}\n onDragStart={(e) => handleDragStart(e, index)}\n onDragOver={handleDragOver}\n onDrop={(e) => handleDrop(e, index)}\n onDragEnd={handleDragEnd}\n className={cn(\n \"transition-opacity duration-200\",\n !disabled && \"cursor-move hover:opacity-80\",\n draggedIndex === index && \"opacity-50\",\n disabled && \"cursor-not-allowed\"\n )}\n >\n {renderItem(item, index)}\n </div>\n ))}\n </div>\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"moonui-theme\", \"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}","\"use client\"\n\nimport React, { useCallback, useState, useId } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Button } from './button'\nimport { Progress } from './progress'\nimport { Badge } from './badge'\nimport { cn } from '../../lib/utils'\nimport { \n Upload, \n X, \n File, \n Image as ImageIcon, \n Video, \n Music, \n FileText,\n CheckCircle,\n AlertCircle,\n Loader2\n} from 'lucide-react'\n\n/**\n * `onUpload` geri çağrımına geçilen asgari dosya kaydı.\n *\n * NEDEN AYRI VE DAR BİR TİP (#285):\n * Pro `FileUpload` aynı prop'u `FileUploadItem[]` ile çağırır; o tip chunking,\n * hız, metadata, önizleme gibi yalnız Pro'da var olan alanları taşır. Free\n * bunları üretemediği için o tipi buraya taşımak, hiç dolmayacak alanlar\n * VAAT eden yanıltıcı bir sözleşme olurdu.\n *\n * Bunun yerine iki paketin GÜVENLE ortak olan yüzeyi yayınlanır: `id` + `file`.\n * (`status` ve `preview` iki pakette farklı tiplerde olduğu için dışarıda\n * bırakıldı.) Yapısal tipleme sayesinde bu şekle göre yazılmış bir handler\n * hem free hem Pro tarafından kabul edilir — free'den Pro'ya geçiş sıfır\n * değişiklik ister:\n *\n * ```tsx\n * const handleUpload = async (files: FileUploadEntry[]) => {\n * for (const { id, file } of files) await send(id, file)\n * }\n * <FileUpload onUpload={handleUpload} /> // free\n * <FileUploadPro onUpload={handleUpload} /> // pro\n * ```\n */\nexport interface FileUploadEntry {\n id: string\n file: File\n}\n\nexport interface FileUploadProps {\n accept?: string\n multiple?: boolean\n maxSize?: number // in bytes\n maxFiles?: number\n disabled?: boolean\n className?: string\n onUpload?: (files: FileUploadEntry[]) => Promise<void>\n onRemove?: (fileId: string) => void\n children?: React.ReactNode\n}\n\ninterface UploadedFile extends FileUploadEntry {\n progress: number\n status: 'uploading' | 'success' | 'error'\n preview?: string\n}\n\nconst getFileIcon = (type: string) => {\n if (type.startsWith('image/')) return <ImageIcon className=\"h-4 w-4\" />\n if (type.startsWith('video/')) return <Video className=\"h-4 w-4\" />\n if (type.startsWith('audio/')) return <Music className=\"h-4 w-4\" />\n if (type.includes('text') || type.includes('document')) return <FileText className=\"h-4 w-4\" />\n return <File className=\"h-4 w-4\" />\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const sizes = ['Bytes', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n\nconst FileItem = ({ \n uploadedFile, \n onRemove \n}: { \n uploadedFile: UploadedFile\n onRemove: (id: string) => void \n}) => {\n const { id, file, progress, status, preview } = uploadedFile\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-3 p-3 border rounded-lg bg-background\"\n >\n {/* File Preview/Icon */}\n <div className=\"flex-shrink-0\">\n {preview ? (\n <img \n src={preview} \n alt={file.name}\n className=\"h-10 w-10 object-cover rounded\"\n />\n ) : (\n <div className=\"h-10 w-10 rounded bg-muted flex items-center justify-center\">\n {getFileIcon(file.type)}\n </div>\n )}\n </div>\n\n {/* File Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium truncate\">{file.name}</p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => onRemove(id)}\n /* Yalnız ikon içeren düğmenin erişilebilir adı YOKTU (WCAG 4.1.2).\n Ad dosya adını taşır; liste hâlinde birden çok kaldırma düğmesi\n olduğu için sabit bir metin hangisinin kaldırılacağını ayırt\n ettirmezdi (aynı sınıf sorun: #298). */\n aria-label={`Remove ${file.name}`}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n \n <div className=\"flex items-center space-x-2 mt-1\">\n <p className=\"text-xs text-muted-foreground\">{formatFileSize(file.size)}</p>\n \n {/* Status Badge */}\n {status === 'uploading' && (\n <Badge variant=\"secondary\" className=\"h-5\">\n <Loader2 className=\"h-3 w-3 mr-1 animate-spin\" />\n Uploading\n </Badge>\n )}\n {status === 'success' && (\n <Badge variant=\"success\" className=\"h-5\">\n <CheckCircle className=\"h-3 w-3 mr-1\" />\n Done\n </Badge>\n )}\n {status === 'error' && (\n <Badge variant=\"destructive\" className=\"h-5\">\n <AlertCircle className=\"h-3 w-3 mr-1\" />\n Error\n </Badge>\n )}\n </div>\n\n {/* Progress Bar */}\n {status === 'uploading' && (\n <div className=\"mt-2\">\n <Progress value={progress} className=\"h-1\" />\n </div>\n )}\n </div>\n </motion.div>\n )\n}\n\nexport const FileUpload = React.forwardRef<HTMLDivElement, FileUploadProps>(\n ({ \n accept = \"*\",\n multiple = true,\n maxSize = 10 * 1024 * 1024, // 10MB\n maxFiles = 5,\n disabled = false,\n className,\n onUpload,\n onRemove,\n children,\n ...props \n }, ref) => {\n const [uploadedFiles, setUploadedFiles] = useState<UploadedFile[]>([])\n const [isDragOver, setIsDragOver] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const validateFile = (file: File): string | null => {\n if (file.size > maxSize) {\n return `File size exceeds ${formatFileSize(maxSize)}`\n }\n\n if (accept !== \"*\" && !accept.split(',').some(type => {\n const cleanType = type.trim()\n if (cleanType.includes('*')) {\n return file.type.startsWith(cleanType.replace('*', ''))\n }\n return file.type === cleanType\n })) {\n return `File type not supported`\n }\n\n return null\n }\n\n const processFiles = useCallback(async (files: FileList | File[]) => {\n const fileArray = Array.from(files)\n setError(null)\n\n // Check total file count\n if (uploadedFiles.length + fileArray.length > maxFiles) {\n setError(`Maximum ${maxFiles} files allowed`)\n return\n }\n\n const validFiles: File[] = []\n const errors: string[] = []\n\n // Validate each file\n fileArray.forEach(file => {\n const validationError = validateFile(file)\n if (validationError) {\n errors.push(`${file.name}: ${validationError}`)\n } else {\n validFiles.push(file)\n }\n })\n\n if (errors.length > 0) {\n setError(errors.join(', '))\n return\n }\n\n // Create uploaded file entries\n const newUploadedFiles: UploadedFile[] = validFiles.map((file, index) => ({\n id: `${Date.now()}-${index}-${file.name.replace(/[^a-zA-Z0-9]/g, '')}`,\n file,\n progress: 0,\n status: 'uploading' as const,\n preview: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined\n }))\n\n setUploadedFiles(prev => [...prev, ...newUploadedFiles])\n\n // Simulate upload progress\n for (const uploadedFile of newUploadedFiles) {\n let progress = 0\n const interval = setInterval(() => {\n progress += 15 + (uploadedFile.file.size % 10) // Deterministic progress based on file size\n if (progress >= 100) {\n progress = 100\n clearInterval(interval)\n \n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress: 100, status: 'success' as const }\n : f\n )\n )\n } else {\n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress }\n : f\n )\n )\n }\n }, 200)\n }\n\n // Call onUpload if provided\n if (onUpload) {\n try {\n // id taşıyan kayıtlar zaten yukarıda kuruldu; eskiden ham File[]\n // gönderiliyordu ve tüketici onRemove(fileId) alsa da o id'leri\n // hiçbir yerden öğrenemiyordu (#285).\n await onUpload(newUploadedFiles)\n } catch (error) {\n console.error('Upload failed:', error)\n setUploadedFiles(prev => \n prev.map(f => \n newUploadedFiles.some(nf => nf.id === f.id)\n ? { ...f, status: 'error' as const }\n : f\n )\n )\n }\n }\n }, [uploadedFiles.length, maxFiles, maxSize, accept, onUpload])\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n \n if (disabled) return\n \n const files = e.dataTransfer.files\n if (files.length > 0) {\n processFiles(files)\n }\n }, [processFiles, disabled])\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n if (!disabled) {\n setIsDragOver(true)\n }\n }, [disabled])\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n }, [])\n\n const handleFileSelect = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (files && files.length > 0) {\n processFiles(files)\n }\n // Reset input value\n e.target.value = ''\n }, [processFiles])\n\n const removeFile = useCallback((fileId: string) => {\n setUploadedFiles(prev => {\n const fileToRemove = prev.find(f => f.id === fileId)\n if (fileToRemove?.preview) {\n URL.revokeObjectURL(fileToRemove.preview)\n }\n return prev.filter(f => f.id !== fileId)\n })\n \n if (onRemove) {\n onRemove(fileId)\n }\n }, [onRemove])\n\n return (\n <div ref={ref} className={cn(\"moonui-theme\", \"space-y-4\", className)} {...props}>\n {/* Upload Area */}\n <motion.div\n className={cn(\n \"relative border-2 border-dashed rounded-lg p-8 text-center transition-colors\",\n isDragOver && \"border-primary bg-primary/5\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !disabled && \"hover:border-primary/50 cursor-pointer\"\n )}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n animate={{\n scale: isDragOver ? 1.02 : 1,\n borderColor: isDragOver ? \"hsl(var(--primary))\" : \"hsl(var(--border))\"\n }}\n >\n <input\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileSelect}\n // Input görsel olarak gizli (opacity-0) ve ilişkili bir <label>'ı\n // yok — erişilebilir ad olmadan ekran okuyucu bunu adsız bir dosya\n // alanı olarak duyuruyordu.\n aria-label={multiple ? \"Choose files to upload\" : \"Choose a file to upload\"}\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\"\n />\n \n {children || (\n <div className=\"space-y-4\">\n <div className=\"mx-auto h-12 w-12 text-muted-foreground\">\n <Upload className=\"h-full w-full\" />\n </div>\n <div>\n <p className=\"text-lg font-medium\">\n {isDragOver ? 'Drop files here' : 'Upload files'}\n </p>\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop files here, or click to select\n </p>\n <p className=\"text-xs text-muted-foreground mt-2\">\n Max {maxFiles} files, {formatFileSize(maxSize)} each\n </p>\n </div>\n <Button variant=\"outline\" disabled={disabled}>\n Select Files\n </Button>\n </div>\n )}\n </motion.div>\n\n {/* Error Message */}\n <AnimatePresence>\n {error && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-2 text-sm text-destructive\"\n >\n <AlertCircle className=\"h-4 w-4\" />\n <span>{error}</span>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Uploaded Files */}\n <AnimatePresence>\n {uploadedFiles.length > 0 && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n className=\"space-y-2\"\n >\n <h4 className=\"text-sm font-medium\">\n Uploaded Files ({uploadedFiles.length})\n </h4>\n <div className=\"space-y-2\">\n <AnimatePresence>\n {uploadedFiles.map(uploadedFile => (\n <FileItem\n key={uploadedFile.id}\n uploadedFile={uploadedFile}\n onRemove={removeFile}\n />\n ))}\n </AnimatePresence>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n }\n)\n\nFileUpload.displayName = \"FileUpload\"","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Progress Bileşeni\n *\n * İlerleme durumunu görsel olarak gösteren, tema sistemiyle tam entegre bir bileşen.\n * Yükleme işlemleri, form gönderimi ve diğer zaman alan işlemleri göstermek için kullanılır.\n */\n\nconst progressVariants = cva(\n \"relative overflow-hidden bg-muted\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n md: \"h-2.5\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\", \n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n animation: {\n default: \"[&>div]:transition-all [&>div]:duration-500\",\n smooth: \"[&>div]:transition-all [&>div]:duration-700\",\n fast: \"[&>div]:transition-all [&>div]:duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"full\",\n animation: \"default\",\n },\n }\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full w-full flex-1\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n animation: {\n default: \"transition-all duration-500\",\n smooth: \"transition-all duration-700\",\n fast: \"transition-all duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n animation: \"default\",\n },\n }\n);\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /**\n * İlerleme çubuğu değeri (0-100)\n */\n value?: number;\n /**\n * İndikatör (dolgu) için renk varyantı\n */\n indicatorVariant?: VariantProps<typeof progressIndicatorVariants>[\"variant\"];\n /**\n * İlerleme durumunu gösteren metin görünürlüğü\n */\n showValueLabel?: boolean;\n /**\n * İlerleme değeri etiketi için format (ör: \"30%\" veya \"3/10\")\n */\n valueLabel?: string;\n /**\n * Etiket stili\n */\n labelClassName?: string;\n /**\n * Belirsiz ilerleme animasyonu (indeterminate)\n */\n indeterminate?: boolean;\n /**\n * İlerleme değeri maksimumu (default: 100)\n */\n max?: number;\n}\n\nconst Progress = React.forwardRef<\n HTMLDivElement,\n ProgressProps\n>(({\n className,\n value = 0,\n variant,\n size,\n radius,\n animation,\n indicatorVariant,\n showValueLabel = false,\n valueLabel,\n labelClassName,\n indeterminate = false,\n max = 100,\n ...props\n}, ref) => {\n // İlerleme değeri 0-100 arasında olmalı\n const normalizedValue = Math.max(0, Math.min(value, max));\n const percentage = max > 0 ? (normalizedValue / max) * 100 : 0;\n \n // Etiket içeriği\n const label = valueLabel || `${Math.round(percentage)}%`;\n \n return (\n <>\n {showValueLabel && (\n <div className=\"flex justify-between items-center mb-1\">\n <span \n className={cn(\n \"text-sm font-medium text-muted-foreground\",\n labelClassName\n )}\n >\n {label}\n </span>\n </div>\n )}\n <div\n ref={ref}\n className={cn(\"moonui-theme\", progressVariants({ variant, size, radius, animation }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : normalizedValue}\n {...props}\n >\n <div\n className={cn(\n progressIndicatorVariants({ variant: indicatorVariant || \"primary\", animation }),\n indeterminate && \"animate-indeterminate-progress\"\n )}\n style={indeterminate ? {} : { transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </>\n );\n});\nProgress.displayName = \"Progress\";\n\n// Not: Belirsiz ilerleme animasyonu için CSS keyframe styles.css veya Tailwind config içinde tanımlanmalı\n// @keyframes indeterminate-progress içeren bir tanımlama yapılmalıdır\n// .animate-indeterminate-progress sınıfı da bu animasyonu kullanmalıdır\n\nexport { Progress, progressVariants };\n","\"use client\"\n\nimport React, { useState, useRef, useEffect } from \"react\"\nimport { motion, useMotionValue, useTransform, animate, PanInfo } from \"framer-motion\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface GestureDrawerProps {\n children: React.ReactNode\n isOpen: boolean\n onOpenChange: (open: boolean) => void\n direction?: \"up\" | \"down\" | \"left\" | \"right\"\n threshold?: number\n className?: string\n overlayClassName?: string\n enableSwipeToClose?: boolean\n}\n\nexport const GestureDrawer = React.forwardRef<HTMLDivElement, GestureDrawerProps>(\n ({\n children,\n isOpen,\n onOpenChange,\n direction = \"up\",\n threshold = 50,\n className,\n overlayClassName,\n enableSwipeToClose = true,\n ...props\n }, ref) => {\n const y = useMotionValue(0)\n const x = useMotionValue(0)\n \n const isVertical = direction === \"up\" || direction === \"down\"\n const motionValue = isVertical ? y : x\n \n const opacity = useTransform(motionValue, [0, threshold], [1, 0.5])\n \n const handleDragEnd = (event: any, info: PanInfo) => {\n if (!enableSwipeToClose) return\n \n const offset = isVertical ? info.offset.y : info.offset.x\n const velocity = isVertical ? info.velocity.y : info.velocity.x\n \n let shouldClose = false\n \n switch (direction) {\n case \"up\":\n shouldClose = offset > threshold || velocity > 500\n break\n case \"down\":\n shouldClose = offset < -threshold || velocity < -500\n break\n case \"left\":\n shouldClose = offset > threshold || velocity > 500\n break\n case \"right\":\n shouldClose = offset < -threshold || velocity < -500\n break\n }\n \n if (shouldClose) {\n onOpenChange(false)\n } else {\n animate(motionValue, 0, { type: \"spring\", stiffness: 300, damping: 20 })\n }\n }\n \n const getInitialPosition = () => {\n switch (direction) {\n case \"up\":\n return { y: \"100%\" }\n case \"down\":\n return { y: \"-100%\" }\n case \"left\":\n return { x: \"100%\" }\n case \"right\":\n return { x: \"-100%\" }\n default:\n return { y: \"100%\" }\n }\n }\n \n const getAnimatePosition = () => {\n return isVertical ? { y: 0 } : { x: 0 }\n }\n \n if (!isOpen) return null\n \n return (\n <div className=\"fixed inset-0 z-50\">\n {/* Overlay */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={() => onOpenChange(false)}\n className={cn(\"absolute inset-0 bg-black/50\", overlayClassName)}\n />\n \n {/* Drawer */}\n <motion.div\n ref={ref}\n drag={enableSwipeToClose ? (isVertical ? \"y\" : \"x\") : false}\n dragConstraints={{ \n top: direction === \"up\" ? 0 : undefined,\n bottom: direction === \"down\" ? 0 : undefined,\n left: direction === \"left\" ? 0 : undefined,\n right: direction === \"right\" ? 0 : undefined\n }}\n dragElastic={0.2}\n onDragEnd={handleDragEnd}\n style={{ \n [isVertical ? \"y\" : \"x\"]: motionValue,\n opacity\n }}\n initial={getInitialPosition()}\n animate={getAnimatePosition()}\n exit={getInitialPosition()}\n transition={{ type: \"spring\", damping: 30, stiffness: 300 }}\n className={cn(\n \"absolute bg-background border shadow-lg\",\n {\n \"bottom-0 left-0 right-0 rounded-t-lg\": direction === \"up\",\n \"top-0 left-0 right-0 rounded-b-lg\": direction === \"down\", \n \"top-0 bottom-0 right-0 rounded-l-lg\": direction === \"left\",\n \"top-0 bottom-0 left-0 rounded-r-lg\": direction === \"right\"\n },\n className\n )}\n {...props}\n >\n {/* Drag Handle */}\n {(direction === \"up\" || direction === \"down\") && (\n <div className=\"flex justify-center p-2\">\n <div className=\"w-12 h-1 bg-muted rounded-full\" />\n </div>\n )}\n \n {children}\n </motion.div>\n </div>\n )\n }\n)\n\nGestureDrawer.displayName = \"GestureDrawer\"","\"use client\";\n\nimport { useState, useEffect } from 'react';\nimport { Star, GitFork, Eye, ExternalLink } from 'lucide-react';\nimport { Button } from './button';\nimport { cn } from '../../lib/utils';\n\ninterface GitHubStarsProps {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n showForks?: boolean;\n showWatchers?: boolean;\n repoUrl?: string;\n}\n\ninterface GitHubStats {\n stars: number;\n forks: number;\n watchers: number;\n isLive: boolean;\n}\n\nexport function GitHubStars({\n className,\n size = 'md',\n showForks = true,\n showWatchers = false,\n repoUrl = 'https://github.com/moonui/moonui'\n}: GitHubStarsProps) {\n const [stats, setStats] = useState<GitHubStats | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStats(data);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n // Set fallback data\n setStats({\n stars: 1240,\n forks: 89,\n watchers: 156,\n isLive: false\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n const sizeClasses = {\n sm: 'text-sm gap-2',\n md: 'text-base gap-3',\n lg: 'text-lg gap-4'\n };\n\n const iconSizes = {\n sm: 14,\n md: 16,\n lg: 20\n };\n\n if (isLoading) {\n return (\n <div className={cn(\"flex items-center animate-pulse\", sizeClasses[size], className)}>\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-8 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n {showForks && (\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-6 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n )}\n </div>\n );\n }\n\n if (!stats) {\n return null;\n }\n\n return (\n <div className={cn(\"flex items-center\", sizeClasses[size], className)}>\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Star className=\"fill-current text-yellow-500\" size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.stars)}</span>\n </a>\n \n {showForks && (\n <a\n href={`${repoUrl}/network/members`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <GitFork size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.forks)}</span>\n </a>\n )}\n \n {showWatchers && (\n <a\n href={`${repoUrl}/watchers`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Eye size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.watchers)}</span>\n </a>\n )}\n \n {!stats.isLive && (\n <span className=\"text-xs text-gray-500 dark:text-gray-500 ml-2\">\n (demo)\n </span>\n )}\n </div>\n );\n}\n\nexport function GitHubStarButton({\n className,\n size = 'md',\n repoUrl = 'https://github.com/moonui/moonui'\n}: {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n repoUrl?: string;\n}) {\n const [stars, setStars] = useState<number | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStars(data.stars);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n setStars(1240);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n return (\n <Button\n variant=\"outline\"\n size={size}\n className={cn(\"moonui-theme\", \"group\", className)}\n asChild\n >\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2\"\n >\n <Star className=\"fill-current text-yellow-500 group-hover:scale-110 transition-transform\" size={16} />\n <span>Star on GitHub</span>\n {!isLoading && stars && (\n <span className=\"px-2 py-0.5 bg-gray-100 dark:bg-gray-800 rounded-full text-xs font-medium\">\n {formatNumber(stars)}\n </span>\n )}\n <ExternalLink size={14} className=\"opacity-50 group-hover:opacity-100 transition-opacity\" />\n </a>\n </Button>\n );\n}","\"use client\"\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Dot } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium InputOTP Component\n *\n * input-otp kütüphanesi tabanlı, erişilebilir tek kullanımlık şifre (OTP) girişi.\n * Paste desteği, pattern doğrulama ve aktif slot vurgusu sunar.\n */\n\n// Pattern sabitleri — kullanım kolaylığı için input-otp'den yeniden export edilir\nexport {\n REGEXP_ONLY_DIGITS,\n REGEXP_ONLY_CHARS,\n REGEXP_ONLY_DIGITS_AND_CHARS,\n} from \"input-otp\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTP Root\n * -----------------------------------------------------------------------------------------------*/\nexport type InputOTPProps = React.ComponentPropsWithoutRef<typeof OTPInput>;\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n InputOTPProps\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n // input-otp gerçek girişi görsel olarak gizli bir <input> ile yapar ve o\n // input'un ilişkili bir <label>'ı yok — erişilebilir ad olmadan ekran\n // okuyucu adsız bir metin alanı duyuruyordu. Tüketici kendi aria-label'ını\n // verirse aşağıdaki {...props} yayılımı bunu ezer.\n aria-label=\"One-time password\"\n containerClassName={cn(\n \"moonui-theme\",\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPGroup\n * -----------------------------------------------------------------------------------------------*/\nconst InputOTPGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPSlot\n * -----------------------------------------------------------------------------------------------*/\nconst inputOTPSlotVariants = cva(\n [\n \"relative flex h-10 w-10 items-center justify-center\",\n \"border-y border-r border-input text-sm text-foreground\",\n \"transition-all duration-200\",\n \"first:rounded-l-md first:border-l last:rounded-r-md\",\n ],\n {\n variants: {\n // Aktif slot vurgusu — token tabanlı ring stili\n isActive: {\n true: \"z-10 ring-2 ring-ring ring-offset-background\",\n false: \"\",\n },\n },\n defaultVariants: {\n isActive: false,\n },\n }\n);\n\nexport interface InputOTPSlotProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof inputOTPSlotVariants>, \"isActive\"> {\n /** Bu slotun temsil ettiği karakter index'i */\n index: number;\n}\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n ({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const slot = inputOTPContext?.slots?.[index];\n const char = slot?.char;\n const hasFakeCaret = slot?.hasFakeCaret;\n const isActive = slot?.isActive;\n\n return (\n <div\n ref={ref}\n data-active={isActive ? \"\" : undefined}\n className={cn(inputOTPSlotVariants({ isActive: !!isActive }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n // Sahte imleç — gerçek input görünmez olduğu için aktif slotta yanıp söner\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n }\n);\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPSeparator\n * -----------------------------------------------------------------------------------------------*/\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n >\n <Dot aria-hidden=\"true\" />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport {\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n InputOTPSeparator,\n inputOTPSlotVariants,\n};\n","\"use client\"\n\n// Locked Component UI\n// Pro componentlerin locked state'ini gösteren wrapper component\n\nimport React, { useState, useEffect } from 'react'\nimport { cn } from '../../lib/utils'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Lock, Crown, Zap, AlertCircle } from 'lucide-react'\n\ninterface LockedComponentProps {\n children: React.ReactNode\n componentName: string\n className?: string\n showPreview?: boolean\n previewDuration?: number // ms\n}\n\nexport function LockedComponent({\n children,\n componentName,\n className,\n showPreview = true,\n previewDuration = 2000\n}: LockedComponentProps) {\n const [isPreviewActive, setIsPreviewActive] = useState(false)\n const [previewTimeout, setPreviewTimeout] = useState<NodeJS.Timeout | null>(null)\n\n const handleMouseEnter = () => {\n if (!showPreview) return\n \n setIsPreviewActive(true)\n \n // Clear existing timeout\n if (previewTimeout) {\n clearTimeout(previewTimeout)\n }\n \n // Set new timeout\n const timeout = setTimeout(() => {\n setIsPreviewActive(false)\n }, previewDuration)\n \n setPreviewTimeout(timeout)\n }\n\n const handleMouseLeave = () => {\n if (previewTimeout) {\n clearTimeout(previewTimeout)\n setPreviewTimeout(null)\n }\n setIsPreviewActive(false)\n }\n\n return (\n <div \n className={cn(\n \"relative group cursor-pointer transition-all duration-300\",\n className\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* Component Content */}\n <div \n className={cn(\n \"transition-all duration-300\",\n !isPreviewActive && \"blur-sm grayscale-[0.3] opacity-60\"\n )}\n >\n {children}\n </div>\n\n {/* Overlay */}\n <div \n className={cn(\n \"absolute inset-0 bg-gradient-to-br from-amber-500/10 via-transparent to-purple-500/10\",\n \"border-2 border-dashed border-amber-400/30 rounded-lg\",\n \"flex items-center justify-center\",\n \"transition-all duration-300\",\n isPreviewActive ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n <div className=\"text-center space-y-3 p-6\">\n {/* Pro Badge */}\n <div className=\"flex justify-center\">\n <Badge \n variant=\"secondary\" \n className=\"bg-gradient-to-r from-amber-500 to-orange-500 text-white border-0 px-3 py-1\"\n >\n <Crown className=\"w-3 h-3 mr-1\" />\n PRO ONLY\n </Badge>\n </div>\n\n {/* Lock Icon */}\n <div className=\"flex justify-center\">\n <div className=\"p-3 rounded-full bg-amber-100 dark:bg-amber-900/30\">\n <Lock className=\"w-6 h-6 text-amber-600 dark:text-amber-400\" />\n </div>\n </div>\n\n {/* Component Name */}\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n {componentName}\n </h3>\n\n {/* Description */}\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n This premium component is available with Pro subscription\n </p>\n\n {/* Upgrade Button */}\n <Button \n size=\"sm\" \n className=\"bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-600 hover:to-orange-600 border-0\"\n onClick={() => {\n if (typeof window !== 'undefined') {\n window.location.href = '/pricing'\n }\n }}\n >\n <Zap className=\"w-4 h-4 mr-2\" />\n Upgrade to Pro\n </Button>\n </div>\n </div>\n\n {/* Preview Hint */}\n {showPreview && !isPreviewActive && (\n <div className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <div className=\"bg-black/80 text-white text-xs px-2 py-1 rounded\">\n Hover to preview\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// Pro Component Wrapper - Otomatik erişim kontrolü ile\ninterface ProComponentWrapperProps {\n children: React.ReactNode\n componentId: string\n componentName?: string\n className?: string\n fallback?: React.ReactNode\n requireCLI?: boolean\n}\n\nexport function ProComponentWrapper({\n children,\n componentId,\n componentName,\n className,\n fallback,\n requireCLI = true\n}: ProComponentWrapperProps) {\n const [authState, setAuthState] = useState<{\n isAuthenticated: boolean\n deviceValid: boolean\n hasProAccess: boolean\n loading: boolean\n }>({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: true\n })\n\n useEffect(() => {\n // Enhanced environment detection - prevent manipulation\n const isDevelopment = () => {\n // Check multiple indicators to prevent spoofing\n const checks = {\n nodeEnv: process.env.NODE_ENV === 'development',\n nextPublicEnv: process.env.NEXT_PUBLIC_VERCEL_ENV === 'development',\n localhost: typeof window !== 'undefined' && (\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1' ||\n window.location.hostname.includes('.local')\n ),\n port: typeof window !== 'undefined' && (\n window.location.port === '3000' ||\n window.location.port === '3001' ||\n window.location.port === '8080'\n ),\n vercelEnv: !process.env.VERCEL,\n ciEnv: !process.env.CI,\n deploymentEnv: !process.env.DEPLOYMENT_ENV\n }\n \n // If running on Vercel, Netlify, or any deployment platform - it's production\n if (process.env.VERCEL || process.env.NETLIFY || process.env.RENDER || \n process.env.RAILWAY_ENVIRONMENT || process.env.FLY_APP_NAME ||\n process.env.DEPLOYMENT_ENV === 'production') {\n return false\n }\n \n // Must be localhost AND development env\n return checks.nodeEnv && checks.localhost && !checks.vercelEnv && !checks.ciEnv\n }\n \n // Skip checks only in true production or if not requiring CLI\n if (!isDevelopment() || !requireCLI) {\n setAuthState({\n isAuthenticated: true,\n deviceValid: true,\n hasProAccess: true,\n loading: false\n })\n return\n }\n\n // Check CLI authentication in development\n async function checkAuth() {\n try {\n const cliToken = localStorage.getItem('moonui_cli_token')\n const deviceId = localStorage.getItem('moonui_device_id')\n \n if (!cliToken || !deviceId) {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n return\n }\n\n // Validate token and device with API\n const response = await fetch('/api/device/validate', {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${cliToken}`,\n 'X-Device-ID': deviceId,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n environment: {\n nodeEnv: process.env.NODE_ENV,\n hostname: window.location.hostname,\n port: window.location.port,\n protocol: window.location.protocol\n }\n })\n })\n \n if (response.ok) {\n const data = await response.json()\n setAuthState({\n isAuthenticated: true,\n deviceValid: data.valid,\n hasProAccess: data.hasProAccess,\n loading: false\n })\n } else {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n }\n } catch (error) {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n }\n }\n\n checkAuth()\n }, [requireCLI])\n\n // Loading state\n if (authState.loading) {\n return (\n <div className={cn(\"animate-pulse bg-gray-200 dark:bg-gray-800 rounded-lg h-32\", className)}>\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-sm text-gray-500\">Loading...</div>\n </div>\n </div>\n )\n }\n\n // Development mode checks - use same enhanced detection\n const isDevelopment = () => {\n const checks = {\n nodeEnv: process.env.NODE_ENV === 'development',\n localhost: typeof window !== 'undefined' && (\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1' ||\n window.location.hostname.includes('.local')\n ),\n port: typeof window !== 'undefined' && (\n window.location.port === '3000' ||\n window.location.port === '3001' ||\n window.location.port === '8080'\n )\n }\n \n if (process.env.VERCEL || process.env.NETLIFY || process.env.RENDER || \n process.env.RAILWAY_ENVIRONMENT || process.env.FLY_APP_NAME) {\n return false\n }\n \n return checks.nodeEnv && checks.localhost\n }\n \n if (isDevelopment() && requireCLI) {\n // Not authenticated\n if (!authState.isAuthenticated) {\n return (\n <div className={cn(\"relative\", className)}>\n <div className=\"blur-sm grayscale-[0.3] opacity-60 pointer-events-none\">\n {fallback || children}\n </div>\n <div className=\"absolute inset-0 bg-gradient-to-br from-red-500/10 via-transparent to-orange-500/10 border-2 border-dashed border-red-400/30 rounded-lg flex items-center justify-center\">\n <div className=\"text-center space-y-3 p-6\">\n <Badge variant=\"destructive\" className=\"mb-2\">\n <Lock className=\"w-3 h-3 mr-1\" />\n CLI AUTH REQUIRED\n </Badge>\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n CLI Authentication Required\n </h3>\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n Run the following command to authenticate:\n </p>\n <code className=\"block bg-black/80 text-green-400 p-2 rounded text-xs\">\n npx moonui auth login\n </code>\n </div>\n </div>\n </div>\n )\n }\n\n // Device not valid\n if (!authState.deviceValid) {\n return (\n <div className={cn(\"relative\", className)}>\n <div className=\"blur-sm grayscale-[0.3] opacity-60 pointer-events-none\">\n {fallback || children}\n </div>\n <div className=\"absolute inset-0 bg-gradient-to-br from-yellow-500/10 via-transparent to-orange-500/10 border-2 border-dashed border-yellow-400/30 rounded-lg flex items-center justify-center\">\n <div className=\"text-center space-y-3 p-6\">\n <Badge variant=\"secondary\" className=\"bg-yellow-500 text-white mb-2\">\n <Zap className=\"w-3 h-3 mr-1\" />\n DEVICE LIMIT\n </Badge>\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n Device Limit Exceeded\n </h3>\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n This device is not registered or you've reached your device limit\n </p>\n <Button \n size=\"sm\" \n className=\"bg-gradient-to-r from-yellow-500 to-orange-500\"\n onClick={() => window.open('/dashboard/devices', '_blank')}\n >\n Manage Devices\n </Button>\n </div>\n </div>\n </div>\n )\n }\n\n // No pro access\n if (!authState.hasProAccess) {\n return (\n <LockedComponent\n componentName={componentName || componentId}\n className={className}\n >\n {fallback || children}\n </LockedComponent>\n )\n }\n }\n\n // All checks passed - show component\n return <div className={className}>{children}</div>\n}\n\n// Pro Badge Component\nexport function ProBadge({ className }: { className?: string }) {\n return (\n <Badge \n variant=\"secondary\"\n className={cn(\n \"bg-gradient-to-r from-amber-500 to-orange-500 text-white border-0 text-xs\",\n className\n )}\n >\n <Crown className=\"w-3 h-3 mr-1\" />\n PRO\n </Badge>\n )\n}\n\n// Free Badge Component \nexport function FreeBadge({ className }: { className?: string }) {\n return (\n <Badge \n variant=\"outline\"\n className={cn(\"border-green-500 text-green-600 dark:text-green-400 text-xs\", className)}\n >\n FREE\n </Badge>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface MoonLogoProps extends React.SVGProps<SVGSVGElement> {\n variant?: \"default\" | \"monochrome\" | \"gradient\"\n showText?: boolean\n}\n\nexport function MoonLogo({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n const logoId = React.useId()\n const gradientId = `moon-gradient-${logoId}`\n const maskId = `moon-mask-${logoId}`\n \n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {/* Moon Icon */}\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0\"\n {...props}\n >\n <defs>\n {variant === \"gradient\" && (\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#3B82F6\" />\n <stop offset=\"50%\" stopColor=\"#8B5CF6\" />\n <stop offset=\"100%\" stopColor=\"#EC4899\" />\n </linearGradient>\n )}\n <mask id={maskId}>\n <rect width=\"32\" height=\"32\" fill=\"white\"/>\n <circle cx=\"22\" cy=\"10\" r=\"10\" fill=\"black\"/>\n </mask>\n </defs>\n \n {/* Moon Circle with transparent crescent */}\n <circle\n cx=\"16\"\n cy=\"16\"\n r=\"14\"\n fill={variant === \"gradient\" ? `url(#${gradientId})` : \"currentColor\"}\n className={variant === \"default\" ? \"fill-primary\" : \"\"}\n mask={`url(#${maskId})`}\n />\n </svg>\n \n {/* Text */}\n {showText && (\n <span className=\"text-xl font-bold\">\n <span className=\"text-foreground\">Moon</span>\n <span className=\"text-primary\">UI</span>\n </span>\n )}\n </div>\n )\n}\n\nexport function MoonLogoIcon({ \n className, \n variant = \"default\",\n ...props \n}: Omit<MoonLogoProps, \"showText\">) {\n return <MoonLogo showText={false} className={className} variant={variant} {...props} />\n}\n\nexport function MoonLogoAnimated({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n return (\n <MoonLogo \n className={cn(\n \"transition-all duration-300 hover:scale-105\",\n className\n )} \n variant={variant}\n showText={showText}\n {...props}\n />\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { cn } from \"../../lib/utils\"\nimport { ButtonProps, buttonVariants } from \"./button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"moonui-theme\", \"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"moonui-theme\", \"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Partial<Pick<ButtonProps, \"size\">> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"moonui-theme\", \"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"moonui-theme\", \"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"moonui-theme\", \"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\nimport { Input } from \"./input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"./select\"\nimport { Phone } from \"lucide-react\"\n\n// Country codes data\nconst countryCodes = [\n { code: \"+1\", country: \"US\", flag: \"🇺🇸\", name: \"United States\" },\n { code: \"+44\", country: \"GB\", flag: \"🇬🇧\", name: \"United Kingdom\" },\n { code: \"+49\", country: \"DE\", flag: \"🇩🇪\", name: \"Germany\" },\n { code: \"+33\", country: \"FR\", flag: \"🇫🇷\", name: \"France\" },\n { code: \"+39\", country: \"IT\", flag: \"🇮🇹\", name: \"Italy\" },\n { code: \"+34\", country: \"ES\", flag: \"🇪🇸\", name: \"Spain\" },\n { code: \"+31\", country: \"NL\", flag: \"🇳🇱\", name: \"Netherlands\" },\n { code: \"+46\", country: \"SE\", flag: \"🇸🇪\", name: \"Sweden\" },\n { code: \"+47\", country: \"NO\", flag: \"🇳🇴\", name: \"Norway\" },\n { code: \"+45\", country: \"DK\", flag: \"🇩🇰\", name: \"Denmark\" },\n { code: \"+358\", country: \"FI\", flag: \"🇫🇮\", name: \"Finland\" },\n { code: \"+48\", country: \"PL\", flag: \"🇵🇱\", name: \"Poland\" },\n { code: \"+90\", country: \"TR\", flag: \"🇹🇷\", name: \"Turkey\" },\n { code: \"+86\", country: \"CN\", flag: \"🇨🇳\", name: \"China\" },\n { code: \"+81\", country: \"JP\", flag: \"🇯🇵\", name: \"Japan\" },\n { code: \"+82\", country: \"KR\", flag: \"🇰🇷\", name: \"South Korea\" },\n { code: \"+91\", country: \"IN\", flag: \"🇮🇳\", name: \"India\" },\n { code: \"+61\", country: \"AU\", flag: \"🇦🇺\", name: \"Australia\" },\n { code: \"+64\", country: \"NZ\", flag: \"🇳🇿\", name: \"New Zealand\" },\n { code: \"+27\", country: \"ZA\", flag: \"🇿🇦\", name: \"South Africa\" },\n { code: \"+55\", country: \"BR\", flag: \"🇧🇷\", name: \"Brazil\" },\n { code: \"+52\", country: \"MX\", flag: \"🇲🇽\", name: \"Mexico\" },\n { code: \"+54\", country: \"AR\", flag: \"🇦🇷\", name: \"Argentina\" },\n { code: \"+20\", country: \"EG\", flag: \"🇪🇬\", name: \"Egypt\" },\n { code: \"+966\", country: \"SA\", flag: \"🇸🇦\", name: \"Saudi Arabia\" },\n { code: \"+971\", country: \"AE\", flag: \"🇦🇪\", name: \"UAE\" },\n]\n\n// Format phone number based on country\nconst formatPhoneNumber = (value: string, countryCode: string): string => {\n const cleaned = value.replace(/\\D/g, \"\")\n \n switch (countryCode) {\n case \"+1\": // US/Canada\n if (cleaned.length <= 3) return cleaned\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`\n \n case \"+44\": // UK\n if (cleaned.length <= 4) return cleaned\n if (cleaned.length <= 7) return `${cleaned.slice(0, 4)} ${cleaned.slice(4)}`\n return `${cleaned.slice(0, 4)} ${cleaned.slice(4, 7)} ${cleaned.slice(7, 11)}`\n \n case \"+90\": // Turkey\n if (cleaned.length <= 3) return cleaned\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`\n if (cleaned.length <= 9) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)} ${cleaned.slice(6)}`\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)} ${cleaned.slice(6, 8)} ${cleaned.slice(8, 10)}`\n \n default: // Generic formatting\n let formatted = \"\"\n for (let i = 0; i < cleaned.length; i++) {\n if (i > 0 && i % 3 === 0) formatted += \" \"\n formatted += cleaned[i]\n }\n return formatted\n }\n}\n\n// Get max length based on country\nconst getMaxLength = (countryCode: string): number => {\n switch (countryCode) {\n case \"+1\": return 10 // US/Canada\n case \"+44\": return 11 // UK\n case \"+90\": return 10 // Turkey\n default: return 15 // Generic max\n }\n}\n\nexport interface PhoneInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string, countryCode: string) => void\n defaultCountry?: string\n showIcon?: boolean\n showCountrySelect?: boolean\n countries?: typeof countryCodes\n}\n\nexport const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({ \n className, \n value = \"\", \n onChange, \n defaultCountry = \"+1\",\n showIcon = true,\n showCountrySelect = true,\n countries = countryCodes,\n size,\n ...props \n }, ref) => {\n const [countryCode, setCountryCode] = React.useState(defaultCountry)\n const [phoneNumber, setPhoneNumber] = React.useState(value)\n \n const selectedCountry = countries.find(c => c.code === countryCode) || countries[0]\n \n const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\")\n const maxLength = getMaxLength(countryCode)\n const truncated = rawValue.slice(0, maxLength)\n const formatted = formatPhoneNumber(truncated, countryCode)\n \n setPhoneNumber(truncated)\n onChange?.(truncated, countryCode)\n \n // Update the input value with formatted version\n e.target.value = formatted\n }\n \n const handleCountryChange = (newCountryCode: string) => {\n setCountryCode(newCountryCode)\n onChange?.(phoneNumber, newCountryCode)\n }\n \n const formattedValue = formatPhoneNumber(phoneNumber, countryCode)\n \n return (\n <div className={cn(\"relative flex gap-2\", className)}>\n {showCountrySelect && (\n <Select value={countryCode} onValueChange={handleCountryChange}>\n <SelectTrigger className=\"w-[120px]\">\n <SelectValue>\n <div className=\"flex items-center gap-2\">\n <span>{selectedCountry.flag}</span>\n <span>{selectedCountry.code}</span>\n </div>\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {countries.map((country) => (\n <SelectItem key={country.code} value={country.code}>\n <div className=\"flex items-center gap-2\">\n <span>{country.flag}</span>\n <span>{country.code}</span>\n <span className=\"text-muted-foreground\">{country.name}</span>\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n \n <div className=\"relative flex-1\">\n <Input\n ref={ref}\n type=\"tel\"\n inputMode=\"numeric\"\n autoComplete=\"tel\"\n placeholder={countryCode === \"+1\" ? \"(555) 123-4567\" : \"123 456 789\"}\n value={formattedValue}\n onChange={handlePhoneChange}\n className={cn(showIcon && \"pl-10\", className)}\n {...props}\n />\n {showIcon && (\n <Phone className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n )}\n </div>\n </div>\n )\n }\n)\nPhoneInput.displayName = \"PhoneInput\"","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp, Loader2 } from \"lucide-react\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Select Component\n * \n * Advanced dropdown/select component with variants, sizes and accessibility features.\n * Compatible with dark and light mode, providing a modern user experience with smooth animations.\n */\n\n// Directly re-exporting the Root component\nconst Select = SelectPrimitive.Root\nSelect.displayName = \"Select\"\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\ntype SelectTriggerVariant = \"standard\" | \"outline\" | \"ghost\" | \"underline\";\ntype SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Trigger varyantları `cva()` ile yönetilir (kütüphane geneli desen). Önceden\n * `variant === \"x\" && \"...\"` manuel zincirlemesi kullanılıyor ve tüm renkler ham\n * `gray-*` paletiyle yazılıyordu — tema/karanlık mod bu değerleri etkileyemiyordu.\n * Artık semantik token'lara bağlı (`border-input`, `bg-background`, `bg-muted`…).\n */\nconst selectTriggerVariants = cva(\n [\n \"flex w-full items-center justify-between gap-1 rounded-md transition-all duration-200\",\n \"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n \"focus-visible:outline-none text-foreground\",\n ],\n {\n variants: {\n variant: {\n standard:\n \"border border-input bg-background hover:border-ring focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary\",\n outline:\n \"border border-input bg-transparent hover:border-ring focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary\",\n ghost:\n \"border-none bg-muted hover:bg-muted/80 focus-visible:ring-2 focus-visible:ring-primary/30\",\n underline:\n \"border-t-0 border-l-0 border-r-0 border-b border-input rounded-none px-0 bg-transparent hover:border-ring focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary\",\n },\n size: {\n sm: \"h-8 text-xs px-2\",\n md: \"h-10 text-sm px-3\",\n lg: \"h-12 text-base px-4\",\n },\n state: {\n none: \"\",\n error: \"border-error focus-visible:ring-error/30 focus-visible:border-error\",\n success:\n \"border-success focus-visible:ring-success/30 focus-visible:border-success\",\n },\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n state: \"none\",\n },\n }\n)\n\nexport interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n /** Visual variant */\n variant?: SelectTriggerVariant;\n /** Size */\n size?: SelectTriggerSize;\n /** Error state */\n error?: boolean | string;\n /** Success state */\n success?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Icon displayed on the left */\n leftIcon?: React.ReactNode;\n /** Icon displayed on the right (instead of default chevron) */\n rightIcon?: React.ReactNode;\n}\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, variant, size, error, success, loading, leftIcon, rightIcon, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n selectTriggerVariants({\n variant,\n size,\n state: error ? \"error\" : success ? \"success\" : \"none\",\n }),\n className\n )}\n {...props}\n disabled={props.disabled || loading}\n // `error` görsel olarak işaretleniyordu ama yardımcı teknolojiye hiç\n // duyurulmuyordu; Input/Textarea aynı kavramda `aria-invalid` set ediyor.\n aria-invalid={error ? true : undefined}\n data-error={error ? true : undefined}\n data-success={success ? true : undefined}\n data-loading={loading ? true : undefined}\n >\n <div className=\"flex items-center flex-1 gap-2\">\n {leftIcon && (\n <span className=\"flex items-center justify-center text-muted-foreground\">\n {leftIcon}\n </span>\n )}\n {loading ? (\n <div className=\"flex items-center gap-2\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Loading...</span>\n </div>\n ) : children}\n </div>\n {!loading && (\n <SelectPrimitive.Icon asChild>\n {rightIcon ? (\n <span className=\"opacity-60\">{rightIcon}</span>\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60 transition-transform duration-200 ease-out group-data-[state=open]:rotate-180\" />\n )}\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n/**\n * Scroll Up Button Component\n */\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n/**\n * Scroll Down Button Component\n */\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", side = \"bottom\", sideOffset = 4, align = \"start\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n side={side}\n sideOffset={sideOffset}\n align={align}\n avoidCollisions={false}\n className={cn(\n [\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden\",\n \"rounded-md border border-input\",\n \"bg-background dark:bg-gray-800/80 backdrop-blur-sm text-foreground dark:text-gray-200\",\n \"shadow-lg dark:shadow-gray-900/20\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\", \n \"data-[state=open]:duration-150\"],\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"moonui-theme\", \"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\ntype SelectItemVariant = \"default\" | \"subtle\" | \"destructive\" | \"success\" | \"warning\";\ntype SelectItemSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n /** Visual variant */\n variant?: SelectItemVariant;\n /** Size */\n size?: SelectItemSize;\n /** Icon displayed on the right */\n rightIcon?: React.ReactNode;\n /** Custom indicator icon (instead of default check) */\n customIndicator?: React.ReactNode;\n}\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, variant = \"default\", size = \"md\", rightIcon, customIndicator, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"relative flex w-full cursor-default select-none items-center rounded-sm outline-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"transition-colors duration-150\",\n\n /* Size variants */\n size === \"sm\" && \"py-1 pl-7 pr-2 text-xs\",\n size === \"md\" && \"py-1.5 pl-8 pr-2 text-sm\",\n size === \"lg\" && \"py-2 pl-9 pr-3 text-base\",\n \n /* Color variants */\n variant === \"default\" && \"focus:bg-accent focus:text-accent-foreground dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n variant === \"subtle\" && \"focus:bg-gray-100 dark:focus:bg-gray-800 focus:text-foreground dark:focus:text-gray-200\",\n variant === \"destructive\" && \"text-error dark:text-red-400 focus:bg-error/10 dark:focus:bg-red-900/20 focus:text-error dark:focus:text-red-300\",\n variant === \"success\" && \"text-success dark:text-green-400 focus:bg-success/10 dark:focus:bg-green-900/20 focus:text-success dark:focus:text-green-300\",\n variant === \"warning\" && \"text-warning dark:text-yellow-400 focus:bg-warning/10 dark:focus:bg-yellow-900/20 focus:text-warning dark:focus:text-yellow-300\",\n \n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n {customIndicator || <Check className=\"h-4 w-4\" />}\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n \n {rightIcon && (\n <span className=\"ml-auto pl-2 opacity-70\">\n {rightIcon}\n </span>\n )}\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 my-1 h-px bg-muted dark:bg-gray-700\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Circle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Radio Group Component\n *\n * Accessible, customizable, and fully integrated with the theme system radio button group.\n * Allows users to select a single option from a group of choices.\n */\n\nconst radioGroupItemVariants = cva(\n \"aspect-square border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-primary\",\n outline: \"border-border bg-transparent text-primary\",\n filled: \"border-primary bg-primary/10 text-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// NOT: `React.HTMLAttributes` kendi `defaultValue`'sunu\n// (`string | number | readonly string[]`) taşır; radio grubu için tek bir `string`\n// anlamlı olduğundan Omit ile daraltılır.\nexport interface RadioGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\"> {\n /**\n * Radio group value (controlled)\n */\n value?: string;\n /**\n * Uncontrolled kullanımda başlangıç değeri. `value` verilmediğinde grup\n * seçimi kendi iç state'inde tutar.\n */\n defaultValue?: string;\n /**\n * Function to call when radio group value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Radio group disabled state\n */\n disabled?: boolean;\n /**\n * Radio group name\n */\n name?: string;\n}\n\nconst RadioGroupContext = React.createContext<{\n value?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n name?: string;\n}>({});\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ className, value, defaultValue, onValueChange, disabled, name, ...props }, ref) => {\n // Controlled/uncontrolled ikili mod: `value` verilmişse tüketici yönetir,\n // verilmemişse grup seçimi kendi iç state'inde tutar.\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onValueChange?.(next);\n },\n [isControlled, onValueChange]\n );\n\n return (\n <RadioGroupContext.Provider\n value={{\n value: currentValue,\n onValueChange: handleValueChange,\n disabled,\n name,\n }}\n >\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\"moonui-theme\", \"grid gap-2\", className)}\n {...props}\n />\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport interface RadioGroupItemProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof radioGroupItemVariants> {\n /**\n * Custom indicator component\n */\n indicator?: React.ReactNode;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Radio button value\n */\n value: string;\n /**\n * Radio button disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioGroupItem = React.forwardRef<\n HTMLInputElement,\n RadioGroupItemProps\n>(({ className, variant, size, indicator, id, value, disabled, ...props }, ref) => {\n // Get context values from radio group\n const radioGroup = React.useContext(RadioGroupContext);\n const generatedId = React.useId();\n const radioId = id || generatedId;\n const isChecked = radioGroup.value === value;\n \n // Call onValueChange function when RadioGroupItem changes\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup.onValueChange) {\n radioGroup.onValueChange(e.target.value);\n }\n \n if (props.onChange) {\n props.onChange(e);\n }\n };\n \n return (\n <div className=\"relative flex items-center\">\n <input\n type=\"radio\"\n id={radioId}\n ref={ref}\n value={value}\n checked={isChecked}\n disabled={disabled || radioGroup.disabled}\n name={radioGroup.name}\n onChange={handleChange}\n className=\"peer sr-only\"\n {...props}\n />\n <label\n htmlFor={radioId}\n className={cn(\n radioGroupItemVariants({ variant, size }),\n \"rounded-full\",\n // Gerçekte odaklanan eleman görsel olarak gizli `sr-only` input'tur.\n // Görünür label onun KARDEŞİ olduğu için label'da `:focus-visible` hiç\n // tetiklenmiyor, dolayısıyla klavye kullanıcısı hiçbir focus izi\n // görmüyordu. Tailwind `peer` deseniyle (input `peer` sınıfını taşır ve\n // DOM'da label'dan önce gelir) focus izi görünür elemana taşınır.\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-primary/50\",\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <span className={cn(\n \"absolute inset-0 pointer-events-none\",\n isChecked && \"flex items-center justify-center\"\n )}>\n {isChecked && (indicator || <Circle className=\"h-[60%] w-[60%] fill-current text-current\" />)}\n </span>\n </label>\n </div>\n );\n});\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\n// Radio Label Component\nexport interface RadioLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * HTML id for radio button\n */\n htmlFor?: string;\n /**\n * Label content\n */\n children: React.ReactNode;\n /**\n * Disabled state style\n */\n disabled?: boolean;\n}\n\nconst RadioLabel = React.forwardRef<HTMLLabelElement, RadioLabelProps>(\n ({ className, htmlFor, children, disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none ml-2 text-foreground\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nRadioLabel.displayName = \"RadioLabel\";\n\n// Radio Item and Label combination\nexport interface RadioItemWithLabelProps extends RadioGroupItemProps {\n /**\n * Label content\n */\n label: React.ReactNode;\n /**\n * HTML classes for label\n */\n labelClassName?: string;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioItemWithLabel = React.forwardRef<\n HTMLInputElement,\n RadioItemWithLabelProps\n>(({ \n id, \n label, \n labelClassName, \n ...radioProps \n}, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n <RadioGroupItem ref={ref} id={radioId} {...radioProps} />\n <RadioLabel \n htmlFor={radioId}\n disabled={radioProps.disabled}\n className={labelClassName}\n >\n {label}\n </RadioLabel>\n </div>\n );\n});\nRadioItemWithLabel.displayName = \"RadioItemWithLabel\";\n\nexport { RadioGroup, RadioGroupItem, RadioLabel, RadioItemWithLabel };\n","\"use client\"\n\n// Basic Rich Text Editor - Free Version\n\nimport * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface RichTextEditorProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n}\n\nexport function RichTextEditor({\n value = \"\",\n onChange,\n placeholder = \"Start typing...\",\n className,\n disabled = false\n}: RichTextEditorProps) {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!disabled && onChange) {\n onChange(e.target.value)\n }\n }\n\n return (\n <div className={cn(\"border border-input rounded-md\", className)}>\n <div className=\"border-b border-border p-2 bg-muted/50\">\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Bold (Pro feature)\"\n >\n B\n </button>\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Italic (Pro feature)\"\n >\n I\n </button>\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Underline (Pro feature)\"\n >\n U\n </button>\n </div>\n </div>\n <textarea\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"w-full min-h-[200px] p-3 resize-none border-0 bg-transparent\",\n \"focus:outline-none focus:ring-0\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n />\n </div>\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }","\"use client\"\n\nimport * as React from \"react\"\nimport { motion, Variants, Transition, UseInViewOptions } from \"framer-motion\"\nimport { cn } from \"../../lib/utils\"\n\n/**\n * ScrollReveal Component\n *\n * Reveals content with smooth animations when scrolling into view\n * Built with Framer Motion for performance and flexibility\n *\n * @example\n * ```tsx\n * <ScrollReveal direction=\"up\" delay={0.2}>\n * <Card>Your content</Card>\n * </ScrollReveal>\n * ```\n */\n\ninterface ScrollRevealProps {\n /** Content to reveal */\n children: React.ReactNode\n /** Animation direction */\n direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"fade\" | \"scale\" | \"blur\"\n /** Animation delay in seconds */\n delay?: number\n /** Animation duration in seconds */\n duration?: number\n /** Distance to animate from (pixels) */\n distance?: number\n /** Viewport threshold for trigger (0-1) */\n threshold?: number\n /** Trigger animation only once */\n once?: boolean\n /** Deprecated: Use 'once' instead */\n triggerOnce?: boolean\n /** Stagger delay for multiple children (deprecated: use ScrollRevealContainer) */\n stagger?: number\n /** Additional CSS classes */\n className?: string\n /** Custom animation variants */\n variants?: Variants\n /** Enable/disable animations */\n animate?: boolean\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n /** Viewport options for intersection observer */\n viewport?: UseInViewOptions\n}\n\n// Default animation variants with professional easing\nconst createDefaultVariants = (direction: string, distance: number): Variants => {\n const baseVariants: Record<string, Variants> = {\n up: {\n hidden: { opacity: 0, y: distance },\n visible: { opacity: 1, y: 0 }\n },\n down: {\n hidden: { opacity: 0, y: -distance },\n visible: { opacity: 1, y: 0 }\n },\n left: {\n hidden: { opacity: 0, x: distance },\n visible: { opacity: 1, x: 0 }\n },\n right: {\n hidden: { opacity: 0, x: -distance },\n visible: { opacity: 1, x: 0 }\n },\n fade: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 }\n },\n scale: {\n hidden: { opacity: 0, scale: 0.85 },\n visible: { opacity: 1, scale: 1 }\n },\n blur: {\n hidden: { opacity: 0, filter: \"blur(10px)\" },\n visible: { opacity: 1, filter: \"blur(0px)\" }\n }\n }\n\n return baseVariants[direction] || baseVariants.up\n}\n\n// Professional easing curve\nconst defaultTransition: Transition = {\n duration: 0.5,\n ease: [0.25, 0.46, 0.45, 0.94], // Custom cubic-bezier for smooth motion\n}\n\nconst ScrollReveal = React.forwardRef<HTMLDivElement, ScrollRevealProps>(\n ({\n children,\n direction = \"up\",\n delay = 0,\n duration = 0.5,\n distance = 50,\n threshold = 0.3, // Increased from 0.1 for better visibility\n once = true,\n triggerOnce, // Backward compatibility\n stagger = 0,\n className,\n variants,\n animate = true,\n style,\n id,\n viewport\n }, ref) => {\n // Handle backward compatibility\n const shouldTriggerOnce = triggerOnce !== undefined ? triggerOnce : once\n\n // Get animation variants\n const animationVariants = React.useMemo(() => {\n if (variants) return variants\n return createDefaultVariants(direction, distance)\n }, [direction, distance, variants])\n\n // Transition configuration\n const transition = React.useMemo<Transition>(() => ({\n ...defaultTransition,\n duration,\n delay: delay + stagger,\n }), [duration, delay, stagger])\n\n // Viewport configuration\n const viewportConfig = React.useMemo<UseInViewOptions>(() => ({\n once: shouldTriggerOnce,\n amount: threshold,\n ...viewport\n }), [shouldTriggerOnce, threshold, viewport])\n\n // If animations are disabled, render children in a regular div\n if (!animate) {\n return (\n <div\n ref={ref}\n className={className}\n style={style}\n id={id}\n >\n {children}\n </div>\n )\n }\n\n // Render with Framer Motion using whileInView pattern\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={viewportConfig}\n variants={animationVariants}\n transition={transition}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollReveal.displayName = \"ScrollReveal\"\n\n/**\n * ScrollRevealContainer Component\n *\n * Container for orchestrating staggered scroll reveal animations\n * Uses Framer Motion's staggerChildren for better performance\n *\n * @example\n * ```tsx\n * <ScrollRevealContainer stagger={0.1}>\n * <ScrollRevealItem>Item 1</ScrollRevealItem>\n * <ScrollRevealItem>Item 2</ScrollRevealItem>\n * </ScrollRevealContainer>\n * ```\n */\n\ninterface ScrollRevealContainerProps {\n /** ScrollRevealItem components */\n children: React.ReactNode\n /** Delay between child animations (seconds) */\n stagger?: number\n /** Additional CSS classes */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n /** Viewport threshold for trigger (0-1) */\n threshold?: number\n /** Trigger animation only once */\n once?: boolean\n /** Deprecated: Use 'once' instead */\n triggerOnce?: boolean\n /** Viewport options for intersection observer */\n viewport?: UseInViewOptions\n}\n\nconst ScrollRevealContainer = React.forwardRef<HTMLDivElement, ScrollRevealContainerProps>(\n ({\n children,\n stagger = 0.1,\n className,\n style,\n id,\n threshold = 0.3,\n once = true,\n triggerOnce,\n viewport\n }, ref) => {\n // Handle backward compatibility\n const shouldTriggerOnce = triggerOnce !== undefined ? triggerOnce : once\n\n // Viewport configuration\n const viewportConfig = React.useMemo<UseInViewOptions>(() => ({\n once: shouldTriggerOnce,\n amount: threshold,\n ...viewport\n }), [shouldTriggerOnce, threshold, viewport])\n\n // Container variants for staggered children\n const containerVariants: Variants = {\n hidden: {},\n visible: {\n transition: {\n staggerChildren: stagger,\n delayChildren: 0\n }\n }\n }\n\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={viewportConfig}\n variants={containerVariants}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollRevealContainer.displayName = \"ScrollRevealContainer\"\n\n/**\n * ScrollRevealItem Component\n *\n * Individual item within a ScrollRevealContainer\n * Automatically inherits timing from parent container\n *\n * @example\n * ```tsx\n * <ScrollRevealItem direction=\"up\">\n * <Card>Item content</Card>\n * </ScrollRevealItem>\n * ```\n */\n\ninterface ScrollRevealItemProps {\n /** Content to animate */\n children: React.ReactNode\n /** Animation direction */\n direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"fade\" | \"scale\" | \"blur\"\n /** Animation duration in seconds */\n duration?: number\n /** Distance to animate from (pixels) */\n distance?: number\n /** Additional CSS classes */\n className?: string\n /** Custom animation variants */\n variants?: Variants\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n}\n\nconst ScrollRevealItem = React.forwardRef<HTMLDivElement, ScrollRevealItemProps>(\n ({\n children,\n direction = \"up\",\n duration = 0.5,\n distance = 50,\n className,\n variants,\n style,\n id\n }, ref) => {\n // Get animation variants\n const animationVariants = React.useMemo(() => {\n if (variants) return variants\n return createDefaultVariants(direction, distance)\n }, [direction, distance, variants])\n\n // Transition configuration\n const transition = React.useMemo<Transition>(() => ({\n ...defaultTransition,\n duration,\n }), [duration])\n\n return (\n <motion.div\n ref={ref}\n variants={animationVariants}\n transition={transition}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollRevealItem.displayName = \"ScrollRevealItem\"\n\nexport { ScrollReveal, ScrollRevealContainer, ScrollRevealItem }\nexport type { ScrollRevealProps, ScrollRevealContainerProps, ScrollRevealItemProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst separatorVariants = cva(\n \"shrink-0 bg-border\",\n {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n vertical: \"h-full w-[1px]\",\n },\n variant: {\n default: \"bg-border\",\n dashed: \"border-dashed border-border bg-transparent\",\n dotted: \"border-dotted border-border bg-transparent\",\n gradient: \"bg-gradient-to-r from-transparent via-border to-transparent\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n orientation: \"horizontal\",\n variant: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n variant: \"dotted\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dotted\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-2\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-2\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[2px]\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[2px]\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nexport interface SeparatorProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>, keyof VariantProps<typeof separatorVariants>>,\n VariantProps<typeof separatorVariants> {}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n { \n className, \n orientation = \"horizontal\", \n variant = \"default\",\n size = \"md\",\n decorative = true, \n ...props \n },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation || undefined}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator, separatorVariants }","\"use client\"\n\nimport React, { useCallback, useState, useEffect } from 'react'\nimport { motion } from 'framer-motion'\nimport { Button } from './button'\nimport { Separator } from './separator'\nimport { Toggle } from './toggle'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'\nimport { cn } from '../../lib/utils'\nimport {\n Bold,\n Italic,\n Underline,\n Strikethrough,\n AlignLeft,\n AlignCenter,\n AlignRight,\n AlignJustify,\n List,\n ListOrdered,\n Quote,\n Link,\n Image as ImageIcon,\n Code,\n Type,\n Palette,\n Undo,\n Redo,\n Eye,\n Edit\n} from 'lucide-react'\n\nexport interface SimpleEditorProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n minHeight?: number\n maxHeight?: number\n showToolbar?: boolean\n showPreview?: boolean\n}\n\ninterface ToolbarButtonProps {\n icon: React.ReactNode\n tooltip: string\n active?: boolean\n onClick: () => void\n disabled?: boolean\n}\n\nconst ToolbarButton = ({ icon, tooltip, active, onClick, disabled }: ToolbarButtonProps) => (\n <Tooltip>\n <TooltipTrigger asChild>\n <Toggle\n pressed={active}\n onPressedChange={() => onClick()}\n disabled={disabled}\n // Butonun tek içeriği bir ikon; erişilebilir ad olmadan ekran okuyucu\n // yalnızca \"button\" der. `tooltip` zaten insan-okur etiketi taşıyor.\n // (Tooltip yalnızca fare/odak ile görünür, erişilebilir ad SAĞLAMAZ.)\n aria-label={tooltip}\n className=\"h-8 w-8 p-0\"\n >\n {icon}\n </Toggle>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n)\n\nconst ColorPicker = ({ onColorSelect }: { onColorSelect: (color: string) => void }) => {\n const colors = [\n '#000000', '#374151', '#6B7280', '#9CA3AF',\n '#EF4444', '#F59E0B', '#EAB308', '#22C55E',\n '#3B82F6', '#6366F1', '#8B5CF6', '#EC4899'\n ]\n\n return (\n <div className=\"grid grid-cols-4 gap-1 p-2\">\n {colors.map(color => (\n <button\n key={color}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad şart.\n aria-label={`Select color ${color}`}\n className=\"w-6 h-6 rounded border-2 border-border hover:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n style={{ backgroundColor: color }}\n onClick={() => onColorSelect(color)}\n />\n ))}\n </div>\n )\n}\n\nexport const SimpleEditor = React.forwardRef<HTMLDivElement, SimpleEditorProps>(\n ({\n value = '',\n onChange,\n placeholder = 'Start writing...',\n disabled = false,\n className,\n minHeight = 200,\n maxHeight = 500,\n showToolbar = true,\n showPreview = true,\n ...props\n }, ref) => {\n const [content, setContent] = useState(value)\n const [isPreview, setIsPreview] = useState(false)\n const [sourceContent, setSourceContent] = useState(value)\n const [selection, setSelection] = useState<{ start: number; end: number } | null>(null)\n const editorRef = React.useRef<HTMLDivElement>(null)\n const sourceRef = React.useRef<HTMLTextAreaElement>(null)\n\n // Format state tracking\n const [formatState, setFormatState] = useState({\n bold: false,\n italic: false,\n underline: false,\n strikethrough: false,\n alignLeft: true,\n alignCenter: false,\n alignRight: false,\n alignJustify: false,\n orderedList: false,\n unorderedList: false,\n quote: false,\n code: false\n })\n\n const updateContent = useCallback((newContent: string) => {\n setContent(newContent)\n onChange?.(newContent)\n }, [onChange])\n\n const saveSelection = useCallback(() => {\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n return selection.getRangeAt(0)\n }\n return null\n }, [])\n\n const restoreSelection = useCallback((range: Range | null) => {\n if (!range) return\n \n const selection = window.getSelection()\n if (selection) {\n selection.removeAllRanges()\n selection.addRange(range)\n }\n }, [])\n\n const executeCommand = useCallback((command: string, value?: string) => {\n if (disabled) return\n \n // Focus the editor first\n if (editorRef.current) {\n editorRef.current.focus()\n }\n \n // Save current selection before executing command\n const savedRange = saveSelection()\n \n // Execute the command\n const result = document.execCommand(command, false, value)\n \n if (!result) {\n console.warn(`Command '${command}' failed to execute`)\n }\n \n // Update content state to trigger re-render\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n \n // Update format state\n setFormatState({\n bold: document.queryCommandState('bold'),\n italic: document.queryCommandState('italic'),\n underline: document.queryCommandState('underline'),\n strikethrough: document.queryCommandState('strikeThrough'),\n alignLeft: document.queryCommandState('justifyLeft'),\n alignCenter: document.queryCommandState('justifyCenter'),\n alignRight: document.queryCommandState('justifyRight'),\n alignJustify: document.queryCommandState('justifyFull'),\n orderedList: document.queryCommandState('insertOrderedList'),\n unorderedList: document.queryCommandState('insertUnorderedList'),\n quote: document.queryCommandState('formatBlock'),\n code: document.queryCommandState('formatBlock')\n })\n \n // Keep focus on editor\n if (editorRef.current) {\n editorRef.current.focus()\n }\n }, [disabled, saveSelection, updateContent])\n\n const handleInput = useCallback((e: React.FormEvent<HTMLDivElement>) => {\n const newContent = e.currentTarget.innerHTML\n updateContent(newContent)\n }, [updateContent])\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n // Handle keyboard shortcuts\n if (e.ctrlKey || e.metaKey) {\n switch (e.key) {\n case 'b':\n e.preventDefault()\n executeCommand('bold')\n break\n case 'i':\n e.preventDefault()\n executeCommand('italic')\n break\n case 'u':\n e.preventDefault()\n executeCommand('underline')\n break\n case 'z':\n e.preventDefault()\n if (e.shiftKey) {\n executeCommand('redo')\n } else {\n executeCommand('undo')\n }\n break\n }\n }\n\n // Handle Tab for indentation\n if (e.key === 'Tab') {\n e.preventDefault()\n executeCommand('insertHTML', ' ')\n }\n }, [executeCommand])\n\n const insertLink = useCallback(() => {\n const url = prompt('Enter URL:')\n if (url) {\n executeCommand('createLink', url)\n }\n }, [executeCommand])\n\n const insertImage = useCallback(() => {\n const url = prompt('Enter image URL:')\n if (url) {\n executeCommand('insertImage', url)\n }\n }, [executeCommand])\n\n const formatHeading = useCallback((level: string) => {\n executeCommand('formatBlock', `<h${level}>`)\n }, [executeCommand])\n\n const setTextColor = useCallback((color: string) => {\n // First try the modern way\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const span = document.createElement('span')\n span.style.color = color\n \n try {\n range.surroundContents(span)\n } catch (e) {\n // If surroundContents fails, use execCommand\n executeCommand('foreColor', color)\n }\n \n // Update content\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n }\n }, [executeCommand, updateContent])\n\n // Convert HTML to plain text for preview\n const getPlainText = (html: string) => {\n if (typeof window === 'undefined') {\n // Server-side: simple regex-based HTML stripping\n return html\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/ /g, ' ') // Replace with space\n .replace(/&/g, '&') // Replace & with &\n .replace(/</g, '<') // Replace < with <\n .replace(/>/g, '>') // Replace > with >\n .replace(/"/g, '\"') // Replace " with \"\n .replace(/'/g, \"'\") // Replace ' with '\n }\n // Client-side: use DOM for accurate conversion\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n\n React.useEffect(() => {\n if (editorRef.current && content && content !== editorRef.current.innerHTML) {\n editorRef.current.innerHTML = content\n }\n }, [content])\n\n // Sync source content when value prop changes\n React.useEffect(() => {\n if (value !== undefined && value !== content) {\n setContent(value)\n setSourceContent(value)\n }\n }, [value, content])\n\n const toolbar = showToolbar && (\n <TooltipProvider>\n <motion.div\n className=\"flex items-center gap-1 p-2 border-b bg-gray-50/50 dark:bg-zinc-800/50 backdrop-blur-sm\"\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n >\n {/* Text Formatting */}\n {!isPreview && (\n <>\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Bold className=\"h-3 w-3\" />}\n tooltip=\"Bold (Ctrl+B)\"\n active={formatState.bold}\n onClick={() => executeCommand('bold')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Italic className=\"h-3 w-3\" />}\n tooltip=\"Italic (Ctrl+I)\"\n active={formatState.italic}\n onClick={() => executeCommand('italic')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Underline className=\"h-3 w-3\" />}\n tooltip=\"Underline (Ctrl+U)\"\n active={formatState.underline}\n onClick={() => executeCommand('underline')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Strikethrough className=\"h-3 w-3\" />}\n tooltip=\"Strikethrough\"\n active={formatState.strikethrough}\n onClick={() => executeCommand('strikeThrough')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Font Size / Heading */}\n <Select \n onValueChange={(value) => {\n if (value.startsWith('h')) {\n formatHeading(value.substring(1))\n } else if (value === 'normal') {\n executeCommand('formatBlock', 'p')\n } else {\n executeCommand('fontSize', value)\n }\n }} \n disabled={disabled}\n >\n <SelectTrigger className=\"w-24 h-8\">\n <SelectValue placeholder=\"Size\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1\">Small</SelectItem>\n <SelectItem value=\"3\">Normal</SelectItem>\n <SelectItem value=\"5\">Large</SelectItem>\n <SelectItem value=\"7\">X-Large</SelectItem>\n <Separator className=\"my-1\" />\n <SelectItem value=\"h1\">Heading 1</SelectItem>\n <SelectItem value=\"h2\">Heading 2</SelectItem>\n <SelectItem value=\"h3\">Heading 3</SelectItem>\n <SelectItem value=\"h4\">Heading 4</SelectItem>\n <SelectItem value=\"h5\">Heading 5</SelectItem>\n <SelectItem value=\"h6\">Heading 6</SelectItem>\n </SelectContent>\n </Select>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Alignment */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<AlignLeft className=\"h-3 w-3\" />}\n tooltip=\"Align Left\"\n active={formatState.alignLeft}\n onClick={() => executeCommand('justifyLeft')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignCenter className=\"h-3 w-3\" />}\n tooltip=\"Align Center\"\n active={formatState.alignCenter}\n onClick={() => executeCommand('justifyCenter')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignRight className=\"h-3 w-3\" />}\n tooltip=\"Align Right\"\n active={formatState.alignRight}\n onClick={() => executeCommand('justifyRight')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignJustify className=\"h-3 w-3\" />}\n tooltip=\"Justify\"\n active={formatState.alignJustify}\n onClick={() => executeCommand('justifyFull')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Lists */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<List className=\"h-3 w-3\" />}\n tooltip=\"Bullet List\"\n active={formatState.unorderedList}\n onClick={() => executeCommand('insertUnorderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ListOrdered className=\"h-3 w-3\" />}\n tooltip=\"Numbered List\"\n active={formatState.orderedList}\n onClick={() => executeCommand('insertOrderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Quote className=\"h-3 w-3\" />}\n tooltip=\"Quote\"\n active={formatState.quote}\n onClick={() => executeCommand('formatBlock', 'blockquote')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Code className=\"h-3 w-3\" />}\n tooltip=\"Code Block\"\n active={formatState.code}\n onClick={() => executeCommand('formatBlock', 'pre')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Indentation */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">←</span>}\n tooltip=\"Decrease Indent\"\n onClick={() => executeCommand('outdent')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">→</span>}\n tooltip=\"Increase Indent\"\n onClick={() => executeCommand('indent')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Insert */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Link className=\"h-3 w-3\" />}\n tooltip=\"Insert Link\"\n onClick={insertLink}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ImageIcon className=\"h-3 w-3\" />}\n tooltip=\"Insert Image\"\n onClick={insertImage}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Color */}\n <Popover>\n <PopoverTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"sm\" \n className=\"h-8 w-8 p-0\" \n disabled={disabled}\n title=\"Text Color\"\n >\n <Palette className=\"h-3 w-3\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\">\n <ColorPicker onColorSelect={setTextColor} />\n </PopoverContent>\n </Popover>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Undo/Redo */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Undo className=\"h-3 w-3\" />}\n tooltip=\"Undo (Ctrl+Z)\"\n onClick={() => executeCommand('undo')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Redo className=\"h-3 w-3\" />}\n tooltip=\"Redo (Ctrl+Shift+Z)\"\n onClick={() => executeCommand('redo')}\n disabled={disabled}\n />\n </div>\n\n </>\n )}\n\n {/* Preview Toggle */}\n {showPreview && (\n <>\n {!isPreview && <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />}\n <ToolbarButton\n icon={isPreview ? <Edit className=\"h-3 w-3\" /> : <Eye className=\"h-3 w-3\" />}\n tooltip={isPreview ? \"Edit Mode\" : \"View Source Code\"}\n active={isPreview}\n onClick={() => {\n if (isPreview) {\n // Apply source changes to content when switching back to edit mode\n updateContent(sourceContent)\n } else {\n // Update source content when switching to preview mode\n setSourceContent(content)\n }\n setIsPreview(!isPreview)\n }}\n disabled={disabled}\n />\n </>\n )}\n </motion.div>\n </TooltipProvider>\n )\n\n return (\n <div\n ref={ref}\n className={cn(\n \"border border-gray-200 dark:border-zinc-700 rounded-lg overflow-hidden focus-within:ring-2 focus-within:ring-ring focus-within:border-transparent\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {toolbar}\n\n <div className=\"relative\">\n {isPreview ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"bg-slate-50 dark:bg-zinc-900/95\"\n style={{ minHeight, maxHeight, overflow: 'auto' }}\n >\n <textarea\n ref={sourceRef}\n value={sourceContent}\n onChange={(e) => setSourceContent(e.target.value)}\n className=\"w-full h-full bg-transparent p-4 font-mono text-sm text-gray-900 dark:text-gray-100 resize-none focus:outline-none\"\n style={{ minHeight: minHeight - 32 }}\n disabled={disabled}\n placeholder=\"HTML source code...\"\n />\n </motion.div>\n ) : (\n <motion.div\n ref={editorRef}\n contentEditable={!disabled}\n suppressContentEditableWarning\n // Düz `div[contentEditable]` yardımcı teknolojiye bir form alanı\n // olarak görünmüyordu: rolü yok, çok satırlı olduğu bilinmiyor ve\n // erişilebilir adı yok.\n role=\"textbox\"\n aria-multiline=\"true\"\n aria-label={placeholder}\n aria-disabled={disabled || undefined}\n className={cn(\n \"p-4 outline-none prose prose-sm dark:prose-invert max-w-none overflow-y-auto\",\n // Token'a bağlandı (önce `bg-slate-50 dark:bg-zinc-900/95` ve\n // `text-gray-900 dark:text-gray-100` hardcode'luydu).\n \"bg-background text-foreground\",\n \"focus:ring-0\",\n \"[&_h1]:text-3xl [&_h1]:font-bold [&_h1]:mb-4\",\n \"[&_h2]:text-2xl [&_h2]:font-bold [&_h2]:mb-3\",\n \"[&_h3]:text-xl [&_h3]:font-bold [&_h3]:mb-2\",\n \"[&_h4]:text-lg [&_h4]:font-bold [&_h4]:mb-2\",\n \"[&_h5]:text-base [&_h5]:font-bold [&_h5]:mb-1\",\n \"[&_h6]:text-sm [&_h6]:font-bold [&_h6]:mb-1\",\n \"[&_ul]:list-disc [&_ul]:pl-6 [&_ul]:mb-4\",\n \"[&_ol]:list-decimal [&_ol]:pl-6 [&_ol]:mb-4\",\n \"[&_li]:mb-1\",\n \"[&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-4 [&_blockquote]:italic\",\n \"[&_pre]:bg-gray-100 [&_pre]:dark:bg-gray-800 [&_pre]:p-4 [&_pre]:rounded [&_pre]:overflow-x-auto\"\n )}\n style={{ minHeight, maxHeight }}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n data-placeholder={placeholder}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n />\n )}\n\n {/* Placeholder */}\n {!content && !isPreview && (\n <div\n className=\"absolute top-4 left-4 text-muted-foreground pointer-events-none\"\n style={{ fontSize: '16px' }}\n >\n {placeholder}\n </div>\n )}\n </div>\n\n {/* Character Count */}\n <div className=\"px-4 py-2 border-t bg-gray-50/50 dark:bg-zinc-800/50 backdrop-blur-sm text-xs text-gray-600 dark:text-gray-400\">\n <CharacterCount content={content} />\n </div>\n </div>\n )\n }\n)\n\nSimpleEditor.displayName = \"SimpleEditor\"\n\n// Character count component to avoid hydration issues\nconst CharacterCount = ({ content }: { content: string }) => {\n const [count, setCount] = useState(0)\n \n useEffect(() => {\n const getPlainText = (html: string) => {\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n setCount(getPlainText(content).length)\n }, [content])\n \n return <>{count} characters</>\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps extends React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst tooltipVariants = cva(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white border-green-600\",\n warning: \"bg-yellow-500 text-white border-yellow-600\",\n destructive: \"bg-destructive text-destructive-foreground\",\n info: \"bg-blue-500 text-white border-blue-600\",\n },\n size: {\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"moonui-theme\", \"fill-current\", className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipVariants> {\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant, size, showArrow = false, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\"moonui-theme\", tooltipVariants({ variant, size }), className)}\n {...props}\n >\n {props.children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Simplified Tooltip component for easy usage\nexport interface SimpleTooltipProps {\n children: React.ReactElement\n content: React.ReactNode\n variant?: TooltipContentProps[\"variant\"]\n size?: TooltipContentProps[\"size\"]\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n delayDuration?: number\n sideOffset?: number\n showArrow?: boolean\n className?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst SimpleTooltip = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n SimpleTooltipProps\n>(\n (\n {\n children,\n content,\n variant = \"default\",\n size = \"md\",\n side = \"top\",\n align = \"center\",\n delayDuration = 400,\n sideOffset = 4,\n showArrow = false,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n return (\n <Tooltip\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent\n ref={ref}\n side={side}\n align={align}\n variant={variant}\n size={size}\n sideOffset={sideOffset}\n showArrow={showArrow}\n className={className}\n {...props}\n >\n {content}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\nSimpleTooltip.displayName = \"SimpleTooltip\"\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n SimpleTooltip,\n tooltipVariants,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport { skeletonAnimation } from \"../../lib/micro-interactions\";\n\n/**\n * Skeleton Component\n *\n * A loading placeholder that mimics the structure of content.\n * Fully integrated with the theme system and provides various shapes, sizes, and animations.\n */\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary/10\",\n accent: \"bg-accent\",\n },\n size: {\n default: \"\",\n sm: \"scale-90\",\n lg: \"scale-110\",\n },\n shape: {\n rect: \"rounded-md\",\n circle: \"rounded-full\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"overflow-hidden relative after:absolute after:inset-0 after:-translate-x-full after:animate-[shimmer_2s_infinite] after:bg-gradient-to-r after:from-transparent after:via-white/10 after:to-transparent dark:after:via-white/5\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"rect\",\n animation: \"pulse\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n /**\n * Height of the skeleton\n */\n height?: string | number;\n /**\n * Width of the skeleton\n */\n width?: string | number;\n /**\n * Whether the content is loaded\n */\n isLoaded?: boolean;\n /**\n * Content to show when loaded\n */\n children?: React.ReactNode;\n /**\n * Fade-in animation duration in ms\n */\n fadeInDuration?: number;\n /**\n * Use motion animation for loading state\n */\n motion?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ \n className,\n variant,\n size,\n shape,\n animation,\n height,\n width,\n isLoaded = false,\n children,\n fadeInDuration = 400,\n motion: useMotion = false,\n style,\n ...props \n }, ref) => {\n // Filter out HTML event handlers that conflict with Framer Motion\n const { \n onDrag, \n onDragEnd, \n onDragStart,\n onAnimationStart,\n onAnimationEnd,\n onAnimationIteration,\n ...filteredProps \n } = props;\n \n // Show content when loaded\n if (isLoaded && children) {\n if (useMotion) {\n return (\n <motion.div\n ref={ref}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: fadeInDuration / 1000 }}\n className={cn(\"moonui-theme\", className)}\n style={{\n height,\n width,\n ...style,\n }}\n {...filteredProps}\n >\n {children}\n </motion.div>\n );\n }\n \n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"animate-fade-in\", className)}\n style={{\n animationDuration: `${fadeInDuration}ms`,\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n const SkeletonElement = useMotion ? motion.div : \"div\";\n \n return (\n <SkeletonElement\n ref={ref}\n className={cn(\n \"moonui-theme\",\n skeletonVariants({ variant, size, shape, animation }),\n \"relative isolate\",\n className\n )}\n style={{\n height,\n width,\n ...style,\n }}\n {...(useMotion ? skeletonAnimation : {})}\n {...filteredProps}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\n/**\n * Text Skeleton Component\n * \n * Creates skeleton loading states for text content\n */\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kaç satır gösterileceği\n */\n lines?: number;\n /**\n * Satır yüksekliği\n */\n lineHeight?: string | number;\n /**\n * Satırlar arası boşluk\n */\n spacing?: string | number;\n /**\n * Son satırın genişlik yüzdesi (0-100)\n */\n lastLineWidth?: number;\n /**\n * Rastgele satır genişlikleri\n */\n randomWidths?: boolean;\n}\n\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ \n className,\n lines = 3,\n lineHeight = \"0.85rem\",\n spacing = \"0.5rem\",\n lastLineWidth = 80,\n randomWidths = false,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col\", className)}\n style={{ gap: spacing }}\n {...props}\n >\n {Array.from({ length: lines }).map((_, i) => {\n const isLastLine = i === lines - 1;\n // Use deterministic widths based on line index for SSR compatibility\n const widthPercentage = isLastLine\n ? lastLineWidth\n : randomWidths\n ? 85 + (i % 3) * 5 // Creates a pattern: 85%, 90%, 95%, 85%, ...\n : 100;\n\n return (\n <Skeleton\n key={i}\n variant={variant}\n animation={animation}\n className=\"w-full\"\n style={{\n height: lineHeight,\n width: `${widthPercentage}%`,\n }}\n />\n );\n })}\n </div>\n );\n }\n);\nSkeletonText.displayName = \"SkeletonText\";\n\n/**\n * Avatar Skeleton Component\n */\nexport interface SkeletonAvatarProps extends Omit<SkeletonProps, \"shape\" | \"size\"> {\n /**\n * Avatar boyutu (piksel)\n */\n size?: string | number;\n}\n\nexport const SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ \n className,\n size = \"2.5rem\",\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <Skeleton\n ref={ref}\n variant={variant}\n animation={animation}\n shape=\"circle\"\n className={cn(\"moonui-theme\", \"shrink-0\", className)}\n style={{\n height: size,\n width: size,\n }}\n {...props}\n />\n );\n }\n);\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n/**\n * Card Skeleton Component\n */\nexport interface SkeletonCardProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kart başlığının gösterilip gösterilmeyeceği\n */\n showHeader?: boolean;\n /**\n * İçerik satır sayısı\n */\n contentLines?: number;\n /**\n * Alt bilgi gösterilip gösterilmeyeceği\n */\n showFooter?: boolean;\n}\n\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ \n className,\n showHeader = true,\n contentLines = 3,\n showFooter = true,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-background p-4\",\n className\n )}\n {...props}\n >\n {showHeader && (\n <div className=\"mb-4 flex items-center gap-4\">\n <SkeletonAvatar size=\"2.5rem\" variant={variant} animation={animation} />\n <div className=\"flex-1\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"mb-2 h-4 w-1/3\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-3 w-1/4\" \n />\n </div>\n </div>\n )}\n \n <SkeletonText \n lines={contentLines} \n variant={variant} \n animation={animation} \n className=\"mb-4\" \n />\n \n {showFooter && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-border\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/4\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/5\" \n />\n </div>\n )}\n </div>\n );\n }\n);\nSkeletonCard.displayName = \"SkeletonCard\";\n\nexport { skeletonVariants };\n","\"use client\"\n\n// Basic Swipeable Card - Free Version\n\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface SwipeableCardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n onSwipeLeft?: () => void\n onSwipeRight?: () => void\n threshold?: number\n disabled?: boolean\n}\n\nexport const SwipeableCard = React.forwardRef<HTMLDivElement, SwipeableCardProps>(\n ({ className, children, onSwipeLeft, onSwipeRight, threshold = 100, disabled = false, ...props }, ref) => {\n const [startX, setStartX] = React.useState(0)\n const [currentX, setCurrentX] = React.useState(0)\n const [isSwiping, setIsSwiping] = React.useState(false)\n\n const handleTouchStart = (e: React.TouchEvent) => {\n if (disabled) return\n setStartX(e.touches[0].clientX)\n setIsSwiping(true)\n }\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (disabled || !isSwiping) return\n setCurrentX(e.touches[0].clientX)\n }\n\n const handleTouchEnd = () => {\n if (disabled || !isSwiping) return\n \n const deltaX = currentX - startX\n \n if (Math.abs(deltaX) > threshold) {\n if (deltaX > 0 && onSwipeRight) {\n onSwipeRight()\n } else if (deltaX < 0 && onSwipeLeft) {\n onSwipeLeft()\n }\n }\n \n setIsSwiping(false)\n setCurrentX(0)\n setStartX(0)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"touch-pan-y select-none transition-transform duration-200\",\n isSwiping && \"cursor-grabbing\",\n className\n )}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nSwipeableCard.displayName = \"SwipeableCard\"","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype SwitchSize = \"sm\" | \"md\" | \"lg\";\ntype SwitchVariant = \"primary\" | \"success\" | \"warning\" | \"destructive\" | \"secondary\";\n\n/**\n * Boyut ve renk varyantları `cva()` ile yönetilir (kütüphane geneli desen).\n * Önceden `size === \"x\" && \"...\"` biçiminde manuel zincirleme kullanılıyordu;\n * `defaultVariants` yoktu ve varsayılanlar destructuring'de gizliydi.\n */\nconst switchVariants = cva(\n [\n \"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full\",\n \"border-2 border-transparent transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n // Kapalı durum token'a bağlı; `--input` karanlık modda kendi değerini taşır.\n // (Önceden ayrıca `dark:data-[state=unchecked]:bg-gray-700/70` hardcode'u\n // vardı ve token'ı eziyordu — kaldırıldı.)\n \"data-[state=unchecked]:bg-input\",\n \"dark:focus-visible:ring-primary/40\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-8\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-14\",\n },\n variant: {\n primary: \"data-[state=checked]:bg-primary\",\n success: \"data-[state=checked]:bg-success\",\n warning: \"data-[state=checked]:bg-warning\",\n destructive: \"data-[state=checked]:bg-error\",\n secondary: \"data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n }\n)\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n md: \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n lg: \"h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n /** Switch boyutu */\n size?: SwitchSize;\n /** Switch renk varyantı */\n variant?: SwitchVariant;\n /** Yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Switch açıklaması */\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({\n className,\n size,\n variant,\n loading,\n leftIcon,\n rightIcon,\n description,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}, ref) => {\n // `description` görsel olarak render ediliyordu ama switch ile hiçbir\n // programatik bağı yoktu — ekran okuyucu açıklamayı okuyamıyordu.\n // Stabil bir id üretilip `aria-describedby` ile bağlanır; tüketicinin\n // kendi verdiği `aria-describedby` korunur.\n const reactId = React.useId()\n const descriptionId = description ? `${reactId}-description` : undefined\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined\n\n return (\n <div className=\"moonui-theme inline-flex items-center gap-2\">\n {leftIcon && <span className=\"text-muted-foreground\">{leftIcon}</span>}\n <SwitchPrimitives.Root\n className={cn(\n switchVariants({ size, variant }),\n loading && \"opacity-80 cursor-wait\",\n className\n )}\n disabled={loading || props.disabled}\n aria-describedby={describedBy}\n {...props}\n ref={ref}\n >\n {loading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-3 w-3 animate-spin rounded-full border-2 border-muted border-t-primary\" />\n </div>\n ) : null}\n\n <SwitchPrimitives.Thumb className={cn(switchThumbVariants({ size }))} />\n </SwitchPrimitives.Root>\n {rightIcon && <span className=\"text-muted-foreground\">{rightIcon}</span>}\n {description && (\n <span id={descriptionId} className=\"text-sm text-muted-foreground\">\n {description}\n </span>\n )}\n </div>\n )\n})\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch, switchVariants }\nexport type { SwitchSize, SwitchVariant }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Badge } from \"./badge\";\n\nexport interface TagsInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string[];\n onChange: (tags: string[]) => void;\n maxTags?: number;\n variant?: \"primary\" | \"secondary\" | \"destructive\" | \"outline\";\n allowDuplicates?: boolean;\n delimiter?: string;\n}\n\nconst TagsInput = React.forwardRef<HTMLInputElement, TagsInputProps>(\n (\n {\n value = [],\n onChange,\n maxTags,\n variant = \"primary\",\n allowDuplicates = false,\n delimiter = \",\",\n placeholder = \"Add tag and press Enter\",\n className,\n disabled,\n ...props\n },\n ref\n ) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n const [error, setError] = React.useState(\"\");\n\n // Klavye navigasyonu için hem dışa verilen ref hem iç ref gerekiyor:\n // etiketler arasında gezinirken odağı input'a geri döndürebilmeliyiz.\n const innerInputRef = React.useRef<HTMLInputElement>(null);\n React.useImperativeHandle(ref, () => innerInputRef.current as HTMLInputElement);\n\n const tagButtonRefs = React.useRef<(HTMLButtonElement | null)[]>([]);\n const errorId = React.useId();\n\n const focusTag = (index: number) => {\n if (value.length === 0) return;\n const clamped = Math.max(0, Math.min(value.length - 1, index));\n tagButtonRefs.current[clamped]?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === delimiter) {\n e.preventDefault();\n addTag();\n } else if (e.key === \"Backspace\" && inputValue === \"\" && value.length > 0) {\n removeTag(value.length - 1);\n } else if (e.key === \"ArrowLeft\" && inputValue === \"\" && value.length > 0) {\n // Boş input'ta sola ok → son etikete geç (hedefli silme için giriş noktası).\n e.preventDefault();\n focusTag(value.length - 1);\n }\n };\n\n /**\n * Etiketler arası klavye gezintisi. Önceden etiketlere yalnızca Tab ile\n * ulaşılabiliyor ve hedefli silme yoktu — Backspace her zaman SON etiketi\n * siliyordu, aradaki bir etiketi klavyeyle silmenin yolu yoktu.\n */\n const handleTagKeyDown =\n (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n focusTag(index - 1);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (index >= value.length - 1) innerInputRef.current?.focus();\n else focusTag(index + 1);\n break;\n case \"Home\":\n e.preventDefault();\n focusTag(0);\n break;\n case \"End\":\n e.preventDefault();\n focusTag(value.length - 1);\n break;\n case \"Delete\":\n case \"Backspace\": {\n e.preventDefault();\n const remaining = value.length - 1;\n removeTag(index);\n // Silinenin yerine geçen etikete odaklan; liste bittiyse input'a dön.\n requestAnimationFrame(() => {\n if (remaining > 0) focusTag(Math.min(index, remaining - 1));\n else innerInputRef.current?.focus();\n });\n break;\n }\n default:\n break;\n }\n };\n\n const addTag = () => {\n const tag = inputValue.trim();\n\n if (!tag) return;\n\n if (!allowDuplicates && value.includes(tag)) {\n setError(\"This tag already exists\");\n setTimeout(() => setError(\"\"), 2000);\n return;\n }\n\n if (maxTags && value.length >= maxTags) {\n setError(`Maximum ${maxTags} tags allowed`);\n setTimeout(() => setError(\"\"), 2000);\n return;\n }\n\n onChange([...value, tag]);\n setInputValue(\"\");\n setError(\"\");\n };\n\n const removeTag = (index: number) => {\n if (disabled) return;\n onChange(value.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"relative\">\n <div\n className={cn(\n \"flex items-center min-h-[2.5rem] w-full flex-wrap gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n // NOT: burada `dark:bg-zinc-950/50 dark:border-zinc-800` hardcode'u\n // vardı ve aynı satırdaki `bg-background`/`border-input` token'larını\n // karanlık modda eziyordu. Token'lar zaten dark-mode duyarlı.\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n {value.map((tag, index) => (\n <Badge key={index} variant={variant} className=\"gap-1 pr-1.5\">\n <span className=\"text-xs\">{tag}</span>\n {!disabled && (\n <button\n ref={(el) => {\n tagButtonRefs.current[index] = el;\n }}\n type=\"button\"\n // Buton içeriği yalnızca X ikonu — erişilebilir ad olmadan\n // ekran okuyucu hangi etiketin silineceğini söyleyemez.\n aria-label={`Remove ${tag}`}\n onClick={() => removeTag(index)}\n onKeyDown={handleTagKeyDown(index)}\n className=\"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n <X className=\"h-3 w-3 text-muted-foreground hover:text-foreground transition-colors\" />\n </button>\n )}\n </Badge>\n ))}\n <input\n ref={innerInputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={addTag}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : \"\"}\n // Etiket eklendikçe placeholder kalkıyor; erişilebilir ad olmadan\n // input tamamen adsız kalıyordu. Tüketici kendi aria-label'ını\n // verirse aşağıdaki {...props} yayılımı bunu ezer.\n aria-label=\"Add tag\"\n aria-describedby={error ? errorId : undefined}\n aria-invalid={error ? true : undefined}\n className={cn(\n \"flex-1 bg-transparent outline-none placeholder:text-muted-foreground\",\n \"min-w-[120px]\",\n disabled && \"cursor-not-allowed\"\n )}\n {...props}\n />\n </div>\n {error && (\n <p id={errorId} role=\"status\" className=\"mt-1 text-xs text-destructive\">\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nTagsInput.displayName = \"TagsInput\";\n\nexport { TagsInput };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../lib/utils\"\nimport { Loader2 } from \"lucide-react\"\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Textarea Variant Styles\n */\nconst textareaVariants = cva(\n [\n \"flex w-full rounded-md px-3 py-2 text-sm transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none dark:text-gray-200\",\n \"resize-none\" // Always disable manual resize, we control it\n ],\n {\n variants: {\n variant: {\n default: \"border border-input bg-background dark:bg-gray-800/80 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:shadow-inner dark:shadow-gray-950/10\",\n outline: \"border-2 border-input bg-transparent focus-visible:border-primary dark:focus-visible:border-primary/80\",\n ghost: \"border-none bg-transparent hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary dark:focus-visible:border-primary/80 bg-transparent dark:bg-transparent\"\n },\n size: {\n sm: \"min-h-[60px] text-xs\",\n md: \"min-h-[80px] text-sm\",\n lg: \"min-h-[120px] text-base\"\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\"\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n isError: false,\n isSuccess: false\n }\n }\n)\n\nexport interface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\n Omit<VariantProps<typeof textareaVariants>, \"isError\" | \"isSuccess\"> {\n /** Hata mesajı */\n error?: boolean | string\n /** Başarı mesajı */\n success?: boolean | string\n /** Yükleniyor durumu */\n loading?: boolean\n /** Otomatik yükseklik ayarlama */\n autoResize?: boolean\n /** Maksimum yükseklik (px) */\n maxHeight?: number\n /** Karakter sayacı göster */\n characterCount?: boolean\n /** Wrapper için ek sınıflar */\n wrapperClassName?: string\n /** Mesaj için ek sınıflar */\n messageClassName?: string\n}\n\n/**\n * Advanced Textarea Component\n *\n * Features:\n * - Auto-resize based on content\n * - Character count display\n * - Max height constraint\n * - Multiple variants\n * - Error/Success states\n * - Loading state\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({\n className,\n wrapperClassName,\n messageClassName,\n variant,\n size,\n error,\n success,\n loading,\n autoResize = false,\n maxHeight,\n characterCount = false,\n disabled,\n maxLength,\n value,\n defaultValue,\n onChange,\n ...props\n }, ref) => {\n // Mesaj id'leri `props.id` yoksa sabit string'e düşüyordu -> aynı sayfada\n // iki id'siz Textarea'da yinelenen DOM id'si oluşuyordu.\n const reactId = React.useId()\n const fieldId = props.id || reactId\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n const [internalValue, setInternalValue] = React.useState(value || defaultValue || \"\")\n\n // Merge refs\n React.useImperativeHandle(ref, () => textareaRef.current!)\n\n // Auto-resize logic\n const adjustHeight = React.useCallback(() => {\n const textarea = textareaRef.current\n if (!textarea || !autoResize) return\n\n // Reset height to get correct scrollHeight\n textarea.style.height = 'auto'\n\n // Set new height\n const newHeight = textarea.scrollHeight\n if (maxHeight && newHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`\n textarea.style.overflowY = 'auto'\n } else {\n textarea.style.height = `${newHeight}px`\n textarea.style.overflowY = 'hidden'\n }\n }, [autoResize, maxHeight])\n\n // Adjust height on value change\n React.useEffect(() => {\n adjustHeight()\n }, [internalValue, adjustHeight])\n\n // Handle value changes\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value)\n }\n }, [value])\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }\n\n // Character count\n const currentLength = String(internalValue).length\n const showCharCount = characterCount && (maxLength !== undefined || currentLength > 0)\n\n // Messages\n const errorMessage = typeof error === \"string\" ? error : undefined\n const successMessage = typeof success === \"string\" ? success : undefined\n const showMessage = errorMessage || successMessage\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-1.5 w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <textarea\n ref={textareaRef}\n className={cn(\n textareaVariants({\n variant,\n size,\n isError: !!error,\n isSuccess: !!success\n }),\n loading && \"pr-10\",\n className\n )}\n disabled={disabled || loading}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n maxLength={maxLength}\n aria-invalid={!!error || undefined}\n aria-describedby={\n errorMessage ? `${fieldId}-error` :\n successMessage ? `${fieldId}-success` :\n undefined\n }\n {...props}\n />\n\n {loading && (\n <div className=\"absolute top-3 right-3 text-gray-500\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between\">\n {/* Error/Success Message */}\n {showMessage && (\n <p\n className={cn(\n \"text-xs transition-all\",\n errorMessage && \"text-error\",\n successMessage && \"text-success\",\n messageClassName\n )}\n id={\n errorMessage ? `${fieldId}-error` :\n successMessage ? `${fieldId}-success` :\n undefined\n }\n >\n {errorMessage || successMessage}\n </p>\n )}\n\n {/* Character Count */}\n {showCharCount && (\n <p className=\"text-xs text-muted-foreground dark:text-gray-500 ml-auto\">\n {currentLength}{maxLength !== undefined && ` / ${maxLength}`}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-8 shadow-sm transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n success:\n \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-900/20 dark:text-green-100\",\n warning:\n \"border-orange-200 bg-orange-50 text-orange-900 dark:border-orange-800 dark:bg-orange-900/20 dark:text-orange-100\",\n info:\n \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-900/20 dark:text-blue-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(\"moonui-theme\", toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n {/* İkon-only kapatma düğmesinin erişilebilir bir ismi olmalı (WCAG 4.1.2);\n aynı desen dialog.tsx'teki kapatma düğmesinde de kullanılıyor. */}\n <span className=\"sr-only\">Close</span>\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm font-semibold [&+div]:text-xs\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastData = {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n variant?: ToastProps[\"variant\"];\n duration?: number;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype State = {\n toasts: ToastData[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst reducer = (state: State, action: any): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n default:\n return state;\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\nlet toastCounter = 0;\n\nfunction dispatch(action: any) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToastData, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = `toast-${Date.now()}-${++toastCounter}`;\n\n const update = (props: ToastData) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nfunction Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, open, onOpenChange, ...props }) {\n return (\n <Toast key={id} variant={variant} open={open} onOpenChange={onOpenChange} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n Toaster,\n toast,\n useToast,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Kbd Component\n *\n * Klavye tuşlarını (⌘, Ctrl, K vb.) görsel olarak temsil eden standalone\n * bir rozet bileşeni. Dark ve light modda uyumlu, token tabanlı stiller\n * kullanır ve hafif kabartma/gölge ile fiziksel bir tuş görünümü verir.\n */\nconst kbdVariants = cva(\n [\n // Temel klavye-tuşu görünümü — token tabanlı, hardcoded renk yok\n \"inline-flex items-center justify-center rounded\",\n \"border border-border bg-muted\",\n \"px-1.5 font-mono font-medium text-muted-foreground\",\n // Alt kenarda hafif kabartma (border token'ı ile — [#...] hex sınıfı DEĞİL)\n \"shadow-[0_1px_0_1px_hsl(var(--border))]\",\n \"select-none whitespace-nowrap\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 text-[10px]\",\n md: \"h-6 min-w-6 text-xs\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof kbdVariants> {\n /** Tuş içeriği (⌘, K, Ctrl vb.) */\n children: React.ReactNode;\n}\n\n/**\n * Premium Kbd Component\n *\n * @param props - Kbd bileşeni özellikleri\n * @param props.size - Tuş boyutu (\"sm\" | \"md\")\n * @param props.children - Tuş içeriği (⌘, K, Ctrl vb.)\n */\nconst Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, children, ...props }, ref) => {\n return (\n <kbd\n ref={ref}\n className={cn(\"moonui-theme\", kbdVariants({ size }), className)}\n {...props}\n >\n {children}\n </kbd>\n );\n }\n);\nKbd.displayName = \"Kbd\";\n\nexport { Kbd, kbdVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Star } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Rating Component\n *\n * Standalone yıldız-değerlendirme bileşeni (input + display).\n * Kontrollü/kontrolsüz kullanım, yarım-yıldız hassasiyeti, salt-gösterim modu\n * ve tam klavye erişilebilirliği (radiogroup) sunar. Dark/light modda uyumludur.\n */\n\nconst ratingVariants = cva(\n [\n \"moonui-theme inline-flex items-center rounded-md outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n ],\n {\n variants: {\n size: {\n sm: \"gap-0.5\",\n md: \"gap-1\",\n lg: \"gap-1.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\n// Boyuta göre ikon ölçüsü (yarım-yıldız maskesinin hizalanması için sabit px gerekir)\nconst iconSizeMap: Record<NonNullable<VariantProps<typeof ratingVariants>[\"size\"]>, string> = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n};\n\nexport interface RatingProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof ratingVariants> {\n /** Kontrollü değer (0..max) */\n value?: number;\n /** Kontrolsüz başlangıç değeri */\n defaultValue?: number;\n /** Değer değiştiğinde çağrılır */\n onValueChange?: (value: number) => void;\n /** Yıldız sayısı (varsayılan 5) */\n max?: number;\n /** Salt-gösterim: etkileşim yok, aria-readonly işaretlenir */\n readOnly?: boolean;\n /** Yarım-yıldız desteği (varsayılan \"full\") */\n precision?: \"full\" | \"half\";\n /** Özel ikon (varsayılan lucide Star) */\n icon?: React.ReactNode;\n}\n\n/**\n * Premium Rating Component\n *\n * @param props.value - Kontrollü değer\n * @param props.defaultValue - Kontrolsüz başlangıç değeri\n * @param props.onValueChange - Değer değişim geri çağrımı\n * @param props.max - Yıldız sayısı (varsayılan 5)\n * @param props.readOnly - Salt-gösterim modu\n * @param props.precision - \"full\" | \"half\" hassasiyet\n * @param props.icon - Özel ikon\n * @param props.size - Boyut (sm | md | lg)\n */\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n className,\n value,\n defaultValue,\n onValueChange,\n max = 5,\n readOnly = false,\n precision = \"full\",\n icon,\n size,\n \"aria-label\": ariaLabel = \"Rating\",\n ...props\n },\n ref\n ) => {\n const resolvedSize = size ?? \"md\";\n const iconSizeClass = iconSizeMap[resolvedSize];\n const step = precision === \"half\" ? 0.5 : 1;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<number>(defaultValue ?? 0);\n const currentValue = isControlled ? value ?? 0 : internalValue;\n\n // Hover önizlemesi (geçici doldurma)\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n const displayValue = hoverValue !== null ? hoverValue : currentValue;\n\n // Değeri işle: kontrolsüzde iç state'i güncelle, her durumda geri çağrımı tetikle\n const commit = React.useCallback(\n (next: number) => {\n if (readOnly) return;\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [readOnly, isControlled, onValueChange]\n );\n\n // Klavye: ok-tuşları değeri step kadar artır/azalt, Home/End min/max\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) return;\n let next: number | null = null;\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = Math.min(max, currentValue + step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = Math.max(step, currentValue - step);\n break;\n case \"Home\":\n next = step;\n break;\n case \"End\":\n next = max;\n break;\n default:\n return;\n }\n event.preventDefault();\n commit(next);\n },\n [readOnly, max, currentValue, step, commit]\n );\n\n // İkonu doldurmalı/boş olarak üret (özel ikon desteklenir)\n const renderIcon = (filled: boolean): React.ReactNode => {\n if (React.isValidElement(icon)) {\n const element = icon as React.ReactElement<{ className?: string }>;\n return React.cloneElement(element, {\n className: cn(\n iconSizeClass,\n \"shrink-0\",\n filled && \"fill-current\",\n element.props?.className\n ),\n });\n }\n return (\n <Star\n className={cn(iconSizeClass, \"shrink-0\", filled && \"fill-current\")}\n aria-hidden=\"true\"\n />\n );\n };\n\n const stars = Array.from({ length: max }, (_, index) => index + 1);\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n aria-label={ariaLabel}\n aria-orientation=\"horizontal\"\n aria-readonly={readOnly || undefined}\n tabIndex={readOnly ? undefined : 0}\n onKeyDown={handleKeyDown}\n onMouseLeave={() => setHoverValue(null)}\n className={cn(ratingVariants({ size }), className)}\n {...props}\n >\n {stars.map((starValue) => {\n // Bu yıldızın doluluk oranı (0..1) — yarım yıldız için ondalık olur\n const fraction = Math.max(0, Math.min(1, displayValue - (starValue - 1)));\n const halfValue = starValue - 0.5;\n\n return (\n <span\n key={starValue}\n data-slot=\"rating-star\"\n className={cn(\n \"relative inline-flex shrink-0\",\n !readOnly && \"cursor-pointer\"\n )}\n >\n {/* Boş katman (görsel taban) */}\n <span aria-hidden=\"true\" className=\"inline-flex text-muted-foreground/30\">\n {renderIcon(false)}\n </span>\n\n {/* Dolu katman — overflow-hidden maske ile kısmi doldurma */}\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-0 top-0 h-full overflow-hidden text-amber-400\"\n style={{ width: `${fraction * 100}%` }}\n >\n {renderIcon(true)}\n </span>\n\n {/* Etkileşim katmanı (salt-gösterimde yok) */}\n {!readOnly && precision === \"half\" && (\n <>\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === halfValue}\n aria-label={`${halfValue} stars`}\n tabIndex={-1}\n onClick={() => commit(halfValue)}\n onMouseEnter={() => setHoverValue(halfValue)}\n className=\"absolute inset-y-0 left-0 z-10 w-1/2 cursor-pointer bg-transparent\"\n />\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === starValue}\n aria-label={`${starValue} stars`}\n tabIndex={-1}\n onClick={() => commit(starValue)}\n onMouseEnter={() => setHoverValue(starValue)}\n className=\"absolute inset-y-0 right-0 z-10 w-1/2 cursor-pointer bg-transparent\"\n />\n </>\n )}\n\n {!readOnly && precision === \"full\" && (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === starValue}\n aria-label={`${starValue} ${starValue === 1 ? \"star\" : \"stars\"}`}\n tabIndex={-1}\n onClick={() => commit(starValue)}\n onMouseEnter={() => setHoverValue(starValue)}\n className=\"absolute inset-0 z-10 cursor-pointer bg-transparent\"\n />\n )}\n </span>\n );\n })}\n </div>\n );\n }\n);\n\nRating.displayName = \"Rating\";\n\nexport { Rating, ratingVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Spinner Component\n *\n * Bağımsız (standalone) dönen yükleme göstergesi. Asenkron işlemler\n * sırasında kullanıcıya süregelen bir aktivite olduğunu bildirmek için\n * kullanılır.\n *\n * Erişilebilirlik: `role=\"status\"` + `aria-live=\"polite\"` ile ekran\n * okuyuculara duyurulur; görsel olarak gizli (`sr-only`) `label` metni\n * seslendirilir. `prefers-reduced-motion` açıkken animasyon\n * `motion-reduce:animate-none` ile durdurulur.\n *\n * Renk `currentColor` üzerinden miras alınır; `text-primary`, `text-muted-foreground`\n * gibi metin renk yardımcılarıyla renklendirilir (hardcoded renk yoktur).\n */\n\n// Dönen halka (default) varyantının temel stilleri + boyut eşlemesi\nconst spinnerVariants = cva(\n [\n \"inline-block shrink-0 rounded-full\",\n \"border-current border-t-transparent\",\n \"animate-spin motion-reduce:animate-none\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-4 border-2\", // 16px\n md: \"h-6 w-6 border-2\", // 24px\n lg: \"h-8 w-8 border-[3px]\", // 32px\n xl: \"h-10 w-10 border-4\", // 40px\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\n// Dots varyantı için nokta boyutu eşlemesi (renk `currentColor` ile gelir)\nconst dotSizeMap = {\n sm: \"h-1 w-1\",\n md: \"h-1.5 w-1.5\",\n lg: \"h-2 w-2\",\n xl: \"h-2.5 w-2.5\",\n} as const;\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {\n /**\n * Görsel stil: dönen halka (`default`) veya zıplayan noktalar (`dots`)\n */\n variant?: \"default\" | \"dots\";\n /**\n * Ekran okuyucular için erişilebilir metin (görsel olarak gizli)\n * @default \"Loading\"\n */\n label?: string;\n}\n\n/**\n * Spinner — dönen yükleme göstergesi\n *\n * @param props.size - Gösterge boyutu (`sm` | `md` | `lg` | `xl`)\n * @param props.variant - Görsel stil (`default` halka | `dots` noktalar)\n * @param props.label - Ekran okuyucular için erişilebilir metin (varsayılan \"Loading\")\n */\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant = \"default\", label = \"Loading\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n \"moonui-theme inline-flex items-center justify-center\",\n className\n )}\n {...props}\n >\n {variant === \"dots\" ? (\n <span className=\"inline-flex items-center gap-1\" aria-hidden=\"true\">\n {[0, 1, 2].map((i) => (\n <span\n key={i}\n className={cn(\n \"inline-block rounded-full bg-current\",\n \"animate-bounce motion-reduce:animate-none\",\n dotSizeMap[size ?? \"md\"]\n )}\n style={{ animationDelay: `${i * 0.15}s` }}\n />\n ))}\n </span>\n ) : (\n <span className={cn(spinnerVariants({ size }))} aria-hidden=\"true\" />\n )}\n {/* Görsel olarak gizli erişilebilir metin */}\n <span className=\"sr-only\">{label}</span>\n </div>\n );\n }\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Button, type ButtonProps } from \"./button\";\n\n/**\n * Premium ButtonGroup Component\n *\n * Bitişik (segmentli) veya boşluklu buton grupları için yüksek kaliteli,\n * erişilebilir bir kapsayıcı bileşen. Yatay/dikey yerleşim, bitişik kenar\n * radius birleştirme ve çocuk `<Button>`'lara size/variant yayılımı sunar.\n *\n * Tamamen token-tabanlıdır: kenarlık ve köşe yuvarlama değerleri mevcut Button\n * token'larından gelir; hardcoded renk YOKtur.\n */\nconst buttonGroupVariants = cva(\n // Temel kapsayıcı: inline-flex; çocuklar akış içinde hizalanır\n \"moonui-theme inline-flex\",\n {\n variants: {\n orientation: {\n // Yatay: butonlar dikeyde ortalanır (içerik-genişliği korunur)\n horizontal: \"flex-row items-center\",\n // Dikey: butonlar aynı genişliğe uzar (items-stretch) → kenarlar hizalanır\n vertical: \"flex-col items-stretch\",\n },\n attached: {\n // Bitişik: boşluk yok; radius birleştirme compoundVariants ile uygulanır\n true: \"\",\n // Boşluklu: normal aralık, radius korunur\n false: \"gap-2\",\n },\n },\n compoundVariants: [\n {\n // Yatay + bitişik: bitişik yatay kenarlar düzleşir, -ml-px ile kenarlık örtüşür\n orientation: \"horizontal\",\n attached: true,\n class: [\n \"[&>*:not(:first-child)]:rounded-l-none\",\n \"[&>*:not(:last-child)]:rounded-r-none\",\n \"[&>*:not(:first-child)]:-ml-px\",\n ],\n },\n {\n // Dikey + bitişik: bitişik dikey kenarlar düzleşir, -mt-px ile kenarlık örtüşür\n orientation: \"vertical\",\n attached: true,\n class: [\n \"[&>*:not(:first-child)]:rounded-t-none\",\n \"[&>*:not(:last-child)]:rounded-b-none\",\n \"[&>*:not(:first-child)]:-mt-px\",\n ],\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n attached: true,\n },\n }\n);\n\n// ButtonGroup component props\nexport interface ButtonGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof buttonGroupVariants> {\n /** Çocuk Button'lara yayılacak boyut (yalnızca çocuk kendi size'ını vermemişse) */\n size?: ButtonProps[\"size\"];\n /** Çocuk Button'lara yayılacak varyant (yalnızca çocuk kendi variant'ını vermemişse) */\n variant?: ButtonProps[\"variant\"];\n}\n\n/**\n * Premium ButtonGroup Component\n *\n * @param props - ButtonGroup bileşeni özellikleri\n * @param props.orientation - Yerleşim yönü (\"horizontal\" | \"vertical\"), varsayılan \"horizontal\"\n * @param props.attached - Bitişik (segmentli) mi yoksa boşluklu mu, varsayılan true\n * @param props.size - Çocuk Button'lara yayılacak boyut (opsiyonel)\n * @param props.variant - Çocuk Button'lara yayılacak varyant (opsiyonel)\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n { className, orientation, attached, size, variant, children, ...props },\n ref\n ) => {\n // size/variant yalnızca en az biri tanımlıysa çocuklara enjekte edilir\n const shouldPropagate = size !== undefined || variant !== undefined;\n\n const enhancedChildren = shouldPropagate\n ? React.Children.map(children, (child) => {\n // Geçersiz element (string/number/null) veya Button olmayan çocuklar\n // GRACEFUL geçilir — geçersiz prop enjekte edilmez\n if (!React.isValidElement(child) || child.type !== Button) {\n return child;\n }\n\n const childProps = child.props as ButtonProps;\n\n // Çocuğun kendi prop'u önceliklidir (child.props.size ?? size)\n return React.cloneElement(child as React.ReactElement<ButtonProps>, {\n size: childProps.size ?? size,\n variant: childProps.variant ?? variant,\n });\n })\n : children;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(buttonGroupVariants({ orientation, attached }), className)}\n {...props}\n >\n {enhancedChildren}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\n/**\n * ToggleGroup Component\n *\n * Tek (single) veya çoklu (multiple) seçim destekleyen segmented toggle seti.\n * Radix UI `ToggleGroup` primitive'i üzerine kuruludur; roving-tabindex klavye\n * navigasyonu, tek/çoklu seçim mantığı ve erişilebilirlik rolleri (single için\n * `role=\"radiogroup\"` + item `role=\"radio\"`, multiple için `role=\"toolbar\"` +\n * item `aria-pressed`) Radix tarafından yönetilir — bu davranış yeniden yazılmaz.\n *\n * `variant` ve `size` değerleri bir React context (`ToggleGroupContext`) ile\n * item'lara yayılır (shadcn deseni). Her `ToggleGroupItem`, `Toggle` bileşeniyle\n * görsel parite için `toggleVariants`'i yeniden kullanır — aktif durum\n * `data-[state=on]:bg-accent data-[state=on]:text-accent-foreground` ile stillenir.\n */\n\n// Grup düzeyinde belirlenen variant/size'i item'lara taşıyan context (shadcn deseni).\n// Item, önce context değerini; context tanımsızsa kendi prop'unu kullanır.\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\n// NOT: Radix `ToggleGroup.Root` prop tipi ayrımlı bir union'dır\n// (type=\"single\" → value: string, type=\"multiple\" → value: string[]). Bir `interface`\n// union'ı `extend` edemediğinden burada intersection'lı `type` alias kullanılır — bu,\n// tek/çoklu ayrımını (discriminated union) korur.\nexport type ToggleGroupProps = React.ComponentPropsWithoutRef<\n typeof ToggleGroupPrimitive.Root\n> &\n VariantProps<typeof toggleVariants>\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n ToggleGroupProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\n \"moonui-theme inline-flex items-center justify-center gap-1\",\n // Radix roving-focus kök elemana `data-orientation` yazar; dikey yerleşim\n // buna bağlanır. Yatay/tanımsız durumda taban sınıflar geçerli kalır —\n // yani mevcut render değişmez. Kardeş `button-group` ile desen paritesi.\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch data-[orientation=vertical]:justify-start\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n))\n\nToggleGroup.displayName = \"ToggleGroup\"\n\nexport interface ToggleGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n VariantProps<typeof toggleVariants> {}\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n ToggleGroupItemProps\n>(({ className, children, variant, size, ...props }, ref) => {\n // Grup context'i varsa onun değeri, yoksa item'ın kendi prop'u geçerli olur.\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant ?? variant,\n size: context.size ?? size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\n\nToggleGroupItem.displayName = \"ToggleGroupItem\"\n\nexport { ToggleGroup, ToggleGroupItem }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/accordion.tsx","../src/lib/utils.ts","../src/components/ui/alert.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/avatar.tsx","../src/components/ui/badge.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/button.tsx","../src/components/ui/card.tsx","../src/lib/micro-interactions.ts","../src/components/ui/calendar.tsx","../src/components/ui/card-input.tsx","../src/components/ui/carousel.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/color-picker.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/popover.tsx","../src/components/ui/tabs.tsx","../src/components/ui/slider.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/data-table-basic.tsx","../src/components/ui/table.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/draggable-list.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/file-upload.tsx","../src/components/ui/progress.tsx","../src/components/ui/gesture-drawer.tsx","../src/components/ui/github-stars.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/locked-component.tsx","../src/components/ui/moon-logo.tsx","../src/components/ui/pagination.tsx","../src/components/ui/phone-input.tsx","../src/components/ui/select.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/rich-text-editor/index.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/scroll-reveal.tsx","../src/components/ui/separator.tsx","../src/components/ui/simple-editor.tsx","../src/components/ui/toggle.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/swipeable-card.tsx","../src/components/ui/switch.tsx","../src/components/ui/tags-input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/toast.tsx","../src/components/ui/kbd.tsx","../src/components/ui/rating.tsx","../src/components/ui/spinner.tsx","../src/components/ui/button-group.tsx","../src/components/ui/toggle-group.tsx"],"names":["React","jsx","jsxs","Icon","cva","ChevronRight","days","format","Check","ChevronDown","Loader2","Fragment","value","min","max","motion","Palette","Pipette","p","q","X","ChevronLeft","Search","AnimatePresence","pageTransitions","DatePicker","DateRangePicker","DateTimePicker","MonthPicker","useCallback","useState","AlertCircle","error","useEffect","isDevelopment","MoreHorizontal","Circle","RadioGroup","animate","Separator","List","ImageIcon","Eye","ColorPicker","selection","toast","props","Star"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"moonui-theme\", \"border-b border-gray-200 dark:border-gray-800\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all dark:text-gray-100\",\n \"hover:underline hover:text-primary dark:hover:text-primary-400\",\n \"[&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200 opacity-70 group-hover:opacity-100\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className={cn(\n \"overflow-hidden text-sm text-gray-700 dark:text-gray-300 transition-all\", \n \"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\",\n className\n )}\n {...props}\n >\n <div className=\"pb-4 pt-0\">{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","import * as React from \"react\";\nimport { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n/**\n * React children'ından okunabilir düz metin çıkarır.\n *\n * NEDEN (#298): Yalnız ikon içeren kaldırma düğmelerine SABİT bir aria-label\n * veriliyordu (\"Remove badge\"). Bu bileşenler liste hâlinde kullanıldığı için\n * ekran okuyucu kullanıcısı aynı adı defalarca duyup hangi öğeyi kaldıracağını\n * ayırt edemiyordu (WCAG 4.1.2). Ad artık öğenin görünen içeriğinden türetilir.\n *\n * string / number / dizi / iç içe element'i gezer; çıkaramazsa \"\" döner ve\n * çağıran taraf kendi geri düşüşünü uygular.\n */\nexport function readableText(node: React.ReactNode): string {\n if (node === null || node === undefined || typeof node === \"boolean\") return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) {\n return node.map(readableText).filter(Boolean).join(\" \").trim();\n }\n if (React.isValidElement(node)) {\n const props = node.props as { children?: React.ReactNode };\n return readableText(props.children);\n }\n return \"\";\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { AlertCircle, AlertTriangle, Info, Check, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Alert Component\n *\n * Yüksek kaliteli, özelleştirilebilir ve erişilebilir alert bileşeni.\n * Bildirim, uyarı ve dikkat çekmek gereken içerikler için kullanılır.\n */\n\nconst alertVariants = cva(\n \"relative w-full flex items-center gap-3 p-4 border text-foreground [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground border-border\",\n primary: \"bg-primary/10 text-primary border-primary/30\",\n success: \"bg-success/10 text-success border-success/30\",\n warning: \"bg-warning/10 text-warning border-warning/30\",\n error: \"bg-destructive/10 text-destructive border-destructive/30\",\n // `--info` token'ı (tokens.css) blue-500 ile birebir aynı değeri\n // taşır → görsel değişiklik yok, ancak varyant artık temaya ve\n // karanlık moda duyarlı. Kardeş varyantlarla simetrik.\n info: \"bg-info/10 text-info border-info/30\",\n },\n size: {\n sm: \"py-2 text-xs\",\n default: \"py-3 text-sm\",\n lg: \"py-4 text-base\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n withClose: {\n true: \"pr-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n withClose: false,\n },\n }\n);\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n /** Alert ikonunu gizler */\n hideIcon?: boolean;\n /** Kapatma butonu ekler */\n closable?: boolean;\n /** Kapatma butonu tıklandığında çalışacak fonksiyon */\n onClose?: () => void;\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant = \"default\",\n size,\n radius,\n hideIcon = false,\n closable = false,\n onClose,\n children,\n ...props\n },\n ref\n ) => {\n // Alert türüne göre ikon belirleme\n const Icon = React.useMemo(() => {\n switch (variant) {\n case \"success\":\n return Check;\n case \"warning\":\n return AlertTriangle;\n case \"error\":\n return AlertCircle;\n case \"info\":\n return Info;\n default:\n return Info;\n }\n }, [variant]);\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n \"moonui-theme\",\n alertVariants({\n variant,\n size,\n radius,\n withClose: closable,\n }),\n className\n )}\n {...props}\n >\n {!hideIcon && <Icon className=\"h-5 w-5\" />}\n <div className=\"flex-1\">{children}</div>\n {closable && onClose && (\n <button\n onClick={onClose}\n className=\"absolute right-3 top-3 inline-flex h-6 w-6 items-center justify-center rounded-full opacity-70 transition-opacity hover:opacity-100\"\n aria-label=\"Close alert\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"font-semibold leading-tight tracking-tight mb-1\",\n className\n )}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"text-sm leading-5 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Aspect Ratio Component\n * \n * A component that maintains a specific aspect ratio for content.\n * Particularly useful for images, videos, and media content in responsive designs.\n * Fully integrated with the theme system, accessible and customizable.\n */\n\nconst aspectRatioVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n // `variant` yalnız yüzey/kenarlık eksenini yönetir. Önceden her varyant\n // ayrıca `rounded-md` taşıyordu ve `radius` ekseniyle çakışıyordu\n // (aynı anda iki `rounded-*` sınıfı üretiliyordu). Köşe yuvarlaması artık\n // TEK kaynaktan: `radius`.\n variant: {\n default: \"bg-muted/10\",\n ghost: \"bg-transparent\",\n outline: \"border border-border\",\n card: \"bg-card shadow-sm\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n // Önceki davranış korunur: her varyant `rounded-md` taşıyordu.\n radius: \"md\",\n },\n }\n)\n\ninterface AspectRatioProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof aspectRatioVariants> {\n /**\n * Aspect ratio (width/height). For example 16/9, 4/3, 1/1 etc.\n * @default 16/9\n */\n ratio?: number\n}\n\nconst AspectRatio = React.forwardRef<\n HTMLDivElement,\n AspectRatioProps\n>(({ className, variant, radius, ratio = 16 / 9, style, children, ...props }, ref) => (\n <div\n ref={ref} \n className={cn(\"moonui-theme\", aspectRatioVariants({ variant, radius }), className)}\n style={{\n position: \"relative\",\n paddingBottom: `${(1 / ratio) * 100}%`,\n ...style\n }}\n {...props}\n >\n <div className=\"absolute inset-0\">\n {children}\n </div>\n </div>\n))\nAspectRatio.displayName = \"AspectRatio\"\n\nexport { AspectRatio, aspectRatioVariants }\nexport type { AspectRatioProps }\n","\"use client\"\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n },\n variant: {\n default: \"\",\n ring: \"ring-2 ring-border\",\n ringOffset: \"ring-2 ring-border ring-offset-2 ring-offset-background\",\n border: \"border-2 border-border\"\n }\n },\n defaultVariants: {\n size: \"default\",\n radius: \"default\",\n variant: \"default\"\n },\n }\n);\n\nexport interface AvatarProps \n extends React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>,\n VariantProps<typeof avatarVariants> {}\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n AvatarProps\n>(({ className, size, radius, variant, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", avatarVariants({ size, radius, variant }), className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"moonui-theme\", \"aspect-square h-full w-full\", className)}\n {...props}\n />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted\",\n className\n )}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\n// Avatar Group Component for displaying multiple avatars\n//\n// KIRICI (issue #260): prop sözleşmesi `limit`/`avatars: ReactNode[]` idi;\n// pro paketteki kardeşi (`MoonUIAvatarGroupPro`) ise `max`/`children` kullanıyordu\n// — aynı bileşen ailesi için iki farklı API. Standart React deseni (children)\n// kanonik kabul edilip free tarafı pro'ya hizalandı.\n//\n// Geçiş: <AvatarGroup limit={3} avatars={[<Avatar/>, <Avatar/>]} />\n// → <AvatarGroup max={3}><Avatar/><Avatar/></AvatarGroup>\nexport interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Gösterilecek en fazla avatar sayısı; kalanlar \"+N\" olarak özetlenir. */\n max?: number;\n /** Avatar bileşenleri. */\n children?: React.ReactNode;\n /** Avatar'lar arası üst üste binme miktarı (px, negatif). */\n overlapOffset?: number;\n}\n\nconst AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ className, max, children, overlapOffset = -8, ...props }, ref) => {\n const childrenArray = React.Children.toArray(children);\n const visibleAvatars = max ? childrenArray.slice(0, max) : childrenArray;\n const remainingCount = max ? Math.max(0, childrenArray.length - max) : 0;\n\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex items-center\", className)}\n {...props}\n >\n <div className=\"flex\">\n {visibleAvatars.map((avatar, index) => (\n <div \n key={index} \n className=\"relative\"\n style={{ \n marginLeft: index === 0 ? 0 : `${overlapOffset}px`,\n zIndex: visibleAvatars.length - index \n }}\n >\n {avatar}\n </div>\n ))}\n {remainingCount > 0 && (\n <div \n className=\"relative z-0\"\n style={{ marginLeft: `${overlapOffset}px` }}\n >\n <Avatar variant=\"border\">\n <AvatarFallback>\n +{remainingCount}\n </AvatarFallback>\n </Avatar>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\nAvatarGroup.displayName = \"AvatarGroup\";\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn, readableText } from \"../../lib/utils\";\n\n/**\n * Premium Badge Component\n * \n * Durum, kategori ve etiketleme için yüksek kaliteli badge bileşeni.\n * Dark ve light modda uyumlu, erişilebilir ve çeşitli varyantlar sunar.\n */\n\nconst badgeVariants = cva(\n [\"inline-flex items-center justify-center gap-1.5\", \n \"font-medium transition-colors duration-200\", \n \"border focus:outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-offset-1\",\n // Auto spacing between badges\n \"mr-2 mb-2 last:mr-0\"],\n {\n variants: {\n variant: {\n // KIRICI (issue #261): önceden ham `gray-900`/`white` kullanılıyordu;\n // aynı varyant pro pakette token'lıydı → free ve pro `primary` için\n // farklı renk üretiyordu. Artık token'a bağlı (tema/karanlık moda duyarlı).\n // `primary` VARSAYILAN varyant olduğu için görünür bir renk değişimidir.\n primary: [\n \"border-transparent bg-primary text-primary-foreground\",\n \"hover:bg-primary/90\",\n \"focus-visible:ring-primary/30 dark:focus-visible:ring-primary/40\",\n \"dark:bg-primary/90 dark:shadow-inner dark:shadow-primary/10\",\n ],\n secondary: [\n \"border-transparent bg-secondary text-secondary-foreground\",\n \"hover:bg-gray-200 dark:hover:bg-gray-600\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:bg-gray-700/50 dark:text-gray-50 dark:shadow-inner dark:shadow-gray-950/10\",\n ],\n outline: [\n \"border-gray-200 dark:border-gray-600\",\n \"bg-transparent text-foreground\",\n \"hover:border-gray-300 dark:hover:border-gray-500\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:text-gray-100 dark:bg-transparent dark:backdrop-blur-sm\",\n ],\n destructive: [\n \"border-transparent bg-error text-white\",\n \"hover:bg-error/90 dark:hover:bg-error/80\",\n \"focus-visible:ring-error/30 dark:focus-visible:ring-error/25\",\n \"dark:bg-error/90 dark:text-white dark:shadow-inner dark:shadow-error/10\",\n ],\n success: [\n \"border-transparent bg-success text-success-foreground\",\n \"hover:bg-success/90 dark:hover:bg-success/80\",\n \"focus-visible:ring-success/30 dark:focus-visible:ring-success/25\",\n \"dark:bg-success/90 dark:text-success-foreground dark:shadow-inner dark:shadow-success/10\",\n ],\n warning: [\n \"border-transparent bg-warning text-warning-foreground\",\n \"hover:bg-warning/90 dark:hover:bg-warning/80\",\n \"focus-visible:ring-warning/30 dark:focus-visible:ring-warning/25\",\n \"dark:bg-warning/90 dark:text-warning-foreground dark:shadow-inner dark:shadow-warning/10\",\n ],\n ghost: [\n \"border border-gray-200 bg-gray-50/50 text-gray-700\",\n \"hover:bg-gray-100 dark:hover:bg-gray-800/60\",\n \"focus-visible:ring-gray-400/30 dark:focus-visible:ring-gray-500/40\",\n \"dark:border-gray-700 dark:bg-gray-800/30 dark:text-gray-300\",\n \"transition-all duration-200\",\n ],\n pro: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\",\n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n admin: [\n \"border-transparent bg-gradient-to-r from-purple-600 to-pink-600 text-white\",\n \"hover:from-purple-700 hover:to-pink-700\", \n \"focus-visible:ring-purple-400/30 dark:focus-visible:ring-purple-500/40\",\n \"shadow-md dark:shadow-lg dark:shadow-purple-500/10\",\n ],\n },\n size: {\n sm: \"h-5 px-2 text-xs\",\n md: \"h-6 px-3 text-sm\",\n lg: \"h-8 px-4 text-base\",\n },\n radius: {\n default: \"rounded-full\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n none: \"rounded-none\",\n }\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof badgeVariants>, 'variant'> {\n withDot?: boolean;\n dotColor?: string;\n removable?: boolean;\n onRemove?: () => void;\n /**\n * Kaldırma düğmesinin erişilebilir adı için açık değer.\n * Verilmezse ad rozetin görünen içeriğinden türetilir; içerik metne\n * çevrilemiyorsa (ör. yalnız ikon) \"Remove badge\"e düşülür. (#298)\n */\n removeLabel?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'ghost' | 'pro' | 'admin';\n /** Disable automatic spacing between badges */\n noAutoSpacing?: boolean;\n}\n\n/**\n * Premium Badge Component\n * \n * @param props - Badge bileşeni özellikleri\n * @param props.variant - Badgenin görsel varyantı\n * @param props.size - Badge boyutu\n * @param props.radius - Köşe yuvarlama stili\n * @param props.withDot - Başında nokta gösterimi\n * @param props.dotColor - Noktanın rengi (özel)\n * @param props.removable - Kaldırılabilir badge (X simgesi ile)\n * @param props.onRemove - Kaldırma işlevi\n * @param props.leftIcon - Badge'in solunda görüntülenecek ikon\n * @param props.rightIcon - Badge'in sağında görüntülenecek ikon\n * @param props.noAutoSpacing - Otomatik spacing'i devre dışı bırak\n */\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(({\n className,\n variant,\n size,\n radius,\n withDot,\n dotColor,\n removable,\n onRemove,\n removeLabel,\n leftIcon,\n rightIcon,\n noAutoSpacing,\n children,\n ...props\n}, ref) => {\n // Auto-assign icons and content for special variants\n let autoLeftIcon = leftIcon;\n let autoChildren = children;\n \n if (variant === 'pro') {\n // Auto Sparkles icon for pro\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 0L13.09 8.26L22 9L13.09 9.74L12 18L10.91 9.74L2 9L10.91 8.26L12 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 5L19.5 7L21 7.5L19.5 8L19 10L18.5 8L17 7.5L18.5 7L19 5Z\" fill=\"currentColor\"/>\n <path d=\"M19 15L19.5 17L21 17.5L19.5 18L19 20L18.5 18L17 17.5L18.5 17L19 15Z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Pro';\n }\n \n if (variant === 'admin') {\n // Auto CheckCircle icon for admin\n autoLeftIcon = leftIcon || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"w-3 h-3\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" fill=\"currentColor\"/>\n </svg>\n );\n autoChildren = children || 'Admin Pro';\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"moonui-theme\",\n badgeVariants({ variant, size, radius }),\n // Remove auto-spacing if noAutoSpacing is true\n noAutoSpacing && \"mr-0 mb-0\",\n className\n )}\n data-removable={removable ? \"\" : undefined}\n {...props}\n >\n {withDot && (\n <span \n className={cn(\n \"h-2 w-2 rounded-full\", \n dotColor || \n (variant === \"destructive\" ? \"bg-white\" :\n variant === \"success\" ? \"bg-white\" :\n variant === \"warning\" ? \"bg-white\" :\n variant === \"secondary\" ? \"bg-secondary-foreground\" :\n variant === \"outline\" ? \"bg-foreground\" :\n variant === \"ghost\" ? \"bg-foreground\" :\n variant === \"pro\" ? \"bg-white\" :\n variant === \"admin\" ? \"bg-white\" :\n \"bg-primary-foreground\")\n )} \n aria-hidden=\"true\"\n />\n )}\n {autoLeftIcon && (\n <span className=\"inline-flex shrink-0 items-center\">\n {autoLeftIcon}\n </span>\n )}\n <span className=\"inline-flex items-center\">{autoChildren}</span>\n {rightIcon && (\n <span className=\"inline-flex shrink-0 items-center\">\n {rightIcon}\n </span>\n )}\n {removable && onRemove && (\n <button \n type=\"button\"\n className=\"ml-1 -mr-1 h-3.5 w-3.5 rounded-full inline-flex items-center justify-center hover:bg-black/10 dark:hover:bg-white/10\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n /* #298: SABİT ad (\"Remove badge\") liste hâlindeki rozetlerde hangi\n öğenin kaldırılacağını ayırt ettirmiyordu (WCAG 4.1.2). Ad önce\n açık prop'tan, sonra görünen içerikten türetilir. */\n aria-label={removeLabel || (readableText(autoChildren) ? `Remove ${readableText(autoChildren)}` : \"Remove badge\")}\n >\n <svg \n width=\"8\" \n height=\"8\" \n viewBox=\"0 0 8 8\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"opacity-70\"\n aria-hidden=\"true\"\n >\n <path d=\"M0.799988 7.19999L7.19999 0.799988M0.799988 0.799988L7.19999 7.19999\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n )}\n </div>\n );\n});\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst breadcrumbVariants = cva(\n \"flex items-center gap-1.5 text-sm\",\n {\n variants: {\n variant: {\n default: \"text-foreground transition-colors\",\n muted: \"text-muted-foreground transition-colors\",\n ghost: \"text-foreground/60 transition-colors\",\n },\n size: {\n default: \"text-sm\",\n sm: \"text-xs\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\ninterface BreadcrumbProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof breadcrumbVariants> {\n separator?: React.ReactNode;\n showHomeIcon?: boolean;\n}\n\ninterface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {\n collapsed?: boolean;\n collapsedWidth?: number;\n}\n\ninterface BreadcrumbItemProps extends React.HTMLAttributes<HTMLLIElement> {\n isCurrent?: boolean;\n href?: string;\n asChild?: boolean;\n}\n\ninterface BreadcrumbSeparatorProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom separator icon or text */\n icon?: React.ReactNode;\n}\n\ninterface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Custom ellipsis icon */\n icon?: React.ReactNode;\n}\n\nconst Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n ({ className, variant, size, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn(\"moonui-theme\", breadcrumbVariants({ variant, size }), className)}\n aria-label=\"breadcrumb\"\n {...props}\n />\n )\n);\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n ({ className, collapsed, collapsedWidth = 3, ...props }, ref) => {\n const childrenArray = React.Children.toArray(props.children).filter(Boolean);\n const childCount = childrenArray.length;\n\n if (collapsed && childCount > collapsedWidth) {\n const firstItem = childrenArray[0];\n // const middleItems = childrenArray.slice(1, -2); // Uncomment when needed\n const lastTwoItems = childrenArray.slice(-2);\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n >\n {firstItem}\n <BreadcrumbEllipsis />\n {lastTwoItems}\n </ol>\n );\n }\n\n return (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 sm:gap-2.5\",\n className\n )}\n {...props}\n />\n );\n }\n);\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, isCurrent, href, asChild = false, ...props }, ref) => {\n const Comp = asChild ? React.Fragment : href ? \"a\" : \"span\";\n const itemProps = asChild ? {} : href ? { href } : {};\n\n return (\n <li\n ref={ref}\n className={cn(\"moonui-theme\", \"inline-flex items-center gap-1.5\", className)}\n aria-current={isCurrent ? \"page\" : undefined}\n {...props}\n >\n <Comp \n className={cn(\n \"transition-colors duration-200 hover:text-foreground\",\n isCurrent \n ? \"font-medium text-foreground\" \n : \"text-muted-foreground hover:text-foreground hover:underline hover:underline-offset-4 hover:decoration-muted-foreground/30\"\n )}\n {...itemProps}\n >\n {props.children}\n </Comp>\n </li>\n );\n }\n);\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: BreadcrumbSeparatorProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"moonui-theme\", \"text-muted-foreground opacity-70\", className)}\n {...props}\n >\n {children || <ChevronRight className=\"h-3.5 w-3.5\" />}\n </span>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: BreadcrumbEllipsisProps) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"moonui-theme\", \"flex items-center text-muted-foreground hover:text-foreground/80 transition-colors duration-200\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, React.AnchorHTMLAttributes<HTMLAnchorElement>>(\n ({ className, href, ...props }, ref) => (\n <a\n ref={ref}\n href={href}\n className={cn(\n \"transition-colors duration-200 hover:text-foreground text-muted-foreground hover:underline hover:underline-offset-4 hover:decoration-muted-foreground/30\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n \"font-medium text-foreground dark:text-white dark:text-opacity-95\",\n className\n )}\n {...props}\n />\n )\n);\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Button Component\n * \n * A world-class, accessible, and versatile button component.\n * Pixel-perfect design with extensive variants and states.\n */\nconst buttonVariants = cva(\n [\"inline-flex items-center justify-center gap-2 whitespace-nowrap\",\n \"font-medium relative\",\n \"transition-all duration-200 ease-out\",\n \"transform active:scale-[0.98]\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none disabled:transform-none\"],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-primary-foreground\",\n \"dark:bg-primary dark:text-primary-foreground\",\n \"hover:bg-primary/90 dark:hover:bg-primary/90\",\n \"active:bg-primary/80 dark:active:bg-primary/80\",\n \"shadow-sm hover:shadow-md\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n secondary: [\n \"bg-gray-100 text-gray-900\",\n \"dark:bg-gray-800 dark:text-gray-100\",\n \"hover:bg-gray-200 dark:hover:bg-gray-700\",\n \"active:bg-gray-300 dark:active:bg-gray-600\",\n \"border border-input\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"shadow-sm hover:shadow-md\",\n ],\n outline: [\n \"bg-background text-foreground\",\n \"dark:bg-background dark:text-foreground\",\n \"border border-input dark:border-input\",\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent dark:hover:text-accent-foreground\",\n \"active:bg-accent/80 dark:active:bg-accent/80\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n ghost: [\n \"text-gray-700\",\n \"dark:text-gray-300\",\n \"hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-gray-800 dark:hover:text-gray-100\",\n \"active:bg-gray-200 dark:active:bg-gray-700\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n destructive: [\n \"bg-destructive text-destructive-foreground\",\n \"dark:bg-destructive dark:text-destructive-foreground\",\n \"hover:bg-destructive/90 dark:hover:bg-destructive/90\",\n \"active:bg-destructive/80 dark:active:bg-destructive/80\",\n \"shadow-sm hover:shadow-md\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n success: [\n \"bg-success text-success-foreground\",\n \"dark:bg-success dark:text-success-foreground\",\n \"hover:bg-success/90 dark:hover:bg-success/90\",\n \"active:bg-success/80 dark:active:bg-success/80\",\n \"shadow-sm hover:shadow-md\", \n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"transition-all duration-200\",\n ],\n link: [\n \"text-primary bg-transparent\",\n \"underline-offset-4 hover:underline\",\n \"hover:text-primary/80 active:text-primary/70\",\n \"p-0 h-auto\",\n \"transition-colors duration-200\",\n ],\n gradient: [\n \"bg-gradient-to-r from-purple-500 to-pink-500 text-white\",\n \"hover:from-purple-600 hover:to-pink-600\",\n \"active:from-purple-700 active:to-pink-700\",\n \"shadow-xl shadow-purple-500/40\",\n \"hover:shadow-2xl hover:shadow-purple-500/50\",\n \"focus-visible:ring-purple-500/50\",\n \"transition-all duration-300\",\n ],\n glow: [\n \"bg-blue-500 text-white\",\n \"shadow-[0_0_30px_rgba(59,130,246,0.5)]\",\n \"hover:shadow-[0_0_40px_rgba(59,130,246,0.7)]\",\n \"active:shadow-[0_0_20px_rgba(59,130,246,0.4)]\",\n \"hover:bg-blue-600\",\n \"focus-visible:ring-blue-500/50\",\n \"transition-all duration-300\",\n ],\n soft: [\n \"bg-primary/10 text-primary\",\n \"hover:bg-primary/20\",\n \"active:bg-primary/30\",\n \"focus-visible:ring-primary/50\",\n \"dark:bg-primary/20 dark:text-primary-foreground\",\n \"dark:hover:bg-primary/30 dark:active:bg-primary/40\",\n \"transition-colors duration-200\",\n ],\n glass: [\n \"bg-white/10 backdrop-blur-md text-foreground\",\n \"border border-white/20\",\n \"hover:bg-white/20 hover:border-white/30\",\n \"active:bg-white/30\",\n \"shadow-lg\",\n \"focus-visible:ring-white/50\",\n \"dark:bg-gray-800/10 dark:border-gray-700/20\",\n \"dark:hover:bg-gray-800/20 dark:hover:border-gray-700/30\",\n \"transition-all duration-200\",\n ],\n neon: [\n \"bg-transparent text-green-400\",\n \"border-2 border-green-400\",\n \"hover:bg-green-400 hover:text-gray-900\",\n \"hover:shadow-[0_0_30px_rgba(74,222,128,0.6)]\",\n \"active:shadow-[0_0_15px_rgba(74,222,128,0.4)]\",\n \"focus-visible:ring-green-400/50\",\n \"transition-all duration-300\",\n ],\n },\n size: {\n xs: \"h-7 px-2.5 text-xs\",\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-6 text-lg\",\n xl: \"h-14 px-8 text-xl\",\n icon: \"h-10 w-10 p-2\",\n \"icon-sm\": \"h-8 w-8 p-1.5\",\n \"icon-lg\": \"h-12 w-12 p-3\",\n },\n rounded: {\n default: \"rounded-xl\",\n full: \"rounded-full\",\n none: \"rounded-none\",\n sm: \"rounded-lg\",\n lg: \"rounded-2xl\",\n },\n fullWidth: {\n true: \"w-full\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n rounded: \"default\",\n fullWidth: false,\n },\n }\n);\n\n// Button component props\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n}\n\n/**\n * Premium Button Component\n * \n * @param props - Button component properties\n * @param props.variant - Visual variant (primary, secondary, ghost, etc.)\n * @param props.size - Button size (xs, sm, md, lg, xl)\n * @param props.loading - Loading state display\n * @param props.leftIcon - Icon on the left side\n * @param props.rightIcon - Icon on the right side\n * @param props.fullWidth - Full width display\n * @param props.rounded - Corner rounding style (default, full, none)\n * @param props.asChild - For Radix UI polymorphic component\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ \n className, \n variant, \n size, \n rounded, \n fullWidth,\n asChild = false,\n loading = false,\n leftIcon,\n rightIcon,\n children,\n disabled,\n ...props \n }, ref) => {\n // Radix UI'ın asChild pattern'i için - \"as\" prop yerine\n const Comp = asChild ? \"button\" : \"button\";\n \n return (\n <Comp\n className={cn(\"moonui-theme\", buttonVariants({ variant, size, rounded, fullWidth, className }))}\n ref={ref}\n disabled={disabled || loading}\n // Görsel spinner + data-loading vardı ama yardımcı teknolojiye meşgul\n // durumu hiç duyurulmuyordu.\n aria-busy={loading || undefined}\n data-loading={loading ? \"\" : undefined}\n {...props}\n >\n {loading && (\n <Loader2 className=\"w-4 h-4 animate-spin\" aria-hidden=\"true\" />\n )}\n {!loading && leftIcon}\n {children}\n {!loading && rightIcon}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, type HTMLMotionProps } from \"framer-motion\";\nimport { cn } from \"../../lib/utils\";\nimport { microInteractionVariants, hoverAnimations, tapAnimations } from \"@/lib/micro-interactions\";\n\nconst cardVariants = cva(\n \"rounded-lg border bg-card text-card-foreground shadow-sm dark:shadow-gray-900/20 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border border-border shadow-none bg-transparent dark:border-gray-700 dark:bg-transparent dark:text-gray-200\",\n filled: \"border-none bg-secondary dark:bg-gray-800 dark:text-gray-100 dark:shadow-inner dark:shadow-gray-950/10\",\n elevated: \"border-none shadow-md dark:shadow-lg dark:shadow-gray-900/30 dark:bg-gray-850 dark:text-gray-100\",\n gradient: \"border-none bg-gradient-to-br from-primary/5 to-primary/10 dark:from-primary/10 dark:to-primary/20\",\n glass: \"border border-white/20 bg-white/10 backdrop-blur-md dark:border-gray-700/30 dark:bg-gray-800/10\",\n },\n size: {\n default: \"\",\n sm: \"\",\n lg: \"\",\n xl: \"\",\n },\n radius: {\n default: \"rounded-lg\",\n sm: \"rounded-md\",\n lg: \"rounded-xl\",\n full: \"rounded-3xl\",\n none: \"rounded-none\",\n },\n interactive: {\n true: \"cursor-pointer hover:shadow-lg hover:border-primary/20 dark:hover:border-primary/30 hover:-translate-y-0.5 active:translate-y-0 active:shadow-sm\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {\n asChild?: boolean;\n microInteraction?: \"lift\" | \"glow\" | \"scale\" | \"none\";\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, radius, interactive, microInteraction = \"lift\", ...props }, ref) => {\n // Interactive özelliği varsa motion.div, yoksa normal div kullan\n if (interactive && microInteraction !== \"none\") {\n const interactionProps = {\n whileHover: microInteraction === \"scale\" ? hoverAnimations.scale : \n microInteraction === \"glow\" ? hoverAnimations.glow : \n hoverAnimations.lift,\n whileTap: tapAnimations.scale,\n };\n \n return (\n <motion.div\n ref={ref}\n className={cn(\"moonui-theme\", cardVariants({ variant, size, radius, interactive, className }))}\n {...interactionProps}\n {...(props as any)}\n />\n );\n }\n \n // Non-interactive version\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", cardVariants({ variant, size, radius, interactive, className }))}\n {...props}\n />\n );\n }\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"moonui-theme\", \"text-lg font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"moonui-theme\", \"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","// MoonUI Micro-interactions System\n// Provides consistent hover, focus, and active states across all components\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\n/**\n * Micro-interaction variants for consistent component behavior\n */\nexport const microInteractionVariants = cva(\"\", {\n variants: {\n hover: {\n lift: [\n \"transition-all duration-200 ease-out\",\n \"hover:-translate-y-0.5\",\n \"hover:shadow-md\",\n ],\n glow: [\n \"transition-all duration-300 ease-out\",\n \"hover:shadow-lg\",\n \"hover:shadow-primary/20\",\n ],\n scale: [\n \"transition-transform duration-200 ease-out\",\n \"hover:scale-105\",\n \"active:scale-95\",\n ],\n brightness: [\n \"transition-all duration-200 ease-out\",\n \"hover:brightness-110\",\n \"active:brightness-95\",\n ],\n border: [\n \"transition-all duration-200 ease-out\",\n \"hover:border-primary/50\",\n ],\n },\n focus: {\n ring: [\n \"focus:outline-none\",\n \"focus-visible:ring-2\",\n \"focus-visible:ring-primary/50\",\n \"focus-visible:ring-offset-2\",\n ],\n glow: [\n \"focus:outline-none\",\n \"focus-visible:shadow-lg\",\n \"focus-visible:shadow-primary/30\",\n ],\n border: [\n \"focus:outline-none\",\n \"focus-visible:border-primary\",\n \"focus-visible:border-2\",\n ],\n },\n active: {\n scale: [\n \"active:scale-95\",\n \"transition-transform duration-100\",\n ],\n darken: [\n \"active:brightness-90\",\n \"transition-all duration-100\",\n ],\n depress: [\n \"active:translate-y-0.5\",\n \"active:shadow-sm\",\n \"transition-all duration-100\",\n ],\n },\n cursor: {\n pointer: \"cursor-pointer\",\n grab: \"cursor-grab active:cursor-grabbing\",\n text: \"cursor-text\",\n wait: \"cursor-wait\",\n help: \"cursor-help\",\n notAllowed: \"cursor-not-allowed\",\n },\n },\n defaultVariants: {\n hover: \"lift\",\n focus: \"ring\",\n active: \"scale\",\n cursor: \"pointer\",\n },\n});\n\n/**\n * Spring animation configurations\n */\nexport const springAnimations = {\n // Smooth spring for general use\n smooth: {\n type: \"spring\",\n stiffness: 260,\n damping: 20,\n },\n // Bouncy spring for playful interactions\n bouncy: {\n type: \"spring\",\n stiffness: 300,\n damping: 15,\n },\n // Stiff spring for quick responses\n stiff: {\n type: \"spring\",\n stiffness: 400,\n damping: 25,\n },\n // Gentle spring for subtle movements\n gentle: {\n type: \"spring\",\n stiffness: 150,\n damping: 15,\n },\n};\n\n/**\n * Hover animation presets\n */\nexport const hoverAnimations = {\n lift: {\n y: -2,\n transition: springAnimations.smooth,\n },\n scale: {\n scale: 1.05,\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 20px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n rotate: {\n rotate: 2,\n transition: springAnimations.bouncy,\n },\n};\n\n/**\n * Tap/Click animation presets\n */\nexport const tapAnimations = {\n scale: {\n scale: 0.95,\n transition: { duration: 0.1 },\n },\n depress: {\n y: 1,\n transition: { duration: 0.1 },\n },\n};\n\n/**\n * Focus animation presets\n */\nexport const focusAnimations = {\n ring: {\n boxShadow: \"0 0 0 2px var(--background), 0 0 0 4px var(--primary)\",\n transition: springAnimations.smooth,\n },\n glow: {\n boxShadow: \"0 0 0 3px rgba(var(--primary), 0.3)\",\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Stagger animation for lists\n */\nexport const staggerAnimation = {\n container: {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n },\n item: {\n hidden: { opacity: 0, y: 20 },\n show: { \n opacity: 1, \n y: 0,\n transition: springAnimations.smooth,\n },\n },\n};\n\n/**\n * Page transition animations\n */\nexport const pageTransitions = {\n fadeIn: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3 },\n },\n slideUp: {\n initial: { opacity: 0, y: 20 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -20 },\n transition: springAnimations.smooth,\n },\n slideRight: {\n initial: { opacity: 0, x: -20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 20 },\n transition: springAnimations.smooth,\n },\n scale: {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 1.05 },\n transition: springAnimations.smooth,\n },\n};\n\n/**\n * Skeleton loading animation\n */\nexport const skeletonAnimation = {\n initial: { opacity: 0.5 },\n animate: {\n opacity: [0.5, 0.8, 0.5],\n transition: {\n duration: 1.5,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n },\n },\n};\n\n/**\n * Tooltip animation\n */\nexport const tooltipAnimation = {\n initial: { opacity: 0, scale: 0.95 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0.95 },\n transition: { duration: 0.15 },\n};\n\n/**\n * Notification animation\n */\nexport const notificationAnimation = {\n initial: { opacity: 0, y: -20, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, scale: 0.95, transition: { duration: 0.15 } },\n transition: springAnimations.bouncy,\n};\n\nexport type MicroInteractionProps = VariantProps<typeof microInteractionVariants>;\n\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { buttonVariants } from \"./button\";\nimport { \n format, \n startOfMonth, \n endOfMonth, \n eachDayOfInterval, \n getDay, \n isSameMonth, \n isSameDay,\n isToday,\n addMonths,\n subMonths,\n startOfWeek,\n endOfWeek\n} from \"date-fns\";\n\nexport interface CalendarProps {\n mode?: \"single\" | \"range\" | \"multiple\";\n selected?: Date | Date[] | { from?: Date; to?: Date } | undefined;\n onSelect?: (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => void;\n disabled?: (date: Date) => boolean;\n showOutsideDays?: boolean;\n className?: string;\n classNames?: Record<string, string>;\n numberOfMonths?: number;\n defaultMonth?: Date;\n initialFocus?: boolean;\n}\n\nfunction Calendar({\n mode = \"single\",\n selected,\n onSelect,\n disabled,\n showOutsideDays = false,\n className,\n classNames,\n numberOfMonths = 1,\n defaultMonth,\n ...props\n}: CalendarProps) {\n const [currentMonth, setCurrentMonth] = React.useState(\n defaultMonth || (selected && (selected as Date)) || new Date()\n );\n\n const weekDays = [\n { short: \"S\", full: \"Sunday\" },\n { short: \"M\", full: \"Monday\" },\n { short: \"T\", full: \"Tuesday\" },\n { short: \"W\", full: \"Wednesday\" },\n { short: \"T\", full: \"Thursday\" },\n { short: \"F\", full: \"Friday\" },\n { short: \"S\", full: \"Saturday\" }\n ];\n\n const handlePreviousMonth = () => {\n setCurrentMonth(subMonths(currentMonth, 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(addMonths(currentMonth, 1));\n };\n\n const handleDateClick = (date: Date) => {\n if (disabled?.(date)) return;\n\n if (mode === \"single\") {\n onSelect?.(date);\n } else if (mode === \"range\") {\n const currentSelection = selected as { from?: Date; to?: Date } | undefined;\n if (!currentSelection?.from || (currentSelection.from && currentSelection.to)) {\n onSelect?.({ from: date, to: undefined });\n } else {\n if (date < currentSelection.from) {\n onSelect?.({ from: date, to: currentSelection.from });\n } else {\n onSelect?.({ from: currentSelection.from, to: date });\n }\n }\n }\n };\n\n const isDateSelected = (date: Date) => {\n if (!selected) return false;\n \n if (mode === \"single\") {\n return isSameDay(date, selected as Date);\n } else if (mode === \"range\") {\n const range = selected as { from?: Date; to?: Date };\n if (range.from && range.to) {\n return date >= range.from && date <= range.to;\n }\n return range.from ? isSameDay(date, range.from) : false;\n }\n return false;\n };\n\n const isRangeStart = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.from ? isSameDay(date, range.from) : false;\n };\n\n const isRangeEnd = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n return range.to ? isSameDay(date, range.to) : false;\n };\n\n const isRangeMiddle = (date: Date) => {\n if (mode !== \"range\" || !selected) return false;\n const range = selected as { from?: Date; to?: Date };\n if (!range.from || !range.to) return false;\n return date > range.from && date < range.to;\n };\n\n const getDaysInMonth = () => {\n const start = startOfMonth(currentMonth);\n const end = endOfMonth(currentMonth);\n const days = eachDayOfInterval({ start, end });\n \n // Get days from previous month to fill the first week\n const firstDayOfWeek = getDay(start);\n const previousMonthDays = [];\n if (firstDayOfWeek > 0 && showOutsideDays) {\n const previousMonthStart = startOfWeek(start);\n const previousMonthEnd = new Date(start);\n previousMonthEnd.setDate(previousMonthEnd.getDate() - 1);\n previousMonthDays.push(...eachDayOfInterval({ \n start: previousMonthStart, \n end: previousMonthEnd \n }));\n }\n \n // Get days from next month to fill the last week\n const lastDayOfWeek = getDay(end);\n const nextMonthDays = [];\n if (lastDayOfWeek < 6 && showOutsideDays) {\n const nextMonthStart = new Date(end);\n nextMonthStart.setDate(nextMonthStart.getDate() + 1);\n const nextMonthEnd = endOfWeek(end);\n nextMonthDays.push(...eachDayOfInterval({ \n start: nextMonthStart, \n end: nextMonthEnd \n }));\n }\n \n // Add empty cells for the first week if not showing outside days\n const emptyCells = [];\n if (!showOutsideDays && firstDayOfWeek > 0) {\n for (let i = 0; i < firstDayOfWeek; i++) {\n emptyCells.push(null);\n }\n }\n \n return [...previousMonthDays, ...emptyCells, ...days, ...nextMonthDays];\n };\n\n const days = getDaysInMonth();\n\n return (\n <div className={cn(\"moonui-theme\", \"p-0\", className)}>\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-border/50 dark:border-gray-700/50\">\n <button\n onClick={handlePreviousMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronLeft className=\"h-5 w-5\" />\n </button>\n \n <h2 className=\"text-base font-medium\">\n {format(currentMonth, \"MMMM yyyy\")}\n </h2>\n \n <button\n onClick={handleNextMonth}\n className={cn(\n \"h-10 w-10 bg-transparent p-0 rounded-lg\",\n \"hover:bg-muted transition-colors\",\n \"inline-flex items-center justify-center\"\n )}\n type=\"button\"\n >\n <ChevronRight className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Calendar Grid */}\n <div className=\"px-6 pb-4\">\n {/* Week days header */}\n <div className=\"grid grid-cols-7 mb-2\">\n {weekDays.map((day, index) => (\n <div\n key={`weekday-${index}`}\n className=\"text-muted-foreground text-xs font-medium h-10 flex items-center justify-center\"\n title={day.full}\n >\n {day.short}\n </div>\n ))}\n </div>\n\n {/* Days grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {days.map((date, index) => {\n if (!date) {\n return <div key={`empty-${index}`} className=\"h-10 w-10\" />;\n }\n\n const isOutsideMonth = !isSameMonth(date, currentMonth);\n const isDisabled = disabled?.(date) || false;\n const isSelected = isDateSelected(date);\n const isTodayDate = isToday(date);\n const rangeStart = isRangeStart(date);\n const rangeEnd = isRangeEnd(date);\n const rangeMiddle = isRangeMiddle(date);\n\n return (\n <button\n key={date.toISOString()}\n onClick={() => handleDateClick(date)}\n disabled={isDisabled}\n className={cn(\n \"h-10 w-10 p-0 font-normal\",\n \"inline-flex items-center justify-center rounded-lg\",\n \"hover:bg-muted transition-colors text-sm\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n isOutsideMonth && \"text-muted-foreground/50\",\n isDisabled && \"text-muted-foreground/30 cursor-not-allowed hover:bg-transparent\",\n isSelected && !rangeMiddle && \"bg-primary text-primary-foreground font-medium hover:bg-primary hover:text-primary-foreground\",\n isTodayDate && \"font-semibold relative after:absolute after:bottom-1 after:left-1/2 after:-translate-x-1/2 after:h-1 after:w-1 after:rounded-full after:bg-primary\",\n rangeMiddle && \"bg-accent/30 text-accent-foreground rounded-none\",\n rangeStart && \"rounded-r-none\",\n rangeEnd && \"rounded-l-none\"\n )}\n type=\"button\"\n >\n {format(date, \"d\")}\n </button>\n );\n })}\n </div>\n </div>\n\n </div>\n );\n}\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\nimport { Input } from \"@/components/ui\"\nimport { CreditCard } from \"lucide-react\"\n\n// Card type detection\nconst getCardType = (number: string): string => {\n const patterns = {\n visa: /^4/,\n mastercard: /^5[1-5]/,\n amex: /^3[47]/,\n discover: /^6(?:011|5)/,\n diners: /^3(?:0[0-5]|[68])/,\n jcb: /^35/,\n }\n\n for (const [type, pattern] of Object.entries(patterns)) {\n if (pattern.test(number)) return type\n }\n return \"unknown\"\n}\n\n// Format card number with spaces\nconst formatCardNumber = (value: string, cardType: string): string => {\n const cleaned = value.replace(/\\s+/g, \"\")\n const groups = cardType === \"amex\" ? [4, 6, 5] : [4, 4, 4, 4]\n \n let formatted = \"\"\n let position = 0\n \n for (const group of groups) {\n if (position >= cleaned.length) break\n if (formatted) formatted += \" \"\n formatted += cleaned.slice(position, position + group)\n position += group\n }\n \n return formatted\n}\n\n// Card Number Input\nexport interface CardNumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string, cardType: string) => void\n showIcon?: boolean\n}\n\nexport const CardNumberInput = React.forwardRef<HTMLInputElement, CardNumberInputProps>(\n ({ className, value = \"\", onChange, showIcon = true, size, ...props }, ref) => {\n const [cardType, setCardType] = React.useState(\"unknown\")\n \n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\")\n const detectedType = getCardType(rawValue)\n setCardType(detectedType)\n \n const maxLength = detectedType === \"amex\" ? 15 : 16\n const truncated = rawValue.slice(0, maxLength)\n const formatted = formatCardNumber(truncated, detectedType)\n \n onChange?.(truncated, detectedType)\n \n // Update the input value\n e.target.value = formatted\n }\n \n return (\n <div className=\"relative\">\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-number\"\n placeholder=\"1234 5678 9012 3456\"\n value={formatCardNumber(value, cardType)}\n onChange={handleChange}\n className={cn(showIcon && \"pl-10\", className)}\n {...props}\n />\n {showIcon && (\n <CreditCard className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n )}\n </div>\n )\n }\n)\nCardNumberInput.displayName = \"CardNumberInput\"\n\n// Card Expiry Input\nexport interface CardExpiryInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n}\n\nexport const CardExpiryInput = React.forwardRef<HTMLInputElement, CardExpiryInputProps>(\n ({ className, value = \"\", onChange, size, ...props }, ref) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let rawValue = e.target.value.replace(/\\D/g, \"\")\n \n if (rawValue.length >= 2) {\n const month = parseInt(rawValue.slice(0, 2))\n if (month > 12) {\n rawValue = \"12\" + rawValue.slice(2)\n } else if (month === 0) {\n rawValue = \"01\" + rawValue.slice(2)\n }\n }\n \n rawValue = rawValue.slice(0, 4)\n let formatted = rawValue\n \n if (rawValue.length >= 2) {\n formatted = rawValue.slice(0, 2) + \"/\" + rawValue.slice(2)\n }\n \n onChange?.(rawValue)\n e.target.value = formatted\n }\n \n const formattedValue = value.length >= 2 ? value.slice(0, 2) + \"/\" + value.slice(2) : value\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-exp\"\n placeholder=\"MM/YY\"\n value={formattedValue}\n onChange={handleChange}\n className={className}\n {...props}\n />\n )\n }\n)\nCardExpiryInput.displayName = \"CardExpiryInput\"\n\n// Card CVC Input\nexport interface CardCVCInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n cardType?: string\n}\n\nexport const CardCVCInput = React.forwardRef<HTMLInputElement, CardCVCInputProps>(\n ({ className, value = \"\", onChange, cardType = \"unknown\", size, ...props }, ref) => {\n const maxLength = cardType === \"amex\" ? 4 : 3\n \n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\").slice(0, maxLength)\n onChange?.(rawValue)\n }\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode=\"numeric\"\n autoComplete=\"cc-csc\"\n placeholder={cardType === \"amex\" ? \"1234\" : \"123\"}\n value={value}\n onChange={handleChange}\n maxLength={maxLength}\n className={className}\n {...props}\n />\n )\n }\n)\nCardCVCInput.displayName = \"CardCVCInput\"\n\n// Card Zip Input\nexport interface CardZipInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string) => void\n format?: \"US\" | \"CA\" | \"UK\" | \"other\"\n}\n\nexport const CardZipInput = React.forwardRef<HTMLInputElement, CardZipInputProps>(\n ({ className, value = \"\", onChange, format = \"US\", size, ...props }, ref) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let rawValue = e.target.value\n \n switch (format) {\n case \"US\":\n rawValue = rawValue.replace(/\\D/g, \"\").slice(0, 5)\n break\n case \"CA\":\n rawValue = rawValue.toUpperCase().replace(/[^A-Z0-9]/g, \"\").slice(0, 6)\n if (rawValue.length >= 3) {\n rawValue = rawValue.slice(0, 3) + \" \" + rawValue.slice(3)\n }\n break\n case \"UK\":\n rawValue = rawValue.toUpperCase().replace(/[^A-Z0-9\\s]/g, \"\").slice(0, 8)\n break\n default:\n rawValue = rawValue.slice(0, 10)\n }\n \n onChange?.(rawValue.replace(/\\s/g, \"\"))\n e.target.value = rawValue\n }\n \n const getPlaceholder = () => {\n switch (format) {\n case \"US\": return \"12345\"\n case \"CA\": return \"K1A 0B1\"\n case \"UK\": return \"SW1A 1AA\"\n default: return \"Postal Code\"\n }\n }\n \n return (\n <Input\n ref={ref}\n type=\"text\"\n autoComplete=\"postal-code\"\n placeholder={getPlaceholder()}\n value={value}\n onChange={handleChange}\n className={className}\n {...props}\n />\n )\n }\n)\nCardZipInput.displayName = \"CardZipInput\"","\"use client\"\n\nimport * as React from \"react\";\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from \"embla-carousel-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n/**\n * Premium Carousel Component\n *\n * Embla Carousel tabanlı, erişilebilir ve esnek carousel bileşeni.\n * Yatay/dikey yön desteği, klavye navigasyonu ve plugin (autoplay vb.) desteği sunar.\n */\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\nexport interface CarouselProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Embla carousel seçenekleri (loop, align, axis vb.) */\n opts?: CarouselOptions;\n /** Embla plugin listesi (ör. autoplay) */\n plugins?: CarouselPlugin;\n /** Kaydırma yönü */\n orientation?: \"horizontal\" | \"vertical\";\n /** Embla API'sine dışarıdan erişmek için callback */\n setApi?: (api: CarouselApi) => void;\n}\n\ninterface CarouselContextProps\n extends Pick<CarouselProps, \"opts\" | \"plugins\" | \"setApi\"> {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n orientation: \"horizontal\" | \"vertical\";\n}\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\n/**\n * Carousel context hook'u — Carousel alt bileşenlerinin embla API'sine\n * ve yön bilgisine erişmesini sağlar.\n */\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Carousel Root\n * -----------------------------------------------------------------------------------------------*/\nconst Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n },\n ref\n ) => {\n // Yön bilgisi opts.axis ile de verilebilir — orientation prop'u öncelikli\n const resolvedOrientation =\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\");\n\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: resolvedOrientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n // Embla \"select\" olayında ileri/geri butonlarının durumunu güncelle\n const onSelect = React.useCallback((emblaApi: CarouselApi) => {\n if (!emblaApi) return;\n setCanScrollPrev(emblaApi.canScrollPrev());\n setCanScrollNext(emblaApi.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n // Klavye navigasyonu: yatayda sol/sağ, dikeyde yukarı/aşağı ok tuşları\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n const prevKey =\n resolvedOrientation === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\";\n const nextKey =\n resolvedOrientation === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\";\n\n if (event.key === prevKey) {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === nextKey) {\n event.preventDefault();\n scrollNext();\n }\n },\n [resolvedOrientation, scrollPrev, scrollNext]\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api.off(\"reInit\", onSelect);\n api.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api,\n opts,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n orientation: resolvedOrientation,\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn(\"moonui-theme\", \"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n }\n);\nCarousel.displayName = \"Carousel\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselContent\n * -----------------------------------------------------------------------------------------------*/\nconst carouselContentVariants = cva(\"flex\", {\n variants: {\n orientation: {\n horizontal: \"-ml-4\",\n vertical: \"-mt-4 flex-col\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface CarouselContentProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof carouselContentVariants>, \"orientation\"> {}\n\nconst CarouselContent = React.forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(carouselContentVariants({ orientation }), className)}\n {...props}\n />\n </div>\n );\n }\n);\nCarouselContent.displayName = \"CarouselContent\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselItem\n * -----------------------------------------------------------------------------------------------*/\nconst carouselItemVariants = cva(\"min-w-0 shrink-0 grow-0 basis-full\", {\n variants: {\n orientation: {\n horizontal: \"pl-4\",\n vertical: \"pt-4\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nexport interface CarouselItemProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof carouselItemVariants>, \"orientation\"> {}\n\nconst CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(carouselItemVariants({ orientation }), className)}\n {...props}\n />\n );\n }\n);\nCarouselItem.displayName = \"CarouselItem\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselPrevious\n * -----------------------------------------------------------------------------------------------*/\nconst CarouselPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon-sm\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n rounded=\"full\"\n className={cn(\n \"absolute\",\n orientation === \"horizontal\"\n ? \"-left-12 top-1/2 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft className=\"h-4 w-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n});\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\n/* -------------------------------------------------------------------------------------------------\n * CarouselNext\n * -----------------------------------------------------------------------------------------------*/\nconst CarouselNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<typeof Button>\n>(({ className, variant = \"outline\", size = \"icon-sm\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n rounded=\"full\"\n className={cn(\n \"absolute\",\n orientation === \"horizontal\"\n ? \"-right-12 top-1/2 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight className=\"h-4 w-4\" aria-hidden=\"true\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n});\nCarouselNext.displayName = \"CarouselNext\";\n\nexport {\n type CarouselApi,\n type CarouselOptions,\n type CarouselPlugin,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n carouselContentVariants,\n carouselItemVariants,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Checkbox Bileşeni\n *\n * Erişilebilir, özelleştirilebilir ve tema sistemiyle tam entegre checkbox bileşeni.\n * Form elemanları ve seçim listeleri için kullanılır.\n */\n\nconst checkboxVariants = cva(\n \"peer shrink-0 border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary-foreground data-[state=indeterminate]:text-primary-foreground\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n outline: \"border-border bg-transparent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n muted: \"border-border bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n ghost: \"border-transparent bg-transparent hover:bg-accent data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:border-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-sm\",\n md: \"rounded-md\",\n full: \"rounded-full\",\n },\n animation: {\n none: \"\",\n subtle: \"transition-all duration-200\",\n default: \"transition-all duration-200\",\n bounce: \"transition-all duration-200\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n },\n }\n);\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {\n /**\n * İndeterminate durumu - grup seçimlerinde bazı öğeler seçilmişse kullanılır\n */\n indeterminate?: boolean;\n /**\n * Özel ikon komponenti\n */\n icon?: React.ReactNode;\n}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ \n className, \n variant, \n size, \n radius, \n animation,\n indeterminate = false,\n icon,\n checked,\n ...props \n}, ref) => {\n // Radix'in `CheckedState` tipi: boolean | \"indeterminate\".\n // \"indeterminate\" iletildiğinde Radix kökte `data-state=\"indeterminate\"` +\n // `aria-checked=\"mixed\"` üretir ve Indicator'ı render eder — Minus ikonu ancak\n // bu durumda görünür olur.\n //\n // Eskiden burada `false` iletiliyordu: kök hep `data-state=\"unchecked\"` kalıyor,\n // Radix Indicator unchecked durumda render edilmediği için Minus hiç görünmüyor\n // ve ekran okuyucu \"kısmen seçili\" durumunu duyuramıyordu.\n //\n // `checked` undefined ise olduğu gibi geçirilir — uncontrolled kullanım korunur.\n const effectiveChecked = indeterminate ? \"indeterminate\" : checked;\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={effectiveChecked}\n className={cn(\"moonui-theme\", checkboxVariants({ variant, size, radius, animation }), className)}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\n \"flex items-center justify-center text-current\",\n animation === \"bounce\" && \"data-[state=checked]:animate-bounce\"\n )}\n >\n {indeterminate ? (\n <Minus className=\"h-[65%] w-[65%]\" />\n ) : icon ? (\n icon\n ) : (\n <Check className=\"h-[65%] w-[65%]\" />\n )}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\n// CheckboxGroup bileşeni\nexport interface CheckboxGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Grup içi yerleşim - dikey veya yatay\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Öğeler arasındaki boşluk (piksel)\n */\n spacing?: number | string;\n /**\n * Alt bileşenler\n */\n children: React.ReactNode;\n}\n\nconst CheckboxGroup = React.forwardRef<HTMLDivElement, CheckboxGroupProps>(\n ({ className, orientation = \"vertical\", spacing = \"1rem\", children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row flex-wrap\",\n className\n )}\n style={{ gap: spacing }}\n role=\"group\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nCheckboxGroup.displayName = \"CheckboxGroup\";\n\n// CheckboxLabel bileşeni\nexport interface CheckboxLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * Checkbox bileşeni için HTML id\n */\n htmlFor?: string;\n /**\n * Label içeriği\n */\n children: React.ReactNode;\n /**\n * Checkbox öncesi veya sonrası\n */\n position?: \"start\" | \"end\";\n /**\n * Devre dışı durum stili\n */\n disabled?: boolean;\n}\n\nconst CheckboxLabel = React.forwardRef<HTMLLabelElement, CheckboxLabelProps>(\n ({ className, htmlFor, children, position = \"end\", disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n position === \"start\" ? \"mr-2\" : \"ml-2\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nCheckboxLabel.displayName = \"CheckboxLabel\";\n\n// Checkbox ve Label içeren bileşen\nexport interface CheckboxWithLabelProps extends CheckboxProps {\n /**\n * Label içeriği\n */\n label: React.ReactNode;\n /**\n * Label pozisyonu\n */\n labelPosition?: \"start\" | \"end\";\n /**\n * Label için HTML sınıfları\n */\n labelClassName?: string;\n}\n\nconst CheckboxWithLabel = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxWithLabelProps\n>(({ \n id, \n label, \n labelPosition = \"end\", \n labelClassName, \n ...checkboxProps \n}, ref) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n {labelPosition === \"start\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"start\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n \n <Checkbox ref={ref} id={checkboxId} {...checkboxProps} />\n \n {labelPosition === \"end\" && (\n <CheckboxLabel \n htmlFor={checkboxId}\n position=\"end\"\n disabled={checkboxProps.disabled}\n className={labelClassName}\n >\n {label}\n </CheckboxLabel>\n )}\n </div>\n );\n});\nCheckboxWithLabel.displayName = \"CheckboxWithLabel\";\n\nexport { Checkbox, CheckboxGroup, CheckboxLabel, CheckboxWithLabel };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Collapsible (Daraltılabilir) Bileşeni\n * \n * İçeriği genişletilip daraltılabilen hafif bir bileşendir.\n * Tema sistemiyle tam entegre, erişilebilir ve özelleştirilebilir.\n */\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst collapsibleTriggerVariants = cva(\n \"flex w-full items-center justify-between transition-all\",\n {\n variants: {\n variant: {\n default: \"text-foreground hover:text-primary\",\n ghost: \"text-foreground hover:bg-accent/10 rounded\",\n outline: \"text-foreground border border-border rounded-t-md hover:bg-accent/5\",\n },\n size: {\n sm: \"text-xs py-2 px-3\",\n default: \"text-sm py-3 px-4\",\n md: \"text-base py-4 px-4\",\n lg: \"text-lg py-5 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleTriggerProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger>,\n VariantProps<typeof collapsibleTriggerVariants> {}\n\nconst CollapsibleTrigger = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Trigger>,\n CollapsibleTriggerProps\n>(({ className, children, variant, size, asChild, ...props }, ref) => {\n // asChild kullanıldığında otomatik ikon eklemeyi atla\n if (asChild) {\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleTriggerVariants({ variant, size }), className)}\n asChild={asChild}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Trigger>\n )\n }\n\n return (\n <CollapsiblePrimitive.Trigger\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleTriggerVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 ml-auto transition-transform duration-200 [&[data-state=open]]:rotate-180\" />\n </CollapsiblePrimitive.Trigger>\n )\n})\nCollapsibleTrigger.displayName = CollapsiblePrimitive.Trigger.displayName\n\nconst collapsibleContentVariants = cva(\n \"overflow-hidden transition-all data-[state=closed]:animate-collapse-up data-[state=open]:animate-collapse-down\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n ghost: \"text-muted-foreground rounded-b\",\n outline: \"text-muted-foreground border border-t-0 border-border rounded-b-md\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\ninterface CollapsibleContentProps \n extends React.ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content>,\n VariantProps<typeof collapsibleContentVariants> {}\n\nconst CollapsibleContent = React.forwardRef<\n React.ElementRef<typeof CollapsiblePrimitive.Content>,\n CollapsibleContentProps\n>(({ className, children, variant, size, ...props }, ref) => (\n <CollapsiblePrimitive.Content\n ref={ref}\n className={cn(\"moonui-theme\", collapsibleContentVariants({ variant, size }), className)}\n {...props}\n >\n <div className=\"p-4\">{children}</div>\n </CollapsiblePrimitive.Content>\n))\nCollapsibleContent.displayName = CollapsiblePrimitive.Content.displayName\n\nexport {\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n collapsibleTriggerVariants,\n collapsibleContentVariants,\n}\n\nexport type {\n CollapsibleTriggerProps,\n CollapsibleContentProps\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { Label } from \"./label\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"./tabs\";\nimport { Slider } from \"./slider\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { Copy, Check, Palette, Pipette } from \"lucide-react\";\n\n/**\n * ColorPicker Component\n * \n * A comprehensive color picker with multiple input methods\n */\n\nconst colorPickerVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n default: \"h-10 w-10\",\n sm: \"h-8 w-8\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n },\n shape: {\n square: \"rounded-md\",\n circle: \"rounded-full\",\n rounded: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"default\",\n shape: \"square\",\n },\n }\n);\n\n// Color utilities\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n}\n\nfunction hexToHsl(hex: string): { h: number; s: number; l: number } | null {\n const rgb = hexToRgb(hex);\n if (!rgb) return null;\n\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return {\n h: Math.round(h * 360),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nfunction hslToHex(h: number, s: number, l: number): string {\n h = h / 360;\n s = s / 100;\n l = l / 100;\n\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return rgbToHex(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255)\n );\n}\n\nexport interface ColorPickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"value\">,\n VariantProps<typeof colorPickerVariants> {\n /**\n * Current color value\n */\n value?: string;\n /**\n * Callback when color changes\n */\n onChange?: (color: string) => void;\n /**\n * Show color input\n */\n showInput?: boolean;\n /**\n * Show preset colors\n */\n showPresets?: boolean;\n /**\n * Preset colors\n */\n presets?: string[];\n /**\n * Allow opacity\n */\n allowOpacity?: boolean;\n /**\n * Color format\n */\n format?: \"hex\" | \"rgb\" | \"hsl\";\n /**\n * Disable copy button\n */\n disableCopy?: boolean;\n /**\n * Trigger mode\n */\n triggerMode?: \"click\" | \"hover\";\n}\n\n// Default preset colors\nconst defaultPresets = [\n \"#000000\", \"#ffffff\", \"#ff0000\", \"#00ff00\", \"#0000ff\",\n \"#ffff00\", \"#ff00ff\", \"#00ffff\", \"#ff8800\", \"#8800ff\",\n \"#88ff00\", \"#0088ff\", \"#ff0088\", \"#00ff88\", \"#888888\",\n \"#f87171\", \"#fb923c\", \"#fbbf24\", \"#facc15\", \"#a3e635\",\n \"#4ade80\", \"#34d399\", \"#2dd4bf\", \"#22d3ee\", \"#38bdf8\",\n \"#60a5fa\", \"#818cf8\", \"#a78bfa\", \"#c084fc\", \"#e879f9\",\n \"#f472b6\", \"#fb7185\", \"#f43f5e\", \"#ef4444\", \"#dc2626\",\n];\n\nexport function ColorPicker({\n className,\n size,\n shape,\n value = \"#000000\",\n onChange,\n showInput = true,\n showPresets = true,\n presets = defaultPresets,\n allowOpacity = false,\n format = \"hex\",\n disableCopy = false,\n triggerMode = \"click\",\n disabled,\n ...props\n}: ColorPickerProps) {\n const [open, setOpen] = React.useState(false);\n const [color, setColor] = React.useState(value);\n const [opacity, setOpacity] = React.useState(100);\n const [copied, setCopied] = React.useState(false);\n const [inputValue, setInputValue] = React.useState(value);\n\n // Color components\n const hsl = React.useMemo(() => hexToHsl(color) || { h: 0, s: 0, l: 0 }, [color]);\n const rgb = React.useMemo(() => hexToRgb(color) || { r: 0, g: 0, b: 0 }, [color]);\n\n React.useEffect(() => {\n setColor(value);\n setInputValue(value);\n }, [value]);\n\n const handleColorChange = (newColor: string) => {\n setColor(newColor);\n setInputValue(newColor);\n onChange?.(newColor);\n };\n\n const handleHslChange = (component: \"h\" | \"s\" | \"l\", value: number) => {\n const newHsl = { ...hsl, [component]: value };\n const newColor = hslToHex(newHsl.h, newHsl.s, newHsl.l);\n handleColorChange(newColor);\n };\n\n const handleRgbChange = (component: \"r\" | \"g\" | \"b\", value: number) => {\n const newRgb = { ...rgb, [component]: value };\n const newColor = rgbToHex(newRgb.r, newRgb.g, newRgb.b);\n handleColorChange(newColor);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n if (/^#[0-9A-F]{6}$/i.test(newValue)) {\n handleColorChange(newValue);\n }\n };\n\n const copyToClipboard = async () => {\n try {\n let textToCopy = color;\n if (format === \"rgb\") {\n textToCopy = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n } else if (format === \"hsl\") {\n textToCopy = `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n }\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error(\"Failed to copy:\", err);\n }\n };\n\n const formatDisplay = () => {\n if (format === \"rgb\") return `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n if (format === \"hsl\") return `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`;\n return color;\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={cn(\n colorPickerVariants({ size, shape }),\n \"p-0 border-2\",\n className\n )}\n style={{ backgroundColor: color }}\n disabled={disabled}\n {...props}\n >\n <span className=\"sr-only\">Pick a color</span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80\" align=\"start\" sideOffset={8}>\n <Tabs defaultValue=\"picker\" className=\"w-full\">\n <TabsList className=\"grid w-full grid-cols-3\">\n <TabsTrigger value=\"picker\">Picker</TabsTrigger>\n <TabsTrigger value=\"sliders\">Sliders</TabsTrigger>\n <TabsTrigger value=\"input\">Input</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"picker\" className=\"space-y-4\">\n {/* Color gradient picker */}\n <div className=\"relative h-48 rounded-md overflow-hidden\">\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(to right, #fff, hsl(${hsl.h}, 100%, 50%))`,\n }}\n />\n <div\n className=\"absolute inset-0\"\n style={{\n background: \"linear-gradient(to bottom, transparent, #000)\",\n }}\n />\n <motion.div\n className=\"absolute w-4 h-4 border-2 border-white rounded-full shadow-md cursor-pointer\"\n drag\n dragConstraints={{\n left: -8,\n right: 280,\n top: -8,\n bottom: 184,\n }}\n dragElastic={0}\n style={{\n backgroundColor: color,\n left: `${(hsl.s / 100) * 280 - 8}px`,\n top: `${(1 - hsl.l / 100) * 192 - 8}px`,\n }}\n />\n </div>\n\n {/* Hue slider */}\n <div className=\"space-y-2\">\n <Label>Hue</Label>\n <div\n className=\"relative h-3 rounded-full\"\n style={{\n background:\n \"linear-gradient(to right, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000)\",\n }}\n >\n <Slider\n value={[hsl.h]}\n onValueChange={([value]) => handleHslChange(\"h\", value)}\n max={360}\n step={1}\n className=\"absolute inset-0\"\n />\n </div>\n </div>\n\n {/* Opacity slider */}\n {allowOpacity && (\n <div className=\"space-y-2\">\n <Label>Opacity</Label>\n <div className=\"flex items-center gap-3\">\n <Slider\n value={[opacity]}\n onValueChange={([value]) => setOpacity(value)}\n max={100}\n step={1}\n className=\"flex-1\"\n />\n <span className=\"text-sm w-10 text-right\">{opacity}%</span>\n </div>\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"sliders\" className=\"space-y-4\">\n {/* RGB Sliders */}\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Red</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.r}</span>\n </div>\n <Slider\n value={[rgb.r]}\n onValueChange={([value]) => handleRgbChange(\"r\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-red-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Green</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.g}</span>\n </div>\n <Slider\n value={[rgb.g]}\n onValueChange={([value]) => handleRgbChange(\"g\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-green-500\"\n />\n </div>\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Blue</Label>\n <span className=\"text-sm text-muted-foreground\">{rgb.b}</span>\n </div>\n <Slider\n value={[rgb.b]}\n onValueChange={([value]) => handleRgbChange(\"b\", value)}\n max={255}\n step={1}\n className=\"[&_[role=slider]]:bg-blue-500\"\n />\n </div>\n </div>\n\n {/* HSL Info */}\n <div className=\"pt-2 border-t\">\n <div className=\"grid grid-cols-3 gap-2 text-sm\">\n <div>\n <p className=\"text-muted-foreground\">H</p>\n <p className=\"font-medium\">{hsl.h}°</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">S</p>\n <p className=\"font-medium\">{hsl.s}%</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">L</p>\n <p className=\"font-medium\">{hsl.l}%</p>\n </div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"input\" className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label>Hex Color</Label>\n <div className=\"flex gap-2\">\n <Input\n value={inputValue}\n onChange={handleInputChange}\n placeholder=\"#000000\"\n className=\"font-mono\"\n />\n <Button\n size=\"icon\"\n variant=\"outline\"\n onClick={() => handleColorChange(inputValue)}\n >\n <Check className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label>RGB Values</Label>\n <div className=\"grid grid-cols-3 gap-2\">\n <Input\n type=\"number\"\n value={rgb.r}\n onChange={(e) => handleRgbChange(\"r\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.g}\n onChange={(e) => handleRgbChange(\"g\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n <Input\n type=\"number\"\n value={rgb.b}\n onChange={(e) => handleRgbChange(\"b\", parseInt(e.target.value) || 0)}\n min={0}\n max={255}\n className=\"text-center\"\n />\n </div>\n </div>\n </TabsContent>\n </Tabs>\n\n {/* Color preview and copy */}\n <div className=\"mt-4 flex items-center justify-between p-3 border rounded-lg\">\n <div className=\"flex items-center gap-3\">\n <div\n className={cn(\n \"h-10 w-10 rounded border-2\",\n colorPickerVariants({ shape })\n )}\n style={{ backgroundColor: color }}\n />\n <div>\n <p className=\"text-sm font-medium\">{formatDisplay()}</p>\n <p className=\"text-xs text-muted-foreground\">Current color</p>\n </div>\n </div>\n {!disableCopy && (\n <Button\n size=\"icon\"\n variant=\"ghost\"\n onClick={copyToClipboard}\n className=\"h-8 w-8\"\n >\n <AnimatePresence mode=\"wait\">\n {copied ? (\n <motion.div\n key=\"check\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Check className=\"h-4 w-4 text-green-600\" />\n </motion.div>\n ) : (\n <motion.div\n key=\"copy\"\n initial={{ scale: 0 }}\n animate={{ scale: 1 }}\n exit={{ scale: 0 }}\n >\n <Copy className=\"h-4 w-4\" />\n </motion.div>\n )}\n </AnimatePresence>\n </Button>\n )}\n </div>\n\n {/* Preset colors */}\n {showPresets && presets.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n <Label>Preset Colors</Label>\n <div className=\"grid grid-cols-10 gap-1\">\n {presets.map((presetColor) => (\n <button\n key={presetColor}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad\n // olmadan ekran okuyucu yalnızca \"button\" diye okur.\n aria-label={`Select color ${presetColor}`}\n aria-pressed={color === presetColor}\n className={cn(\n \"h-7 w-7 rounded border-2 transition-all hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n color === presetColor\n ? \"border-primary\"\n : \"border-transparent\"\n )}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n />\n ))}\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n );\n}\n\n/**\n * SimpleColorPicker Component\n * \n * A simplified color picker with preset colors only\n */\n\nexport interface SimpleColorPickerProps {\n value?: string;\n onChange?: (color: string) => void;\n colors?: string[];\n className?: string;\n size?: \"sm\" | \"default\" | \"lg\";\n}\n\nexport function SimpleColorPicker({\n value = \"#000000\",\n onChange,\n colors = defaultPresets.slice(0, 10),\n className,\n size = \"default\",\n}: SimpleColorPickerProps) {\n const sizeClasses = {\n sm: \"h-6 w-6\",\n default: \"h-8 w-8\",\n lg: \"h-10 w-10\",\n };\n\n return (\n <div className={cn(\"moonui-theme\", \"flex flex-wrap gap-2\", className)}>\n {colors.map((color) => (\n <button\n key={color}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad olmadan\n // ekran okuyucu yalnızca \"button\" diye okur.\n aria-label={`Select color ${color}`}\n aria-pressed={value === color}\n className={cn(\n \"rounded-full border-2 transition-all hover:scale-110\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n sizeClasses[size],\n value === color ? \"border-primary ring-2 ring-primary/20\" : \"border-transparent\"\n )}\n style={{ backgroundColor: color }}\n onClick={() => onChange?.(color)}\n />\n ))}\n </div>\n );\n}\n\n/**\n * GradientPicker Component\n * \n * Pick gradient colors\n */\n\nexport interface GradientPickerProps {\n value?: { start: string; end: string; angle?: number };\n onChange?: (gradient: { start: string; end: string; angle: number }) => void;\n className?: string;\n}\n\nexport function GradientPicker({\n value = { start: \"#ff0000\", end: \"#0000ff\", angle: 90 },\n onChange,\n className,\n}: GradientPickerProps) {\n const [gradient, setGradient] = React.useState(value);\n\n const handleChange = (field: \"start\" | \"end\" | \"angle\", newValue: string | number) => {\n const newGradient = { ...gradient, [field]: newValue };\n setGradient(newGradient);\n onChange?.(newGradient as { start: string; end: string; angle: number });\n };\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-4\", className)}>\n <div\n className=\"h-20 rounded-lg border-2\"\n style={{\n background: `linear-gradient(${gradient.angle}deg, ${gradient.start}, ${gradient.end})`,\n }}\n />\n \n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-2\">\n <Label>Start Color</Label>\n <ColorPicker\n value={gradient.start}\n onChange={(color) => handleChange(\"start\", color)}\n size=\"sm\"\n />\n </div>\n <div className=\"space-y-2\">\n <Label>End Color</Label>\n <ColorPicker\n value={gradient.end}\n onChange={(color) => handleChange(\"end\", color)}\n size=\"sm\"\n />\n </div>\n </div>\n \n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <Label>Angle</Label>\n <span className=\"text-sm text-muted-foreground\">{gradient.angle}°</span>\n </div>\n <Slider\n value={[gradient.angle || 90]}\n onValueChange={([value]) => handleChange(\"angle\", value)}\n max={360}\n step={1}\n />\n </div>\n </div>\n );\n}\n\n// Re-export icons used\nexport { Palette, Pipette } from \"lucide-react\";","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Loader2 } from \"lucide-react\";\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Input Component\n * \n * Erişilebilir, estetik ve işlevsel input bileşeni.\n * İkon desteği, hata gösterimi ve çeşitli varyantlar sunar.\n */\n\nconst inputWrapperVariants = cva(\n \"group relative flex items-center w-full transition-colors\",\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst inputVariants = cva(\n [\n \"w-full bg-background transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground\", \n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"file:border-0 file:bg-transparent file:font-medium\",\n \"focus-visible:outline-none dark:text-gray-200\"\n ],\n {\n variants: {\n variant: {\n standard: \"border border-input rounded-md px-3 py-2 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:bg-gray-800/80 dark:shadow-inner dark:shadow-gray-950/10\",\n filled: \"border border-transparent bg-gray-100 dark:bg-gray-800 rounded-md px-3 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 dark:shadow-inner dark:shadow-gray-950/10\",\n ghost: \"border-none bg-transparent shadow-none px-1 dark:text-gray-300 hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b border-input rounded-none px-0 py-2 focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:text-gray-300 dark:bg-transparent\",\n },\n size: {\n sm: \"h-8 text-xs\",\n md: \"h-10 text-sm\",\n lg: \"h-12 text-base\",\n },\n hasLeftIcon: {\n true: \"pl-10\",\n false: \"\",\n },\n hasRightIcon: {\n true: \"pr-10\",\n false: \"\",\n },\n hasRightButton: {\n true: \"pr-10\",\n false: \"\",\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\",\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed bg-gray-50 dark:bg-gray-800/50 pointer-events-none\",\n false: \"\",\n }\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n isError: false,\n isSuccess: false,\n isDisabled: false,\n hasLeftIcon: false,\n hasRightIcon: false,\n hasRightButton: false,\n },\n }\n);\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n Omit<VariantProps<typeof inputVariants>, \"isDisabled\" | \"hasLeftIcon\" | \"hasRightIcon\" | \"hasRightButton\"> {\n /** Label metni */\n label?: string;\n /** Floating label animasyonu (Material Design pattern) */\n floatingLabel?: boolean;\n /** Floating label için ek sınıflar */\n floatingLabelClassName?: string;\n /** Hata mesajı */\n error?: string;\n /** Başarı mesajı */\n success?: string;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek buton (password show/hide vb. için) */\n rightButton?: React.ReactNode;\n /** Mesajın görünürlüğü (true: her zaman görünür, false: sadece hata/başarı durumunda) */\n alwaysShowMessage?: boolean;\n /** Input wrapper için ek sınıflar */\n wrapperClassName?: string;\n /** Mesaj için ek sınıflar */\n messageClassName?: string;\n}\n\n/**\n * Premium Input Component\n * \n * @param props - Input bileşeni özellikleri\n * @param props.variant - Görsel varyant (standard, filled, ghost, underline)\n * @param props.size - Boyut (sm, md, lg)\n * @param props.error - Hata mesajı\n * @param props.success - Başarı mesajı\n * @param props.loading - Yükleniyor durumu\n * @param props.leftIcon - Sol tarafta gösterilecek ikon\n * @param props.rightIcon - Sağ tarafta gösterilecek ikon\n * @param props.rightButton - Sağ tarafta gösterilecek buton\n * @param props.alwaysShowMessage - Mesajın her zaman görünür olması\n */\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({\n className,\n wrapperClassName,\n messageClassName,\n variant,\n size,\n isError,\n disabled,\n error,\n success,\n loading,\n leftIcon,\n rightIcon,\n rightButton,\n alwaysShowMessage = false,\n label,\n floatingLabel = false,\n floatingLabelClassName,\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n placeholder,\n ...props\n }, ref) => {\n // Mesaj id'leri `props.id` yoksa \"-error\"/\"-success\" gibi SABİT string'e\n // düşüyordu; aynı sayfada iki id'siz Input olduğunda DOM'da yinelenen id\n // oluşuyor ve aria-describedby yanlış elemanı işaret ediyordu.\n const reactId = React.useId();\n const fieldId = props.id || reactId;\n // Floating label state management\n const [isFocused, setIsFocused] = React.useState(false);\n const [internalValue, setInternalValue] = React.useState(value || defaultValue || \"\");\n\n // Floating label aktif mi kontrolü\n const hasValue = internalValue !== \"\" && internalValue !== null && internalValue !== undefined;\n const isLabelActive = isFocused || hasValue;\n\n // Event handler'lar\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(e.target.value);\n onChange?.(e);\n };\n\n // Value değişikliklerini takip et\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value);\n }\n }, [value]);\n\n // Mesajı göster/gizle\n const showMessage = alwaysShowMessage || error || success;\n const messageType = error ? \"error\" : success ? \"success\" : \"normal\";\n\n return (\n <div className=\"space-y-1.5 w-full\">\n <div className={cn(\"moonui-theme\", inputWrapperVariants({ size }), wrapperClassName)}>\n {/* Floating Label */}\n {floatingLabel && label && (\n <label\n htmlFor={props.id}\n className={cn(\n \"absolute transition-all duration-200 pointer-events-none\",\n leftIcon || loading ? \"left-10\" : \"left-3\",\n \"text-gray-500 dark:text-gray-400\",\n isLabelActive\n ? \"top-0 -translate-y-1/2 text-xs bg-background dark:bg-gray-800 px-1\"\n : \"top-1/2 -translate-y-1/2 text-sm\",\n isFocused && \"text-primary dark:text-primary\",\n !!error && \"text-error\",\n disabled && \"opacity-50\",\n floatingLabelClassName\n )}\n >\n {label}\n </label>\n )}\n\n {leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {loading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : leftIcon}\n </div>\n )}\n\n <input\n className={cn(\n inputVariants({\n variant,\n size,\n isError: !!error || isError,\n isSuccess: !!success,\n isDisabled: disabled || loading,\n hasLeftIcon: !!leftIcon || loading,\n hasRightIcon: !!rightIcon,\n hasRightButton: !!rightButton,\n }),\n className\n )}\n ref={ref}\n disabled={disabled || loading}\n data-loading={loading ? \"\" : undefined}\n data-error={!!error ? \"\" : undefined}\n data-success={!!success ? \"\" : undefined}\n aria-invalid={!!error || !!isError || undefined}\n aria-describedby={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={floatingLabel ? (isLabelActive ? placeholder : \"\") : placeholder}\n {...props}\n />\n\n {rightIcon && !loading && (\n <div className=\"absolute right-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n {rightIcon}\n </div>\n )}\n\n {rightButton && (\n <div className=\"absolute right-3\">\n {rightButton}\n </div>\n )}\n\n {loading && !leftIcon && (\n <div className=\"absolute left-3 text-gray-500 flex items-center justify-center pointer-events-none\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n\n {showMessage && (\n <p\n className={cn(\n \"text-xs transition-all\",\n messageType === \"error\" && \"text-error\",\n messageType === \"success\" && \"text-success\",\n messageType === \"normal\" && \"text-muted-foreground\",\n messageClassName\n )}\n id={error ? `${fieldId}-error` : success ? `${fieldId}-success` : undefined}\n >\n {error || success || \"\"}\n </p>\n )}\n </div>\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70 dark:peer-disabled:opacity-60 transition-colors duration-200\"\n)\n\nexport interface LabelProps\n extends React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Popover Bileşeni\n * \n * Tıklanabilir bir öğeden açılan, tema sistemiyle tam entegre bir içerik bileşeni.\n * Filtreler, ayarlar ve diğer içerikler için kullanışlı ve erişilebilir bir arayüz sağlar.\n */\n\nconst popoverContentVariants = cva(\n \"z-50 w-72 rounded-md border border-border bg-background p-4 shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"border-destructive bg-destructive/5\",\n outline: \"border-border bg-transparent\",\n subtle: \"border-transparent bg-muted/50\",\n },\n size: {\n sm: \"w-48 p-3\",\n default: \"w-72 p-4\",\n lg: \"w-96 p-5\",\n },\n side: {\n top: \"data-[side=top]:slide-in-from-bottom-2\",\n right: \"data-[side=right]:slide-in-from-left-2\",\n bottom: \"data-[side=bottom]:slide-in-from-top-2\",\n left: \"data-[side=left]:slide-in-from-right-2\",\n },\n position: {\n pointerEventsNone: \"pointer-events-none\",\n default: \"\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n default: \"shadow-md\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n xl: \"shadow-xl\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n shadow: \"default\",\n },\n }\n);\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nexport interface PopoverContentProps \n extends Omit<React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>, 'side'>,\n VariantProps<typeof popoverContentVariants> {\n /**\n * Popover'ın arka plan bulanıklığı etkin mi\n */\n backdrop?: boolean;\n /**\n * Popover'a tıklandığında kapanıp kapanmayacağı\n */\n closeOnInteractOutside?: boolean;\n /**\n * Popover açıkken arka planın karartılması\n */\n overlayBackdrop?: boolean;\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n PopoverContentProps\n>(({\n className,\n variant,\n size,\n side,\n position,\n radius,\n shadow,\n backdrop = false,\n closeOnInteractOutside = true,\n overlayBackdrop = false,\n sideOffset = 4,\n ...props\n}, ref) => (\n <>\n {overlayBackdrop && (\n <div className=\"fixed inset-0 z-40 bg-overlay opacity-30\" />\n )}\n <PopoverPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n collisionPadding={8}\n onInteractOutside={(e) => {\n if (!closeOnInteractOutside) {\n e.preventDefault();\n }\n }}\n className={cn(\n popoverContentVariants({ \n variant, \n size, \n side, \n position,\n radius,\n shadow\n }),\n backdrop && \"backdrop-blur-md bg-opacity-80\",\n className\n )}\n {...props}\n />\n </>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\n/**\n * PopoverClose bileşeni\n */\nconst PopoverClose = PopoverPrimitive.Close;\n\n/**\n * Popover için bölüm ayırıcı\n */\nconst PopoverSeparator = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"my-2 h-px bg-border\", className)}\n {...props}\n />\n);\nPopoverSeparator.displayName = \"PopoverSeparator\";\n\n/**\n * Popover başlık bileşeni\n */\nconst PopoverHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"-mx-4 -mt-4 mb-3 px-4 pt-4 pb-3 border-b border-border\", className)}\n {...props}\n />\n);\nPopoverHeader.displayName = \"PopoverHeader\";\n\n/**\n * Popover footer bileşeni\n */\nconst PopoverFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"moonui-theme\", \"-mx-4 -mb-4 mt-3 px-4 pt-3 pb-4 border-t border-border\", className)}\n {...props}\n />\n);\nPopoverFooter.displayName = \"PopoverFooter\";\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverAnchor,\n PopoverClose,\n PopoverSeparator,\n PopoverHeader,\n PopoverFooter,\n popoverContentVariants,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs Root\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsProps extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Root> {\n /** Mobil görünümde dikey düzen için */\n vertical?: boolean;\n}\n\nconst Tabs = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Root>,\n TabsProps\n>(({ vertical = false, ...props }, ref) => (\n <TabsPrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", props.className)}\n orientation={vertical ? \"vertical\" : \"horizontal\"}\n {...props}\n />\n));\n\nTabs.displayName = TabsPrimitive.Root.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\nconst tabsListVariants = cva(\n \"flex items-center justify-start transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted rounded-md p-1 text-muted-foreground dark:bg-gray-800/80 dark:text-gray-400\",\n pills: \"bg-transparent gap-3 p-0 dark:text-gray-400\",\n underline: \"bg-transparent border-b border-border dark:border-gray-700 gap-4 dark:text-gray-400\",\n cards: \"bg-transparent gap-2 p-0 dark:text-gray-400\",\n minimal: \"bg-transparent gap-1 p-0 dark:text-gray-400\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col items-start gap-1\"\n },\n fullWidth: {\n true: \"w-full\"\n },\n scrollable: {\n true: \"overflow-x-auto overflow-y-hidden flex-nowrap hide-scrollbar\",\n false: \"flex-wrap\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n orientation: \"horizontal\",\n fullWidth: false,\n scrollable: false\n }\n }\n);\n\ninterface TabsListProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>,\n VariantProps<typeof tabsListVariants> {\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n /** Mobil için yatay scroll */\n scrollable?: boolean;\n}\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n TabsListProps\n>(({ className, variant, orientation, fullWidth, scrollable, ...props }, ref) => {\n // scrollable prop'unu DOM'a geçirmemek için destructure ediyoruz\n return (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\"moonui-theme\", tabsListVariants({ variant, orientation, fullWidth, scrollable, className }))}\n {...props}\n />\n );\n});\n\nTabsList.displayName = TabsPrimitive.List.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap flex-shrink-0 font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"rounded-md data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/10\",\n underline: \"rounded-none border-b-2 border-transparent pb-2 data-[state=active]:border-primary data-[state=active]:bg-transparent data-[state=active]:text-foreground dark:data-[state=active]:border-primary/80 dark:data-[state=active]:text-gray-100\",\n pills: \"rounded-lg bg-gray-100 hover:bg-gray-200/80 border border-gray-300 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:border-primary dark:bg-gray-800 dark:hover:bg-gray-700 dark:border-gray-700 dark:data-[state=active]:bg-primary/90 dark:data-[state=active]:text-white dark:data-[state=active]:border-primary\",\n cards: \"rounded-md bg-muted/50 hover:bg-muted data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md dark:bg-gray-800/50 dark:hover:bg-gray-700/50 dark:data-[state=active]:bg-gray-900 dark:data-[state=active]:text-gray-100 dark:data-[state=active]:shadow-gray-950/20\",\n minimal: \"rounded-sm bg-transparent hover:bg-muted/30 data-[state=active]:bg-transparent data-[state=active]:text-foreground data-[state=active]:underline data-[state=active]:underline-offset-4 dark:hover:bg-gray-800/30 dark:data-[state=active]:text-gray-200\",\n },\n size: {\n sm: \"h-7 px-2 text-xs\",\n md: \"h-9 px-3 py-1.5 text-sm\",\n lg: \"h-10 px-4 py-2 text-base\",\n },\n orientation: {\n horizontal: \"\",\n vertical: \"justify-start w-full text-left\"\n },\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n orientation: \"horizontal\",\n fullWidth: false\n }\n }\n);\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n /** İkon konumu */\n iconPosition?: \"left\" | \"right\" | \"none\";\n /** İkon */\n icon?: React.ReactNode;\n /** Badge içeriği */\n badge?: React.ReactNode;\n /** Aktif olmayan durumda yarı saydam */\n fadeTabs?: boolean;\n /** Dikey düzende göster */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ \n className, \n variant, \n size, \n icon, \n iconPosition = \"left\", \n badge,\n fadeTabs = false,\n orientation,\n fullWidth,\n children, \n ...props \n}, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"moonui-theme\",\n tabsTriggerVariants({ variant, size, orientation, fullWidth }),\n fadeTabs && \"data-[state=inactive]:opacity-60\",\n className\n )}\n {...props}\n >\n {icon && iconPosition === \"left\" && (\n <span className=\"mr-2\">{icon}</span>\n )}\n {children}\n {icon && iconPosition === \"right\" && (\n <span className=\"ml-2\">{icon}</span>\n )}\n {badge && (\n <span className=\"ml-2\">{badge}</span>\n )}\n </TabsPrimitive.Trigger>\n));\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\ninterface TabsContentProps \n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> {\n /** İçerik animasyonu */\n animated?: boolean;\n}\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n TabsContentProps\n>(({ className, animated = false, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"mt-6 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n animated && \"data-[state=active]:animate-fadeIn data-[state=inactive]:animate-fadeOut\",\n className\n )}\n {...props}\n />\n));\n\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n/**\n * Slider Component\n *\n * Accessible, customizable slider component fully integrated with the theme system.\n * Used for value ranges like volume, brightness, price ranges.\n */\n\nconst sliderVariants = cva(\n \"relative flex w-full touch-none select-none items-center\",\n {\n variants: {\n size: {\n sm: \"h-5\",\n default: \"h-6\",\n md: \"h-8\",\n lg: \"h-10\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\nconst sliderTrackVariants = cva(\n \"relative h-1.5 w-full grow overflow-hidden rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n accent: \"bg-accent/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst sliderRangeVariants = cva(\n \"absolute h-full\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n accent: \"bg-accent\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n },\n }\n)\n\nconst sliderThumbVariants = cva(\n \"block rounded-full border-2 ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-foreground bg-background\",\n primary: \"border-primary bg-background\",\n secondary: \"border-secondary bg-background\",\n accent: \"border-accent bg-background\",\n success: \"border-success bg-background\",\n warning: \"border-warning bg-background\",\n error: \"border-error bg-background\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n)\n\n// Custom type definition for component properties\nexport type SliderBaseProps = {\n /**\n * Track variant\n */\n trackVariant?: VariantProps<typeof sliderTrackVariants>[\"variant\"];\n /**\n * Range variant\n */\n rangeVariant?: VariantProps<typeof sliderRangeVariants>[\"variant\"];\n /**\n * Thumb variant\n */\n thumbVariant?: VariantProps<typeof sliderThumbVariants>[\"variant\"];\n /**\n * Thumb size\n */\n thumbSize?: VariantProps<typeof sliderThumbVariants>[\"size\"];\n /**\n * Show value label\n */\n showValueLabel?: boolean;\n /**\n * Value label format function\n */\n valueLabelFormat?: (value: number) => string;\n /**\n * Value label class name\n */\n valueLabelClassName?: string;\n /**\n * Slider value\n */\n value?: number[];\n /**\n * Default value\n */\n defaultValue?: number[];\n /**\n * Function called when value changes\n */\n onValueChange?: (value: number[]) => void;\n /**\n * Minimum value\n */\n min?: number;\n /**\n * Maximum value\n */\n max?: number;\n /**\n * Step value\n */\n step?: number;\n /**\n * Slider size\n */\n size?: VariantProps<typeof sliderVariants>[\"size\"];\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\n// Merge HTML properties without defaultValue conflicts\nexport type SliderProps = SliderBaseProps & Omit<React.HTMLAttributes<HTMLDivElement>, 'defaultValue'>\n\nconst Slider = React.forwardRef<\n HTMLDivElement,\n SliderProps\n>(({\n className,\n size,\n trackVariant,\n rangeVariant,\n thumbVariant,\n thumbSize,\n showValueLabel = false,\n valueLabelFormat,\n valueLabelClassName,\n value,\n defaultValue = [0],\n onValueChange,\n disabled,\n ...props\n}, ref) => {\n // Value management\n const [sliderValue, setSliderValue] = React.useState<number[]>(\n value as number[] || defaultValue as number[] || [0]\n );\n\n React.useEffect(() => {\n if (value !== undefined) {\n setSliderValue(value as number[]);\n }\n }, [value]);\n\n // Format value label with proper precision handling\n const formatValue = (val: number) => {\n if (valueLabelFormat) {\n return valueLabelFormat(val);\n }\n // Round to avoid floating point precision issues\n const roundedValue = Math.round(val * 100) / 100;\n return `${roundedValue}`;\n };\n\n // Calculate percentage for thumb position\n const calculateThumbPercent = (value: number, min: number, max: number) => {\n return ((value - min) / (max - min)) * 100;\n };\n\n // Handle mouse/touch events\n const trackRef = React.useRef<HTMLDivElement>(null);\n \n const min = props.min || 0;\n const max = props.max || 100;\n const step = props.step || 1;\n\n // Handle value change with proper precision\n const handleValueChange = (newValues: number[]) => {\n // Round values to avoid floating point precision issues\n const roundedValues = newValues.map(val => {\n if (step < 1) {\n // For decimal steps, round to appropriate decimal places\n const decimals = step.toString().split('.')[1]?.length || 0;\n return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n }\n return Math.round(val);\n });\n \n setSliderValue(roundedValues);\n if (onValueChange) {\n onValueChange(roundedValues);\n }\n };\n\n // Handle track click\n const handleTrackClick = (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n \n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (event.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n // Just update the first thumb for simplicity\n newValues[0] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleThumbMouseDown = (index: number) => (event: React.MouseEvent) => {\n if (disabled) return;\n event.preventDefault();\n \n const handleMouseMove = (moveEvent: MouseEvent) => {\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const percent = (moveEvent.clientX - rect.left) / rect.width;\n const rawValue = min + percent * (max - min);\n const steppedValue = Math.round(rawValue / step) * step;\n const boundedValue = Math.max(min, Math.min(max, steppedValue));\n \n const newValues = [...sliderValue];\n newValues[index] = boundedValue;\n handleValueChange(newValues);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n };\n\n // Klavyeyle değer değiştirme (WCAG 2.1.1 Keyboard).\n //\n // Thumb'lar `role=\"slider\"` + `aria-valuenow` + `tabIndex=0` taşıyıp\n // odaklanabiliyordu, ancak hiçbir klavye handler'ı yoktu: bileşen ARIA\n // sözleşmesinde slider olduğunu duyuruyor ama yalnızca fareyle çalışıyordu.\n // Tuş eşlemesi Radix Slider davranışını izler.\n const handleThumbKeyDown = (index: number) => (event: React.KeyboardEvent) => {\n if (disabled) return;\n\n const largeStep = step * 10;\n const current = sliderValue[index];\n let next: number;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = current + step;\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = current - step;\n break;\n case \"PageUp\":\n next = current + largeStep;\n break;\n case \"PageDown\":\n next = current - largeStep;\n break;\n case \"Home\":\n next = min;\n break;\n case \"End\":\n next = max;\n break;\n default:\n return;\n }\n\n // Yalnızca yukarıdaki tuşlarda varsayılan davranışı engelle (sayfa kaydırma).\n event.preventDefault();\n\n // Çoklu thumb'da komşu değerleri aşma; tek thumb'da min/max sınırları geçerli.\n const lowerBound = index > 0 ? sliderValue[index - 1] : min;\n const upperBound =\n index < sliderValue.length - 1 ? sliderValue[index + 1] : max;\n const bounded = Math.max(lowerBound, Math.min(upperBound, next));\n\n const newValues = [...sliderValue];\n newValues[index] = bounded;\n // handleValueChange, step hassasiyetine göre yuvarlamayı zaten uyguluyor.\n handleValueChange(newValues);\n };\n\n return (\n <div className=\"w-full\" ref={ref} {...props}>\n {showValueLabel && (\n <div className={cn(\n \"flex justify-end mb-1 text-sm text-muted-foreground\",\n valueLabelClassName\n )}>\n {sliderValue.length === 1 ? (\n <span>{formatValue(sliderValue[0])}</span>\n ) : (\n <span>{formatValue(sliderValue[0])} - {formatValue(sliderValue[sliderValue.length - 1])}</span>\n )}\n </div>\n )}\n \n <div\n className={cn(\"moonui-theme\", sliderVariants({ size }), className)}\n data-disabled={disabled ? true : undefined}\n >\n {/* Track */}\n <div\n ref={trackRef}\n className={cn(sliderTrackVariants({ variant: trackVariant || thumbVariant || \"default\" }))}\n onClick={handleTrackClick}\n >\n {/* Range */}\n <div\n className={cn(sliderRangeVariants({ variant: rangeVariant || thumbVariant || \"primary\" }))}\n style={{\n left: '0%',\n width: `${calculateThumbPercent(sliderValue[0], min, max)}%`,\n }}\n />\n </div>\n\n {/* Thumbs */}\n {sliderValue.map((value, i) => (\n <div\n key={i}\n className={cn(sliderThumbVariants({\n variant: thumbVariant || \"primary\",\n size: thumbSize\n }))}\n style={{\n left: `${calculateThumbPercent(value, min, max)}%`,\n transform: 'translateX(-50%)',\n position: 'absolute',\n top: '50%',\n marginTop: thumbSize === \"sm\" ? '-6px' : thumbSize === \"lg\" ? '-12px' : '-8px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n onMouseDown={handleThumbMouseDown(i)}\n onKeyDown={handleThumbKeyDown(i)}\n aria-label={`Thumb ${i + 1}`}\n tabIndex={disabled ? -1 : 0}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-disabled={disabled}\n />\n ))}\n </div>\n </div>\n )\n})\n\nSlider.displayName = \"Slider\"\n\nexport { Slider }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Search } from \"lucide-react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent, DialogTitle } from \"./dialog\"\n\n/**\n * Command (Komut Paleti) Bileşeni\n * \n * Gerçek command palette işlevselliği ile klavye navigasyonu, arama ve filtreleme.\n * cmdk kütüphanesi üzerine inşa edilmiş, tam özellikli command interface.\n */\n\nconst commandVariants = cva(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground\",\n glass: \"bg-background/80 text-foreground backdrop-blur-sm\",\n bordered: \"bg-popover text-popover-foreground border border-border\",\n },\n size: {\n sm: \"min-h-[200px]\",\n default: \"min-h-[300px]\",\n lg: \"min-h-[400px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n// Command bileşeni - cmdk primitive wrapper\ninterface CommandProps \n extends React.ComponentProps<typeof CommandPrimitive>,\n VariantProps<typeof commandVariants> {}\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n CommandProps\n>(({ className, variant, size, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\"moonui-theme\", commandVariants({ variant, size }), className)}\n {...props}\n />\n))\n// NOT: cmdk primitive'leri displayName tanımlamaz (Radix'ten farklı olarak). Bu yüzden\n// `CommandPrimitive.*.displayName` okumak `undefined` üretiyordu ve React DevTools ile hata\n// mesajlarında bileşenler isimsiz görünüyordu. Kütüphane genelindeki konvansiyona uyarak\n// displayName'ler açık string olarak verilir.\nCommand.displayName = \"Command\"\n\n// CommandDialog bileşeni\ninterface CommandDialogProps extends React.ComponentProps<typeof Dialog> {\n commandClassName?: string\n children?: React.ReactNode\n}\n\nconst CommandDialog = ({ \n children, \n commandClassName,\n ...props \n}: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\" hideCloseButton>\n <DialogTitle className=\"sr-only\">Command Menu</DialogTitle>\n <Command className={cn(\n \"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\",\n commandClassName\n )}>\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\n// CommandInput bileşeni\ninterface CommandInputProps \n extends React.ComponentProps<typeof CommandPrimitive.Input> {}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n CommandInputProps\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\nCommandInput.displayName = \"CommandInput\"\n\n// CommandList bileşeni\ninterface CommandListProps \n extends React.ComponentProps<typeof CommandPrimitive.List> {}\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n CommandListProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"moonui-theme\", \"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\nCommandList.displayName = \"CommandList\"\n\n// CommandEmpty bileşeni\ninterface CommandEmptyProps \n extends React.ComponentProps<typeof CommandPrimitive.Empty> {}\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n CommandEmptyProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className={cn(\"moonui-theme\", \"py-6 text-center text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCommandEmpty.displayName = \"CommandEmpty\"\n\n// CommandGroup bileşeni\ninterface CommandGroupProps \n extends React.ComponentProps<typeof CommandPrimitive.Group> {}\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n CommandGroupProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\nCommandGroup.displayName = \"CommandGroup\"\n\n// CommandSeparator bileşeni\ninterface CommandSeparatorProps \n extends React.ComponentProps<typeof CommandPrimitive.Separator> {}\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n CommandSeparatorProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = \"CommandSeparator\"\n\n// CommandItem bileşeni\ninterface CommandItemProps \n extends React.ComponentProps<typeof CommandPrimitive.Item> {}\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n CommandItemProps\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n))\nCommandItem.displayName = \"CommandItem\"\n\n// CommandShortcut bileşeni - utility component\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check, Loader2, X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Dialog Component\n *\n * Modern, accessible and customizable modal dialog component.\n * Enhances user experience with variants, sizes and rich features.\n * Provides a premium appearance with dark and light mode compatibility and fluid animations.\n */\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\n\nconst overlayVariants = cva(\n \"fixed inset-0 z-50 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n {\n variants: {\n variant: {\n default: \"bg-black/80\",\n subtle: \"bg-black/60\",\n blur: \"bg-black/40 backdrop-blur-md\",\n minimal: \"bg-black/20 backdrop-blur-sm\",\n },\n animation: {\n default: \"duration-200\",\n slow: \"duration-300\",\n fast: \"duration-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animation: \"default\",\n },\n }\n);\n\ninterface DialogOverlayProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>,\n VariantProps<typeof overlayVariants> {}\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, variant, animation, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\"moonui-theme\", overlayVariants({ variant, animation }), className)}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst dialogContentVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-gray-200 dark:border-gray-700\",\n primary: \"border-primary/20 dark:border-primary/30\",\n secondary: \"border-gray-300 dark:border-gray-600\",\n ghost: \"border-transparent shadow-xl\",\n destructive: \"border-error/20 dark:border-error/30\",\n },\n size: {\n xs: \"max-w-xs p-4\",\n sm: \"max-w-sm p-5\",\n default: \"max-w-lg p-6\",\n md: \"max-w-md p-6\",\n lg: \"max-w-2xl p-7\",\n xl: \"max-w-4xl p-8\",\n full: \"max-w-[95vw] max-h-[95vh] p-6\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-md\",\n default: \"rounded-lg\",\n lg: \"rounded-xl\",\n xl: \"rounded-2xl\",\n full: \"rounded-3xl\",\n },\n animation: {\n default:\n \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n fade: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n zoom: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n slide: \"duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n none: \"\",\n },\n position: {\n default: \"top-[50%]\",\n top: \"top-[5%]\",\n bottom: \"bottom-[5%] top-auto translate-y-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"default\",\n animation: \"default\",\n position: \"default\",\n },\n }\n);\n\ninterface DialogContentProps\n extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, 'title'>,\n VariantProps<typeof dialogContentVariants> {\n /** X butonunu gizle */\n hideCloseButton?: boolean;\n /** Overlay varyantı */\n overlayVariant?: VariantProps<typeof overlayVariants>[\"variant\"];\n /** Overlay animasyonu */\n overlayAnimation?: VariantProps<typeof overlayVariants>[\"animation\"];\n /** İçerik başlığı (hızlı kullanım için) */\n title?: React.ReactNode;\n /** İçerik açıklaması (hızlı kullanım için) */\n description?: React.ReactNode;\n /** Başlık ikonu */\n icon?: React.ReactNode;\n /** Yükleniyor durumu */\n loading?: boolean;\n /** Success durumu */\n success?: boolean;\n /** Özel onClose handler */\n onClose?: () => void;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n {\n className,\n children,\n variant,\n size,\n radius,\n animation,\n position,\n overlayVariant = \"default\",\n overlayAnimation = \"default\",\n hideCloseButton = false,\n title,\n description,\n icon,\n loading = false,\n success = false,\n onClose,\n ...props\n },\n ref\n ) => {\n // Capturing the close function through the Radix Dialog API\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n };\n\n return (\n <DialogPortal>\n <DialogOverlay\n variant={overlayVariant}\n animation={overlayAnimation}\n onClick={hideCloseButton ? undefined : handleClose}\n />\n <DialogPrimitive.Content\n ref={ref}\n onEscapeKeyDown={hideCloseButton ? undefined : handleClose}\n onInteractOutside={\n hideCloseButton ? undefined : handleClose\n }\n className={cn(\n dialogContentVariants({\n variant,\n size,\n radius,\n animation,\n position,\n }),\n \"outline-none\",\n loading && \"pointer-events-none\",\n success && \"border-success/40\",\n className\n )}\n {...props}\n >\n {/* Başlık ve açıklama varsa otomatik olarak DialogHeader oluştur */}\n {(title || description || icon) && (\n <DialogHeader className=\"flex gap-4\">\n {/* İkon veya loading/success durumları */}\n {(icon || loading || success) && (\n <div className=\"flex shrink-0 items-center justify-center\">\n {loading && (\n <Loader2 className=\"h-5 w-5 animate-spin text-primary\" />\n )}\n {success && (\n <Check className=\"h-5 w-5 text-success\" />\n )}\n {!loading && !success && icon && (\n <span className=\"text-primary\">\n {icon}\n </span>\n )}\n </div>\n )}\n <div className=\"flex-1\">\n {title && <DialogTitle>{title}</DialogTitle>}\n {description && (\n <DialogDescription>\n {description}\n </DialogDescription>\n )}\n </div>\n </DialogHeader>\n )}\n\n {/* Main content */}\n {children}\n\n {/* Close button */}\n {!hideCloseButton && (\n <DialogPrimitive.Close\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary/30 focus:ring-offset-2 disabled:pointer-events-none dark:text-gray-300 dark:hover:text-white\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n }\n);\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end sm:space-x-2 mt-6\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-xl font-semibold leading-snug tracking-tight dark:text-white\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n \"text-sm text-muted-foreground leading-normal dark:text-gray-400\",\n className\n )}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\n/**\n * Dialog-Form integration for use with form support\n * Used to integrate form submission processes into the modal\n */\nconst DialogForm = React.forwardRef<\n HTMLFormElement,\n React.HTMLAttributes<HTMLFormElement>\n>(({ className, ...props }, ref) => (\n <form\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col gap-4\", className)}\n {...props}\n />\n));\nDialogForm.displayName = \"DialogForm\";\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogForm,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ColumnDef,\n SortingState,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n getFilteredRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { \n Table, \n TableBody, \n TableCell, \n TableHead, \n TableHeader, \n TableRow \n} from \"./table\";\nimport {\n ChevronLeft, \n ChevronRight, \n ArrowUpDown,\n ArrowUp,\n ArrowDown,\n Search,\n} from \"lucide-react\";\n\n/**\n * Basic DataTable Component\n * \n * A simple data table with sorting, filtering, and pagination.\n * For advanced features, upgrade to MoonUI Pro.\n */\n\ninterface DataTableBasicProps<TData, TValue> {\n /**\n * The table columns definition\n */\n columns: ColumnDef<TData, TValue>[];\n /**\n * The data to display\n */\n data: TData[];\n /**\n * Enable/disable sorting\n */\n enableSorting?: boolean;\n /**\n * Enable/disable pagination\n */\n enablePagination?: boolean;\n /**\n * Enable/disable global search\n */\n enableSearch?: boolean;\n /**\n * Default page size\n */\n pageSize?: number;\n /**\n * Search placeholder text\n */\n searchPlaceholder?: string;\n /**\n * Empty state message\n */\n emptyMessage?: string;\n /**\n * Class name\n */\n className?: string;\n}\n\nexport function DataTableBasic<TData, TValue>({\n columns,\n data,\n enableSorting = true,\n enablePagination = true,\n enableSearch = true,\n pageSize = 10,\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No results found.\",\n className,\n}: DataTableBasicProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = React.useState(\"\");\n\n const table = useReactTable({\n data,\n columns,\n onSortingChange: enableSorting ? setSorting : undefined,\n onGlobalFilterChange: enableSearch ? setGlobalFilter : undefined,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: enablePagination ? getPaginationRowModel() : undefined,\n getSortedRowModel: enableSorting ? getSortedRowModel() : undefined,\n getFilteredRowModel: enableSearch ? getFilteredRowModel() : undefined,\n state: {\n sorting,\n globalFilter,\n },\n initialState: {\n pagination: {\n pageSize,\n },\n },\n });\n\n return (\n <div className={cn(\"space-y-4\", className)}>\n {/* Search */}\n {enableSearch && (\n <div className=\"flex items-center\">\n <div className=\"relative max-w-sm\">\n <Search className=\"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground\" />\n <Input\n placeholder={searchPlaceholder}\n value={globalFilter}\n onChange={(event) => setGlobalFilter(event.target.value)}\n className=\"pl-8\"\n />\n </div>\n </div>\n )}\n\n {/* Table */}\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() && \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {enableSorting && header.column.getCanSort() && (\n <div className=\"ml-auto\">\n {header.column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"h-4 w-4\" />\n ) : header.column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"h-4 w-4 opacity-50\" />\n )}\n </div>\n )}\n </div>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n {enablePagination && (\n <div className=\"flex items-center justify-end space-x-2\">\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredRowModel().rows.length} row(s)\n </div>\n <div className=\"space-x-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n Previous\n </Button>\n <span className=\"text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </span>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Simple sortable header helper\n */\nexport function createSortableHeader(label: string) {\n return ({ column }: any) => (\n <Button\n variant=\"ghost\"\n className=\"-ml-3 h-8 data-[state=open]:bg-accent\"\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {label}\n {column.getIsSorted() === \"desc\" ? (\n <ArrowDown className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === \"asc\" ? (\n <ArrowUp className=\"ml-2 h-4 w-4\" />\n ) : (\n <ArrowUpDown className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n );\n}\n\n// Export utilities\nexport { type ColumnDef } from \"@tanstack/react-table\";","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nconst tableVariants = cva(\n \"w-full caption-bottom text-sm\",\n {\n variants: {\n variant: {\n default: \"dark:text-gray-200\",\n bordered: \"border border-border dark:border-gray-700\",\n striped: \"dark:text-gray-200\",\n card: \"border border-border dark:border-gray-700 rounded-md shadow-sm dark:shadow-gray-900/20\",\n minimal: \"border-none dark:text-gray-200\",\n },\n size: {\n sm: \"text-xs\",\n default: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ColumnDefinition<T> {\n id: string;\n header: React.ReactNode;\n accessorKey?: keyof T;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n}\n\ninterface TableProps<T>\n extends React.HTMLAttributes<HTMLTableElement>,\n VariantProps<typeof tableVariants> {\n /** Veri yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sıralama için kullanılan sütun */\n sortColumn?: string;\n /** Sıralama yönü */\n sortDirection?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSortChange?: (column: string, direction: SortDirection) => void;\n /** Boş durum için özel içerik */\n emptyContent?: React.ReactNode;\n /** Seçili satır id'leri */\n selectedRowIds?: string[];\n /** Satır seçim değiştiğinde çağrılacak fonksiyon */\n onRowSelectionChange?: (selectedRowIds: string[]) => void;\n /** Satır seçim devre dışı */\n disableRowSelection?: boolean;\n /** Her satır için benzersiz id çıkarma fonksiyonu */\n getRowId?: (row: T) => string;\n}\n\n// Tip parametresiz Table bileşeni için varsayılan tip, herhangi bir veri tipini kabul edebilmesi için\nconst Table = React.forwardRef<\n HTMLTableElement,\n TableProps<unknown>\n>(({ \n className, \n variant, \n size, \n loading, \n emptyContent,\n // Kullanılmayan özellikleri yoruma alarak lint uyarılarını önlüyoruz\n // sortColumn,\n // sortDirection,\n // onSortChange,\n // selectedRowIds,\n // onRowSelectionChange,\n // disableRowSelection,\n // getRowId,\n ...props \n}, ref) => {\n // Apply striped styles to the tbody via a class name\n const striped = variant === \"striped\";\n \n // Çocukları güvenli bir şekilde işle ve tip kontrollerini doğru yap\n const childrenWithProps = React.Children.map(props.children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === \"tbody\") {\n // Tip güvenliği için props'ları düzgün şekilde ele alıyoruz\n const tbodyProps = child.props as Record<string, unknown>;\n return React.cloneElement(child as React.ReactElement<React.HTMLAttributes<HTMLTableSectionElement>>, {\n className: cn(tbodyProps.className as string | undefined, striped && \"even:[&>tr]:bg-muted/50\")\n });\n }\n }\n return child;\n });\n \n return (\n <div className=\"relative w-full overflow-auto\">\n {/* Yükleniyor durumu için overlay */}\n {loading && (\n <div className=\"absolute inset-0 bg-background/60 flex items-center justify-center z-10\">\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent\"></div>\n </div>\n )}\n \n <table\n ref={ref}\n className={cn(\n tableVariants({ variant, size }),\n loading && \"opacity-70\",\n className\n )}\n {...props}\n >\n {childrenWithProps}\n </table>\n \n </div>\n );\n});\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"moonui-theme\", \"[&_tr]:border-b\", className)} {...props} />\n));\nTableHeader.displayName = \"TableHeader\";\n\ninterface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {\n /** Veri yoksa gösterilecek boş durum içeriği */\n emptyContent?: React.ReactNode;\n /** Varsayılan boş durum mesajı */\n emptyMessage?: string;\n}\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, emptyContent, emptyMessage = \"No data available\", children, ...props }, ref) => {\n // Çocuk elementlerin varlığını kontrol et\n const hasChildren = React.Children.count(children) > 0;\n \n return (\n <tbody\n ref={ref}\n className={cn(\"moonui-theme\", \"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {hasChildren ? (\n children\n ) : (\n <tr>\n <td colSpan={100} className=\"h-24 text-center\">\n {emptyContent || (\n <div className=\"py-6 text-muted-foreground\">\n <div className=\"text-sm\">\n {emptyMessage}\n </div>\n </div>\n )}\n </td>\n </tr>\n )}\n </tbody>\n )\n});\nTableBody.displayName = \"TableBody\";\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\"moonui-theme\", \"bg-primary text-primary-foreground font-medium\", className)}\n {...props}\n />\n));\nTableFooter.displayName = \"TableFooter\";\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n));\nTableRow.displayName = \"TableRow\";\n\ninterface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {\n /** Bu sütun için sıralama durumu */\n sortable?: boolean;\n /** Bu sütunun sıralanma durumu */\n sorted?: SortDirection;\n /** Sıralama değiştiğinde çağrılacak fonksiyon */\n onSort?: () => void;\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n}\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, TableHeadProps>(\n ({ className, sortable, sorted, onSort, align = 'left', children, ...props }, ref) => {\n // Sıralama için simgeler\n const renderSortIcon = () => {\n if (!sortable) return null;\n \n if (sorted === \"asc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M14.707 10.293a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 111.414-1.414L9 12.586V5a1 1 0 012 0v7.586l2.293-2.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n if (sorted === \"desc\") {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 9.707a1 1 0 010-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 01-1.414 1.414L11 7.414V15a1 1 0 11-2 0V7.414L6.707 9.707a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n }\n \n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"ml-1 h-4 w-4 inline-block opacity-30\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n };\n \n const alignmentClasses = {\n left: 'text-left justify-start',\n center: 'text-center justify-center',\n right: 'text-right justify-end'\n };\n\n return (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-4 align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n alignmentClasses[align].split(' ')[0], // text alignment\n sortable && \"cursor-pointer hover:text-foreground select-none\",\n className\n )}\n onClick={sortable ? onSort : undefined}\n {...props}\n >\n {sortable || align !== 'left' ? (\n <div className={cn(\"flex items-center\", alignmentClasses[align].split(' ')[1])}>\n {children}\n {sortable && renderSortIcon()}\n </div>\n ) : (\n children\n )}\n </th>\n );\n }\n);\nTableHead.displayName = \"TableHead\";\n\ninterface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n}\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n TableCellProps\n>(({ className, align = 'left', ...props }, ref) => {\n const alignmentClass = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n }[align];\n\n return (\n <td\n ref={ref}\n className={cn(\"moonui-theme\", \"p-4 align-middle [&:has([role=checkbox])]:pr-0\", alignmentClass, className)}\n {...props}\n />\n );\n});\nTableCell.displayName = \"TableCell\";\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"moonui-theme\", \"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nTableCaption.displayName = \"TableCaption\";\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n\nexport type { TableBodyProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format, isValid } from \"date-fns\";\nimport { Calendar as CalendarIcon, Clock } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\nimport { Calendar } from \"./calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"./popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n// Define pageTransitions locally since micro-interactions might not exist\nconst pageTransitions = {\n initial: { opacity: 0, x: 20 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -20 }\n};\n\n/**\n * DatePicker Component\n * \n * A comprehensive date picker with calendar interface\n */\n\nconst datePickerVariants = cva(\n \"w-full justify-start text-left font-normal\",\n {\n variants: {\n variant: {\n default: \"\",\n outline: \"border-2\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-8 px-3 text-sm\",\n lg: \"h-12 px-6 text-base\",\n icon: \"h-10 w-10\",\n },\n state: {\n default: \"\",\n error: \"border-destructive focus:ring-destructive\",\n success: \"border-success focus:ring-success\",\n warning: \"border-warning focus:ring-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n state: \"default\",\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\" | \"value\">,\n VariantProps<typeof datePickerVariants> {\n /**\n * Selected date value\n */\n value?: Date;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Date format string\n */\n formatString?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled dates\n */\n disabledDates?: Date[];\n /**\n * Disabled days of week (0-6, Sunday is 0)\n */\n disabledDaysOfWeek?: number[];\n /**\n * Show week numbers\n */\n showWeekNumbers?: boolean;\n /**\n * Icon position\n */\n iconPosition?: \"left\" | \"right\";\n /**\n * Custom icon\n */\n icon?: React.ReactNode;\n /**\n * Allow clear\n */\n allowClear?: boolean;\n /**\n * Read only\n */\n readOnly?: boolean;\n /**\n * Show today button\n */\n showTodayButton?: boolean;\n /**\n * Calendar props\n */\n calendarProps?: React.ComponentProps<typeof Calendar>;\n}\n\n// NOT (issue #264): dört seçici de düz fonksiyondu, ref geçme yolu yoktu.\n// Her biri KENDİ gerçek kök DOM elemanına bağlanır — DOM yapısı değişmez.\n// DatePicker/DateTimePicker kök bir <div> render eder; DateRangePicker ve\n// MonthPicker'ın kökü Radix `Popover`'dır ve kendisi DOM üretmez, bu yüzden\n// onlarda ref tetikleyici butona gider.\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker({\n className,\n variant,\n size,\n state,\n value,\n onChange,\n placeholder = \"Pick a date\",\n formatString = \"PPP\",\n minDate,\n maxDate,\n disabledDates,\n disabledDaysOfWeek,\n showWeekNumbers,\n iconPosition = \"left\",\n icon,\n allowClear = true,\n readOnly = false,\n showTodayButton = true,\n calendarProps,\n disabled,\n ...props\n}: DatePickerProps, ref: React.ForwardedRef<HTMLDivElement>) {\n const [open, setOpen] = React.useState(false);\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(value);\n\n React.useEffect(() => {\n setInternalDate(value);\n }, [value]);\n\n const handleSelect = (date: Date | Date[] | { from?: Date; to?: Date } | undefined) => {\n // Handle single date selection for now\n const singleDate = Array.isArray(date) ? date[0] : \n (date && typeof date === 'object' && 'from' in date) ? date.from :\n date as Date | undefined;\n setInternalDate(singleDate);\n onChange?.(singleDate);\n if (singleDate) {\n setOpen(false);\n }\n };\n\n // Hem fare hem klavye (Enter/Space) yolundan çağrılıyor; yalnızca\n // `stopPropagation` kullanıldığı için ortak taban tipi yeterli.\n // (Önceden `React.MouseEvent` bekliyordu ve klavye yolunda `as any` ile\n // zorlanıyordu.)\n const handleClear = (e: React.SyntheticEvent) => {\n e.stopPropagation();\n handleSelect(undefined);\n };\n\n const handleToday = () => {\n const today = new Date();\n handleSelect(today);\n };\n\n const isDateDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n if (disabledDates?.some(d => d.toDateString() === date.toDateString())) return true;\n if (disabledDaysOfWeek?.includes(date.getDay())) return true;\n return false;\n };\n\n const displayValue = internalDate && isValid(internalDate)\n ? format(internalDate, formatString)\n : null;\n\n const iconElement = icon || <CalendarIcon className=\"h-4 w-4\" />;\n\n return (\n <div ref={ref} className=\"moonui-theme\">\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={variant === \"ghost\" ? \"ghost\" : \"outline\"}\n className={cn(\n datePickerVariants({ variant, size, state }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={disabled || readOnly}\n {...props}\n >\n <AnimatePresence mode=\"wait\">\n <motion.div\n key={displayValue || \"placeholder\"}\n initial={{ opacity: 0, y: -2 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 2 }}\n transition={{ duration: 0.15 }}\n className=\"flex items-center gap-2 flex-1\"\n >\n {iconPosition === \"left\" && iconElement}\n <span className=\"flex-1 truncate\">\n {displayValue || placeholder}\n </span>\n {iconPosition === \"right\" && iconElement}\n </motion.div>\n </AnimatePresence>\n {allowClear && displayValue && !readOnly && !disabled && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n className=\"ml-2 h-4 w-4 shrink-0 opacity-50 hover:opacity-100 transition-opacity cursor-pointer\"\n onClick={handleClear}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClear(e);\n }\n }}\n >\n <span className=\"sr-only\">Clear date</span>\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n />\n </svg>\n </motion.div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent \n className=\"w-[360px] p-0 shadow-2xl rounded-2xl border border-border bg-background/95 backdrop-blur-sm !z-[9999]\" \n align=\"start\"\n sideOffset={12}\n >\n <motion.div\n {...pageTransitions}\n className=\"rounded-2xl bg-background overflow-hidden\"\n >\n <Calendar\n mode=\"single\"\n selected={internalDate}\n onSelect={handleSelect}\n disabled={isDateDisabled}\n showOutsideDays={false}\n className={cn(\"rounded-2xl\", calendarProps?.className)}\n {...calendarProps}\n />\n {showTodayButton && (\n <div className=\"border-t px-4 py-3\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleToday}\n className=\"w-full justify-center hover:bg-accent hover:text-accent-foreground transition-all duration-200\"\n >\n Today\n </Button>\n </div>\n )}\n </motion.div>\n </PopoverContent>\n </Popover>\n </div>\n );\n});\nDatePicker.displayName = \"DatePicker\";\n\n/**\n * DateRangePicker Component\n * \n * Select a date range with start and end dates\n */\n\nexport interface DateRangePickerProps\n extends Omit<DatePickerProps, \"value\" | \"onChange\"> {\n /**\n * Selected date range\n */\n value?: { from: Date | undefined; to?: Date | undefined };\n /**\n * Callback when date range changes\n */\n onChange?: (range: { from: Date | undefined; to?: Date | undefined } | undefined) => void;\n /**\n * Separator between dates\n */\n separator?: string;\n}\n\nexport const DateRangePicker = React.forwardRef<HTMLButtonElement, DateRangePickerProps>(function DateRangePicker({\n className,\n value,\n onChange,\n placeholder = \"Pick a date range\",\n formatString = \"LLL dd, y\",\n separator = \" - \",\n ...props\n}: DateRangePickerProps, ref: React.ForwardedRef<HTMLButtonElement>) {\n const [open, setOpen] = React.useState(false);\n const [internalRange, setInternalRange] = React.useState(value);\n\n React.useEffect(() => {\n setInternalRange(value);\n }, [value]);\n\n // NOT: `to` OPSİYONEL. react-day-picker'ın `DateRange` tipi de öyle\n // (`to?: Date | undefined`). Önce burada zorunlu-ama-undefined yazılmıştı ve\n // uyuşmadığı için `onSelect={handleSelect}` cast'i gerekiyordu.\n const handleSelect = (range: { from: Date | undefined; to?: Date | undefined } | undefined) => {\n setInternalRange(range);\n onChange?.(range);\n if (range?.from && range?.to) {\n setOpen(false);\n }\n };\n\n const displayValue = React.useMemo(() => {\n if (!internalRange?.from) return null;\n if (!internalRange?.to) {\n return format(internalRange.from, formatString);\n }\n return `${format(internalRange.from, formatString)}${separator}${format(\n internalRange.to,\n formatString\n )}`;\n }, [internalRange, formatString, separator]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={props.variant === \"ghost\" ? \"ghost\" : \"outline\"}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n <span className=\"flex-1 truncate text-left\">\n {displayValue || placeholder}\n </span>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0 shadow-2xl rounded-2xl border border-border bg-background/95 backdrop-blur-sm !z-[9999]\" align=\"start\" sideOffset={12}>\n <Calendar\n mode=\"range\"\n defaultMonth={internalRange?.from}\n selected={internalRange}\n onSelect={handleSelect}\n showOutsideDays={false}\n {...props.calendarProps}\n className=\"rounded-2xl\"\n />\n </PopoverContent>\n </Popover>\n );\n});\nDateRangePicker.displayName = \"DateRangePicker\";\n\n/**\n * DateTimePicker Component\n * \n * Combined date and time picker\n */\n\nexport interface DateTimePickerProps extends DatePickerProps {\n /**\n * Show time picker\n */\n showTimePicker?: boolean;\n /**\n * Time format (12 or 24 hour)\n */\n timeFormat?: \"12\" | \"24\";\n /**\n * Time interval in minutes\n */\n timeInterval?: number;\n}\n\nexport const DateTimePicker = React.forwardRef<HTMLDivElement, DateTimePickerProps>(function DateTimePicker({\n value,\n onChange,\n // Saat ayrı bir <select> ile gösterildiği için buton yalnızca TARİHİ yazar;\n // varsayılan bu yüzden \"PPP p\" değil \"PPP\". (Eski hâlde \"PPP p\" alınıp hiç\n // kullanılmıyordu — çağıranın verdiği formatString sessizce yok sayılıyordu.)\n formatString = \"PPP\",\n showTimePicker = true,\n timeFormat = \"24\",\n timeInterval = 15,\n ...props\n}: DateTimePickerProps, ref: React.ForwardedRef<HTMLDivElement>) {\n const [date, setDate] = React.useState<Date | undefined>(value);\n const [time, setTime] = React.useState<string>(\n value ? format(value, timeFormat === \"24\" ? \"HH:mm\" : \"hh:mm a\") : \"00:00\"\n );\n\n const handleDateChange = (newDate: Date | undefined) => {\n if (!newDate) {\n setDate(undefined);\n onChange?.(undefined);\n return;\n }\n\n const [hours, minutes] = time.split(\":\").map(Number);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n };\n\n const handleTimeChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const newTime = e.target.value;\n setTime(newTime);\n\n if (date) {\n const [hours, minutes] = newTime.split(\":\").map(Number);\n const newDate = new Date(date);\n newDate.setHours(hours, minutes);\n setDate(newDate);\n onChange?.(newDate);\n }\n };\n\n // Generate time options\n const timeOptions = React.useMemo(() => {\n const options = [];\n for (let h = 0; h < 24; h++) {\n for (let m = 0; m < 60; m += timeInterval) {\n const hour24 = h.toString().padStart(2, \"0\");\n const minute = m.toString().padStart(2, \"0\");\n const time24 = `${hour24}:${minute}`;\n \n if (timeFormat === \"12\") {\n const hour12 = h === 0 ? 12 : h > 12 ? h - 12 : h;\n const ampm = h < 12 ? \"AM\" : \"PM\";\n const time12 = `${hour12}:${minute} ${ampm}`;\n options.push({ value: time24, label: time12 });\n } else {\n options.push({ value: time24, label: time24 });\n }\n }\n }\n return options;\n }, [timeFormat, timeInterval]);\n\n return (\n <div ref={ref} className=\"flex flex-col gap-2\">\n <DatePicker\n {...props}\n value={date}\n onChange={handleDateChange}\n formatString={formatString}\n showTodayButton={false}\n />\n {showTimePicker && date && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"flex items-center gap-2\"\n >\n <Clock className=\"h-4 w-4 text-muted-foreground\" />\n <select\n value={time}\n onChange={handleTimeChange}\n className=\"flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n {timeOptions.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </motion.div>\n )}\n </div>\n );\n});\nDateTimePicker.displayName = \"DateTimePicker\";\n\n/**\n * MonthPicker Component\n * \n * Select month and year\n */\n\nexport interface MonthPickerProps extends Omit<DatePickerProps, \"formatString\"> {\n /**\n * Format for displaying the month\n */\n formatString?: string;\n}\n\nexport const MonthPicker = React.forwardRef<HTMLButtonElement, MonthPickerProps>(function MonthPicker({\n value,\n onChange,\n placeholder = \"Pick a month\",\n formatString = \"MMMM yyyy\",\n ...props\n}: MonthPickerProps, ref: React.ForwardedRef<HTMLButtonElement>) {\n const [open, setOpen] = React.useState(false);\n const [viewDate, setViewDate] = React.useState(value || new Date());\n\n const months = [\n \"January\", \"February\", \"March\", \"April\",\n \"May\", \"June\", \"July\", \"August\",\n \"September\", \"October\", \"November\", \"December\"\n ];\n\n const handleMonthSelect = (monthIndex: number) => {\n const newDate = new Date(viewDate);\n newDate.setMonth(monthIndex);\n onChange?.(newDate);\n setOpen(false);\n };\n\n const handleYearChange = (increment: number) => {\n const newDate = new Date(viewDate);\n newDate.setFullYear(newDate.getFullYear() + increment);\n setViewDate(newDate);\n };\n\n const displayValue = value ? format(value, formatString) : null;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n ref={ref}\n variant={props.variant === \"default\" ? \"outline\" : (props.variant || \"outline\")}\n className={cn(\n datePickerVariants({ \n variant: props.variant, \n size: props.size, \n state: props.state \n }),\n !displayValue && \"text-muted-foreground\",\n props.className\n )}\n disabled={props.disabled || props.readOnly}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {displayValue || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-0 shadow-2xl border border-border bg-background !z-[9999]\" align=\"start\">\n <div className=\"p-3\">\n <div className=\"flex items-center justify-between mb-3\">\n {/* İkon-only butonlar: erişilebilir ad olmadan ekran okuyucu\n yalnızca \"button\" der, hangi yöne gidileceği anlaşılmaz. */}\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={`Previous year, ${viewDate.getFullYear() - 1}`}\n onClick={() => handleYearChange(-1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"font-semibold\">\n {viewDate.getFullYear()}\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n aria-label={`Next year, ${viewDate.getFullYear() + 1}`}\n onClick={() => handleYearChange(1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map((month, index) => (\n <Button\n key={month}\n variant={value && value.getMonth() === index ? \"primary\" : \"outline\"}\n size=\"sm\"\n onClick={() => handleMonthSelect(index)}\n className=\"h-8 text-xs\"\n >\n {month.slice(0, 3)}\n </Button>\n ))}\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n});\nMonthPicker.displayName = \"MonthPicker\";\n\n// Re-export utilities\nexport { format } from \"date-fns\";\n\n// Import ChevronLeft and ChevronRight for MonthPicker\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";","\"use client\"\n\n// Basic Draggable List - Free Version\n\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface DraggableListProps<T> {\n items: T[]\n onReorder: (items: T[]) => void\n renderItem: (item: T, index: number) => React.ReactNode\n keyExtractor: (item: T) => string\n className?: string\n disabled?: boolean\n}\n\nexport function DraggableList<T>({\n items,\n onReorder,\n renderItem,\n keyExtractor,\n className,\n disabled = false\n}: DraggableListProps<T>) {\n const [draggedIndex, setDraggedIndex] = React.useState<number | null>(null)\n\n const handleDragStart = (e: React.DragEvent, index: number) => {\n if (disabled) return\n setDraggedIndex(index)\n e.dataTransfer.effectAllowed = \"move\"\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"move\"\n }\n\n const handleDrop = (e: React.DragEvent, dropIndex: number) => {\n e.preventDefault()\n \n if (disabled || draggedIndex === null || draggedIndex === dropIndex) {\n setDraggedIndex(null)\n return\n }\n\n const newItems = [...items]\n const draggedItem = newItems[draggedIndex]\n \n newItems.splice(draggedIndex, 1)\n newItems.splice(dropIndex, 0, draggedItem)\n \n onReorder(newItems)\n setDraggedIndex(null)\n }\n\n const handleDragEnd = () => {\n setDraggedIndex(null)\n }\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-2\", className)}>\n {items.map((item, index) => (\n <div\n key={keyExtractor(item)}\n draggable={!disabled}\n onDragStart={(e) => handleDragStart(e, index)}\n onDragOver={handleDragOver}\n onDrop={(e) => handleDrop(e, index)}\n onDragEnd={handleDragEnd}\n className={cn(\n \"transition-opacity duration-200\",\n !disabled && \"cursor-move hover:opacity-80\",\n draggedIndex === index && \"opacity-50\",\n disabled && \"cursor-not-allowed\"\n )}\n >\n {renderItem(item, index)}\n </div>\n ))}\n </div>\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"moonui-theme\", \"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}","\"use client\"\n\nimport React, { useCallback, useState, useId } from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { Button } from './button'\nimport { Progress } from './progress'\nimport { Badge } from './badge'\nimport { cn } from '../../lib/utils'\nimport { \n Upload, \n X, \n File, \n Image as ImageIcon, \n Video, \n Music, \n FileText,\n CheckCircle,\n AlertCircle,\n Loader2\n} from 'lucide-react'\n\n/**\n * `onUpload` geri çağrımına geçilen asgari dosya kaydı.\n *\n * NEDEN AYRI VE DAR BİR TİP (#285):\n * Pro `FileUpload` aynı prop'u `FileUploadItem[]` ile çağırır; o tip chunking,\n * hız, metadata, önizleme gibi yalnız Pro'da var olan alanları taşır. Free\n * bunları üretemediği için o tipi buraya taşımak, hiç dolmayacak alanlar\n * VAAT eden yanıltıcı bir sözleşme olurdu.\n *\n * Bunun yerine iki paketin GÜVENLE ortak olan yüzeyi yayınlanır: `id` + `file`.\n * (`status` ve `preview` iki pakette farklı tiplerde olduğu için dışarıda\n * bırakıldı.) Yapısal tipleme sayesinde bu şekle göre yazılmış bir handler\n * hem free hem Pro tarafından kabul edilir — free'den Pro'ya geçiş sıfır\n * değişiklik ister:\n *\n * ```tsx\n * const handleUpload = async (files: FileUploadEntry[]) => {\n * for (const { id, file } of files) await send(id, file)\n * }\n * <FileUpload onUpload={handleUpload} /> // free\n * <FileUploadPro onUpload={handleUpload} /> // pro\n * ```\n */\nexport interface FileUploadEntry {\n id: string\n file: File\n}\n\nexport interface FileUploadProps {\n accept?: string\n multiple?: boolean\n maxSize?: number // in bytes\n maxFiles?: number\n disabled?: boolean\n className?: string\n onUpload?: (files: FileUploadEntry[]) => Promise<void>\n onRemove?: (fileId: string) => void\n children?: React.ReactNode\n}\n\ninterface UploadedFile extends FileUploadEntry {\n progress: number\n status: 'uploading' | 'success' | 'error'\n preview?: string\n}\n\nconst getFileIcon = (type: string) => {\n if (type.startsWith('image/')) return <ImageIcon className=\"h-4 w-4\" />\n if (type.startsWith('video/')) return <Video className=\"h-4 w-4\" />\n if (type.startsWith('audio/')) return <Music className=\"h-4 w-4\" />\n if (type.includes('text') || type.includes('document')) return <FileText className=\"h-4 w-4\" />\n return <File className=\"h-4 w-4\" />\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const sizes = ['Bytes', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n\nconst FileItem = ({ \n uploadedFile, \n onRemove \n}: { \n uploadedFile: UploadedFile\n onRemove: (id: string) => void \n}) => {\n const { id, file, progress, status, preview } = uploadedFile\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-3 p-3 border rounded-lg bg-background\"\n >\n {/* File Preview/Icon */}\n <div className=\"flex-shrink-0\">\n {preview ? (\n <img \n src={preview} \n alt={file.name}\n className=\"h-10 w-10 object-cover rounded\"\n />\n ) : (\n <div className=\"h-10 w-10 rounded bg-muted flex items-center justify-center\">\n {getFileIcon(file.type)}\n </div>\n )}\n </div>\n\n {/* File Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium truncate\">{file.name}</p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => onRemove(id)}\n /* Yalnız ikon içeren düğmenin erişilebilir adı YOKTU (WCAG 4.1.2).\n Ad dosya adını taşır; liste hâlinde birden çok kaldırma düğmesi\n olduğu için sabit bir metin hangisinin kaldırılacağını ayırt\n ettirmezdi (aynı sınıf sorun: #298). */\n aria-label={`Remove ${file.name}`}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n \n <div className=\"flex items-center space-x-2 mt-1\">\n <p className=\"text-xs text-muted-foreground\">{formatFileSize(file.size)}</p>\n \n {/* Status Badge */}\n {status === 'uploading' && (\n <Badge variant=\"secondary\" className=\"h-5\">\n <Loader2 className=\"h-3 w-3 mr-1 animate-spin\" />\n Uploading\n </Badge>\n )}\n {status === 'success' && (\n <Badge variant=\"success\" className=\"h-5\">\n <CheckCircle className=\"h-3 w-3 mr-1\" />\n Done\n </Badge>\n )}\n {status === 'error' && (\n <Badge variant=\"destructive\" className=\"h-5\">\n <AlertCircle className=\"h-3 w-3 mr-1\" />\n Error\n </Badge>\n )}\n </div>\n\n {/* Progress Bar */}\n {status === 'uploading' && (\n <div className=\"mt-2\">\n <Progress value={progress} className=\"h-1\" />\n </div>\n )}\n </div>\n </motion.div>\n )\n}\n\nexport const FileUpload = React.forwardRef<HTMLDivElement, FileUploadProps>(\n ({ \n accept = \"*\",\n multiple = true,\n maxSize = 10 * 1024 * 1024, // 10MB\n maxFiles = 5,\n disabled = false,\n className,\n onUpload,\n onRemove,\n children,\n ...props \n }, ref) => {\n const [uploadedFiles, setUploadedFiles] = useState<UploadedFile[]>([])\n const [isDragOver, setIsDragOver] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const validateFile = (file: File): string | null => {\n if (file.size > maxSize) {\n return `File size exceeds ${formatFileSize(maxSize)}`\n }\n\n if (accept !== \"*\" && !accept.split(',').some(type => {\n const cleanType = type.trim()\n if (cleanType.includes('*')) {\n return file.type.startsWith(cleanType.replace('*', ''))\n }\n return file.type === cleanType\n })) {\n return `File type not supported`\n }\n\n return null\n }\n\n const processFiles = useCallback(async (files: FileList | File[]) => {\n const fileArray = Array.from(files)\n setError(null)\n\n // Check total file count\n if (uploadedFiles.length + fileArray.length > maxFiles) {\n setError(`Maximum ${maxFiles} files allowed`)\n return\n }\n\n const validFiles: File[] = []\n const errors: string[] = []\n\n // Validate each file\n fileArray.forEach(file => {\n const validationError = validateFile(file)\n if (validationError) {\n errors.push(`${file.name}: ${validationError}`)\n } else {\n validFiles.push(file)\n }\n })\n\n if (errors.length > 0) {\n setError(errors.join(', '))\n return\n }\n\n // Create uploaded file entries\n const newUploadedFiles: UploadedFile[] = validFiles.map((file, index) => ({\n id: `${Date.now()}-${index}-${file.name.replace(/[^a-zA-Z0-9]/g, '')}`,\n file,\n progress: 0,\n status: 'uploading' as const,\n preview: file.type.startsWith('image/') ? URL.createObjectURL(file) : undefined\n }))\n\n setUploadedFiles(prev => [...prev, ...newUploadedFiles])\n\n // Simulate upload progress\n for (const uploadedFile of newUploadedFiles) {\n let progress = 0\n const interval = setInterval(() => {\n progress += 15 + (uploadedFile.file.size % 10) // Deterministic progress based on file size\n if (progress >= 100) {\n progress = 100\n clearInterval(interval)\n \n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress: 100, status: 'success' as const }\n : f\n )\n )\n } else {\n setUploadedFiles(prev => \n prev.map(f => \n f.id === uploadedFile.id \n ? { ...f, progress }\n : f\n )\n )\n }\n }, 200)\n }\n\n // Call onUpload if provided\n if (onUpload) {\n try {\n // id taşıyan kayıtlar zaten yukarıda kuruldu; eskiden ham File[]\n // gönderiliyordu ve tüketici onRemove(fileId) alsa da o id'leri\n // hiçbir yerden öğrenemiyordu (#285).\n await onUpload(newUploadedFiles)\n } catch (error) {\n console.error('Upload failed:', error)\n setUploadedFiles(prev => \n prev.map(f => \n newUploadedFiles.some(nf => nf.id === f.id)\n ? { ...f, status: 'error' as const }\n : f\n )\n )\n }\n }\n }, [uploadedFiles.length, maxFiles, maxSize, accept, onUpload])\n\n const handleDrop = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n \n if (disabled) return\n \n const files = e.dataTransfer.files\n if (files.length > 0) {\n processFiles(files)\n }\n }, [processFiles, disabled])\n\n const handleDragOver = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n if (!disabled) {\n setIsDragOver(true)\n }\n }, [disabled])\n\n const handleDragLeave = useCallback((e: React.DragEvent) => {\n e.preventDefault()\n setIsDragOver(false)\n }, [])\n\n const handleFileSelect = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files\n if (files && files.length > 0) {\n processFiles(files)\n }\n // Reset input value\n e.target.value = ''\n }, [processFiles])\n\n const removeFile = useCallback((fileId: string) => {\n setUploadedFiles(prev => {\n const fileToRemove = prev.find(f => f.id === fileId)\n if (fileToRemove?.preview) {\n URL.revokeObjectURL(fileToRemove.preview)\n }\n return prev.filter(f => f.id !== fileId)\n })\n \n if (onRemove) {\n onRemove(fileId)\n }\n }, [onRemove])\n\n return (\n <div ref={ref} className={cn(\"moonui-theme\", \"space-y-4\", className)} {...props}>\n {/* Upload Area */}\n <motion.div\n className={cn(\n \"relative border-2 border-dashed rounded-lg p-8 text-center transition-colors\",\n isDragOver && \"border-primary bg-primary/5\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !disabled && \"hover:border-primary/50 cursor-pointer\"\n )}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n animate={{\n scale: isDragOver ? 1.02 : 1,\n borderColor: isDragOver ? \"hsl(var(--primary))\" : \"hsl(var(--border))\"\n }}\n >\n <input\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n onChange={handleFileSelect}\n // Input görsel olarak gizli (opacity-0) ve ilişkili bir <label>'ı\n // yok — erişilebilir ad olmadan ekran okuyucu bunu adsız bir dosya\n // alanı olarak duyuruyordu.\n aria-label={multiple ? \"Choose files to upload\" : \"Choose a file to upload\"}\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\"\n />\n \n {children || (\n <div className=\"space-y-4\">\n <div className=\"mx-auto h-12 w-12 text-muted-foreground\">\n <Upload className=\"h-full w-full\" />\n </div>\n <div>\n <p className=\"text-lg font-medium\">\n {isDragOver ? 'Drop files here' : 'Upload files'}\n </p>\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop files here, or click to select\n </p>\n <p className=\"text-xs text-muted-foreground mt-2\">\n Max {maxFiles} files, {formatFileSize(maxSize)} each\n </p>\n </div>\n <Button variant=\"outline\" disabled={disabled}>\n Select Files\n </Button>\n </div>\n )}\n </motion.div>\n\n {/* Error Message */}\n <AnimatePresence>\n {error && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n className=\"flex items-center space-x-2 text-sm text-destructive\"\n >\n <AlertCircle className=\"h-4 w-4\" />\n <span>{error}</span>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Uploaded Files */}\n <AnimatePresence>\n {uploadedFiles.length > 0 && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n className=\"space-y-2\"\n >\n <h4 className=\"text-sm font-medium\">\n Uploaded Files ({uploadedFiles.length})\n </h4>\n <div className=\"space-y-2\">\n <AnimatePresence>\n {uploadedFiles.map(uploadedFile => (\n <FileItem\n key={uploadedFile.id}\n uploadedFile={uploadedFile}\n onRemove={removeFile}\n />\n ))}\n </AnimatePresence>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n }\n)\n\nFileUpload.displayName = \"FileUpload\"","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Progress Bileşeni\n *\n * İlerleme durumunu görsel olarak gösteren, tema sistemiyle tam entegre bir bileşen.\n * Yükleme işlemleri, form gönderimi ve diğer zaman alan işlemleri göstermek için kullanılır.\n */\n\nconst progressVariants = cva(\n \"relative overflow-hidden bg-muted\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/20\",\n secondary: \"bg-secondary/20\",\n success: \"bg-success/20\",\n warning: \"bg-warning/20\",\n error: \"bg-error/20\",\n },\n size: {\n xs: \"h-1\",\n sm: \"h-1.5\",\n default: \"h-2\",\n md: \"h-2.5\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n default: \"rounded-md\", \n lg: \"rounded-lg\",\n full: \"rounded-full\",\n },\n animation: {\n default: \"[&>div]:transition-all [&>div]:duration-500\",\n smooth: \"[&>div]:transition-all [&>div]:duration-700\",\n fast: \"[&>div]:transition-all [&>div]:duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n radius: \"full\",\n animation: \"default\",\n },\n }\n);\n\nconst progressIndicatorVariants = cva(\n \"h-full w-full flex-1\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n primary: \"bg-primary\",\n secondary: \"bg-secondary\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n },\n animation: {\n default: \"transition-all duration-500\",\n smooth: \"transition-all duration-700\",\n fast: \"transition-all duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n animation: \"default\",\n },\n }\n);\n\nexport interface ProgressProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n /**\n * İlerleme çubuğu değeri (0-100)\n */\n value?: number;\n /**\n * İndikatör (dolgu) için renk varyantı\n */\n indicatorVariant?: VariantProps<typeof progressIndicatorVariants>[\"variant\"];\n /**\n * İlerleme durumunu gösteren metin görünürlüğü\n */\n showValueLabel?: boolean;\n /**\n * İlerleme değeri etiketi için format (ör: \"30%\" veya \"3/10\")\n */\n valueLabel?: string;\n /**\n * Etiket stili\n */\n labelClassName?: string;\n /**\n * Belirsiz ilerleme animasyonu (indeterminate)\n */\n indeterminate?: boolean;\n /**\n * İlerleme değeri maksimumu (default: 100)\n */\n max?: number;\n}\n\nconst Progress = React.forwardRef<\n HTMLDivElement,\n ProgressProps\n>(({\n className,\n value = 0,\n variant,\n size,\n radius,\n animation,\n indicatorVariant,\n showValueLabel = false,\n valueLabel,\n labelClassName,\n indeterminate = false,\n max = 100,\n ...props\n}, ref) => {\n // İlerleme değeri 0-100 arasında olmalı\n const normalizedValue = Math.max(0, Math.min(value, max));\n const percentage = max > 0 ? (normalizedValue / max) * 100 : 0;\n \n // Etiket içeriği\n const label = valueLabel || `${Math.round(percentage)}%`;\n \n return (\n <>\n {showValueLabel && (\n <div className=\"flex justify-between items-center mb-1\">\n <span \n className={cn(\n \"text-sm font-medium text-muted-foreground\",\n labelClassName\n )}\n >\n {label}\n </span>\n </div>\n )}\n <div\n ref={ref}\n className={cn(\"moonui-theme\", progressVariants({ variant, size, radius, animation }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : normalizedValue}\n {...props}\n >\n <div\n className={cn(\n progressIndicatorVariants({ variant: indicatorVariant || \"primary\", animation }),\n indeterminate && \"animate-indeterminate-progress\"\n )}\n style={indeterminate ? {} : { transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </>\n );\n});\nProgress.displayName = \"Progress\";\n\n// Not: Belirsiz ilerleme animasyonu için CSS keyframe styles.css veya Tailwind config içinde tanımlanmalı\n// @keyframes indeterminate-progress içeren bir tanımlama yapılmalıdır\n// .animate-indeterminate-progress sınıfı da bu animasyonu kullanmalıdır\n\nexport { Progress, progressVariants };\n","\"use client\"\n\nimport React, { useState, useRef, useEffect } from \"react\"\nimport { motion, useMotionValue, useTransform, animate, PanInfo } from \"framer-motion\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface GestureDrawerProps {\n children: React.ReactNode\n isOpen: boolean\n onOpenChange: (open: boolean) => void\n direction?: \"up\" | \"down\" | \"left\" | \"right\"\n threshold?: number\n className?: string\n overlayClassName?: string\n enableSwipeToClose?: boolean\n}\n\nexport const GestureDrawer = React.forwardRef<HTMLDivElement, GestureDrawerProps>(\n ({\n children,\n isOpen,\n onOpenChange,\n direction = \"up\",\n threshold = 50,\n className,\n overlayClassName,\n enableSwipeToClose = true,\n ...props\n }, ref) => {\n const y = useMotionValue(0)\n const x = useMotionValue(0)\n \n const isVertical = direction === \"up\" || direction === \"down\"\n const motionValue = isVertical ? y : x\n \n const opacity = useTransform(motionValue, [0, threshold], [1, 0.5])\n \n const handleDragEnd = (event: any, info: PanInfo) => {\n if (!enableSwipeToClose) return\n \n const offset = isVertical ? info.offset.y : info.offset.x\n const velocity = isVertical ? info.velocity.y : info.velocity.x\n \n let shouldClose = false\n \n switch (direction) {\n case \"up\":\n shouldClose = offset > threshold || velocity > 500\n break\n case \"down\":\n shouldClose = offset < -threshold || velocity < -500\n break\n case \"left\":\n shouldClose = offset > threshold || velocity > 500\n break\n case \"right\":\n shouldClose = offset < -threshold || velocity < -500\n break\n }\n \n if (shouldClose) {\n onOpenChange(false)\n } else {\n animate(motionValue, 0, { type: \"spring\", stiffness: 300, damping: 20 })\n }\n }\n \n const getInitialPosition = () => {\n switch (direction) {\n case \"up\":\n return { y: \"100%\" }\n case \"down\":\n return { y: \"-100%\" }\n case \"left\":\n return { x: \"100%\" }\n case \"right\":\n return { x: \"-100%\" }\n default:\n return { y: \"100%\" }\n }\n }\n \n const getAnimatePosition = () => {\n return isVertical ? { y: 0 } : { x: 0 }\n }\n \n if (!isOpen) return null\n \n return (\n <div className=\"fixed inset-0 z-50\">\n {/* Overlay */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={() => onOpenChange(false)}\n className={cn(\"absolute inset-0 bg-black/50\", overlayClassName)}\n />\n \n {/* Drawer */}\n <motion.div\n ref={ref}\n drag={enableSwipeToClose ? (isVertical ? \"y\" : \"x\") : false}\n dragConstraints={{ \n top: direction === \"up\" ? 0 : undefined,\n bottom: direction === \"down\" ? 0 : undefined,\n left: direction === \"left\" ? 0 : undefined,\n right: direction === \"right\" ? 0 : undefined\n }}\n dragElastic={0.2}\n onDragEnd={handleDragEnd}\n style={{ \n [isVertical ? \"y\" : \"x\"]: motionValue,\n opacity\n }}\n initial={getInitialPosition()}\n animate={getAnimatePosition()}\n exit={getInitialPosition()}\n transition={{ type: \"spring\", damping: 30, stiffness: 300 }}\n className={cn(\n \"absolute bg-background border shadow-lg\",\n {\n \"bottom-0 left-0 right-0 rounded-t-lg\": direction === \"up\",\n \"top-0 left-0 right-0 rounded-b-lg\": direction === \"down\", \n \"top-0 bottom-0 right-0 rounded-l-lg\": direction === \"left\",\n \"top-0 bottom-0 left-0 rounded-r-lg\": direction === \"right\"\n },\n className\n )}\n {...props}\n >\n {/* Drag Handle */}\n {(direction === \"up\" || direction === \"down\") && (\n <div className=\"flex justify-center p-2\">\n <div className=\"w-12 h-1 bg-muted rounded-full\" />\n </div>\n )}\n \n {children}\n </motion.div>\n </div>\n )\n }\n)\n\nGestureDrawer.displayName = \"GestureDrawer\"","\"use client\";\n\nimport { useState, useEffect } from 'react';\nimport { Star, GitFork, Eye, ExternalLink } from 'lucide-react';\nimport { Button } from './button';\nimport { cn } from '../../lib/utils';\n\ninterface GitHubStarsProps {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n showForks?: boolean;\n showWatchers?: boolean;\n repoUrl?: string;\n}\n\ninterface GitHubStats {\n stars: number;\n forks: number;\n watchers: number;\n isLive: boolean;\n}\n\nexport function GitHubStars({\n className,\n size = 'md',\n showForks = true,\n showWatchers = false,\n repoUrl = 'https://github.com/moonui/moonui'\n}: GitHubStarsProps) {\n const [stats, setStats] = useState<GitHubStats | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStats(data);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n // Set fallback data\n setStats({\n stars: 1240,\n forks: 89,\n watchers: 156,\n isLive: false\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n const sizeClasses = {\n sm: 'text-sm gap-2',\n md: 'text-base gap-3',\n lg: 'text-lg gap-4'\n };\n\n const iconSizes = {\n sm: 14,\n md: 16,\n lg: 20\n };\n\n if (isLoading) {\n return (\n <div className={cn(\"flex items-center animate-pulse\", sizeClasses[size], className)}>\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-8 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n {showForks && (\n <div className=\"flex items-center gap-1\">\n <div className=\"w-4 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n <div className=\"w-6 h-4 bg-gray-300 dark:bg-gray-700 rounded\"></div>\n </div>\n )}\n </div>\n );\n }\n\n if (!stats) {\n return null;\n }\n\n return (\n <div className={cn(\"flex items-center\", sizeClasses[size], className)}>\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Star className=\"fill-current text-yellow-500\" size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.stars)}</span>\n </a>\n \n {showForks && (\n <a\n href={`${repoUrl}/network/members`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <GitFork size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.forks)}</span>\n </a>\n )}\n \n {showWatchers && (\n <a\n href={`${repoUrl}/watchers`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-gray-700 dark:text-gray-300 hover:text-primary transition-colors\"\n >\n <Eye size={iconSizes[size]} />\n <span className=\"font-medium\">{formatNumber(stats.watchers)}</span>\n </a>\n )}\n \n {!stats.isLive && (\n <span className=\"text-xs text-gray-500 dark:text-gray-500 ml-2\">\n (demo)\n </span>\n )}\n </div>\n );\n}\n\nexport function GitHubStarButton({\n className,\n size = 'md',\n repoUrl = 'https://github.com/moonui/moonui'\n}: {\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n repoUrl?: string;\n}) {\n const [stars, setStars] = useState<number | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n const fetchStats = async () => {\n try {\n const response = await fetch('/api/github-stars');\n const data = await response.json();\n setStars(data.stars);\n } catch (error) {\n console.error('Failed to fetch GitHub stats:', error);\n setStars(1240);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchStats();\n }, []);\n\n const formatNumber = (num: number) => {\n if (num >= 1000) {\n return (num / 1000).toFixed(1) + 'k';\n }\n return num.toString();\n };\n\n return (\n <Button\n variant=\"outline\"\n size={size}\n className={cn(\"moonui-theme\", \"group\", className)}\n asChild\n >\n <a\n href={repoUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2\"\n >\n <Star className=\"fill-current text-yellow-500 group-hover:scale-110 transition-transform\" size={16} />\n <span>Star on GitHub</span>\n {!isLoading && stars && (\n <span className=\"px-2 py-0.5 bg-gray-100 dark:bg-gray-800 rounded-full text-xs font-medium\">\n {formatNumber(stars)}\n </span>\n )}\n <ExternalLink size={14} className=\"opacity-50 group-hover:opacity-100 transition-opacity\" />\n </a>\n </Button>\n );\n}","\"use client\"\n\nimport * as React from \"react\";\nimport { OTPInput, OTPInputContext } from \"input-otp\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Dot } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium InputOTP Component\n *\n * input-otp kütüphanesi tabanlı, erişilebilir tek kullanımlık şifre (OTP) girişi.\n * Paste desteği, pattern doğrulama ve aktif slot vurgusu sunar.\n */\n\n// Pattern sabitleri — kullanım kolaylığı için input-otp'den yeniden export edilir\nexport {\n REGEXP_ONLY_DIGITS,\n REGEXP_ONLY_CHARS,\n REGEXP_ONLY_DIGITS_AND_CHARS,\n} from \"input-otp\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTP Root\n * -----------------------------------------------------------------------------------------------*/\nexport type InputOTPProps = React.ComponentPropsWithoutRef<typeof OTPInput>;\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n InputOTPProps\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n // input-otp gerçek girişi görsel olarak gizli bir <input> ile yapar ve o\n // input'un ilişkili bir <label>'ı yok — erişilebilir ad olmadan ekran\n // okuyucu adsız bir metin alanı duyuruyordu. Tüketici kendi aria-label'ını\n // verirse aşağıdaki {...props} yayılımı bunu ezer.\n aria-label=\"One-time password\"\n containerClassName={cn(\n \"moonui-theme\",\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n));\nInputOTP.displayName = \"InputOTP\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPGroup\n * -----------------------------------------------------------------------------------------------*/\nconst InputOTPGroup = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n));\nInputOTPGroup.displayName = \"InputOTPGroup\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPSlot\n * -----------------------------------------------------------------------------------------------*/\nconst inputOTPSlotVariants = cva(\n [\n \"relative flex h-10 w-10 items-center justify-center\",\n \"border-y border-r border-input text-sm text-foreground\",\n \"transition-all duration-200\",\n \"first:rounded-l-md first:border-l last:rounded-r-md\",\n ],\n {\n variants: {\n // Aktif slot vurgusu — token tabanlı ring stili\n isActive: {\n true: \"z-10 ring-2 ring-ring ring-offset-background\",\n false: \"\",\n },\n },\n defaultVariants: {\n isActive: false,\n },\n }\n);\n\nexport interface InputOTPSlotProps\n extends React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof inputOTPSlotVariants>, \"isActive\"> {\n /** Bu slotun temsil ettiği karakter index'i */\n index: number;\n}\n\nconst InputOTPSlot = React.forwardRef<HTMLDivElement, InputOTPSlotProps>(\n ({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext);\n const slot = inputOTPContext?.slots?.[index];\n const char = slot?.char;\n const hasFakeCaret = slot?.hasFakeCaret;\n const isActive = slot?.isActive;\n\n return (\n <div\n ref={ref}\n data-active={isActive ? \"\" : undefined}\n className={cn(inputOTPSlotVariants({ isActive: !!isActive }), className)}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n // Sahte imleç — gerçek input görünmez olduğu için aktif slotta yanıp söner\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n );\n }\n);\nInputOTPSlot.displayName = \"InputOTPSlot\";\n\n/* -------------------------------------------------------------------------------------------------\n * InputOTPSeparator\n * -----------------------------------------------------------------------------------------------*/\nconst InputOTPSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cn(\"text-muted-foreground\", className)}\n {...props}\n >\n <Dot aria-hidden=\"true\" />\n </div>\n));\nInputOTPSeparator.displayName = \"InputOTPSeparator\";\n\nexport {\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n InputOTPSeparator,\n inputOTPSlotVariants,\n};\n","\"use client\"\n\n// Locked Component UI\n// Pro componentlerin locked state'ini gösteren wrapper component\n\nimport React, { useState, useEffect } from 'react'\nimport { cn } from '../../lib/utils'\nimport { Button } from './button'\nimport { Badge } from './badge'\nimport { Lock, Crown, Zap, AlertCircle } from 'lucide-react'\n\ninterface LockedComponentProps {\n children: React.ReactNode\n componentName: string\n className?: string\n showPreview?: boolean\n previewDuration?: number // ms\n}\n\nexport function LockedComponent({\n children,\n componentName,\n className,\n showPreview = true,\n previewDuration = 2000\n}: LockedComponentProps) {\n const [isPreviewActive, setIsPreviewActive] = useState(false)\n const [previewTimeout, setPreviewTimeout] = useState<NodeJS.Timeout | null>(null)\n\n const handleMouseEnter = () => {\n if (!showPreview) return\n \n setIsPreviewActive(true)\n \n // Clear existing timeout\n if (previewTimeout) {\n clearTimeout(previewTimeout)\n }\n \n // Set new timeout\n const timeout = setTimeout(() => {\n setIsPreviewActive(false)\n }, previewDuration)\n \n setPreviewTimeout(timeout)\n }\n\n const handleMouseLeave = () => {\n if (previewTimeout) {\n clearTimeout(previewTimeout)\n setPreviewTimeout(null)\n }\n setIsPreviewActive(false)\n }\n\n return (\n <div \n className={cn(\n \"relative group cursor-pointer transition-all duration-300\",\n className\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {/* Component Content */}\n <div \n className={cn(\n \"transition-all duration-300\",\n !isPreviewActive && \"blur-sm grayscale-[0.3] opacity-60\"\n )}\n >\n {children}\n </div>\n\n {/* Overlay */}\n <div \n className={cn(\n \"absolute inset-0 bg-gradient-to-br from-amber-500/10 via-transparent to-purple-500/10\",\n \"border-2 border-dashed border-amber-400/30 rounded-lg\",\n \"flex items-center justify-center\",\n \"transition-all duration-300\",\n isPreviewActive ? \"opacity-0\" : \"opacity-100\"\n )}\n >\n <div className=\"text-center space-y-3 p-6\">\n {/* Pro Badge */}\n <div className=\"flex justify-center\">\n <Badge \n variant=\"secondary\" \n className=\"bg-gradient-to-r from-amber-500 to-orange-500 text-white border-0 px-3 py-1\"\n >\n <Crown className=\"w-3 h-3 mr-1\" />\n PRO ONLY\n </Badge>\n </div>\n\n {/* Lock Icon */}\n <div className=\"flex justify-center\">\n <div className=\"p-3 rounded-full bg-amber-100 dark:bg-amber-900/30\">\n <Lock className=\"w-6 h-6 text-amber-600 dark:text-amber-400\" />\n </div>\n </div>\n\n {/* Component Name */}\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n {componentName}\n </h3>\n\n {/* Description */}\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n This premium component is available with Pro subscription\n </p>\n\n {/* Upgrade Button */}\n <Button \n size=\"sm\" \n className=\"bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-600 hover:to-orange-600 border-0\"\n onClick={() => {\n if (typeof window !== 'undefined') {\n window.location.href = '/pricing'\n }\n }}\n >\n <Zap className=\"w-4 h-4 mr-2\" />\n Upgrade to Pro\n </Button>\n </div>\n </div>\n\n {/* Preview Hint */}\n {showPreview && !isPreviewActive && (\n <div className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity duration-200\">\n <div className=\"bg-black/80 text-white text-xs px-2 py-1 rounded\">\n Hover to preview\n </div>\n </div>\n )}\n </div>\n )\n}\n\n// Pro Component Wrapper - Otomatik erişim kontrolü ile\ninterface ProComponentWrapperProps {\n children: React.ReactNode\n componentId: string\n componentName?: string\n className?: string\n fallback?: React.ReactNode\n requireCLI?: boolean\n}\n\nexport function ProComponentWrapper({\n children,\n componentId,\n componentName,\n className,\n fallback,\n requireCLI = true\n}: ProComponentWrapperProps) {\n const [authState, setAuthState] = useState<{\n isAuthenticated: boolean\n deviceValid: boolean\n hasProAccess: boolean\n loading: boolean\n }>({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: true\n })\n\n useEffect(() => {\n // Enhanced environment detection - prevent manipulation\n const isDevelopment = () => {\n // Check multiple indicators to prevent spoofing\n const checks = {\n nodeEnv: process.env.NODE_ENV === 'development',\n nextPublicEnv: process.env.NEXT_PUBLIC_VERCEL_ENV === 'development',\n localhost: typeof window !== 'undefined' && (\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1' ||\n window.location.hostname.includes('.local')\n ),\n port: typeof window !== 'undefined' && (\n window.location.port === '3000' ||\n window.location.port === '3001' ||\n window.location.port === '8080'\n ),\n vercelEnv: !process.env.VERCEL,\n ciEnv: !process.env.CI,\n deploymentEnv: !process.env.DEPLOYMENT_ENV\n }\n \n // If running on Vercel, Netlify, or any deployment platform - it's production\n if (process.env.VERCEL || process.env.NETLIFY || process.env.RENDER || \n process.env.RAILWAY_ENVIRONMENT || process.env.FLY_APP_NAME ||\n process.env.DEPLOYMENT_ENV === 'production') {\n return false\n }\n \n // Must be localhost AND development env\n return checks.nodeEnv && checks.localhost && !checks.vercelEnv && !checks.ciEnv\n }\n \n // Skip checks only in true production or if not requiring CLI\n if (!isDevelopment() || !requireCLI) {\n setAuthState({\n isAuthenticated: true,\n deviceValid: true,\n hasProAccess: true,\n loading: false\n })\n return\n }\n\n // Check CLI authentication in development\n async function checkAuth() {\n try {\n const cliToken = localStorage.getItem('moonui_cli_token')\n const deviceId = localStorage.getItem('moonui_device_id')\n \n if (!cliToken || !deviceId) {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n return\n }\n\n // Validate token and device with API\n const response = await fetch('/api/device/validate', {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${cliToken}`,\n 'X-Device-ID': deviceId,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n environment: {\n nodeEnv: process.env.NODE_ENV,\n hostname: window.location.hostname,\n port: window.location.port,\n protocol: window.location.protocol\n }\n })\n })\n \n if (response.ok) {\n const data = await response.json()\n setAuthState({\n isAuthenticated: true,\n deviceValid: data.valid,\n hasProAccess: data.hasProAccess,\n loading: false\n })\n } else {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n }\n } catch (error) {\n setAuthState({\n isAuthenticated: false,\n deviceValid: false,\n hasProAccess: false,\n loading: false\n })\n }\n }\n\n checkAuth()\n }, [requireCLI])\n\n // Loading state\n if (authState.loading) {\n return (\n <div className={cn(\"animate-pulse bg-gray-200 dark:bg-gray-800 rounded-lg h-32\", className)}>\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-sm text-gray-500\">Loading...</div>\n </div>\n </div>\n )\n }\n\n // Development mode checks - use same enhanced detection\n const isDevelopment = () => {\n const checks = {\n nodeEnv: process.env.NODE_ENV === 'development',\n localhost: typeof window !== 'undefined' && (\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1' ||\n window.location.hostname.includes('.local')\n ),\n port: typeof window !== 'undefined' && (\n window.location.port === '3000' ||\n window.location.port === '3001' ||\n window.location.port === '8080'\n )\n }\n \n if (process.env.VERCEL || process.env.NETLIFY || process.env.RENDER || \n process.env.RAILWAY_ENVIRONMENT || process.env.FLY_APP_NAME) {\n return false\n }\n \n return checks.nodeEnv && checks.localhost\n }\n \n if (isDevelopment() && requireCLI) {\n // Not authenticated\n if (!authState.isAuthenticated) {\n return (\n <div className={cn(\"relative\", className)}>\n <div className=\"blur-sm grayscale-[0.3] opacity-60 pointer-events-none\">\n {fallback || children}\n </div>\n <div className=\"absolute inset-0 bg-gradient-to-br from-red-500/10 via-transparent to-orange-500/10 border-2 border-dashed border-red-400/30 rounded-lg flex items-center justify-center\">\n <div className=\"text-center space-y-3 p-6\">\n <Badge variant=\"destructive\" className=\"mb-2\">\n <Lock className=\"w-3 h-3 mr-1\" />\n CLI AUTH REQUIRED\n </Badge>\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n CLI Authentication Required\n </h3>\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n Run the following command to authenticate:\n </p>\n <code className=\"block bg-black/80 text-green-400 p-2 rounded text-xs\">\n npx moonui auth login\n </code>\n </div>\n </div>\n </div>\n )\n }\n\n // Device not valid\n if (!authState.deviceValid) {\n return (\n <div className={cn(\"relative\", className)}>\n <div className=\"blur-sm grayscale-[0.3] opacity-60 pointer-events-none\">\n {fallback || children}\n </div>\n <div className=\"absolute inset-0 bg-gradient-to-br from-yellow-500/10 via-transparent to-orange-500/10 border-2 border-dashed border-yellow-400/30 rounded-lg flex items-center justify-center\">\n <div className=\"text-center space-y-3 p-6\">\n <Badge variant=\"secondary\" className=\"bg-yellow-500 text-white mb-2\">\n <Zap className=\"w-3 h-3 mr-1\" />\n DEVICE LIMIT\n </Badge>\n <h3 className=\"font-semibold text-gray-900 dark:text-gray-100\">\n Device Limit Exceeded\n </h3>\n <p className=\"text-sm text-gray-600 dark:text-gray-400 max-w-xs\">\n This device is not registered or you've reached your device limit\n </p>\n <Button \n size=\"sm\" \n className=\"bg-gradient-to-r from-yellow-500 to-orange-500\"\n onClick={() => window.open('/dashboard/devices', '_blank')}\n >\n Manage Devices\n </Button>\n </div>\n </div>\n </div>\n )\n }\n\n // No pro access\n if (!authState.hasProAccess) {\n return (\n <LockedComponent\n componentName={componentName || componentId}\n className={className}\n >\n {fallback || children}\n </LockedComponent>\n )\n }\n }\n\n // All checks passed - show component\n return <div className={className}>{children}</div>\n}\n\n// Pro Badge Component\nexport function ProBadge({ className }: { className?: string }) {\n return (\n <Badge \n variant=\"secondary\"\n className={cn(\n \"bg-gradient-to-r from-amber-500 to-orange-500 text-white border-0 text-xs\",\n className\n )}\n >\n <Crown className=\"w-3 h-3 mr-1\" />\n PRO\n </Badge>\n )\n}\n\n// Free Badge Component \nexport function FreeBadge({ className }: { className?: string }) {\n return (\n <Badge \n variant=\"outline\"\n className={cn(\"border-green-500 text-green-600 dark:text-green-400 text-xs\", className)}\n >\n FREE\n </Badge>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\ninterface MoonLogoProps extends React.SVGProps<SVGSVGElement> {\n variant?: \"default\" | \"monochrome\" | \"gradient\"\n showText?: boolean\n}\n\nexport function MoonLogo({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n const logoId = React.useId()\n const gradientId = `moon-gradient-${logoId}`\n const maskId = `moon-mask-${logoId}`\n \n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {/* Moon Icon */}\n <svg\n width=\"32\"\n height=\"32\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0\"\n {...props}\n >\n <defs>\n {variant === \"gradient\" && (\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#3B82F6\" />\n <stop offset=\"50%\" stopColor=\"#8B5CF6\" />\n <stop offset=\"100%\" stopColor=\"#EC4899\" />\n </linearGradient>\n )}\n <mask id={maskId}>\n <rect width=\"32\" height=\"32\" fill=\"white\"/>\n <circle cx=\"22\" cy=\"10\" r=\"10\" fill=\"black\"/>\n </mask>\n </defs>\n \n {/* Moon Circle with transparent crescent */}\n <circle\n cx=\"16\"\n cy=\"16\"\n r=\"14\"\n fill={variant === \"gradient\" ? `url(#${gradientId})` : \"currentColor\"}\n className={variant === \"default\" ? \"fill-primary\" : \"\"}\n mask={`url(#${maskId})`}\n />\n </svg>\n \n {/* Text */}\n {showText && (\n <span className=\"text-xl font-bold\">\n <span className=\"text-foreground\">Moon</span>\n <span className=\"text-primary\">UI</span>\n </span>\n )}\n </div>\n )\n}\n\nexport function MoonLogoIcon({ \n className, \n variant = \"default\",\n ...props \n}: Omit<MoonLogoProps, \"showText\">) {\n return <MoonLogo showText={false} className={className} variant={variant} {...props} />\n}\n\nexport function MoonLogoAnimated({ \n className, \n variant = \"default\",\n showText = true,\n ...props \n}: MoonLogoProps) {\n return (\n <MoonLogo \n className={cn(\n \"transition-all duration-300 hover:scale-105\",\n className\n )} \n variant={variant}\n showText={showText}\n {...props}\n />\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\nimport { cn } from \"../../lib/utils\"\nimport { ButtonProps, buttonVariants } from \"./button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"moonui-theme\", \"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"moonui-theme\", \"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Partial<Pick<ButtonProps, \"size\">> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"md\"\n className={cn(\"moonui-theme\", \"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"md\"\n className={cn(\"moonui-theme\", \"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"moonui-theme\", \"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}","\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\nimport { Input } from \"./input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"./select\"\nimport { Phone } from \"lucide-react\"\n\n// Country codes data\nconst countryCodes = [\n { code: \"+1\", country: \"US\", flag: \"🇺🇸\", name: \"United States\" },\n { code: \"+44\", country: \"GB\", flag: \"🇬🇧\", name: \"United Kingdom\" },\n { code: \"+49\", country: \"DE\", flag: \"🇩🇪\", name: \"Germany\" },\n { code: \"+33\", country: \"FR\", flag: \"🇫🇷\", name: \"France\" },\n { code: \"+39\", country: \"IT\", flag: \"🇮🇹\", name: \"Italy\" },\n { code: \"+34\", country: \"ES\", flag: \"🇪🇸\", name: \"Spain\" },\n { code: \"+31\", country: \"NL\", flag: \"🇳🇱\", name: \"Netherlands\" },\n { code: \"+46\", country: \"SE\", flag: \"🇸🇪\", name: \"Sweden\" },\n { code: \"+47\", country: \"NO\", flag: \"🇳🇴\", name: \"Norway\" },\n { code: \"+45\", country: \"DK\", flag: \"🇩🇰\", name: \"Denmark\" },\n { code: \"+358\", country: \"FI\", flag: \"🇫🇮\", name: \"Finland\" },\n { code: \"+48\", country: \"PL\", flag: \"🇵🇱\", name: \"Poland\" },\n { code: \"+90\", country: \"TR\", flag: \"🇹🇷\", name: \"Turkey\" },\n { code: \"+86\", country: \"CN\", flag: \"🇨🇳\", name: \"China\" },\n { code: \"+81\", country: \"JP\", flag: \"🇯🇵\", name: \"Japan\" },\n { code: \"+82\", country: \"KR\", flag: \"🇰🇷\", name: \"South Korea\" },\n { code: \"+91\", country: \"IN\", flag: \"🇮🇳\", name: \"India\" },\n { code: \"+61\", country: \"AU\", flag: \"🇦🇺\", name: \"Australia\" },\n { code: \"+64\", country: \"NZ\", flag: \"🇳🇿\", name: \"New Zealand\" },\n { code: \"+27\", country: \"ZA\", flag: \"🇿🇦\", name: \"South Africa\" },\n { code: \"+55\", country: \"BR\", flag: \"🇧🇷\", name: \"Brazil\" },\n { code: \"+52\", country: \"MX\", flag: \"🇲🇽\", name: \"Mexico\" },\n { code: \"+54\", country: \"AR\", flag: \"🇦🇷\", name: \"Argentina\" },\n { code: \"+20\", country: \"EG\", flag: \"🇪🇬\", name: \"Egypt\" },\n { code: \"+966\", country: \"SA\", flag: \"🇸🇦\", name: \"Saudi Arabia\" },\n { code: \"+971\", country: \"AE\", flag: \"🇦🇪\", name: \"UAE\" },\n]\n\n// Format phone number based on country\nconst formatPhoneNumber = (value: string, countryCode: string): string => {\n const cleaned = value.replace(/\\D/g, \"\")\n \n switch (countryCode) {\n case \"+1\": // US/Canada\n if (cleaned.length <= 3) return cleaned\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6, 10)}`\n \n case \"+44\": // UK\n if (cleaned.length <= 4) return cleaned\n if (cleaned.length <= 7) return `${cleaned.slice(0, 4)} ${cleaned.slice(4)}`\n return `${cleaned.slice(0, 4)} ${cleaned.slice(4, 7)} ${cleaned.slice(7, 11)}`\n \n case \"+90\": // Turkey\n if (cleaned.length <= 3) return cleaned\n if (cleaned.length <= 6) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3)}`\n if (cleaned.length <= 9) return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)} ${cleaned.slice(6)}`\n return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)} ${cleaned.slice(6, 8)} ${cleaned.slice(8, 10)}`\n \n default: // Generic formatting\n let formatted = \"\"\n for (let i = 0; i < cleaned.length; i++) {\n if (i > 0 && i % 3 === 0) formatted += \" \"\n formatted += cleaned[i]\n }\n return formatted\n }\n}\n\n// Get max length based on country\nconst getMaxLength = (countryCode: string): number => {\n switch (countryCode) {\n case \"+1\": return 10 // US/Canada\n case \"+44\": return 11 // UK\n case \"+90\": return 10 // Turkey\n default: return 15 // Generic max\n }\n}\n\nexport interface PhoneInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\"> {\n value?: string\n onChange?: (value: string, countryCode: string) => void\n defaultCountry?: string\n showIcon?: boolean\n showCountrySelect?: boolean\n countries?: typeof countryCodes\n}\n\nexport const PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n ({ \n className, \n value = \"\", \n onChange, \n defaultCountry = \"+1\",\n showIcon = true,\n showCountrySelect = true,\n countries = countryCodes,\n size,\n ...props \n }, ref) => {\n const [countryCode, setCountryCode] = React.useState(defaultCountry)\n const [phoneNumber, setPhoneNumber] = React.useState(value)\n \n const selectedCountry = countries.find(c => c.code === countryCode) || countries[0]\n \n const handlePhoneChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value.replace(/\\D/g, \"\")\n const maxLength = getMaxLength(countryCode)\n const truncated = rawValue.slice(0, maxLength)\n const formatted = formatPhoneNumber(truncated, countryCode)\n \n setPhoneNumber(truncated)\n onChange?.(truncated, countryCode)\n \n // Update the input value with formatted version\n e.target.value = formatted\n }\n \n const handleCountryChange = (newCountryCode: string) => {\n setCountryCode(newCountryCode)\n onChange?.(phoneNumber, newCountryCode)\n }\n \n const formattedValue = formatPhoneNumber(phoneNumber, countryCode)\n \n return (\n <div className={cn(\"relative flex gap-2\", className)}>\n {showCountrySelect && (\n <Select value={countryCode} onValueChange={handleCountryChange}>\n <SelectTrigger className=\"w-[120px]\">\n <SelectValue>\n <div className=\"flex items-center gap-2\">\n <span>{selectedCountry.flag}</span>\n <span>{selectedCountry.code}</span>\n </div>\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n {countries.map((country) => (\n <SelectItem key={country.code} value={country.code}>\n <div className=\"flex items-center gap-2\">\n <span>{country.flag}</span>\n <span>{country.code}</span>\n <span className=\"text-muted-foreground\">{country.name}</span>\n </div>\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n \n <div className=\"relative flex-1\">\n <Input\n ref={ref}\n type=\"tel\"\n inputMode=\"numeric\"\n autoComplete=\"tel\"\n placeholder={countryCode === \"+1\" ? \"(555) 123-4567\" : \"123 456 789\"}\n value={formattedValue}\n onChange={handlePhoneChange}\n className={cn(showIcon && \"pl-10\", className)}\n {...props}\n />\n {showIcon && (\n <Phone className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground\" />\n )}\n </div>\n </div>\n )\n }\n)\nPhoneInput.displayName = \"PhoneInput\"","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp, Loader2 } from \"lucide-react\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Premium Select Component\n * \n * Advanced dropdown/select component with variants, sizes and accessibility features.\n * Compatible with dark and light mode, providing a modern user experience with smooth animations.\n */\n\n// Directly re-exporting the Root component\nconst Select = SelectPrimitive.Root\nSelect.displayName = \"Select\"\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\ntype SelectTriggerVariant = \"standard\" | \"outline\" | \"ghost\" | \"underline\";\ntype SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Trigger varyantları `cva()` ile yönetilir (kütüphane geneli desen). Önceden\n * `variant === \"x\" && \"...\"` manuel zincirlemesi kullanılıyor ve tüm renkler ham\n * `gray-*` paletiyle yazılıyordu — tema/karanlık mod bu değerleri etkileyemiyordu.\n * Artık semantik token'lara bağlı (`border-input`, `bg-background`, `bg-muted`…).\n */\nconst selectTriggerVariants = cva(\n [\n \"flex w-full items-center justify-between gap-1 rounded-md transition-all duration-200\",\n \"disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n \"focus-visible:outline-none text-foreground\",\n ],\n {\n variants: {\n variant: {\n standard:\n \"border border-input bg-background hover:border-ring focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary\",\n outline:\n \"border border-input bg-transparent hover:border-ring focus-visible:ring-2 focus-visible:ring-primary/30 focus-visible:border-primary\",\n ghost:\n \"border-none bg-muted hover:bg-muted/80 focus-visible:ring-2 focus-visible:ring-primary/30\",\n underline:\n \"border-t-0 border-l-0 border-r-0 border-b border-input rounded-none px-0 bg-transparent hover:border-ring focus-visible:ring-0 focus-visible:border-b-2 focus-visible:border-primary\",\n },\n size: {\n sm: \"h-8 text-xs px-2\",\n md: \"h-10 text-sm px-3\",\n lg: \"h-12 text-base px-4\",\n },\n state: {\n none: \"\",\n error: \"border-error focus-visible:ring-error/30 focus-visible:border-error\",\n success:\n \"border-success focus-visible:ring-success/30 focus-visible:border-success\",\n },\n },\n defaultVariants: {\n variant: \"standard\",\n size: \"md\",\n state: \"none\",\n },\n }\n)\n\nexport interface SelectTriggerProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> {\n /** Visual variant */\n variant?: SelectTriggerVariant;\n /** Size */\n size?: SelectTriggerSize;\n /** Error state */\n error?: boolean | string;\n /** Success state */\n success?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Icon displayed on the left */\n leftIcon?: React.ReactNode;\n /** Icon displayed on the right (instead of default chevron) */\n rightIcon?: React.ReactNode;\n}\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n SelectTriggerProps\n>(({ className, children, variant, size, error, success, loading, leftIcon, rightIcon, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n selectTriggerVariants({\n variant,\n size,\n state: error ? \"error\" : success ? \"success\" : \"none\",\n }),\n className\n )}\n {...props}\n disabled={props.disabled || loading}\n // `error` görsel olarak işaretleniyordu ama yardımcı teknolojiye hiç\n // duyurulmuyordu; Input/Textarea aynı kavramda `aria-invalid` set ediyor.\n aria-invalid={error ? true : undefined}\n data-error={error ? true : undefined}\n data-success={success ? true : undefined}\n data-loading={loading ? true : undefined}\n >\n <div className=\"flex items-center flex-1 gap-2\">\n {leftIcon && (\n <span className=\"flex items-center justify-center text-muted-foreground\">\n {leftIcon}\n </span>\n )}\n {loading ? (\n <div className=\"flex items-center gap-2\">\n <Loader2 className=\"h-3.5 w-3.5 animate-spin text-muted-foreground\" />\n <span className=\"text-muted-foreground\">Loading...</span>\n </div>\n ) : children}\n </div>\n {!loading && (\n <SelectPrimitive.Icon asChild>\n {rightIcon ? (\n <span className=\"opacity-60\">{rightIcon}</span>\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60 transition-transform duration-200 ease-out group-data-[state=open]:rotate-180\" />\n )}\n </SelectPrimitive.Icon>\n )}\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\n/**\n * Scroll Up Button Component\n */\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\n/**\n * Scroll Down Button Component\n */\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1 text-muted-foreground hover:text-foreground transition-colors\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", side = \"bottom\", sideOffset = 4, align = \"start\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n side={side}\n sideOffset={sideOffset}\n align={align}\n avoidCollisions={false}\n className={cn(\n [\"relative z-50 max-h-96 min-w-[8rem] overflow-hidden\",\n \"rounded-md border border-input\",\n \"bg-background dark:bg-gray-800/80 backdrop-blur-sm text-foreground dark:text-gray-200\",\n \"shadow-lg dark:shadow-gray-900/20\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\", \n \"data-[state=open]:duration-150\"],\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"moonui-theme\", \"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\ntype SelectItemVariant = \"default\" | \"subtle\" | \"destructive\" | \"success\" | \"warning\";\ntype SelectItemSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> {\n /** Visual variant */\n variant?: SelectItemVariant;\n /** Size */\n size?: SelectItemSize;\n /** Icon displayed on the right */\n rightIcon?: React.ReactNode;\n /** Custom indicator icon (instead of default check) */\n customIndicator?: React.ReactNode;\n}\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n SelectItemProps\n>(({ className, children, variant = \"default\", size = \"md\", rightIcon, customIndicator, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"moonui-theme\",\n \"relative flex w-full cursor-default select-none items-center rounded-sm outline-none\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n \"transition-colors duration-150\",\n\n /* Size variants */\n size === \"sm\" && \"py-1 pl-7 pr-2 text-xs\",\n size === \"md\" && \"py-1.5 pl-8 pr-2 text-sm\",\n size === \"lg\" && \"py-2 pl-9 pr-3 text-base\",\n \n /* Color variants */\n variant === \"default\" && \"focus:bg-accent focus:text-accent-foreground dark:focus:bg-gray-700 dark:focus:text-gray-100\",\n variant === \"subtle\" && \"focus:bg-gray-100 dark:focus:bg-gray-800 focus:text-foreground dark:focus:text-gray-200\",\n variant === \"destructive\" && \"text-error dark:text-red-400 focus:bg-error/10 dark:focus:bg-red-900/20 focus:text-error dark:focus:text-red-300\",\n variant === \"success\" && \"text-success dark:text-green-400 focus:bg-success/10 dark:focus:bg-green-900/20 focus:text-success dark:focus:text-green-300\",\n variant === \"warning\" && \"text-warning dark:text-yellow-400 focus:bg-warning/10 dark:focus:bg-yellow-900/20 focus:text-warning dark:focus:text-yellow-300\",\n \n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n {customIndicator || <Check className=\"h-4 w-4\" />}\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n \n {rightIcon && (\n <span className=\"ml-auto pl-2 opacity-70\">\n {rightIcon}\n </span>\n )}\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"moonui-theme\", \"-mx-1 my-1 h-px bg-muted dark:bg-gray-700\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Circle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Radio Group Component\n *\n * Accessible, customizable, and fully integrated with the theme system radio button group.\n * Allows users to select a single option from a group of choices.\n */\n\nconst radioGroupItemVariants = cva(\n \"aspect-square border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-primary\",\n outline: \"border-border bg-transparent text-primary\",\n filled: \"border-primary bg-primary/10 text-primary\",\n },\n size: {\n sm: \"h-3.5 w-3.5\",\n default: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// NOT: `React.HTMLAttributes` kendi `defaultValue`'sunu\n// (`string | number | readonly string[]`) taşır; radio grubu için tek bir `string`\n// anlamlı olduğundan Omit ile daraltılır.\nexport interface RadioGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\"> {\n /**\n * Radio group value (controlled)\n */\n value?: string;\n /**\n * Uncontrolled kullanımda başlangıç değeri. `value` verilmediğinde grup\n * seçimi kendi iç state'inde tutar.\n */\n defaultValue?: string;\n /**\n * Function to call when radio group value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Radio group disabled state\n */\n disabled?: boolean;\n /**\n * Radio group name\n */\n name?: string;\n}\n\nconst RadioGroupContext = React.createContext<{\n value?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n name?: string;\n}>({});\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n ({ className, value, defaultValue, onValueChange, disabled, name, ...props }, ref) => {\n // Controlled/uncontrolled ikili mod: `value` verilmişse tüketici yönetir,\n // verilmemişse grup seçimi kendi iç state'inde tutar.\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n defaultValue\n );\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleValueChange = React.useCallback(\n (next: string) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onValueChange?.(next);\n },\n [isControlled, onValueChange]\n );\n\n return (\n <RadioGroupContext.Provider\n value={{\n value: currentValue,\n onValueChange: handleValueChange,\n disabled,\n name,\n }}\n >\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\"moonui-theme\", \"grid gap-2\", className)}\n {...props}\n />\n </RadioGroupContext.Provider>\n );\n }\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nexport interface RadioGroupItemProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>,\n VariantProps<typeof radioGroupItemVariants> {\n /**\n * Custom indicator component\n */\n indicator?: React.ReactNode;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Radio button value\n */\n value: string;\n /**\n * Radio button disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioGroupItem = React.forwardRef<\n HTMLInputElement,\n RadioGroupItemProps\n>(({ className, variant, size, indicator, id, value, disabled, ...props }, ref) => {\n // Get context values from radio group\n const radioGroup = React.useContext(RadioGroupContext);\n const generatedId = React.useId();\n const radioId = id || generatedId;\n const isChecked = radioGroup.value === value;\n \n // Call onValueChange function when RadioGroupItem changes\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup.onValueChange) {\n radioGroup.onValueChange(e.target.value);\n }\n \n if (props.onChange) {\n props.onChange(e);\n }\n };\n \n return (\n <div className=\"relative flex items-center\">\n <input\n type=\"radio\"\n id={radioId}\n ref={ref}\n value={value}\n checked={isChecked}\n disabled={disabled || radioGroup.disabled}\n name={radioGroup.name}\n onChange={handleChange}\n className=\"peer sr-only\"\n {...props}\n />\n <label\n htmlFor={radioId}\n className={cn(\n radioGroupItemVariants({ variant, size }),\n \"rounded-full\",\n // Gerçekte odaklanan eleman görsel olarak gizli `sr-only` input'tur.\n // Görünür label onun KARDEŞİ olduğu için label'da `:focus-visible` hiç\n // tetiklenmiyor, dolayısıyla klavye kullanıcısı hiçbir focus izi\n // görmüyordu. Tailwind `peer` deseniyle (input `peer` sınıfını taşır ve\n // DOM'da label'dan önce gelir) focus izi görünür elemana taşınır.\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-primary/50\",\n \"relative inline-flex shrink-0 cursor-pointer items-center justify-center overflow-hidden\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <span className={cn(\n \"absolute inset-0 pointer-events-none\",\n isChecked && \"flex items-center justify-center\"\n )}>\n {isChecked && (indicator || <Circle className=\"h-[60%] w-[60%] fill-current text-current\" />)}\n </span>\n </label>\n </div>\n );\n});\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\n// Radio Label Component\nexport interface RadioLabelProps extends React.HTMLAttributes<HTMLLabelElement> {\n /**\n * HTML id for radio button\n */\n htmlFor?: string;\n /**\n * Label content\n */\n children: React.ReactNode;\n /**\n * Disabled state style\n */\n disabled?: boolean;\n}\n\nconst RadioLabel = React.forwardRef<HTMLLabelElement, RadioLabelProps>(\n ({ className, htmlFor, children, disabled = false, ...props }, ref) => {\n return (\n <label\n ref={ref}\n htmlFor={htmlFor}\n className={cn(\n \"text-sm font-medium leading-none ml-2 text-foreground\",\n disabled && \"cursor-not-allowed opacity-70\",\n className\n )}\n {...props}\n >\n {children}\n </label>\n );\n }\n);\nRadioLabel.displayName = \"RadioLabel\";\n\n// Radio Item and Label combination\nexport interface RadioItemWithLabelProps extends RadioGroupItemProps {\n /**\n * Label content\n */\n label: React.ReactNode;\n /**\n * HTML classes for label\n */\n labelClassName?: string;\n /**\n * HTML id for radio button\n */\n id?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n}\n\nconst RadioItemWithLabel = React.forwardRef<\n HTMLInputElement,\n RadioItemWithLabelProps\n>(({ \n id, \n label, \n labelClassName, \n ...radioProps \n}, ref) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n \n return (\n <div className=\"flex items-center\">\n <RadioGroupItem ref={ref} id={radioId} {...radioProps} />\n <RadioLabel \n htmlFor={radioId}\n disabled={radioProps.disabled}\n className={labelClassName}\n >\n {label}\n </RadioLabel>\n </div>\n );\n});\nRadioItemWithLabel.displayName = \"RadioItemWithLabel\";\n\nexport { RadioGroup, RadioGroupItem, RadioLabel, RadioItemWithLabel };\n","\"use client\"\n\n// Basic Rich Text Editor - Free Version\n\nimport * as React from \"react\"\nimport { cn } from \"../../../lib/utils\"\n\nexport interface RichTextEditorProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n className?: string\n disabled?: boolean\n}\n\nexport function RichTextEditor({\n value = \"\",\n onChange,\n placeholder = \"Start typing...\",\n className,\n disabled = false\n}: RichTextEditorProps) {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!disabled && onChange) {\n onChange(e.target.value)\n }\n }\n\n return (\n <div className={cn(\"border border-input rounded-md\", className)}>\n <div className=\"border-b border-border p-2 bg-muted/50\">\n <div className=\"flex gap-1\">\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Bold (Pro feature)\"\n >\n B\n </button>\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Italic (Pro feature)\"\n >\n I\n </button>\n <button\n type=\"button\"\n className=\"px-2 py-1 text-sm rounded hover:bg-background disabled:opacity-50\"\n disabled={disabled}\n title=\"Underline (Pro feature)\"\n >\n U\n </button>\n </div>\n </div>\n <textarea\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n disabled={disabled}\n className={cn(\n \"w-full min-h-[200px] p-3 resize-none border-0 bg-transparent\",\n \"focus:outline-none focus:ring-0\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n )}\n />\n </div>\n )\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-[1px]\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-[1px]\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }","\"use client\"\n\nimport * as React from \"react\"\nimport { motion, Variants, Transition, UseInViewOptions } from \"framer-motion\"\nimport { cn } from \"../../lib/utils\"\n\n/**\n * ScrollReveal Component\n *\n * Reveals content with smooth animations when scrolling into view\n * Built with Framer Motion for performance and flexibility\n *\n * @example\n * ```tsx\n * <ScrollReveal direction=\"up\" delay={0.2}>\n * <Card>Your content</Card>\n * </ScrollReveal>\n * ```\n */\n\ninterface ScrollRevealProps {\n /** Content to reveal */\n children: React.ReactNode\n /** Animation direction */\n direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"fade\" | \"scale\" | \"blur\"\n /** Animation delay in seconds */\n delay?: number\n /** Animation duration in seconds */\n duration?: number\n /** Distance to animate from (pixels) */\n distance?: number\n /** Viewport threshold for trigger (0-1) */\n threshold?: number\n /** Trigger animation only once */\n once?: boolean\n /** Deprecated: Use 'once' instead */\n triggerOnce?: boolean\n /** Stagger delay for multiple children (deprecated: use ScrollRevealContainer) */\n stagger?: number\n /** Additional CSS classes */\n className?: string\n /** Custom animation variants */\n variants?: Variants\n /** Enable/disable animations */\n animate?: boolean\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n /** Viewport options for intersection observer */\n viewport?: UseInViewOptions\n}\n\n// Default animation variants with professional easing\nconst createDefaultVariants = (direction: string, distance: number): Variants => {\n const baseVariants: Record<string, Variants> = {\n up: {\n hidden: { opacity: 0, y: distance },\n visible: { opacity: 1, y: 0 }\n },\n down: {\n hidden: { opacity: 0, y: -distance },\n visible: { opacity: 1, y: 0 }\n },\n left: {\n hidden: { opacity: 0, x: distance },\n visible: { opacity: 1, x: 0 }\n },\n right: {\n hidden: { opacity: 0, x: -distance },\n visible: { opacity: 1, x: 0 }\n },\n fade: {\n hidden: { opacity: 0 },\n visible: { opacity: 1 }\n },\n scale: {\n hidden: { opacity: 0, scale: 0.85 },\n visible: { opacity: 1, scale: 1 }\n },\n blur: {\n hidden: { opacity: 0, filter: \"blur(10px)\" },\n visible: { opacity: 1, filter: \"blur(0px)\" }\n }\n }\n\n return baseVariants[direction] || baseVariants.up\n}\n\n// Professional easing curve\nconst defaultTransition: Transition = {\n duration: 0.5,\n ease: [0.25, 0.46, 0.45, 0.94], // Custom cubic-bezier for smooth motion\n}\n\nconst ScrollReveal = React.forwardRef<HTMLDivElement, ScrollRevealProps>(\n ({\n children,\n direction = \"up\",\n delay = 0,\n duration = 0.5,\n distance = 50,\n threshold = 0.3, // Increased from 0.1 for better visibility\n once = true,\n triggerOnce, // Backward compatibility\n stagger = 0,\n className,\n variants,\n animate = true,\n style,\n id,\n viewport\n }, ref) => {\n // Handle backward compatibility\n const shouldTriggerOnce = triggerOnce !== undefined ? triggerOnce : once\n\n // Get animation variants\n const animationVariants = React.useMemo(() => {\n if (variants) return variants\n return createDefaultVariants(direction, distance)\n }, [direction, distance, variants])\n\n // Transition configuration\n const transition = React.useMemo<Transition>(() => ({\n ...defaultTransition,\n duration,\n delay: delay + stagger,\n }), [duration, delay, stagger])\n\n // Viewport configuration\n const viewportConfig = React.useMemo<UseInViewOptions>(() => ({\n once: shouldTriggerOnce,\n amount: threshold,\n ...viewport\n }), [shouldTriggerOnce, threshold, viewport])\n\n // If animations are disabled, render children in a regular div\n if (!animate) {\n return (\n <div\n ref={ref}\n className={className}\n style={style}\n id={id}\n >\n {children}\n </div>\n )\n }\n\n // Render with Framer Motion using whileInView pattern\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={viewportConfig}\n variants={animationVariants}\n transition={transition}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollReveal.displayName = \"ScrollReveal\"\n\n/**\n * ScrollRevealContainer Component\n *\n * Container for orchestrating staggered scroll reveal animations\n * Uses Framer Motion's staggerChildren for better performance\n *\n * @example\n * ```tsx\n * <ScrollRevealContainer stagger={0.1}>\n * <ScrollRevealItem>Item 1</ScrollRevealItem>\n * <ScrollRevealItem>Item 2</ScrollRevealItem>\n * </ScrollRevealContainer>\n * ```\n */\n\ninterface ScrollRevealContainerProps {\n /** ScrollRevealItem components */\n children: React.ReactNode\n /** Delay between child animations (seconds) */\n stagger?: number\n /** Additional CSS classes */\n className?: string\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n /** Viewport threshold for trigger (0-1) */\n threshold?: number\n /** Trigger animation only once */\n once?: boolean\n /** Deprecated: Use 'once' instead */\n triggerOnce?: boolean\n /** Viewport options for intersection observer */\n viewport?: UseInViewOptions\n}\n\nconst ScrollRevealContainer = React.forwardRef<HTMLDivElement, ScrollRevealContainerProps>(\n ({\n children,\n stagger = 0.1,\n className,\n style,\n id,\n threshold = 0.3,\n once = true,\n triggerOnce,\n viewport\n }, ref) => {\n // Handle backward compatibility\n const shouldTriggerOnce = triggerOnce !== undefined ? triggerOnce : once\n\n // Viewport configuration\n const viewportConfig = React.useMemo<UseInViewOptions>(() => ({\n once: shouldTriggerOnce,\n amount: threshold,\n ...viewport\n }), [shouldTriggerOnce, threshold, viewport])\n\n // Container variants for staggered children\n const containerVariants: Variants = {\n hidden: {},\n visible: {\n transition: {\n staggerChildren: stagger,\n delayChildren: 0\n }\n }\n }\n\n return (\n <motion.div\n ref={ref}\n initial=\"hidden\"\n whileInView=\"visible\"\n viewport={viewportConfig}\n variants={containerVariants}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollRevealContainer.displayName = \"ScrollRevealContainer\"\n\n/**\n * ScrollRevealItem Component\n *\n * Individual item within a ScrollRevealContainer\n * Automatically inherits timing from parent container\n *\n * @example\n * ```tsx\n * <ScrollRevealItem direction=\"up\">\n * <Card>Item content</Card>\n * </ScrollRevealItem>\n * ```\n */\n\ninterface ScrollRevealItemProps {\n /** Content to animate */\n children: React.ReactNode\n /** Animation direction */\n direction?: \"up\" | \"down\" | \"left\" | \"right\" | \"fade\" | \"scale\" | \"blur\"\n /** Animation duration in seconds */\n duration?: number\n /** Distance to animate from (pixels) */\n distance?: number\n /** Additional CSS classes */\n className?: string\n /** Custom animation variants */\n variants?: Variants\n /** Custom styles */\n style?: React.CSSProperties\n /** Element ID */\n id?: string\n}\n\nconst ScrollRevealItem = React.forwardRef<HTMLDivElement, ScrollRevealItemProps>(\n ({\n children,\n direction = \"up\",\n duration = 0.5,\n distance = 50,\n className,\n variants,\n style,\n id\n }, ref) => {\n // Get animation variants\n const animationVariants = React.useMemo(() => {\n if (variants) return variants\n return createDefaultVariants(direction, distance)\n }, [direction, distance, variants])\n\n // Transition configuration\n const transition = React.useMemo<Transition>(() => ({\n ...defaultTransition,\n duration,\n }), [duration])\n\n return (\n <motion.div\n ref={ref}\n variants={animationVariants}\n transition={transition}\n className={cn(className)}\n style={style}\n id={id}\n >\n {children}\n </motion.div>\n )\n }\n)\n\nScrollRevealItem.displayName = \"ScrollRevealItem\"\n\nexport { ScrollReveal, ScrollRevealContainer, ScrollRevealItem }\nexport type { ScrollRevealProps, ScrollRevealContainerProps, ScrollRevealItemProps }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst separatorVariants = cva(\n \"shrink-0 bg-border\",\n {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n vertical: \"h-full w-[1px]\",\n },\n variant: {\n default: \"bg-border\",\n dashed: \"border-dashed border-border bg-transparent\",\n dotted: \"border-dotted border-border bg-transparent\",\n gradient: \"bg-gradient-to-r from-transparent via-border to-transparent\",\n },\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n },\n compoundVariants: [\n {\n orientation: \"horizontal\",\n variant: \"dashed\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dashed\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n variant: \"dotted\",\n className: \"border-t h-0\",\n },\n {\n orientation: \"vertical\",\n variant: \"dotted\",\n className: \"border-l w-0\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-t-2\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"dashed\", \"dotted\"],\n className: \"border-l-2\",\n },\n {\n orientation: \"horizontal\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"h-[2px]\",\n },\n {\n orientation: \"vertical\",\n size: \"sm\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n size: \"lg\",\n variant: [\"default\", \"gradient\"],\n className: \"w-[2px]\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nexport interface SeparatorProps\n extends Omit<React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>, keyof VariantProps<typeof separatorVariants>>,\n VariantProps<typeof separatorVariants> {}\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n SeparatorProps\n>(\n (\n { \n className, \n orientation = \"horizontal\", \n variant = \"default\",\n size = \"md\",\n decorative = true, \n ...props \n },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation || undefined}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator, separatorVariants }","\"use client\"\n\nimport React, { useCallback, useState, useEffect } from 'react'\nimport { motion } from 'framer-motion'\nimport { Button } from './button'\nimport { Separator } from './separator'\nimport { Toggle } from './toggle'\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'\nimport { cn } from '../../lib/utils'\nimport {\n Bold,\n Italic,\n Underline,\n Strikethrough,\n AlignLeft,\n AlignCenter,\n AlignRight,\n AlignJustify,\n List,\n ListOrdered,\n Quote,\n Link,\n Image as ImageIcon,\n Code,\n Type,\n Palette,\n Undo,\n Redo,\n Eye,\n Edit\n} from 'lucide-react'\n\nexport interface SimpleEditorProps {\n value?: string\n onChange?: (value: string) => void\n placeholder?: string\n disabled?: boolean\n className?: string\n minHeight?: number\n maxHeight?: number\n showToolbar?: boolean\n showPreview?: boolean\n}\n\ninterface ToolbarButtonProps {\n icon: React.ReactNode\n tooltip: string\n active?: boolean\n onClick: () => void\n disabled?: boolean\n}\n\nconst ToolbarButton = ({ icon, tooltip, active, onClick, disabled }: ToolbarButtonProps) => (\n <Tooltip>\n <TooltipTrigger asChild>\n <Toggle\n pressed={active}\n onPressedChange={() => onClick()}\n disabled={disabled}\n // Butonun tek içeriği bir ikon; erişilebilir ad olmadan ekran okuyucu\n // yalnızca \"button\" der. `tooltip` zaten insan-okur etiketi taşıyor.\n // (Tooltip yalnızca fare/odak ile görünür, erişilebilir ad SAĞLAMAZ.)\n aria-label={tooltip}\n className=\"h-8 w-8 p-0\"\n >\n {icon}\n </Toggle>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n)\n\nconst ColorPicker = ({ onColorSelect }: { onColorSelect: (color: string) => void }) => {\n const colors = [\n '#000000', '#374151', '#6B7280', '#9CA3AF',\n '#EF4444', '#F59E0B', '#EAB308', '#22C55E',\n '#3B82F6', '#6366F1', '#8B5CF6', '#EC4899'\n ]\n\n return (\n <div className=\"grid grid-cols-4 gap-1 p-2\">\n {colors.map(color => (\n <button\n key={color}\n type=\"button\"\n // Swatch'ın tek içeriği arka plan rengi — erişilebilir ad şart.\n aria-label={`Select color ${color}`}\n className=\"w-6 h-6 rounded border-2 border-border hover:border-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n style={{ backgroundColor: color }}\n onClick={() => onColorSelect(color)}\n />\n ))}\n </div>\n )\n}\n\nexport const SimpleEditor = React.forwardRef<HTMLDivElement, SimpleEditorProps>(\n ({\n value = '',\n onChange,\n placeholder = 'Start writing...',\n disabled = false,\n className,\n minHeight = 200,\n maxHeight = 500,\n showToolbar = true,\n showPreview = true,\n ...props\n }, ref) => {\n const [content, setContent] = useState(value)\n const [isPreview, setIsPreview] = useState(false)\n const [sourceContent, setSourceContent] = useState(value)\n const [selection, setSelection] = useState<{ start: number; end: number } | null>(null)\n const editorRef = React.useRef<HTMLDivElement>(null)\n const sourceRef = React.useRef<HTMLTextAreaElement>(null)\n\n // Format state tracking\n const [formatState, setFormatState] = useState({\n bold: false,\n italic: false,\n underline: false,\n strikethrough: false,\n alignLeft: true,\n alignCenter: false,\n alignRight: false,\n alignJustify: false,\n orderedList: false,\n unorderedList: false,\n quote: false,\n code: false\n })\n\n const updateContent = useCallback((newContent: string) => {\n setContent(newContent)\n onChange?.(newContent)\n }, [onChange])\n\n const saveSelection = useCallback(() => {\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n return selection.getRangeAt(0)\n }\n return null\n }, [])\n\n const restoreSelection = useCallback((range: Range | null) => {\n if (!range) return\n \n const selection = window.getSelection()\n if (selection) {\n selection.removeAllRanges()\n selection.addRange(range)\n }\n }, [])\n\n const executeCommand = useCallback((command: string, value?: string) => {\n if (disabled) return\n \n // Focus the editor first\n if (editorRef.current) {\n editorRef.current.focus()\n }\n \n // Save current selection before executing command\n const savedRange = saveSelection()\n \n // Execute the command\n const result = document.execCommand(command, false, value)\n \n if (!result) {\n console.warn(`Command '${command}' failed to execute`)\n }\n \n // Update content state to trigger re-render\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n \n // Update format state\n setFormatState({\n bold: document.queryCommandState('bold'),\n italic: document.queryCommandState('italic'),\n underline: document.queryCommandState('underline'),\n strikethrough: document.queryCommandState('strikeThrough'),\n alignLeft: document.queryCommandState('justifyLeft'),\n alignCenter: document.queryCommandState('justifyCenter'),\n alignRight: document.queryCommandState('justifyRight'),\n alignJustify: document.queryCommandState('justifyFull'),\n orderedList: document.queryCommandState('insertOrderedList'),\n unorderedList: document.queryCommandState('insertUnorderedList'),\n quote: document.queryCommandState('formatBlock'),\n code: document.queryCommandState('formatBlock')\n })\n \n // Keep focus on editor\n if (editorRef.current) {\n editorRef.current.focus()\n }\n }, [disabled, saveSelection, updateContent])\n\n const handleInput = useCallback((e: React.FormEvent<HTMLDivElement>) => {\n const newContent = e.currentTarget.innerHTML\n updateContent(newContent)\n }, [updateContent])\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n // Handle keyboard shortcuts\n if (e.ctrlKey || e.metaKey) {\n switch (e.key) {\n case 'b':\n e.preventDefault()\n executeCommand('bold')\n break\n case 'i':\n e.preventDefault()\n executeCommand('italic')\n break\n case 'u':\n e.preventDefault()\n executeCommand('underline')\n break\n case 'z':\n e.preventDefault()\n if (e.shiftKey) {\n executeCommand('redo')\n } else {\n executeCommand('undo')\n }\n break\n }\n }\n\n // Handle Tab for indentation\n if (e.key === 'Tab') {\n e.preventDefault()\n executeCommand('insertHTML', ' ')\n }\n }, [executeCommand])\n\n const insertLink = useCallback(() => {\n const url = prompt('Enter URL:')\n if (url) {\n executeCommand('createLink', url)\n }\n }, [executeCommand])\n\n const insertImage = useCallback(() => {\n const url = prompt('Enter image URL:')\n if (url) {\n executeCommand('insertImage', url)\n }\n }, [executeCommand])\n\n const formatHeading = useCallback((level: string) => {\n executeCommand('formatBlock', `<h${level}>`)\n }, [executeCommand])\n\n const setTextColor = useCallback((color: string) => {\n // First try the modern way\n const selection = window.getSelection()\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0)\n const span = document.createElement('span')\n span.style.color = color\n \n try {\n range.surroundContents(span)\n } catch (e) {\n // If surroundContents fails, use execCommand\n executeCommand('foreColor', color)\n }\n \n // Update content\n if (editorRef.current) {\n const newContent = editorRef.current.innerHTML\n updateContent(newContent)\n }\n }\n }, [executeCommand, updateContent])\n\n // Convert HTML to plain text for preview\n const getPlainText = (html: string) => {\n if (typeof window === 'undefined') {\n // Server-side: simple regex-based HTML stripping\n return html\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/ /g, ' ') // Replace with space\n .replace(/&/g, '&') // Replace & with &\n .replace(/</g, '<') // Replace < with <\n .replace(/>/g, '>') // Replace > with >\n .replace(/"/g, '\"') // Replace " with \"\n .replace(/'/g, \"'\") // Replace ' with '\n }\n // Client-side: use DOM for accurate conversion\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n\n React.useEffect(() => {\n if (editorRef.current && content && content !== editorRef.current.innerHTML) {\n editorRef.current.innerHTML = content\n }\n }, [content])\n\n // Sync source content when value prop changes\n React.useEffect(() => {\n if (value !== undefined && value !== content) {\n setContent(value)\n setSourceContent(value)\n }\n }, [value, content])\n\n const toolbar = showToolbar && (\n <TooltipProvider>\n <motion.div\n className=\"flex items-center gap-1 p-2 border-b bg-gray-50/50 dark:bg-zinc-800/50 backdrop-blur-sm\"\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n >\n {/* Text Formatting */}\n {!isPreview && (\n <>\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Bold className=\"h-3 w-3\" />}\n tooltip=\"Bold (Ctrl+B)\"\n active={formatState.bold}\n onClick={() => executeCommand('bold')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Italic className=\"h-3 w-3\" />}\n tooltip=\"Italic (Ctrl+I)\"\n active={formatState.italic}\n onClick={() => executeCommand('italic')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Underline className=\"h-3 w-3\" />}\n tooltip=\"Underline (Ctrl+U)\"\n active={formatState.underline}\n onClick={() => executeCommand('underline')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Strikethrough className=\"h-3 w-3\" />}\n tooltip=\"Strikethrough\"\n active={formatState.strikethrough}\n onClick={() => executeCommand('strikeThrough')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Font Size / Heading */}\n <Select \n onValueChange={(value) => {\n if (value.startsWith('h')) {\n formatHeading(value.substring(1))\n } else if (value === 'normal') {\n executeCommand('formatBlock', 'p')\n } else {\n executeCommand('fontSize', value)\n }\n }} \n disabled={disabled}\n >\n <SelectTrigger className=\"w-24 h-8\">\n <SelectValue placeholder=\"Size\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"1\">Small</SelectItem>\n <SelectItem value=\"3\">Normal</SelectItem>\n <SelectItem value=\"5\">Large</SelectItem>\n <SelectItem value=\"7\">X-Large</SelectItem>\n <Separator className=\"my-1\" />\n <SelectItem value=\"h1\">Heading 1</SelectItem>\n <SelectItem value=\"h2\">Heading 2</SelectItem>\n <SelectItem value=\"h3\">Heading 3</SelectItem>\n <SelectItem value=\"h4\">Heading 4</SelectItem>\n <SelectItem value=\"h5\">Heading 5</SelectItem>\n <SelectItem value=\"h6\">Heading 6</SelectItem>\n </SelectContent>\n </Select>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Alignment */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<AlignLeft className=\"h-3 w-3\" />}\n tooltip=\"Align Left\"\n active={formatState.alignLeft}\n onClick={() => executeCommand('justifyLeft')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignCenter className=\"h-3 w-3\" />}\n tooltip=\"Align Center\"\n active={formatState.alignCenter}\n onClick={() => executeCommand('justifyCenter')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignRight className=\"h-3 w-3\" />}\n tooltip=\"Align Right\"\n active={formatState.alignRight}\n onClick={() => executeCommand('justifyRight')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<AlignJustify className=\"h-3 w-3\" />}\n tooltip=\"Justify\"\n active={formatState.alignJustify}\n onClick={() => executeCommand('justifyFull')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Lists */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<List className=\"h-3 w-3\" />}\n tooltip=\"Bullet List\"\n active={formatState.unorderedList}\n onClick={() => executeCommand('insertUnorderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ListOrdered className=\"h-3 w-3\" />}\n tooltip=\"Numbered List\"\n active={formatState.orderedList}\n onClick={() => executeCommand('insertOrderedList')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Quote className=\"h-3 w-3\" />}\n tooltip=\"Quote\"\n active={formatState.quote}\n onClick={() => executeCommand('formatBlock', 'blockquote')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Code className=\"h-3 w-3\" />}\n tooltip=\"Code Block\"\n active={formatState.code}\n onClick={() => executeCommand('formatBlock', 'pre')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Indentation */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">←</span>}\n tooltip=\"Decrease Indent\"\n onClick={() => executeCommand('outdent')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<span className=\"text-xs font-mono\">→</span>}\n tooltip=\"Increase Indent\"\n onClick={() => executeCommand('indent')}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Insert */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Link className=\"h-3 w-3\" />}\n tooltip=\"Insert Link\"\n onClick={insertLink}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<ImageIcon className=\"h-3 w-3\" />}\n tooltip=\"Insert Image\"\n onClick={insertImage}\n disabled={disabled}\n />\n </div>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Color */}\n <Popover>\n <PopoverTrigger asChild>\n <Button \n variant=\"ghost\" \n size=\"sm\" \n className=\"h-8 w-8 p-0\" \n disabled={disabled}\n title=\"Text Color\"\n >\n <Palette className=\"h-3 w-3\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\">\n <ColorPicker onColorSelect={setTextColor} />\n </PopoverContent>\n </Popover>\n\n <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />\n\n {/* Undo/Redo */}\n <div className=\"flex items-center gap-1\">\n <ToolbarButton\n icon={<Undo className=\"h-3 w-3\" />}\n tooltip=\"Undo (Ctrl+Z)\"\n onClick={() => executeCommand('undo')}\n disabled={disabled}\n />\n <ToolbarButton\n icon={<Redo className=\"h-3 w-3\" />}\n tooltip=\"Redo (Ctrl+Shift+Z)\"\n onClick={() => executeCommand('redo')}\n disabled={disabled}\n />\n </div>\n\n </>\n )}\n\n {/* Preview Toggle */}\n {showPreview && (\n <>\n {!isPreview && <Separator orientation=\"vertical\" className=\"h-6 bg-gray-300 dark:bg-zinc-600\" />}\n <ToolbarButton\n icon={isPreview ? <Edit className=\"h-3 w-3\" /> : <Eye className=\"h-3 w-3\" />}\n tooltip={isPreview ? \"Edit Mode\" : \"View Source Code\"}\n active={isPreview}\n onClick={() => {\n if (isPreview) {\n // Apply source changes to content when switching back to edit mode\n updateContent(sourceContent)\n } else {\n // Update source content when switching to preview mode\n setSourceContent(content)\n }\n setIsPreview(!isPreview)\n }}\n disabled={disabled}\n />\n </>\n )}\n </motion.div>\n </TooltipProvider>\n )\n\n return (\n <div\n ref={ref}\n className={cn(\n \"border border-gray-200 dark:border-zinc-700 rounded-lg overflow-hidden focus-within:ring-2 focus-within:ring-ring focus-within:border-transparent\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {toolbar}\n\n <div className=\"relative\">\n {isPreview ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n className=\"bg-slate-50 dark:bg-zinc-900/95\"\n style={{ minHeight, maxHeight, overflow: 'auto' }}\n >\n <textarea\n ref={sourceRef}\n value={sourceContent}\n onChange={(e) => setSourceContent(e.target.value)}\n className=\"w-full h-full bg-transparent p-4 font-mono text-sm text-gray-900 dark:text-gray-100 resize-none focus:outline-none\"\n style={{ minHeight: minHeight - 32 }}\n disabled={disabled}\n placeholder=\"HTML source code...\"\n />\n </motion.div>\n ) : (\n <motion.div\n ref={editorRef}\n contentEditable={!disabled}\n suppressContentEditableWarning\n // Düz `div[contentEditable]` yardımcı teknolojiye bir form alanı\n // olarak görünmüyordu: rolü yok, çok satırlı olduğu bilinmiyor ve\n // erişilebilir adı yok.\n role=\"textbox\"\n aria-multiline=\"true\"\n aria-label={placeholder}\n aria-disabled={disabled || undefined}\n className={cn(\n \"p-4 outline-none prose prose-sm dark:prose-invert max-w-none overflow-y-auto\",\n // Token'a bağlandı (önce `bg-slate-50 dark:bg-zinc-900/95` ve\n // `text-gray-900 dark:text-gray-100` hardcode'luydu).\n \"bg-background text-foreground\",\n \"focus:ring-0\",\n \"[&_h1]:text-3xl [&_h1]:font-bold [&_h1]:mb-4\",\n \"[&_h2]:text-2xl [&_h2]:font-bold [&_h2]:mb-3\",\n \"[&_h3]:text-xl [&_h3]:font-bold [&_h3]:mb-2\",\n \"[&_h4]:text-lg [&_h4]:font-bold [&_h4]:mb-2\",\n \"[&_h5]:text-base [&_h5]:font-bold [&_h5]:mb-1\",\n \"[&_h6]:text-sm [&_h6]:font-bold [&_h6]:mb-1\",\n \"[&_ul]:list-disc [&_ul]:pl-6 [&_ul]:mb-4\",\n \"[&_ol]:list-decimal [&_ol]:pl-6 [&_ol]:mb-4\",\n \"[&_li]:mb-1\",\n \"[&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:pl-4 [&_blockquote]:italic\",\n \"[&_pre]:bg-gray-100 [&_pre]:dark:bg-gray-800 [&_pre]:p-4 [&_pre]:rounded [&_pre]:overflow-x-auto\"\n )}\n style={{ minHeight, maxHeight }}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n data-placeholder={placeholder}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n />\n )}\n\n {/* Placeholder */}\n {!content && !isPreview && (\n <div\n className=\"absolute top-4 left-4 text-muted-foreground pointer-events-none\"\n style={{ fontSize: '16px' }}\n >\n {placeholder}\n </div>\n )}\n </div>\n\n {/* Character Count */}\n <div className=\"px-4 py-2 border-t bg-gray-50/50 dark:bg-zinc-800/50 backdrop-blur-sm text-xs text-gray-600 dark:text-gray-400\">\n <CharacterCount content={content} />\n </div>\n </div>\n )\n }\n)\n\nSimpleEditor.displayName = \"SimpleEditor\"\n\n// Character count component to avoid hydration issues\nconst CharacterCount = ({ content }: { content: string }) => {\n const [count, setCount] = useState(0)\n \n useEffect(() => {\n const getPlainText = (html: string) => {\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || div.innerText || ''\n }\n setCount(getPlainText(content).length)\n }, [content])\n \n return <>{count} characters</>\n}","\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ToggleProps extends React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>, VariantProps<typeof toggleVariants> {}\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n ToggleProps\n>(({ className, variant, size, ...props }, ref) => (\n <TogglePrimitive.Root\n ref={ref}\n className={cn(\"moonui-theme\", toggleVariants({ variant, size, className }))}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst tooltipVariants = cva(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-green-500 text-white border-green-600\",\n warning: \"bg-yellow-500 text-white border-yellow-600\",\n destructive: \"bg-destructive text-destructive-foreground\",\n info: \"bg-blue-500 text-white border-blue-600\",\n },\n size: {\n sm: \"px-2 py-1 text-xs\",\n md: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n)\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipArrow = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Arrow>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>\n>(({ className, ...props }, ref) => (\n <TooltipPrimitive.Arrow\n ref={ref}\n className={cn(\"moonui-theme\", \"fill-current\", className)}\n {...props}\n />\n))\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName\n\nexport interface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipVariants> {\n showArrow?: boolean\n}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, variant, size, showArrow = false, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\"moonui-theme\", tooltipVariants({ variant, size }), className)}\n {...props}\n >\n {props.children}\n {showArrow && <TooltipArrow />}\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\n// Simplified Tooltip component for easy usage\nexport interface SimpleTooltipProps {\n children: React.ReactElement\n content: React.ReactNode\n variant?: TooltipContentProps[\"variant\"]\n size?: TooltipContentProps[\"size\"]\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n align?: \"start\" | \"center\" | \"end\"\n delayDuration?: number\n sideOffset?: number\n showArrow?: boolean\n className?: string\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n}\n\nconst SimpleTooltip = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n SimpleTooltipProps\n>(\n (\n {\n children,\n content,\n variant = \"default\",\n size = \"md\",\n side = \"top\",\n align = \"center\",\n delayDuration = 400,\n sideOffset = 4,\n showArrow = false,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...props\n },\n ref\n ) => {\n return (\n <Tooltip\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n delayDuration={delayDuration}\n >\n <TooltipTrigger asChild>{children}</TooltipTrigger>\n <TooltipContent\n ref={ref}\n side={side}\n align={align}\n variant={variant}\n size={size}\n sideOffset={sideOffset}\n showArrow={showArrow}\n className={className}\n {...props}\n >\n {content}\n </TooltipContent>\n </Tooltip>\n )\n }\n)\nSimpleTooltip.displayName = \"SimpleTooltip\"\n\nexport {\n Tooltip,\n TooltipProvider,\n TooltipTrigger,\n TooltipContent,\n TooltipArrow,\n SimpleTooltip,\n tooltipVariants,\n}","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { motion } from \"framer-motion\";\nimport { skeletonAnimation } from \"../../lib/micro-interactions\";\n\n/**\n * Skeleton Component\n *\n * A loading placeholder that mimics the structure of content.\n * Fully integrated with the theme system and provides various shapes, sizes, and animations.\n */\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary/10\",\n accent: \"bg-accent\",\n },\n size: {\n default: \"\",\n sm: \"scale-90\",\n lg: \"scale-110\",\n },\n shape: {\n rect: \"rounded-md\",\n circle: \"rounded-full\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"overflow-hidden relative after:absolute after:inset-0 after:-translate-x-full after:animate-[shimmer_2s_infinite] after:bg-gradient-to-r after:from-transparent after:via-white/10 after:to-transparent dark:after:via-white/5\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n shape: \"rect\",\n animation: \"pulse\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n /**\n * Height of the skeleton\n */\n height?: string | number;\n /**\n * Width of the skeleton\n */\n width?: string | number;\n /**\n * Whether the content is loaded\n */\n isLoaded?: boolean;\n /**\n * Content to show when loaded\n */\n children?: React.ReactNode;\n /**\n * Fade-in animation duration in ms\n */\n fadeInDuration?: number;\n /**\n * Use motion animation for loading state\n */\n motion?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ \n className,\n variant,\n size,\n shape,\n animation,\n height,\n width,\n isLoaded = false,\n children,\n fadeInDuration = 400,\n motion: useMotion = false,\n style,\n ...props \n }, ref) => {\n // Filter out HTML event handlers that conflict with Framer Motion\n const { \n onDrag, \n onDragEnd, \n onDragStart,\n onAnimationStart,\n onAnimationEnd,\n onAnimationIteration,\n ...filteredProps \n } = props;\n \n // Show content when loaded\n if (isLoaded && children) {\n if (useMotion) {\n return (\n <motion.div\n ref={ref}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: fadeInDuration / 1000 }}\n className={cn(\"moonui-theme\", className)}\n style={{\n height,\n width,\n ...style,\n }}\n {...filteredProps}\n >\n {children}\n </motion.div>\n );\n }\n \n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"animate-fade-in\", className)}\n style={{\n animationDuration: `${fadeInDuration}ms`,\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n const SkeletonElement = useMotion ? motion.div : \"div\";\n \n return (\n <SkeletonElement\n ref={ref}\n className={cn(\n \"moonui-theme\",\n skeletonVariants({ variant, size, shape, animation }),\n \"relative isolate\",\n className\n )}\n style={{\n height,\n width,\n ...style,\n }}\n {...(useMotion ? skeletonAnimation : {})}\n {...filteredProps}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\n/**\n * Text Skeleton Component\n * \n * Creates skeleton loading states for text content\n */\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kaç satır gösterileceği\n */\n lines?: number;\n /**\n * Satır yüksekliği\n */\n lineHeight?: string | number;\n /**\n * Satırlar arası boşluk\n */\n spacing?: string | number;\n /**\n * Son satırın genişlik yüzdesi (0-100)\n */\n lastLineWidth?: number;\n /**\n * Rastgele satır genişlikleri\n */\n randomWidths?: boolean;\n}\n\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ \n className,\n lines = 3,\n lineHeight = \"0.85rem\",\n spacing = \"0.5rem\",\n lastLineWidth = 80,\n randomWidths = false,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"moonui-theme\", \"flex flex-col\", className)}\n style={{ gap: spacing }}\n {...props}\n >\n {Array.from({ length: lines }).map((_, i) => {\n const isLastLine = i === lines - 1;\n // Use deterministic widths based on line index for SSR compatibility\n const widthPercentage = isLastLine\n ? lastLineWidth\n : randomWidths\n ? 85 + (i % 3) * 5 // Creates a pattern: 85%, 90%, 95%, 85%, ...\n : 100;\n\n return (\n <Skeleton\n key={i}\n variant={variant}\n animation={animation}\n className=\"w-full\"\n style={{\n height: lineHeight,\n width: `${widthPercentage}%`,\n }}\n />\n );\n })}\n </div>\n );\n }\n);\nSkeletonText.displayName = \"SkeletonText\";\n\n/**\n * Avatar Skeleton Component\n */\nexport interface SkeletonAvatarProps extends Omit<SkeletonProps, \"shape\" | \"size\"> {\n /**\n * Avatar boyutu (piksel)\n */\n size?: string | number;\n}\n\nexport const SkeletonAvatar = React.forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ \n className,\n size = \"2.5rem\",\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <Skeleton\n ref={ref}\n variant={variant}\n animation={animation}\n shape=\"circle\"\n className={cn(\"moonui-theme\", \"shrink-0\", className)}\n style={{\n height: size,\n width: size,\n }}\n {...props}\n />\n );\n }\n);\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n/**\n * Card Skeleton Component\n */\nexport interface SkeletonCardProps extends Omit<SkeletonProps, \"children\" | \"isLoaded\"> {\n /**\n * Kart başlığının gösterilip gösterilmeyeceği\n */\n showHeader?: boolean;\n /**\n * İçerik satır sayısı\n */\n contentLines?: number;\n /**\n * Alt bilgi gösterilip gösterilmeyeceği\n */\n showFooter?: boolean;\n}\n\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ \n className,\n showHeader = true,\n contentLines = 3,\n showFooter = true,\n variant = \"default\",\n animation = \"pulse\",\n ...props \n }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-background p-4\",\n className\n )}\n {...props}\n >\n {showHeader && (\n <div className=\"mb-4 flex items-center gap-4\">\n <SkeletonAvatar size=\"2.5rem\" variant={variant} animation={animation} />\n <div className=\"flex-1\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"mb-2 h-4 w-1/3\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-3 w-1/4\" \n />\n </div>\n </div>\n )}\n \n <SkeletonText \n lines={contentLines} \n variant={variant} \n animation={animation} \n className=\"mb-4\" \n />\n \n {showFooter && (\n <div className=\"flex items-center justify-between mt-4 pt-4 border-t border-border\">\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/4\" \n />\n <Skeleton \n variant={variant} \n animation={animation} \n className=\"h-4 w-1/5\" \n />\n </div>\n )}\n </div>\n );\n }\n);\nSkeletonCard.displayName = \"SkeletonCard\";\n\nexport { skeletonVariants };\n","\"use client\"\n\n// Basic Swipeable Card - Free Version\n\"use client\"\n\nimport * as React from \"react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface SwipeableCardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n onSwipeLeft?: () => void\n onSwipeRight?: () => void\n threshold?: number\n disabled?: boolean\n}\n\nexport const SwipeableCard = React.forwardRef<HTMLDivElement, SwipeableCardProps>(\n ({ className, children, onSwipeLeft, onSwipeRight, threshold = 100, disabled = false, ...props }, ref) => {\n const [startX, setStartX] = React.useState(0)\n const [currentX, setCurrentX] = React.useState(0)\n const [isSwiping, setIsSwiping] = React.useState(false)\n\n const handleTouchStart = (e: React.TouchEvent) => {\n if (disabled) return\n setStartX(e.touches[0].clientX)\n setIsSwiping(true)\n }\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (disabled || !isSwiping) return\n setCurrentX(e.touches[0].clientX)\n }\n\n const handleTouchEnd = () => {\n if (disabled || !isSwiping) return\n \n const deltaX = currentX - startX\n \n if (Math.abs(deltaX) > threshold) {\n if (deltaX > 0 && onSwipeRight) {\n onSwipeRight()\n } else if (deltaX < 0 && onSwipeLeft) {\n onSwipeLeft()\n }\n }\n \n setIsSwiping(false)\n setCurrentX(0)\n setStartX(0)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"touch-pan-y select-none transition-transform duration-200\",\n isSwiping && \"cursor-grabbing\",\n className\n )}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nSwipeableCard.displayName = \"SwipeableCard\"","\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype SwitchSize = \"sm\" | \"md\" | \"lg\";\ntype SwitchVariant = \"primary\" | \"success\" | \"warning\" | \"destructive\" | \"secondary\";\n\n/**\n * Boyut ve renk varyantları `cva()` ile yönetilir (kütüphane geneli desen).\n * Önceden `size === \"x\" && \"...\"` biçiminde manuel zincirleme kullanılıyordu;\n * `defaultVariants` yoktu ve varsayılanlar destructuring'de gizliydi.\n */\nconst switchVariants = cva(\n [\n \"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full\",\n \"border-2 border-transparent transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n // Kapalı durum token'a bağlı; `--input` karanlık modda kendi değerini taşır.\n // (Önceden ayrıca `dark:data-[state=unchecked]:bg-gray-700/70` hardcode'u\n // vardı ve token'ı eziyordu — kaldırıldı.)\n \"data-[state=unchecked]:bg-input\",\n \"dark:focus-visible:ring-primary/40\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-8\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-14\",\n },\n variant: {\n primary: \"data-[state=checked]:bg-primary\",\n success: \"data-[state=checked]:bg-success\",\n warning: \"data-[state=checked]:bg-warning\",\n destructive: \"data-[state=checked]:bg-error\",\n secondary: \"data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n }\n)\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n md: \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n lg: \"h-6 w-6 data-[state=checked]:translate-x-7 data-[state=unchecked]:translate-x-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport interface SwitchProps extends React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> {\n /** Switch boyutu */\n size?: SwitchSize;\n /** Switch renk varyantı */\n variant?: SwitchVariant;\n /** Yükleniyor durumunu gösterir */\n loading?: boolean;\n /** Sol tarafta gösterilecek ikon */\n leftIcon?: React.ReactNode;\n /** Sağ tarafta gösterilecek ikon */\n rightIcon?: React.ReactNode;\n /** Switch açıklaması */\n description?: string;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n SwitchProps\n>(({\n className,\n size,\n variant,\n loading,\n leftIcon,\n rightIcon,\n description,\n \"aria-describedby\": ariaDescribedBy,\n ...props\n}, ref) => {\n // `description` görsel olarak render ediliyordu ama switch ile hiçbir\n // programatik bağı yoktu — ekran okuyucu açıklamayı okuyamıyordu.\n // Stabil bir id üretilip `aria-describedby` ile bağlanır; tüketicinin\n // kendi verdiği `aria-describedby` korunur.\n const reactId = React.useId()\n const descriptionId = description ? `${reactId}-description` : undefined\n const describedBy =\n [ariaDescribedBy, descriptionId].filter(Boolean).join(\" \") || undefined\n\n return (\n <div className=\"moonui-theme inline-flex items-center gap-2\">\n {leftIcon && <span className=\"text-muted-foreground\">{leftIcon}</span>}\n <SwitchPrimitives.Root\n className={cn(\n switchVariants({ size, variant }),\n loading && \"opacity-80 cursor-wait\",\n className\n )}\n disabled={loading || props.disabled}\n aria-describedby={describedBy}\n {...props}\n ref={ref}\n >\n {loading ? (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"h-3 w-3 animate-spin rounded-full border-2 border-muted border-t-primary\" />\n </div>\n ) : null}\n\n <SwitchPrimitives.Thumb className={cn(switchThumbVariants({ size }))} />\n </SwitchPrimitives.Root>\n {rightIcon && <span className=\"text-muted-foreground\">{rightIcon}</span>}\n {description && (\n <span id={descriptionId} className=\"text-sm text-muted-foreground\">\n {description}\n </span>\n )}\n </div>\n )\n})\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch, switchVariants }\nexport type { SwitchSize, SwitchVariant }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Badge } from \"./badge\";\n\nexport interface TagsInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"value\" | \"onChange\"> {\n value: string[];\n onChange: (tags: string[]) => void;\n maxTags?: number;\n variant?: \"primary\" | \"secondary\" | \"destructive\" | \"outline\";\n allowDuplicates?: boolean;\n delimiter?: string;\n}\n\nconst TagsInput = React.forwardRef<HTMLInputElement, TagsInputProps>(\n (\n {\n value = [],\n onChange,\n maxTags,\n variant = \"primary\",\n allowDuplicates = false,\n delimiter = \",\",\n placeholder = \"Add tag and press Enter\",\n className,\n disabled,\n ...props\n },\n ref\n ) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n const [error, setError] = React.useState(\"\");\n\n // Klavye navigasyonu için hem dışa verilen ref hem iç ref gerekiyor:\n // etiketler arasında gezinirken odağı input'a geri döndürebilmeliyiz.\n const innerInputRef = React.useRef<HTMLInputElement>(null);\n React.useImperativeHandle(ref, () => innerInputRef.current as HTMLInputElement);\n\n const tagButtonRefs = React.useRef<(HTMLButtonElement | null)[]>([]);\n const errorId = React.useId();\n\n const focusTag = (index: number) => {\n if (value.length === 0) return;\n const clamped = Math.max(0, Math.min(value.length - 1, index));\n tagButtonRefs.current[clamped]?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === delimiter) {\n e.preventDefault();\n addTag();\n } else if (e.key === \"Backspace\" && inputValue === \"\" && value.length > 0) {\n removeTag(value.length - 1);\n } else if (e.key === \"ArrowLeft\" && inputValue === \"\" && value.length > 0) {\n // Boş input'ta sola ok → son etikete geç (hedefli silme için giriş noktası).\n e.preventDefault();\n focusTag(value.length - 1);\n }\n };\n\n /**\n * Etiketler arası klavye gezintisi. Önceden etiketlere yalnızca Tab ile\n * ulaşılabiliyor ve hedefli silme yoktu — Backspace her zaman SON etiketi\n * siliyordu, aradaki bir etiketi klavyeyle silmenin yolu yoktu.\n */\n const handleTagKeyDown =\n (index: number) => (e: React.KeyboardEvent<HTMLButtonElement>) => {\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n focusTag(index - 1);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n if (index >= value.length - 1) innerInputRef.current?.focus();\n else focusTag(index + 1);\n break;\n case \"Home\":\n e.preventDefault();\n focusTag(0);\n break;\n case \"End\":\n e.preventDefault();\n focusTag(value.length - 1);\n break;\n case \"Delete\":\n case \"Backspace\": {\n e.preventDefault();\n const remaining = value.length - 1;\n removeTag(index);\n // Silinenin yerine geçen etikete odaklan; liste bittiyse input'a dön.\n requestAnimationFrame(() => {\n if (remaining > 0) focusTag(Math.min(index, remaining - 1));\n else innerInputRef.current?.focus();\n });\n break;\n }\n default:\n break;\n }\n };\n\n const addTag = () => {\n const tag = inputValue.trim();\n\n if (!tag) return;\n\n if (!allowDuplicates && value.includes(tag)) {\n setError(\"This tag already exists\");\n setTimeout(() => setError(\"\"), 2000);\n return;\n }\n\n if (maxTags && value.length >= maxTags) {\n setError(`Maximum ${maxTags} tags allowed`);\n setTimeout(() => setError(\"\"), 2000);\n return;\n }\n\n onChange([...value, tag]);\n setInputValue(\"\");\n setError(\"\");\n };\n\n const removeTag = (index: number) => {\n if (disabled) return;\n onChange(value.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"relative\">\n <div\n className={cn(\n \"flex items-center min-h-[2.5rem] w-full flex-wrap gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n // NOT: burada `dark:bg-zinc-950/50 dark:border-zinc-800` hardcode'u\n // vardı ve aynı satırdaki `bg-background`/`border-input` token'larını\n // karanlık modda eziyordu. Token'lar zaten dark-mode duyarlı.\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n {value.map((tag, index) => (\n <Badge key={index} variant={variant} className=\"gap-1 pr-1.5\">\n <span className=\"text-xs\">{tag}</span>\n {!disabled && (\n <button\n ref={(el) => {\n tagButtonRefs.current[index] = el;\n }}\n type=\"button\"\n // Buton içeriği yalnızca X ikonu — erişilebilir ad olmadan\n // ekran okuyucu hangi etiketin silineceğini söyleyemez.\n aria-label={`Remove ${tag}`}\n onClick={() => removeTag(index)}\n onKeyDown={handleTagKeyDown(index)}\n className=\"ml-1 rounded-full outline-none ring-offset-background focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n >\n <X className=\"h-3 w-3 text-muted-foreground hover:text-foreground transition-colors\" />\n </button>\n )}\n </Badge>\n ))}\n <input\n ref={innerInputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={addTag}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : \"\"}\n // Etiket eklendikçe placeholder kalkıyor; erişilebilir ad olmadan\n // input tamamen adsız kalıyordu. Tüketici kendi aria-label'ını\n // verirse aşağıdaki {...props} yayılımı bunu ezer.\n aria-label=\"Add tag\"\n aria-describedby={error ? errorId : undefined}\n aria-invalid={error ? true : undefined}\n className={cn(\n \"flex-1 bg-transparent outline-none placeholder:text-muted-foreground\",\n \"min-w-[120px]\",\n disabled && \"cursor-not-allowed\"\n )}\n {...props}\n />\n </div>\n {error && (\n <p id={errorId} role=\"status\" className=\"mt-1 text-xs text-destructive\">\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nTagsInput.displayName = \"TagsInput\";\n\nexport { TagsInput };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../lib/utils\"\nimport { Loader2 } from \"lucide-react\"\n\n// #296: Form kontrolü kenarlıkları hardcode Tailwind grisi kullanıyordu ve\n// `--input` token'ını tamamen atlıyordu; #284'ün token onarımı bu yüzeylere\n// hiç ulaşmıyordu. Ölçüldü (WCAG 1.4.11, eşik 3.0):\n// border-gray-200 1.24 · border-gray-300 1.47 · dark:border-gray-700 1.72\n// dark:border-gray-600 2.35 · hover:border-gray-400 2.54 → hepsi KALIYOR\n// `border-input` ile: açık 3.11, koyu 3.37 — ikisi de geçiyor.\n// Hover kenarlık ezmeleri kaldırıldı: taban kenarlık zaten eşiği geçiyor,\n// ayrı bir hover grisi tutmak yalnız token'ı yeniden atlamak olurdu.\n// NOT: text-gray-* sınıflarına DOKUNULMADI — hepsi kontrastı geçiyor\n// (4.83–17.74); onları çevirmek estetik refactor olurdu, a11y kazancı yok.\n\n/**\n * Textarea Variant Styles\n */\nconst textareaVariants = cva(\n [\n \"flex w-full rounded-md px-3 py-2 text-sm transition-all duration-200\",\n \"text-foreground placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none dark:text-gray-200\",\n \"resize-none\" // Always disable manual resize, we control it\n ],\n {\n variants: {\n variant: {\n default: \"border border-input bg-background dark:bg-gray-800/80 focus-visible:ring-2 focus-visible:ring-primary/30 dark:focus-visible:ring-primary/20 focus-visible:border-primary dark:focus-visible:border-primary/80 dark:shadow-inner dark:shadow-gray-950/10\",\n outline: \"border-2 border-input bg-transparent focus-visible:border-primary dark:focus-visible:border-primary/80\",\n ghost: \"border-none bg-transparent hover:bg-gray-100/50 dark:hover:bg-gray-800/30 focus-visible:bg-transparent\",\n underline: \"border-t-0 border-l-0 border-r-0 border-b-2 border-input rounded-none px-0 focus-visible:ring-0 focus-visible:border-primary dark:focus-visible:border-primary/80 bg-transparent dark:bg-transparent\"\n },\n size: {\n sm: \"min-h-[60px] text-xs\",\n md: \"min-h-[80px] text-sm\",\n lg: \"min-h-[120px] text-base\"\n },\n isError: {\n true: \"border-error focus-visible:ring-error/30 focus-visible:border-error hover:border-error/80 dark:hover:border-error/80\",\n false: \"\"\n },\n isSuccess: {\n true: \"border-success focus-visible:ring-success/30 focus-visible:border-success hover:border-success/80 dark:hover:border-success/80\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n isError: false,\n isSuccess: false\n }\n }\n)\n\nexport interface TextareaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">,\n Omit<VariantProps<typeof textareaVariants>, \"isError\" | \"isSuccess\"> {\n /** Hata mesajı */\n error?: boolean | string\n /** Başarı mesajı */\n success?: boolean | string\n /** Yükleniyor durumu */\n loading?: boolean\n /** Otomatik yükseklik ayarlama */\n autoResize?: boolean\n /** Maksimum yükseklik (px) */\n maxHeight?: number\n /** Karakter sayacı göster */\n characterCount?: boolean\n /** Wrapper için ek sınıflar */\n wrapperClassName?: string\n /** Mesaj için ek sınıflar */\n messageClassName?: string\n}\n\n/**\n * Advanced Textarea Component\n *\n * Features:\n * - Auto-resize based on content\n * - Character count display\n * - Max height constraint\n * - Multiple variants\n * - Error/Success states\n * - Loading state\n */\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({\n className,\n wrapperClassName,\n messageClassName,\n variant,\n size,\n error,\n success,\n loading,\n autoResize = false,\n maxHeight,\n characterCount = false,\n disabled,\n maxLength,\n value,\n defaultValue,\n onChange,\n ...props\n }, ref) => {\n // Mesaj id'leri `props.id` yoksa sabit string'e düşüyordu -> aynı sayfada\n // iki id'siz Textarea'da yinelenen DOM id'si oluşuyordu.\n const reactId = React.useId()\n const fieldId = props.id || reactId\n const textareaRef = React.useRef<HTMLTextAreaElement>(null)\n const [internalValue, setInternalValue] = React.useState(value || defaultValue || \"\")\n\n // Merge refs\n React.useImperativeHandle(ref, () => textareaRef.current!)\n\n // Auto-resize logic\n const adjustHeight = React.useCallback(() => {\n const textarea = textareaRef.current\n if (!textarea || !autoResize) return\n\n // Reset height to get correct scrollHeight\n textarea.style.height = 'auto'\n\n // Set new height\n const newHeight = textarea.scrollHeight\n if (maxHeight && newHeight > maxHeight) {\n textarea.style.height = `${maxHeight}px`\n textarea.style.overflowY = 'auto'\n } else {\n textarea.style.height = `${newHeight}px`\n textarea.style.overflowY = 'hidden'\n }\n }, [autoResize, maxHeight])\n\n // Adjust height on value change\n React.useEffect(() => {\n adjustHeight()\n }, [internalValue, adjustHeight])\n\n // Handle value changes\n React.useEffect(() => {\n if (value !== undefined) {\n setInternalValue(value)\n }\n }, [value])\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setInternalValue(e.target.value)\n onChange?.(e)\n }\n\n // Character count\n const currentLength = String(internalValue).length\n const showCharCount = characterCount && (maxLength !== undefined || currentLength > 0)\n\n // Messages\n const errorMessage = typeof error === \"string\" ? error : undefined\n const successMessage = typeof success === \"string\" ? success : undefined\n const showMessage = errorMessage || successMessage\n\n return (\n <div className={cn(\"moonui-theme\", \"space-y-1.5 w-full\", wrapperClassName)}>\n <div className=\"relative\">\n <textarea\n ref={textareaRef}\n className={cn(\n textareaVariants({\n variant,\n size,\n isError: !!error,\n isSuccess: !!success\n }),\n loading && \"pr-10\",\n className\n )}\n disabled={disabled || loading}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n maxLength={maxLength}\n aria-invalid={!!error || undefined}\n aria-describedby={\n errorMessage ? `${fieldId}-error` :\n successMessage ? `${fieldId}-success` :\n undefined\n }\n {...props}\n />\n\n {loading && (\n <div className=\"absolute top-3 right-3 text-gray-500\">\n <Loader2 className=\"h-4 w-4 animate-spin\" aria-hidden=\"true\" />\n </div>\n )}\n </div>\n\n <div className=\"flex items-center justify-between\">\n {/* Error/Success Message */}\n {showMessage && (\n <p\n className={cn(\n \"text-xs transition-all\",\n errorMessage && \"text-error\",\n successMessage && \"text-success\",\n messageClassName\n )}\n id={\n errorMessage ? `${fieldId}-error` :\n successMessage ? `${fieldId}-success` :\n undefined\n }\n >\n {errorMessage || successMessage}\n </p>\n )}\n\n {/* Character Count */}\n {showCharCount && (\n <p className=\"text-xs text-muted-foreground dark:text-gray-500 ml-auto\">\n {currentLength}{maxLength !== undefined && ` / ${maxLength}`}\n </p>\n )}\n </div>\n </div>\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-8 shadow-sm transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n success:\n \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-900/20 dark:text-green-100\",\n warning:\n \"border-orange-200 bg-orange-50 text-orange-900 dark:border-orange-800 dark:bg-orange-900/20 dark:text-orange-100\",\n info:\n \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-900/20 dark:text-blue-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n ToastProps\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(\"moonui-theme\", toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600\",\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <X className=\"h-4 w-4\" />\n {/* İkon-only kapatma düğmesinin erişilebilir bir ismi olmalı (WCAG 4.1.2);\n aynı desen dialog.tsx'teki kapatma düğmesinde de kullanılıyor. */}\n <span className=\"sr-only\">Close</span>\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm font-semibold [&+div]:text-xs\", className)}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"moonui-theme\", \"text-sm opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastData = {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n variant?: ToastProps[\"variant\"];\n duration?: number;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nconst TOAST_LIMIT = 5;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype State = {\n toasts: ToastData[];\n};\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nconst reducer = (state: State, action: any): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n default:\n return state;\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\nlet toastCounter = 0;\n\nfunction dispatch(action: any) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToastData, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = `toast-${Date.now()}-${++toastCounter}`;\n\n const update = (props: ToastData) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nfunction Toaster() {\n const { toasts } = useToast();\n\n return (\n <ToastProvider>\n {toasts.map(function ({ id, title, description, action, variant, open, onOpenChange, ...props }) {\n return (\n <Toast key={id} variant={variant} open={open} onOpenChange={onOpenChange} {...props}>\n <div className=\"grid gap-1\">\n {title && <ToastTitle>{title}</ToastTitle>}\n {description && (\n <ToastDescription>{description}</ToastDescription>\n )}\n </div>\n {action}\n <ToastClose />\n </Toast>\n );\n })}\n <ToastViewport />\n </ToastProvider>\n );\n}\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastAction,\n ToastClose,\n Toaster,\n toast,\n useToast,\n};\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Kbd Component\n *\n * Klavye tuşlarını (⌘, Ctrl, K vb.) görsel olarak temsil eden standalone\n * bir rozet bileşeni. Dark ve light modda uyumlu, token tabanlı stiller\n * kullanır ve hafif kabartma/gölge ile fiziksel bir tuş görünümü verir.\n */\nconst kbdVariants = cva(\n [\n // Temel klavye-tuşu görünümü — token tabanlı, hardcoded renk yok\n \"inline-flex items-center justify-center rounded\",\n \"border border-border bg-muted\",\n \"px-1.5 font-mono font-medium text-muted-foreground\",\n // Alt kenarda hafif kabartma (border token'ı ile — [#...] hex sınıfı DEĞİL)\n \"shadow-[0_1px_0_1px_hsl(var(--border))]\",\n \"select-none whitespace-nowrap\",\n ],\n {\n variants: {\n size: {\n sm: \"h-5 min-w-5 text-[10px]\",\n md: \"h-6 min-w-6 text-xs\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface KbdProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof kbdVariants> {\n /** Tuş içeriği (⌘, K, Ctrl vb.) */\n children: React.ReactNode;\n}\n\n/**\n * Premium Kbd Component\n *\n * @param props - Kbd bileşeni özellikleri\n * @param props.size - Tuş boyutu (\"sm\" | \"md\")\n * @param props.children - Tuş içeriği (⌘, K, Ctrl vb.)\n */\nconst Kbd = React.forwardRef<HTMLElement, KbdProps>(\n ({ className, size, children, ...props }, ref) => {\n return (\n <kbd\n ref={ref}\n className={cn(\"moonui-theme\", kbdVariants({ size }), className)}\n {...props}\n >\n {children}\n </kbd>\n );\n }\n);\nKbd.displayName = \"Kbd\";\n\nexport { Kbd, kbdVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Star } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Premium Rating Component\n *\n * Standalone yıldız-değerlendirme bileşeni (input + display).\n * Kontrollü/kontrolsüz kullanım, yarım-yıldız hassasiyeti, salt-gösterim modu\n * ve tam klavye erişilebilirliği (radiogroup) sunar. Dark/light modda uyumludur.\n */\n\nconst ratingVariants = cva(\n [\n \"moonui-theme inline-flex items-center rounded-md outline-none\",\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n ],\n {\n variants: {\n size: {\n sm: \"gap-0.5\",\n md: \"gap-1\",\n lg: \"gap-1.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\n// Boyuta göre ikon ölçüsü (yarım-yıldız maskesinin hizalanması için sabit px gerekir)\nconst iconSizeMap: Record<NonNullable<VariantProps<typeof ratingVariants>[\"size\"]>, string> = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n};\n\nexport interface RatingProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof ratingVariants> {\n /** Kontrollü değer (0..max) */\n value?: number;\n /** Kontrolsüz başlangıç değeri */\n defaultValue?: number;\n /** Değer değiştiğinde çağrılır */\n onValueChange?: (value: number) => void;\n /** Yıldız sayısı (varsayılan 5) */\n max?: number;\n /** Salt-gösterim: etkileşim yok, aria-readonly işaretlenir */\n readOnly?: boolean;\n /** Yarım-yıldız desteği (varsayılan \"full\") */\n precision?: \"full\" | \"half\";\n /** Özel ikon (varsayılan lucide Star) */\n icon?: React.ReactNode;\n}\n\n/**\n * Premium Rating Component\n *\n * @param props.value - Kontrollü değer\n * @param props.defaultValue - Kontrolsüz başlangıç değeri\n * @param props.onValueChange - Değer değişim geri çağrımı\n * @param props.max - Yıldız sayısı (varsayılan 5)\n * @param props.readOnly - Salt-gösterim modu\n * @param props.precision - \"full\" | \"half\" hassasiyet\n * @param props.icon - Özel ikon\n * @param props.size - Boyut (sm | md | lg)\n */\nconst Rating = React.forwardRef<HTMLDivElement, RatingProps>(\n (\n {\n className,\n value,\n defaultValue,\n onValueChange,\n max = 5,\n readOnly = false,\n precision = \"full\",\n icon,\n size,\n \"aria-label\": ariaLabel = \"Rating\",\n ...props\n },\n ref\n ) => {\n const resolvedSize = size ?? \"md\";\n const iconSizeClass = iconSizeMap[resolvedSize];\n const step = precision === \"half\" ? 0.5 : 1;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<number>(defaultValue ?? 0);\n const currentValue = isControlled ? value ?? 0 : internalValue;\n\n // Hover önizlemesi (geçici doldurma)\n const [hoverValue, setHoverValue] = React.useState<number | null>(null);\n const displayValue = hoverValue !== null ? hoverValue : currentValue;\n\n // Değeri işle: kontrolsüzde iç state'i güncelle, her durumda geri çağrımı tetikle\n const commit = React.useCallback(\n (next: number) => {\n if (readOnly) return;\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [readOnly, isControlled, onValueChange]\n );\n\n // Klavye: ok-tuşları değeri step kadar artır/azalt, Home/End min/max\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (readOnly) return;\n let next: number | null = null;\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n next = Math.min(max, currentValue + step);\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n next = Math.max(step, currentValue - step);\n break;\n case \"Home\":\n next = step;\n break;\n case \"End\":\n next = max;\n break;\n default:\n return;\n }\n event.preventDefault();\n commit(next);\n },\n [readOnly, max, currentValue, step, commit]\n );\n\n // İkonu doldurmalı/boş olarak üret (özel ikon desteklenir)\n const renderIcon = (filled: boolean): React.ReactNode => {\n if (React.isValidElement(icon)) {\n const element = icon as React.ReactElement<{ className?: string }>;\n return React.cloneElement(element, {\n className: cn(\n iconSizeClass,\n \"shrink-0\",\n filled && \"fill-current\",\n element.props?.className\n ),\n });\n }\n return (\n <Star\n className={cn(iconSizeClass, \"shrink-0\", filled && \"fill-current\")}\n aria-hidden=\"true\"\n />\n );\n };\n\n const stars = Array.from({ length: max }, (_, index) => index + 1);\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n aria-label={ariaLabel}\n aria-orientation=\"horizontal\"\n aria-readonly={readOnly || undefined}\n tabIndex={readOnly ? undefined : 0}\n onKeyDown={handleKeyDown}\n onMouseLeave={() => setHoverValue(null)}\n className={cn(ratingVariants({ size }), className)}\n {...props}\n >\n {stars.map((starValue) => {\n // Bu yıldızın doluluk oranı (0..1) — yarım yıldız için ondalık olur\n const fraction = Math.max(0, Math.min(1, displayValue - (starValue - 1)));\n const halfValue = starValue - 0.5;\n\n return (\n <span\n key={starValue}\n data-slot=\"rating-star\"\n className={cn(\n \"relative inline-flex shrink-0\",\n !readOnly && \"cursor-pointer\"\n )}\n >\n {/* Boş katman (görsel taban) */}\n <span aria-hidden=\"true\" className=\"inline-flex text-muted-foreground/30\">\n {renderIcon(false)}\n </span>\n\n {/* Dolu katman — overflow-hidden maske ile kısmi doldurma */}\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute left-0 top-0 h-full overflow-hidden text-amber-400\"\n style={{ width: `${fraction * 100}%` }}\n >\n {renderIcon(true)}\n </span>\n\n {/* Etkileşim katmanı (salt-gösterimde yok) */}\n {!readOnly && precision === \"half\" && (\n <>\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === halfValue}\n aria-label={`${halfValue} stars`}\n tabIndex={-1}\n onClick={() => commit(halfValue)}\n onMouseEnter={() => setHoverValue(halfValue)}\n className=\"absolute inset-y-0 left-0 z-10 w-1/2 cursor-pointer bg-transparent\"\n />\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === starValue}\n aria-label={`${starValue} stars`}\n tabIndex={-1}\n onClick={() => commit(starValue)}\n onMouseEnter={() => setHoverValue(starValue)}\n className=\"absolute inset-y-0 right-0 z-10 w-1/2 cursor-pointer bg-transparent\"\n />\n </>\n )}\n\n {!readOnly && precision === \"full\" && (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={currentValue === starValue}\n aria-label={`${starValue} ${starValue === 1 ? \"star\" : \"stars\"}`}\n tabIndex={-1}\n onClick={() => commit(starValue)}\n onMouseEnter={() => setHoverValue(starValue)}\n className=\"absolute inset-0 z-10 cursor-pointer bg-transparent\"\n />\n )}\n </span>\n );\n })}\n </div>\n );\n }\n);\n\nRating.displayName = \"Rating\";\n\nexport { Rating, ratingVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n/**\n * Spinner Component\n *\n * Bağımsız (standalone) dönen yükleme göstergesi. Asenkron işlemler\n * sırasında kullanıcıya süregelen bir aktivite olduğunu bildirmek için\n * kullanılır.\n *\n * Erişilebilirlik: `role=\"status\"` + `aria-live=\"polite\"` ile ekran\n * okuyuculara duyurulur; görsel olarak gizli (`sr-only`) `label` metni\n * seslendirilir. `prefers-reduced-motion` açıkken animasyon\n * `motion-reduce:animate-none` ile durdurulur.\n *\n * Renk `currentColor` üzerinden miras alınır; `text-primary`, `text-muted-foreground`\n * gibi metin renk yardımcılarıyla renklendirilir (hardcoded renk yoktur).\n */\n\n// Dönen halka (default) varyantının temel stilleri + boyut eşlemesi\nconst spinnerVariants = cva(\n [\n \"inline-block shrink-0 rounded-full\",\n \"border-current border-t-transparent\",\n \"animate-spin motion-reduce:animate-none\",\n ],\n {\n variants: {\n size: {\n sm: \"h-4 w-4 border-2\", // 16px\n md: \"h-6 w-6 border-2\", // 24px\n lg: \"h-8 w-8 border-[3px]\", // 32px\n xl: \"h-10 w-10 border-4\", // 40px\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\n// Dots varyantı için nokta boyutu eşlemesi (renk `currentColor` ile gelir)\nconst dotSizeMap = {\n sm: \"h-1 w-1\",\n md: \"h-1.5 w-1.5\",\n lg: \"h-2 w-2\",\n xl: \"h-2.5 w-2.5\",\n} as const;\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {\n /**\n * Görsel stil: dönen halka (`default`) veya zıplayan noktalar (`dots`)\n */\n variant?: \"default\" | \"dots\";\n /**\n * Ekran okuyucular için erişilebilir metin (görsel olarak gizli)\n * @default \"Loading\"\n */\n label?: string;\n}\n\n/**\n * Spinner — dönen yükleme göstergesi\n *\n * @param props.size - Gösterge boyutu (`sm` | `md` | `lg` | `xl`)\n * @param props.variant - Görsel stil (`default` halka | `dots` noktalar)\n * @param props.label - Ekran okuyucular için erişilebilir metin (varsayılan \"Loading\")\n */\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant = \"default\", label = \"Loading\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n \"moonui-theme inline-flex items-center justify-center\",\n className\n )}\n {...props}\n >\n {variant === \"dots\" ? (\n <span className=\"inline-flex items-center gap-1\" aria-hidden=\"true\">\n {[0, 1, 2].map((i) => (\n <span\n key={i}\n className={cn(\n \"inline-block rounded-full bg-current\",\n \"animate-bounce motion-reduce:animate-none\",\n dotSizeMap[size ?? \"md\"]\n )}\n style={{ animationDelay: `${i * 0.15}s` }}\n />\n ))}\n </span>\n ) : (\n <span className={cn(spinnerVariants({ size }))} aria-hidden=\"true\" />\n )}\n {/* Görsel olarak gizli erişilebilir metin */}\n <span className=\"sr-only\">{label}</span>\n </div>\n );\n }\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };\n","\"use client\"\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Button, type ButtonProps } from \"./button\";\n\n/**\n * Premium ButtonGroup Component\n *\n * Bitişik (segmentli) veya boşluklu buton grupları için yüksek kaliteli,\n * erişilebilir bir kapsayıcı bileşen. Yatay/dikey yerleşim, bitişik kenar\n * radius birleştirme ve çocuk `<Button>`'lara size/variant yayılımı sunar.\n *\n * Tamamen token-tabanlıdır: kenarlık ve köşe yuvarlama değerleri mevcut Button\n * token'larından gelir; hardcoded renk YOKtur.\n */\nconst buttonGroupVariants = cva(\n // Temel kapsayıcı: inline-flex; çocuklar akış içinde hizalanır\n \"moonui-theme inline-flex\",\n {\n variants: {\n orientation: {\n // Yatay: butonlar dikeyde ortalanır (içerik-genişliği korunur)\n horizontal: \"flex-row items-center\",\n // Dikey: butonlar aynı genişliğe uzar (items-stretch) → kenarlar hizalanır\n vertical: \"flex-col items-stretch\",\n },\n attached: {\n // Bitişik: boşluk yok; radius birleştirme compoundVariants ile uygulanır\n true: \"\",\n // Boşluklu: normal aralık, radius korunur\n false: \"gap-2\",\n },\n },\n compoundVariants: [\n {\n // Yatay + bitişik: bitişik yatay kenarlar düzleşir, -ml-px ile kenarlık örtüşür\n orientation: \"horizontal\",\n attached: true,\n class: [\n \"[&>*:not(:first-child)]:rounded-l-none\",\n \"[&>*:not(:last-child)]:rounded-r-none\",\n \"[&>*:not(:first-child)]:-ml-px\",\n ],\n },\n {\n // Dikey + bitişik: bitişik dikey kenarlar düzleşir, -mt-px ile kenarlık örtüşür\n orientation: \"vertical\",\n attached: true,\n class: [\n \"[&>*:not(:first-child)]:rounded-t-none\",\n \"[&>*:not(:last-child)]:rounded-b-none\",\n \"[&>*:not(:first-child)]:-mt-px\",\n ],\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n attached: true,\n },\n }\n);\n\n// ButtonGroup component props\nexport interface ButtonGroupProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof buttonGroupVariants> {\n /** Çocuk Button'lara yayılacak boyut (yalnızca çocuk kendi size'ını vermemişse) */\n size?: ButtonProps[\"size\"];\n /** Çocuk Button'lara yayılacak varyant (yalnızca çocuk kendi variant'ını vermemişse) */\n variant?: ButtonProps[\"variant\"];\n}\n\n/**\n * Premium ButtonGroup Component\n *\n * @param props - ButtonGroup bileşeni özellikleri\n * @param props.orientation - Yerleşim yönü (\"horizontal\" | \"vertical\"), varsayılan \"horizontal\"\n * @param props.attached - Bitişik (segmentli) mi yoksa boşluklu mu, varsayılan true\n * @param props.size - Çocuk Button'lara yayılacak boyut (opsiyonel)\n * @param props.variant - Çocuk Button'lara yayılacak varyant (opsiyonel)\n */\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n { className, orientation, attached, size, variant, children, ...props },\n ref\n ) => {\n // size/variant yalnızca en az biri tanımlıysa çocuklara enjekte edilir\n const shouldPropagate = size !== undefined || variant !== undefined;\n\n const enhancedChildren = shouldPropagate\n ? React.Children.map(children, (child) => {\n // Geçersiz element (string/number/null) veya Button olmayan çocuklar\n // GRACEFUL geçilir — geçersiz prop enjekte edilmez\n if (!React.isValidElement(child) || child.type !== Button) {\n return child;\n }\n\n const childProps = child.props as ButtonProps;\n\n // Çocuğun kendi prop'u önceliklidir (child.props.size ?? size)\n return React.cloneElement(child as React.ReactElement<ButtonProps>, {\n size: childProps.size ?? size,\n variant: childProps.variant ?? variant,\n });\n })\n : children;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(buttonGroupVariants({ orientation, attached }), className)}\n {...props}\n >\n {enhancedChildren}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\nimport { type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { toggleVariants } from \"./toggle\"\n\n/**\n * ToggleGroup Component\n *\n * Tek (single) veya çoklu (multiple) seçim destekleyen segmented toggle seti.\n * Radix UI `ToggleGroup` primitive'i üzerine kuruludur; roving-tabindex klavye\n * navigasyonu, tek/çoklu seçim mantığı ve erişilebilirlik rolleri (single için\n * `role=\"radiogroup\"` + item `role=\"radio\"`, multiple için `role=\"toolbar\"` +\n * item `aria-pressed`) Radix tarafından yönetilir — bu davranış yeniden yazılmaz.\n *\n * `variant` ve `size` değerleri bir React context (`ToggleGroupContext`) ile\n * item'lara yayılır (shadcn deseni). Her `ToggleGroupItem`, `Toggle` bileşeniyle\n * görsel parite için `toggleVariants`'i yeniden kullanır — aktif durum\n * `data-[state=on]:bg-accent data-[state=on]:text-accent-foreground` ile stillenir.\n */\n\n// Grup düzeyinde belirlenen variant/size'i item'lara taşıyan context (shadcn deseni).\n// Item, önce context değerini; context tanımsızsa kendi prop'unu kullanır.\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: \"default\",\n variant: \"default\",\n})\n\n// NOT: Radix `ToggleGroup.Root` prop tipi ayrımlı bir union'dır\n// (type=\"single\" → value: string, type=\"multiple\" → value: string[]). Bir `interface`\n// union'ı `extend` edemediğinden burada intersection'lı `type` alias kullanılır — bu,\n// tek/çoklu ayrımını (discriminated union) korur.\nexport type ToggleGroupProps = React.ComponentPropsWithoutRef<\n typeof ToggleGroupPrimitive.Root\n> &\n VariantProps<typeof toggleVariants>\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n ToggleGroupProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n className={cn(\n \"moonui-theme inline-flex items-center justify-center gap-1\",\n // Radix roving-focus kök elemana `data-orientation` yazar; dikey yerleşim\n // buna bağlanır. Yatay/tanımsız durumda taban sınıflar geçerli kalır —\n // yani mevcut render değişmez. Kardeş `button-group` ile desen paritesi.\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch data-[orientation=vertical]:justify-start\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n))\n\nToggleGroup.displayName = \"ToggleGroup\"\n\nexport interface ToggleGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,\n VariantProps<typeof toggleVariants> {}\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n ToggleGroupItemProps\n>(({ className, children, variant, size, ...props }, ref) => {\n // Grup context'i varsa onun değeri, yoksa item'ın kendi prop'u geçerli olur.\n const context = React.useContext(ToggleGroupContext)\n\n return (\n <ToggleGroupPrimitive.Item\n ref={ref}\n className={cn(\n toggleVariants({\n variant: context.variant ?? variant,\n size: context.size ?? size,\n }),\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n})\n\nToggleGroupItem.displayName = \"ToggleGroupItem\"\n\nexport { ToggleGroup, ToggleGroupItem }\n"]}
|