diff --git a/public/images/le-hoi/doan-khieng-kieu.jpg b/public/images/le-hoi/doan-khieng-kieu.jpg
new file mode 100644
index 0000000..39f767c
Binary files /dev/null and b/public/images/le-hoi/doan-khieng-kieu.jpg differ
diff --git a/public/images/le-hoi/doan-ruoc-bo-lao.jpg b/public/images/le-hoi/doan-ruoc-bo-lao.jpg
new file mode 100644
index 0000000..d8c6de9
Binary files /dev/null and b/public/images/le-hoi/doan-ruoc-bo-lao.jpg differ
diff --git a/public/images/le-hoi/kieu-long-vang.jpg b/public/images/le-hoi/kieu-long-vang.jpg
new file mode 100644
index 0000000..8919c2d
Binary files /dev/null and b/public/images/le-hoi/kieu-long-vang.jpg differ
diff --git a/public/images/le-hoi/le-cau-an-ban-dem.jpg b/public/images/le-hoi/le-cau-an-ban-dem.jpg
new file mode 100644
index 0000000..9f8c916
Binary files /dev/null and b/public/images/le-hoi/le-cau-an-ban-dem.jpg differ
diff --git a/public/images/le-hoi/mua-rong-cong-chua.jpg b/public/images/le-hoi/mua-rong-cong-chua.jpg
new file mode 100644
index 0000000..7e9f19f
Binary files /dev/null and b/public/images/le-hoi/mua-rong-cong-chua.jpg differ
diff --git a/public/images/le-hoi/nghi-thuc-san-chua.jpg b/public/images/le-hoi/nghi-thuc-san-chua.jpg
new file mode 100644
index 0000000..d161791
Binary files /dev/null and b/public/images/le-hoi/nghi-thuc-san-chua.jpg differ
diff --git a/public/images/le-hoi/ruoc-kieu.jpg b/public/images/le-hoi/ruoc-kieu.jpg
new file mode 100644
index 0000000..8f7647d
Binary files /dev/null and b/public/images/le-hoi/ruoc-kieu.jpg differ
diff --git a/public/images/le-hoi/san-chua-tu-tren-cao.jpg b/public/images/le-hoi/san-chua-tu-tren-cao.jpg
new file mode 100644
index 0000000..f1727b3
Binary files /dev/null and b/public/images/le-hoi/san-chua-tu-tren-cao.jpg differ
diff --git a/public/images/le-hoi/toan-canh-le-hoi.jpg b/public/images/le-hoi/toan-canh-le-hoi.jpg
new file mode 100644
index 0000000..67fc6a9
Binary files /dev/null and b/public/images/le-hoi/toan-canh-le-hoi.jpg differ
diff --git a/public/images/le-hoi/tru-tri-le-hoi.jpg b/public/images/le-hoi/tru-tri-le-hoi.jpg
new file mode 100644
index 0000000..eb6f76e
Binary files /dev/null and b/public/images/le-hoi/tru-tri-le-hoi.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 1.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 1.jpg
new file mode 100644
index 0000000..1a9933a
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 1.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 2.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 2.jpg
new file mode 100644
index 0000000..ff3f048
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 2.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 3.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 3.jpg
new file mode 100644
index 0000000..cb60620
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 3.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 4.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 4.jpg
new file mode 100644
index 0000000..813218c
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 4.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 5.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 5.jpg
new file mode 100644
index 0000000..d7b383b
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội 5.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội trước cổng chùa.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội trước cổng chùa.jpg
new file mode 100644
index 0000000..45dcde1
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội trước cổng chùa.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội.jpg
new file mode 100644
index 0000000..ed54ee1
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh lễ hội.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh nghi lễ rước kiệu.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh nghi lễ rước kiệu.jpg
new file mode 100644
index 0000000..4d4e91a
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh nghi lễ rước kiệu.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh người dân và phật tử tham gia lễ chùa.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh người dân và phật tử tham gia lễ chùa.jpg
new file mode 100644
index 0000000..4909021
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh người dân và phật tử tham gia lễ chùa.jpg differ
diff --git a/public/images/pháp-vân(chùa thái lạc)/ảnh thày trụ trì tham gia lễ hội.jpg b/public/images/pháp-vân(chùa thái lạc)/ảnh thày trụ trì tham gia lễ hội.jpg
new file mode 100644
index 0000000..84958a5
Binary files /dev/null and b/public/images/pháp-vân(chùa thái lạc)/ảnh thày trụ trì tham gia lễ hội.jpg differ
diff --git a/src/app/co-vat/page.tsx b/src/app/co-vat/page.tsx
index 1635669..0449f83 100644
--- a/src/app/co-vat/page.tsx
+++ b/src/app/co-vat/page.tsx
@@ -5,7 +5,7 @@ import AntiquityShowcaseClient from "./AntiquityShowcaseClient";
import { BackToTopButton } from "@/app/components/landing/BackToTopButton";
import { SiteFooter } from "@/app/components/landing/SiteFooter";
import { SiteHeader } from "@/app/components/landing/SiteHeader";
-import { activeTour, antiquities } from "@/app/content";
+import { antiquities, subpageHero } from "@/app/content";
export const metadata: Metadata = {
title: "Cổ vật 3D | VR360 Như Quỳnh",
@@ -25,7 +25,7 @@ export default function AntiquityPage() {
-
+
Phòng trưng bày số
diff --git a/src/app/components/landing/FestivalGallery.tsx b/src/app/components/landing/FestivalGallery.tsx
new file mode 100644
index 0000000..7a52bb0
--- /dev/null
+++ b/src/app/components/landing/FestivalGallery.tsx
@@ -0,0 +1,48 @@
+import Image from "next/image";
+import { festivalGallery } from "@/app/content";
+
+// Gallery "Khoảnh khắc lễ hội" — bố cục bento: dưới lg là lưới 2 cột đều, từ lg dùng
+// grid-auto-flow dense với vài ô lớn/cao để tạo nhịp điệu biên tập, tránh kiểu 3 thẻ đều.
+export function FestivalGallery() {
+ return (
+
+
+
Khoảnh khắc lễ hội
+
+ Sắc màu hội làng bên ngôi chùa cổ
+
+
+ Những khoảnh khắc thật của lễ hội truyền thống tại Chùa Pháp Vân (Thái Lạc) — đám rước, múa rồng,
+ nghi thức tế lễ và đêm cầu an bên ngôi chùa cổ.
+
+
+
+
+ {festivalGallery.map((photo) => (
+
+
+
+
+
+ {photo.title}
+
+
{photo.note}
+
+
+ ))}
+
+
+ );
+}
diff --git a/src/app/content.ts b/src/app/content.ts
index d9a6e66..1860e1a 100644
--- a/src/app/content.ts
+++ b/src/app/content.ts
@@ -21,7 +21,10 @@ export const activeTour = {
title: "Chùa Thái Lạc (Pháp Vân tự)",
subtitle: "Di tích quốc gia, chạm khắc gỗ thời Trần",
href: "/tour/chua-thai-lac",
- heroImage: img("01.jpg"), // Chính diện cổng chùa
+ // Ảnh nền hero (CSS background) — toàn cảnh lễ hội múa rồng, ảnh thật của di tích.
+ heroImage: "/images/le-hoi/toan-canh-le-hoi.jpg",
+ // Ảnh lớn bên phải hero — nghi lễ rước kiệu (qua next/image).
+ heroFeatureImage: "/images/le-hoi/ruoc-kieu.jpg",
coverImage: img("08.jpg"), // Chính sảnh
gateImage: img("01.jpg"), // Chính diện cổng chùa
shrineImage: img("11.jpg"), // Chính điện
@@ -49,7 +52,7 @@ export const festivalVideo = {
kicker: "Lễ hội & văn hóa",
title: "Lễ hội cầu mưa Lạc Hồng – Văn Lâm",
src: "/video/le-hoi-cau-mua-lac-hong-van-lam.mp4",
- poster: img("10.jpg"), // Đài lộ thiên giữa sân chùa — không gian nghi lễ ngoài trời
+ poster: "/images/le-hoi/san-chua-tu-tren-cao.jpg", // Ảnh thật sân chùa ngày hội
heading: "Lễ hội cầu mưa — nhịp sống tín ngưỡng Tứ Pháp",
description: [
"Lễ hội cầu mưa ở Lạc Hồng (Văn Lâm, Hưng Yên) là sinh hoạt tín ngưỡng lâu đời của cư dân nông nghiệp đồng bằng Bắc Bộ, gắn với hệ Tứ Pháp — Pháp Vân, Pháp Vũ, Pháp Lôi, Pháp Điện — cầu cho mưa thuận gió hòa, mùa màng tươi tốt.",
@@ -59,6 +62,95 @@ export const festivalVideo = {
ctaHref: "/tour/chua-thai-lac",
} as const;
+// Ảnh lễ hội thật của Chùa Pháp Vân (Thái Lạc) — Quang Trung, Lạc Hồng, Văn Lâm, Hưng Yên.
+// Đặt tại public/images/le-hoi/ với tên ASCII đã tối ưu (resize + nén) để an toàn khi triển khai.
+const leHoi = (file: string) => `/images/le-hoi/${file}`;
+
+export type FestivalPhoto = {
+ src: string;
+ title: string;
+ note: string;
+ alt: string;
+ // Lớp span Tailwind cho bố cục bento ở breakpoint lg (dưới lg là lưới 2 cột đều).
+ span?: string;
+};
+
+// Bộ ảnh "Khoảnh khắc lễ hội" — bố cục bento ở trang chủ. Ô đầu (đêm cầu an) làm ô chủ đạo.
+export const festivalGallery: FestivalPhoto[] = [
+ {
+ src: leHoi("le-cau-an-ban-dem.jpg"),
+ title: "Lễ cầu an",
+ note: "Phật tử dâng đèn hoa sen trong đêm hội",
+ alt: "Phật tử áo tràng chắp tay bên đèn hoa sen trong lễ cầu an ban đêm tại Chùa Pháp Vân",
+ span: "lg:col-span-2 lg:row-span-2",
+ },
+ {
+ src: leHoi("toan-canh-le-hoi.jpg"),
+ title: "Toàn cảnh đám rước",
+ note: "Múa rồng và đoàn rước rợp sắc cờ",
+ alt: "Toàn cảnh đám rước lễ hội với hai đoàn múa rồng vàng giữa hàng cây",
+ span: "lg:col-span-2",
+ },
+ {
+ src: leHoi("ruoc-kieu.jpg"),
+ title: "Rước kiệu thánh",
+ note: "Kiệu sơn son thếp vàng giữa sân lễ",
+ alt: "Kiệu thánh sơn son thếp vàng được trai làng khiêng trong đám rước",
+ },
+ {
+ src: leHoi("doan-khieng-kieu.jpg"),
+ title: "Trai làng rước kiệu",
+ note: "Khí thế đoàn rước qua đường làng",
+ alt: "Đoàn trai làng cởi trần thắt đai đỏ vàng khiêng kiệu thánh qua đường làng",
+ span: "lg:row-span-2",
+ },
+ {
+ src: leHoi("mua-rong-cong-chua.jpg"),
+ title: "Múa rồng trước Tam quan",
+ note: "Sắc áo dài rực rỡ hai bên lối vào",
+ alt: "Màn múa rồng trước Tam quan chùa với hàng người mặc áo dài cầm quạt hai bên",
+ },
+ {
+ src: leHoi("nghi-thuc-san-chua.jpg"),
+ title: "Nghi thức tế lễ",
+ note: "Đội tế xếp hàng giữa sân chùa",
+ alt: "Đội tế xếp hàng làm nghi thức giữa sân gạch chùa rợp cờ Phật giáo nhìn từ trên cao",
+ span: "lg:col-span-2",
+ },
+ {
+ src: leHoi("kieu-long-vang.jpg"),
+ title: "Kiệu dưới tán lọng",
+ note: "Lọng vàng che kiệu trong đám rước",
+ alt: "Kiệu thánh dưới tán lọng vàng giữa dòng người trẩy hội",
+ },
+ {
+ src: leHoi("san-chua-tu-tren-cao.jpg"),
+ title: "Sân chùa ngày hội",
+ note: "Rợp lọng vàng nhìn từ trên cao",
+ alt: "Sân chùa ngày hội rợp lọng vàng và dòng người nhìn từ trên cao",
+ },
+ {
+ src: leHoi("doan-ruoc-bo-lao.jpg"),
+ title: "Đoàn rước bô lão",
+ note: "Các cụ trong trang phục tế truyền thống",
+ alt: "Đoàn các cụ bô lão mặc áo tế truyền thống cầm gậy đi trong đám rước",
+ },
+ {
+ src: leHoi("tru-tri-le-hoi.jpg"),
+ title: "Sư trụ trì chủ lễ",
+ note: "Chủ lễ giữa đoàn rước long trọng",
+ alt: "Sư trụ trì khoác áo cà sa vàng đi giữa hai hàng người cầm lọng và cờ lễ",
+ },
+];
+
+// Ảnh phần đầu (hero) của các trang con — dùng ảnh lễ hội thật thay cho ảnh panorama bị méo.
+export const subpageHero = {
+ gioiThieu: leHoi("mua-rong-cong-chua.jpg"),
+ diTich: leHoi("nghi-thuc-san-chua.jpg"),
+ diTichFeature: leHoi("kieu-long-vang.jpg"),
+ coVat: leHoi("tru-tri-le-hoi.jpg"),
+} as const;
+
export const navigation = [
{ href: "/", label: "Trang chủ" },
{ href: "/gioi-thieu", label: "Giới thiệu" },
diff --git a/src/app/di-tich/page.tsx b/src/app/di-tich/page.tsx
index 93c8db3..d1a9da8 100644
--- a/src/app/di-tich/page.tsx
+++ b/src/app/di-tich/page.tsx
@@ -6,7 +6,7 @@ import { BackToTopButton } from "@/app/components/landing/BackToTopButton";
import { CulturalSpaceExplorer } from "@/app/components/landing/CulturalSpaceExplorer";
import { SiteFooter } from "@/app/components/landing/SiteFooter";
import { SiteHeader } from "@/app/components/landing/SiteHeader";
-import { activeTour, heritageSites } from "@/app/content";
+import { heritageSites, subpageHero } from "@/app/content";
export const metadata: Metadata = {
title: "Di tích | VR360 Như Quỳnh",
@@ -21,7 +21,7 @@ export default function HeritageListPage() {
-
+
Giới thiệu
diff --git a/src/app/page.tsx b/src/app/page.tsx
index ecc8c02..c7ed7f3 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -3,6 +3,7 @@ import Image from "next/image";
import Link from "next/link";
import { ArrowRight, Box, Globe2, Landmark, PlayCircle, Rotate3d, School, Sparkles } from "lucide-react";
import { BackToTopButton } from "@/app/components/landing/BackToTopButton";
+import { FestivalGallery } from "@/app/components/landing/FestivalGallery";
import { FestivalVideo } from "@/app/components/landing/FestivalVideo";
import { HeritageMarquee } from "@/app/components/landing/HeritageMarquee";
import { SiteFooter } from "@/app/components/landing/SiteFooter";
@@ -84,8 +85,8 @@ export default function Home() {
+ {/* Khoảnh khắc lễ hội — gallery bento ảnh thật, nối tiếp mạch "Lễ hội & văn hóa" */}
+
+