main: fix build issue

Signed-off-by: nfel <nfilsaraee@gmail.com>
This commit is contained in:
2025-12-30 02:07:26 +03:30
parent c33570d3ec
commit 9fd79a2d4e
5 changed files with 124 additions and 3 deletions
+59
View File
@@ -22,6 +22,9 @@ export default function AddAlbumModal({ show, onClose, onAdd }: AddAlbumModalPro
const [isUploading, setIsUploading] = useState(false);
const [songs, setSongs] = useState<Song[]>([{ id: '', title: '', duration: '', previewUrl: '', fullUrl: '' }]);
const [error, setError] = useState('');
const [tag, setTag] = useState<'Album' | 'EP' | 'Demo' | 'Deluxe' | 'Single'>('Album');
const [format, setFormat] = useState<'mp3' | 'm4a' | 'flac' | 'wav'>('mp3');
const [bitrate, setBitrate] = useState('320kbps');
const handleAddSong = () => {
setSongs([...songs, { id: '', title: '', duration: '', previewUrl: '', fullUrl: '' }]);
@@ -134,6 +137,9 @@ export default function AddAlbumModal({ show, onClose, onAdd }: AddAlbumModalPro
description,
price: priceNum,
songs: albumSongs,
tag,
format,
bitrate,
};
onAdd(newAlbum);
@@ -150,6 +156,9 @@ export default function AddAlbumModal({ show, onClose, onAdd }: AddAlbumModalPro
setCoverImageFile(null);
setSongs([{ id: '', title: '', duration: '', previewUrl: '', fullUrl: '' }]);
setError('');
setTag('Album');
setFormat('mp3');
setBitrate('320kbps');
onClose();
};
@@ -309,6 +318,56 @@ export default function AddAlbumModal({ show, onClose, onAdd }: AddAlbumModalPro
/>
</div>
{/* Tag, Format, and Bitrate */}
<div className="grid grid-cols-3 gap-4">
<div>
<label className="block text-sm font-medium text-gray-300 mb-2">
Tag *
</label>
<select
value={tag}
onChange={(e) => setTag(e.target.value as any)}
className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg focus:border-accent-cyan focus:outline-none focus:ring-2 focus:ring-accent-cyan/50 text-white"
required
>
<option value="Album">Album</option>
<option value="EP">EP</option>
<option value="Demo">Demo</option>
<option value="Deluxe">Deluxe</option>
<option value="Single">Single</option>
</select>
</div>
<div>
<label className="block text-sm font-medium text-gray-300 mb-2">
Format *
</label>
<select
value={format}
onChange={(e) => setFormat(e.target.value as any)}
className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg focus:border-accent-cyan focus:outline-none focus:ring-2 focus:ring-accent-cyan/50 text-white"
required
>
<option value="mp3">MP3</option>
<option value="m4a">M4A</option>
<option value="flac">FLAC</option>
<option value="wav">WAV</option>
</select>
</div>
<div>
<label className="block text-sm font-medium text-gray-300 mb-2">
Bitrate *
</label>
<input
type="text"
value={bitrate}
onChange={(e) => setBitrate(e.target.value)}
placeholder="320kbps"
className="w-full px-4 py-3 bg-white/5 border border-white/10 rounded-lg focus:border-accent-cyan focus:outline-none focus:ring-2 focus:ring-accent-cyan/50 text-white placeholder-gray-500"
required
/>
</div>
</div>
{/* Songs */}
<div>
<div className="flex items-center justify-between mb-2">