-
-
This is the Winamp player.
-
You can add your music player UI here.
+
+
-
+
+
+
+
+
+ {{ currentTrack ? `${currentTrackIndex + 1}. ${currentTrack.artist} - ${currentTrack.title}` : 'No Track Loaded' }}
+
+
{{ formatTime(currentTime) }}
+
+
+
+
+ {{ Math.round(audioRate / 1000) || '0' }}
+ kbps
+
+
+ {{ Math.round(audioSampleRate / 1000) || '0' }}
+ kHz
+
+
{{ stereoStatus }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+.track-title-marquee {
+ overflow: hidden;
+ white-space: nowrap;
+ position: relative;
+ height: 14px; /* Adjust height for single line of text */
+}
+
+.track-title-marquee span {
+ position: absolute;
+ animation: marquee 10s linear infinite;
+ padding-left: 100%; /* Start off-screen */
+}
+
+@keyframes marquee {
+ 0% { transform: translateX(0%); }
+ 100% { transform: translateX(-100%); }
+}
+
+.time-display {
+ font-size: 16px;
+ text-align: right;
+ height: 14px;
+}
+
+.middle-panel {
+ display: flex;
+ justify-content: space-between;
+ background-color: #000;
+ border: 1px inset #808080;
+ padding: 2px;
+ color: #c0c0c0;
+ font-size: 12px;
+ height: 16px;
+ margin-bottom: 2px;
+}
+
+.kbps, .khz, .mono-stereo {
+ display: flex;
+ align-items: center;
+}
+.kbps span, .khz span {
+ font-size: 10px;
+ margin-left: 2px;
+}
+
+.bottom-panel {
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ background-color: #3b3b3b;
+ padding: 2px;
+ border: 1px solid #7a7a7a;
+ border-top-color: #000;
+ border-left-color: #000;
+}
+
+.control-buttons {
+ display: flex;
+ gap: 1px;
+}
+
+.control-btn {
+ width: 20px;
+ height: 18px;
+ border: 1px solid #7a7a7a;
+ border-right-color: #000;
+ border-bottom-color: #000;
+ background-color: #3b3b3b;
+ cursor: pointer;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 80%;
+ position: relative;
+ overflow: hidden;
+}
+
+.control-btn:active {
+ border: 1px solid #000;
+ border-right-color: #7a7a7a;
+ border-bottom-color: #7a7a7a;
+}
+
+
+/* Data URI for button icons (basic representation, replace with actual pixel art) */
+.control-btn.prev { background-image: url('data:image/svg+xml;utf8,
'); }
+.control-btn.play { background-image: url('data:image/svg+xml;utf8,
'); }
+.control-btn.play.pause-active { background-image: url('data:image/svg+xml;utf8,
'); }
+.control-btn.stop { background-image: url('data:image/svg+xml;utf8,
'); }
+.control-btn.next { background-image: url('data:image/svg+xml;utf8,
'); }
+
+
+/* Sliders */
+.slider {
+ -webkit-appearance: none;
+ appearance: none;
+ background: #000;
+ outline: none;
+ cursor: pointer;
+ border: 1px inset #808080; /* Sunken effect */
+}
+
+.slider::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ width: 8px;
+ height: 16px;
+ background: #c0c0c0;
+ border: 1px solid #fff;
+ border-right-color: #404040;
+ border-bottom-color: #404040;
+ cursor: grab;
+}
+
+.slider::-moz-range-thumb {
+ width: 8px;
+ height: 16px;
+ background: #c0c0c0;
+ border: 1px solid #fff;
+ border-right-color: #404040;
+ border-bottom-color: #404040;
+ cursor: grab;
+}
+
+.volume-slider-container {
+ width: 60px;
+}
+.volume-slider {
+ width: 100%;
+ height: 8px;
+}
+
+.progress-bar-container {
+ flex-grow: 1;
+}
+.progress-slider {
+ width: 100%;
+ height: 8px;
+}
+
\ No newline at end of file