/* globals React, ReactDOM, ReactHelmet, framerMotion */
/* ---------- Safe shims ---------- */
const Helmet = (typeof ReactHelmet !== 'undefined' && ReactHelmet.Helmet)
? ReactHelmet.Helmet
: ({children}) => null;
const { motion: MotionLib } = (typeof framerMotion !== 'undefined' ? framerMotion : {});
const motion = MotionLib || new Proxy({}, { get: () => (props) =>
});
/* ---------- Helpers ---------- */
function cn(...inputs) {
const classes = [];
inputs.forEach((i) => {
if (!i) return;
if (typeof i === 'string') classes.push(i);
else if (Array.isArray(i)) classes.push(cn(...i));
else if (typeof i === 'object') for (const k in i) if (i[k]) classes.push(k);
});
// simple de-dupe
const seen = new Set();
const out = [];
for (const c of classes.join(' ').split(/\s+/)) {
if (!seen.has(c)) { seen.add(c); out.push(c); }
}
return out.join(' ');
}
/* ---------- Button ---------- */
const Button = React.forwardRef(({ className = '', variant = 'default', size = 'default', asChild = false, ...props }, ref) => {
const base = 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50';
const variants = {
default: 'bg-emerald-600 text-white hover:bg-emerald-700',
destructive: 'bg-red-600 text-white hover:bg-red-700',
outline: 'border border-gray-300 bg-transparent hover:bg-gray-100',
secondary: 'bg-gray-200 text-gray-800 hover:bg-gray-300',
ghost: 'hover:bg-gray-100',
link: 'text-emerald-600 underline-offset-4 hover:underline',
};
const sizes = { default: 'h-10 px-4 py-2', sm: 'h-9 px-3 rounded-md', lg: 'h-11 px-8 rounded-md', icon: 'h-10 w-10' };
const Comp = asChild ? 'span' : 'button';
return ;
});
Button.displayName = 'Button';
/* ---------- Toast system ---------- */
function Toaster() {
const [toasts, setToasts] = React.useState([]);
React.useEffect(() => {
window.__wp_toast_add__ = (t) => {
const id = Date.now() + Math.random();
setToasts((p) => [...p, { id, ...t }]);
setTimeout(() => setToasts((p) => p.filter(x => x.id !== id)), 4500);
};
}, []);
const close = (id) => setToasts((p) => p.filter(x => x.id !== id));
return (
{toasts.map(({id,title,description,variant}) => (
close(id)} className="absolute right-2 top-2 rounded p-1 text-white/60 hover:text-white" aria-label="Close">
{title ?
{title}
: null}
{description ?
{description}
: null}
))}
);
}
function useToast() {
const toast = React.useCallback((opts) => {
if (window.__wp_toast_add__) window.__wp_toast_add__(opts||{});
}, []);
return { toast };
}
/* ---------- Inline icons ---------- */
const MountainIcon = ({ className }) => ;
const ArrowDownIcon = ({ className }) => ;
const MapPinIcon = ({ className }) => ;
const TrendingUpIcon = ({ className }) => ;
const ClockIcon = ({ className }) => ;
const BackpackIcon = ({ className }) => ;
const CompassIcon = ({ className }) => ;
const FootprintsIcon = ({ className }) => ;
const SunIcon = ({ className }) => ;
const QuoteIcon = ({ className }) => ;
const FacebookIcon = ({ className }) => ;
const InstagramIcon = ({ className }) => ;
const TwitterIcon = ({ className }) => ;
/* ---------- Components ---------- */
const Hero = () => {
const { toast } = useToast();
const handleExploreClick = () => {
const el = document.getElementById('trails');
if (el) el.scrollIntoView({ behavior: 'smooth' });
};
const handleJoinClick = () => {
toast({ title: '🚧 Функцијата доаѓа наскоро!', description: 'Оваа функција сè уште не е имплементирана – но не грижете се! Можете да ја побарате во вашето следно барање! 🚀' });
};
return (
Двете Уши
Освојувајте врвови, прегрнете ја природата и откријте ја возбудата на планинарењето. Вашата следна авантура започнува овде! ⛰️
Истражи Патеки
Придружи се на Заедницата
);
};
const FeaturedTrails = () => {
const { toast } = useToast();
const trails = [
{ name: 'Тито Врв', location: 'Шар Планина, Македонија', difficulty: 'Напредно', duration: '8-10 часа', elevation: '2,748 m', description: 'Највисокиот врв на Шар Планина со неверојатни панорамски глетки' },
{ name: 'Голем Корaб', location: 'Планина Кораб, Македонија/Албанија', difficulty: 'Експертско', duration: '10-12 часа', elevation: '2,764 m', description: 'Највисокиот врв во Македонија, вистински предизвик за искусни планинари' },
{ name: 'Пелистер', location: 'Баба Планина, Македонија', difficulty: 'Умерено', duration: '5-7 часа', elevation: '2,601 m', description: 'Патека низ борова шума до кристално чистите Пелистерски Очи' }
];
const handleViewDetails = () => {
toast({ title: '🚧 Детали за патеката доаѓаат наскоро!', description: 'Оваа функција сè уште не е имплементирана – но не грижете се! Можете да ја побарате во вашето следно барање! 🚀' });
};
return (
Истакнати Патеки
Откријте рачно избрани планинарски рути кои ќе ви го одземат здивот! 🥾
{trails.map((trail, i) => (
{trail.name}
{trail.location}
{trail.description}
Тежина:{trail.difficulty}
Времетраење:{trail.duration}
Висинска разлика: {trail.elevation}
handleViewDetails(trail.name)} className="w-full bg-gradient-to-r from-emerald-600 to-teal-600 hover:from-emerald-700 hover:to-teal-700 text-white font-semibold rounded-lg">Повеќе Детали
))}
);
};
const GearSection = () => {
const gearItems = [
{ icon: BackpackIcon, title: 'Суштински Ранец', description: 'Изберете удобен, издржлив ранец со правилна распределба на тежината', color: 'from-blue-500 to-cyan-500' },
{ icon: FootprintsIcon, title: 'Планинарски Чевли', description: 'Инвестирајте во квалитетни чизми со поддршка за глуждот и водоотпорна заштита', color: 'from-orange-500 to-red-500' },
{ icon: CompassIcon, title: 'Навигациски Алатки', description: 'GPS уред, мапа и компас за безбедна навигација по патеката', color: 'from-purple-500 to-pink-500' },
{ icon: SunIcon, title: 'Опрема за Време', description: 'Слоевита облека, водоотпорна јакна и основни средства за заштита од сонце', color: 'from-yellow-500 to-orange-500' },
];
return (
Водич за Основна Опрема
Подгответе се за успех со нашите експертски препораки! 🎒
{gearItems.map((item,i)=>{
const Icon=item.icon;
return (
{item.title}
{item.description}
)
})}
);
};
const AdventureStories = () => {
const stories = [
{ quote: "Достигнувањето на врвот при изгрејсонце беше најмагичниот момент во мојот живот. Погледот апсолутно вредеше за секој чекор!", author: "Сара Мичел", trail: "Патека на Орловиот Врв" },
{ quote: "Кружната Патека Маглеста Долина ги надмина сите очекувања. Совршена комбинација на предизвик и убавина. Едвај чекам да се вратам!", author: "Џејмс Родригез", trail: "Кружна Патека Маглеста Долина" },
{ quote: "Патеката на Врвот Гребен ги тестираше моите граници, но чувството на постигнување беше неверојатно. Оваа заедница е супер!", author: "Емили Чен", trail: "Патека на Врвот Гребен" }
];
return (
Авантуристички Приказни
Вистински искуства од колеги планинари ентузијасти! 🌟
{stories.map((s,i)=>(
"{s.quote}"
))}
);
};
const CallToAdventure = () => {
const { toast } = useToast();
const handleGetStarted = () => toast({ title: "🚧 Функцијата доаѓа наскоро!", description: "Оваа функција сè уште не е имплементирана – но не грижете се! Можете да ја побарате во вашето следно барање! 🚀" });
return (
Подготвени за Вашата Следна Авантура?
Придружете им се на илјадници планинари кои ги истражуваат најубавите патеки во светот. Вашата планина ве чека! 🏔️
Започнете Денес
);
};
const Footer = () => {
const { toast } = useToast();
const click = (p)=>toast({ title: "🚧 Социјалните мрежи доаѓаат наскоро!", description: "Оваа функција сè уште не е имплементирана – но не грижете се! Можете да ја побарате во вашето следно барање! 🚀" });
return (
Двете Уши
Вашиот врвен придружник за планински планинарски авантури и истражување на отворено.
Брзи Линкови
За Нас
Водичи за Патеки
Совети за Безбедност
Контакт
Поврзете се со Нас
click('Facebook')} className="w-10 h-10 rounded-full bg-emerald-600/20 hover:bg-emerald-600/40 flex items-center justify-center">
click('Instagram')} className="w-10 h-10 rounded-full bg-emerald-600/20 hover:bg-emerald-600/40 flex items-center justify-center">
click('Twitter')} className="w-10 h-10 rounded-full bg-emerald-600/20 hover:bg-emerald-600/40 flex items-center justify-center">
© 2025 Двете Уши. Сите права задржани. Авантурирајте одговорно! 🌲
);
};
/* Optional extras you can insert anywhere if desired */
const HeroImage = () => (
);
const WelcomeMessage = () => (
Hello there! I'm Horizons , your AI coding companion.
I'm here to help you build amazing web application!
);
/* ---------- App + Boot ---------- */
function App() {
return (
<>
Двете Уши - Планинарски Авантури
>
);
}
const rootEl = document.getElementById('root');
if (rootEl) {
ReactDOM.createRoot(rootEl).render( );
} else {
document.body.innerHTML += 'Error: #root not found
';
}