사이트 인터랙티브 워크스테이션 확장 + 감사 폴리시 재적용 + 원클릭 릴리스 도구 — 병행 세션 확장분(히어로 3탭 워크스테이션 시뮬레이터, 비교 섹션(기존 방식 vs MEDIABROWSER), 가이드 단축키 섹션(kbd), 스포트라이트 카드, build/release.ps1 원클릭 릴리스(-Publish/-DeploySite), build-remote.ps1 PowerShell 원격 빌드, upload-release-asset.ps1 로컬 실행 지원(.env 자동 로드·-Publish 승격·-Repo), fetch-releases.mjs 인증·폴백)을 수용하고, 덮여 사라진 감사 폴리시를 새 베이스에 재적용: 타이틀 em대시 제거+OG 메타(index/guide), 아이브로우 6→1(장식 점 제거), 히어로 2줄 헤드라인·20단어 서브·CTA 라벨 단일화·신뢰 스트립 제거, 파이프라인 3분리 카드→단일 머신드 레일 재구성, 과장 카피 완화(100%·1초·초고속·완벽), 시뮬레이터 예시 캡션, skip-link·focus-visible·hero__grid min-width:0(모바일 오버플로) 재적용 — 데스크톱/모바일 검증(scrollWidth 375==375, 아이브로우 1, 레일·캡션·탭 3종 확인), deploy-site.ps1 로 재배포 완료
This commit is contained in:
parent
9c9d9cb024
commit
f13914534a
11 changed files with 976 additions and 246 deletions
53
site/site.js
53
site/site.js
|
|
@ -1,8 +1,9 @@
|
|||
// MEDIABROWSER Official Site Script
|
||||
// 1) IntersectionObserver Scroll Reveal
|
||||
// 2) Mobile Navigation Menu Controller
|
||||
// 3) Hero UI Simulator Micro-Interactions
|
||||
// 4) Dynamic Releases Renderer (releases.json)
|
||||
// 3) Interactive Hero Workstation Simulator (Multi-Tab Switcher & Live Telemetry)
|
||||
// 4) Spotlight Card Cursor Light Tracker
|
||||
// 5) Dynamic Releases Renderer (releases.json)
|
||||
|
||||
// ── 1. Scroll Reveal Controller ──────────────────────────────
|
||||
(function initReveal() {
|
||||
|
|
@ -47,8 +48,29 @@
|
|||
});
|
||||
})();
|
||||
|
||||
// ── 3. Hero UI Simulator Micro-Animation ─────────────────────
|
||||
(function initHeroSimulator() {
|
||||
// ── 3. Interactive Hero Workstation Simulator ────────────────
|
||||
(function initHeroWorkstation() {
|
||||
// Tab switcher
|
||||
const tabBtns = document.querySelectorAll(".sim-tab-btn");
|
||||
const tabPanels = document.querySelectorAll(".sim-tab-panel");
|
||||
|
||||
tabBtns.forEach((btn) => {
|
||||
btn.addEventListener("click", () => {
|
||||
const targetId = btn.getAttribute("data-tab");
|
||||
tabBtns.forEach((b) => {
|
||||
b.classList.remove("is-active");
|
||||
b.setAttribute("aria-selected", "false");
|
||||
});
|
||||
tabPanels.forEach((p) => p.classList.remove("is-active"));
|
||||
|
||||
btn.classList.add("is-active");
|
||||
btn.setAttribute("aria-selected", "true");
|
||||
const targetPanel = document.getElementById(targetId);
|
||||
if (targetPanel) targetPanel.classList.add("is-active");
|
||||
});
|
||||
});
|
||||
|
||||
// Live Progress & Telemetry simulation
|
||||
const progressEl = document.getElementById("sim-progress");
|
||||
const percentEl = document.getElementById("sim-percent");
|
||||
const speedEl = document.getElementById("sim-speed");
|
||||
|
|
@ -77,7 +99,24 @@
|
|||
}, 1200);
|
||||
})();
|
||||
|
||||
// ── 4. Releases Renderer ─────────────────────────────────────
|
||||
// ── 4. Spotlight Card Cursor Light Tracker ───────────────────
|
||||
(function initSpotlight() {
|
||||
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
|
||||
const cards = document.querySelectorAll(".spotlight-card");
|
||||
if (!cards.length) return;
|
||||
|
||||
cards.forEach((card) => {
|
||||
card.addEventListener("mousemove", (e) => {
|
||||
const rect = card.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left;
|
||||
const y = e.clientY - rect.top;
|
||||
card.style.setProperty("--mouse-x", `${x}px`);
|
||||
card.style.setProperty("--mouse-y", `${y}px`);
|
||||
});
|
||||
});
|
||||
})();
|
||||
|
||||
// ── 5. Releases Renderer ─────────────────────────────────────
|
||||
const PLATFORMS = [
|
||||
{ id: "windows", label: "Windows", icon: "windows-logo", sub: "x64 및 ARM64 네이티브 설치자 (exe)",
|
||||
match: (n) => /setup.*\.exe$/i.test(n) || /win/i.test(n) },
|
||||
|
|
@ -165,9 +204,9 @@ function releaseCard(r, featured) {
|
|||
${groupsHtml(r.assets)}`;
|
||||
|
||||
if (featured) {
|
||||
return `<article class="bezel-shell"><div class="bezel-inner rel-featured">${meta}</div></article>`;
|
||||
return `<article class="bezel-shell spotlight-card"><div class="bezel-inner rel-featured">${meta}</div></article>`;
|
||||
}
|
||||
return `<div class="bezel-shell"><div class="bezel-inner"><details>
|
||||
return `<div class="bezel-shell spotlight-card"><div class="bezel-inner"><details>
|
||||
<summary>
|
||||
<span class="rel-featured__tag" style="font-size:1.15rem">${esc(r.name || r.tag)}</span>
|
||||
${pill}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue