import 'package:flutter/material.dart'; import '../theme/app_theme.dart'; /// Primary call-to-action button filled with [AppTheme.brandGradient] and a /// soft brand-tinted shadow, so the one action per screen that matters most /// (시작하기 / 이 말투로 시작 …) visibly outranks the flat glass buttons /// around it. class PrimaryGradientButton extends StatelessWidget { const PrimaryGradientButton({ super.key, required this.label, required this.onPressed, this.loading = false, }); final String label; final VoidCallback? onPressed; final bool loading; @override Widget build(BuildContext context) { final disabled = onPressed == null; return Opacity( opacity: disabled ? 0.6 : 1, child: Material( color: Colors.transparent, borderRadius: BorderRadius.circular(16), child: InkWell( borderRadius: BorderRadius.circular(16), onTap: onPressed, child: Container( height: 52, alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(16), gradient: AppTheme.brandGradient, boxShadow: [ BoxShadow( color: const Color(0xFF6D5BD0).withValues(alpha: 0.35), blurRadius: 20, offset: const Offset(0, 8), ), ], ), child: loading ? const SizedBox( height: 20, width: 20, child: CircularProgressIndicator(strokeWidth: 2, color: Colors.white), ) : Text( label, style: const TextStyle(color: Colors.white, fontWeight: FontWeight.w700, fontSize: 16), ), ), ), ), ); } }