latest changes
This commit is contained in:
		
							parent
							
								
									27c78e2ac4
								
							
						
					
					
						commit
						6ad81a04ad
					
				| @ -61,13 +61,12 @@ To add a new employee, add an entry to the `employees` array: | ||||
|   whatsapp: "60123456789",           // WhatsApp number (digits only) | ||||
|   email: "john.doe@rooftop.my",      // Email address | ||||
|   linkedin: "https://linkedin.com/in/johndoe", // LinkedIn profile URL | ||||
|   address: "Level 15, Menara 1 Sentral\nKuala Lumpur Sentral\n50470 Kuala Lumpur\nMalaysia", // Address with \n for line breaks | ||||
|   website: "https://rooftop.my",     // Company website | ||||
|   logoPath: "/logo.png",             // Path to company logo | ||||
|   profilePic: "/profilepic.png"      // Path to profile picture | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| **Note:** Company-wide settings (address, website, logo) are automatically applied from `companySettings` and don't need to be repeated for each employee. | ||||
| 
 | ||||
| #### URL Structure | ||||
| 
 | ||||
| Each employee gets their own URL: | ||||
|  | ||||
| @ -2,22 +2,23 @@ | ||||
| 
 | ||||
| import { useState, useEffect } from 'react'; | ||||
| import { Phone, Mail, Globe, Copy, Download, Check } from 'lucide-react'; | ||||
| import { Employee, getCompleteEmployeeProfile } from '@/config/employees'; | ||||
| import { StaffProfile } from '@/config/staff'; | ||||
| 
 | ||||
| interface NamecardProps { | ||||
|   profile: StaffProfile; | ||||
|   profile: Employee; | ||||
| } | ||||
| 
 | ||||
| export default function Namecard({ profile }: NamecardProps) { | ||||
|   const [copySuccess, setCopySuccess] = useState(false); | ||||
|   const [showFullAddress, setShowFullAddress] = useState(false); | ||||
|   const [currentProfile, setCurrentProfile] = useState<StaffProfile>(profile); | ||||
|   const [currentProfile, setCurrentProfile] = useState(getCompleteEmployeeProfile(profile)); | ||||
| 
 | ||||
|   // Handle URL query parameters on client side
 | ||||
|   useEffect(() => { | ||||
|     if (typeof window !== 'undefined') { | ||||
|       const urlParams = new URLSearchParams(window.location.search); | ||||
|       const overrides: Partial<StaffProfile> = {}; | ||||
|       const overrides: Partial<ReturnType<typeof getCompleteEmployeeProfile>> = {}; | ||||
|        | ||||
|       if (urlParams.get('name')) overrides.name = urlParams.get('name')!; | ||||
|       if (urlParams.get('title')) overrides.title = urlParams.get('title')!; | ||||
| @ -30,7 +31,8 @@ export default function Namecard({ profile }: NamecardProps) { | ||||
|       if (urlParams.get('logo')) overrides.logoPath = urlParams.get('logo')!; | ||||
|        | ||||
|       if (Object.keys(overrides).length > 0) { | ||||
|         setCurrentProfile({ ...profile, ...overrides }); | ||||
|         const completeProfile = getCompleteEmployeeProfile(profile); | ||||
|         setCurrentProfile({ ...completeProfile, ...overrides }); | ||||
|       } | ||||
|     } | ||||
|   }, [profile]); | ||||
|  | ||||
| @ -1,12 +1,18 @@ | ||||
| import { StaffProfile } from './staff'; | ||||
| 
 | ||||
| export interface Employee extends StaffProfile { | ||||
| export interface Employee extends Omit<StaffProfile, 'address' | 'logoPath' | 'website'> { | ||||
|   id: string; | ||||
|   profilePic: string; | ||||
| } | ||||
| 
 | ||||
| // Import the YAML data (you'll need to install js-yaml if you want to parse YAML files)
 | ||||
| // For now, we'll define the data directly in TypeScript
 | ||||
| // Company-wide settings
 | ||||
| export const companySettings = { | ||||
|   address: "3-2, Block D2, Jalan PJU 1A/39\nDataran Prima\n47301 Petaling Jaya\nMalaysia", | ||||
|   logoPath: "/logo.png", | ||||
|   website: "https://rooftop.my" | ||||
| }; | ||||
| 
 | ||||
| // Employee-specific data only
 | ||||
| export const employees: Employee[] = [ | ||||
|   { | ||||
|     id: "john-doe", | ||||
| @ -16,9 +22,6 @@ export const employees: Employee[] = [ | ||||
|     whatsapp: "60123456789", | ||||
|     email: "john.doe@rooftop.my", | ||||
|     linkedin: "https://linkedin.com/in/johndoe", | ||||
|     address: "Level 15, Menara 1 Sentral\nKuala Lumpur Sentral\n50470 Kuala Lumpur\nMalaysia", | ||||
|     website: "https://rooftop.my", | ||||
|     logoPath: "/logo.png", | ||||
|     profilePic: "/profilepic.png" | ||||
|   }, | ||||
|   { | ||||
| @ -29,9 +32,6 @@ export const employees: Employee[] = [ | ||||
|     whatsapp: "60123456790", | ||||
|     email: "jane.smith@rooftop.my", | ||||
|     linkedin: "https://linkedin.com/in/janesmith", | ||||
|     address: "Level 15, Menara 1 Sentral\nKuala Lumpur Sentral\n50470 Kuala Lumpur\nMalaysia", | ||||
|     website: "https://rooftop.my", | ||||
|     logoPath: "/logo.png", | ||||
|     profilePic: "/profilepic.png" | ||||
|   }, | ||||
|   { | ||||
| @ -42,9 +42,6 @@ export const employees: Employee[] = [ | ||||
|     whatsapp: "60123456791", | ||||
|     email: "ahmad.ali@rooftop.my", | ||||
|     linkedin: "https://linkedin.com/in/ahmadali", | ||||
|     address: "Level 15, Menara 1 Sentral\nKuala Lumpur Sentral\n50470 Kuala Lumpur\nMalaysia", | ||||
|     website: "https://rooftop.my", | ||||
|     logoPath: "/logo.png", | ||||
|     profilePic: "/profilepic.png" | ||||
|   }, | ||||
|   { | ||||
| @ -55,9 +52,6 @@ export const employees: Employee[] = [ | ||||
|     whatsapp: "60123456792", | ||||
|     email: "sarah.wong@rooftop.my", | ||||
|     linkedin: "https://linkedin.com/in/sarahwong", | ||||
|     address: "Level 15, Menara 1 Sentral\nKuala Lumpur Sentral\n50470 Kuala Lumpur\nMalaysia", | ||||
|     website: "https://rooftop.my", | ||||
|     logoPath: "/logo.png", | ||||
|     profilePic: "/profilepic.png" | ||||
|   } | ||||
| ]; | ||||
| @ -70,4 +64,14 @@ export function getAllEmployees(): Employee[] { | ||||
|   return employees; | ||||
| } | ||||
| 
 | ||||
| // Helper function to get complete employee profile with company settings
 | ||||
| export function getCompleteEmployeeProfile(employee: Employee): StaffProfile { | ||||
|   return { | ||||
|     ...employee, | ||||
|     address: companySettings.address, | ||||
|     logoPath: companySettings.logoPath, | ||||
|     website: companySettings.website | ||||
|   }; | ||||
| } | ||||
| 
 | ||||
| export default employees; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user