From 1d49929ed3d19fea2c97c40bb7157ab46033c6b0 Mon Sep 17 00:00:00 2001 From: Matt Batchelder Date: Sat, 21 Feb 2026 12:07:06 -0500 Subject: [PATCH 01/87] Reverse scale transformation for animation effects in the ts-stick component --- theme/assets/css/main.css | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/theme/assets/css/main.css b/theme/assets/css/main.css index 187ea43..f957245 100644 --- a/theme/assets/css/main.css +++ b/theme/assets/css/main.css @@ -2529,7 +2529,7 @@ p:last-child { margin-bottom: 0; } position: absolute; right: -20px; top: 50%; - transform: translateY(-50%) translateX(80px); + transform: translateY(-50%) translateX(80px) scaleX(-1); display: flex; align-items: center; opacity: 0; @@ -2598,11 +2598,11 @@ p:last-child { margin-bottom: 0; } animation: ts-slide-in 1.4s cubic-bezier(0.22, 0.61, 0.36, 1) forwards; } @keyframes ts-slide-in { - 0% { opacity: 0; transform: translateY(-50%) translateX(80px); } - 20% { opacity: 1; transform: translateY(-50%) translateX(60px); } - 70% { transform: translateY(-50%) translateX(8px); } - 85% { transform: translateY(-50%) translateX(12px); } - 100% { opacity: 1; transform: translateY(-50%) translateX(6px); } + 0% { opacity: 0; transform: translateY(-50%) translateX(80px) scaleX(-1); } + 20% { opacity: 1; transform: translateY(-50%) translateX(60px) scaleX(-1); } + 70% { transform: translateY(-50%) translateX(8px) scaleX(-1); } + 85% { transform: translateY(-50%) translateX(12px) scaleX(-1); } + 100% { opacity: 1; transform: translateY(-50%) translateX(6px) scaleX(-1); } } /* Responsive scale-down */ @media (max-width: 900px) { @@ -2621,7 +2621,7 @@ p:last-child { margin-bottom: 0; } @media (prefers-reduced-motion: reduce) { .ts-stage .ts-stick { opacity: 1; - transform: translateY(-50%) translateX(6px); + transform: translateY(-50%) translateX(6px) scaleX(-1); } .ts-stage.is-animating .ts-stick { animation: none; } .ts-stage.is-plugged .ts-tv__screen { animation: none; } From ef0532ef9b9febe7ae9df3294bcf731c1a04aee8 Mon Sep 17 00:00:00 2001 From: Matt Batchelder Date: Sat, 21 Feb 2026 12:13:10 -0500 Subject: [PATCH 02/87] Add promotional slides with animations to TV stick component --- theme/assets/css/main.css | 91 +++++++++++++++++++++++++++++++++++++++ theme/assets/js/main.js | 18 ++++++++ theme/blocks/index.php | 8 +++- 3 files changed, 116 insertions(+), 1 deletion(-) diff --git a/theme/assets/css/main.css b/theme/assets/css/main.css index f957245..4f8da2f 100644 --- a/theme/assets/css/main.css +++ b/theme/assets/css/main.css @@ -2487,6 +2487,97 @@ p:last-child { margin-bottom: 0; } 40% { filter: brightness(1.25); } 100% { filter: brightness(1); } } +/* ── Promotional slides inside screen ── */ +.ts-slides { + position: absolute; + inset: 0; + opacity: 0; + transition: opacity 0.6s ease; + z-index: 1; +} +.ts-stage.is-playing .ts-slides { opacity: 1; } +.ts-slide { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 12%; + opacity: 0; + transition: opacity 0.7s ease; +} +.ts-slide.is-active { opacity: 1; } +/* — Slide 1: Welcome / hero style — */ +.ts-slide--1 { + background: linear-gradient(135deg, #1a2940 0%, #0f1923 100%); +} +.ts-slide--1 .ts-slide__accent { + width: 30px; + height: 3px; + background: #4ade80; + border-radius: 2px; + margin-bottom: 8px; +} +.ts-slide--1 .ts-slide__heading { + width: 70%; + height: 8px; + background: rgba(255,255,255,0.85); + border-radius: 2px; + margin-bottom: 6px; +} +.ts-slide--1 .ts-slide__sub { + width: 50%; + height: 5px; + background: rgba(255,255,255,0.35); + border-radius: 2px; +} +/* — Slide 2: Sale / promo style — */ +.ts-slide--2 { + background: linear-gradient(135deg, #14532d 0%, #052e16 100%); +} +.ts-slide--2 .ts-slide__badge { + width: 22px; + height: 22px; + background: #4ade80; + border-radius: 50%; + margin-bottom: 8px; +} +.ts-slide--2 .ts-slide__heading { + width: 60%; + height: 7px; + background: rgba(255,255,255,0.9); + border-radius: 2px; + margin-bottom: 6px; +} +.ts-slide--2 .ts-slide__bar { + width: 45%; + height: 12px; + background: #4ade80; + border-radius: 3px; +} +/* — Slide 3: Menu / info-board style — */ +.ts-slide--3 { + background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); +} +.ts-slide--3 .ts-slide__row { + display: flex; + gap: 8px; + margin-bottom: 8px; +} +.ts-slide--3 .ts-slide__block { + width: 36px; + height: 28px; + background: rgba(255,255,255,0.12); + border-radius: 3px; + border: 1px solid rgba(74,222,128,0.25); +} +.ts-slide--3 .ts-slide__heading { + width: 55%; + height: 5px; + background: rgba(255,255,255,0.45); + border-radius: 2px; +} /* HDMI port on back-right of TV */ .ts-tv__port { position: absolute; diff --git a/theme/assets/js/main.js b/theme/assets/js/main.js index 91b6773..4192758 100644 --- a/theme/assets/js/main.js +++ b/theme/assets/js/main.js @@ -685,6 +685,7 @@ document.addEventListener('DOMContentLoaded', () => { if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { stages.forEach(function (stage) { stage.classList.add('is-plugged'); + startTsSlides(stage); }); return; } @@ -698,6 +699,10 @@ document.addEventListener('DOMContentLoaded', () => { // Add plugged state after slide-in completes (1.4s) setTimeout(function () { stage.classList.add('is-plugged'); + // Start promotional slide cycling after screen glow (0.9s) + setTimeout(function () { + startTsSlides(stage); + }, 900); }, 1400); io.unobserve(stage); } @@ -705,4 +710,17 @@ document.addEventListener('DOMContentLoaded', () => { }, { threshold: 0.3 }); stages.forEach(function (stage) { io.observe(stage); }); } + + function startTsSlides(stage) { + var slides = stage.querySelectorAll('.ts-slide'); + if (!slides.length) return; + var current = 0; + slides[0].classList.add('is-active'); + stage.classList.add('is-playing'); + setInterval(function () { + slides[current].classList.remove('is-active'); + current = (current + 1) % slides.length; + slides[current].classList.add('is-active'); + }, 3000); + } })(); diff --git a/theme/blocks/index.php b/theme/blocks/index.php index f9c2be4..7652c77 100644 --- a/theme/blocks/index.php +++ b/theme/blocks/index.php @@ -1504,7 +1504,13 @@ function oribi_render_platform_row( $a ) { $ts = '