# Liquid Glass React
Apple's Liquid Glass effect for React.
Card Example | Button Example
:-------------------------:|:-------------------------:
 | 
## 🎬 Demo
[Click here](https://liquid-glass.maxrovensky.com) to see it in action!

## ✨ Features
- Proper edgy bending and refraction
- Multiple refraction modes
- Configurable frosty level
- Supports arbitrary child elements
- Configurable paddings
- Correct hover and click effects
- Edges and highlights take on the underlying light like Apple's does
- Configurable chromatic aberration
- Configurable elasticity, to mimic Apple's "liquid" feel
> **⚠️ NOTE:** Safari and Firefox only partially support the effect (displacement will not be visible)
## 🚀 Usage
### Installation
```bash
npm install liquid-glass-react
```
### Basic Usage
```tsx
import LiquidGlass from 'liquid-glass-react'
function App() {
return (
Your content here
This will have the liquid glass effect
)
}
```
### Button Example
```tsx
console.log('Button clicked!')}
>
Click Me
```
### Mouse Container Example
When you want the glass effect to respond to mouse movement over a larger area (like a parent container), use the `mouseContainer` prop:
```tsx
function App() {
const containerRef = useRef(null)
return (
Glass responds to mouse anywhere in the container
)
}
```
## Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `children` | `React.ReactNode` | - | The content to render inside the glass container |
| `displacementScale` | `number` | `70` | Controls the intensity of the displacement effect |
| `blurAmount` | `number` | `0.0625` | Controls the blur/frosting level |
| `saturation` | `number` | `140` | Controls color saturation of the glass effect |
| `aberrationIntensity` | `number` | `2` | Controls chromatic aberration intensity |
| `elasticity` | `number` | `0.15` | Controls the "liquid" elastic feel (0 = rigid, higher = more elastic) |
| `cornerRadius` | `number` | `999` | Border radius in pixels |
| `className` | `string` | `""` | Additional CSS classes |
| `padding` | `string` | - | CSS padding value |
| `style` | `React.CSSProperties` | - | Additional inline styles |
| `overLight` | `boolean` | `false` | Whether the glass is over a light background |
| `onClick` | `() => void` | - | Click handler |
| `mouseContainer` | `React.RefObject \| null` | `null` | Container element to track mouse movement on (defaults to the glass component itself) |
| `mode` | `"standard" \| "polar" \| "prominent" \| "shader"` | `"standard"` | Refraction mode for different visual effects. `shader` is the most accurate but not the most stable. |
| `globalMousePos` | `{ x: number; y: number }` | - | Global mouse position coordinates for manual control |
| `mouseOffset` | `{ x: number; y: number }` | - | Mouse position offset for fine-tuning positioning |