/*
* MIT License
*
* Copyright (c) 2026 Syed Subhan Uddin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
// Fade Dots from amicro by Syed Subhan Uddin
// https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/fade-dots.tsx
// MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE
// Styled with Tailwind CSS. Needs: framer-motion
import React from 'react';
import { motion } from 'framer-motion';
export const FadeDots = () => {
return (
<div className="flex space-x-2">
{[0, 1, 2, 3].map((i) => (
<motion.div
key={i}
className="w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full"
animate={{ opacity: [0, 1, 0] }}
transition={{ duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "linear" }}
/>
))}
</div>
);
};
Elements
Live UI elements. Preview them, copy the code, install them with one line, or hand the page link to Claude.
390 live elements
Expanding Cross
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Expanding Cross from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/expanding-cross.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const ExpandingCross = () => { return ( <div className="relative w-8 h-8"> <motion.div className="absolute top-1/2 left-0 w-full h-1 bg-zinc-800 dark:bg-white -mt-0.5 rounded-full" animate={{ scaleX: [0.2, 1, 0.2] }} transition={{ duration: 1.5, repeat: Infinity, ease: "easeInOut" }} /> <motion.div className="absolute left-1/2 top-0 h-full w-1 bg-zinc-800 dark:bg-white -ml-0.5 rounded-full" animate={{ scaleY: [0.2, 1, 0.2] }} transition={{ duration: 1.5, repeat: Infinity, ease: "easeInOut", delay: 0.75 }} /> </div> ); };Face Id Scan
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Face Id Scan from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/face-id-scan.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const FaceIDScan = () => ( <div className="w-12 h-12 border-2 border-zinc-300 rounded-xl relative overflow-hidden flex items-center justify-center"> <svg viewBox="0 0 24 24" className="w-6 h-6 fill-zinc-300 dark:fill-zinc-700"> <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/> </svg> <motion.div className="absolute left-0 w-full h-8 bg-gradient-to-b from-transparent to-green-400/30 border-b border-green-500" animate={{ top: ["-100%", "100%", "-100%"] }} transition={{ duration: 2.5, repeat: Infinity, ease: "linear" }} /> </div> );Elastic Bars
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Elastic Bars from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/elastic-bars.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const ElasticBars = () => ( <div className="flex space-x-2 h-10 items-center justify-center"> {[0, 1, 2].map((i) => ( <motion.div key={i} className="w-2 bg-zinc-800 dark:bg-white rounded-full" animate={{ height: [8, 36, 8] }} transition={{ duration: 1.1, repeat: Infinity, ease: "easeInOut", delay: i * 0.15, }} /> ))} </div> );Elastic Square
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Elastic Square from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/elastic-square.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const ElasticSquare = () => ( <div className="h-12 flex items-end border-b-2 border-zinc-200 dark:border-zinc-800 w-12 justify-center"> <motion.div className="w-6 h-6 bg-zinc-800 dark:bg-white rounded-sm origin-bottom" animate={{ y: [0, -20, 0], scaleY: [0.7, 1.2, 0.7], scaleX: [1.3, 0.8, 1.3] }} transition={{ duration: 0.8, repeat: Infinity, ease: "easeInOut" }} /> </div> );/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dual Arc from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dual-arc.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DualArc = () => { return ( <div className="relative w-8 h-8 flex items-center justify-center"> <motion.div className="absolute inset-0 border-2 border-t-zinc-800 dark:border-t-white border-b-zinc-800 dark:border-b-white border-l-transparent border-r-transparent rounded-full" animate={{ rotate: 360, scale: [1, 0.82, 1] }} transition={{ rotate: { duration: 1.2, repeat: Infinity, ease: "linear" }, scale: { duration: 1.2, repeat: Infinity, ease: "easeInOut" } }} /> </div> ); };Dynamic Island
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dynamic Island from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dynamic-island.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DynamicIsland = () => { return ( <motion.div className="bg-zinc-950 dark:bg-zinc-900 border border-black/10 dark:border-white/10 rounded-full flex items-center justify-center px-4 py-2 gap-3 h-8 shadow-sm" animate={{ width: [80, 110, 80], }} transition={{ duration: 2.2, repeat: Infinity, ease: "easeInOut", }} > {/* Green indicator dot */} <motion.div className="w-1.5 h-1.5 rounded-full bg-emerald-500" animate={{ opacity: [0.4, 1, 0.4] }} transition={{ duration: 1.1, repeat: Infinity, ease: "easeInOut" }} /> {/* Waveform line */} <div className="flex gap-1 items-center h-2"> {[0, 1, 2].map((i) => ( <motion.div key={i} className="w-0.5 bg-zinc-300 dark:bg-zinc-500 rounded-full" animate={{ height: [3, 8, 3] }} transition={{ duration: 0.8, repeat: Infinity, ease: "easeInOut", delay: i * 0.15, }} /> ))} </div> </motion.div> ); };Double Ring
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Double Ring from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/double-ring.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DoubleRing = () => { return ( <div className="relative w-10 h-10 flex items-center justify-center"> <motion.div className="absolute w-10 h-10 border-2 border-zinc-200 dark:border-zinc-800 rounded-full border-t-zinc-800 dark:border-t-white" animate={{ rotate: 360 }} transition={{ duration: 1.5, repeat: Infinity, ease: "linear" }} /> <motion.div className="absolute w-6 h-6 border-2 border-zinc-200 dark:border-zinc-800 rounded-full border-b-zinc-800 dark:border-b-white" animate={{ rotate: -360 }} transition={{ duration: 1, repeat: Infinity, ease: "linear" }} /> </div> ); };/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Drop Dot from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/drop-dot.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DropDot = () => ( <div className="relative w-6 h-12 flex flex-col items-center"> <motion.div className="w-2.5 h-2.5 bg-zinc-800 dark:bg-white rounded-full absolute top-0 z-10" animate={{ y: [0, 24, 0], scaleY: [1, 1.2, 1], scaleX: [1, 0.8, 1] }} transition={{ duration: 1, repeat: Infinity, ease: "circIn" }} /> <div className="w-4 h-1 bg-zinc-300 dark:bg-zinc-700 rounded-full absolute bottom-2 blur-[1px]" /> </div> );Dot Spinner
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dot Spinner from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dot-spinner.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DotSpinner = () => { return ( <div className="relative w-10 h-10"> {[0, 1, 2, 3, 4, 5, 6, 7].map((i) => ( <motion.div key={i} className="absolute top-0 left-1/2 w-2 h-2 bg-zinc-800 dark:bg-white rounded-full -ml-1 origin-[4px_20px]" style={{ rotate: i * 45 }} animate={{ opacity: [1, 0.2] }} transition={{ duration: 1, repeat: Infinity, delay: i * 0.125, ease: "linear" }} /> ))} </div> ); };/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dots Ring from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dots-ring.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DotsRing = () => { return ( <div className="relative w-12 h-12"> {[0, 1, 2, 3, 4, 5, 6, 7].map((i) => ( <motion.div key={i} className="absolute top-0 left-1/2 w-2 h-2 bg-zinc-800 dark:bg-white rounded-full -ml-1 origin-[4px_24px]" style={{ rotate: i * 45 }} animate={{ scale: [1, 0.5, 1], opacity: [1, 0.3, 1] }} transition={{ duration: 1.5, repeat: Infinity, delay: i * 0.15, ease: "easeInOut" }} /> ))} </div> ); };Diamond Rotate Spring
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Diamond Rotate Spring from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/diamond-rotate-spring.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DiamondRotateSpring = () => ( <motion.div className="w-8 h-8 bg-zinc-800 dark:bg-white rounded-sm origin-center" style={{ rotate: 45 }} animate={{ rotate: [45, 135, 225, 315] }} transition={{ duration: 2, repeat: Infinity, type: "spring", bounce: 0.4 }} /> );Dashed Spiral
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dashed Spiral from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dashed-spiral.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DashedSpiral = () => ( <motion.div className="w-10 h-10 border-[3px] border-zinc-800 dark:border-zinc-700 rounded-full border-dashed" animate={{ rotate: 360, scale: [1, 1.1, 1] }} transition={{ duration: 4, repeat: Infinity, ease: "linear" }} /> );Diamond Grid
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Diamond Grid from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/diamond-grid.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DiamondGrid = () => { return ( <div className="grid grid-cols-2 gap-2 rotate-45"> {[0, 1, 2, 3].map((i) => ( <motion.div key={i} className="w-3 h-3 bg-zinc-800 dark:bg-white rounded-sm" animate={{ scale: [1, 0.5, 1], opacity: [1, 0.3, 1] }} transition={{ duration: 1.5, repeat: Infinity, delay: i * 0.2, ease: "easeInOut" }} /> ))} </div> ); };Cube Flip Spring
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Cube Flip Spring from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/cube-flip-spring.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const CubeFlipSpring = () => ( <motion.div className="w-8 h-8 bg-zinc-800 dark:bg-white rounded-lg" animate={{ rotateX: [0, 180, 180], rotateY: [0, 0, 180] }} transition={{ duration: 2, repeat: Infinity, type: "spring", bounce: 0.2 }} /> );/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Dash Ring from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/dash-ring.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const DashRing = () => { return ( <svg className="w-12 h-12" viewBox="0 0 50 50"> <motion.circle cx="25" cy="25" r="20" className="stroke-zinc-800 dark:stroke-white fill-none" strokeWidth="3" strokeDasharray="8 8" animate={{ rotate: 360 }} style={{ transformOrigin: 'center' }} transition={{ duration: 4, repeat: Infinity, ease: "linear" }} /> </svg> ); };Conveyor Loop
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Conveyor Loop from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/conveyor-loop.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const ConveyorLoop = () => { return ( <div className="w-16 h-3 overflow-hidden relative rounded-full bg-zinc-200 dark:bg-zinc-800"> <motion.div className="flex h-full space-x-2 absolute top-0 items-center" animate={{ x: [0, -32] }} transition={{ duration: 1, repeat: Infinity, ease: "linear" }} > {Array.from({ length: 8 }).map((_, i) => ( <div key={i} className="w-1.5 h-1.5 bg-zinc-800 dark:bg-white rounded-full shrink-0" /> ))} </motion.div> </div> ); };Cross Spinner
Loaders @bhaskar Stars:0 Views:0
/* * MIT License * * Copyright (c) 2026 Syed Subhan Uddin * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ // Cross Spinner from amicro by Syed Subhan Uddin // https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/registry/ui/loading/cross-spinner.tsx // MIT License, Copyright (c) 2026 Syed Subhan Uddin. Full licence: https://github.com/Subhan-code/Amicro--Micro-transitions-/blob/main/LICENSE // Styled with Tailwind CSS. Needs: framer-motion import React from 'react'; import { motion } from 'framer-motion'; export const CrossSpinner = () => { return ( <motion.div className="relative w-8 h-8 flex items-center justify-center" animate={{ rotate: [0, 90, 180, 270, 360] }} transition={{ duration: 2, repeat: Infinity, ease: "easeInOut" }} > <div className="absolute w-full h-1.5 bg-zinc-800 dark:bg-white rounded-full" /> <div className="absolute h-full w-1.5 bg-zinc-800 dark:bg-white rounded-full" /> </motion.div> ); };