# Display
Utilities for controlling the layout mode of an element.
- [Basic Usage](#basic-usage)
- [Block](#block)
- [Flex](#flex)
- [Grid](#grid)
- [Wrap](#wrap)
- [Hidden](#hidden)
- [Quick Reference](#quick-reference)
- [Responsive Design](#responsive-design)
- [Dark Mode](#dark-mode)
- [State Variants](#state-variants)
- [Arbitrary Values](#arbitrary-values)
- [Customizing Theme](#customizing-theme)
- [Related Documentation](#related-documentation)
```dart
// Flex container
WDiv(className: 'flex gap-4', children: [...])
// Grid container
WDiv(className: 'grid grid-cols-3', children: [...])
// Hidden element
WDiv(className: 'hidden', child: ...)
```
## Basic Usage
### Block
Use `block` to create a standard block-level element. In Wind, this is the default behavior of `WDiv` (rendering a `Container` or `SizedBox`).
```dart
WDiv(
className: 'block p-4 bg-white',
child: WText('This is a block element'),
)
```
### Flex
Use `flex` to create a flex container. This enables Flexbox layout properties (like `flex-row`, `items-center`, `justify-between`).
> [!NOTE]
> `flex` creates a `Row` or `Column` depending on `flex-row` (default) or `flex-col`.
```dart
WDiv(
className: 'flex items-center space-x-4',
children: [
WDiv(className: 'w-10 h-10 bg-blue-500'),
WText('Flex item'),
],
)
```
### Grid
Use `grid` to create a grid container. This enables Grid layout properties (like `grid-cols-3`, `gap-4`).
```dart
WDiv(
className: 'grid grid-cols-3 gap-4',
children: [
WDiv(className: 'h-20 bg-blue-100'),
WDiv(className: 'h-20 bg-blue-200'),
WDiv(className: 'h-20 bg-blue-300'),
],
)
```
### Wrap
Use `wrap` to create a wrapping container. This renders a Flutter `Wrap` widget.
> [!WARNING]
> Do **not** use `flex flex-wrap`. In Flutter, `Row`/`Column` cannot wrap. Always use the `wrap` display utility instead.
```dart
WDiv(
className: 'wrap gap-2',
children: [
WChip('React'),
WChip('Flutter'),
WChip('Vue'),
],
)
```
### Hidden
Use `hidden` to remove an element from the visual tree. This renders a `SizedBox.shrink()` (effectively 0x0 size).
```dart
WDiv(
className: 'hidden',
child: WText('This will not appear'),
)
```
## Quick Reference
| Class | Description |
| :--- | :--- |
| `block` | Standard box model layout (Default). |
| `flex` | Creates a Flex container (Row/Column). |
| `grid` | Creates a Grid container. |
| `wrap` | Creates a Wrap container. |
| `hidden` | Removes the element from the layout. |
## Responsive Design
Prefix any display utility with a breakpoint variant like `md:` to apply it only at specific screen sizes.
```dart
// Hidden on mobile, Flex on medium screens and up
WDiv(
className: 'hidden md:flex gap-4',
children: [...],
)
// Block on mobile, Hidden on large screens
WDiv(
className: 'block lg:hidden',
child: ...,
)
```
## Dark Mode
Prefix any display utility with `dark:` to apply it only when dark mode is active.
```dart
// Visible only in dark mode
WDiv(
className: 'hidden dark:block',
child: WText('Dark Mode Active'),
)
```
## State Variants
Prefix utilities with state variants like `hover:`, `focus:`, or `active:` to conditionally apply display modes.
```dart
// Show element on hover
WDiv(
className: 'hidden group-hover:block',
child: ...,
)
```
## Arbitrary Values
The display utility does not support arbitrary values. You must use one of the predefined keywords (`block`, `flex`, `grid`, `wrap`, `hidden`).
## Customizing Theme
Display utilities are structural and cannot be customized via `WindThemeData`. They map directly to Flutter widgets (`Row`, `Column`, `Wrap`, `GridView`).
## Related Documentation
- [Flexbox](./flexbox.md) - Layout direction, alignment, and sizing for flex containers.
- [Grid](./grid.md) - Column definitions and gaps for grid containers.
- [Visibility](./visibility.md) - Control visibility without changing layout (opacity).