{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "morphing-input",
"title": "Morphing Input",
"description": "An input field that morphs between different states.",
"dependencies": [
"motion",
"@hugeicons/core-free-icons",
"@hugeicons/react",
"clsx",
"tailwind-merge"
],
"registryDependencies": [
"input"
],
"files": [
{
"path": "registry/default/example/morphing-input.tsx",
"content": "\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport { motion, AnimatePresence } from \"motion/react\";\r\nimport { Input } from \"../../../components/ui/input\";\r\nimport { HugeiconsIcon } from \"@hugeicons/react\";\r\nimport {\r\n ArrowRight02Icon,\r\n UnfoldMoreIcon,\r\n Album02Icon,\r\n SparklesIcon,\r\n} from \"@hugeicons/core-free-icons\";\r\n\r\ninterface PlaceholderConfig {\r\n id: number;\r\n placeholder: string;\r\n icon: any;\r\n}\r\n\r\n// Change Here\r\nconst placeholderOptions: PlaceholderConfig[] = [\r\n { id: 1, placeholder: \"Search anything...\", icon: SparklesIcon },\r\n { id: 2, placeholder: \"Generate Image\", icon: Album02Icon },\r\n];\r\n\r\nconst AnimatedPlaceholder = ({ text }: { text: string }) => {\r\n const letters = text.split(\"\");\r\n\r\n return (\r\n