Files
hoshal-market/resources/views/components/layouts/app.blade.php
Mekan1206 b13d61b342 Update project dependencies and configuration
- Added Filament and Tailwind CSS dependencies in composer.json.
- Updated AGENTS.md to include new package versions.
- Modified boost.json to include tailwindcss-development skill.
- Updated DatabaseSeeder to create an admin user with a password.
- Changed the root route to use HomeController instead of a closure.
- Adjusted permissions for .gitignore in storage directory.
2026-06-04 21:30:06 +05:00

244 lines
12 KiB
PHP

@props(['settings'])
<!DOCTYPE html>
<html class="scroll-smooth" lang="tk">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>Hoşal Patisserie - Hünärmençe döredilen</title>
<script src="{{ asset('assets/js/tailwind.min.js') }}"></script>
<link href="{{ asset('assets/css/fonts.css') }}" rel="stylesheet"/>
<script id="tailwind-config">
tailwind.config = {
darkMode: "class",
theme: {
extend: {
"colors": {
"outline": "#81756e",
"surface-container-lowest": "#ffffff",
"on-surface-variant": "#4f453f",
"on-background": "#1e1b1a",
"tertiary": "#010700",
"secondary-fixed": "#ffdad2",
"primary-fixed-dim": "#dfc0af",
"on-secondary-container": "#7a463a",
"inverse-on-surface": "#f6efed",
"primary-fixed": "#fddcca",
"tertiary-fixed-dim": "#b9ccab",
"surface-variant": "#e8e1de",
"on-tertiary": "#ffffff",
"surface-bright": "#fff8f5",
"on-primary-container": "#9b8071",
"on-error-container": "#93000a",
"on-secondary": "#ffffff",
"surface-tint": "#71594b",
"surface-container-low": "#f9f2ef",
"tertiary-fixed": "#d5e9c6",
"surface-dim": "#dfd9d6",
"primary-container": "#2b1a0f",
"inverse-primary": "#dfc0af",
"secondary-container": "#ffb8a8",
"surface": "#fff8f5",
"on-error": "#ffffff",
"error": "#ba1a1a",
"on-primary": "#ffffff",
"on-tertiary-container": "#798b6d",
"surface-container-highest": "#e8e1de",
"tertiary-container": "#13220c",
"on-primary-fixed-variant": "#584235",
"on-secondary-fixed-variant": "#6a392e",
"surface-container-high": "#eee7e4",
"on-tertiary-fixed-variant": "#3b4b32",
"background": "#fff8f5",
"surface-container": "#f4ecea",
"on-tertiary-fixed": "#111f0a",
"outline-variant": "#d3c4bc",
"secondary": "#865043",
"on-primary-fixed": "#28180d",
"secondary-fixed-dim": "#fcb6a5",
"on-secondary-fixed": "#350f07",
"primary": "#0c0300",
"on-surface": "#1e1b1a",
"inverse-surface": "#33302e",
"error-container": "#ffdad6",
"antique-gold": "#C8A96E",
"ink-brown": "#2B1A0F"
},
"borderRadius": {
"DEFAULT": "0.25rem",
"lg": "0.5rem",
"xl": "0.75rem",
"full": "9999px"
},
"spacing": {
"margin-mobile": "20px",
"gutter": "24px",
"container-max": "1280px",
"unit": "8px",
"margin-desktop": "64px"
},
"fontFamily": {
"subheading-caps": ["Playfair Display"],
"label-sm": ["Libre Franklin"],
"body-md": ["Merriweather"],
"display-lg": ["Playfair Display"],
"headline-md": ["Playfair Display"],
"display-lg-mobile": ["Playfair Display"],
"body-lg": ["Merriweather"]
},
"fontSize": {
"subheading-caps": ["14px", { "lineHeight": "1.5", "letterSpacing": "0.15em", "fontWeight": "600" }],
"label-sm": ["12px", { "lineHeight": "1.2", "letterSpacing": "0.05em", "fontWeight": "500" }],
"body-md": ["16px", { "lineHeight": "1.6", "fontWeight": "400" }],
"display-lg": ["64px", { "lineHeight": "1.1", "letterSpacing": "-0.02em", "fontWeight": "700" }],
"headline-md": ["32px", { "lineHeight": "1.3", "fontWeight": "600" }],
"display-lg-mobile": ["40px", { "lineHeight": "1.2", "fontWeight": "700" }],
"body-lg": ["18px", { "lineHeight": "1.8", "fontWeight": "400" }]
},
"animation": {
"marquee": "marquee 30s linear infinite",
"fade-in-up": "fadeInUp 0.8s ease-out forwards"
},
"keyframes": {
marquee: {
"0%": { transform: "translateX(0%)" },
"100%": { transform: "translateX(-50%)" }
},
fadeInUp: {
"0%": { opacity: "0", transform: "translateY(20px)" },
"100%": { opacity: "1", transform: "translateY(0)" }
}
}
}
}
}
</script>
<style>
.material-symbols-outlined {
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
.paper-texture {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 9999;
opacity: 0.05;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
}
.hide-scrollbar::-webkit-scrollbar {
display: none;
}
.hide-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
}
.animate-on-scroll {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}
.animate-on-scroll.is-visible {
opacity: 1;
transform: translateY(0);
}
.carousel-slide {
transition: opacity 1s ease-in-out;
opacity: 0;
position: absolute;
inset: 0;
}
.carousel-slide.active {
opacity: 1;
z-index: 10;
}
</style>
</head>
<body class="bg-background text-on-background antialiased relative selection:bg-antique-gold selection:text-white">
<div class="paper-texture"></div>
<nav class="fixed top-0 w-full z-50 bg-surface/80 backdrop-blur-md border-b border-outline/20 transition-all duration-300 ease-in-out">
<div class="flex justify-between items-center px-margin-mobile md:px-margin-desktop py-4 w-full z-50 max-w-[1280px] mx-auto">
<a class="font-display-lg-mobile md:font-display-lg text-display-lg-mobile md:text-display-lg text-primary italic" href="{{ url('/') }}">Hoşal Patisserie</a>
<div class="hidden md:flex gap-8">
<a class="font-subheading-caps text-subheading-caps text-on-surface-variant hover:text-primary transition-colors hover:opacity-80 transition-opacity" href="#about">Biz barada</a>
<a class="font-subheading-caps text-subheading-caps text-on-surface-variant hover:text-primary transition-colors hover:opacity-80 transition-opacity" href="#menu">Menýu</a>
</div>
<button aria-label="Menýu" class="md:hidden text-primary">
<span class="material-symbols-outlined">menu</span>
</button>
</div>
</nav>
<main>
{{ $slot }}
</main>
<footer class="w-full mt-auto bg-primary-container dark:bg-tertiary-container border-t border-secondary-container/30">
<div class="grid grid-cols-1 md:grid-cols-3 gap-gutter px-margin-mobile md:px-margin-desktop py-16 w-full max-w-[1280px] mx-auto">
<div class="col-span-1 mb-8 md:mb-0 flex flex-col justify-between">
<h2 class="font-display-lg-mobile md:font-display-lg text-display-lg-mobile md:text-[40px] text-surface-container-lowest italic mb-4">Hoşal Patisserie</h2>
<p class="font-body-md text-body-md text-surface-variant/80 mt-auto">{{ $settings->footer_copyright ?? '© 2026 Hoşal Patisserie. Hünärmençe döredilen.' }}</p>
</div>
<div class="col-span-1 md:col-span-2 grid grid-cols-2 md:grid-cols-3 gap-8">
<div>
<h3 class="font-subheading-caps text-subheading-caps text-surface-container-lowest mb-6">Gözlemek</h3>
<ul class="space-y-4">
<li><a class="font-body-md text-body-md text-surface-variant/80 hover:text-surface-container-lowest transition-colors duration-200" href="#about">Biz barada</a></li>
<li><a class="font-body-md text-body-md text-surface-variant/80 hover:text-surface-container-lowest transition-colors duration-200" href="#menu">Menýu</a></li>
</ul>
</div>
<div>
<h3 class="font-subheading-caps text-subheading-caps text-surface-container-lowest mb-6">Goldaw</h3>
<ul class="space-y-4">
<li><a class="font-body-md text-body-md text-surface-variant/80 hover:text-surface-container-lowest transition-colors duration-200" href="#">Eltip bermek</a></li>
<li><a class="font-body-md text-body-md text-surface-variant/80 hover:text-surface-container-lowest transition-colors duration-200" href="#">Gizlinlik syýasaty</a></li>
</ul>
</div>
<div class="col-span-2 md:col-span-1 mt-8 md:mt-0">
<h3 class="font-subheading-caps text-subheading-caps text-surface-container-lowest mb-6">Bize geliň</h3>
<address class="font-body-md text-body-md text-surface-variant/80 not-italic space-y-2">
{!! nl2br(e($settings->footer_address ?? "Magtymguly şaýoly\nAşgabat, Türkmenistan")) !!}
<p class="mt-4"><a class="hover:text-surface-container-lowest transition-colors duration-200" href="tel:{{ preg_replace('/[^0-9+]/', '', $settings->footer_phone ?? '+993 61 92 92 48') }}">{{ $settings->footer_phone ?? '+993 61 92 92 48' }}</a></p>
</address>
</div>
</div>
</div>
</footer>
<script>
document.addEventListener("DOMContentLoaded", () => {
const animatedElements = document.querySelectorAll('.animate-on-scroll');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
}
});
}, { threshold: 0.1 });
animatedElements.forEach(el => observer.observe(el));
const slides = document.querySelectorAll('.carousel-slide');
if (slides.length > 0) {
let currentSlide = 0;
setInterval(() => {
slides[currentSlide].classList.remove('active');
currentSlide = (currentSlide + 1) % slides.length;
slides[currentSlide].classList.add('active');
}, 5000);
}
const collectionsContainer = document.getElementById('collections-container');
const btnPrev = document.getElementById('btn-prev-collection');
const btnNext = document.getElementById('btn-next-collection');
if(btnNext && btnPrev && collectionsContainer) {
btnNext.addEventListener('click', () => {
collectionsContainer.scrollBy({ left: 340, behavior: 'smooth' });
});
btnPrev.addEventListener('click', () => {
collectionsContainer.scrollBy({ left: -340, behavior: 'smooth' });
});
}
});
</script>
</body>
</html>