# Shadow
Utilities for controlling the box shadow of an element.
- [Basic Usage](#basic-usage)
- [Quick Reference](#quick-reference)
- [Variants](#variants)
- [Responsive Design](#responsive-design)
- [Dark Mode](#dark-mode)
- [Arbitrary Values](#arbitrary-values)
- [Customizing Theme](#customizing-theme)
- [Related Documentation](#related-documentation)
```dart
// Basic examples
WDiv(className: 'shadow')
WDiv(className: 'shadow-lg')
WDiv(className: 'shadow-red-500')
WDiv(className: 'shadow-none')
```
## Basic Usage
Use `shadow-{size}` utilities to apply different shadow intensities to an element.
```dart
WDiv(
className: 'shadow-lg bg-white rounded-lg p-6',
child: WText('Shadow Example'),
)
```
## Quick Reference
| Class | Properties | Description |
|:------|:-----------|:------------|
| `shadow-sm` | `blur: 2` | Subtle shadow |
| `shadow` | `blur: 3` | Default shadow |
| `shadow-md` | `blur: 6` | Medium shadow |
| `shadow-lg` | `blur: 15` | Large shadow |
| `shadow-xl` | `blur: 25` | Extra large shadow |
| `shadow-2xl` | `blur: 50` | Dramatic shadow |
| `shadow-none` | `none` | Removes shadow |
## Variants
### Shadow Colors
Use `shadow-{color}` utilities to change the color of the shadow. This preserves the original shadow's opacity structure while tinting it with the specified color.
```dart
// Blue tinted shadow
WDiv(className: 'shadow-lg shadow-blue-500')
// Red tinted shadow
WDiv(className: 'shadow-md shadow-red-500')
```
| Class | Description |
|:------|:------------|
| `shadow-{color}` | Tints the shadow with the specified color (e.g., `shadow-red-500`) |
### Shadow Opacity
Control shadow color opacity with the `/` modifier.
```dart
WDiv(className: 'shadow-xl shadow-red-500/50')
```
### Removing Shadows
Use `shadow-none` to remove any existing box shadows from an element. This is useful for resetting shadows at specific breakpoints.
```dart
WDiv(className: 'shadow-lg md:shadow-none')
```
## Responsive Design
Apply different shadow utilities at different breakpoints using the standard `sm:`, `md:`, `lg:`, `xl:`, and `2xl:` prefixes.
```dart
WDiv(className: 'shadow-sm md:shadow-lg xl:shadow-2xl')
```
## Dark Mode
Use the `dark:` prefix to apply different shadow styles when the application is in dark mode.
```dart
WDiv(className: 'shadow-lg bg-white dark:bg-gray-800 dark:shadow-black/30')
```
## Arbitrary Values
If the built-in scale doesn't meet your needs, use bracket notation to apply custom shadow colors.
```dart
// Custom shadow color hex
WDiv(className: 'shadow-lg shadow-[#50d71e]')
```
> [!NOTE]
> Currently, arbitrary values only support custom colors. For custom shadow sizes (offsets, blur), use the theme customization options.
## Customizing Theme
To extend or override the default shadow scale, modify the `shadows` property in `WindThemeData`.
```dart
WindThemeData(
shadows: {
// Add a custom shadow preset
'soft': [
BoxShadow(
color: Colors.black.withOpacity(0.05),
blurRadius: 10,
offset: Offset(0, 4),
),
],
// Override the default 'xl' shadow
'xl': [
BoxShadow(
color: Colors.blue.withOpacity(0.2),
blurRadius: 30,
spreadRadius: 5,
),
],
},
)
```
Usage:
```dart
WDiv(className: 'shadow-soft')
```
## Related Documentation
- [Opacity](./opacity.md)
- [Ring](../borders/ring.md)
- [Background Color](../styling/background-color.md)