Catalog npm
Back to packageRELEASE DETAILS

0.2.0

npm

3d-marquee

A React library featuring a 3D rotating orb with a scrolling LED marquee effect. The word scrolls horizontally across the center band of the sphere, creating a seamless ticker display.

Published23 Dec 2025
Direct dependencies13
Transitive dependenciesNot calculated

README

Current package documentation

3D Marquee

A React library featuring a 3D rotating orb with a scrolling LED marquee effect. The word scrolls horizontally across the center band of the sphere, creating a seamless ticker display.

3D Marquee Preview

Installation

Install the package:

npm install 3d-marquee

Note: With npm 7+ and yarn, peer dependencies are automatically installed. If you're using npm 6 or earlier, you'll need to install the peer dependencies manually:

npm install 3d-marquee react react-dom three @react-three/fiber @react-three/drei @react-three/postprocessing

Peer Dependencies

The following peer dependencies are required and will be automatically installed with npm 7+:

  • react: ^18.0.0 || ^19.0.0
  • react-dom: ^18.0.0 || ^19.0.0
  • three: >=0.158.0
  • @react-three/fiber: ^8.15.11 || ^9.0.0
  • @react-three/drei: ^9.92.7 || ^10.0.0
  • @react-three/postprocessing: ^2.15.9 || ^3.0.0

Usage

Import and use the LedMarqueeOrbContainer component:

import { LedMarqueeOrbContainer } from '3d-marquee'

function App() {
  return (
    <div style={{ width: '100vw', height: '100vh' }}>
      <LedMarqueeOrbContainer
        word="Hello World"
        speed={0.1}
        dimColor="red"
        brightColor="blue"
      />
    </div>
  )
}

Vite Configuration

If you're using Vite, add this to your vite.config.ts to ensure React is properly deduplicated:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  resolve: {
    dedupe: ['react', 'react-dom'],
  },
  optimizeDeps: {
    include: ['react', 'react-dom', '@react-three/fiber', '@react-three/drei', '@react-three/postprocessing'],
  },
})

Component API

LedMarqueeOrbContainer

The main component that includes the Canvas, lighting, controls, and post-processing effects.

Props:

  • word (string, required): The text to display on the marquee
  • speed (number, required): Scroll speed multiplier (higher = faster)
  • dimColor (string, required): Color for inactive LEDs (e.g., "#1a261a" or "red")
  • brightColor (string, required): Color for active LEDs (e.g., "#00ff4d" or "blue")
  • radius (number, optional, default: 1): Sphere radius
  • ledSpacing (number, optional, default: 0.0075): Spacing between LED dots
  • columnSpacing (number, optional, default: 0.005): Spacing between columns

LedMarqueeOrb

The core orb component (used internally by LedMarqueeOrbContainer). You can use this directly if you need more control over the Canvas setup.

Props:

Same as LedMarqueeOrbContainer, but all props are optional with defaults.

Features

  • 3D Rotating Orb: Smoothly rotating sphere with orbit controls
  • LED Marquee Effect: Text scrolls horizontally across the center band
  • Shader-Based Rendering: High-performance GPU-accelerated LED matrix effect
  • Bloom Post-Processing: Glowing LED effect with bloom shader
  • Customizable Colors: Set dim and bright LED colors via props
  • Responsive Design: Full viewport canvas that adapts to screen size

Controls

  • Mouse Drag: Rotate the camera around the orb
  • Scroll: Zoom in/out

Development

Building the Library

To build the library for distribution:

npm run build:lib

This creates the distribution files in the dist/ directory.

Running the Demo

To run the demo/example application:

npm run dev

The application will be available at http://localhost:5173 (or the port shown in the terminal).

Building for Production

Build the production bundle:

npm run build

Preview the production build:

npm run preview

Technologies

  • React 18/19: UI framework
  • Vite: Build tool and dev server
  • TypeScript: Type safety
  • Three.js: 3D graphics library
  • @react-three/fiber: React renderer for Three.js
  • @react-three/drei: Useful helpers and abstractions
  • @react-three/postprocessing: Post-processing effects (bloom)

Implementation Details

The LED marquee effect is implemented using a custom shader material that:

  1. Samples a canvas texture containing the repeated word
  2. Constrains rendering to a horizontal band around the sphere's equator
  3. Quantizes UV coordinates into a grid for the LED dot matrix effect
  4. Applies scrolling offset for the marquee animation
  5. Uses emissive colors and bloom post-processing for the glow effect

License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 19

Native requirements
13 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
vite
Environment
{
  "local_name": "vite",
  "alias": false,
  "peer_metadata": null
}
^5.0.8development
react
Environment
{
  "local_name": "react",
  "alias": false,
  "peer_metadata": null
}
^19.2.0development
three
Environment
{
  "local_name": "three",
  "alias": false,
  "peer_metadata": null
}
>=0.158.0development
react-dom
Environment
{
  "local_name": "react-dom",
  "alias": false,
  "peer_metadata": null
}
^19.2.0development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5.2.2development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^25.0.3development
@types/react
Environment
{
  "local_name": "@types/react",
  "alias": false,
  "peer_metadata": null
}
^19.2.5development
@types/three
Environment
{
  "local_name": "@types/three",
  "alias": false,
  "peer_metadata": null
}
^0.158.3development
@types/react-dom
Environment
{
  "local_name": "@types/react-dom",
  "alias": false,
  "peer_metadata": null
}
^19.2.3development
@react-three/drei
Environment
{
  "local_name": "@react-three/drei",
  "alias": false,
  "peer_metadata": null
}
^10.7.7development
@react-three/fiber
Environment
{
  "local_name": "@react-three/fiber",
  "alias": false,
  "peer_metadata": null
}
^9.4.2development
@vitejs/plugin-react
Environment
{
  "local_name": "@vitejs/plugin-react",
  "alias": false,
  "peer_metadata": null
}
^5.1.1development
@react-three/postprocessing
Environment
{
  "local_name": "@react-three/postprocessing",
  "alias": false,
  "peer_metadata": null
}
^3.0.0development
react
Environment
{
  "local_name": "react",
  "alias": false,
  "peer_metadata": null
}
^18.2.0 || ^19.0.0peer
three
Environment
{
  "local_name": "three",
  "alias": false,
  "peer_metadata": null
}
>=0.158.0peer
react-dom
Environment
{
  "local_name": "react-dom",
  "alias": false,
  "peer_metadata": null
}
^18.2.0 || ^19.0.0peer
@react-three/drei
Environment
{
  "local_name": "@react-three/drei",
  "alias": false,
  "peer_metadata": null
}
^9.92.7 || ^10.0.0peer
@react-three/fiber
Environment
{
  "local_name": "@react-three/fiber",
  "alias": false,
  "peer_metadata": null
}
^8.15.11 || ^9.0.0peer
@react-three/postprocessing
Environment
{
  "local_name": "@react-three/postprocessing",
  "alias": false,
  "peer_metadata": null
}
^2.15.9 || ^3.0.0peer

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "8dfad9dfaffc7a3201a92d19e838d3fdac5bdae3",
  "tarball": "https://registry.npmjs.org/3d-marquee/-/3d-marquee-0.2.0.tgz",
  "fileCount": 11,
  "integrity": "sha512-5gvNR5+0PnihxoPkFdQaSOx3xcXIqiKkYYBSM/2jzg74/AetvW+qa08QObl3lJRYCvog0DCqq3fw4D2OC6fLHA==",
  "signatures": [
    {
      "sig": "MEYCIQDU/GKwyaOFKXifoKvfYqv5unPTybTlPWzMrEdTuIJSFwIhANrWu0DjCg+ZQQ06DRHQb4xliQ0w0sSho+QUxoVUZtzp",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "unpackedSize": 165299
}

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:36 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:3a233ba67e14a8a61222830b52bb8e95b1afe1ebbd1b59c19b5c7cbb55730f4e

Other collected versions

0.2.32 Jan0.2.124 Dec0.1.1223 Dec0.1.1123 Dec0.1.1023 Dec0.1.923 DecView all collected versions →