Motion

Fish School

A transparent layer of a seeded, depth-layered fish school with rising bubbles, in light or dark inks. Swims across the viewport, its own box, or orbit loops; still under reduced motion.

The source comes with full access.

One payment of $149 ($49 for now) opens the source right here and lets the CLI install every paid component, with lifetime updates.

Installation

pnpm dlx shadcn add @01orbital/fish-school
npx shadcn add @01orbital/fish-school
yarn shadcn add @01orbital/fish-school
bunx --bun shadcn add @01orbital/fish-school

Part of the 01orbital library. With a license, put ORBITAL_TOKEN in .env.local and the same command installs it (licensed install, pricing).

It lands at components/motion/fish-school.tsx, as source you own and edit.

The example also uses pool-scene. Install it too:

pnpm dlx shadcn add @01orbital/pool-scene
npx shadcn add @01orbital/pool-scene
yarn shadcn add @01orbital/pool-scene
bunx --bun shadcn add @01orbital/pool-scene

Usage

import { FishSchool } from "@/components/motion/fish-school"
import { PoolScene } from "@/components/scene/pool-scene"

export default function FishSchoolDemo() {
  return (
    <div className="relative min-h-full w-full flex-1 overflow-hidden rounded-xl text-foreground">
      <PoolScene
        colors={{
          crest: { l: 0.9, c: 0.05, h: 200 },
          descent: { l: 0.62, c: 0.09, h: 222 },
        }}
        middle="caustic"
        causticOpacity={0.5}
      />
      <FishSchool seed={404} tone="light" path="container" />
    </div>
  )
}

API reference

Prop

Type

It also accepts the HTML attributes of the element it renders.

Dependencies

npm: cn. The CLI installs them for you.

No other registry pieces.