ef-text

Renders text with optional per-character or per-word animation support.

Renders text. Style with Tailwind or inline CSS.

AttributeReact propTypeDefaultDescription
blur-amountblur-amountnumberForwarded to the wrapping `<ef-motionblur>`'s `amount` when `motion-blur` is set.
blur-angleblur-anglenumberForwarded to the wrapping `<ef-motionblur>`'s `angle` when `motion-blur` is set.
blur-fpsblur-fpsnumberForwarded to the wrapping `<ef-motionblur>`'s `fps` when `motion-blur` is set.
blur-sensitivityblur-sensitivitynumberForwarded to the wrapping `<ef-motionblur>`'s `sensitivity` when `motion-blur` is set.
blur-shutter-angleblur-shutter-anglenumberForwarded to the wrapping `<ef-motionblur>`'s `shutter-angle` when `motion-blur` is set.
blur-thresholdblur-thresholdnumberForwarded to the wrapping `<ef-motionblur>`'s `threshold` when `motion-blur` is set.
durationdurationstringHow long this element is active (CSS time, e.g. `"5s"`).
easingeasingstring"linear"CSS easing keyword applied to stagger timing.
looploopbooleanfalseLoop attribute — when this temporal is a self-driving root under a {@link PlaybackController}, the controller wraps back to `0` instead of pausing at `duration`.
motion-blurmotionBlurbooleanfalseWraps each segment in an `<ef-motionblur>` element for auto-detected directional blur.
offsetoffsetnumberStart offset (seconds) within a parallel (`fixed`/`contain`/`fit`) parent timegroup.
splitsplitline | word | char"word"Splits text into segments by line, word, or character for staggered animation.
staggerstaggerstring""Delay between each split segment's animation start (CSS time, e.g. `"100ms"`).

When split is set, each segment gets CSS variables for animation:

VariableValue
--ef-indexSegment index (0, 1, 2 …)
--ef-stagger-offsetCalculated delay for this segment
--ef-seedDeterministic random (0–1) per segment
<ef-timegroup duration="5s" class="w-[1920px] h-[1080px] bg-slate-900 flex items-center justify-center">
  <ef-text
    split="char"
    stagger="40ms"
    class="text-white text-9xl font-black tracking-widest"
  >
    EDITFRAME
  </ef-text>
  <style>
    @keyframes charPop {
      from { transform: scale(0) rotate(-15deg); opacity: 0; }
      to   { transform: scale(1) rotate(0deg);   opacity: 1; }
    }
    ef-text-segment {
      display: inline-block;
      animation: charPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;
      animation-delay: var(--ef-stagger-offset);
    }
  </style>
</ef-timegroup>

Slots