npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@hypit/caption-citadelle

v0.1.0

Published

Citadelle: sliding rows with independently timed word highlights and size/paint roles.

Readme

Citadelle captions for Hypit

Narrow uppercase typography, rows sliding in from the right, and independently timed rounded word highlights. Font, size hierarchy and static accent paint are independent of highlight timing.

Watch the original-copy preview (26 seconds, authored timing, no audio).

Install

Install in your video project and retain its package.json and lockfile:

npm install --save-exact @hypit/[email protected]
hypit vocabulary @hypit/caption-citadelle

Requires Hypit 0.3.1 or a compatible release and Node 22.15 or later. The Source import @hypit/caption-citadelle@1 identifies the logical module ABI; npm version 0.1.0 identifies this implementation.

Install

Author inputs

Use the ordinary CaptionDocument, CaptionTiming, Timeline and Frame. Script timing adaptation remains outside the family. Style accepts an exact Font or FontStack, with optional Fallback children. No additional author-written subtitle data type is required. The family schedule is internal.

The closest researched font is the 2014 Bebas Neue Bold by Fontfabric, available in the designer's repository. Its identity as the exact reference font is not proven. Supply your font resource explicitly; the package contains no fonts.

The exported recipes/citadelle recipe is a starting point for a1080×1920 Canvas. See examples/citadelle.svml for an integration fragment using existing story.caption, caption-time, speech.timeline and caption-frame. Include captions.track in your Film.

| Optional Script property | Meaning | | --- | --- | | group=phrase | Adjacent units with the same name share a page. Names separated by other groups do not reconnect. | | size=normal or large | Chooses base size or large-scale; never changes paint or grouping. | | paint=normal or accent | Chooses the static text color; never changes highlight timing or size. | | break-before | Starts a row inside the page, without creating a new cue. |

Make{group=idea} your{group=idea} idea{group=idea,paint=accent} clear.{group=idea} ||
Build{size=large} something{paint=accent} beautiful.{size=large,paint=accent}

Ungrouped units have individual pages. Each row enters at its first unit's time, then stays until the next page or cue end. Highlight opacity follows each unit's own start/end, so it may disappear while its text remains. || separates cues only. An indivisible alignment unit preserves all its displayed words and separators; each display Word keeps its own attributes. Other attributes are ignored.

Loaded-font widths determine automatic wrapping. Each line then scales uniformly to available width, preserving aspect ratio and relative word sizes; long indivisible words fit by scaling. Independent line fitting allows a longer line to be smaller than a short adjacent line. A page never reflows as speech advances. Highlight geometry is fixed at the final text position, while text slides into it.

Style parameters

| Parameter | Meaning | | --- | --- | | x / y | Page line-box origin as Frame fractions. | | width | Maximum final line width as a Frame fraction. | | size / large-scale | Base pixel font size and large-role multiplier. | | line-width | Automatic wrapping threshold in base-font em, before line fitting. | | line-height / line-gap | Minimum per-word line-box height multiplier and extra inter-row gap in base em. | | tracking / word-spacing | Letter spacing in each word's em; additional separator spacing in base em. | | color / accent-color | Static normal and accent text paints. | | highlight-color | Speaking-word background paint. | | padding-x / padding-y / radius | Highlight padding and corner radius in base em. | | highlight-fade | Highlight edge fade in seconds, limited for short units. | | slide-distance | Signed horizontal text entrance offset in Frame-width fractions. | | slide-duration / fade-duration | Independent row slide and opacity durations in seconds; zero disables that transition. | | outline-width / outline-color | Text stroke width in base em and its paint. | | shadow-y / shadow-blur / shadow-color | Text shadow offset/blur in base em and its paint. | | tail-frames | Cue display extension, capped at the next cue of the same role. Does not extend word highlights. | | stack-order | Composition paint order. |

The selected font controls weight. Color values accept six/eight-digit hex or transparent. Width is positive and at most1; font size, line width, line height and large scale are positive. Durations, padding, radius, blur and line gap are nonnegative. Tail is a nonnegative integer. All animation uses absolute frame time, including direct seeks and Uses beginning inside a cue. Later matching Uses win; Hidden suppresses visibility without restarting clocks.

Integration and license

CaptionDocument supplies authored Cues, Words and Units; CaptionTiming supplies each Unit’s absolute boundaries. Track consumes document, timing, timeline and within. Its Studio Companion displays Cue Items and exposes Style Uses in the Inspector.

Fonts are explicit inputs supplied by the consuming project, either from licensed files or installed font packages. Font binaries and research footage are not distributed here. Choose fonts licensed for your intended use; availability of a local or free font file does not establish commercial usage rights. Preview media illustrates the treatment; actual layout depends on your text, timing, frame and font metrics. Check the result in the languages and sizes used by your video.

Code is distributed under the Hypit license, the same license used by @hypit/ranking. It is Apache-2.0-based with additional conditions; consult the full text for hosted services and commercial redistribution. Fonts and supplied media retain their own licenses.