1import{s as d,j as e,o as x,r as f,S as g,D as h,L as b,A as u,m as n,l as w}from"./index-DO8V1M7T.js";import{M as c}from"./map-pin-vEKjJlea.js";import{E as j}from"./external-link-8d0iz7uh.js";import{w as l}from"./pois-vMTicrnb.js";import{F as N}from"./filter-DMQxblcx.js";import{C as k}from"./check-BX8jcbal.js";const v="com.krugersafariguide.app",p="kruger-safari-guide",y="https://play.google.com/store/apps/details?id=com.krugersafariguide.app";function S(r,a,t){return`https://www.google.com/maps?q=${r},${a}(${encodeURIComponent(t+", Kruger National Park")})`}function A(r,a,t){const i=new URLSearchParams({lat:String(r),lon:String(a),title:t,showPopup:"true",zoom:"14"});return`${p}://map?${i.toString()}`}function P(r,a,t){return`intent://${`map?${new URLSearchParams({lat:String(r),lon:String(a),title:t,showPopup:"true",zoom:"14"}).toString()}`}#Intent;scheme=${p};package=${v};S.browser_fallback_url=${encodeURIComponent(y)};end`}function L(){return d()!=="desktop"}const $=({lat:r,lon:a,name:t})=>{const i=S(r,a,t),s=L(),m=d()==="android"?P(r,a,t):A(r,a,t);return e.jsxs("div",{className:"flex flex-wrap gap-2 mt-4 pt-4 border-t border-safari-sand/10",children:[e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-2 text-xs font-bold uppercase tracking-wider px-4 py-2 rounded-full bg-safari-offwhite text-safari-brown border border-safari-sand/20 hover:bg-safari-brown hover:text-white transition-colors",children:[e.jsx(c,{size:14}),"Google Maps",e.jsx(j,{size:12,className:"opacity-60"})]}),s&&e.jsxs("a",{href:m,className:"inline-flex items-center gap-2 text-xs font-bold uppercase tracking-wider px-4 py-2 rounded-full bg-safari-green/10 text-safari-green border border-safari-green/20 hover:bg-safari-green hover:text-white transition-colors",children:[e.jsx(x,{size:14}),"App Map"]})]})},z={dam:"Dam",waterhole:"Waterhole",hide:"Bird Hide",river:"River"},K=()=>{const r=["All","South","Central","North"],[a,t]=f.useState("All"),i=a==="All"?l:l.filter(s=>s.region===a);return e.jsxs("div",{className:"pt-32 pb-20 min-h-screen bg-safari-offwhite",children:[e.jsx(g,{title:"Kruger Waterholes & Dams | Best Game Viewing Spots",description:"Directory of the best waterholes, dams, and hides in Kruger National Park. Where to wait for wildlife in dry season, nearest camps, and road references.",keywords:"Kruger waterholes, Sunset Dam, Nsemani Dam, dry season game viewing, Kruger dams, wildlife hotspots",canonicalPath:"/waterholes"}),e.jsxs("div",{className:"container mx-auto px-4 max-w-[75rem]",children:[e.jsxs("div",{className:"text-center mb-16",children:[e.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-500/10 border border-blue-500/20 text-blue-700 text-sm font-bold tracking-[0.2em] uppercase mb-6",children:[e.jsx(h,{size:16})," Wildlife Hotspots"]}),e.jsxs("h1",{className:"text-4xl md:text-6xl font-serif font-bold text-safari-dark mb-6",children:["Waterholes ",e.jsx("span",{className:"text-safari-sand",children:"& Dams"})]}),e.jsx("p",{className:"text-lg text-safari-dark/60 max-w-2xl mx-auto",children:"In dry season, water is everything. Park at these dams and waterholes, switch off the engine, and wait - the best Kruger sightings often come to you."}),e.jsxs(b,{to:"/blog/top-waterholes-dry-season",className:"inline-flex items-center gap-2 mt-6 text-safari-brown font-bold text-sm uppercase tracking-widest hover:gap-3 transition-all",children:["Dry season waterhole guide ",e.jsx(u,{size:16})]})]}),e.jsxs("div",{className:"bg-white rounded-[2rem] p-6 shadow-sm border border-safari-sand/10 mb-12",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-4 text-safari-dark font-bold font-serif text-lg",children:[e.jsx(N,{size:20,className:"text-safari-sand"})," Filter by Region:"]}),e.jsx("div",{className:"flex flex-wrap gap-3",children:r.map(s=>e.jsxs("button",{onClick:()=>t(s),className:`px-5 py-2.5 rounded-xl text-sm font-bold transition-all flex items-center gap-2 ${a===s?"bg-safari-brown text-white shadow-md":"bg-safari-offwhite text-safari-dark/60 hover:bg-safari-brown/10 hover:text-safari-brown"}`,children:[a===s&&e.jsx(k,{size:14}),s]},s))})]}),e.jsx(n.div,{layout:!0,className:"grid md:grid-cols-2 gap-8",children:e.jsx(w,{mode:"popLayout",children:i.map(s=>e.jsxs(n.div,{layout:!0,initial:{opacity:0,scale:.95}
1,animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},className:"bg-white rounded-[2rem] p-8 shadow-sm border border-safari-sand/10 hover:shadow-lg transition-shadow",children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-safari-brown bg-safari-brown/10 px-3 py-1 rounded-full",children:s.region}),e.jsx("span",{className:"text-xs font-bold uppercase tracking-widest text-blue-700 bg-blue-50 px-3 py-1 rounded-full",children:z[s.type]})]}),s.road&&e.jsx("span",{className:"text-xs text-safari-dark/40 font-mono",children:s.road})]}),e.jsx("h2",{className:"text-2xl font-serif font-bold text-safari-dark mb-3",children:s.name}),e.jsx("p",{className:"text-safari-dark/70 text-sm leading-relaxed mb-4",children:s.description}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-4",children:s.highlights.map(o=>e.jsx("span",{className:"text-xs bg-blue-50 text-blue-800 px-3 py-1 rounded-full border border-blue-100 font-semibold",children:o},o))}),e.jsxs("div",{className:"flex flex-wrap gap-4 text-xs text-safari-dark/50 mb-0",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(c,{size:12})," Near ",s.nearestCamp]}),s.bestSeason&&e.jsxs("span",{children:["Best: ",s.bestSeason]})]}),e.jsx($,{lat:s.lat,lon:s.lon,name:s.name})]},s.id))})})]})]})};export{K as Waterholes};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.