astro_avtourist/frontend/src/layouts/Layout.astro

71 lines
1.9 KiB
Text
Raw Normal View History

2026-03-31 22:53:39 +05:00
---
import '@styles/global.css';
import { SITE_TITLE_SUFFIX } from '@constants';
2026-03-31 22:53:39 +05:00
import Header from "@components/layout/header/Header.astro";
import Footer from "@components/layout/footer/Footer.astro";
import ConsultationModal from "@components/base/ConsultationModal.astro";
export interface Props {
title: string;
description: string;
canonicalLink?: string;
}
const { title, description, canonicalLink } = Astro.props;
2026-03-31 22:53:39 +05:00
---
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicons/favicon.svg" />
<link rel="icon" href="/favicons/favicon.ico" />
<title>{title} {SITE_TITLE_SUFFIX}</title>
<meta name="description" content={description} />
{canonicalLink && <link rel="canonical" href={canonicalLink} />}
<!-- Yandex верификация -->
<meta name="yandex-verification" content="be3edfd138348e43" />
2026-03-31 22:53:39 +05:00
</head>
<body>
<Header />
<main class="main-content">
2026-03-31 22:53:39 +05:00
<slot />
</main>
2026-03-31 22:53:39 +05:00
<Footer />
<ConsultationModal />
</body>
</html>
<style>
/* Отступ сверху для фиксированного хедера */
.main-content {
padding-top: 80px; /* Высота хедера + отступ */
}
</style>
<script>
// Клиентский скрипт для открытия модального окна
document.addEventListener('DOMContentLoaded', () => {
const btn = document.getElementById('consultation-btn');
btn?.addEventListener('click', () => {
window.dispatchEvent(new CustomEvent('open-modal', {
detail: 'consultation-modal'
}));
});
});
// Для Astro View Transitions
document.addEventListener('astro:page-load', () => {
const btn = document.getElementById('consultation-btn');
btn?.addEventListener('click', () => {
window.dispatchEvent(new CustomEvent('open-modal', {
detail: 'consultation-modal'
}));
});
});
</script>