diff --git a/src/app/page.tsx b/src/app/page.tsx
index 59754f3..0a86059 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -5,51 +5,51 @@ import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloating
import HeroLogo from '@/components/sections/hero/HeroLogo';
import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout';
import ProductCardThree from '@/components/sections/product/ProductCardThree';
+import TeamCardSix from '@/components/sections/team/TeamCardSix';
import TestimonialCardTwelve from '@/components/sections/testimonial/TestimonialCardTwelve';
import MetricCardEleven from '@/components/sections/metrics/MetricCardEleven';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import FooterBase from '@/components/sections/footer/FooterBase';
-import { Zap, Users, Award, Handshake, Github, Linkedin, Twitter } from "lucide-react";
+import { Zap, Users, Award, Handshake } from "lucide-react";
import { useState } from 'react';
export default function LandingPage() {
- const [flippedCards, setFlippedCards] = useState<{[key: string]: boolean}>({});
+ const [flipped, setFlipped] = useState<{ [key: string]: boolean }>({});
const toggleFlip = (memberId: string) => {
- setFlippedCards(prev => ({
+ setFlipped(prev => ({
...prev,
[memberId]: !prev[memberId]
}));
};
- // Team members with social links
const teamMembers = [
{
id: "1", name: "Alex Johnson", role: "Club President", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg?_wi=1", imageAlt: "Alex Johnson, Club President", socials: [
- { icon: Github, href: "https://github.com/alexjohnson", label: "GitHub" },
- { icon: Linkedin, href: "https://linkedin.com/in/alexjohnson", label: "LinkedIn" },
- { icon: Twitter, href: "https://twitter.com/alexjohnson", label: "Twitter" }
+ { icon: "linkedin", url: "https://linkedin.com/in/alexjohnson" },
+ { icon: "github", url: "https://github.com/alexjohnson" },
+ { icon: "twitter", url: "https://twitter.com/alexjohnson" }
]
},
{
id: "2", name: "Sarah Chen", role: "VP of Projects", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg?_wi=2", imageAlt: "Sarah Chen, VP of Projects", socials: [
- { icon: Github, href: "https://github.com/sarahchen", label: "GitHub" },
- { icon: Linkedin, href: "https://linkedin.com/in/sarahchen", label: "LinkedIn" },
- { icon: Twitter, href: "https://twitter.com/sarahchen", label: "Twitter" }
+ { icon: "linkedin", url: "https://linkedin.com/in/sarahchen" },
+ { icon: "github", url: "https://github.com/sarahchen" },
+ { icon: "twitter", url: "https://twitter.com/sarahchen" }
]
},
{
id: "3", name: "Marcus Williams", role: "Tech Lead", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg?_wi=3", imageAlt: "Marcus Williams, Tech Lead", socials: [
- { icon: Github, href: "https://github.com/marcuswilliams", label: "GitHub" },
- { icon: Linkedin, href: "https://linkedin.com/in/marcuswilliams", label: "LinkedIn" },
- { icon: Twitter, href: "https://twitter.com/marcuswilliams", label: "Twitter" }
+ { icon: "linkedin", url: "https://linkedin.com/in/marcuswilliams" },
+ { icon: "github", url: "https://github.com/marcuswilliams" },
+ { icon: "twitter", url: "https://twitter.com/marcuswilliams" }
]
},
{
id: "4", name: "Emily Rodriguez", role: "Community Manager", imageSrc: "http://img.b2bpic.net/free-photo/happy-businessman-smiling-camera_1163-4660.jpg?_wi=4", imageAlt: "Emily Rodriguez, Community Manager", socials: [
- { icon: Github, href: "https://github.com/emilyrodriguez", label: "GitHub" },
- { icon: Linkedin, href: "https://linkedin.com/in/emilyrodriguez", label: "LinkedIn" },
- { icon: Twitter, href: "https://twitter.com/emilyrodriguez", label: "Twitter" }
+ { icon: "linkedin", url: "https://linkedin.com/in/emilyrodriguez" },
+ { icon: "github", url: "https://github.com/emilyrodriguez" },
+ { icon: "twitter", url: "https://twitter.com/emilyrodriguez" }
]
}
];
@@ -137,85 +137,75 @@ export default function LandingPage() {
-
-
-
-
-
-
- Leadership
-
-
Meet Our Team
-
The passionate individuals driving innovation and mentorship within CodeClub.
+
+
+
+
+
+ Leadership
+
Meet Our Team
+
The passionate individuals driving innovation and mentorship within CodeClub.
- {teamMembers.map((member) => {
- const isFlipped = flippedCards[member.id];
- return (
-
+ {teamMembers.map((member) => (
+
toggleFlip(member.id)}
+ >
+
+ {/* Front side - Image */}
toggleFlip(member.id)}
+ className="absolute w-full h-full bg-white rounded-lg shadow-lg p-4 flex flex-col items-center justify-center"
+ style={{ backfaceVisibility: 'hidden' }}
>
- {/* Front side - Profile */}
-
+

-
-
-
{member.name}
-
{member.role}
-
+
{member.name}
+
{member.role}
+
Click to view social links
+
- {/* Back side - Social Links */}
-
-
-
- {member.socials.map((social) => {
- const Icon = social.icon;
- return (
-
-
- {social.label}
-
- );
- })}
-
+ {/* Back side - Social Links */}
+
+
{member.name}
+
+
Click to flip back
- );
- })}
+
+ ))}
diff --git a/src/components/ServiceWrapper.tsx b/src/components/ServiceWrapper.tsx
index c47eafe..349ce21 100644
--- a/src/components/ServiceWrapper.tsx
+++ b/src/components/ServiceWrapper.tsx
@@ -8,7 +8,7 @@ interface ServiceWrapperProps {
export function ServiceWrapper({ children }: ServiceWrapperProps) {
return (
-
+
{children}
);
diff --git a/src/providers/themeProvider/ThemeProvider.tsx b/src/providers/themeProvider/ThemeProvider.tsx
index 07747ee..4eeebcb 100644
--- a/src/providers/themeProvider/ThemeProvider.tsx
+++ b/src/providers/themeProvider/ThemeProvider.tsx
@@ -1,23 +1,19 @@
'use client';
-import React, { createContext, useContext, useState } from 'react';
+import React, { createContext, useContext, ReactNode } from 'react';
-interface SocialLink {
- platform: string;
- url: string;
- icon: string;
-}
-
-interface TeamMember {
- id: string;
- name: string;
- role: string;
- image: string;
- socialLinks: SocialLink[];
-}
-
-interface TeamCardProps {
- member: TeamMember;
+interface ThemeProviderProps {
+ children: ReactNode;
+ defaultButtonVariant?: string;
+ defaultTextAnimation?: string;
+ borderRadius?: 'soft' | 'medium' | 'sharp';
+ contentWidth?: 'small' | 'medium' | 'large';
+ sizing?: string;
+ background?: string;
+ cardStyle?: string;
+ primaryButtonStyle?: string;
+ secondaryButtonStyle?: string;
+ headingFontWeight?: string;
}
interface ThemeContextType {
@@ -35,141 +31,19 @@ interface ThemeContextType {
const ThemeContext = createContext
(undefined);
-export function useTheme(): ThemeContextType {
- const context = useContext(ThemeContext);
- if (context === undefined) {
- return {
- defaultButtonVariant: 'text-stagger',
- defaultTextAnimation: 'entrance-slide',
- borderRadius: 'rounded',
- contentWidth: 'medium',
- sizing: 'medium',
- background: 'circleGradient',
- cardStyle: 'glass-elevated',
- primaryButtonStyle: 'gradient',
- secondaryButtonStyle: 'glass',
- headingFontWeight: 'normal'
- };
- }
- return context;
-}
-
-function TeamCard({ member }: TeamCardProps) {
- const [isFlipped, setIsFlipped] = useState(false);
-
- return (
- setIsFlipped(true)}
- onMouseLeave={() => setIsFlipped(false)}
- >
-
- {/* Front Side */}
-
-
-

-
-
- {member.name}
-
-
- {member.role}
-
-
-
- {/* Back Side */}
-
-
-
- );
-}
-
-interface ThemeProviderProps {
- children: React.ReactNode;
- defaultButtonVariant?: string;
- defaultTextAnimation?: string;
- borderRadius?: string;
- contentWidth?: string;
- sizing?: string;
- background?: string;
- cardStyle?: string;
- primaryButtonStyle?: string;
- secondaryButtonStyle?: string;
- headingFontWeight?: string;
-}
-
export function ThemeProvider({
children,
- defaultButtonVariant,
- defaultTextAnimation,
- borderRadius,
- contentWidth,
- sizing,
- background,
- cardStyle,
- primaryButtonStyle,
- secondaryButtonStyle,
- headingFontWeight,
+ defaultButtonVariant = 'default',
+ defaultTextAnimation = 'none',
+ borderRadius = 'medium',
+ contentWidth = 'medium',
+ sizing = 'medium',
+ background = 'light',
+ cardStyle = 'solid',
+ primaryButtonStyle = 'solid',
+ secondaryButtonStyle = 'outline',
+ headingFontWeight = 'bold',
}: ThemeProviderProps) {
- const backgroundClasses = {
- aurora: 'bg-gradient-to-br from-slate-950 via-purple-900 to-slate-950',
- light: 'bg-white',
- dark: 'bg-slate-900',
- };
-
- const borderRadiusClasses = {
- soft: 'rounded-lg',
- sharp: 'rounded-none',
- smooth: 'rounded-2xl',
- };
-
- const contentWidthClasses = {
- small: 'max-w-2xl',
- medium: 'max-w-6xl',
- large: 'max-w-7xl',
- };
-
- const bgClass = backgroundClasses[background as keyof typeof backgroundClasses] || backgroundClasses.aurora;
- const radiusClass = borderRadiusClasses[borderRadius as keyof typeof borderRadiusClasses] || borderRadiusClasses.soft;
- const widthClass = contentWidthClasses[contentWidth as keyof typeof contentWidthClasses] || contentWidthClasses.medium;
-
const themeValue: ThemeContextType = {
defaultButtonVariant,
defaultTextAnimation,
@@ -183,20 +57,30 @@ export function ThemeProvider({
headingFontWeight,
};
+ const borderRadiusClass = {
+ soft: 'rounded-2xl',
+ medium: 'rounded-lg',
+ sharp: 'rounded-none',
+ }[borderRadius] || 'rounded-lg';
+
+ const contentWidthClass = {
+ small: 'max-w-2xl',
+ medium: 'max-w-4xl',
+ large: 'max-w-6xl',
+ }[contentWidth] || 'max-w-4xl';
+
+ const backgroundClass = {
+ aurora: 'bg-gradient-to-br from-purple-900 via-blue-900 to-indigo-900',
+ light: 'bg-white',
+ dark: 'bg-gray-900',
+ }[background] || 'bg-white';
+
return (
-
@@ -204,12 +88,10 @@ export function ThemeProvider({
);
}
-export function TeamCardGrid({ members }: { members: TeamMember[] }) {
- return (
-
- {members.map((member) => (
-
- ))}
-
- );
+export function useTheme(): ThemeContextType {
+ const context = useContext(ThemeContext);
+ if (context === undefined) {
+ throw new Error('useTheme must be used within a ThemeProvider');
+ }
+ return context;
}
\ No newline at end of file
diff --git a/src/tag/Tag.tsx b/src/tag/Tag.tsx
index ca5f500..87dfd11 100644
--- a/src/tag/Tag.tsx
+++ b/src/tag/Tag.tsx
@@ -1,6 +1,6 @@
-"use client";
+'use client';
-import { useState } from "react";
+import { useState } from 'react';
interface TeamMember {
id: string;
@@ -39,25 +39,26 @@ export default function Tag({ members = defaultMembers }: TagProps) {
{members.map((member) => (
toggleFlip(member.id)}
>
{/* Front Side */}
-
+
{member.role}
-
Hover to see links
+
+ Hover to see social links
+
{/* Back Side */}
- {member.name}
+ Connect
{member.social.twitter && (
@@ -89,8 +93,14 @@ export default function Tag({ members = defaultMembers }: TagProps) {
rel="noopener noreferrer"
className="flex items-center justify-center gap-2 bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-2 px-4 rounded-lg transition-all duration-200"
>
-
𝕏
-
Twitter
+
+ Twitter
)}
{member.social.linkedin && (
@@ -100,8 +110,15 @@ export default function Tag({ members = defaultMembers }: TagProps) {
rel="noopener noreferrer"
className="flex items-center justify-center gap-2 bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-2 px-4 rounded-lg transition-all duration-200"
>
-
in
-
LinkedIn
+
+ LinkedIn
)}
{member.social.github && (
@@ -111,8 +128,14 @@ export default function Tag({ members = defaultMembers }: TagProps) {
rel="noopener noreferrer"
className="flex items-center justify-center gap-2 bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-2 px-4 rounded-lg transition-all duration-200"
>
-
⚙
-
GitHub
+
+ GitHub
)}
{member.social.email && (
@@ -120,8 +143,20 @@ export default function Tag({ members = defaultMembers }: TagProps) {
href={`mailto:${member.social.email}`}
className="flex items-center justify-center gap-2 bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-2 px-4 rounded-lg transition-all duration-200"
>
-
✉
-
Email
+
+ Email
)}
@@ -137,21 +172,39 @@ export default function Tag({ members = defaultMembers }: TagProps) {
const defaultMembers: TeamMember[] = [
{
- id: "1", name: "Sarah Johnson", role: "Lead Designer", image:
- "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&fit=crop", social: {
- twitter: "https://twitter.com", linkedin: "https://linkedin.com", email: "sarah@example.com"
+ id: '1',
+ name: 'Sarah Johnson',
+ role: 'Lead Designer',
+ image:
+ 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=400&fit=crop',
+ social: {
+ twitter: 'https://twitter.com',
+ linkedin: 'https://linkedin.com',
+ email: 'sarah@example.com',
},
},
{
- id: "2", name: "Michael Chen", role: "Full Stack Developer", image:
- "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&fit=crop", social: {
- github: "https://github.com", linkedin: "https://linkedin.com", email: "michael@example.com"
+ id: '2',
+ name: 'Michael Chen',
+ role: 'Full Stack Developer',
+ image:
+ 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400&h=400&fit=crop',
+ social: {
+ github: 'https://github.com',
+ linkedin: 'https://linkedin.com',
+ email: 'michael@example.com',
},
},
{
- id: "3", name: "Emma Rodriguez", role: "Product Manager", image:
- "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&fit=crop", social: {
- twitter: "https://twitter.com", linkedin: "https://linkedin.com", email: "emma@example.com"
+ id: '3',
+ name: 'Emma Rodriguez',
+ role: 'Product Manager',
+ image:
+ 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=400&fit=crop',
+ social: {
+ twitter: 'https://twitter.com',
+ linkedin: 'https://linkedin.com',
+ email: 'emma@example.com',
},
},
];
\ No newline at end of file