{% set v = 'now'|date('U') %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
<link rel="icon" type="image/png" href="/assets/doggy/paw-icon.png">
<title>{% block title %} Doggy {% endblock %}</title>
<meta name="csrf-token" content="{{ csrf_token('general') }}">
<link rel="stylesheet" href="/style.css?v={{ v }}20260608-03" />
<link rel="stylesheet" href="/toastr/toastr.min.css" />
<link rel="stylesheet" href="/fonts/fonts.css" />
<link
rel="stylesheet"
href="/css/swiper-bundle.min.css"
/>
<link
rel="stylesheet"
href="/css/ion.rangeSlider.min.css"
/>
{# reCAPTCHA is temporarily disabled for local registration testing.
<script src="/js/recaptcha/api.js" async defer></script>
#}
<script src="/assets/butterup/butterup.min.js"></script>
<link rel="stylesheet" href="/assets/butterup/butterup.min.css?v={{ v }}101">
<script src="/js/socket.io-1.4.5.js"></script>
{% block stylesheets %}{% endblock %}
</head>
<body>
<div data-barba="wrapper">
{% include 'components/header.html.twig' %}
{% include 'components/sidebar.html.twig' %}
{% include 'components/mobile/mobile.html.twig' %}
<!-- Мейн контент -->
<main data-barba="container" data-barba-namespace="{{ app.request.attributes.get('_route') }}">
{% block body %}{% endblock %}
</main>
{% include 'components/footer.html.twig' %}
{% include 'components/modals/modals.html.twig' %}
</div>
<div id="loader" class="loader">
<img src="/assets/doggy/paw-icon.png" alt="" />
</div>
</body>
<script src="/js/barba.umd.js"></script>
<script src="/js/gsap.min.js"></script>
<script src="/js/jquery-3.6.0.min.js"></script>
<script src="/js/ion.rangeSlider.min.js"></script>
<script src="js/swiper-bundle.min.js"></script>
<script src="js/apexcharts.js"></script>
<script src="/toastr/toastr.min.js"></script>
<script src="/assets/js/countup.js"></script>
<script type="module">
import {
initSwipers,
destroySwipers
} from '/assets/js/swipers.js?v={{ v }}101';
import {
initDice,
destroyDice
} from '/assets/js/pages/games/dice.js?v={{ v }}102';
import {
initMines,
destroyMines
} from '/assets/js/pages/games/mines.js?v={{ v }}102';
import {
initFaqToggle,
destroyFaqToggle
} from '/assets/js/pages/faq.js?v={{ v }}101';
import {
initRef,
destroyRef
} from '/assets/js/pages/referral.js?v={{ v }}103';
import {
initProfile,
destroyProfile
} from '/assets/js/pages/profile.js?v={{ v }}102';
import {
initBonus,
} from '/assets/js/pages/bonus.js?v={{ v }}103';
import {
initTournamentPage,
} from '/assets/js/pages/tournament.js?v={{ v }}101';
import {
initSlots,
} from '/assets/js/pages/games/slots.js?v={{ v }}101';
import {
initSlot,
} from '/assets/js/pages/play.js?v={{ v }}101';
barba.init({
sync: true,
views: [
{
namespace: 'main_page',
afterEnter({
next
}) {
initSwipers(next.container);
initSlots(next.container, true);
},
beforeLeave() {
destroySwipers();
destroySlots();
},
},
{
namespace: 'dice_page',
afterEnter({
next
}) {
initDice();
},
beforeLeave() {
destroyDice();
},
},
{
namespace: 'mines_page',
afterEnter({
next
}) {
initMines();
},
beforeLeave() {
destroyMines();
},
},
{
namespace: 'faq_page',
afterEnter({
next
}) {
initFaqToggle();
},
beforeLeave() {
destroyFaqToggle();
},
},
{
namespace: 'referral_page',
afterEnter({
next
}) {
initRef();
}
},
{
namespace: 'bonus_page',
afterEnter({
next
}) {
initBonus();
}
},
{
namespace: 'tours_page',
afterEnter({
next
}) {
initTournamentPage();
}
},
{
namespace: 'lobby_page',
afterEnter({
next
}) {
initSlots(next.container, false);
},
beforeLeave() {
destroySlots();
},
},
{
namespace: 'profile_page',
afterEnter({
next
}) {
initProfile();
},
beforeLeave() {
destroyProfile();
},
},
{
namespace: 'play_slot',
afterEnter({
next
}) {
initSlot(next.container);
},
},
],
transitions: [{
name: 'fade',
async leave({
current
}) {
await gsap.to(current.container, {
opacity: 0,
duration: 0.3
});
},
enter({
next
}) {
gsap.from(next.container, {
opacity: 0,
duration: 0.3
});
}
}]
});
barba.hooks.beforeEnter(() => {
document.querySelectorAll('img[src$=".svg"]').forEach(img => {
img.style.opacity = '0';
img.style.transition = 'opacity 0.3s';
});
});
barba.hooks.afterEnter(() => {
updateSidebarActive();
$('html, body').animate({
scrollTop: 0
}, 0);
const params = new URLSearchParams(window.location.search);
if (params.get('denied') === 'deposit') {
n('Для запуска слота нужно пополнить баланс минимум на 200 ₽ за последние 7 дней', 'info');
}
document.querySelectorAll('img[src$=".svg"]').forEach(img => {
const oldSrc = img.getAttribute('src');
if (oldSrc) {
img.setAttribute('src', oldSrc.split('?')[0] + '?reload=' + new Date().getTime());
img.onload = () => {
img.style.opacity = '1';
};
}
});
});
function updateSidebarActive() {
document
.querySelectorAll('.sidebar-link')
.forEach(el => {
const href = el.getAttribute('href');
el.classList.toggle('active', window.location.pathname.startsWith(href));
});
document
.querySelectorAll('.mobile-link')
.forEach(el => {
const href = el.getAttribute('href');
el.classList.toggle('active', window.location.pathname.startsWith(href));
});
}
var globalrole = 0;
</script>
{% if user %}
<script>
globalrole = {{ user.admin }};
</script>
{% endif %}
<script src="/assets/js/auth.js?v={{ v }}102"></script>
<script src="/script.js?v={{ v }}104"></script>
{% block javascripts %}{% endblock %}
</html>