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

@stagecliplk/remotion-template

v1.0.30

Published

Reusable Remotion Template Editor component for video template customization - includes TemplateEditor, RemotionPlayer, and supporting utilities

Readme

@stageclip/remotion-template

npm version License: MIT

A powerful, reusable React component for editing and previewing Remotion video templates. Built with TypeScript and designed for production use.

Features

Rich Template Editor - Full-featured UI for customizing video templates
Real-time Preview - Integrated Remotion player for instant feedback
TypeScript Support - Fully typed for excellent DX
Flexible API - Props-based, no global state
Modular - Import only what you need
Production Ready - Battle-tested in StageClip's production environment


Installation

Prerequisites

  • React >= 18.0.0
  • Node.js >= 18.18.0

Install from Azure Artifacts

  1. Configure .npmrc in your project root:
registry=https://pkgs.dev.azure.com/YOUR_ORG/_packaging/YOUR_FEED/npm/registry/
always-auth=true
  1. Install the package:
npm install @stageclip/remotion-template

Or with yarn:

yarn add @stageclip/remotion-template

Note: Peer dependencies (react, react-dom, remotion, @remotion/player, @remotion/media-utils) will be installed automatically if not present.


Quick Start

import React, { useState } from 'react';
import { TemplateEditor, RemotionPlayer, VideoTemplate } from '@stageclip/remotion-template';

function App() {
  const [template, setTemplate] = useState<VideoTemplate>({
    compositionDefaults: {
      fps: 30,
      width: 1920,
      height: 1080,
      aspectRatio: '16:9',
      totalFrames: 300,
    },
    globalBranding: {
      institutionName: 'My Institution',
      brandColor1: '#00802b',
      brandColor2: '#005a1e',
      brandColor3: '#00cc44',
      fontFamily: 'Inter',
      fontSize: 48,
      lineSpacing: 1.2,
      logoPrimary: '',
      logoSecondary: '',
      socialMedia: {
        websiteUrl: '',
        contactLine: '',
        instagramHandle: '',
        hashtag: '',
      },
      musicUrl: '',
      musicVolume: 0.3,
    },
    timeline: [],
  });

  return (
    <div style={{ display: 'flex', gap: 20 }}>
      <TemplateEditor
        template={template}
        selectedSceneId={null}
        onTemplateChange={setTemplate}
        onClearSelection={() => {}}
      />
      <RemotionPlayer template={template} />
    </div>
  );
}

export default App;

Core Components

TemplateEditor

Main component for editing video templates.

<TemplateEditor
  template={template}
  selectedSceneId={selectedSceneId}
  onTemplateChange={handleTemplateChange}
  onClearSelection={handleClearSelection}
  onOpenMediaLibrary={handleOpenMediaLibrary}
  onAspectRatioChange={handleAspectRatioChange}
/>

Props:

  • template: VideoTemplate - Current template configuration
  • selectedSceneId: string | null - ID of selected scene
  • onTemplateChange: (template: VideoTemplate) => void - Callback when template changes
  • onClearSelection: () => void - Callback to clear selection
  • onOpenMediaLibrary?: (sceneId, propPath, mediaType, options) => void - Optional media picker
  • onAspectRatioChange?: (aspectRatio: '16:9' | '9:16') => void - Optional aspect ratio handler

RemotionPlayer

Component for previewing video templates.

<RemotionPlayer template={template} width={1280} height={720} />

Props:

  • template: VideoTemplate - Template to preview
  • width?: number - Player width (optional)
  • height?: number - Player height (optional)

Exported Components

// Main components
import { TemplateEditor, RemotionPlayer } from '@stageclip/remotion-template';

// Sub-components
import { ColorPicker, RangeSlider, DualRangeSlider, LogoPicker, SceneTimeline } from '@stageclip/remotion-template';

// Types
import type {
  VideoTemplate,
  CompositionDefaults,
  GlobalBranding,
  SocialMedia,
  ParticipantData,
  GoogleFont,
  LogoOption,
} from '@stageclip/remotion-template';

// Utilities
import {
  GOOGLE_FONTS,
  loadGoogleFont,
  getFontFamilyString,
  calculateSceneDuration,
  colors,
  fontFamily,
} from '@stageclip/remotion-template';

TypeScript

Full TypeScript support included. All types are exported:

import type { VideoTemplate } from '@stageclip/remotion-template';

const myTemplate: VideoTemplate = {
  // Fully typed!
};

Documentation


Examples

With Media Library Integration

function VideoEditorWithMediaLibrary() {
  const [template, setTemplate] = useState<VideoTemplate>(initialTemplate);
  const [selectedSceneId, setSelectedSceneId] = useState<string | null>(null);

  const handleOpenMediaLibrary = (sceneId, propPath, mediaType, options) => {
    // Open your media library modal
    // Update template with selected media
  };

  return (
    <TemplateEditor
      template={template}
      selectedSceneId={selectedSceneId}
      onTemplateChange={setTemplate}
      onClearSelection={() => setSelectedSceneId(null)}
      onOpenMediaLibrary={handleOpenMediaLibrary}
    />
  );
}

With Auto-Save

import { useDebounce } from 'use-debounce';

function VideoEditorWithAutoSave() {
  const [template, setTemplate] = useState<VideoTemplate>(initialTemplate);
  const [debouncedTemplate] = useDebounce(template, 1000);

  useEffect(() => {
    // Auto-save to backend
    saveToBackend(debouncedTemplate);
  }, [debouncedTemplate]);

  return (
    <TemplateEditor
      template={template}
      selectedSceneId={null}
      onTemplateChange={setTemplate}
      onClearSelection={() => {}}
    />
  );
}

Styling

The component uses inline styles with a built-in theme. You can wrap it in a container for additional styling:

import { colors } from '@stageclip/remotion-template';

<div
  style={{
    backgroundColor: colors.bgPaper,
    padding: 20,
    borderRadius: 8,
  }}
>
  <TemplateEditor {...props} />
</div>;

Available theme colors:

  • colors.primary - Primary brand color
  • colors.textPrimary - Main text color
  • colors.bgDefault - Default background
  • colors.bgPaper - Paper/card background
  • And more...

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

Requirements

Peer Dependencies

{
  "react": ">=18",
  "react-dom": ">=18",
  "remotion": ">=4",
  "@remotion/player": "^4.0.400",
  "@remotion/media-utils": "^4.0.400",
  "@remotion/transitions": "^4.0.400"
}

Development

This package is developed inside the StageClip Producer monorepo.

# Navigate to package directory
cd src/shared/remotion-template

# Install dependencies
npm install

# Type check
npm run typecheck

# Build
npm run build

# Clean build artifacts
npm run clean

Publishing

Publishing is handled through Azure Artifacts. See PUBLISHING.md for detailed instructions.

Quick publish:

cd src/shared/remotion-template

# Bump version
npm version patch  # or minor, major

# Build and publish
npm publish

Versioning

We follow Semantic Versioning:

  • MAJOR - Breaking changes
  • MINOR - New features (backward compatible)
  • PATCH - Bug fixes

License

MIT © StageClip


Support

For issues, questions, or feature requests:

  • Internal: Contact the StageClip development team
  • External: Create an issue in the repository

Changelog

v1.0.0 (Initial Release)

  • ✨ TemplateEditor component with full editing capabilities
  • ✨ RemotionPlayer for video preview
  • ✨ Sub-components: ColorPicker, LogoPicker, RangeSlider, etc.
  • ✨ Complete TypeScript support
  • ✨ Google Fonts integration
  • ✨ Scene duration calculator utility
  • 📚 Comprehensive documentation

Contributors

Built and maintained by the StageClip team.