{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "expanding-search-dock-shadcnui", "type": "registry:component", "title": "Expanding Search Dock", "description": "Minimal search icon that expands into full input with blur", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/motion-core/expanding-search-dock.tsx", "content": "\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Search, X } from \"lucide-react\";\nimport { useState } from \"react\";\n\ntype ExpandingSearchDockProps = {\n onSearch?: (query: string) => void;\n placeholder?: string;\n};\n\nexport function ExpandingSearchDock({\n onSearch,\n placeholder = \"Search...\",\n}: ExpandingSearchDockProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n const [query, setQuery] = useState(\"\");\n\n const handleExpand = () => {\n setIsExpanded(true);\n };\n\n const handleCollapse = () => {\n setIsExpanded(false);\n setQuery(\"\");\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (onSearch && query) {\n onSearch(query);\n }\n };\n\n return (\n