diff --git a/app/(website)/_components/CallToActionSection.tsx b/app/(website)/_components/CallToActionSection.tsx new file mode 100644 index 0000000..859aaac --- /dev/null +++ b/app/(website)/_components/CallToActionSection.tsx @@ -0,0 +1,43 @@ +// components/CallToActionSection.tsx +import React from "react"; +import Button from "@/components/ui/Button"; + +type CallToActionSectionProps = { + title: string; + subtitle: string; + buttonText: string; + buttonHref: string; +}; + +const CallToActionSection: React.FC = ({ + title, + subtitle, + buttonText, + buttonHref, +}) => { + return ( + // Use primary background, primary-foreground for text +
+ {" "} + {/* Adjusted padding */} +
+ {" "} + {/* Use container */} +

{title}

{" "} + {/* Text color inherited */} +

+ {subtitle} +

{" "} + {/* Slightly less emphasis */} + {/* Button needs contrast on primary bg. Use a secondary/outline/custom variant */} + +
+
+ ); +}; + +export default CallToActionSection; diff --git a/app/(website)/_components/ClientLogosSection.tsx b/app/(website)/_components/ClientLogosSection.tsx new file mode 100644 index 0000000..8555a1a --- /dev/null +++ b/app/(website)/_components/ClientLogosSection.tsx @@ -0,0 +1,84 @@ +// components/ClientLogosSection.tsx +import React from "react"; +import Image from "next/image"; // For actual logos +import { FaBuilding, FaCar, FaLaptopCode, FaUsers } from "react-icons/fa"; // For placeholders + +// Define structure for client data (adapt as needed) +type Client = { + name: string; + logoUrl?: string; // URL to actual logo image + icon?: React.ElementType; // Placeholder icon component +}; + +type ClientLogosSectionProps = { + title: string; + description?: string; + clients: Client[]; +}; + +const ClientLogosSection: React.FC = ({ + title, + description, + clients, +}) => { + return ( + // Use semantic background +
+
+ {" "} + {/* Use container */} + {/* Use semantic foreground */} +

+ {title} +

+ {/* TODO: Implement Auto-Sliding Panel (e.g., using Swiper.js or Embla Carousel) */} +
+ {" "} + {/* Adjust opacity */} + {clients.map((client, index) => ( +
+ {client.logoUrl ? ( + {`${client.name} + ) : client.icon ? ( + // Use semantic muted foreground for icons, primary on hover + React.createElement(client.icon, { + className: + "text-5xl text-muted-foreground/80 hover:text-primary transition-colors", + }) + ) : ( + {client.name} // Fallback text + )} +
+ ))} +
+ {description && ( +

+ {description} +

+ )} +
+
+ ); +}; + +// Example default data matching the original page (using placeholders) +export const defaultClients: Client[] = [ + { name: "Financial Services Client", icon: FaBuilding }, + { name: "Automotive Client", icon: FaCar }, + { name: "Tech Industry Client", icon: FaLaptopCode }, + { name: "Generic Client 1", icon: FaUsers }, + { name: "Generic Client 2", icon: FaBuilding }, +]; + +export default ClientLogosSection; diff --git a/app/(website)/_components/CoreServicesSection.tsx b/app/(website)/_components/CoreServicesSection.tsx new file mode 100644 index 0000000..799f43e --- /dev/null +++ b/app/(website)/_components/CoreServicesSection.tsx @@ -0,0 +1,76 @@ +// components/CoreServicesSection.tsx +import React from "react"; +import ServiceCard from "./ServiceCard"; +import { FaCogs, FaProjectDiagram, FaCode } from "react-icons/fa"; // Example icons + +// Define the structure for a service item +type ServiceItem = { + icon: React.ElementType; + title: string; + description: string; +}; + +// Define props for the section +type CoreServicesSectionProps = { + title: string; + subtitle: string; + services: ServiceItem[]; +}; + +const CoreServicesSection: React.FC = ({ + title, + subtitle, + services, +}) => { + return ( + // Use semantic secondary background +
+
+ {" "} + {/* Use container */} + {/* Use semantic foreground */} +

+ {title} +

+ {/* Use semantic muted foreground */} +

+ {subtitle} +

+
+ {services.map((service, index) => ( + + ))} +
+
+
+ ); +}; + +// Example default data matching the original page +export const defaultCoreServices: ServiceItem[] = [ + { + icon: FaCogs, + title: "Resource Augmentation", + description: + "Access top-tier IT talent seamlessly integrated with your team. Skilled professionals for short-term projects or long-term engagements.", + }, + { + icon: FaProjectDiagram, + title: "Project Management", + description: + "Expert management ensuring on-time, within-budget delivery with superior results, risk mitigation, and maximum efficiency.", + }, + { + icon: FaCode, + title: "Product Development", + description: + "Creating innovative, scalable digital products from concept to deployment to enhance efficiency and foster business growth.", + }, +]; + +export default CoreServicesSection; diff --git a/app/(website)/_components/FeaturedProductSection.tsx b/app/(website)/_components/FeaturedProductSection.tsx new file mode 100644 index 0000000..3fe489d --- /dev/null +++ b/app/(website)/_components/FeaturedProductSection.tsx @@ -0,0 +1,108 @@ +// components/FeaturedProductSection.tsx +import React from "react"; +import Image from "next/image"; +import Button from "@/components/ui/Button"; +import { FiCheckCircle, FiArrowRight } from "react-icons/fi"; // Example icons + +type FeaturePoint = { + text: string; +}; + +type FeaturedProductProps = { + eyebrow?: string; + title: string; + productName: string; // e.g., "OBSE" + description: string; + features: FeaturePoint[]; + buttonText: string; + buttonHref: string; + imageUrl: string; // Path to product graphic/mockup + imageAlt: string; +}; + +const FeaturedProductSection: React.FC = ({ + eyebrow, + title, + productName, + description, + features, + buttonText, + buttonHref, + imageUrl, + imageAlt, +}) => { + return ( + // Use secondary background for visual separation +
+
+
+ {/* Text Content Area (Takes up half on desktop) */} +
+ {eyebrow && ( +

+ {eyebrow} +

+ )} + {/* Main title uses foreground color */} +

+ {title} {productName} +

+ {/* Description uses muted foreground */} +

{description}

+ {/* Feature List */} +
    + {" "} + {/* Ensure list is left-aligned */} + {features.map((feature, index) => ( +
  • + + {/* Feature text uses muted foreground */} + {feature.text} +
  • + ))} +
+ {/* Call to Action Button */} + +
+ + {/* Image Area (Takes up half on desktop) */} +
+ {/* Add perspective/shadow for visual lift */} +
+ {/* Apply subtle dark overlay on image if needed for contrast */} + {/*
*/} + {imageAlt} +
+
+
+
+
+ ); +}; + +// Example default data for OBSE +export const defaultObseFeatures: FeaturePoint[] = [ + { text: "Automate data extraction & analysis from bank statements." }, + { text: "Reduce manual errors and increase processing speed." }, + { text: "Gain deep insights into financial health and trends." }, + { text: "Enhance fraud detection capabilities." }, + { text: "Seamless integration with existing financial systems." }, +]; + +export default FeaturedProductSection; diff --git a/app/(website)/_components/HeroSection.tsx b/app/(website)/_components/HeroSection.tsx new file mode 100644 index 0000000..6737610 --- /dev/null +++ b/app/(website)/_components/HeroSection.tsx @@ -0,0 +1,67 @@ +// components/HeroSection.tsx +import React from "react"; +import Image from "next/image"; +import Button from "@/components/ui/Button"; // Use the updated Button + +type HeroSectionProps = { + title: React.ReactNode; // Allow JSX like
+ subtitle: string; + buttonText: string; + buttonHref: string; + imageUrl?: string; // Optional image URL + // videoUrl?: string; // Optional video URL +}; + +const HeroSection: React.FC = ({ + title, + subtitle, + buttonText, + buttonHref, + imageUrl = "/hero-bg.jpg", // Default background image +}) => { + return ( +
+ {" "} + {/* Adjusted background */} + {/* Background Image/Video */} +
+ {" "} + {/* Adjusted opacity */} + {imageUrl && ( + Hero background + )} + {/* TODO: Add video support if needed */} +
+ {/* Overlay for better text contrast */} +
+ {/* Content */} +
+ {" "} + {/* Use container */} +

+ {title} +

+

+ {subtitle} +

+ +
+
+ ); +}; + +export default HeroSection; diff --git a/app/(website)/_components/HeroSectionDynamic.tsx b/app/(website)/_components/HeroSectionDynamic.tsx new file mode 100644 index 0000000..de7131f --- /dev/null +++ b/app/(website)/_components/HeroSectionDynamic.tsx @@ -0,0 +1,98 @@ +// components/HeroSectionDynamic.tsx +import React from "react"; +import Image from "next/image"; +import Button from "@/components/ui/Button"; // Use the updated Button +import { FiArrowRight } from "react-icons/fi"; + +type HeroSectionProps = { + title: React.ReactNode; // Allow JSX like
+ subtitle: string; + buttonText: string; + buttonHref: string; + imageUrl?: string; // Main background visual +}; + +const HeroSectionDynamic: React.FC = ({ + title, + subtitle, + buttonText, + buttonHref, + imageUrl = "/hero-bg.jpg", // Ensure this high-quality image exists +}) => { + return ( +
+ {/* Layer 1: Background Image/Gradient */} +
+ {imageUrl && ( + Innovative Technology Background + )} + {/* Fallback gradient if no image */} + {/*
*/} + {/* Subtle Vignette Effect */} +
+
+ + {/* Layer 2: Floating Abstract Shapes (Subtle animation) */} + {/* Shape 1 - Soft Primary Color Blob */} + + {/* Shape 2 - Outline Shape */} + + {/* Shape 3 - Small Accent */} + + + {/* Layer 3: Content */} +
+
+ {" "} + {/* Max width for content */} + {/* Optional: Small "Eyebrow" text */} +

+ Owethu Managed Services +

+ {/* Title - Larger, bolder */} +

+ {/* Example gradient text - remove class if not desired */} + + {title} + +

+ {/* Subtitle - Clear foreground color */} +

+ {subtitle} +

+ {/* Button - Primary variant */} +
+ +
+
+
+
+ ); +}; + +export default HeroSectionDynamic; diff --git a/app/(website)/_components/HeroSectionModern.tsx b/app/(website)/_components/HeroSectionModern.tsx new file mode 100644 index 0000000..99e7eb1 --- /dev/null +++ b/app/(website)/_components/HeroSectionModern.tsx @@ -0,0 +1,80 @@ +// components/HeroSectionModern.tsx +import React from "react"; +import Image from "next/image"; +import Button from "@/components/ui/Button"; // Use the updated Button + +type HeroSectionProps = { + title: React.ReactNode; // Allow JSX like
+ subtitle: string; + buttonText: string; + buttonHref: string; + imageUrl?: string; // Optional image URL + // videoUrl?: string; // Optional video URL +}; + +const HeroSectionModern: React.FC = ({ + title, + subtitle, + buttonText, + buttonHref, + imageUrl = "/hero-bg.jpg", // Default background image - MAKE SURE THIS EXISTS +}) => { + return ( + // Use min-h-screen for full viewport height adjust if needed +
+ {/* Background Image/Video Layer */} +
+ {imageUrl && ( + OMS Hero background + )} + {/* TODO: Add video support if needed */} + + {/* Gradient Overlay - Stronger on left, fades towards right */} + {/* Adjust gradient stops and colors based on light/dark mode */} +
+
+ + {/* Content Area (Takes up roughly half on desktop) */} +
+
+ {" "} + {/* Container for padding */} + {/* Title - Using Primary color */} +

+ {title} +

+ {/* Subtitle - Using Foreground color */} +

+ {subtitle} +

+ {/* Button */} +
+ +
+
+
+ + {/* Optional: Right side visual area (mostly shows background now) */} + {/* You could add abstract shapes or other elements here if desired */} + {/*
*/} +
+ ); +}; + +export default HeroSectionModern; diff --git a/app/(website)/_components/ServiceCard.tsx b/app/(website)/_components/ServiceCard.tsx new file mode 100644 index 0000000..216836d --- /dev/null +++ b/app/(website)/_components/ServiceCard.tsx @@ -0,0 +1,27 @@ +// components/ServiceCard.tsx +import React from "react"; + +type ServiceCardProps = { + icon: React.ElementType; // Expect a component like FaCogs + title: string; + description: string; +}; + +const ServiceCard: React.FC = ({ + icon: Icon, + title, + description, +}) => { + return ( + // Use semantic variables for background, text, border +
+ + {/* Use semantic foreground for title */} +

{title}

+ {/* Use semantic muted foreground for description */} +

{description}

+
+ ); +}; + +export default ServiceCard; diff --git a/app/(website)/_components/WhyChooseUsSection.tsx b/app/(website)/_components/WhyChooseUsSection.tsx new file mode 100644 index 0000000..2c576c6 --- /dev/null +++ b/app/(website)/_components/WhyChooseUsSection.tsx @@ -0,0 +1,97 @@ +// components/WhyChooseUsSection.tsx +import React from "react"; +import { IconType } from "react-icons"; // Import IconType for typing +import { FiZap, FiUsers, FiTarget, FiBarChart2 } from "react-icons/fi"; // Example icons + +type FeatureItem = { + icon: IconType; + title: string; + description: string; +}; + +type WhyChooseUsProps = { + title: string; + subtitle?: string; + features: FeatureItem[]; +}; + +const WhyChooseUsSection: React.FC = ({ + title, + subtitle, + features, +}) => { + return ( + // Use standard background for seamless flow or secondary for slight distinction +
+
+
+ {/* Use semantic foreground */} +

+ {title} +

+ {subtitle && ( + // Use semantic muted foreground +

{subtitle}

+ )} +
+ + {/* Features Grid */} +
+ {features.map((feature, index) => ( +
+ {" "} + {/* Added padding and hover */} +
+ {/* Icon using primary color */} + +
+
+ {/* Title using foreground */} +

+ {feature.title} +

+ {/* Description using muted foreground */} +

+ {feature.description} +

+
+
+ ))} +
+
+
+ ); +}; + +// Example default data (adapt based on OMS's key selling points/values) +export const defaultWhyChooseUsFeatures: FeatureItem[] = [ + { + icon: FiZap, + title: "Innovation Driven", + description: + "We leverage cutting-edge technology to create transformative solutions that push boundaries.", + }, + { + icon: FiUsers, + title: "Expert Teams", + description: + "Access highly skilled IT professionals tailored to your project needs, ensuring expertise and quality.", + }, + { + icon: FiTarget, + title: "Client-Centric Approach", + description: + "Your success is our priority. We partner closely with you to deliver solutions aligned with your goals.", + }, + { + icon: FiBarChart2, + title: "Measurable Results", + description: + "Our focus is on delivering tangible business impact, enhancing efficiency and driving growth.", + }, +]; + +export default WhyChooseUsSection; diff --git a/app/(website)/page.tsx b/app/(website)/page.tsx new file mode 100644 index 0000000..4b376d1 --- /dev/null +++ b/app/(website)/page.tsx @@ -0,0 +1,94 @@ +import HeroSection from "./_components/HeroSection"; // Import the HeroSection component +import ClientLogosSection, { + defaultClients, +} from "./_components/ClientLogosSection"; // Import component and data +import CallToActionSection from "./_components/CallToActionSection"; +import CoreServicesSection, { + defaultCoreServices, +} from "./_components/CoreServicesSection"; +import WhyChooseUsSection, { + defaultWhyChooseUsFeatures, +} from "./_components/WhyChooseUsSection"; +import FeaturedProductSection, { + defaultObseFeatures, +} from "./_components/FeaturedProductSection"; +// import HeroSectionModern from "./_components/HeroSectionModern"; +// import HeroSectionDynamic from "./_components/HeroSectionDynamic"; + +export default function HomePage() { + return ( + <> + {" "} + {/* + Where Innovation Meets Excellence} // Simplified title for this layout + subtitle="We deliver cutting-edge IT solutions, empowering businesses to thrive in the ever-evolving digital landscape with unmatched industry expertise." + buttonText="Explore Solutions" // Changed button text slightly + buttonHref="/services" // Point to services maybe? + imageUrl="/hero-bg.jpg" // Use a different, high-quality background image + /> + + + + + Where Innovation
Meets + Excellence. + + } + subtitle="Welcome to Owethu Managed Services. We deliver cutting-edge IT solutions, empowering businesses to thrive in the ever-evolving digital landscape with unmatched industry expertise." + buttonText="Learn More" + buttonHref="/about" + imageUrl="/hero-bg.jpg" // Specify your hero image + /> +*/} + + Where Innovation
Meets + Excellence. + + } + subtitle="Welcome to Owethu Managed Services. We deliver cutting-edge IT solutions, empowering businesses to thrive in the ever-evolving digital landscape with unmatched industry expertise." + buttonText="Learn More" + buttonHref="/about" + imageUrl="/hero-bg.jpg" // Specify your hero image + /> + + + + + {/* TODO: Implement actual client logo fetching and display */} + {/* TODO: Add auto-sliding carousel for clients */} + + + ); +} diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..00db783 --- /dev/null +++ b/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,2 @@ +import { handlers } from "@/auth"; // Referring to the auth.ts we just created +export const { GET, POST } = handlers; diff --git a/app/globals.css b/app/globals.css index 06036c8..df0868a 100644 --- a/app/globals.css +++ b/app/globals.css @@ -131,6 +131,67 @@ animation-delay: 0.6s; } } +/* Optional scale animation for background */ +@keyframes floatSlightly { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-8px); + } +} + +@keyframes drift { + 0% { + transform: translate(0, 0) rotate(0deg); + } + 25% { + transform: translate(5px, -5px) rotate(2deg); + } + 50% { + transform: translate(0, 0) rotate(0deg); + } + 75% { + transform: translate(-5px, 5px) rotate(-2deg); + } + 100% { + transform: translate(0, 0) rotate(0deg); + } +} + +@keyframes subtlePulse { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0.85; + } +} + +/* --- Animation Utility Classes (Add if not already present) --- */ +@layer utilities { + .animate-float { + animation: floatSlightly 6s ease-in-out infinite; + } + .animate-drift { + animation: drift 15s ease-in-out infinite; + } + .animate-pulse-slow { + animation: subtlePulse 5s cubic-bezier(0.4, 0, 0.6, 1) infinite; + } + /* Keep existing animation delays */ + .animation-delay-300 { + animation-delay: 0.3s; + } + .animation-delay-600 { + animation-delay: 0.6s; + } + .animation-delay-900 { + animation-delay: 0.9s; + } /* Added longer delay */ +} @keyframes fadeInUp { from { @@ -145,5 +206,5 @@ .animate-fade-in-up { animation: fadeInUp 0.8s ease-out forwards; - opacity: 0; + opacity: 0; /* Start hidden */ } diff --git a/app/layout.tsx b/app/layout.tsx index 72a7761..09fdc26 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,4 +1,3 @@ -// app/layout.tsx import type { Metadata } from "next"; import { Poppins } from "next/font/google"; import "./globals.css"; @@ -13,11 +12,73 @@ const poppins = Poppins({ variable: "--font-poppins", }); +// --- Define Metadata --- export const metadata: Metadata = { - title: "OMS - Owethu Managed Services", - description: "Where innovation meets excellence.", + title: + "OMS: IT Solutions, Resource Augmentation & Product Development | Owethu Managed Services", // Primary Keywords first + description: + "Owethu Managed Services (OMS) provides expert IT solutions in Centurion & South Africa, including resource augmentation, project management, custom software development, and the OBSE financial analysis tool.", // Include Keywords, Location, USP + keywords: [ + "Owethu Managed Services", + "OBSE", + "IT solutions South Africa", + "resource augmentation", + "project management IT", + "custom software development", + "OBSE", + "financial data analysis", + "IT services Centurion", + ], // Add relevant keywords + alternates: { + canonical: "/", // Assuming this is the root URL + }, + openGraph: { + // For social media sharing + title: + "OMS: Leading IT Solutions & Resource Augmentation | Owethu Managed Services", + description: + "Partner with OMS for innovative IT services, expert talent, and transformative digital products like OBSE.", + url: "https://oms.africa", + siteName: "Owethu Managed Services (OMS)", + images: [ + { + url: "/og-image.jpg", // Create a compelling OG image (e.g., 1200x630) and place in /public + width: 1200, + height: 630, + alt: "Owethu Managed Services - Innovation Meets Excellence", + }, + ], + locale: "en_ZA", + type: "website", + }, + twitter: { + // For Twitter cards + card: "summary_large_image", + title: "OMS: IT Solutions & Services | Owethu Managed Services", + description: + "Expert resource augmentation, project management, and product development including OBSE.", + // creator: '@YourTwitterHandle', // Optional: Add your Twitter handle + images: ["/og-image.jpg"], // Use the same OG image + }, + robots: { + // Instruct search engine crawlers + index: true, // Allow indexing of this page + follow: true, // Allow following links from this page + googleBot: { + index: true, + follow: true, + "max-video-preview": -1, + "max-image-preview": "large", + "max-snippet": -1, + }, + }, + // verification: { // Add verification codes if needed + // google: 'YOUR_GOOGLE_VERIFICATION_CODE', + // yandex: 'YOUR_YANDEX_VERIFICATION_CODE', + // other: { me: ['my-email@example.com', 'my-link'] }, + // }, }; - +// --- End Metadata --- export default function RootLayout({ children, }: Readonly<{ diff --git a/app/loading.tsx b/app/loading.tsx new file mode 100644 index 0000000..fd0d688 --- /dev/null +++ b/app/loading.tsx @@ -0,0 +1,12 @@ +"use client"; +import { PacmanLoader } from "react-spinners"; + +const Loading = () => { + return ( +
+ +
+ ); +}; + +export default Loading; diff --git a/app/page.tsx b/app/page.tsx deleted file mode 100644 index 61c355d..0000000 --- a/app/page.tsx +++ /dev/null @@ -1,168 +0,0 @@ -// app/page.tsx -import Image from "next/image"; -import Button from "@/components/ui/Button"; // Use the reusable button -import { - FaCogs, - FaProjectDiagram, - FaCode, - FaUsers, - FaBuilding, - FaCar, - FaLaptopCode, -} from "react-icons/fa"; // Import icons - -export default function HomePage() { - return ( - <> - {/* Hero Section */} -
- {/* Background Video/Image Placeholder */} - {/* TODO: Replace with actual
- - {/* Core Services Section */} -
-
-

- Core Services -

-

- Tailored solutions designed to drive growth, optimize productivity, - and solve your most complex business challenges. -

-
- {/* Service Card 1: Resource Augmentation */} -
- -

- Resource Augmentation -

-

- Access top-tier IT talent seamlessly integrated with your team. - Skilled professionals for short-term projects or long-term - engagements. -

-
- {/* Service Card 2: Project Management */} -
- -

- Project Management -

-

- Expert management ensuring on-time, within-budget delivery with - superior results, risk mitigation, and maximum efficiency. -

-
- {/* Service Card 3: Product Development */} -
- -

- Product Development -

-

- Creating innovative, scalable digital products from concept to - deployment to enhance efficiency and foster business growth. -

-
-
-
-
- - {/* Client Logos Section */} -
-
-

- Trusted By Industry Leaders -

- {/* TODO: Implement Auto-Sliding Panel (e.g., using Swiper.js or react-slick) */} -
- {/* Placeholder Logos - Replace with actual client logos */} - - - - - -
-

- Showcasing key clients across financial services, automotive, and - tech industries. - {/* (Auto-sliding panel coming soon!) */} -

-
-
- - {/* Call to Action (Optional but good practice) */} -
-
-

Ready to Innovate?

-

- Let's discuss how OMS can help transform your business with - cutting-edge technology solutions. -

- -
-
- - ); -} diff --git a/auth.ts b/auth.ts new file mode 100644 index 0000000..c2df7c4 --- /dev/null +++ b/auth.ts @@ -0,0 +1,6 @@ +import NextAuth from "next-auth"; +import GitHub from "next-auth/providers/github"; + +export const { handlers, signIn, signOut, auth } = NextAuth({ + providers: [GitHub], +}); diff --git a/components/Footer.tsx b/components/Footer.tsx index 1d7a600..e55fd61 100644 --- a/components/Footer.tsx +++ b/components/Footer.tsx @@ -1,43 +1,68 @@ // components/Footer.tsx import React from "react"; import Link from "next/link"; -import { FaLinkedin, FaInstagram } from "react-icons/fa"; // npm install react-icons +import { FaLinkedin, FaInstagram } from "react-icons/fa"; import Image from "next/image"; -const omsLogoUrl = "/oms-logo.svg"; + +const omsLogoUrl = "/oms-logo.svg"; // Ensure this exists in /public +// const omsLogoDarkUrl = "/oms-logo-dark.svg"; // Optional dark mode logo const Footer = () => { + // In a real app, you might use useTheme to get the current theme + // import { useTheme } from 'next-themes'; + // const { resolvedTheme } = useTheme(); + // const currentLogo = resolvedTheme === 'dark' && omsLogoDarkUrl ? omsLogoDarkUrl : omsLogoUrl; + const currentLogo = omsLogoUrl; // Using default for now + return ( -