import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:info_tren/components/badge/badge_cupertino.dart';
import 'package:info_tren/components/badge/badge_fluent.dart';
import 'package:info_tren/components/badge/badge_material.dart';
import 'package:info_tren/models.dart';
import 'package:info_tren/providers.dart';

class Badge extends ConsumerWidget {
  final String text;
  final String caption;
  final bool isNotScheduled;
  final bool isOnTime;
  final bool isDelayed;

  const Badge({
    super.key,
    required this.text,
    required this.caption,
    this.isNotScheduled = false,
    this.isOnTime = false,
    this.isDelayed = false,
  });

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    final uiDesign = ref.watch(uiDesignProvider);

    switch (uiDesign) {
      case UiDesign.MATERIAL:
        return MaterialBadge(
          text: text,
          caption: caption,
          isNotScheduled: isNotScheduled,
          isOnTime: isOnTime,
          isDelayed: isDelayed,
        );
      case UiDesign.CUPERTINO:
        return CupertinoBadge(
          text: text,
          caption: caption,
          isNotScheduled: isNotScheduled,
          isOnTime: isOnTime,
          isDelayed: isDelayed,
        );
      case UiDesign.FLUENT:
        return FluentBadge(
          text: text,
          caption: caption,
          isNotScheduled: isNotScheduled,
          isOnTime: isOnTime,
          isDelayed: isDelayed,
        );
      default:
        throw UnmatchedUiDesignException(uiDesign);
    }
  }
}