import { useEffect, useState } from 'react'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { RefreshCw, Lock } from 'lucide-react'; import { generateSlugFromName } from '@/lib/slugUtils'; interface SlugFieldProps { name: string; slug: string; onSlugChange: (slug: string) => void; isModerator: boolean; label?: string; hideForNonModerators?: boolean; } export function SlugField({ name, slug, onSlugChange, isModerator, label = 'URL Slug', hideForNonModerators = true }: SlugFieldProps) { const [isEditing, setIsEditing] = useState(false); // Auto-generate slug when name changes useEffect(() => { if (!isEditing && name) { const generatedSlug = generateSlugFromName(name); onSlugChange(generatedSlug); } }, [name, isEditing, onSlugChange]); const handleRegenerate = () => { if (name) { const generatedSlug = generateSlugFromName(name); onSlugChange(generatedSlug); setIsEditing(false); } }; // Hide completely for non-moderators if configured if (!isModerator && hideForNonModerators) { return null; } return (
URL will be automatically generated from the name
)} {isModerator && slug && (Preview: .../{slug}
)}