# Scaffold Screen — LegacyApp

Creates a complete screen widget with all states handled, following **GetX** patterns.

## Usage
```
Create a screen for [screen_name] that shows [content description]
```

## Generated screen template

### GetX screen pattern:

**BLoC:**
```dart
class [ScreenName]Screen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<[Feature]Bloc, [Feature]State>(
      builder: (context, state) => switch (state) {
        [Feature]Initial() || [Feature]Loading() => const [ScreenName]Shimmer(),
        [Feature]Loaded(:final data)              => [ScreenName]Content(data: data),
        [Feature]Empty()                          => const [ScreenName]EmptyState(),
        [Feature]Error(:final message)            => [ScreenName]ErrorState(
          message: message,
          onRetry: () => context.read<[Feature]Bloc>().add(const [Feature]LoadRequested()),
        ),
      },
    );
  }
}
```

**Riverpod:**
```dart
class [ScreenName]Screen extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final state = ref.watch([feature]Provider);
    return state.when(
      loading: () => const [ScreenName]Shimmer(),
      data:    (data) => [ScreenName]Content(data: data),
      error:   (e, _) => [ScreenName]ErrorState(error: e),
    );
  }
}
```

## Required sub-widgets to generate
1. `[ScreenName]Shimmer` — skeleton loading layout matching final content
2. `[ScreenName]EmptyState` — illustration + headline + CTA button
3. `[ScreenName]ErrorState` — error message + retry button
4. `[ScreenName]Content` — the actual data display

## Platform considerations (ios, android)
{{#if platform_web}}
- Web: ensure no dart:io usage; test at 375px and 1280px widths
{{/if}}
{{#if platform_desktop}}
- Desktop: add keyboard shortcut support for primary actions
{{/if}}
