diff --git a/src/components/MusicPlayer.tsx b/src/components/MusicPlayer.tsx
index 6d2fc28..bfbc174 100644
--- a/src/components/MusicPlayer.tsx
+++ b/src/components/MusicPlayer.tsx
@@ -19,6 +19,7 @@ import {
Minimize2,
Minus
} from 'lucide-react'
+import { formatDuration } from '@/lib/format-duration'
export function MusicPlayer() {
const {
@@ -179,8 +180,8 @@ export function MusicPlayer() {
/>
- {formatTime(currentTime)}
- {formatTime(duration)}
+ {formatDuration(currentTime)}
+ {formatDuration(duration)}
@@ -270,7 +271,7 @@ export function MusicPlayer() {
)}
- {formatTime(track.duration)}
+ {formatDuration(track.duration)}
))}
@@ -328,8 +329,8 @@ export function MusicPlayer() {
/>
- {formatTime(currentTime)}
- {formatTime(duration)}
+ {formatDuration(currentTime)}
+ {formatDuration(duration)}
@@ -408,7 +409,7 @@ export function MusicPlayer() {
)}
- {formatTime(track.duration)}
+ {formatDuration(track.duration)}
))}
diff --git a/src/lib/format-duration.ts b/src/lib/format-duration.ts
new file mode 100644
index 0000000..c203568
--- /dev/null
+++ b/src/lib/format-duration.ts
@@ -0,0 +1,18 @@
+export function formatDuration(ms: number): string {
+ if (isNaN(ms) || ms < 0) return '0:00'
+
+ // Convert milliseconds to seconds
+ const totalSeconds = Math.floor(ms / 1000)
+
+ // Calculate hours, minutes, and remaining seconds
+ const hours = Math.floor(totalSeconds / 3600)
+ const minutes = Math.floor((totalSeconds % 3600) / 60)
+ const seconds = totalSeconds % 60
+
+ // Format based on duration
+ if (hours > 0) {
+ return `${hours}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
+ } else {
+ return `${minutes}:${seconds.toString().padStart(2, '0')}`
+ }
+}
diff --git a/src/lib/format-size.ts b/src/lib/format-size.ts
new file mode 100644
index 0000000..5044ff8
--- /dev/null
+++ b/src/lib/format-size.ts
@@ -0,0 +1,32 @@
+/**
+ * Units for file sizes
+ */
+const FILE_SIZE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB']
+
+/**
+ * Converts a file size in bytes to a human-readable string
+ * @param bytes File size in bytes
+ * @returns Formatted file size string (e.g., "1.5 MB")
+ */
+export function formatSize(bytes: number, binary: boolean = false): string {
+ // Handle invalid input
+ if (bytes === null || bytes === undefined || isNaN(bytes) || bytes < 0) {
+ return `0 B`
+ }
+
+ // If the size is 0, return early
+ if (bytes === 0) {
+ return `0 B`
+ }
+
+ // Otherwise, determine the appropriate unit based on the size
+ const unit = binary ? 1024 : 1000
+ const unitIndex = Math.floor(Math.log(bytes) / Math.log(unit))
+ const unitSize = Math.pow(unit, unitIndex)
+ const value = bytes / unitSize
+
+ // Make sure we don't exceed our units array
+ const safeUnitIndex = Math.min(unitIndex, FILE_SIZE_UNITS.length - 1)
+
+ return `${value.toFixed(2)} ${FILE_SIZE_UNITS[safeUnitIndex]}`
+}