{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "fluid-modal-transition-shadcnui", "type": "registry:component", "title": "Fluid Modal Transition", "description": "Modal that expands smoothly from clicked trigger element using layoutId", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/motion-core/fluid-modal-transition.tsx", "content": "\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { X } from \"lucide-react\";\nimport React, { useEffect, useState } from \"react\";\n\ntype FluidModalTransitionProps = {\n trigger?: React.ReactNode;\n title?: string;\n children?: React.ReactNode;\n};\n\nexport function FluidModalTransition({\n trigger,\n title = \"Modal Title\",\n children,\n}: FluidModalTransitionProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n // If no trigger provided, auto-open for preview\n useEffect(() => {\n if (!trigger) {\n setIsOpen(true);\n }\n }, [trigger]);\n\n return (\n <>\n {trigger ? (\n
\n This is a fluid modal transition. The modal expands\n smoothly from the trigger element.\n
\n\n Click the X button to close.\n
\n