3d-effect-cinema 0.2.0 → 0.3.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 +74 -80
- package/dist/index.d.mts +80 -27
- package/dist/index.d.ts +80 -27
- 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
|
-
> High-performance, customizable 3D Cinema
|
|
3
|
+
> High-performance, highly customizable 3D Cinema WebGL Experience, HOC & Dynamic Background for React and Next.js powered by `@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,34 +9,29 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
## 🚀 Live Demo
|
|
12
|
+
## 🚀 Live Demo
|
|
13
13
|
|
|
14
14
|
👉 **[Ver Demo en Vivo (Vercel)](https://cinema-animation-sample.vercel.app)**
|
|
15
15
|
|
|
16
|
-
```
|
|
17
|
-
+-------------------------------------------------------------------------------+
|
|
18
|
-
| 🌟 CINEMULTIPLEX 3D - Fire Sparks & Dynamic WebGL Hero Background |
|
|
19
|
-
| [ Gold ] [ Neon ] [ Emerald ] [ Crimson ] [ Obsidian ] [ Glass ] |
|
|
20
|
-
+-------------------------------------------------------------------------------+
|
|
21
|
-
```
|
|
22
|
-
|
|
23
16
|
---
|
|
24
17
|
|
|
25
18
|
## ✨ Features
|
|
26
19
|
|
|
27
|
-
-
|
|
28
|
-
- 🖼️ **Dynamic
|
|
29
|
-
-
|
|
20
|
+
- 🪄 **Higher-Order Component (`withCinema3D`)**: Easily wrap any React component with a dynamic 3D WebGL background.
|
|
21
|
+
- 🖼️ **Dynamic Container Background (`<CinemaBackground />`)**: Fits inside any parent container (`div`, `header`, `section`, `card`) with responsive auto-resizing.
|
|
22
|
+
- ✍️ **Live 3D Title Control**: Dynamic text input that updates the 3D typography in real-time.
|
|
23
|
+
- 🎛️ **Interactive FX Toggles Bar**: Toggle buttons to control 3D Fire Sparks, Shockwave rings, Electric Plasma, and Ambient Embers.
|
|
24
|
+
- 💥 **Multiple Interactive 3D Effects**:
|
|
25
|
+
- 🔥 **`ClickFireSparks`**: Explosive fire ember burst & local point light flash on click.
|
|
26
|
+
- 🌊 **`ClickShockwave`**: Expanding 3D energy ring wave on click.
|
|
27
|
+
- ⚡ **`ElectricPlasma`**: Interactive electric plasma tendrils reacting to pointer movement.
|
|
28
|
+
- ✨ **`SceneParticles`**: Thermal rising ambient embers.
|
|
30
29
|
- 🎨 **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.
|
|
33
30
|
|
|
34
31
|
---
|
|
35
32
|
|
|
36
33
|
## 📦 Installation
|
|
37
34
|
|
|
38
|
-
Install the package and its peer dependencies in your React / Next.js project:
|
|
39
|
-
|
|
40
35
|
```bash
|
|
41
36
|
npm install 3d-effect-cinema three @react-three/fiber @react-three/drei @react-three/postprocessing postprocessing
|
|
42
37
|
```
|
|
@@ -45,102 +40,101 @@ npm install 3d-effect-cinema three @react-three/fiber @react-three/drei @react-t
|
|
|
45
40
|
|
|
46
41
|
## 🚀 Usage Examples
|
|
47
42
|
|
|
48
|
-
### 1.
|
|
43
|
+
### 1. Using the HOC (`withCinema3D`)
|
|
49
44
|
|
|
50
|
-
|
|
45
|
+
Wrap any existing React component with the 3D WebGL background:
|
|
51
46
|
|
|
52
47
|
```tsx
|
|
53
48
|
"use client";
|
|
54
49
|
|
|
55
|
-
import {
|
|
50
|
+
import { withCinema3D } from "3d-effect-cinema";
|
|
56
51
|
|
|
57
|
-
|
|
52
|
+
function LandingHero() {
|
|
58
53
|
return (
|
|
59
|
-
<div className="
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<div className="text-center text-white pointer-events-auto">
|
|
67
|
-
<h2 className="text-4xl font-bold tracking-widest uppercase">
|
|
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>
|
|
54
|
+
<div className="text-center text-white py-24">
|
|
55
|
+
<h1 className="text-5xl font-bold uppercase tracking-widest">
|
|
56
|
+
Enterprise Solutions
|
|
57
|
+
</h1>
|
|
58
|
+
<p className="mt-4 text-white/70 max-w-xl mx-auto">
|
|
59
|
+
Build high-performance 3D web experiences effortlessly.
|
|
60
|
+
</p>
|
|
75
61
|
</div>
|
|
76
62
|
);
|
|
77
63
|
}
|
|
64
|
+
|
|
65
|
+
// Export wrapped with 3D Cinema background
|
|
66
|
+
export default withCinema3D(LandingHero, {
|
|
67
|
+
text: "UNITED OF WEB",
|
|
68
|
+
theme: "emerald",
|
|
69
|
+
interactiveSparks: true,
|
|
70
|
+
interactiveShockwave: true,
|
|
71
|
+
interactivePlasma: true,
|
|
72
|
+
});
|
|
78
73
|
```
|
|
79
74
|
|
|
80
75
|
---
|
|
81
76
|
|
|
82
|
-
### 2.
|
|
77
|
+
### 2. Using the Component (`<CinemaBackground />`)
|
|
78
|
+
|
|
79
|
+
Embed directly inside any container in your layout:
|
|
83
80
|
|
|
84
81
|
```tsx
|
|
85
82
|
"use client";
|
|
86
83
|
|
|
87
|
-
import {
|
|
88
|
-
import { CinemaLoader, CinemaHome } from "3d-effect-cinema";
|
|
89
|
-
|
|
90
|
-
export default function App() {
|
|
91
|
-
const [loaded, setLoaded] = useState(false);
|
|
92
|
-
|
|
93
|
-
if (!loaded) {
|
|
94
|
-
return (
|
|
95
|
-
<CinemaLoader
|
|
96
|
-
cinemaName="NOVA CINEMA"
|
|
97
|
-
defaultTheme="emerald"
|
|
98
|
-
onEnterCinema={() => setLoaded(true)}
|
|
99
|
-
/>
|
|
100
|
-
);
|
|
101
|
-
}
|
|
84
|
+
import { CinemaBackground } from "3d-effect-cinema";
|
|
102
85
|
|
|
103
|
-
|
|
86
|
+
export default function CustomCard() {
|
|
87
|
+
return (
|
|
88
|
+
<div className="w-full h-[500px] rounded-2xl overflow-hidden shadow-2xl">
|
|
89
|
+
<CinemaBackground
|
|
90
|
+
text="CREATIVE"
|
|
91
|
+
theme="crimson"
|
|
92
|
+
interactiveSparks={true}
|
|
93
|
+
interactivePlasma={true}
|
|
94
|
+
>
|
|
95
|
+
<button className="px-8 py-3 bg-red-600 hover:bg-red-500 text-white font-bold uppercase rounded-full">
|
|
96
|
+
Get Started
|
|
97
|
+
</button>
|
|
98
|
+
</CinemaBackground>
|
|
99
|
+
</div>
|
|
100
|
+
);
|
|
104
101
|
}
|
|
105
102
|
```
|
|
106
103
|
|
|
107
104
|
---
|
|
108
105
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
| Theme | Description | Visual Style |
|
|
112
|
-
| :--- | :--- | :--- |
|
|
113
|
-
| `emerald` | Deep Matrix green green metallic glow with emerald embers | 💚 Matrix Luxe |
|
|
114
|
-
| `crimson` | Fiery ruby red emissive metal with flame embers | ❤️ Ruby Fire |
|
|
115
|
-
| `gold` | High-metallic polished gold with warm ambient glow | 🌟 Luxe Gold |
|
|
116
|
-
| `neon` | Cyberpunk cyan with vibrant emissive bloom | ⚡ Cyberpunk Neon |
|
|
117
|
-
| `obsidian` | Deep glossy purple mineral with high environment reflection | 💜 Obsidian Dark |
|
|
118
|
-
| `glass` | Refractive glass material with chromatic dispersion | 💎 Refractive Glass |
|
|
119
|
-
|
|
120
|
-
---
|
|
106
|
+
### 3. Full Interactive Playground & Loader (`<CinemaLoader />`)
|
|
121
107
|
|
|
122
|
-
|
|
108
|
+
```tsx
|
|
109
|
+
"use client";
|
|
123
110
|
|
|
124
|
-
|
|
111
|
+
import { CinemaLoader } from "3d-effect-cinema";
|
|
125
112
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
113
|
+
export default function InteractiveDemo() {
|
|
114
|
+
return (
|
|
115
|
+
<CinemaLoader
|
|
116
|
+
cinemaName="NOVA CINEMA"
|
|
117
|
+
defaultTheme="emerald"
|
|
118
|
+
/>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
```
|
|
133
122
|
|
|
134
123
|
---
|
|
135
124
|
|
|
136
|
-
|
|
125
|
+
## 🛠️ Props Reference
|
|
126
|
+
|
|
127
|
+
### `<CinemaBackground />` & `withCinema3D(Component, options)`
|
|
137
128
|
|
|
138
|
-
| Prop | Type | Default | Description |
|
|
129
|
+
| Prop / Option | Type | Default | Description |
|
|
139
130
|
| :--- | :--- | :--- | :--- |
|
|
140
|
-
| `
|
|
141
|
-
| `
|
|
142
|
-
| `customBackground` | `string` | `undefined` |
|
|
143
|
-
| `
|
|
131
|
+
| `text` | `string` | `"CINEMA"` | 3D Text rendered in world space |
|
|
132
|
+
| `theme` | `'emerald' \| 'crimson' \| 'gold' \| 'neon' \| 'obsidian' \| 'glass'` | `'emerald'` | Material & lighting preset |
|
|
133
|
+
| `customBackground` | `string` | `undefined` | Custom CSS gradient or color |
|
|
134
|
+
| `interactiveSparks` | `boolean` | `true` | Enable/disable fire sparks on click |
|
|
135
|
+
| `interactiveShockwave` | `boolean` | `true` | Enable/disable shockwave rings on click |
|
|
136
|
+
| `interactivePlasma` | `boolean` | `true` | Enable/disable electric plasma arcs |
|
|
137
|
+
| `showParticles` | `boolean` | `true` | Enable/disable ambient floating embers |
|
|
144
138
|
|
|
145
139
|
---
|
|
146
140
|
|
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,31 +13,77 @@ interface AnimatedLetterProps {
|
|
|
12
13
|
}
|
|
13
14
|
declare function AnimatedLetter({ char, index, totalLetters, position, phase, theme, fontUrl, }: AnimatedLetterProps): react.JSX.Element | null;
|
|
14
15
|
|
|
15
|
-
interface
|
|
16
|
-
|
|
16
|
+
interface CinemaBackgroundProps {
|
|
17
|
+
/** 3D Text rendered in world space */
|
|
18
|
+
text?: string;
|
|
19
|
+
/** Active material & lighting theme */
|
|
20
|
+
theme?: MaterialTheme;
|
|
21
|
+
/** Custom CSS gradient or solid color */
|
|
22
|
+
customBackground?: string;
|
|
23
|
+
/** Enable/disable 3D fire sparks on click */
|
|
24
|
+
interactiveSparks?: boolean;
|
|
25
|
+
/** Enable/disable 3D shockwave rings on click */
|
|
26
|
+
interactiveShockwave?: boolean;
|
|
27
|
+
/** Enable/disable electric plasma arcs */
|
|
28
|
+
interactivePlasma?: boolean;
|
|
29
|
+
/** Enable/disable ambient floating particle embers */
|
|
30
|
+
showParticles?: boolean;
|
|
31
|
+
/** Enable bloom glow effect */
|
|
32
|
+
enableBloom?: boolean;
|
|
33
|
+
/** Optional container CSS class name */
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Optional inline container styles */
|
|
36
|
+
style?: React.CSSProperties;
|
|
37
|
+
/** Children React nodes rendered on top of the 3D canvas */
|
|
38
|
+
children?: React.ReactNode;
|
|
17
39
|
}
|
|
18
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Highly customizable 3D Cinema WebGL Background Component.
|
|
42
|
+
* Fits dynamically into any HTML parent container (div, header, section, card).
|
|
43
|
+
*/
|
|
44
|
+
declare function CinemaBackground({ text, theme, customBackground, interactiveSparks, interactiveShockwave, interactivePlasma, showParticles, enableBloom, className, style, children, }: CinemaBackgroundProps): react.JSX.Element;
|
|
45
|
+
|
|
46
|
+
interface WithCinema3DOptions extends Omit<CinemaBackgroundProps, "children"> {
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Higher-Order Component (HOC) that wraps any React component with the 3D WebGL Cinema background.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* const HeroWith3D = withCinema3D(MyHeroComponent, {
|
|
53
|
+
* text: "UNITED OF WEB",
|
|
54
|
+
* theme: "emerald",
|
|
55
|
+
* interactiveSparks: true,
|
|
56
|
+
* interactiveShockwave: true,
|
|
57
|
+
* });
|
|
58
|
+
*/
|
|
59
|
+
declare function withCinema3D<P extends object>(WrappedComponent: react__default.ComponentType<P>, hocOptions?: WithCinema3DOptions): {
|
|
60
|
+
(props: P): react__default.JSX.Element;
|
|
61
|
+
displayName: string;
|
|
62
|
+
};
|
|
19
63
|
|
|
20
64
|
interface CinemaLoaderProps {
|
|
21
65
|
cinemaName?: string;
|
|
22
66
|
defaultTheme?: MaterialTheme;
|
|
23
67
|
customBackground?: string;
|
|
24
|
-
onEnterCinema
|
|
68
|
+
onEnterCinema?: () => void;
|
|
25
69
|
}
|
|
26
70
|
declare function CinemaLoader({ cinemaName, defaultTheme, customBackground, onEnterCinema, }: CinemaLoaderProps): react.JSX.Element;
|
|
27
71
|
|
|
28
|
-
declare function ClickFireSparks({ theme }: {
|
|
72
|
+
declare function ClickFireSparks({ theme, enabled, }: {
|
|
29
73
|
theme?: MaterialTheme;
|
|
74
|
+
enabled?: boolean;
|
|
30
75
|
}): react.JSX.Element;
|
|
31
76
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
77
|
+
declare function ClickShockwave({ theme, enabled, }: {
|
|
78
|
+
theme?: MaterialTheme;
|
|
79
|
+
enabled?: boolean;
|
|
80
|
+
}): react.JSX.Element | null;
|
|
81
|
+
|
|
82
|
+
interface ElectricPlasmaProps {
|
|
83
|
+
theme?: MaterialTheme;
|
|
84
|
+
enabled?: boolean;
|
|
38
85
|
}
|
|
39
|
-
declare function
|
|
86
|
+
declare function ElectricPlasma({ theme, enabled, }: ElectricPlasmaProps): react.JSX.Element | null;
|
|
40
87
|
|
|
41
88
|
interface SceneParticlesProps {
|
|
42
89
|
theme: MaterialTheme;
|
|
@@ -44,25 +91,31 @@ interface SceneParticlesProps {
|
|
|
44
91
|
}
|
|
45
92
|
declare function SceneParticles({ theme, visible }: SceneParticlesProps): react.JSX.Element | null;
|
|
46
93
|
|
|
47
|
-
interface
|
|
48
|
-
|
|
49
|
-
theme?: MaterialTheme;
|
|
50
|
-
customBackground?: string;
|
|
51
|
-
interactiveSparks?: boolean;
|
|
52
|
-
showParticles?: boolean;
|
|
53
|
-
className?: string;
|
|
54
|
-
style?: React.CSSProperties;
|
|
55
|
-
children?: React.ReactNode;
|
|
94
|
+
interface CameraRigProps {
|
|
95
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
56
96
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
97
|
+
declare function CameraRig({ phase }: CameraRigProps): null;
|
|
98
|
+
|
|
99
|
+
interface EffectState {
|
|
100
|
+
sparks: boolean;
|
|
101
|
+
shockwave: boolean;
|
|
102
|
+
plasma: boolean;
|
|
103
|
+
embers: boolean;
|
|
104
|
+
}
|
|
105
|
+
interface LoaderOverlayProps {
|
|
106
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
107
|
+
cinemaName: string;
|
|
108
|
+
theme: MaterialTheme;
|
|
109
|
+
effects: EffectState;
|
|
110
|
+
onTitleChange: (newTitle: string) => void;
|
|
111
|
+
onThemeChange: (theme: MaterialTheme) => void;
|
|
112
|
+
onToggleEffect: (effectName: keyof EffectState) => void;
|
|
113
|
+
}
|
|
114
|
+
declare function LoaderOverlay({ phase, cinemaName, theme, effects, onTitleChange, onThemeChange, onToggleEffect, }: LoaderOverlayProps): react.JSX.Element;
|
|
62
115
|
|
|
63
116
|
declare function CinemaHome({ cinemaName, webTheme }: {
|
|
64
117
|
cinemaName?: string;
|
|
65
118
|
webTheme?: string;
|
|
66
119
|
}): react.JSX.Element;
|
|
67
120
|
|
|
68
|
-
export { AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, LoaderOverlay, type MaterialTheme, SceneParticles };
|
|
121
|
+
export { AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, ClickShockwave, type EffectState, ElectricPlasma, LoaderOverlay, type MaterialTheme, SceneParticles, type WithCinema3DOptions, withCinema3D };
|
package/dist/index.d.ts
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,31 +13,77 @@ interface AnimatedLetterProps {
|
|
|
12
13
|
}
|
|
13
14
|
declare function AnimatedLetter({ char, index, totalLetters, position, phase, theme, fontUrl, }: AnimatedLetterProps): react.JSX.Element | null;
|
|
14
15
|
|
|
15
|
-
interface
|
|
16
|
-
|
|
16
|
+
interface CinemaBackgroundProps {
|
|
17
|
+
/** 3D Text rendered in world space */
|
|
18
|
+
text?: string;
|
|
19
|
+
/** Active material & lighting theme */
|
|
20
|
+
theme?: MaterialTheme;
|
|
21
|
+
/** Custom CSS gradient or solid color */
|
|
22
|
+
customBackground?: string;
|
|
23
|
+
/** Enable/disable 3D fire sparks on click */
|
|
24
|
+
interactiveSparks?: boolean;
|
|
25
|
+
/** Enable/disable 3D shockwave rings on click */
|
|
26
|
+
interactiveShockwave?: boolean;
|
|
27
|
+
/** Enable/disable electric plasma arcs */
|
|
28
|
+
interactivePlasma?: boolean;
|
|
29
|
+
/** Enable/disable ambient floating particle embers */
|
|
30
|
+
showParticles?: boolean;
|
|
31
|
+
/** Enable bloom glow effect */
|
|
32
|
+
enableBloom?: boolean;
|
|
33
|
+
/** Optional container CSS class name */
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Optional inline container styles */
|
|
36
|
+
style?: React.CSSProperties;
|
|
37
|
+
/** Children React nodes rendered on top of the 3D canvas */
|
|
38
|
+
children?: React.ReactNode;
|
|
17
39
|
}
|
|
18
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Highly customizable 3D Cinema WebGL Background Component.
|
|
42
|
+
* Fits dynamically into any HTML parent container (div, header, section, card).
|
|
43
|
+
*/
|
|
44
|
+
declare function CinemaBackground({ text, theme, customBackground, interactiveSparks, interactiveShockwave, interactivePlasma, showParticles, enableBloom, className, style, children, }: CinemaBackgroundProps): react.JSX.Element;
|
|
45
|
+
|
|
46
|
+
interface WithCinema3DOptions extends Omit<CinemaBackgroundProps, "children"> {
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Higher-Order Component (HOC) that wraps any React component with the 3D WebGL Cinema background.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* const HeroWith3D = withCinema3D(MyHeroComponent, {
|
|
53
|
+
* text: "UNITED OF WEB",
|
|
54
|
+
* theme: "emerald",
|
|
55
|
+
* interactiveSparks: true,
|
|
56
|
+
* interactiveShockwave: true,
|
|
57
|
+
* });
|
|
58
|
+
*/
|
|
59
|
+
declare function withCinema3D<P extends object>(WrappedComponent: react__default.ComponentType<P>, hocOptions?: WithCinema3DOptions): {
|
|
60
|
+
(props: P): react__default.JSX.Element;
|
|
61
|
+
displayName: string;
|
|
62
|
+
};
|
|
19
63
|
|
|
20
64
|
interface CinemaLoaderProps {
|
|
21
65
|
cinemaName?: string;
|
|
22
66
|
defaultTheme?: MaterialTheme;
|
|
23
67
|
customBackground?: string;
|
|
24
|
-
onEnterCinema
|
|
68
|
+
onEnterCinema?: () => void;
|
|
25
69
|
}
|
|
26
70
|
declare function CinemaLoader({ cinemaName, defaultTheme, customBackground, onEnterCinema, }: CinemaLoaderProps): react.JSX.Element;
|
|
27
71
|
|
|
28
|
-
declare function ClickFireSparks({ theme }: {
|
|
72
|
+
declare function ClickFireSparks({ theme, enabled, }: {
|
|
29
73
|
theme?: MaterialTheme;
|
|
74
|
+
enabled?: boolean;
|
|
30
75
|
}): react.JSX.Element;
|
|
31
76
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
77
|
+
declare function ClickShockwave({ theme, enabled, }: {
|
|
78
|
+
theme?: MaterialTheme;
|
|
79
|
+
enabled?: boolean;
|
|
80
|
+
}): react.JSX.Element | null;
|
|
81
|
+
|
|
82
|
+
interface ElectricPlasmaProps {
|
|
83
|
+
theme?: MaterialTheme;
|
|
84
|
+
enabled?: boolean;
|
|
38
85
|
}
|
|
39
|
-
declare function
|
|
86
|
+
declare function ElectricPlasma({ theme, enabled, }: ElectricPlasmaProps): react.JSX.Element | null;
|
|
40
87
|
|
|
41
88
|
interface SceneParticlesProps {
|
|
42
89
|
theme: MaterialTheme;
|
|
@@ -44,25 +91,31 @@ interface SceneParticlesProps {
|
|
|
44
91
|
}
|
|
45
92
|
declare function SceneParticles({ theme, visible }: SceneParticlesProps): react.JSX.Element | null;
|
|
46
93
|
|
|
47
|
-
interface
|
|
48
|
-
|
|
49
|
-
theme?: MaterialTheme;
|
|
50
|
-
customBackground?: string;
|
|
51
|
-
interactiveSparks?: boolean;
|
|
52
|
-
showParticles?: boolean;
|
|
53
|
-
className?: string;
|
|
54
|
-
style?: React.CSSProperties;
|
|
55
|
-
children?: React.ReactNode;
|
|
94
|
+
interface CameraRigProps {
|
|
95
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
56
96
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
97
|
+
declare function CameraRig({ phase }: CameraRigProps): null;
|
|
98
|
+
|
|
99
|
+
interface EffectState {
|
|
100
|
+
sparks: boolean;
|
|
101
|
+
shockwave: boolean;
|
|
102
|
+
plasma: boolean;
|
|
103
|
+
embers: boolean;
|
|
104
|
+
}
|
|
105
|
+
interface LoaderOverlayProps {
|
|
106
|
+
phase: "loading" | "entering" | "idle" | "exiting";
|
|
107
|
+
cinemaName: string;
|
|
108
|
+
theme: MaterialTheme;
|
|
109
|
+
effects: EffectState;
|
|
110
|
+
onTitleChange: (newTitle: string) => void;
|
|
111
|
+
onThemeChange: (theme: MaterialTheme) => void;
|
|
112
|
+
onToggleEffect: (effectName: keyof EffectState) => void;
|
|
113
|
+
}
|
|
114
|
+
declare function LoaderOverlay({ phase, cinemaName, theme, effects, onTitleChange, onThemeChange, onToggleEffect, }: LoaderOverlayProps): react.JSX.Element;
|
|
62
115
|
|
|
63
116
|
declare function CinemaHome({ cinemaName, webTheme }: {
|
|
64
117
|
cinemaName?: string;
|
|
65
118
|
webTheme?: string;
|
|
66
119
|
}): react.JSX.Element;
|
|
67
120
|
|
|
68
|
-
export { AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, LoaderOverlay, type MaterialTheme, SceneParticles };
|
|
121
|
+
export { AnimatedLetter, CameraRig, CinemaBackground, type CinemaBackgroundProps, CinemaHome, CinemaLoader, ClickFireSparks, ClickShockwave, type EffectState, ElectricPlasma, LoaderOverlay, type MaterialTheme, SceneParticles, type WithCinema3DOptions, withCinema3D };
|