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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # 🎬 3D Effect Cinema
2
2
 
3
- > High-performance, customizable 3D Cinema Loader & Interactive WebGL Background Experience for React and Next.js powered by `@react-three/fiber` & `three`.
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
  [![npm version](https://img.shields.io/npm/v/3d-effect-cinema.svg?style=flat-square&color=blue)](https://www.npmjs.com/package/3d-effect-cinema)
6
6
  [![license](https://img.shields.io/npm/l/3d-effect-cinema.svg?style=flat-square)](https://github.com/esteban284/3d-effect-cinema)
@@ -9,34 +9,29 @@
9
9
 
10
10
  ---
11
11
 
12
- ## 🚀 Live Demo & Preview
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
- - 💥 **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.
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. Dynamic Hero Section Background (`<CinemaBackground />`)
43
+ ### 1. Using the HOC (`withCinema3D`)
49
44
 
50
- Embed the interactive 3D WebGL experience inside any section of your website:
45
+ Wrap any existing React component with the 3D WebGL background:
51
46
 
52
47
  ```tsx
53
48
  "use client";
54
49
 
55
- import { CinemaBackground } from "3d-effect-cinema";
50
+ import { withCinema3D } from "3d-effect-cinema";
56
51
 
57
- export default function HeroSection() {
52
+ function LandingHero() {
58
53
  return (
59
- <div className="relative w-full h-[600px]">
60
- <CinemaBackground
61
- text="UNITED OF WEB"
62
- theme="emerald"
63
- interactiveSparks={true}
64
- >
65
- {/* Your HTML/React overlays on top of the 3D scene */}
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. Full Screen Cinema Experience (`<CinemaLoader />`)
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 { useState } from "react";
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
- return <CinemaHome cinemaName="NOVA CINEMA" webTheme="neon" />;
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
- ## 🎨 Material Themes
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
- ## 🛠️ API Reference
108
+ ```tsx
109
+ "use client";
123
110
 
124
- ### `<CinemaBackground />`
111
+ import { CinemaLoader } from "3d-effect-cinema";
125
112
 
126
- | Prop | Type | Default | Description |
127
- | :--- | :--- | :--- | :--- |
128
- | `text` | `string` | `"CINEMA"` | 3D Text rendered in space |
129
- | `theme` | `'emerald' \| 'crimson' \| 'gold' \| 'neon' \| 'obsidian' \| 'glass'` | `'emerald'` | Material & light theme |
130
- | `customBackground` | `string` | `undefined` | Custom CSS gradient or color (e.g., `"radial-gradient(...)"`) |
131
- | `interactiveSparks` | `boolean` | `true` | Enables/disables fire sparks on mouse click |
132
- | `showParticles` | `boolean` | `true` | Enables/disables ambient floating embers |
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
- ### `<CinemaLoader />`
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
- | `cinemaName` | `string` | `"CINEMULTIPLEX"` | Brand text displayed in 3D typography and UI |
141
- | `defaultTheme` | `MaterialTheme` | `'gold'` | Initial material theme |
142
- | `customBackground` | `string` | `undefined` | Override CSS background gradient |
143
- | `onEnterCinema` | `() => void` | **Required** | Callback triggered when user clicks Enter |
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 CameraRigProps {
16
- phase: "loading" | "entering" | "idle" | "exiting";
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
- declare function CameraRig({ phase }: CameraRigProps): null;
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: () => void;
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
- interface LoaderOverlayProps {
33
- phase: "loading" | "entering" | "idle" | "exiting";
34
- cinemaName: string;
35
- theme: MaterialTheme;
36
- onEnter: () => void;
37
- onThemeChange: (theme: MaterialTheme) => void;
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 LoaderOverlay({ phase, cinemaName, theme, onEnter, onThemeChange, }: LoaderOverlayProps): react.JSX.Element;
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 CinemaBackgroundProps {
48
- text?: string;
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
- * Reusable 3D Cinema Background Component.
59
- * Fits dynamically inside any parent container (div, header, section).
60
- */
61
- declare function CinemaBackground({ text, theme, customBackground, interactiveSparks, showParticles, className, style, children, }: CinemaBackgroundProps): react.JSX.Element;
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 CameraRigProps {
16
- phase: "loading" | "entering" | "idle" | "exiting";
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
- declare function CameraRig({ phase }: CameraRigProps): null;
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: () => void;
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
- interface LoaderOverlayProps {
33
- phase: "loading" | "entering" | "idle" | "exiting";
34
- cinemaName: string;
35
- theme: MaterialTheme;
36
- onEnter: () => void;
37
- onThemeChange: (theme: MaterialTheme) => void;
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 LoaderOverlay({ phase, cinemaName, theme, onEnter, onThemeChange, }: LoaderOverlayProps): react.JSX.Element;
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 CinemaBackgroundProps {
48
- text?: string;
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
- * Reusable 3D Cinema Background Component.
59
- * Fits dynamically inside any parent container (div, header, section).
60
- */
61
- declare function CinemaBackground({ text, theme, customBackground, interactiveSparks, showParticles, className, style, children, }: CinemaBackgroundProps): react.JSX.Element;
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 };