mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-02 12:08:50 +00:00
This reverts commit 3b53bfd2f7.
This commit is contained in:
@@ -3,13 +3,13 @@ title: "Specs Checklist"
|
||||
description: "Left-aligned specs/traits checklist over footage or a board: rows slide in staggered with an accent underline sweep; light and dark schemes"
|
||||
---
|
||||
|
||||
import { InstallCommand } from "/snippets/install-command.jsx";
|
||||
|
||||
<iframe src="/public/catalog/preview/blocks/mk-specs-list.html" className="w-full aspect-video rounded-xl border border-zinc-200 dark:border-zinc-800" loading="lazy" title="Specs Checklist preview" />
|
||||
<video className="w-full aspect-video rounded-xl object-cover bg-zinc-100 dark:bg-zinc-800" src="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/mk-specs-list.mp4" poster="https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/mk-specs-list.png" autoPlay muted loop playsInline />
|
||||
|
||||
## Install
|
||||
|
||||
<InstallCommand command="npx hyperframes add mk-specs-list" />
|
||||
```bash Terminal
|
||||
npx hyperframes add mk-specs-list
|
||||
```
|
||||
|
||||
That writes one file: `compositions/mk-specs-list.html`.
|
||||
|
||||
@@ -32,237 +32,6 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
|
||||
Move it in time with `data-start`. Put it on a different timeline row with
|
||||
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
|
||||
|
||||
## Source
|
||||
|
||||
<Accordion title={`mk-specs-list.html`}>
|
||||
|
||||
```html
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
||||
<style>
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body {
|
||||
background: transparent;
|
||||
overflow: hidden;
|
||||
}
|
||||
#mk-sl-root {
|
||||
/* ---- mk tokens: override in the host to re-skin the family ---- */
|
||||
--mk-font: "Inter", -apple-system, sans-serif;
|
||||
--mk-ink: #1d1d1f;
|
||||
--mk-ink-dim: #6e6e73;
|
||||
--mk-ink-dark: #f5f5f7;
|
||||
--mk-ink-dim-dark: #a1a1a6;
|
||||
--mk-accent: #0071e3;
|
||||
--mk-accent-dark: #7d5cff;
|
||||
--mk-hairline: 2px;
|
||||
|
||||
position: relative;
|
||||
width: 1920px;
|
||||
height: 1080px;
|
||||
overflow: hidden;
|
||||
background: transparent; /* overlays footage or mk-background */
|
||||
}
|
||||
#mk-sl-scrim {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(90deg, rgba(0, 0, 0, 0.55) 0%, rgba(0, 0, 0, 0) 62%);
|
||||
opacity: 0;
|
||||
}
|
||||
#mk-sl-col {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.mk-sl-row {
|
||||
font-family: var(--mk-font);
|
||||
line-height: 1;
|
||||
opacity: 0;
|
||||
}
|
||||
.mk-sl-text {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 18px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.mk-sl-label {
|
||||
font-weight: 600;
|
||||
font-size: 46px;
|
||||
letter-spacing: -0.015em;
|
||||
color: var(--mk-ink);
|
||||
}
|
||||
.mk-sl-value {
|
||||
font-weight: 400;
|
||||
font-size: 40px;
|
||||
letter-spacing: -0.01em;
|
||||
color: var(--mk-ink-dim);
|
||||
}
|
||||
.mk-sl-line {
|
||||
position: relative;
|
||||
margin-top: 22px;
|
||||
height: var(--mk-hairline);
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-radius: 2px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.mk-sl-line-fill {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: var(--mk-accent);
|
||||
transform-origin: left center;
|
||||
}
|
||||
/* dark scheme: white rows for use over footage (overlay look) */
|
||||
.mk-dark .mk-sl-label {
|
||||
color: var(--mk-ink-dark);
|
||||
}
|
||||
.mk-dark .mk-sl-value {
|
||||
color: var(--mk-ink-dim-dark);
|
||||
}
|
||||
.mk-dark .mk-sl-line {
|
||||
background: rgba(255, 255, 255, 0.18);
|
||||
}
|
||||
.mk-dark .mk-sl-line-fill {
|
||||
background: var(--mk-accent-dark);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div
|
||||
id="mk-sl-root"
|
||||
data-composition-id="mk-specs-list"
|
||||
data-start="0"
|
||||
data-duration="8"
|
||||
data-width="1920"
|
||||
data-height="1080"
|
||||
>
|
||||
<div id="mk-sl-scrim"></div>
|
||||
<div id="mk-sl-col"></div>
|
||||
<div
|
||||
id="mk-sl-drv"
|
||||
class="clip"
|
||||
data-start="0"
|
||||
data-duration="8"
|
||||
data-track-index="0"
|
||||
style="position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none"
|
||||
></div>
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
window.__timelines = window.__timelines || {};
|
||||
|
||||
/* ---- published parameters (inspector-style CONFIG) ---- */
|
||||
var CONFIG = {
|
||||
scheme: "light", // "light" (ink rows) | "dark" (white rows, for footage)
|
||||
rows: [
|
||||
{ label: "Design", value: "Minimal, clean lines" },
|
||||
{ label: "Typography", value: "Inter SemiBold" },
|
||||
{ label: "Motion", value: "Restrained, no bounce" },
|
||||
{ label: "Color", value: "Stage + one accent" },
|
||||
{ label: "Shapes", value: "Capsules & rounded cards" },
|
||||
],
|
||||
underline: true, // accent sweep under each row
|
||||
lineWidth: 660, // px
|
||||
scrim: 0, // 0–1 left-edge dark scrim for readability over footage
|
||||
x: 160, // column left edge
|
||||
rowGap: 44, // px between rows
|
||||
stagger: 0.18, // s between row entrances
|
||||
animationIn: true,
|
||||
animationOut: true,
|
||||
};
|
||||
|
||||
var DUR = 8;
|
||||
var root = document.getElementById("mk-sl-root");
|
||||
var col = document.getElementById("mk-sl-col");
|
||||
var scrim = document.getElementById("mk-sl-scrim");
|
||||
|
||||
if (CONFIG.scheme === "dark") root.classList.add("mk-dark");
|
||||
scrim.style.opacity = String(CONFIG.scrim);
|
||||
|
||||
/* build rows */
|
||||
CONFIG.rows.forEach(function (r, i) {
|
||||
var row = document.createElement("div");
|
||||
row.id = "mk-sl-row-" + i;
|
||||
row.className = "mk-sl-row";
|
||||
if (i > 0) row.style.marginTop = CONFIG.rowGap + "px";
|
||||
|
||||
var text = document.createElement("div");
|
||||
text.className = "mk-sl-text";
|
||||
var label = document.createElement("span");
|
||||
label.className = "mk-sl-label";
|
||||
label.textContent = r.label;
|
||||
text.appendChild(label);
|
||||
if (r.value) {
|
||||
var value = document.createElement("span");
|
||||
value.className = "mk-sl-value";
|
||||
value.textContent = r.value;
|
||||
text.appendChild(value);
|
||||
}
|
||||
row.appendChild(text);
|
||||
|
||||
if (CONFIG.underline) {
|
||||
var line = document.createElement("div");
|
||||
line.className = "mk-sl-line";
|
||||
line.style.width = CONFIG.lineWidth + "px";
|
||||
var fill = document.createElement("div");
|
||||
fill.id = "mk-sl-fill-" + i;
|
||||
fill.className = "mk-sl-line-fill";
|
||||
line.appendChild(fill);
|
||||
row.appendChild(line);
|
||||
}
|
||||
col.appendChild(row);
|
||||
});
|
||||
|
||||
/* center the column vertically */
|
||||
var colH =
|
||||
CONFIG.rows.length * (46 + 22 + (CONFIG.underline ? 2 : 0)) +
|
||||
(CONFIG.rows.length - 1) * CONFIG.rowGap;
|
||||
col.style.left = CONFIG.x + "px";
|
||||
col.style.top = Math.round((1080 - colH) / 2) + "px";
|
||||
|
||||
var tl = gsap.timeline({ paused: true });
|
||||
|
||||
CONFIG.rows.forEach(function (r, i) {
|
||||
var row = document.getElementById("mk-sl-row-" + i);
|
||||
var t0 = (CONFIG.animationIn ? 0.3 : 0) + i * CONFIG.stagger;
|
||||
|
||||
if (CONFIG.animationIn) {
|
||||
gsap.set(row, { opacity: 0, x: -36 });
|
||||
tl.to(row, { opacity: 1, x: 0, duration: 0.7, ease: "power3.out" }, t0);
|
||||
} else {
|
||||
gsap.set(row, { opacity: 1 });
|
||||
}
|
||||
|
||||
if (CONFIG.underline) {
|
||||
var fill = document.getElementById("mk-sl-fill-" + i);
|
||||
gsap.set(fill, { scaleX: 0 });
|
||||
tl.to(fill, { scaleX: 1, duration: 0.8, ease: "power2.inOut" }, t0 + 0.15);
|
||||
}
|
||||
});
|
||||
|
||||
/* exit + hard kill */
|
||||
if (CONFIG.animationOut) {
|
||||
tl.to(col, { opacity: 0, y: -20, duration: 0.4, ease: "power2.in" }, DUR - 0.5);
|
||||
tl.to(scrim, { opacity: 0, duration: 0.4, ease: "power2.in" }, DUR - 0.5);
|
||||
}
|
||||
tl.set(root, { visibility: "hidden" }, DUR - 0.02);
|
||||
|
||||
window.__timelines["mk-specs-list"] = tl;
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
|
||||
</Accordion>
|
||||
|
||||
{/* hf:generated-footer */}
|
||||
|
||||
Tagged `data-viz` `list` `minimal` `professional`.
|
||||
|
||||
Reference in New Issue
Block a user