4 Commits

Author SHA1 Message Date
4a4d821411 Merge version_11 into main
Merge version_11 into main
2026-02-17 19:42:39 +00:00
9e508b3017 Update src/app/page.tsx 2026-02-17 19:42:35 +00:00
57011d2561 Update src/app/layout.tsx 2026-02-17 19:42:34 +00:00
20db4ce23c Merge version_10 into main
Merge version_10 into main
2026-02-17 14:29:34 +00:00
2 changed files with 71 additions and 17 deletions

View File

@@ -413,6 +413,20 @@ export default function RootLayout({
originalContent = element.textContent; originalContent = element.textContent;
element.contentEditable = 'true'; element.contentEditable = 'true';
if (!element.dataset.webildOriginalWhiteSpace) {
const computedStyle = window.getComputedStyle(element);
element.dataset.webildOriginalWhiteSpace = computedStyle.whiteSpace;
element.dataset.webildOriginalWordWrap = computedStyle.wordWrap;
element.dataset.webildOriginalOverflowWrap = computedStyle.overflowWrap;
element.dataset.webildOriginalOverflow = computedStyle.overflow;
}
element.style.whiteSpace = 'pre-wrap';
element.style.wordWrap = 'break-word';
element.style.overflowWrap = 'break-word';
element.style.overflow = 'visible';
element.focus(); element.focus();
isEditing = true; isEditing = true;
@@ -522,6 +536,23 @@ export default function RootLayout({
element.contentEditable = 'false'; element.contentEditable = 'false';
isEditing = false; isEditing = false;
if (element.dataset.webildOriginalWhiteSpace) {
element.style.whiteSpace = element.dataset.webildOriginalWhiteSpace === 'normal' ? '' : element.dataset.webildOriginalWhiteSpace;
delete element.dataset.webildOriginalWhiteSpace;
}
if (element.dataset.webildOriginalWordWrap) {
element.style.wordWrap = element.dataset.webildOriginalWordWrap === 'normal' ? '' : element.dataset.webildOriginalWordWrap;
delete element.dataset.webildOriginalWordWrap;
}
if (element.dataset.webildOriginalOverflowWrap) {
element.style.overflowWrap = element.dataset.webildOriginalOverflowWrap === 'normal' ? '' : element.dataset.webildOriginalOverflowWrap;
delete element.dataset.webildOriginalOverflowWrap;
}
if (element.dataset.webildOriginalOverflow) {
element.style.overflow = element.dataset.webildOriginalOverflow === 'visible' ? '' : element.dataset.webildOriginalOverflow;
delete element.dataset.webildOriginalOverflow;
}
if (element.dataset.beforeInputHandler === 'true') { if (element.dataset.beforeInputHandler === 'true') {
element.removeEventListener('beforeinput', () => {}); element.removeEventListener('beforeinput', () => {});
delete element.dataset.beforeInputHandler; delete element.dataset.beforeInputHandler;
@@ -827,6 +858,9 @@ export default function RootLayout({
const handleScroll = () => { const handleScroll = () => {
if (!isActive) return; if (!isActive) return;
if (isEditing) return;
if (selectedElement) { if (selectedElement) {
makeUneditable(selectedElement, false); makeUneditable(selectedElement, false);
selectedElement.classList.remove(selectedClass); selectedElement.classList.remove(selectedClass);
@@ -1200,6 +1234,31 @@ export default function RootLayout({
window.addEventListener('scroll', handleScroll, true); window.addEventListener('scroll', handleScroll, true);
window.addEventListener('message', handleMessage, true); window.addEventListener('message', handleMessage, true);
let lastPathname = window.location.pathname;
const notifyPageChange = () => {
window.parent.postMessage({
type: 'webild-page-changed',
data: { pathname: window.location.pathname }
}, '*');
};
window.addEventListener('popstate', () => {
if (lastPathname !== window.location.pathname) {
lastPathname = window.location.pathname;
notifyPageChange();
}
}, true);
const urlCheckInterval = setInterval(() => {
if (lastPathname !== window.location.pathname) {
lastPathname = window.location.pathname;
notifyPageChange();
}
}, 500);
notifyPageChange();
window.webildCleanup = () => { window.webildCleanup = () => {
isActive = false; isActive = false;
@@ -1210,6 +1269,10 @@ export default function RootLayout({
removeHoverOverlay(); removeHoverOverlay();
removeElementTypeLabel(); removeElementTypeLabel();
if (urlCheckInterval) {
clearInterval(urlCheckInterval);
}
document.removeEventListener('mouseover', handleMouseOver, true); document.removeEventListener('mouseover', handleMouseOver, true);
document.removeEventListener('mouseout', handleMouseOut, true); document.removeEventListener('mouseout', handleMouseOut, true);
document.removeEventListener('click', handleClick, true); document.removeEventListener('click', handleClick, true);

View File

@@ -2,7 +2,7 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline'; import NavbarLayoutFloatingInline from '@/components/navbar/NavbarLayoutFloatingInline';
import HeroSplitDualMedia from '@/components/sections/hero/HeroSplitDualMedia'; import HeroLogoBillboardSplit from '@/components/sections/hero/HeroLogoBillboardSplit';
import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard'; import TestimonialAboutCard from '@/components/sections/about/TestimonialAboutCard';
import FeatureCardNineteen from '@/components/sections/feature/FeatureCardNineteen'; import FeatureCardNineteen from '@/components/sections/feature/FeatureCardNineteen';
import ProductCardThree from '@/components/sections/product/ProductCardThree'; import ProductCardThree from '@/components/sections/product/ProductCardThree';
@@ -69,31 +69,22 @@ export default function SilZemliPage() {
</div> </div>
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroSplitDualMedia <HeroLogoBillboardSplit
tag="Ласкаво просимо до Солі Землі" logoText="СІЛЬ ЗЕМЛІ"
tagIcon={Flame}
title="Автентичні українські бенкети та сімейні обіди"
description="Відчуйте тепло, традицію та етнокультурну спадщину у нашому чудово оформленому бенкетному комплексі. Від інтимних сімейних зібрань до грандіозних святкувань, ми створюємо незабутні моменти біля вогню." description="Відчуйте тепло, традицію та етнокультурну спадщину у нашому чудово оформленому бенкетному комплексі. Від інтимних сімейних зібрань до грандіозних святкувань, ми створюємо незабутні моменти біля вогню."
background={{ variant: "plain" }} background={{ variant: "plain" }}
mediaItems={[ imageSrc="https://img.b2bpic.net/free-photo/full-shot-woman-getting-warmer-by-fire_23-2149172517.jpg"
{ imageAlt="Тепло каміна в традиційному українському інтер'єрі"
imageSrc: "https://img.b2bpic.net/free-photo/full-shot-woman-getting-warmer-by-fire_23-2149172517.jpg", imageAlt: "Тепло каміна в традиційному українському інтер'єрі"
},
{
imageSrc: "https://img.b2bpic.net/free-photo/traditional-house-interior-design_23-2151050931.jpg", imageAlt: "Автентичний дерев'яний інтер'єр з етно-декором"
}
]}
rating={5}
ratingText="Улюблене місце сімей та організаторів заходів"
buttons={[{ buttons={[{
text: "Замовити стіл", onClick: () => setIsModalOpen(true) text: "Замовити стіл", onClick: () => setIsModalOpen(true)
}]} }]}
tagAnimation="slide-up" layoutOrder="default"
frameStyle="card"
buttonAnimation="slide-up" buttonAnimation="slide-up"
mediaAnimation="slide-up" mediaAnimation="slide-up"
className="py-20 lg:py-32" className="py-20 lg:py-32"
containerClassName="max-w-7xl" containerClassName="max-w-7xl"
titleClassName="text-4xl md:text-6xl font-bold text-foreground" logoClassName="text-6xl md:text-8xl font-bold text-foreground"
descriptionClassName="text-lg text-foreground/80" descriptionClassName="text-lg text-foreground/80"
buttonClassName="bg-primary-cta hover:bg-accent text-white" buttonClassName="bg-primary-cta hover:bg-accent text-white"
mediaWrapperClassName="rounded-soft overflow-hidden" mediaWrapperClassName="rounded-soft overflow-hidden"