# Display (Visibility)

Control widget visibility with `hide` and `show` utility classes, with optional responsive breakpoint prefixes.

- [Basic Usage](#basic-usage)
- [Quick Reference](#quick-reference)
- [How It Works](#how-it-works)
- [Responsive Display](#responsive-display)
- [Helper Functions](#helper-functions)
- [Related Documentation](#related-documentation)

```dart
WFlexContainer(
  className: 'flex-col bg-gray-100 h-64 justify-center items-center gap-4',
  children: [
    WFlexible(
      className: 'hide lg:show',
      child: WText('Visible on large and larger screens'),
    ),
    WFlexible(
      className: 'hide md:show',
      child: WText('Visible on medium and larger screens'),
    ),
    WFlexible(
      className: 'show md:hide',
      child: WText('Visible on only small screens'),
    ),
  ],
);
```

## Basic Usage

Apply `hide` to a widget's `className` to hide it unconditionally. Apply `show` to force it visible.
Combine with a breakpoint prefix to make the behavior screen-size-conditional.

```dart
WContainer(
  className: 'hide',
  child: WText('This widget is hidden'),
);

WContainer(
  className: 'show',
  child: WText('This widget is visible'),
);
```

## Quick Reference

| Class | Description |
| :--- | :--- |
| `hide` | Hides the widget (replaces it with `SizedBox.shrink()`) |
| `show` | Forces the widget to be visible |

Responsive prefix syntax: `<breakpoint>:<class>` — for example `md:hide`, `lg:show`.

## How It Works

Wind's `DisplayParser` reads the `className` string. When a `hide` token is matched (and any breakpoint
condition is satisfied), the widget is replaced with `SizedBox.shrink()`. The `show` token overrides
a previous `hide` on the same widget.

This behavior is built into:

- `WText`
- `WFlexible`
- `WContainer`
- `WCard`

## Responsive Display

Prefix any display class with a breakpoint to apply it only at that screen width and above.

| Breakpoint | Min-width |
| :--- | :--- |
| `sm:` | 640 px |
| `md:` | 768 px |
| `lg:` | 1024 px |
| `xl:` | 1280 px |
| `2xl:` | 1536 px |

```dart
// Visible only on small screens; hidden on medium and above.
WFlexible(
  className: 'show md:hide',
  child: WText('Mobile only'),
);

// Hidden by default; shown on large screens and above.
WFlexible(
  className: 'hide lg:show',
  child: WText('Desktop only'),
);
```

## Helper Functions

Wind exposes Dart helpers for imperative visibility logic.

### `wScreen`

Returns `true` if the current screen width is at or above the given breakpoint.

```dart
wScreen(context, 'md') // true on medium and larger screens
```

### `wScreenOnly`

Returns `true` only when the screen width falls within the exact range of the given breakpoint.

```dart
wScreenOnly(context, 'sm') // true only on small screens
```

### `wAnyScreenOnly`

Returns `true` when the screen matches any of the provided breakpoints exclusively.

```dart
wAnyScreenOnly(context, ['sm', 'md']) // true on small or medium only
```

## Related Documentation

- [Responsive Design](https://anilcancakir.com/wind_kit/docs/v0.0/concepts/responsive-design.md) — breakpoint system and screen-size utilities
- [WContainer](https://anilcancakir.com/wind_kit/docs/v0.0/widgets/wcontainer.md) — container widget supporting display classes
- [WFlexible](https://anilcancakir.com/wind_kit/docs/v0.0/widgets/wflexible.md) — flex child widget supporting display classes
- [WText](https://anilcancakir.com/wind_kit/docs/v0.0/widgets/wtext.md) — text widget supporting display classes
