Effect · top layer

Lanterns effect

The Zeenat lanterns effect decorates a page with generic inline SVG lantern forms. It uses no cultural emblems or external images and supports top or side placement.

Installation and imports

Install Zeenat once, then use the aggregate effects entry or the smallest explicit subpath. Both paths are exported by package version 0.3.0.

Install
npm install zeenat
Imports
import { lanterns } from "zeenat/effects";
// or
import { lanterns } from "zeenat/effects/lanterns";

Basic usage

Lanterns.tsx
import { ZeenatScene } from "zeenat";
import { lanterns } from "zeenat/effects/lanterns";

const effects = [lanterns()];

export function Decoration() {
  return <ZeenatScene effects={effects} />;
}

lanterns() options

Properties marked required have no factory default. Every other value below is taken from the current TypeScript source.

PropertyTypeRequiredDefaultDescription
colorsreadonly string[]No["#f59e0b", "#dc2626"]CSS colors cycled across lantern bodies.
countnumberNo7Base lantern count before density scaling.
position"top" | "sides"No"top"Whether lanterns hang across the top or alternate down the sides.
glowbooleanNotrueAdds an SVG drop-shadow based on each lantern color.
swaybooleanNotrueEnables a small alternating rotation during full motion.
layer"background" | "ambient" | "foreground" | "top"No"top"Semantic layer used to order the effect inside the Zeenat scene.
ordernumberNoOptional ordering value among effects in the same semantic layer.

Examples

Subtle

Subtle
lanterns({ count: 3, colors: ["#d97706"], glow: false, sway: false })

Intense

Intense
lanterns({ count: 10, position: "sides", colors: ["#dc2626", "#f59e0b", "#0f766e"] })

Combined

Combined
const effects = [lanterns({ count: 5 }), stringLights({ colors: ["#fbbf24", "#fff7ed"] })];

Reduced motion

Lanterns remain visible at lower opacity, but sway is removed.

Read the complete reduced-motion contract

Performance notes

Each lantern is a compact inline SVG. Count is bounded and scales with intensity, viewport and motion preference.

Zeenat performance architecture