9 Commits

Author SHA1 Message Date
7dc207ddc4 Bob AI: Add a lofi music player component to the layout that plays b 2026-02-24 15:27:10 +00:00
94634a0425 Bob AI: Fix the CursorTrail component error by either importing the 2026-02-24 15:26:47 +00:00
7c50af171e Update src/app/layout.tsx 2026-02-24 15:26:23 +00:00
f53732c4a1 Bob AI: Add custom cursor animation with fancy visual effects, chang 2026-02-24 15:23:10 +00:00
bc2461f1a3 Update src/app/layout.tsx 2026-02-24 15:22:46 +00:00
bd8387a439 Bob AI: Add a lofi music player/audio element that plays background 2026-02-24 15:18:43 +00:00
d34f3a62dd Merge version_1 into main
Merge version_1 into main
2026-02-24 15:00:24 +00:00
2239bb1362 Merge version_1 into main
Merge version_1 into main
2026-02-24 14:59:40 +00:00
31cd7ad281 Merge version_1 into main
Merge version_1 into main
2026-02-24 14:57:18 +00:00

View File

@@ -13,16 +13,35 @@ const ubuntu = Ubuntu({
const inter = Inter({
variable: "--font-inter", subsets: ["latin"],
});
export const metadata: Metadata = {
title: "Strategic Media Buying Expert | Drive Advertising Results", description: "Professional media buying services that deliver measurable ROI. Expert strategies for brands and advertising professionals seeking impactful campaigns.", keywords: ["media buying", "advertising strategy", "digital marketing", "brand growth", "ROI optimization"]
title: "Strategic Media Buying Expert | Drive Advertising Results",
description: "Professional media buying services that deliver measurable ROI. Expert strategies for brands and advertising professionals seeking impactful campaigns.",
keywords: ["media buying", "advertising strategy", "digital marketing", "brand growth", "ROI optimization"]
};
'use client';
import { useState } from 'react';
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const [isPlaying, setIsPlaying] = useState(false);
const toggleMusic = () => {
const audio = document.getElementById('lofi-music') as HTMLAudioElement;
if (audio) {
if (isPlaying) {
audio.pause();
} else {
audio.play();
}
setIsPlaying(!isPlaying);
}
};
return (
<html lang="en" suppressHydrationWarning>
<ServiceWrapper>
@@ -31,6 +50,32 @@ export default function RootLayout({
>
<Tag />
{children}
{/* Lofi Music Player */}
<audio
id="lofi-music"
src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"
loop
preload="metadata"
/>
{/* Floating Music Toggle Button */}
<button
onClick={toggleMusic}
className="fixed bottom-6 right-6 z-50 w-14 h-14 rounded-full bg-gradient-to-br from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600 text-white shadow-lg hover:shadow-xl transition-all duration-300 flex items-center justify-center hover:scale-110 active:scale-95"
aria-label="Toggle lofi music"
title={isPlaying ? "Pause music" : "Play lofi music"}
>
{isPlaying ? (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
<path d="M6 4h4v16H6V4zm8 0h4v16h-4V4z" />
</svg>
) : (
<svg className="w-6 h-6" fill="currentColor" viewBox="0 0 24 24">
<path d="M8 5v14l11-7z" />
</svg>
)}
</button>
<script
dangerouslySetInnerHTML={{
@@ -93,6 +138,14 @@ export default function RootLayout({
' font-weight: 600 !important;' +
' font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;' +
' pointer-events: none !important;' +
'}';
}}
/>
</body>
</ServiceWrapper>
</html>
);
}
' white-space: nowrap !important;' +
' box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15) !important;' +
' letter-spacing: 0.3px !important;' +