darinlarimore/statamic-rive

There is no license information available for the latest version (1.1.3) of this package.

1.1.3 2025-02-16 19:29 UTC

This package is auto-updated.

Last update: 2025-02-16 19:31:22 UTC


README

Statamic Rive Field is a Statamic addon that accepts an a .riv file upload, displays an animiation preview and gives configuration options for the Rive animation.

Features

This addon does:

  • Upload a .riv Rive file
  • Configure settings for the Rive Model
  • Display a preview of the Rive animation
  • Display file information about the Rive animation

Editor View

How to Install

You can search for this addon in the Tools > Addons section of the Statamic control panel and click install, or run the following command from your project root:

composer require darinlarimore/statamic-rive

How to Use

Allow .riv file types in config/statamic/assets.php

'additional_uploadable_extensions' => [
		'riv',
],

Add the field to a blueprint

Rive Field

Name the field handle rive_animation or whatever you like.

Configure the field settings

Choose an asset container. Rive Field Configuration

Use the field in your template

Use the rive_animation handle in your template. The field will have the following properties:

  • url - The URL of the Rive animation
  • width - The width of the animation
  • height - The height of the animation
  • stateMachine - The state machine of the animation
  • animation - The timeline name of the animation
  • artboard - The artboard of the animation
  • shouldDisableRiveListeners - Whether or not to disable Rive listeners

Install Rive.js from NPM or CDN

npm install @rive-app/canvas

Import Rive.js into your project

import { Rive } from "@rive-app/canvas";

window.Rive = Rive;

Example Usage

Using Alpine.js to initialize the Rive animation:

	<div x-data x-init="() => {
		const rive = new window.Rive({
			src: '{{ rive_animation.url }}',
			canvas: $refs.riveCanvas,
			autoplay: true,
			onLoad: () => {
				rive.resizeDrawingSurfaceToCanvas();
			},
			{{ if rive_animation.stateMachine }}
				stateMachines: '{{ rive_animation.stateMachine }}',
			{{ /if }}
			{{ if rive_animation.animation }}
				animations: '{{ rive_animation.animation }}',
			{{ /if }}
			{{ if rive_animation.artboard }}
				artboard: '{{ rive_animation.artboard }}',
			{{ /if }}
			shouldDisableRiveListeners: '{{ rive_animation.shouldDisableRiveListeners }}',
		});
	}">
		<canvas x-ref="riveCanvas" width="{{rive_animation.width}}" height="{{rive_animation.height}}"></canvas>
	</div>