import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:kaer_with_panels/app/widgets/kr_local_image.dart';

import '../../localization/app_translations.dart';

class KRUpdateDialog extends StatelessWidget {
  final String version;
  final String updateContent;
  final VoidCallback? onConfirm;
  final VoidCallback? onCancel;
  final bool showCancelButton;
  final bool isForceUpdate;

  KRUpdateDialog({
    Key? key,
    required this.version,
    String? updateContent,
    this.onConfirm,
    this.onCancel,
    this.showCancelButton = true,
    this.isForceUpdate = false,
  }) : updateContent = updateContent ?? AppTranslations.kr_update.defaultContent,
        super(key: key);

  static Future<void> show({
    required String version,
    String? updateContent,
    VoidCallback? onConfirm,
    VoidCallback? onCancel,
    bool showCancelButton = true,
    bool isForceUpdate = false,
  }) {
    return Get.dialog(
      
      KRUpdateDialog(
        version: version,
        updateContent: updateContent,
        onConfirm: onConfirm,
        onCancel: onCancel,
        showCancelButton: showCancelButton,
        isForceUpdate: isForceUpdate,

      ),
      barrierDismissible: false,
    );
  }

  Widget _buildConfirmButton(ThemeData theme) {
    return Container(
      width: double.infinity,
      height: 44.h,
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(22.r),
        gradient: const LinearGradient(
          colors: [Color(0xFF2196F3), Color(0xFF1E88E5)],
        ),
      ),
      child: TextButton(
        onPressed: () {
          if (!isForceUpdate) {
            Get.back();
          }
          onConfirm?.call();
        },
        style: TextButton.styleFrom(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(22.r),
          ),
          padding: EdgeInsets.zero,
        ),
        child: Text(
          AppTranslations.kr_update.updateNow,
          style: theme.textTheme.titleMedium?.copyWith(
            color: Colors.white,
            fontWeight: FontWeight.w500,
            fontSize: 16.sp,
          ),
        ),
      ),
    );
  }

  Widget _buildCancelButton(ThemeData theme) {
    return TextButton(
      onPressed: () {
        Get.back();
        onCancel?.call();
      },
      style: TextButton.styleFrom(
        padding: EdgeInsets.zero,
      ),
      child: Text(
        AppTranslations.kr_update.updateLater,
        style: theme.textTheme.bodyMedium?.copyWith(
          color: theme.hintColor,
          fontSize: 14.sp,
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    final ThemeData theme = Theme.of(context);
    return Dialog(
      backgroundColor: theme.cardColor,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(12.r),
      ),
      child: Container(
        width: 280.w,
        padding: EdgeInsets.all(24.w),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            KrLocalImage(
              imageName: 'vs_update',
              width: 190.w,
              height: 98.w,
              imageType: ImageType.svg,
            ),
            SizedBox(height: 16.h),
            Text(
              AppTranslations.kr_update.title,
              style: theme.textTheme.titleLarge?.copyWith(
                fontWeight: FontWeight.w600,
                fontSize: 18.sp,
                color: theme.brightness == Brightness.light 
                    ? const Color(0xFF333333)
                    : theme.textTheme.titleLarge?.color,
              ),
            ),
            SizedBox(height: 4.h),
            Text(
              'V$version',
              style: theme.textTheme.bodyMedium?.copyWith(
                color: theme.hintColor,
                fontSize: 14.sp,
              ),
            ),
            SizedBox(height: 1.h),
            Container(
              constraints: BoxConstraints(maxHeight: 120.h),
              child: SingleChildScrollView(
                child: Text(
                  updateContent,
                  style: theme.textTheme.bodyMedium?.copyWith(
                    color: theme.hintColor,
                    fontSize: 14.sp,
                    height: 1.5,
                  ),
                ),
              ),
            ),
            SizedBox(height: 20.h),
            _buildConfirmButton(theme),
            if (showCancelButton) ...[
              SizedBox(height: 12.h),
              _buildCancelButton(theme),
            ],
          ],
        ),
      ),
    );
  }
} 