{ "$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 \r\n {letters.map((letter, index) => (\r\n \r\n {letter === \" \" ? \"\\u00A0\" : letter}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nconst InputSwitch = () => {\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [inputValue, setInputValue] = useState(\"\");\r\n const currentConfig = placeholderOptions[activeIndex];\r\n\r\n const handleIconClick = () => {\r\n setActiveIndex((prev) => (prev + 1) % placeholderOptions.length);\r\n };\r\n\r\n const IconComponent = currentConfig.icon;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {!inputValue && (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n setInputValue(e.target.value)}\r\n className=\"!border-0 outline-none border-none bg-transparent! m-0 !pl-1.5 text-sm focus-visible:ring-0 focus-visible:ring-offset-0 text-foreground\"\r\n />\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default InputSwitch;\r\n", "type": "registry:component" } ], "type": "registry:component" }