|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Baby Adventures Perth | April 17-21, 2025</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
|
|
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" |
|
|
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" |
|
|
crossorigin=""/> |
|
|
|
|
|
<style> |
|
|
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Short+Stack&display=swap'); |
|
|
|
|
|
body { |
|
|
font-family: 'Poppins', sans-serif; |
|
|
background-color: #fef6f6; |
|
|
} |
|
|
|
|
|
.baby-font { |
|
|
font-family: 'Short Stack', cursive; |
|
|
} |
|
|
|
|
|
.activity-card { |
|
|
transition: all 0.3s ease; |
|
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
} |
|
|
|
|
|
.activity-card:hover { |
|
|
transform: translateY(-5px); |
|
|
box-shadow: 0 10px 15px rgba(0, 0, 0, 0.1); |
|
|
} |
|
|
|
|
|
.sensory-bg { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); } |
|
|
.nature-bg { background: linear-gradient(135deg, #e0f7fa 0%, #80deea 100%); } |
|
|
.library-bg { background: linear-gradient(135deg, #fff8e1 0%, #ffe082 100%); } |
|
|
.festival-bg { background: linear-gradient(135deg, #f3e5f5 0%, #ce93d8 100%); } |
|
|
.park-bg { background: linear-gradient(135deg, #e8f5e9 0%, #a5d6a7 100%); } |
|
|
|
|
|
.tab-active { |
|
|
border-bottom: 3px solid #f9a8d4; |
|
|
color: #ec4899; |
|
|
font-weight: 600; |
|
|
} |
|
|
|
|
|
.animated-bg { |
|
|
animation: gradient 15s ease infinite; |
|
|
background-size: 400% 400%; |
|
|
background-image: linear-gradient(-45deg, #fbc2eb, #a6c1ee, #fbc2eb, #a6c1ee); |
|
|
} |
|
|
|
|
|
@keyframes gradient { |
|
|
0% { background-position: 0% 50%; } |
|
|
50% { background-position: 100% 50%; } |
|
|
100% { background-position: 0% 50%; } |
|
|
} |
|
|
|
|
|
.baby-icon { |
|
|
font-size: 1.2rem; |
|
|
color: #ec4899; |
|
|
} |
|
|
|
|
|
.focal-image { |
|
|
max-width: 500px; |
|
|
width: 90%; |
|
|
margin: 1.5rem auto; |
|
|
border-radius: 0.75rem; |
|
|
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); |
|
|
} |
|
|
|
|
|
|
|
|
#map { |
|
|
height: 400px; |
|
|
border-radius: 0 0 0.75rem 0.75rem; |
|
|
} |
|
|
.leaflet-popup-content-wrapper { |
|
|
border-radius: 8px; |
|
|
} |
|
|
.leaflet-popup-content { |
|
|
font-family: 'Poppins', sans-serif; |
|
|
font-size: 0.9rem; |
|
|
line-height: 1.4; |
|
|
} |
|
|
.leaflet-popup-content b { |
|
|
font-weight: 600; |
|
|
color: #db2777; |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
<header class="animated-bg text-white py-6"> |
|
|
<div class="container mx-auto px-4"> |
|
|
<div class="flex justify-between items-center"> |
|
|
<div> |
|
|
<h1 class="text-3xl md:text-4xl font-bold baby-font">Baby Adventures Perth</h1> |
|
|
<p class="text-lg mt-1">April 17-21, 2025</p> |
|
|
</div> |
|
|
<nav class="hidden md:flex space-x-6"> |
|
|
<a href="#" class="hover:text-pink-200 transition">Home</a> |
|
|
<a href="#mapSection" class="hover:text-pink-200 transition">Map</a> <a href="#tipsSection" class="hover:text-pink-200 transition">Tips</a> </nav> |
|
|
<div class="hidden md:block"> |
|
|
<i class="fas fa-baby text-4xl opacity-80"></i> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
<main class="container mx-auto px-4 py-8"> |
|
|
<section class="mb-12 text-center"> |
|
|
<div class="max-w-3xl mx-auto"> |
|
|
<h2 class="text-2xl md:text-3xl font-bold text-pink-600 mb-4 baby-font">Best Activities for Your 6-Month-Old</h2> |
|
|
|
|
|
<img |
|
|
src="WhatsApp Image 2025-04-17 at 11.01.16_f6618ce9.jpg" |
|
|
alt="Baby playing with colorful sensory toys on a mat" |
|
|
class="focal-image" |
|
|
> |
|
|
<p class="text-gray-700 mb-6 mt-6">Perth offers wonderful gentle, engaging activities perfect for your little one. We've curated the best sensory experiences, interactive play, and relaxed environments for families with young babies.</p> |
|
|
<div class="flex justify-center space-x-2 flex-wrap gap-2"> |
|
|
<span class="px-3 py-1 bg-pink-100 text-pink-800 rounded-full text-sm flex items-center"> |
|
|
<i class="fas fa-baby-carriage mr-1 baby-icon"></i> Sensory Play |
|
|
</span> |
|
|
<span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm flex items-center"> |
|
|
<i class="fas fa-book mr-1 baby-icon" style="color: #3b82f6;"></i> Story Time |
|
|
</span> |
|
|
<span class="px-3 py-1 bg-green-100 text-green-800 rounded-full text-sm flex items-center"> |
|
|
<i class="fas fa-tree mr-1 baby-icon" style="color: #10b981;"></i> Nature |
|
|
</span> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section class="mb-8 overflow-x-auto"> |
|
|
<div class="flex space-x-1 sm:space-x-4 pb-2 border-b justify-center"> |
|
|
<button onclick="filterActivities('all', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap tab-active">All</button> |
|
|
<button onclick="filterActivities('library', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap"> |
|
|
<i class="fas fa-book mr-1 sm:mr-2"></i><span class="hidden sm:inline">Library</span> |
|
|
</button> |
|
|
<button onclick="filterActivities('outdoor', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap"> |
|
|
<i class="fas fa-tree mr-1 sm:mr-2"></i><span class="hidden sm:inline">Outdoor</span> |
|
|
</button> |
|
|
<button onclick="filterActivities('festival', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap"> |
|
|
<i class="fas fa-music mr-1 sm:mr-2"></i><span class="hidden sm:inline">Festivals</span> |
|
|
</button> |
|
|
<button onclick="filterActivities('sensory', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap"> |
|
|
<i class="fas fa-hand-holding-heart mr-1 sm:mr-2"></i><span class="hidden sm:inline">Sensory</span> |
|
|
</button> |
|
|
<button onclick="filterActivities('park', this)" class="tab-button px-3 sm:px-4 py-2 text-gray-600 font-medium whitespace-nowrap"> |
|
|
<i class="fas fa-parking mr-1 sm:mr-2"></i><span class="hidden sm:inline">Parks</span> |
|
|
</button> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section id="activitiesGrid" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12"> |
|
|
<div class="activity-card library-bg rounded-xl p-6" data-category="library" data-url="https://vincent.wa.gov.au/library"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-yellow-700 rounded-full text-sm">Library</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> 10:00 AM |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">Baby Rhyme Time</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Interactive 20-minute sessions with songs, rhymes, and movements to stimulate your baby's development.</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>City of Vincent Library</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Monday, April 21</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-pink-500 hover:bg-pink-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> More Details |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="activity-card nature-bg rounded-xl p-6" data-category="outdoor park" data-url="https://www.bgpa.wa.gov.au/kings-park/events/walks-and-talks/stories-in-the-park"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-blue-700 rounded-full text-sm">Outdoor / Park</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> 10:00 AM |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">Stories in the Park</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Gentle outdoor storytelling in the beautiful setting of Kings Park. Perfect for morning fresh air.</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>Kings Park</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Select dates</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-blue-500 hover:bg-blue-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> More Details |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="activity-card festival-bg rounded-xl p-6" data-category="festival library" data-url="#"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-purple-700 rounded-full text-sm">Festival / Library</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> 11:30 AM |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">Ballerina Bunny's Easter Show</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Soft music, puppet interactions and visual stimuli perfect for young infants.</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>City of Perth Library</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Thursday, April 17</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-purple-500 hover:bg-purple-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> Details / Book |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="activity-card park-bg rounded-xl p-6" data-category="park outdoor sensory" data-url="https://www.bgpa.wa.gov.au/kings-park/area/rio-tinto-naturescape"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-green-700 rounded-full text-sm">Park / Outdoor</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> All Day |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">Rio Tinto Naturescape</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Nature play space with water features, bush trails and shaded picnic areas perfect for families.</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>Kings Park (Naturescape)</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Daily (Seasonal Closure)</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-green-500 hover:bg-green-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> Visit Website |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="activity-card sensory-bg rounded-xl p-6" data-category="sensory" data-url="#"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-indigo-700 rounded-full text-sm">Sensory</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> Various Times |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">Made to Be Messy Sessions</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Tactile exploration with non-toxic materials like edible paints and textured objects. (Locations vary - not shown on map).</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>Multiple Locations (e.g., Playgroups)</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Check provider</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-indigo-500 hover:bg-indigo-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> Find Sessions |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="activity-card park-bg rounded-xl p-6" data-category="park outdoor sensory" data-url="https://www.developmentwa.com.au/places-and-projects/elizabeth-quay/see-and-do/bhp-water-park"> |
|
|
<div class="flex justify-between items-start mb-3"> |
|
|
<span class="px-3 py-1 bg-white text-green-700 rounded-full text-sm">Park / Outdoor</span> |
|
|
<span class="text-sm bg-white px-2 py-1 rounded-full"> |
|
|
<i class="fas fa-clock mr-1"></i> All Day (Seasonal) |
|
|
</span> |
|
|
</div> |
|
|
<h3 class="text-xl font-bold mb-2">BHP Water Park</h3> |
|
|
<p class="text-gray-700 mb-4 flex-grow">Gentle fountains and interactive jets for sensory water play. Nearby cafes offer shaded seating.</p> |
|
|
<div class="flex items-center text-sm mb-3"> |
|
|
<i class="fas fa-map-marker-alt mr-2 text-gray-600"></i> |
|
|
<span>Elizabeth Quay</span> |
|
|
</div> |
|
|
<div class="flex items-center text-sm mb-4"> |
|
|
<i class="fas fa-calendar-day mr-2 text-gray-600"></i> |
|
|
<span>Open Daily (Summer Season)</span> |
|
|
</div> |
|
|
<button class="modal-trigger mt-auto w-full bg-green-500 hover:bg-green-600 text-white py-2 rounded-lg transition flex items-center justify-center"> |
|
|
<i class="fas fa-info-circle mr-2"></i> View Info |
|
|
</button> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section id="tipsSection" class="bg-white rounded-xl shadow-md p-6 mb-12 scroll-mt-20"> |
|
|
<h2 class="text-2xl font-bold text-pink-600 mb-6 baby-font text-center">Tips for Baby Outings</h2> |
|
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-6"> |
|
|
<div class="flex items-start"> |
|
|
<div class="bg-pink-100 p-3 rounded-full mr-4 flex-shrink-0"> |
|
|
<i class="fas fa-sun text-pink-500 text-xl"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h3 class="font-bold mb-1">Morning Magic</h3> |
|
|
<p class="text-gray-700 text-sm">Babies are often happiest after their morning nap. Plan outings for mid-morning.</p> |
|
|
</div> |
|
|
</div> |
|
|
<div class="flex items-start"> |
|
|
<div class="bg-blue-100 p-3 rounded-full mr-4 flex-shrink-0"> |
|
|
<i class="fas fa-baby-carriage text-blue-500 text-xl"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h3 class="font-bold mb-1">Pack Smart</h3> |
|
|
<p class="text-gray-700 text-sm">Bring essentials: change mat, nappies, wipes, feeding supplies, hat, sunscreen, and a favorite toy.</p> |
|
|
</div> |
|
|
</div> |
|
|
<div class="flex items-start"> |
|
|
<div class="bg-yellow-100 p-3 rounded-full mr-4 flex-shrink-0"> |
|
|
<i class="fas fa-clock text-yellow-500 text-xl"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h3 class="font-bold mb-1">Keep it Short</h3> |
|
|
<p class="text-gray-700 text-sm">Start with shorter trips. An hour or two is plenty for a young baby's first adventures.</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<section id="mapSection" class="mb-12 scroll-mt-20"> |
|
|
<div class="bg-white rounded-xl shadow-md overflow-hidden"> |
|
|
<div class="p-6"> |
|
|
<h2 class="text-2xl font-bold text-pink-600 mb-4 baby-font text-center">Activity Locations Map</h2> |
|
|
<p class="text-gray-700 mb-0 text-center">Click on the markers to see the activity location.</p> |
|
|
</div> |
|
|
<div id="map"></div> |
|
|
</div> |
|
|
</section> |
|
|
</main> |
|
|
|
|
|
<footer class="bg-gray-800 text-white py-8"> |
|
|
<div class="container mx-auto px-4"> |
|
|
<div class="flex flex-col md:flex-row justify-between items-center"> |
|
|
<div class="mb-4 md:mb-0 text-center md:text-left"> |
|
|
<h3 class="text-xl font-bold baby-font">Baby Adventures Perth</h3> |
|
|
<p class="text-gray-400 mt-1 text-sm">Making memories with your little one</p> |
|
|
</div> |
|
|
<div class="flex space-x-4 mb-4 md:mb-0"> |
|
|
<a href="#" class="text-gray-400 hover:text-white transition" aria-label="Facebook"> |
|
|
<i class="fab fa-facebook-f text-xl"></i> |
|
|
</a> |
|
|
<a href="#" class="text-gray-400 hover:text-white transition" aria-label="Instagram"> |
|
|
<i class="fab fa-instagram text-xl"></i> |
|
|
</a> |
|
|
<a href="#" class="text-gray-400 hover:text-white transition" aria-label="Contact Email"> |
|
|
<i class="fas fa-envelope text-xl"></i> |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
<div class="border-t border-gray-700 mt-6 pt-6 text-center text-gray-400 text-sm"> |
|
|
<p>© 2025 Baby Adventures Perth. Information subject to change. Always check official sources.</p> |
|
|
</div> |
|
|
</div> |
|
|
</footer> |
|
|
|
|
|
<div id="activityModal" class="fixed inset-0 bg-black bg-opacity-60 flex items-center justify-center z-50 hidden p-4"> |
|
|
<div class="bg-white rounded-xl max-w-lg w-full max-h-[90vh] overflow-y-auto relative shadow-xl"> |
|
|
<button onclick="closeModal()" class="absolute top-3 right-3 text-gray-400 hover:text-gray-600 text-2xl" aria-label="Close modal"> |
|
|
× |
|
|
</button> |
|
|
<div class="p-6 sm:p-8"> |
|
|
<h3 id="modalTitle" class="text-2xl font-bold mb-4 baby-font text-pink-600">Activity Title</h3> |
|
|
<div id="modalContent" class="text-gray-700 mb-6 prose max-w-none"> |
|
|
</div> |
|
|
<div id="modalActions" class="mt-6 flex flex-col sm:flex-row gap-3"> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" |
|
|
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" |
|
|
crossorigin=""></script> |
|
|
|
|
|
<script> |
|
|
|
|
|
function filterActivities(category, clickedButton) { |
|
|
document.querySelectorAll('.tab-button').forEach(button => { |
|
|
button.classList.remove('tab-active'); |
|
|
button.classList.add('text-gray-600'); |
|
|
button.classList.remove('text-pink-600'); |
|
|
}); |
|
|
if (clickedButton) { |
|
|
clickedButton.classList.add('tab-active'); |
|
|
clickedButton.classList.remove('text-gray-600'); |
|
|
clickedButton.classList.add('text-pink-600'); |
|
|
} |
|
|
|
|
|
const activities = document.querySelectorAll('#activitiesGrid .activity-card'); |
|
|
activities.forEach(activity => { |
|
|
const categories = activity.dataset.category ? activity.dataset.category.split(' ') : []; |
|
|
if (category === 'all' || categories.includes(category)) { |
|
|
activity.style.display = 'flex'; |
|
|
} else { |
|
|
activity.style.display = 'none'; |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
const modal = document.getElementById('activityModal'); |
|
|
const modalTitle = document.getElementById('modalTitle'); |
|
|
const modalContent = document.getElementById('modalContent'); |
|
|
const modalActions = document.getElementById('modalActions'); |
|
|
|
|
|
function openModal(title, content, url) { |
|
|
modalTitle.textContent = title; |
|
|
modalContent.innerHTML = content; |
|
|
|
|
|
modalActions.innerHTML = ''; |
|
|
if (url && url !== '#') { |
|
|
const linkButton = document.createElement('a'); |
|
|
linkButton.href = url; |
|
|
linkButton.target = "_blank"; |
|
|
linkButton.rel = "noopener noreferrer"; |
|
|
linkButton.className = "w-full sm:w-auto inline-flex justify-center items-center px-4 py-2 border border-transparent rounded-md shadow-sm text-base font-medium text-white bg-pink-500 hover:bg-pink-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-pink-500 transition"; |
|
|
linkButton.innerHTML = `<i class="fas fa-external-link-alt mr-2"></i> Visit Website`; |
|
|
modalActions.appendChild(linkButton); |
|
|
} |
|
|
|
|
|
const closeBtn = document.createElement('button'); |
|
|
closeBtn.onclick = closeModal; |
|
|
closeBtn.className = "w-full sm:w-auto mt-3 sm:mt-0 inline-flex justify-center items-center px-4 py-2 border border-gray-300 rounded-md shadow-sm text-base font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 transition"; |
|
|
closeBtn.textContent = "Close"; |
|
|
modalActions.appendChild(closeBtn); |
|
|
|
|
|
modal.classList.remove('hidden'); |
|
|
modal.classList.add('flex'); |
|
|
document.body.style.overflow = 'hidden'; |
|
|
} |
|
|
|
|
|
function closeModal() { |
|
|
modal.classList.add('hidden'); |
|
|
modal.classList.remove('flex'); |
|
|
document.body.style.overflow = ''; |
|
|
} |
|
|
|
|
|
document.querySelectorAll('.modal-trigger').forEach(button => { |
|
|
button.addEventListener('click', function() { |
|
|
const card = this.closest('.activity-card'); |
|
|
const title = card.querySelector('h3').textContent; |
|
|
const description = card.querySelector('p').textContent; |
|
|
const locationEl = card.querySelector('.fa-map-marker-alt'); |
|
|
const dateEl = card.querySelector('.fa-calendar-day'); |
|
|
const locationInfo = locationEl ? locationEl.parentElement.textContent.trim() : 'Location not specified'; |
|
|
const dateInfo = dateEl ? dateEl.parentElement.textContent.trim() : 'Date not specified'; |
|
|
const url = card.dataset.url || '#'; |
|
|
|
|
|
const modalHTMLContent = ` |
|
|
<p class="mb-4">${description}</p> |
|
|
<div class="bg-gray-100 p-4 rounded-lg mb-4 space-y-2"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-map-marker-alt mr-3 text-gray-500 w-4 text-center"></i> |
|
|
<span>${locationInfo}</span> |
|
|
</div> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-calendar-day mr-3 text-gray-500 w-4 text-center"></i> |
|
|
<span>${dateInfo}</span> |
|
|
</div> |
|
|
</div> |
|
|
<p class="text-sm text-gray-500 italic">Please confirm details and check the official website for any last-minute changes before visiting.</p> |
|
|
`; |
|
|
|
|
|
openModal(title, modalHTMLContent, url); |
|
|
}); |
|
|
}); |
|
|
|
|
|
modal.addEventListener('click', function(e) { |
|
|
if (e.target === this) { |
|
|
closeModal(); |
|
|
} |
|
|
}); |
|
|
|
|
|
document.addEventListener('keydown', function(event) { |
|
|
if (event.key === 'Escape' && !modal.classList.contains('hidden')) { |
|
|
closeModal(); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
|
|
|
const locations = [ |
|
|
[-31.9375, 115.8455, "Baby Rhyme Time", "City of Vincent Library, Leederville"], |
|
|
[-31.9594, 115.8445, "Stories in the Park", "Kings Park (near Zamia Cafe/May Drive Parkland area)"], |
|
|
[-31.9560, 115.8611, "Ballerina Bunny's Easter Show", "City of Perth Library, Hay St"], |
|
|
[-31.9630, 115.8376, "Rio Tinto Naturescape", "Kings Park (Specific Naturescape entrance)"], |
|
|
[-31.9591, 115.8582, "BHP Water Park", "Elizabeth Quay"] |
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
const mapElement = document.getElementById('map'); |
|
|
if (mapElement) { |
|
|
|
|
|
const map = L.map('map').setView([-31.955, 115.85], 13); |
|
|
|
|
|
|
|
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { |
|
|
maxZoom: 19, |
|
|
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' |
|
|
}).addTo(map); |
|
|
|
|
|
|
|
|
locations.forEach(loc => { |
|
|
const marker = L.marker([loc[0], loc[1]]).addTo(map); |
|
|
marker.bindPopup(`<b>${loc[2]}</b><br>${loc[3]}`); |
|
|
}); |
|
|
} else { |
|
|
console.error("Map container element with ID 'map' not found."); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
|
|
anchor.addEventListener('click', function (e) { |
|
|
e.preventDefault(); |
|
|
const targetId = this.getAttribute('href'); |
|
|
|
|
|
if (targetId && targetId.length > 1) { |
|
|
const targetElement = document.querySelector(targetId); |
|
|
if (targetElement) { |
|
|
targetElement.scrollIntoView({ |
|
|
behavior: 'smooth' |
|
|
}); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=kevinktg/lesley" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |