"use client" import { Dices, Upload, Sun, Moon } from 'lucide-react' import { Button } from '@/components/ui/button' import { Label } from '@/components/ui/label' import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select' import { Separator } from '@/components/ui/separator' import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' import { useThemeManager } from '@/hooks/use-theme-manager' import { useCircularTransition } from '@/hooks/use-circular-transition' import { colorThemes, tweakcnThemes } from '@/config/theme-data' import { radiusOptions, baseColors } from '@/config/theme-customizer-constants' import { ColorPicker } from '@/components/color-picker' import type { ImportedTheme } from '@/types/theme-customizer' import React from 'react' import "./circular-transition.css" interface ThemeTabProps { selectedTheme: string setSelectedTheme: (theme: string) => void selectedTweakcnTheme: string setSelectedTweakcnTheme: (theme: string) => void selectedRadius: string setSelectedRadius: (radius: string) => void setImportedTheme: (theme: ImportedTheme | null) => void onImportClick: () => void } export function ThemeTab({ selectedTheme, setSelectedTheme, selectedTweakcnTheme, setSelectedTweakcnTheme, selectedRadius, setSelectedRadius, setImportedTheme, onImportClick }: ThemeTabProps) { const { isDarkMode, brandColorsValues, setBrandColorsValues, applyTheme, applyTweakcnTheme, applyRadius, handleColorChange } = useThemeManager() const { toggleTheme } = useCircularTransition() const handleRandomShadcn = () => { // Apply a random shadcn theme const randomTheme = colorThemes[Math.floor(Math.random() * colorThemes.length)] setSelectedTheme(randomTheme.value) setSelectedTweakcnTheme("") // Clear tweakcn selection setBrandColorsValues({}) // Clear brand colors state setImportedTheme(null) // Clear imported theme applyTheme(randomTheme.value, isDarkMode) } const handleRandomTweakcn = () => { // Apply a random tweakcn theme const randomTheme = tweakcnThemes[Math.floor(Math.random() * tweakcnThemes.length)] setSelectedTweakcnTheme(randomTheme.value) setSelectedTheme("") // Clear shadcn selection setBrandColorsValues({}) // Clear brand colors state setImportedTheme(null) // Clear imported theme applyTweakcnTheme(randomTheme.preset, isDarkMode) } const handleRadiusSelect = (radius: string) => { setSelectedRadius(radius) applyRadius(radius) } const handleLightMode = (event: React.MouseEvent) => { if (isDarkMode === false) return toggleTheme(event) } const handleDarkMode = (event: React.MouseEvent) => { if (isDarkMode === true) return toggleTheme(event) } return (
{/* Hazır temalar */}
{/* Genişletilmiş temalar */}
{/* Köşe yuvarlama */}
{radiusOptions.map((option) => (
handleRadiusSelect(option.value)} >
{option.name}
))}
{/* Görünüm modu */}
{/* Tema içe aktar */}

tweakcn.com gibi araçlardan dışa aktardığınız JSON tema dosyasını yükleyebilirsiniz.

{/* Marka renkleri */} {baseColors.map((color) => (
))}
) }