'use client'; import { Button } from '@/components/ui/button'; import { Select } from '@/components/ui/select'; import { useState } from 'react'; import { Download, Copy, Check } from 'lucide-react'; import { toast } from 'sonner'; import { exportAsCSS, exportAsSCSS, exportAsTailwind, exportAsJSON, exportAsJavaScript, downloadAsFile, type ExportColor, } from '@/lib/utils/export'; interface ExportMenuProps { colors: string[]; className?: string; } type ExportFormat = 'css' | 'scss' | 'tailwind' | 'json' | 'javascript'; export function ExportMenu({ colors, className }: ExportMenuProps) { const [format, setFormat] = useState('css'); const [copied, setCopied] = useState(false); const exportColors: ExportColor[] = colors.map((hex) => ({ hex })); const getExportContent = (): string => { switch (format) { case 'css': return exportAsCSS(exportColors); case 'scss': return exportAsSCSS(exportColors); case 'tailwind': return exportAsTailwind(exportColors); case 'json': return exportAsJSON(exportColors); case 'javascript': return exportAsJavaScript(exportColors); } }; const getFileExtension = (): string => { switch (format) { case 'css': return 'css'; case 'scss': return 'scss'; case 'tailwind': return 'js'; case 'json': return 'json'; case 'javascript': return 'js'; } }; const handleCopy = () => { const content = getExportContent(); navigator.clipboard.writeText(content); setCopied(true); toast.success('Copied to clipboard!'); setTimeout(() => setCopied(false), 2000); }; const handleDownload = () => { const content = getExportContent(); const extension = getFileExtension(); downloadAsFile(content, `palette.${extension}`, 'text/plain'); toast.success('Downloaded!'); }; if (colors.length === 0) { return null; } return (

Export Palette

            {getExportContent()}
          
); }