{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "liquid-glass", "type": "registry:ui", "title": "Liquid Glass", "description": "A component that allows you to display a liquid glass effect, inspired by iOS26.", "files": [ { "path": "registry/components/liquid-glass/index.tsx", "content": "import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nconst DEFAULT_COMPONENT = 'div';\n\ntype LiquidGlassProps =\n {\n as?: T;\n radius?: number;\n blur?: number;\n childClassName?: string;\n } & React.ComponentProps;\n\nfunction LiquidGlass({\n as,\n children,\n className,\n radius = 25,\n blur = 0,\n childClassName,\n ref,\n ...props\n}: LiquidGlassProps) {\n const Component = as || DEFAULT_COMPONENT;\n\n const containerRef = React.useRef(null);\n React.useImperativeHandle(ref, () => containerRef.current as HTMLDivElement);\n\n const rx = radius;\n const [size, setSize] = React.useState<{ width: string; height: string }>({\n width: '0',\n height: '0',\n });\n\n const viewBox = React.useMemo(\n () => `0 0 ${size.width} ${size.height}`,\n [size.width, size.height],\n );\n\n const calculateSize = React.useCallback(() => {\n if (containerRef.current) {\n const rect = containerRef.current.getBoundingClientRect();\n setSize({\n width: rect.width.toString(),\n height: rect.height.toString(),\n });\n }\n }, []);\n\n React.useEffect(() => {\n calculateSize();\n }, [calculateSize, children, className, childClassName, radius]);\n\n return (\n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nLiquidGlass.displayName = 'LiquidGlass';\n\nexport { LiquidGlass, type LiquidGlassProps };\n", "type": "registry:ui", "target": "components/animate-ui/components/liquid-glass.tsx" } ] }