refact: new logo and look
This commit is contained in:
BIN
backend/uploads/00ce7e87-614d-44f7-a300-0ac8fb4af2bd_data.m4a
Normal file
BIN
backend/uploads/00ce7e87-614d-44f7-a300-0ac8fb4af2bd_data.m4a
Normal file
Binary file not shown.
BIN
frontend/public/Logo.png
Normal file
BIN
frontend/public/Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 421 KiB |
@@ -202,10 +202,10 @@ export default function App() {
|
|||||||
|
|
||||||
// Main App
|
// Main App
|
||||||
return (
|
return (
|
||||||
<div className="h-screen bg-gray-50 text-gray-800 flex flex-col overflow-hidden">
|
<div className="h-screen bg-white-50 text-gray-800 flex flex-col overflow-hidden">
|
||||||
<Header onSearch={handleSearch} onLogout={handleLogout} onNavigateToSearch={handleNavigateToSearch} />
|
<Header onSearch={handleSearch} onLogout={handleLogout} onNavigateToSearch={handleNavigateToSearch} />
|
||||||
|
|
||||||
<div className="flex-1 flex overflow-hidden max-w-[1400px] mx-auto w-full">
|
<div className="flex-1 flex overflow-hidden max-w-[1500px] mx-auto w-full">
|
||||||
<Sidebar user={user} activeTab={activeTab} onTabChange={setActiveTab} />
|
<Sidebar user={user} activeTab={activeTab} onTabChange={setActiveTab} />
|
||||||
|
|
||||||
<main className="flex-1 overflow-y-auto p-6">
|
<main className="flex-1 overflow-y-auto p-6">
|
||||||
|
|||||||
@@ -23,10 +23,15 @@ export default function Header({ onSearch, onLogout, onNavigateToSearch }) {
|
|||||||
<div className="max-w-[1400px] mx-auto flex items-center justify-between gap-6">
|
<div className="max-w-[1400px] mx-auto flex items-center justify-between gap-6">
|
||||||
{/* Left: Logo */}
|
{/* Left: Logo */}
|
||||||
<div className="flex items-center gap-3 flex-shrink-0">
|
<div className="flex items-center gap-3 flex-shrink-0">
|
||||||
<div className="w-8 h-8 bg-[#f4b840] rounded-lg flex items-center justify-center">
|
<div className="w-8 h-8 rounded-lg flex items-center justify-center">
|
||||||
<svg className="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
{/* <svg className="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z" />
|
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M19 11a7 7 0 01-7 7m0 0a7 7 0 01-7-7m7 7v4m0 0H8m4 0h4m-4-8a3 3 0 01-3-3V5a3 3 0 116 0v6a3 3 0 01-3 3z" />
|
||||||
</svg>
|
</svg> */}
|
||||||
|
<img
|
||||||
|
src="/Logo.png"
|
||||||
|
alt="VoiceVault Logo"
|
||||||
|
className="w-10 h-10 object-contain rounded-lg"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<h1 className="text-lg font-bold text-gray-900">VoiceVault</h1>
|
<h1 className="text-lg font-bold text-gray-900">VoiceVault</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export default function PostDetail({ postId, user, onBack }) {
|
|||||||
const [volume, setVolume] = useState(1)
|
const [volume, setVolume] = useState(1)
|
||||||
const [downloading, setDownloading] = useState(false)
|
const [downloading, setDownloading] = useState(false)
|
||||||
const audioRef = useRef(null)
|
const audioRef = useRef(null)
|
||||||
|
const [audioSrc, setAudioSrc] = useState(null)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (postId) {
|
if (postId) {
|
||||||
@@ -34,6 +35,8 @@ export default function PostDetail({ postId, user, onBack }) {
|
|||||||
|
|
||||||
// Load audio URL if available
|
// Load audio URL if available
|
||||||
if (postData.audio_url && audioRef.current) {
|
if (postData.audio_url && audioRef.current) {
|
||||||
|
setPost(postData)
|
||||||
|
setAudioSrc(postData.audio_url)
|
||||||
audioRef.current.src = postData.audio_url
|
audioRef.current.src = postData.audio_url
|
||||||
audioRef.current.load()
|
audioRef.current.load()
|
||||||
}
|
}
|
||||||
@@ -290,12 +293,14 @@ export default function PostDetail({ postId, user, onBack }) {
|
|||||||
|
|
||||||
<audio
|
<audio
|
||||||
ref={audioRef}
|
ref={audioRef}
|
||||||
|
src={audioSrc}
|
||||||
onTimeUpdate={handleTimeUpdate}
|
onTimeUpdate={handleTimeUpdate}
|
||||||
onLoadedMetadata={handleLoadedMetadata}
|
onLoadedMetadata={handleLoadedMetadata}
|
||||||
onEnded={handleEnded}
|
onEnded={handleEnded}
|
||||||
preload="metadata"
|
preload="metadata"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
<div className="flex items-center gap-4 mb-4">
|
<div className="flex items-center gap-4 mb-4">
|
||||||
<button
|
<button
|
||||||
onClick={togglePlay}
|
onClick={togglePlay}
|
||||||
|
|||||||
Reference in New Issue
Block a user