+ {/* ── Preset Banner ── */}
+
+
+
+
+ VDO Frame-by-Frame Interactive Scrubber
+
+
+ แสดงผลวิดีโอแบบ Frame Sequence ควบคุมเฟรมตามการเลื่อนหน้าเว็บ (Scroll) และการลาก (Drag Scrub)
+
+
+
+
+
+
+ {/* ── Sequence Collection Selector (Isolated Library) ── */}
+
+
+
+
+ ชุดวิดีโอเฟรมที่เลือกใช้งาน (Frame Sequence Collection)
+
+
+
+
+
+ {/* Selected Sequence Card */}
+
+
+
+

{
+ // Fallback if not yet loaded
+ (e.target as HTMLImageElement).src = '/images/3d/sprocket-detail.png'
+ }}
+ />
+
+
+
+
+
+ {folderPath.split('/').pop()?.replace(/[-_]/g, ' ').toUpperCase() || 'FRAME SEQUENCE'}
+
+
+ พร้อมใช้งาน
+
+
+
+ {totalFrames} FRAMES
+ •
+ {fps} FPS
+ •
+ {durationSeconds} วินาที
+
+
+ โฟลเดอร์: {folderPath} (รูปแบบ: {pattern})
+
+
+
+
+
+
+
+
+ {/* ── 1-Click Product Linking ── */}
+
+
+
+
+
ผูกกับสินค้าในระบบ (1-Click Bind Product)
+
+ {selectedProductId && (
+
+ Product ID: #{selectedProductId}
+
+ )}
+
+
+
+
+
+
+
+
+
updatePayloadValue('endCtaLink', e.target.value)}
+ placeholder="ลิงก์ปลายทางเมื่อกดสั่งซื้อ เช่น /products/chain-sprocket-p1"
+ className="admin-input flex-1 text-xs"
+ />
+ {endCtaLink && (
+
+
+
+ )}
+
+
+
+
+ {/* ── Headline & Header Texts ── */}
+
+
+ ข้อความหัวเรื่อง (Header & Story Intro)
+
+
+
+
+
+
+ updatePayloadValue('title', e.target.value)}
+ className="admin-input w-full text-xs"
+ placeholder="หนึ่งวิดีโอ หมุนดูได้ทีละเฟรม"
+ />
+
+
+
+
+
+
+
+ {/* ── Theme, Accent, and Conversion CTA ── */}
+
+
+
+
+
+
+
+
+
+
+ updatePayloadValue('endCtaTitle', e.target.value)}
+ className="admin-input w-full text-xs"
+ placeholder="ทุกมุม อยู่ในมือคุณ"
+ />
+
+
+
+
+ updatePayloadValue('endCtaButtonText', e.target.value)}
+ className="admin-input w-full text-xs"
+ placeholder="สั่งซื้อสินค้าตอนนี้"
+ />
+
+
+
+ {/* Modal for Frame Sequence Collection */}
+
setIsModalOpen(false)}
+ onSelectSequence={handleSequenceSelected}
+ selectedSlug={folderPath.split('/').pop()}
+ />
+
+ )
+}
diff --git a/apps/admin/src/pages/PageBuilderPage.tsx b/apps/admin/src/pages/PageBuilderPage.tsx
index 64e965a..b193616 100644
--- a/apps/admin/src/pages/PageBuilderPage.tsx
+++ b/apps/admin/src/pages/PageBuilderPage.tsx
@@ -34,6 +34,7 @@ import { getAuthHeaders } from '../utils/auth';
import CinematicStoryScrollForm from '../components/page-builder/CinematicStoryScrollForm';
import AppleShowcaseForm from '../components/page-builder/AppleShowcaseForm';
import Interactive360ShowcaseForm from '../components/page-builder/Interactive360ShowcaseForm';
+import VdoFrameScrubberForm from '../components/page-builder/VdoFrameScrubberForm';
import HeroForm from '../components/page-builder/HeroForm';
import AnnouncementBarForm from '../components/page-builder/AnnouncementBarForm';
import NewsletterForm from '../components/page-builder/NewsletterForm';
@@ -1470,6 +1471,7 @@ export default function PageBuilderPage() {
onChange={(e) => handleTypeChange(e.target.value)}
className="admin-input w-full bg-slate-900 border-white/10"
>
+