"use client"; import { useState } from 'react'; interface LinkData { name: string; originalUrl: string; customSlug: string; expiresAt: string; tags: string[]; } interface CreateLinkModalProps { onClose: () => void; onSubmit: (linkData: LinkData) => void; } export default function CreateLinkModal({ onClose, onSubmit }: CreateLinkModalProps) { const [formData, setFormData] = useState({ name: '', originalUrl: '', customSlug: '', expiresAt: '', tags: [] as string[], tagInput: '' }); const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleTagKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && formData.tagInput.trim()) { e.preventDefault(); addTag(); } }; const addTag = () => { if (formData.tagInput.trim() && !formData.tags.includes(formData.tagInput.trim())) { setFormData(prev => ({ ...prev, tags: [...prev.tags, prev.tagInput.trim()], tagInput: '' })); } }; const removeTag = (tagToRemove: string) => { setFormData(prev => ({ ...prev, tags: prev.tags.filter(tag => tag !== tagToRemove) })); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); // eslint-disable-next-line @typescript-eslint/no-unused-vars const { tagInput, ...submitData } = formData; onSubmit(submitData as LinkData); }; return (
{/* Header */}

Create New Link

{/* Form */}
{/* Link Name */}
{/* Original URL */}
{/* Custom Slug */}
short.io/

Leave blank to generate a random slug

{/* Expiration Date */}

Leave blank for a non-expiring link

{/* Tags */}
{formData.tags.length > 0 && (
{formData.tags.map(tag => ( {tag} ))}
)}
{/* Footer */}
); }