text-shimmer
loading-ui/text-shimmerFreeComponent
@loading-ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by @loading-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://loading-ui.com/r/text-shimmer.jsonSource
1"use client";23import React, { useMemo, type JSX } from "react";4import { motion } from "motion/react";5import { cn } from "@/lib/utils";67export type TextShimmerProps = {8 children: string;9 as?: React.ElementType;10 className?: string;11 duration?: number;12 spread?: number;13 baseColor?: string;14 shimmerColor?: string;15 style?: React.CSSProperties;16};1718function TextShimmerComponent({19 children,20 as: Component = "p",21 className,22 duration = 2,23 spread = 2,24 baseColor,25 shimmerColor,26 style,27}: TextShimmerProps) {28 const MotionComponent = motion.create(29 Component as keyof JSX.IntrinsicElements,30 );3132 const dynamicSpread = useMemo(() => {33 return children.length * spread;34 }, [children, spread]);3536 return (37 <MotionComponent38 className={cn(39 "relative inline-block bg-size-[250%_100%,auto] bg-clip-text",40 "[-webkit-text-fill-color:transparent]",41 "[background-repeat:no-repeat,padding-box] [--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--base-gradient-color),#0000_calc(50%+var(--spread)))]",42 className,43 )}44 initial={{ backgroundPosition: "100% center" }}45 animate={{ backgroundPosition: "0% center" }}46 transition={{47 repeat: Infinity,48 duration,49 ease: "linear",50 }}51 style={52 {53 ...style,54 "--spread": `${dynamicSpread}px`,55 "--base-color":56 baseColor ?? "color-mix(in oklab, currentColor 55%, transparent)",57 "--base-gradient-color": shimmerColor ?? "currentColor",58 backgroundImage: `var(--bg), linear-gradient(var(--base-color), var(--base-color))`,59 } as React.CSSProperties60 }61 >62 {children}63 </MotionComponent>64 );65}6667export const TextShimmer = React.memo(TextShimmerComponent);
What it pulls in
npm packages
Files it writes
More from @loading-ui
All 50 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordion-loaderaccordion-loader | @loading-ui | Components | Free | no deps | |
| analyzing-imageanalyzing-image | @loading-ui | Components | Free | 1 dep | |
| arcarc | @loading-ui | Components | Free | no deps | |
| barsbars | @loading-ui | Components | Free | no deps | |
| bobbing-dotsbobbing-dots | @loading-ui | Components | Free | 1 dep | |
| bouncing-dotsbouncing-dots | @loading-ui | Components | Free | no deps | |
| classicclassic | @loading-ui | Components | Free | no deps | |
| clock-ringclock-ring | @loading-ui | Components | Free | no deps |
