diff --git a/userfront/lib/features/auth/presentation/signup_screen.dart b/userfront/lib/features/auth/presentation/signup_screen.dart index e265a268..846087b8 100644 --- a/userfront/lib/features/auth/presentation/signup_screen.dart +++ b/userfront/lib/features/auth/presentation/signup_screen.dart @@ -1740,165 +1740,74 @@ Matters not expressly provided in this Policy are governed by the Company's inte ), ), ), - const SizedBox(height: 18), - _buildProfileFieldGroup( - title: tr('ui.userfront.signup.profile.affiliation_type'), - description: '개인 가입 혹은 기업 연동을 선택합니다.', - isDesktop: isDesktop, - trailing: null, + const SizedBox(height: 24), + Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: _signupSurface, + borderRadius: BorderRadius.circular(12), + border: Border.all( + color: _signupBorder, + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - DropdownButtonFormField( - key: ValueKey(_affiliationType), - initialValue: _affiliationType, - decoration: InputDecoration( - labelText: tr( - 'ui.userfront.signup.profile.affiliation_type', + Row( + children: [ + Icon( + Icons.business, + color: Theme.of(context).colorScheme.primary, + size: 20, ), - border: const OutlineInputBorder(), - ), - items: [ - DropdownMenuItem( - value: 'GENERAL', - child: Text(tr('domain.affiliation.general')), - ), - DropdownMenuItem( - value: 'AFFILIATE', - child: Text(tr('domain.affiliation.affiliate')), + const SizedBox(width: 8), + Expanded( + child: Text( + '기업/가족사 소속이신가요?', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + color: _signupInk, + ), + ), ), ], - onChanged: _isAffiliateLocked - ? null - : (val) { - if (val == null) { - return; - } - setState(() { - _affiliationType = val; - if (_affiliationType == 'GENERAL') { - _companyCode = null; - } - }); - }, ), - AnimatedSize( - duration: const Duration(milliseconds: 180), - curve: Curves.easeOut, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (_affiliationType == 'AFFILIATE') ...[ - const SizedBox(height: 16), - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: Theme.of(context) - .colorScheme - .primaryContainer - .withValues(alpha: 0.15), - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: Theme.of(context) - .colorScheme - .primary - .withValues(alpha: 0.25), - ), - ), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.stretch, - children: [ - Row( - children: [ - Icon( - Icons.business, - color: Theme.of(context) - .colorScheme - .primary, - size: 24, - ), - const SizedBox(width: 10), - Expanded( - child: Text( - '기업 소속 가입 안내', - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 15, - color: Theme.of(context) - .colorScheme - .primary, - ), - ), - ), - ], - ), - const SizedBox(height: 12), - Text( - '기업/가족사 소속 회원은 바로 가입하는 대신 별도 문의를 통해 가입 및 워크스페이스 연동이 진행됩니다.\n\n아래 버튼을 눌러 담당자에게 가입 문의 이메일을 보내거나 baroncs@baroncs.co.kr로 직접 문의해 주시기 바랍니다.', - style: TextStyle( - fontSize: 13, - height: 1.5, - color: _signupInk - .withValues(alpha: 0.8), - ), - ), - const SizedBox(height: 16), - FilledButton.icon( - onPressed: () async { - final Uri emailUri = Uri( - scheme: 'mailto', - path: 'baroncs@baroncs.co.kr', - query: Uri.encodeFull( - 'subject=[Baron SSO] 기업 소속 가입 및 연동 문의', - ), - ); - if (await canLaunchUrl(emailUri)) { - await launchUrl(emailUri); - } - }, - icon: const Icon(Icons.mail_outline, - size: 18), - label: const Text('기업 소속 문의하기'), - style: FilledButton.styleFrom( - shape: RoundedRectangleBorder( - borderRadius: - BorderRadius.circular(8), - ), - padding: const EdgeInsets.symmetric( - vertical: 12), - ), - ), - ], - ), - ), - ], - ], + const SizedBox(height: 8), + Text( + '기업 및 가족사 임직원은 온라인 즉시 가입 대신 별도 연동 문의를 통해 워크스페이스 계정이 발급됩니다.\n\n아래 버튼을 눌러 담당자에게 문의 메일을 발송해 주시기 바랍니다.', + style: TextStyle( + fontSize: 12, + height: 1.45, + color: _signupInk.withValues(alpha: 0.7), + ), + ), + const SizedBox(height: 12), + OutlinedButton.icon( + onPressed: () async { + final Uri emailUri = Uri( + scheme: 'mailto', + path: 'baroncs@baroncs.co.kr', + query: Uri.encodeFull( + 'subject=[Baron SSO] 기업 소속 가입 및 연동 문의', + ), + ); + if (await canLaunchUrl(emailUri)) { + await launchUrl(emailUri); + } + }, + icon: const Icon(Icons.mail_outline, size: 16), + label: const Text('기업 소속 문의하기'), + style: OutlinedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + padding: const EdgeInsets.symmetric(vertical: 10), ), ), ], ), ), - if (_affiliationType == 'GENERAL') ...[ - const SizedBox(height: 18), - _buildProfileFieldGroup( - title: tr( - 'ui.userfront.signup.profile.department_optional', - ), - description: '선택 입력 항목입니다.', - isDesktop: isDesktop, - child: TextFormField( - controller: _deptController, - onChanged: (_) => setState(() {}), - decoration: InputDecoration( - labelText: tr( - 'ui.userfront.signup.profile.department_optional', - ), - border: const OutlineInputBorder(), - ), - ), - ), - ], ], ), ), @@ -2374,13 +2283,7 @@ Matters not expressly provided in this Policy are governed by the Company's inte canGoNext = true; } if (_currentStep == 3) { - final nameOk = _nameController.text.trim().isNotEmpty; - if (_affiliationType == 'GENERAL') { - canGoNext = nameOk; - } else { - // 기업 소속(AFFILIATE)인 경우 직접 가입 대신 문의로 안내하므로 다음 단계 진행을 차단합니다. - canGoNext = false; - } + canGoNext = _nameController.text.trim().isNotEmpty; } return Scaffold(