Docs

@vidova packages

Custom elements import @vidova/2d for nodes and JSX, @vidova/core for signals and tweens, and @vidova/components for built-in scene nodes.

View as Markdown

Custom element source imports three packages. JSX is compiled with @vidova/2d as the JSX source. Do not import React.

@vidova/2d

Nodes, JSX, and property decorators.

ExportUse
Node, NodePropsBase class and props for a custom element
Rect, Circle, Txt, LayoutShapes, text, flex containers
CodeSyntax-highlighted code. Set letterSpacing to 0 and fontFamily to Fira Code Variable
Line, Path, QuadBezierVector drawing
Img, VideoBitmap and video. Call videoRef().play() directly. Do not spawn(videoRef().play())
GradientFills
@signal, @initial, @colorSignalClass property decorators
import { Node, NodeProps, Txt, Rect, signal, initial } from '@vidova/2d';

@vidova/core

Signals, math helpers, easing, and generator types for the animate() fallback.

ExportUse
SignalValue, SimpleSignal, ColorSignal, PossibleColorProp and field types
clamp, mapStep progress and value mapping in atTime
ThreadGeneratorReturn type of animate() and animateIn()
waitFor, tween, allTiming and parallel tweens in animate()
createRefHold a child node for later animation
easeOutCubic, easeInOutCubicTiming functions
withCommonShaderPrepend the standard SkSL prelude to a fragment body
import {
  SignalValue,
  SimpleSignal,
  all,
  easeOutCubic,
  withCommonShader,
  type ThreadGenerator,
} from '@vidova/core';

createSignal exists for local values inside a method. Do not use it for class props. Declare those with @initial and @signal. See Signals.

@vidova/components

Built-in scene nodes. Use these when an element needs recording footage, the camera overlay, or the same cursor and caption chrome as the editor.

ExportUse
ScreenRecordingScreen-recording surface
FaceCameraCamera overlay
AnimatedCursorCursor overlay
AnimatedCaptionsCaption renderer
AnimatedKeybindingsKeystroke overlay
ClickEffectClick burst
MouseIndicatorMouse highlight
BackgroundImageStill background
ThreeViewport3D viewport
VidovaClipDataType for a vidova asset input
import { ScreenRecording, FaceCamera } from '@vidova/components';

Asset inputs of type vidova resolve to a VidovaClipData object (screen, camera, cursor, click, keyboard). Image, video, audio, and model3d asset inputs resolve to playback URLs. The clip still stores asset IDs. Use @initial('') on URL signals. Details: Inputs. SkSL on a cached node: Shaders.

Most catalog templates import only @vidova/2d and @vidova/core. Reach for @vidova/components when the element wraps editor footage, not when it is a title or chip.