fix(studio): remove selection overlay fill

This commit is contained in:
ukimsanov
2026-07-06 21:02:36 -07:00
parent ac0153cb30
commit 8f022d06ec
4 changed files with 18 additions and 16 deletions
+10 -10
View File
@@ -79,16 +79,16 @@ Run `npx skills add heygen-com/hyperframes` for the interactive picker, `npx ski
Atomic capabilities the creation workflows compose against — pull one when you need that specific layer. Atomic capabilities the creation workflows compose against — pull one when you need that specific layer.
| Skill | Covers | | Skill | Covers |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/hyperframes-core` | The composition contract — `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, determinism rules. | | `/hyperframes-core` | The composition contract — `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, determinism rules. |
| `/hyperframes-animation` | All animation knowledge — atomic motion rules, scene blueprints, transitions, runtime adapters (GSAP / Lottie / Three.js / Anime.js / CSS / WAAPI / TypeGPU). | | `/hyperframes-animation` | All animation knowledge — atomic motion rules, scene blueprints, transitions, runtime adapters (GSAP / Lottie / Three.js / Anime.js / CSS / WAAPI / TypeGPU). |
| `/hyperframes-keyframes` | Seek-safe keyframe authoring across runtimes — GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, 3D depth — plus `hyperframes keyframes` diagnostics for rendered motion. | | `/hyperframes-keyframes` | Seek-safe keyframe authoring across runtimes — GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, 3D depth — plus `hyperframes keyframes` diagnostics for rendered motion. |
| `/hyperframes-creative` | Non-animation creative direction — `frame.md` / `design.md`, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns. | | `/hyperframes-creative` | Non-animation creative direction — `frame.md` / `design.md`, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns. |
| `/media-use` | The media OS — resolve any media need (BGM, SFX, image, icon, voice) into a frozen local file + ledger record, generate via TTS/music when the catalog misses, transcribe, remove backgrounds, and reuse assets across projects. One shared audio engine + manifest tracking. | | `/media-use` | The media OS — resolve any media need (BGM, SFX, image, icon, voice) into a frozen local file + ledger record, generate via TTS/music when the catalog misses, transcribe, remove backgrounds, and reuse assets across projects. One shared audio engine + manifest tracking. |
| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress`). | | `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress`). |
| `/hyperframes-registry` | Install and wire registry blocks and components into compositions via `hyperframes add`. Authoring a new block or component to contribute upstream. | | `/hyperframes-registry` | Install and wire registry blocks and components into compositions via `hyperframes add`. Authoring a new block or component to contribute upstream. |
| `/figma` | Import Figma assets, tokens, components, and storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI) plus Motion animations and shaders (MCP) into a composition. | | `/figma` | Import Figma assets, tokens, components, and storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI) plus Motion animations and shaders (MCP) into a composition. |
For visual design handoff workflows, see the [Claude Design guide](https://hyperframes.heygen.com/guides/claude-design) and [Open Design guide](https://hyperframes.heygen.com/guides/open-design). For visual design handoff workflows, see the [Claude Design guide](https://hyperframes.heygen.com/guides/claude-design) and [Open Design guide](https://hyperframes.heygen.com/guides/open-design).
@@ -418,7 +418,7 @@ export const DomEditOverlay = memo(function DomEditOverlay({
<div <div
aria-hidden="true" aria-hidden="true"
data-dom-edit-hover-box="true" data-dom-edit-hover-box="true"
className="pointer-events-none absolute rounded-md border border-studio-accent/80 bg-studio-accent/5 shadow-[0_0_0_1px_rgba(60,230,172,0.25)]" className="pointer-events-none absolute rounded-md border border-studio-accent/80 shadow-[0_0_0_1px_rgba(60,230,172,0.25)]"
style={hugRectForElement(hoverRect, hoverSelection.element)} style={hugRectForElement(hoverRect, hoverSelection.element)}
/> />
)} )}
@@ -428,7 +428,7 @@ export const DomEditOverlay = memo(function DomEditOverlay({
<div <div
key={item.key} key={item.key}
aria-hidden="true" aria-hidden="true"
className="pointer-events-none absolute rounded-xl border border-studio-accent/70 bg-studio-accent/[0.03]" className="pointer-events-none absolute rounded-xl border border-studio-accent/70"
style={{ style={{
left: item.rect.left, left: item.rect.left,
top: item.rect.top, top: item.rect.top,
@@ -439,7 +439,7 @@ export const DomEditOverlay = memo(function DomEditOverlay({
))} ))}
<div <div
data-dom-edit-selection-box="true" data-dom-edit-selection-box="true"
className="pointer-events-auto absolute rounded-xl border border-studio-accent bg-studio-accent/5 shadow-[0_0_0_1px_rgba(60,230,172,0.3)]" className="pointer-events-auto absolute rounded-xl border border-studio-accent shadow-[0_0_0_1px_rgba(60,230,172,0.3)]"
style={{ style={{
left: groupBounds.left, left: groupBounds.left,
top: groupBounds.top, top: groupBounds.top,
@@ -520,7 +520,7 @@ export const DomEditOverlay = memo(function DomEditOverlay({
> >
{cropOutlineInsetPx && ( {cropOutlineInsetPx && (
<div <div
className="pointer-events-none absolute rounded-md border border-studio-accent/80 shadow-[0_0_0_1px_rgba(60,230,172,0.25)] bg-studio-accent/5" className="pointer-events-none absolute rounded-md border border-studio-accent/80 shadow-[0_0_0_1px_rgba(60,230,172,0.25)]"
style={{ style={{
left: cropOutlineInsetPx.left, left: cropOutlineInsetPx.left,
top: cropOutlineInsetPx.top, top: cropOutlineInsetPx.top,
@@ -34,6 +34,6 @@ export function readDomEditSelectionShapeStyles(
* shadow for clip-mirrored shapes, plain border otherwise. */ * shadow for clip-mirrored shapes, plain border otherwise. */
export function resolveBoxChromeClass(hasCropOutline: boolean, boxClipPath?: string): string { export function resolveBoxChromeClass(hasCropOutline: boolean, boxClipPath?: string): string {
if (hasCropOutline) return ""; if (hasCropOutline) return "";
if (boxClipPath) return "shadow-[inset_0_0_0_2px_rgba(60,230,172,0.6)] bg-studio-accent/5"; if (boxClipPath) return "shadow-[inset_0_0_0_2px_rgba(60,230,172,0.6)]";
return "border border-studio-accent/80 shadow-[0_0_0_1px_rgba(60,230,172,0.25)] bg-studio-accent/5"; return "border border-studio-accent/80 shadow-[0_0_0_1px_rgba(60,230,172,0.25)]";
} }
@@ -76,6 +76,7 @@ describe("resolveDomEditCapabilities", () => {
canEditStyles: true, canEditStyles: true,
canMove: true, canMove: true,
canResize: true, canResize: true,
canCrop: true,
canApplyManualOffset: true, canApplyManualOffset: true,
canApplyManualSize: true, canApplyManualSize: true,
canApplyManualRotation: true, canApplyManualRotation: true,
@@ -424,6 +425,7 @@ describe("resolveDomEditSelection", () => {
canEditStyles: false, canEditStyles: false,
canMove: true, canMove: true,
canResize: true, canResize: true,
canCrop: true,
canApplyManualOffset: false, canApplyManualOffset: false,
canApplyManualSize: false, canApplyManualSize: false,
canApplyManualRotation: false, canApplyManualRotation: false,