import React, { useState, useEffect, useRef } from 'react';
import {
Search,
MapPin,
Package,
CheckCircle2,
Truck,
Bell,
ChevronRight,
Navigation,
Info
} from 'lucide-react';
// --- MOCK DATA GENERATOR ---
// Simulates carrier APIs (UPS, FedEx, USPS)
const generateMockPackageData = (trackingNumber) => {
let carrier = 'Unknown Carrier';
if (trackingNumber.startsWith('1Z')) carrier = 'UPS';
else if (trackingNumber.startsWith('9')) carrier = 'USPS';
else if (trackingNumber.length === 12 || trackingNumber.startsWith('T')) carrier = 'FedEx';
else carrier = 'Logistics Partner';
// For demonstration, we'll place the final destination near Lone Tree, CO
return {
trackingNumber: trackingNumber.toUpperCase(),
carrier,
status: 'Out for Delivery',
estimatedDelivery: 'Today, by 8:00 PM',
currentLocation: { lat: 39.5323, lng: -104.8824, name: 'Lone Tree, CO' },
timeline: [
{
id: 1,
status: 'Out for Delivery',
description: 'Package is on a vehicle out for delivery.',
location: 'Lone Tree, CO',
date: 'Today',
time: '08:15 AM',
completed: false,
isCurrent: true
},
{
id: 2,
status: 'Arrived at Local Facility',
description: 'Package arrived at the local distribution center.',
location: 'Denver, CO',
date: 'Yesterday',
time: '11:42 PM',
completed: true,
isCurrent: false
},
{
id: 3,
status: 'In Transit',
description: 'Package departed facility.',
location: 'Chicago, IL',
date: 'Aug 27',
time: '04:30 PM',
completed: true,
isCurrent: false
},
{
id: 4,
status: 'Label Created',
description: 'Shipping label created, USPS awaiting item.',
location: 'New York, NY',
date: 'Aug 26',
time: '09:00 AM',
completed: true,
isCurrent: false
}
]
};
};
export default function App() {
const [trackingNumber, setTrackingNumber] = useState('');
const [packageData, setPackageData] = useState(null);
const [isLoading, setIsLoading] = useState(false);
const [notificationsEnabled, setNotificationsEnabled] = useState(false);
const [deliveryTimer, setDeliveryTimer] = useState(null);
// Check notification permission on load
useEffect(() => {
if ('Notification' in window && Notification.permission === 'granted') {
setNotificationsEnabled(true);
}
}, []);
const requestNotifications = async () => {
if (!('Notification' in window)) {
alert('This browser does not support desktop notification');
return;
}
const permission = await Notification.requestPermission();
if (permission === 'granted') {
setNotificationsEnabled(true);
}
};
const triggerPushNotification = (trackingNum) => {
if ('Notification' in window && Notification.permission === 'granted') {
new Notification('Package Delivered! 📦', {
body: `Your package (${trackingNum}) has been successfully delivered.`,
icon: 'https://cdn-icons-png.flaticon.com/512/751/751381.png'
});
}
};
const handleSearch = (e) => {
e.preventDefault();
if (!trackingNumber.trim()) return;
setIsLoading(true);
setPackageData(null);
// Clear any existing demo timers
if (deliveryTimer) clearTimeout(deliveryTimer);
// Simulate API network request
setTimeout(() => {
const data = generateMockPackageData(trackingNumber);
setPackageData(data);
setIsLoading(false);
// --- DEMO FEATURE: Simulate delivery after 5 seconds to trigger Push Notification ---
const timer = setTimeout(() => {
setPackageData(prev => {
if (!prev) return prev;
const updated = { ...prev, status: 'Delivered', estimatedDelivery: 'Delivered Today' };
updated.timeline[0].status = 'Delivered';
updated.timeline[0].description = 'Package was left at the front door.';
updated.timeline[0].completed = true;
triggerPushNotification(updated.trackingNumber);
return updated;
});
}, 5000);
setDeliveryTimer(timer);
}, 1200);
};
// Apple-style UI elements
return (
{/* Glassmorphic Header */}
{/* Hero Search Section */}
Where is your package?
Enter your UPS, FedEx, or USPS tracking number to get real-time updates.
{/* Results Area */}
{packageData && (
{/* High-level Status Card */}
{packageData.carrier}
{packageData.trackingNumber}
{packageData.status === 'Delivered' ? (
) : (
)}
{packageData.status}
{packageData.status === 'Delivered' ? 'Delivered on' : 'Estimated delivery:'} {packageData.estimatedDelivery}
{/* Right Side: Progress Bar & Alerts */}
{/* Delivery Progress Bar */}
Shipped
In Transit
Delivered
{/* Enable Alerts Button */}
{/* Left Column: Map */}
Current Location
{/* Google Maps Embed - Keyless */}
{/* Floating Location Pill */}
{packageData.currentLocation.name}
{/* Right Column: Timeline */}
Tracking History
{packageData.timeline.map((event, index) => {
const isLast = index === packageData.timeline.length - 1;
const isActive = event.isCurrent || event.status === 'Delivered';
return (
{/* Timeline Dot */}
{event.status}
{event.date}
{event.time}
{event.description}
{event.location}
)
})}
)}
{/* Tailwind specific custom styles for scrollbar mimicking Apple's hidden/sleek scrollbars */}
);
}