Files
frame/package.json
zooqueen d654200f21 frame: the film at the top of the page, as one primitive
Two surfaces had already agreed on what a hero film is — full bleed, two
masters picked by orientation, an SSR-correct still, reduced motion gets the
ending, no loop — and the agreement lived in one app's components directory.
The second surface that wanted one would have copied it, and the two copies
would have drifted.

So the decisions move here and the surfaces state only what is theirs: a
prefix and a sentence. `<Frame src="/hero" alt="…" />` resolves the six
rendered files by name, which makes a per-page film a matter of assets rather
than of code.

Rendering stays in hanzoai/frames. This package only plays what that one cuts.
2026-08-13 16:55:52 -07:00

55 lines
1.3 KiB
JSON

{
"name": "@hanzo/frame",
"version": "0.1.0",
"packageManager": "[email protected]",
"description": "The film at the top of the page. One full-bleed hero video primitive — two masters picked by orientation, an SSR-correct still, reduced motion honoured, no loop.",
"license": "MIT OR Apache-2.0",
"repository": {
"type": "git",
"url": "git+https://github.com/hanzoai/frame.git"
},
"homepage": "https://hanzo.ai",
"author": "Hanzo AI",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
},
"./package.json": "./package.json"
},
"files": [
"dist",
"README.md"
],
"sideEffects": false,
"scripts": {
"clean": "rm -rf dist",
"build": "pnpm clean && tsc -p tsconfig.json && node scripts/check-dist.mjs",
"typecheck": "tsc -p tsconfig.json --noEmit",
"test": "pnpm build",
"prepublishOnly": "pnpm build"
},
"keywords": [
"hanzo",
"hero",
"video",
"react"
],
"peerDependencies": {
"react": ">=18"
},
"devDependencies": {
"@types/react": "^19.2.2",
"react": "^19.2.0",
"typescript": "^5.9.2"
},
"publishConfig": {
"access": "public"
}
}