Kinetic Text
Kinetic Text é um componente de texto para React e Tailwind CSS, da biblioteca Magic UI, com licença MIT. Copia e cola no teu projeto.
Magic UI
MIT
text
O que é
Kinetic Text é um componente de texto para React e Tailwind CSS, da biblioteca Magic UI, com licença MIT. Copia e cola no teu projeto.
Como usar
Abre o componente no catálogo, carrega em copiar, e cola no teu projeto. O prompt copiado leva o código e as regras para o teu agente o reproduzir sem alterar nada.
Cinco cópias grátis por mês. Sem cartão.
Não precisa de pacotes além do que o projeto já tem
Licença
Este componente vem de Magic UI e é redistribuído sob a licença MIT, que permite uso comercial. O aviso de copyright viaja com o código.
Kinetic Text
import React from "react"
import { cn } from "@/lib/utils"
type As = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span"
type KineticTextProps = React.HTMLAttributes<HTMLElement> & {
text: string
as?: As
}
export function KineticText({
text,
as: Tag = "h1",
className = "",
style,
...rest
}: KineticTextProps) {
const mergedStyle = {
"--hover-padding": "calc(1em / 12)",
"--text-stroke-width": "calc(1em * 125 / 6000)",
...(style as React.CSSProperties | undefined),
} as React.CSSProperties
return (
<Tag
{...rest}
className={cn("flex flex-wrap font-[300]", className)}
style={mergedStyle}
>
{text.split("").map((letter, i) => (
<span
key={i}
aria-hidden="true"
className="[will-change:font-weight,-webkit-text-stroke-width,padding] [-webkit-text-stroke-color:transparent] [-webkit-text-stroke-width:var(--text-stroke-width)] [transition:font-weight_0.4s,_-webkit-text-stroke-color_0.4s,_padding_0.4s] hover:[padding-inline:var(--hover-padding)] hover:font-[900] hover:[-webkit-text-stroke-color:currentcolor] hover:[-webkit-text-stroke-width:calc(var(--text-stroke-width)*2)] has-[+span+span:hover]:font-[400] has-[+span:hover]:[padding-inline:var(--hover-padding)] has-[+span:hover]:font-[600] [:hover+&]:[padding-inline:var(--hover-padding)] [:hover+&]:font-[600] [:hover+span+&]:font-[400]"
>
{letter === " " ? "\u00A0" : letter}
</span>
))}
<span className="sr-only">{text}</span>
</Tag>
)
}