reactbits-mcp-server
Version:
MCP Server for React Bits - Access 99+ React components with animations, backgrounds, and UI elements
282 lines (260 loc) • 8.06 kB
JSX
import { CodeTab, PreviewTab, CliTab, TabbedLayout } from "../../components/common/TabbedLayout";
import { Box } from "@chakra-ui/react";
import Customize from "../../components/common/Preview/Customize";
import CodeExample from "../../components/code/CodeExample";
import CliInstallation from "../../components/code/CliInstallation";
import BackgroundContent from "../../components/common/Preview/BackgroundContent";
import PropTable from "../../components/common/Preview/PropTable";
import Dependencies from '../../components/code/Dependencies';
import PreviewSwitch from "../../components/common/Preview/PreviewSwitch";
import PreviewSlider from "../../components/common/Preview/PreviewSlider";
import Galaxy from "../../content/Backgrounds/Galaxy/Galaxy";
import { galaxy } from "../../constants/code/Backgrounds/galaxyCode";
import { useState } from "react";
const GalaxyDemo = () => {
const [density, setDensity] = useState(1);
const [glowIntensity, setGlowIntensity] = useState(0.3);
const [saturation, setSaturation] = useState(0.0);
const [hueShift, setHueShift] = useState(140);
const [twinkleIntensity, setTwinkleIntensity] = useState(0.3);
const [rotationSpeed, setRotationSpeed] = useState(0.1);
const [repulsionStrength, setRepulsionStrength] = useState(2);
const [autoCenterRepulsion, setAutoCenterRepulsion] = useState(0);
const [starSpeed, setStarSpeed] = useState(0.5);
const [speed, setSpeed] = useState(1.0);
const [mouseRepulsion, setMouseRepulsion] = useState(true);
const [mouseInteraction, setMouseInteraction] = useState(true);
const propData = [
{
name: "focal",
type: "[number, number]",
default: "[0.5, 0.5]",
description: "Sets the focal point of the galaxy effect as [x, y] coordinates from 0 to 1"
},
{
name: "rotation",
type: "[number, number]",
default: "[1.0, 0.0]",
description: "Controls the rotation matrix of the galaxy as [x, y] rotation values"
},
{
name: "starSpeed",
type: "number",
default: "0.5",
description: "Controls the speed of star movement and animation"
},
{
name: "density",
type: "number",
default: "1",
description: "Controls the density of stars in the galaxy"
},
{
name: "hueShift",
type: "number",
default: "140",
description: "Shifts the hue of all stars by the specified degrees (0-360)"
},
{
name: "disableAnimation",
type: "boolean",
default: "false",
description: "When true, stops all time-based animations"
},
{
name: "speed",
type: "number",
default: "1.0",
description: "Global speed multiplier for all animations"
},
{
name: "mouseInteraction",
type: "boolean",
default: "true",
description: "Enables or disables mouse interaction with the galaxy"
},
{
name: "glowIntensity",
type: "number",
default: "0.3",
description: "Controls the intensity of the star glow effect"
},
{
name: "saturation",
type: "number",
default: "0.0",
description: "Controls color saturation of stars (0 = grayscale, 1 = full color)"
},
{
name: "mouseRepulsion",
type: "boolean",
default: "true",
description: "When true, stars are repelled by the mouse cursor"
},
{
name: "twinkleIntensity",
type: "number",
default: "0.3",
description: "Controls how much stars twinkle (0 = no twinkle, 1 = maximum twinkle)"
},
{
name: "rotationSpeed",
type: "number",
default: "0.1",
description: "Speed of automatic galaxy rotation"
},
{
name: "repulsionStrength",
type: "number",
default: "2",
description: "Strength of mouse repulsion effect when mouseRepulsion is enabled"
},
{
name: "autoCenterRepulsion",
type: "number",
default: "0",
description: "Creates repulsion from center of canvas. Overrides mouse repulsion when > 0"
},
{
name: "transparent",
type: "boolean",
default: "true",
description: "Makes the black background transparent, showing only stars"
}
];
return (
<TabbedLayout>
<PreviewTab>
<Box position="relative" className="demo-container" h={600} overflow="hidden" p={0}>
<Galaxy
density={density}
glowIntensity={glowIntensity}
saturation={saturation}
hueShift={hueShift}
twinkleIntensity={twinkleIntensity}
rotationSpeed={rotationSpeed}
repulsionStrength={repulsionStrength}
autoCenterRepulsion={autoCenterRepulsion}
starSpeed={starSpeed}
speed={speed}
mouseRepulsion={mouseRepulsion}
mouseInteraction={mouseInteraction}
/>
<BackgroundContent headline="Components you shall have, young padawan." pillText="New Background" />
</Box>
<Customize>
<PreviewSwitch
title="Mouse Interaction"
isChecked={mouseInteraction}
onChange={setMouseInteraction}
/>
<PreviewSwitch
title="Mouse Repulsion"
isChecked={mouseRepulsion}
onChange={setMouseRepulsion}
/>
<PreviewSlider
title="Density"
min={0.1}
max={3}
step={0.1}
value={density}
onChange={setDensity}
width={200}
/>
<PreviewSlider
title="Glow Intensity"
min={0}
max={1}
step={0.1}
value={glowIntensity}
onChange={setGlowIntensity}
width={200}
/>
<PreviewSlider
title="Saturation"
min={0}
max={1}
step={0.1}
value={saturation}
onChange={setSaturation}
width={200}
/>
<PreviewSlider
title="Hue Shift"
min={0}
max={360}
step={10}
value={hueShift}
valueUnit="°"
onChange={setHueShift}
width={200}
/>
<PreviewSlider
title="Twinkle Intensity"
min={0}
max={1}
step={0.1}
value={twinkleIntensity}
onChange={setTwinkleIntensity}
width={200}
/>
<PreviewSlider
title="Rotation Speed"
min={0}
max={0.5}
step={0.05}
value={rotationSpeed}
onChange={setRotationSpeed}
width={200}
/>
<PreviewSlider
title="Repulsion Strength"
min={0}
max={10}
step={0.5}
value={repulsionStrength}
onChange={setRepulsionStrength}
width={200}
/>
<PreviewSlider
title="Auto Center Repulsion"
min={0}
max={20}
step={1}
value={autoCenterRepulsion}
onChange={setAutoCenterRepulsion}
width={200}
/>
<PreviewSlider
title="Star Speed"
min={0.1}
max={2}
step={0.1}
value={starSpeed}
onChange={setStarSpeed}
width={200}
/>
<PreviewSlider
title="Animation Speed"
min={0.1}
max={3}
step={0.1}
value={speed}
onChange={setSpeed}
width={200}
/>
</Customize>
<PropTable data={propData} />
<Dependencies dependencyList={['ogl']} />
</PreviewTab>
<CodeTab>
<CodeExample codeObject={galaxy} />
</CodeTab>
<CliTab>
<CliInstallation {...galaxy} />
</CliTab>
</TabbedLayout>
);
};
export default GalaxyDemo;