{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "motion-grid-demo", "type": "registry:ui", "title": "Motion Grid Demo", "description": "Demo Motion Grid.", "registryDependencies": [ "https://animate-ui.com/r/motion-grid" ], "files": [ { "path": "registry/demo/components/motion-grid/index.tsx", "content": "import { useEffect, useState } from 'react';\nimport { motion } from 'motion/react';\n\nimport { Button } from '@/components/ui/button';\nimport { type Frames, MotionGrid } from '@/components/animate-ui/components/motion-grid';\nimport { RotatingText } from '@/components/animate-ui/text/rotating';\n\nconst importingFrames = [\n [[2, 2]],\n [\n [1, 2],\n [2, 1],\n [2, 3],\n [3, 2],\n ],\n [\n [2, 2],\n [0, 2],\n [1, 1],\n [1, 3],\n [2, 0],\n [2, 4],\n [3, 1],\n [3, 3],\n [4, 2],\n ],\n [\n [0, 1],\n [0, 3],\n [1, 0],\n [1, 2],\n [1, 4],\n [2, 1],\n [2, 3],\n [3, 0],\n [3, 2],\n [3, 4],\n [4, 1],\n [4, 3],\n ],\n [\n [0, 0],\n [0, 2],\n [0, 4],\n [1, 1],\n [1, 3],\n [2, 0],\n [2, 2],\n [2, 4],\n [3, 1],\n [3, 3],\n [4, 0],\n [4, 2],\n [4, 4],\n ],\n [\n [0, 1],\n [0, 3],\n [1, 0],\n [1, 2],\n [1, 4],\n [2, 1],\n [2, 3],\n [3, 0],\n [3, 2],\n [3, 4],\n [4, 1],\n [4, 3],\n ],\n [\n [0, 0],\n [0, 2],\n [0, 4],\n [1, 1],\n [1, 3],\n [2, 0],\n [2, 4],\n [3, 1],\n [3, 3],\n [4, 0],\n [4, 2],\n [4, 4],\n ],\n [\n [0, 1],\n [1, 0],\n [3, 0],\n [4, 1],\n [0, 3],\n [1, 4],\n [3, 4],\n [4, 3],\n ],\n [\n [0, 0],\n [0, 4],\n [4, 0],\n [4, 4],\n ],\n [],\n] as Frames;\n\nconst arrowDownFrames = [\n [[2, 0]],\n [\n [1, 0],\n [2, 0],\n [3, 0],\n [2, 1],\n ],\n [\n [2, 0],\n [1, 1],\n [2, 1],\n [3, 1],\n [2, 2],\n ],\n [\n [2, 0],\n [2, 1],\n [1, 2],\n [2, 2],\n [3, 2],\n [2, 3],\n ],\n [\n [2, 1],\n [2, 2],\n [1, 3],\n [2, 3],\n [3, 3],\n [2, 4],\n ],\n [\n [2, 2],\n [2, 3],\n [1, 4],\n [2, 4],\n [3, 4],\n ],\n [\n [2, 3],\n [2, 4],\n ],\n [[2, 4]],\n [],\n] as Frames;\n\nconst arrowUpFrames = [\n [[2, 4]],\n [\n [1, 4],\n [2, 4],\n [3, 4],\n [2, 3],\n ],\n [\n [2, 4],\n [1, 3],\n [2, 3],\n [3, 3],\n [2, 2],\n ],\n [\n [2, 4],\n [2, 3],\n [1, 2],\n [2, 2],\n [3, 2],\n [2, 1],\n ],\n [\n [2, 3],\n [2, 2],\n [1, 1],\n [2, 1],\n [3, 1],\n [2, 0],\n ],\n [\n [2, 2],\n [2, 1],\n [1, 0],\n [2, 0],\n [3, 0],\n ],\n [\n [2, 1],\n [2, 0],\n ],\n [[2, 0]],\n [],\n] as Frames;\n\nconst syncingFrames = [...arrowDownFrames, ...arrowUpFrames] as Frames;\n\nconst searchingFrames = [\n [\n [1, 0],\n [0, 1],\n [1, 1],\n [2, 1],\n [1, 2],\n ],\n [\n [2, 0],\n [1, 1],\n [2, 1],\n [3, 1],\n [2, 2],\n ],\n [\n [3, 0],\n [2, 1],\n [3, 1],\n [4, 1],\n [3, 2],\n ],\n [\n [3, 1],\n [2, 2],\n [3, 2],\n [4, 2],\n [3, 3],\n ],\n [\n [3, 2],\n [2, 3],\n [3, 3],\n [4, 3],\n [3, 4],\n ],\n [\n [1, 2],\n [0, 3],\n [1, 3],\n [2, 3],\n [1, 4],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [1, 0],\n [1, 2],\n [2, 0],\n [2, 1],\n [2, 2],\n ],\n [],\n] as Frames;\n\nconst busyFrames = [\n [\n [0, 1],\n [0, 2],\n [0, 3],\n [1, 2],\n [4, 1],\n [4, 2],\n [4, 3],\n ],\n [\n [0, 1],\n [0, 2],\n [0, 3],\n [2, 3],\n [4, 2],\n [4, 3],\n [4, 4],\n ],\n [\n [0, 1],\n [0, 2],\n [0, 3],\n [3, 4],\n [4, 2],\n [4, 3],\n [4, 4],\n ],\n [\n [0, 1],\n [0, 2],\n [0, 3],\n [2, 3],\n [4, 2],\n [4, 3],\n [4, 4],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [1, 2],\n [4, 2],\n [4, 3],\n [4, 4],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [2, 1],\n [4, 1],\n [4, 2],\n [4, 3],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [3, 0],\n [4, 0],\n [4, 1],\n [4, 2],\n ],\n [\n [0, 1],\n [0, 2],\n [0, 3],\n [2, 1],\n [4, 0],\n [4, 1],\n [4, 2],\n ],\n] as Frames;\n\nconst savingFrames = [\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [0, 3],\n [0, 4],\n [1, 0],\n [1, 1],\n [1, 2],\n [1, 3],\n [2, 0],\n [2, 1],\n [2, 2],\n [2, 3],\n [2, 4],\n [3, 0],\n [3, 1],\n [3, 2],\n [3, 3],\n [4, 0],\n [4, 1],\n [4, 2],\n [4, 3],\n [4, 4],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [0, 3],\n [1, 0],\n [1, 1],\n [1, 2],\n [2, 0],\n [2, 1],\n [2, 2],\n [2, 3],\n [3, 0],\n [3, 1],\n [3, 2],\n [4, 0],\n [4, 1],\n [4, 2],\n [4, 3],\n ],\n [\n [0, 0],\n [0, 1],\n [0, 2],\n [1, 0],\n [1, 1],\n [2, 0],\n [2, 1],\n [2, 2],\n [3, 0],\n [3, 1],\n [4, 0],\n [4, 1],\n [4, 2],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n [\n [0, 0],\n [0, 1],\n [1, 0],\n [2, 0],\n [2, 1],\n [3, 0],\n [4, 0],\n [4, 1],\n [4, 3],\n [3, 3],\n [2, 3],\n [1, 3],\n [0, 3],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n [\n [0, 0],\n [2, 0],\n [4, 0],\n [4, 2],\n [3, 2],\n [2, 2],\n [1, 2],\n [0, 2],\n [4, 3],\n [3, 3],\n [2, 3],\n [1, 3],\n [0, 3],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n [\n [0, 0],\n [1, 0],\n [2, 0],\n [3, 0],\n [4, 0],\n [4, 1],\n [3, 1],\n [2, 1],\n [1, 1],\n [0, 1],\n [4, 2],\n [3, 2],\n [2, 2],\n [1, 2],\n [0, 2],\n [4, 3],\n [3, 3],\n [2, 3],\n [1, 3],\n [0, 3],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n [\n [0, 0],\n [1, 0],\n [2, 0],\n [3, 0],\n [4, 0],\n [4, 1],\n [3, 1],\n [2, 1],\n [1, 1],\n [0, 1],\n [4, 2],\n [3, 2],\n [2, 2],\n [1, 2],\n [0, 2],\n [4, 3],\n [3, 3],\n [2, 3],\n [1, 3],\n [0, 3],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n [\n [0, 0],\n [1, 0],\n [2, 0],\n [3, 0],\n [4, 0],\n [4, 1],\n [3, 1],\n [2, 1],\n [1, 1],\n [0, 1],\n [4, 2],\n [3, 2],\n [2, 2],\n [1, 2],\n [0, 2],\n [4, 3],\n [3, 3],\n [2, 3],\n [1, 3],\n [0, 3],\n [4, 4],\n [3, 4],\n [2, 4],\n [1, 4],\n [0, 4],\n ],\n] as Frames;\n\nconst initializingFrames = [\n [],\n [\n [1, 0],\n [3, 0],\n ],\n [\n [1, 0],\n [3, 0],\n [0, 1],\n [1, 1],\n [2, 1],\n [3, 1],\n [4, 1],\n ],\n [\n [1, 0],\n [3, 0],\n [0, 1],\n [1, 1],\n [2, 1],\n [3, 1],\n [4, 1],\n [0, 2],\n [1, 2],\n [2, 2],\n [3, 2],\n [4, 2],\n ],\n [\n [1, 0],\n [3, 0],\n [0, 1],\n [1, 1],\n [2, 1],\n [3, 1],\n [4, 1],\n [0, 2],\n [1, 2],\n [2, 2],\n [3, 2],\n [4, 2],\n [1, 3],\n [2, 3],\n [3, 3],\n ],\n [\n [1, 0],\n [3, 0],\n [0, 1],\n [1, 1],\n [2, 1],\n [3, 1],\n [4, 1],\n [0, 2],\n [1, 2],\n [2, 2],\n [3, 2],\n [4, 2],\n [1, 3],\n [2, 3],\n [3, 3],\n [2, 4],\n ],\n [\n [1, 2],\n [2, 1],\n [2, 2],\n [2, 3],\n [3, 2],\n ],\n [[2, 2]],\n [],\n] as Frames;\n\nconst states = {\n importing: {\n frames: importingFrames,\n label: 'Importing',\n },\n syncing: {\n frames: syncingFrames,\n label: 'Syncing',\n },\n searching: {\n frames: searchingFrames,\n label: 'Searching',\n },\n busy: {\n frames: busyFrames,\n label: 'Busy',\n },\n saving: {\n frames: savingFrames,\n label: 'Saving',\n },\n initializing: {\n frames: initializingFrames,\n label: 'Initializing',\n },\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const MotionGridDemo = () => {\n const [state, setState] = useState('importing');\n\n const runStates = async () => {\n while (true) {\n for (const state of Object.keys(states) as (keyof typeof states)[]) {\n setState(state);\n await sleep(3000);\n }\n }\n };\n\n useEffect(() => {\n runStates();\n }, []);\n\n return (\n \n );\n};\n", "type": "registry:ui", "target": "components/animate-ui/demo/components/motion-grid.tsx" } ] }