3d-effect-cinema 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -88
- package/dist/index.d.mts +165 -28
- package/dist/index.d.ts +165 -28
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🎬 3D Effect Cinema
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> Componente de Fondo WebGL 3D de Alto Rendimiento, Motor de Efectos Bioluminiscentes y Pantalla de Carga / Intro Cinematográfica para React y Next.js impulsado por `@react-three/fiber` & `three`.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/3d-effect-cinema)
|
|
6
6
|
[](https://github.com/esteban284/3d-effect-cinema)
|
|
@@ -9,33 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## 🚀
|
|
12
|
+
## 🚀 Demo Interactivo en Vivo
|
|
13
13
|
|
|
14
|
-
👉 **[
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
+-------------------------------------------------------------------------------+
|
|
18
|
-
| 🌟 CINEMULTIPLEX 3D - Fire Sparks & Dynamic WebGL Hero Background |
|
|
19
|
-
| [ Gold ] [ Neon ] [ Emerald ] [ Crimson ] [ Obsidian ] [ Glass ] |
|
|
20
|
-
+-------------------------------------------------------------------------------+
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## ✨ Features
|
|
26
|
-
|
|
27
|
-
- 💥 **Interactive Fire Sparks**: Click or touch anywhere on screen to trigger explosive 3D fire embers and local light flashes.
|
|
28
|
-
- 🖼️ **Dynamic Hero Background (`<CinemaBackground />`)**: Embed the 3D WebGL background inside any container (div, hero section, card) with auto-resizing.
|
|
29
|
-
- 🌟 **Cinematic 3D Typography**: Animated 3D extruded text with spring physics.
|
|
30
|
-
- 🎨 **6 Material Themes**: `emerald` (Matrix Luxe), `crimson` (Ruby Fire), `gold`, `neon`, `obsidian`, `glass`.
|
|
31
|
-
- 🎥 **Cinematic Camera Rig**: Camera dolly zoom, subtle mouse parallax, and breathing float movement.
|
|
32
|
-
- ⚡ **Next.js & React 19 Ready**: Pre-configured with `'use client'` directives for seamless App Router integration.
|
|
14
|
+
👉 **[Probar la Galería Interactiva en Vivo (Vercel)](https://cinema-animation-sample.vercel.app)**
|
|
33
15
|
|
|
34
16
|
---
|
|
35
17
|
|
|
36
|
-
## 📦
|
|
37
|
-
|
|
38
|
-
Install the package and its peer dependencies in your React / Next.js project:
|
|
18
|
+
## 📦 Instalación
|
|
39
19
|
|
|
40
20
|
```bash
|
|
41
21
|
npm install 3d-effect-cinema three @react-three/fiber @react-three/drei @react-three/postprocessing postprocessing
|
|
@@ -43,35 +23,26 @@ npm install 3d-effect-cinema three @react-three/fiber @react-three/drei @react-t
|
|
|
43
23
|
|
|
44
24
|
---
|
|
45
25
|
|
|
46
|
-
##
|
|
26
|
+
## ⚡ Inicio Rápido
|
|
47
27
|
|
|
48
|
-
### 1
|
|
49
|
-
|
|
50
|
-
Embed the interactive 3D WebGL experience inside any section of your website:
|
|
28
|
+
### Modo 1: Fondo 3D Permanente
|
|
51
29
|
|
|
52
30
|
```tsx
|
|
53
31
|
"use client";
|
|
54
32
|
|
|
55
|
-
import
|
|
33
|
+
import AnimatedBackground from "3d-effect-cinema";
|
|
56
34
|
|
|
57
|
-
export default function
|
|
35
|
+
export default function App() {
|
|
58
36
|
return (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
Search Optimization Engine
|
|
69
|
-
</h2>
|
|
70
|
-
<button className="mt-6 px-8 py-3 bg-emerald-500 hover:bg-emerald-400 text-black font-bold uppercase rounded-md transition-all">
|
|
71
|
-
Explore Services
|
|
72
|
-
</button>
|
|
73
|
-
</div>
|
|
74
|
-
</CinemaBackground>
|
|
37
|
+
// Fondo de Nubes de Energía Verde Bioluminiscente sobre Fondo Blanco
|
|
38
|
+
<div className="w-full h-screen">
|
|
39
|
+
<AnimatedBackground
|
|
40
|
+
effect="blobs"
|
|
41
|
+
effectColor="#00e676"
|
|
42
|
+
effectDensity={0.4}
|
|
43
|
+
effectSpeed={0.5}
|
|
44
|
+
backgroundColor="#ffffff"
|
|
45
|
+
/>
|
|
75
46
|
</div>
|
|
76
47
|
);
|
|
77
48
|
}
|
|
@@ -79,71 +50,160 @@ export default function HeroSection() {
|
|
|
79
50
|
|
|
80
51
|
---
|
|
81
52
|
|
|
82
|
-
### 2
|
|
53
|
+
### Modo 2: Pantalla de Carga / Intro Splash Screen (con Redirección Automática)
|
|
83
54
|
|
|
84
55
|
```tsx
|
|
85
56
|
"use client";
|
|
86
57
|
|
|
87
|
-
import
|
|
88
|
-
import { CinemaLoader, CinemaHome } from "3d-effect-cinema";
|
|
58
|
+
import AnimatedBackground from "3d-effect-cinema";
|
|
89
59
|
|
|
90
|
-
export default function
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
60
|
+
export default function SplashIntro() {
|
|
61
|
+
return (
|
|
62
|
+
// Mantiene la animación durante 5 segundos y luego redirecciona a /home
|
|
63
|
+
<div className="w-full h-screen">
|
|
64
|
+
<AnimatedBackground
|
|
65
|
+
title="CINEMULTIPLEX"
|
|
66
|
+
fontFamily="helvetiker"
|
|
67
|
+
effect="blobs,flames"
|
|
68
|
+
effectColor="#00e5ff"
|
|
69
|
+
loaderDuration={5}
|
|
70
|
+
redirectUrl="/home"
|
|
71
|
+
containerSelector="home"
|
|
99
72
|
/>
|
|
100
|
-
|
|
101
|
-
|
|
73
|
+
</div>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 🎨 Documentación Completa de la API
|
|
81
|
+
|
|
82
|
+
### `<AnimatedBackground />`
|
|
83
|
+
|
|
84
|
+
| Propiedad | Tipo | Valor por Defecto | Descripción |
|
|
85
|
+
| :--- | :--- | :--- | :--- |
|
|
86
|
+
| `title` | `string` | `undefined` | Texto 3D renderizado en la escena. Si se omite o se pasa `""`, queda en blanco para usarse únicamente como **fondo de efectos 3D puro**. |
|
|
87
|
+
| `containerSelector` | `string` | `undefined` | ID o selector del contenedor objetivo en el DOM (ej: `containerSelector="home"` o `containerSelector="#main-hero"`) para montarse como fondo allí. |
|
|
88
|
+
| `effect` | `SingleEffectType \| SingleEffectType[] \| string` | `"flames"` | Efecto WebGL o **combinación múltiple de efectos** (ej: `effect="blobs,onda"` o `effect={["flames", "plasma"]}`). |
|
|
89
|
+
| `effectColor` | `string` | `undefined` | Color personalizado para **TODOS** los efectos 3D activos (soporta códigos `#HEX` como `#00e676`, `#ff0055` o nombres en español como `"azul"`, `"verde"`, `"magenta"`). |
|
|
90
|
+
| `effectDensity` | `number` | `0.3` | Densidad/cantidad de partículas y llamas (`0.1` a `1.0`, por defecto `0.3` para un aspecto limpio y equilibrado). |
|
|
91
|
+
| `effectSpeed` | `number` | `0.5` | Multiplicador de velocidad de movimiento 3D (`0.1` a `2.0`, por defecto `0.5` para un movimiento suave sin mareos). |
|
|
92
|
+
| `backgroundColor` | `string` | `undefined` | Color o gradiente de fondo (soporta códigos `#HEX` como `#ffffff`, `#3b0712`, gradientes CSS o nombres en español `"rojo"`, `"azul"`, `"verde"`). |
|
|
93
|
+
| `autoFitText` | `boolean` | `true` | Escala automáticamente el texto 3D para que jamás se desborde ni se corte del contenedor padre. |
|
|
94
|
+
| `loaderDuration` | `number` | `undefined` | *(Opcional)* Duración en **segundos** para usar el componente como pantalla de carga / intro splash screen. Si no se define, se mantiene como un fondo permanente. |
|
|
95
|
+
| `redirectUrl` | `string` | `undefined` | *(Opcional)* URL o ruta a la cual redireccionar automáticamente cuando finaliza la cuenta regresiva de `loaderDuration`. |
|
|
96
|
+
| `onComplete` | `() => void` | `undefined` | *(Opcional)* Callback ejecutado al finalizar el temporizador de `loaderDuration`. |
|
|
97
|
+
| `fontFamily` | `"cinema"` \| `"helvetiker"` \| `"gentilis"` \| `"optimer"` \| `string` | `"cinema"` | Tipografía 3D elegible (`"cinema"`, `"helvetiker"`, `"gentilis"`, `"optimer"` o URL personalizada). |
|
|
98
|
+
| `fontUrl` | `string` | `undefined` | URL personalizada de un archivo Typeface JSON 3D. |
|
|
99
|
+
| `letterSpacing` | `number` | `0.85` | Multiplicador del espaciado entre letras 3D. |
|
|
100
|
+
| `containerToDisplay` | `"lhome"` \| `"home"` \| `ReactNode` | `undefined` | Plantilla de vista superpuesta ("lhome" para la landing de cine, o cualquier componente React). |
|
|
101
|
+
| `theme` | `'emerald'` \| `'crimson'` \| `'gold'` \| `'neon'` \| `'obsidian'` \| `'glass'` | `'crimson'` | Tema de luces y material 3D del texto. |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 🌟 Lista de Efectos Disponibles
|
|
106
|
+
|
|
107
|
+
| Nombre de Efecto | Valor de Prop `effect` | Icono | Descripción |
|
|
108
|
+
| :--- | :--- | :--- | :--- |
|
|
109
|
+
| **Nubes Bioluminiscentes** | `"blobs"` / `"energy-blobs"` / `"plasma-blobs"` | 🟢 | Nubes bioluminiscentes de energía líquida fusionándose suavemente. |
|
|
110
|
+
| **Llamas Orgánicas** | `"flames"` / `"fluid-flames"` / `"llamas"` | 🔥 | Partículas de llamas de fuego fluido de mezcla aditiva. |
|
|
111
|
+
| **Cristales 3D** | `"fire"` / `"crystal-flames"` / `"cristales"` | 💎 | Conos de llamas 3D de cristal facetado. |
|
|
112
|
+
| **Chispas 3D** | `"sparks"` / `"chispas"` | 💥 | Ráfagas de chispas incandescente con gravedad física. |
|
|
113
|
+
| **Onda de Choque 3D** | `"shockwave"` / `"wave"` / `"onda"` | 🌊 | Anillos emissivos de onda de choque expansivos. |
|
|
114
|
+
| **Plasma Eléctrico** | `"plasma"` / `"electric"` | ⚡ | Arcos de plasma eléctrico reactivos al cursor. |
|
|
115
|
+
| **Ascuas Ambientales** | `"embers"` / `"ascuas"` | ✨ | Ascuas y polvo estelar flotante en el aire. |
|
|
116
|
+
| **Todos los Efectos** | `"all"` / `"supernova"` / `"todos"` | 🌟 | Activa todos los efectos 3D en simultáneo. |
|
|
117
|
+
|
|
118
|
+
---
|
|
102
119
|
|
|
103
|
-
|
|
120
|
+
## 💡 Ejemplos de Uso
|
|
121
|
+
|
|
122
|
+
### 1. Fondo de Nubes Bioluminiscentes sobre Fondo Blanco (Estilo Captura)
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
import AnimatedBackground from "3d-effect-cinema";
|
|
126
|
+
|
|
127
|
+
export default function NubesVerdes() {
|
|
128
|
+
return (
|
|
129
|
+
<div className="w-full h-screen">
|
|
130
|
+
<AnimatedBackground
|
|
131
|
+
effect="blobs"
|
|
132
|
+
effectColor="#00e676"
|
|
133
|
+
backgroundColor="#ffffff"
|
|
134
|
+
effectDensity={0.4}
|
|
135
|
+
effectSpeed={0.5}
|
|
136
|
+
/>
|
|
137
|
+
</div>
|
|
138
|
+
);
|
|
104
139
|
}
|
|
105
140
|
```
|
|
106
141
|
|
|
107
142
|
---
|
|
108
143
|
|
|
109
|
-
|
|
144
|
+
### 2. Multi-Selección de Efectos (`effect="llamas,onda,plasma"`)
|
|
110
145
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
146
|
+
```tsx
|
|
147
|
+
import AnimatedBackground from "3d-effect-cinema";
|
|
148
|
+
|
|
149
|
+
export default function MultiEfectos() {
|
|
150
|
+
return (
|
|
151
|
+
<div className="w-full h-[600px]">
|
|
152
|
+
<AnimatedBackground
|
|
153
|
+
title="UNITED OF WEB"
|
|
154
|
+
fontFamily="helvetiker"
|
|
155
|
+
effect="llamas,onda,plasma"
|
|
156
|
+
effectColor="#00e5ff"
|
|
157
|
+
backgroundColor="#021a38"
|
|
158
|
+
letterSpacing={0.85}
|
|
159
|
+
/>
|
|
160
|
+
</div>
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
119
164
|
|
|
120
165
|
---
|
|
121
166
|
|
|
122
|
-
|
|
167
|
+
### 3. Pantalla de Carga de 5 Segundos con Redirección y Selector de Contenedor DOM
|
|
123
168
|
|
|
124
|
-
|
|
169
|
+
```tsx
|
|
170
|
+
import AnimatedBackground from "3d-effect-cinema";
|
|
125
171
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
172
|
+
export default function SplashIntro() {
|
|
173
|
+
return (
|
|
174
|
+
<div id="home" className="w-full h-screen">
|
|
175
|
+
<AnimatedBackground
|
|
176
|
+
title="CINEMULTIPLEX"
|
|
177
|
+
fontFamily="helvetiker"
|
|
178
|
+
effect="blobs,flames"
|
|
179
|
+
effectColor="#00e5ff"
|
|
180
|
+
loaderDuration={5}
|
|
181
|
+
redirectUrl="/home"
|
|
182
|
+
containerSelector="home"
|
|
183
|
+
/>
|
|
184
|
+
</div>
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
```
|
|
133
188
|
|
|
134
189
|
---
|
|
135
190
|
|
|
136
|
-
|
|
191
|
+
## 🖱️ Interactividad Clic & Drag
|
|
137
192
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
193
|
+
Al hacer **clic o arrastrar el ratón/touch** sobre la escena 3D, brotan ráfagas instantáneas del efecto activo **en las coordenadas exactas del puntero**.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 👤 Autor y Desarrollador
|
|
198
|
+
|
|
199
|
+
Creado con ❤️ por **Esteban Puentes**
|
|
200
|
+
|
|
201
|
+
- 🌐 **Portafolio**: [esteban-puentes.vercel.app](https://esteban-puentes.vercel.app)
|
|
202
|
+
- 💼 **LinkedIn**: [linkedin.com/in/esteban-puentes](https://www.linkedin.com/in/esteban-puentes/)
|
|
203
|
+
- 🚀 **Demo en Vivo**: [cinema-animation-sample.vercel.app](https://cinema-animation-sample.vercel.app)
|
|
144
204
|
|
|
145
205
|
---
|
|
146
206
|
|
|
147
|
-
## 📝
|
|
207
|
+
## 📝 Licencia
|
|
148
208
|
|
|
149
|
-
MIT © [Esteban](https://github.com/esteban284)
|
|
209
|
+
MIT © [Esteban Puentes](https://github.com/esteban284)
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
+
import react__default from 'react';
|
|
2
3
|
|
|
3
4
|
type MaterialTheme = "gold" | "neon" | "emerald" | "crimson" | "obsidian" | "glass";
|
|
4
5
|
interface AnimatedLetterProps {
|
|
@@ -12,57 +13,193 @@ interface AnimatedLetterProps {
|
|
|
12
13
|
}
|
|
13
14
|
declare function AnimatedLetter({ char, index, totalLetters, position, phase, theme, fontUrl, }: AnimatedLetterProps): react.JSX.Element | null;
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
type SingleEffectType = "fire" | "flames" | "crystal-flames" | "fluid-flames" | "blobs" | "energy-blobs" | "plasma-blobs" | "inferno" | "sparks" | "shockwave" | "wave" | "plasma" | "electric" | "embers" | "supernova" | "all";
|
|
17
|
+
type EffectType = SingleEffectType | SingleEffectType[] | string;
|
|
18
|
+
interface AnimatedBackgroundProps {
|
|
19
|
+
/** View template or component to display ("lhome", "home", or custom React component) */
|
|
20
|
+
containerToDisplay?: string | react__default.ReactNode;
|
|
21
|
+
/** DOM element ID/class or container target to attach as background (e.g. "home", "#main-hero", "lhome") */
|
|
22
|
+
containerSelector?: string;
|
|
23
|
+
/** 3D Effect type or multiple effects (e.g. "blobs,onda" or ["flames", "shockwave"]) */
|
|
24
|
+
effect?: EffectType;
|
|
25
|
+
/** 3D Title rendered in world space (omit or pass "" for blank pure background effects) */
|
|
26
|
+
title?: string;
|
|
27
|
+
/** Background color or gradient (supports Spanish names like "rojo", "azul", "verde", "dorado" or #HEX / CSS colors) */
|
|
28
|
+
backgroundColor?: string;
|
|
29
|
+
/** Custom color for ALL 3D WebGL effects (e.g. "azul", "verde", "magenta", "#00e5ff", "#ff0055") */
|
|
30
|
+
effectColor?: string;
|
|
31
|
+
/** Speed multiplier for 3D motion & animation (default 0.5 for smooth relaxing motion) */
|
|
32
|
+
effectSpeed?: number;
|
|
33
|
+
/** Density / quantity of flame & WebGL particles (range 0.1 to 1.0, default 0.3 for clean elegant flames) */
|
|
34
|
+
effectDensity?: number;
|
|
35
|
+
/** Automatically scale 3D text to fit parent container perfectly (default true) */
|
|
36
|
+
autoFitText?: boolean;
|
|
37
|
+
/** Optional duration in seconds when used as a Loader / Splash screen animation */
|
|
38
|
+
loaderDuration?: number;
|
|
39
|
+
/** Optional URL to redirect to automatically when loaderDuration timer reaches 0 */
|
|
40
|
+
redirectUrl?: string;
|
|
41
|
+
/** Optional callback triggered when loaderDuration timer finishes */
|
|
42
|
+
onComplete?: () => void;
|
|
43
|
+
/** 3D Font Family ("cinema", "helvetiker", "gentilis", "optimer" or custom font URL) */
|
|
44
|
+
fontFamily?: "cinema" | "helvetiker" | "gentilis" | "optimer" | string;
|
|
45
|
+
/** Custom 3D Typeface JSON URL */
|
|
46
|
+
fontUrl?: string;
|
|
47
|
+
/** 3D Material theme */
|
|
48
|
+
theme?: MaterialTheme;
|
|
49
|
+
/** Letter spacing multiplier (default 0.85 to prevent text overlaps) */
|
|
50
|
+
letterSpacing?: number;
|
|
51
|
+
/** Container CSS class name */
|
|
52
|
+
className?: string;
|
|
53
|
+
/** Inline CSS styles */
|
|
54
|
+
style?: react__default.CSSProperties;
|
|
55
|
+
/** Custom children overlay */
|
|
56
|
+
children?: react__default.ReactNode;
|
|
17
57
|
}
|
|
18
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Main Animated Background Component for 3d-effect-cinema.
|
|
60
|
+
* Supports permanent 3D background mode OR cinematic Splash Screen / Loader mode (with loaderDuration & redirectUrl).
|
|
61
|
+
* Can be targeted to a DOM container via `containerSelector` (e.g. containerSelector="home").
|
|
62
|
+
*/
|
|
63
|
+
declare function AnimatedBackground({ containerToDisplay, containerSelector, effect, title, backgroundColor, effectColor, effectSpeed, effectDensity, autoFitText, loaderDuration, redirectUrl, onComplete, fontFamily, fontUrl, theme, letterSpacing, className, style, children, }: AnimatedBackgroundProps): react__default.JSX.Element;
|
|
64
|
+
|
|
65
|
+
interface CinemaBackgroundProps {
|
|
66
|
+
/** 3D Text rendered in world space */
|
|
67
|
+
text?: string;
|
|
68
|
+
/** Active material & lighting theme */
|
|
69
|
+
theme?: MaterialTheme;
|
|
70
|
+
/** Custom CSS gradient or solid color */
|
|
71
|
+
customBackground?: string;
|
|
72
|
+
/** Enable/disable 3D fire sparks on click */
|
|
73
|
+
interactiveSparks?: boolean;
|
|
74
|
+
/** Enable/disable 3D shockwave rings on click */
|
|
75
|
+
interactiveShockwave?: boolean;
|
|
76
|
+
/** Enable/disable electric plasma arcs */
|
|
77
|
+
interactivePlasma?: boolean;
|
|
78
|
+
/** Enable/disable ambient floating particle embers */
|
|
79
|
+
showParticles?: boolean;
|
|
80
|
+
/** Enable bloom glow effect */
|
|
81
|
+
enableBloom?: boolean;
|
|
82
|
+
/** Optional container CSS class name */
|
|
83
|
+
className?: string;
|
|
84
|
+
/** Optional inline container styles */
|
|
85
|
+
style?: React.CSSProperties;
|
|
86
|
+
/** Children React nodes rendered on top of the 3D canvas */
|
|
87
|
+
children?: React.ReactNode;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Highly customizable 3D Cinema WebGL Background Component.
|
|
91
|
+
* Fits dynamically into any HTML parent container (div, header, section, card).
|
|
92
|
+
*/
|
|
93
|
+
declare function CinemaBackground({ text, theme, customBackground, interactiveSparks, interactiveShockwave, interactivePlasma, showParticles, enableBloom, className, style, children, }: CinemaBackgroundProps): react.JSX.Element;
|
|
94
|
+
|
|
95
|
+
interface WithCinema3DOptions extends Omit<CinemaBackgroundProps, "children"> {
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Higher-Order Component (HOC) that wraps any React component with the 3D WebGL Cinema background.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* const HeroWith3D = withCinema3D(MyHeroComponent, {
|
|
102
|
+
* text: "UNITED OF WEB",
|
|
103
|
+
* theme: "emerald",
|
|
104
|
+
* interactiveSparks: true,
|
|
105
|
+
* interactiveShockwave: true,
|
|
106
|
+
* });
|
|
107
|
+
*/
|
|
108
|
+
declare function withCinema3D<P extends object>(WrappedComponent: react__default.ComponentType<P>, hocOptions?: WithCinema3DOptions): {
|
|
109
|
+
(props: P): react__default.JSX.Element;
|
|
110
|
+
displayName: string;
|
|
111
|
+
};
|
|
19
112
|
|
|
20
113
|
interface CinemaLoaderProps {
|
|
21
114
|
cinemaName?: string;
|
|
22
115
|
defaultTheme?: MaterialTheme;
|
|
23
116
|
customBackground?: string;
|
|
24
|
-
onEnterCinema
|
|
117
|
+
onEnterCinema?: () => void;
|
|
25
118
|
}
|
|
26
119
|
declare function CinemaLoader({ cinemaName, defaultTheme, customBackground, onEnterCinema, }: CinemaLoaderProps): react.JSX.Element;
|
|
27
120
|
|
|
28
|
-
|
|
121
|
+
interface FireFlamesProps {
|
|
122
|
+
theme?: MaterialTheme;
|
|
123
|
+
effectColor?: string;
|
|
124
|
+
effectSpeed?: number;
|
|
125
|
+
effectDensity?: number;
|
|
126
|
+
mode?: "fluid" | "crystal" | "all";
|
|
127
|
+
enabled?: boolean;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Dual-Engine Fire Flames Component:
|
|
131
|
+
* Offers both Organic Liquid Energy Flame Clouds (mode="fluid") and 3D Crystal Flame Geometries (mode="crystal" or mode="all")
|
|
132
|
+
*/
|
|
133
|
+
declare function FireFlames({ theme, effectColor, effectSpeed, effectDensity, mode, enabled, }: FireFlamesProps): react.JSX.Element | null;
|
|
134
|
+
|
|
135
|
+
interface PlasmaBlobsProps {
|
|
136
|
+
theme?: MaterialTheme;
|
|
137
|
+
effectColor?: string;
|
|
138
|
+
effectSpeed?: number;
|
|
139
|
+
effectDensity?: number;
|
|
140
|
+
enabled?: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Exact Bioluminescent Liquid Energy Blobs Effect (matching user screenshot)
|
|
144
|
+
*/
|
|
145
|
+
declare function PlasmaBlobs({ theme, effectColor, effectSpeed, effectDensity, enabled, }: PlasmaBlobsProps): react.JSX.Element | null;
|
|
146
|
+
|
|
147
|
+
declare function ClickFireSparks({ theme, effectColor, effectSpeed, enabled, }: {
|
|
29
148
|
theme?: MaterialTheme;
|
|
149
|
+
effectColor?: string;
|
|
150
|
+
effectSpeed?: number;
|
|
151
|
+
enabled?: boolean;
|
|
30
152
|
}): react.JSX.Element;
|
|
31
153
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
154
|
+
declare function ClickShockwave({ theme, effectColor, effectSpeed, enabled, }: {
|
|
155
|
+
theme?: MaterialTheme;
|
|
156
|
+
effectColor?: string;
|
|
157
|
+
effectSpeed?: number;
|
|
158
|
+
enabled?: boolean;
|
|
159
|
+
}): react.JSX.Element | null;
|
|
160
|
+
|
|
161
|
+
interface ElectricPlasmaProps {
|
|
162
|
+
theme?: MaterialTheme;
|
|
163
|
+
effectColor?: string;
|
|
164
|
+
effectSpeed?: number;
|
|
165
|
+
enabled?: boolean;
|
|
38
166
|
}
|
|
39
|
-
declare function
|
|
167
|
+
declare function ElectricPlasma({ theme, effectColor, effectSpeed, enabled, }: ElectricPlasmaProps): react.JSX.Element | null;
|
|
40
168
|
|
|
41
169
|
interface SceneParticlesProps {
|
|
42
170
|
theme: MaterialTheme;
|
|
171
|
+
effectColor?: string;
|
|
172
|
+
effectSpeed?: number;
|
|
43
173
|
visible: boolean;
|
|
44
174
|
}
|
|
45
|
-
declare function SceneParticles({ theme, visible }: SceneParticlesProps): react.JSX.Element | null;
|
|
175
|
+
declare function SceneParticles({ theme, effectColor, effectSpeed, visible }: SceneParticlesProps): react.JSX.Element | null;
|
|
46
176
|
|
|
47
|
-
interface
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
customBackground?: string;
|
|
51
|
-
interactiveSparks?: boolean;
|
|
52
|
-
showParticles?: boolean;
|
|
53
|
-
className?: string;
|
|
54
|
-
style?: React.CSSProperties;
|
|
55
|
-
children?: React.ReactNode;
|
|
177
|
+
interface CameraRigProps {
|
|
178
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
179
|
+
effectSpeed?: number;
|
|
56
180
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
181
|
+
declare function CameraRig({ phase, effectSpeed }: CameraRigProps): null;
|
|
182
|
+
|
|
183
|
+
interface EffectState {
|
|
184
|
+
sparks: boolean;
|
|
185
|
+
shockwave: boolean;
|
|
186
|
+
plasma: boolean;
|
|
187
|
+
embers: boolean;
|
|
188
|
+
}
|
|
189
|
+
interface LoaderOverlayProps {
|
|
190
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
191
|
+
cinemaName: string;
|
|
192
|
+
theme: MaterialTheme;
|
|
193
|
+
effects: EffectState;
|
|
194
|
+
onTitleChange: (newTitle: string) => void;
|
|
195
|
+
onThemeChange: (theme: MaterialTheme) => void;
|
|
196
|
+
onToggleEffect: (effectName: keyof EffectState) => void;
|
|
197
|
+
}
|
|
198
|
+
declare function LoaderOverlay({ phase, cinemaName, theme, effects, onTitleChange, onThemeChange, onToggleEffect, }: LoaderOverlayProps): react.JSX.Element;
|
|
62
199
|
|
|
63
200
|
declare function CinemaHome({ cinemaName, webTheme }: {
|
|
64
201
|
cinemaName?: string;
|
|
65
202
|
webTheme?: string;
|
|
66
203
|
}): react.JSX.Element;
|
|
67
204
|
|
|
68
|
-
export { AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, LoaderOverlay, type MaterialTheme, SceneParticles };
|
|
205
|
+
export { AnimatedBackground, type AnimatedBackgroundProps, AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, ClickShockwave, type EffectState, type EffectType, ElectricPlasma, FireFlames, LoaderOverlay, type MaterialTheme, PlasmaBlobs, SceneParticles, type WithCinema3DOptions, AnimatedBackground as default, withCinema3D };
|