UNPKG

reactbits-mcp-server

Version:

MCP Server for React Bits - Access 99+ React components with animations, backgrounds, and UI elements

146 lines (135 loc) 3.88 kB
import { useState } from "react"; import { Box, Flex, Input, Text } from "@chakra-ui/react"; import { CliTab, CodeTab, PreviewTab, TabbedLayout } from "../../components/common/TabbedLayout"; import CodeExample from '../../components/code/CodeExample'; import PropTable from "../../components/common/Preview/PropTable"; import CliInstallation from "../../components/code/CliInstallation"; import Customize from "../../components/common/Preview/Customize"; import PreviewSlider from "../../components/common/Preview/PreviewSlider"; import Waves from "../../content/Backgrounds/Waves/Waves"; import { waves } from '../../constants/code/Backgrounds/wavesCode'; const WavesDemo = () => { const [color, setColor] = useState('#ffffff'); const [waveSpeedX, setWaveSpeedX] = useState(0.0125); const propData = [ { name: "lineColor", type: "string", default: "black", description: "Defines the color of the wave lines drawn on the canvas." }, { name: "backgroundColor", type: "string", default: "transparent", description: "Sets the background color of the waves container." }, { name: "waveSpeedX", type: "number", default: 0.0125, description: "Horizontal speed factor for the wave animation." }, { name: "waveSpeedY", type: "number", default: 0.005, description: "Vertical speed factor for the wave animation." }, { name: "waveAmpX", type: "number", default: 32, description: "Horizontal amplitude of each wave." }, { name: "waveAmpY", type: "number", default: 16, description: "Vertical amplitude of each wave." }, { name: "xGap", type: "number", default: 10, description: "Horizontal gap between individual wave lines." }, { name: "yGap", type: "number", default: 32, description: "Vertical gap between points on each wave line." }, { name: "friction", type: "number", default: 0.925, description: "Controls how quickly the cursor effect slows down." }, { name: "tension", type: "number", default: 0.005, description: "Determines the 'springiness' of the cursor effect on points." }, { name: "maxCursorMove", type: "number", default: 100, description: "Limits how far each point can shift due to cursor movement." }, { name: "style", type: "object", default: "{}", description: "Inline styles applied to the container element." }, { name: "className", type: "string", default: "", description: "Custom class name(s) applied to the container element." } ]; return ( <TabbedLayout> <PreviewTab> <Box position="relative" h={600} className="demo-container" overflow="hidden" p={0}> <Waves waveSpeedX={waveSpeedX} lineColor={color} /> </Box> <Customize> <PreviewSlider min={0} max={0.1} step={0.01} value={waveSpeedX} title="Wave Speed X" onChange={(val) => { setWaveSpeedX(val); }} /> <Flex gap={4} align="center" mt={4}> <Text fontSize="sm">Waves Color</Text> <Input type="color" value={color} onChange={(e) => { setColor(e.target.value); }} width="50px" /> </Flex> </Customize> <PropTable data={propData} /> </PreviewTab> <CodeTab> <CodeExample codeObject={waves} /> </CodeTab> <CliTab> <CliInstallation {...waves} /> </CliTab> </TabbedLayout> ); } export default WavesDemo;