{
  "schemaVersion": "1.3",
  "kind": "template",
  "id": "ringstat-retention",
  "variantId": "ringstat-retention",
  "template": "ringstat",
  "engine": "hyperframes",
  "engineLabel": "HyperFrames",
  "title": "Ring Stat Recap",
  "url": "https://cliphou.se/templates/ringstat-retention/",
  "editorUrl": "https://cliphou.se/#/v/ringstat-retention",
  "templateVersion": 1,
  "latestTemplateVersion": 1,
  "sourceHash": "7f234587b18bde72",
  "generation": {
    "model": "GPT-5",
    "modelId": "gpt-5",
    "provider": "OpenAI",
    "effort": "medium"
  },
  "siteCommit": "29b461adaae99a77f6596c7d0b7d5dabc4915f9e",
  "license": "MIT-0",
  "licenseUrl": "https://cliphou.se/license/",
  "price": "Free",
  "attributionRequired": false,
  "format": {
    "aspectRatio": "1:1",
    "width": 1080,
    "height": 1080,
    "fps": 30,
    "durationInFrames": 240,
    "seconds": 8
  },
  "scenes": [
    {
      "type": "counter",
      "label": "Counter",
      "from": 0,
      "duration": 156,
      "roles": [
        "brand",
        "stat",
        "headline"
      ]
    },
    {
      "type": "tagline",
      "label": "Tagline",
      "from": 156,
      "duration": 84,
      "roles": [
        "subhead",
        "cta"
      ]
    }
  ],
  "props": {
    "texts": {
      "brand": "NORTHSTAR",
      "stat": "94%",
      "headline": "Retention",
      "subhead": "Customers stayed after onboarding changed.",
      "cta": "Read report"
    },
    "theme": {
      "background": "#f7f8fb",
      "surface": "#dde5f5",
      "foreground": "#121722",
      "accent": "#2563eb",
      "accent2": "#f05d23"
    }
  },
  "editableFields": {
    "texts": {
      "brand": {
        "label": "Brand",
        "maxLength": 18,
        "current": "NORTHSTAR"
      },
      "stat": {
        "label": "Stat",
        "maxLength": 12,
        "format": "Include a number, for example 12.4k or 98%.",
        "current": "94%"
      },
      "headline": {
        "label": "Headline",
        "maxLength": 24,
        "current": "Retention"
      },
      "subhead": {
        "label": "Subhead",
        "maxLength": 52,
        "current": "Customers stayed after onboarding changed."
      },
      "cta": {
        "label": "Call to action",
        "maxLength": 20,
        "current": "Read report"
      }
    },
    "theme": {
      "background": {
        "format": "#RRGGBB",
        "current": "#f7f8fb"
      },
      "surface": {
        "format": "#RRGGBB",
        "current": "#dde5f5"
      },
      "foreground": {
        "format": "#RRGGBB",
        "current": "#121722"
      },
      "accent": {
        "format": "#RRGGBB",
        "current": "#2563eb"
      },
      "accent2": {
        "format": "#RRGGBB",
        "current": "#f05d23"
      }
    }
  },
  "jsonSchema": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "texts": {
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "minLength": 1,
            "maxLength": 18,
            "role": "brand"
          },
          "stat": {
            "type": "string",
            "minLength": 1,
            "maxLength": 12,
            "pattern": "\\d",
            "role": "stat"
          },
          "headline": {
            "type": "string",
            "minLength": 1,
            "maxLength": 24,
            "role": "headline"
          },
          "subhead": {
            "type": "string",
            "minLength": 1,
            "maxLength": 52,
            "role": "subhead"
          },
          "cta": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "role": "cta"
          }
        },
        "required": [
          "brand",
          "stat",
          "headline",
          "subhead",
          "cta"
        ],
        "additionalProperties": false
      },
      "theme": {
        "type": "object",
        "properties": {
          "background": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "background"
          },
          "surface": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "surface"
          },
          "foreground": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "foreground"
          },
          "accent": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "accent"
          },
          "accent2": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$",
            "role": "accent2"
          }
        },
        "required": [
          "background",
          "surface",
          "foreground",
          "accent",
          "accent2"
        ],
        "additionalProperties": false
      }
    },
    "required": [
      "texts",
      "theme"
    ],
    "additionalProperties": false
  },
  "handoff": {
    "urlTemplate": "https://cliphou.se/#/v/ringstat-retention?props=<url-encoded props JSON>",
    "example": "https://cliphou.se/#/v/ringstat-retention?props=%7B%22texts%22%3A%7B%22brand%22%3A%22NORTHSTAR%22%2C%22stat%22%3A%2294%25%22%2C%22headline%22%3A%22Retention%22%2C%22subhead%22%3A%22Customers%20stayed%20after%20onboarding%20changed.%22%2C%22cta%22%3A%22Read%20report%22%7D%2C%22theme%22%3A%7B%22background%22%3A%22%23f7f8fb%22%2C%22surface%22%3A%22%23dde5f5%22%2C%22foreground%22%3A%22%23121722%22%2C%22accent%22%3A%22%232563eb%22%2C%22accent2%22%3A%22%23f05d23%22%7D%7D",
    "maxEncodedLength": 8000,
    "note": "cliphou.se validates the props before it opens them. Invalid props are rejected and never saved."
  },
  "source": {
    "package": "https://cliphou.se/source/ringstat/v1.tar.gz",
    "packageSha256": "40937705f3f916a650dc52f743c1c4aaef761eade85100adca1c1f0eff95ccd0",
    "templateVersion": 1,
    "renderCommand": "npx --yes hyperframes@0.8.146 render --variables-file variables.json --strict-variables -o out/video.mp4",
    "repository": "https://github.com/sunmer/voodoo",
    "path": "src/hyperframes/ringstat/",
    "contents": "Native HyperFrames HTML composition, declared variables, local GSAP, local fonts, example variables, README, and MIT-0 license.",
    "note": "Rendering uses HyperFrames 0.8.146. GSAP and fonts keep their own licenses."
  },
  "instructions": [
    "For text, color, and image edits, change only props.texts, props.theme, and props.media when present. Keep each text within maxLength, each color as #RRGGBB, and each image as one of its listed options.",
    "Return text and color edits as handoff.urlTemplate with the props JSON URL-encoded.",
    "For layout, motion, timing, or scene edits, download source.package, extract it, and edit the code.",
    "Render the source package with source.renderCommand. Edit variables.json to change text and colors.",
    "Never send code through the handoff URL. It accepts props only."
  ]
}
