Merge version_4 into main

Merge version_4 into main
This commit was merged in pull request #5.
This commit is contained in:
2026-05-06 04:54:13 +00:00

View File

@@ -2,6 +2,7 @@
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import { useEffect, useRef } from "react";
import BlogCardTwo from '@/components/sections/blog/BlogCardTwo';
import ContactCenter from '@/components/sections/contact/ContactCenter';
import FeatureBento from '@/components/sections/feature/FeatureBento';
@@ -14,6 +15,18 @@ import TextAbout from '@/components/sections/about/TextAbout';
import { Calendar, Database, Zap } from "lucide-react";
export default function LandingPage() {
useEffect(() => {
// Initialize persistence listener for scratch data
const handleScratchSave = (event: any) => {
const { pathData } = event.detail;
const existingData = JSON.parse(localStorage.getItem('wall-scribbles') || '[]');
existingData.push(pathData);
localStorage.setItem('wall-scribbles', JSON.stringify(existingData));
};
window.addEventListener('scratch-added' as any, handleScratchSave);
return () => window.removeEventListener('scratch-added' as any, handleScratchSave);
}, []);
return (
<ThemeProvider
defaultButtonVariant="icon-arrow"
@@ -31,12 +44,9 @@ export default function LandingPage() {
<div id="nav" data-section="nav">
<NavbarStyleCentered
navItems={[
{
name: "Home", id: "hero"},
{
name: "About", id: "about"},
{
name: "Scratch Wall", id: "feature"},
{ name: "Home", id: "hero" },
{ name: "About", id: "about" },
{ name: "Scratch Wall", id: "feature" },
]}
brandName="OldWall"
/>
@@ -44,14 +54,13 @@ export default function LandingPage() {
<div id="hero" data-section="hero">
<HeroLogoBillboard
background={{
variant: "gradient-bars"}}
background={{ variant: "gradient-bars" }}
logoText="Mark Your Time"
description="Leave your mark on the ancient stones. Use the sharp stone to carve your days and memories into the eternal wall."
buttons={[
{
text: "Begin Scratching", onClick: () => {
// Enabling wall interaction mode & persistence layer
text: "Begin Scratching",
onClick: () => {
window.dispatchEvent(new CustomEvent('enable-scratch-wall'));
const section = document.getElementById('feature');
if (section) {
@@ -77,15 +86,9 @@ export default function LandingPage() {
textboxLayout="default"
useInvertedBackground={false}
features={[
{
title: "Realtime Carving", description: "Dynamic scratching interaction using custom stone-cursor.", bentoComponent: "reveal-icon", icon: Zap,
},
{
title: "Daily Count", description: "Mark every passing day on the wall like a prisoner.", bentoComponent: "reveal-icon", icon: Calendar,
},
{
title: "Persistent Memory", description: "Your carvings persist every time you visit.", bentoComponent: "reveal-icon", icon: Database,
},
{ title: "Realtime Carving", description: "Dynamic scratching interaction using custom stone-cursor.", bentoComponent: "reveal-icon", icon: Zap },
{ title: "Daily Count", description: "Mark every passing day on the wall like a prisoner.", bentoComponent: "reveal-icon", icon: Calendar },
{ title: "Persistent Memory", description: "Your carvings persist every time you visit via local storage sync.", bentoComponent: "reveal-icon", icon: Database },
]}
title="Interactive Wall Canvas"
description="Experience a realistic interface where every move leaves a mark."
@@ -99,12 +102,9 @@ export default function LandingPage() {
title="Wall Activity"
tag="Live Stats"
metrics={[
{
id: "m1", value: "1,204", description: "Carvings Made"},
{
id: "m2", value: "89", description: "Days Recorded"},
{
id: "m3", value: "24/7", description: "Always Active"},
{ id: "m1", value: "1,204", description: "Carvings Made" },
{ id: "m2", value: "89", description: "Days Recorded" },
{ id: "m3", value: "24/7", description: "Always Active" },
]}
metricsAnimation="slide-up"
/>
@@ -117,21 +117,9 @@ export default function LandingPage() {
gridVariant="uniform-all-items-equal"
useInvertedBackground={false}
testimonials={[
{
id: "1", name: "Alex R.", role: "User", company: "Explorer", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/brick-tiled-work-texture-background_1194-612555.jpg"},
{
id: "2", name: "Sarah K.", role: "Artist", company: "Creative", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/details-carved-stones-top-portico-beautiful-stone-carvings-history-heritage-ancient-civilizations-details-temple-aegean-region-turkey_166373-3608.jpg"},
{
id: "3", name: "Mark D.", role: "Writer", company: "Indie", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/stone-texture-background_1194-8592.jpg"},
{
id: "4", name: "Emma L.", role: "Traveler", company: "Global", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/pebbles-hollow-metal-pattern_1252-1066.jpg"},
{
id: "5", name: "John P.", role: "Historian", company: "Archives", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/stone-texture-background_1194-8590.jpg"},
{ id: "1", name: "Alex R.", role: "User", company: "Explorer", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/brick-tiled-work-texture-background_1194-612555.jpg" },
{ id: "2", name: "Sarah K.", role: "Artist", company: "Creative", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/details-carved-stones-top-portico-beautiful-stone-carvings-history-heritage-ancient-civilizations-details-temple-aegean-region-turkey_166373-3608.jpg" },
{ id: "3", name: "Mark D.", role: "Writer", company: "Indie", rating: 5, imageSrc: "http://img.b2bpic.net/free-photo/stone-texture-background_1194-8592.jpg" },
]}
title="Wall Voices"
description="Thoughts from those who left their marks."
@@ -146,12 +134,7 @@ export default function LandingPage() {
title="Wall Chronicles"
description="Read about the memories left behind."
blogs={[
{
id: "b1", category: "Memory", title: "First Mark", excerpt: "The story of why we started.", imageSrc: "http://img.b2bpic.net/free-photo/stone-texture_1194-5745.jpg", authorName: "Admin", authorAvatar: "http://img.b2bpic.net/free-photo/soft-concrete-texture_1194-9007.jpg", date: "Jan 1, 2025"},
{
id: "b2", category: "Art", title: "Digital Grit", excerpt: "Creating the stone aesthetic.", imageSrc: "http://img.b2bpic.net/free-photo/old-wall-with-peeled-plaster-background_1252-1046.jpg", authorName: "Admin", authorAvatar: "http://img.b2bpic.net/free-photo/brick-old-building-exterior_23-2147764372.jpg", date: "Jan 5, 2025"},
{
id: "b3", category: "Tech", title: "Persistence", excerpt: "How we store your thoughts.", imageSrc: "http://img.b2bpic.net/free-photo/fragment-old-grungy-texture-with-chipped-paint-cracks-grey-concrete-wall-cement-surface_150588-119.jpg", authorName: "Admin", authorAvatar: "http://img.b2bpic.net/free-photo/cracked-concrete-wall_23-2148399198.jpg", date: "Jan 10, 2025"},
{ id: "b1", category: "Memory", title: "First Mark", excerpt: "The story of why we started.", imageSrc: "http://img.b2bpic.net/free-photo/stone-texture_1194-5745.jpg", authorName: "Admin", authorAvatar: "http://img.b2bpic.net/free-photo/soft-concrete-texture_1194-9007.jpg", date: "Jan 1, 2025" },
]}
/>
</div>
@@ -159,8 +142,7 @@ export default function LandingPage() {
<div id="contact" data-section="contact">
<ContactCenter
useInvertedBackground={false}
background={{
variant: "gradient-bars"}}
background={{ variant: "gradient-bars" }}
tag="Reach Out"
title="Contact Us"
description="Questions about the wall?"