coregen-cli 3.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. coregen.py +1585 -0
  2. coregen_cli-3.1.6.dist-info/METADATA +1211 -0
  3. coregen_cli-3.1.6.dist-info/RECORD +172 -0
  4. coregen_cli-3.1.6.dist-info/WHEEL +5 -0
  5. coregen_cli-3.1.6.dist-info/entry_points.txt +2 -0
  6. coregen_cli-3.1.6.dist-info/top_level.txt +2 -0
  7. generators/__init__.py +1 -0
  8. generators/assets/__init__.py +1 -0
  9. generators/assets/assets.py +30 -0
  10. generators/assets/main.py +4 -0
  11. generators/config/__init__.py +1 -0
  12. generators/config/analisy_options.py +42 -0
  13. generators/config/main.py +11 -0
  14. generators/config/pubspec.py +139 -0
  15. generators/cursor/__init__.py +3 -0
  16. generators/cursor/setup.py +87 -0
  17. generators/helpers/__init__.py +56 -0
  18. generators/helpers/component.py +1030 -0
  19. generators/helpers/config.py +255 -0
  20. generators/helpers/data_source.py +180 -0
  21. generators/helpers/domain.py +469 -0
  22. generators/helpers/feature.py +654 -0
  23. generators/helpers/navigation.py +274 -0
  24. generators/helpers/page.py +63 -0
  25. generators/helpers/project.py +33 -0
  26. generators/helpers/utils.py +338 -0
  27. generators/helpers/validation.py +364 -0
  28. generators/initializator.py +68 -0
  29. generators/main.py +81 -0
  30. generators/static/assets/logo.png +0 -0
  31. generators/static/assets/mock/auth_user.json +5 -0
  32. generators/static/assets/svgs/apple.svg +4 -0
  33. generators/static/assets/svgs/google.svg +2 -0
  34. generators/static/cursor/AGENTS.md.jinja +37 -0
  35. generators/static/cursor/agents/doc-writer.md +20 -0
  36. generators/static/cursor/agents/epic-orchestrator.md +28 -0
  37. generators/static/cursor/agents/feature-implementer.md +29 -0
  38. generators/static/cursor/agents/integration-wiring.md +30 -0
  39. generators/static/cursor/agents/layer-application.md +21 -0
  40. generators/static/cursor/agents/layer-guardian.md +21 -0
  41. generators/static/cursor/agents/layer-infrastructure.md +31 -0
  42. generators/static/cursor/agents/layer-model.md +24 -0
  43. generators/static/cursor/agents/layer-presentation.md +33 -0
  44. generators/static/cursor/docs/architecture/APIS_AND_INTEGRATION.md.jinja +42 -0
  45. generators/static/cursor/docs/architecture/CARAVAGGIO_COMPONENTS.md.jinja +317 -0
  46. generators/static/cursor/docs/architecture/DDD_LAYERS.md.jinja +32 -0
  47. generators/static/cursor/docs/architecture/FILE_TEMPLATES.md.jinja +76 -0
  48. generators/static/cursor/docs/architecture/MOCK_AND_REMOTE_DATA.md.jinja +87 -0
  49. generators/static/cursor/docs/architecture/REFERENCE_IMPLEMENTATIONS.md.jinja +48 -0
  50. generators/static/cursor/docs/architecture/WIDGETS_AND_CARAVAGGIO.md.jinja +76 -0
  51. generators/static/cursor/docs/epics/README.md +17 -0
  52. generators/static/cursor/lib/domain/AGENTS.md +23 -0
  53. generators/static/cursor/lib/features/AGENTS.md +23 -0
  54. generators/static/cursor/lib/widgets/AGENTS.md +21 -0
  55. generators/static/cursor/rules/apis-layer.mdc.jinja +21 -0
  56. generators/static/cursor/rules/application-layer.mdc.jinja +12 -0
  57. generators/static/cursor/rules/architecture-core.mdc.jinja +43 -0
  58. generators/static/cursor/rules/dart-conventions.mdc.jinja +14 -0
  59. generators/static/cursor/rules/domain-layer.mdc.jinja +24 -0
  60. generators/static/cursor/rules/login-context.mdc.jinja +16 -0
  61. generators/static/cursor/rules/presentation-layer.mdc.jinja +15 -0
  62. generators/static/cursor/rules/quality-gate.mdc.jinja +14 -0
  63. generators/static/cursor/rules/ui-caravaggio.mdc.jinja +22 -0
  64. generators/static/cursor/skills/caravaggio-ui/SKILL.md +138 -0
  65. generators/static/cursor/skills/epic-delivery/SKILL.md +74 -0
  66. generators/static/cursor/skills/epic-delivery/templates/epic-status.md +14 -0
  67. generators/static/cursor/skills/epic-delivery/templates/epic.md +36 -0
  68. generators/static/templates/apis/common/constants_template.jinja +48 -0
  69. generators/static/templates/apis/common/data_source_config_template.jinja +47 -0
  70. generators/static/templates/apis/core/api_injectable_module_template.jinja +14 -0
  71. generators/static/templates/apis/interceptors/api_logger_template.jinja +135 -0
  72. generators/static/templates/apis/interceptors/auth_interceptor_template.jinja +207 -0
  73. generators/static/templates/auth/application/auth_bloc_template.jinja +36 -0
  74. generators/static/templates/auth/application/auth_event_template.jinja +7 -0
  75. generators/static/templates/auth/application/auth_state_template.jinja +8 -0
  76. generators/static/templates/auth/infrastructure/auth_facade_module_template.jinja +16 -0
  77. generators/static/templates/auth/infrastructure/auth_facade_template.jinja +288 -0
  78. generators/static/templates/auth/infrastructure/mock_auth_facade_template.jinja +106 -0
  79. generators/static/templates/auth/model/auth_failure_template.jinja +11 -0
  80. generators/static/templates/auth/model/i_auth_facade_template.jinja +24 -0
  81. generators/static/templates/auth/model/user_template.jinja +34 -0
  82. generators/static/templates/auth/model/value_objects_template.jinja +54 -0
  83. generators/static/templates/auth/presentation/login_screen_template.jinja +24 -0
  84. generators/static/templates/auth/sign_in_form/application/sign_in_form_bloc_template.jinja +139 -0
  85. generators/static/templates/auth/sign_in_form/application/sign_in_form_event_template.jinja +15 -0
  86. generators/static/templates/auth/sign_in_form/application/sign_in_form_state_template.jinja +26 -0
  87. generators/static/templates/auth/sign_in_form/presentation/apple_form_template.jinja +16 -0
  88. generators/static/templates/auth/sign_in_form/presentation/email_password_form_template_INACTIVE.jinja +94 -0
  89. generators/static/templates/auth/sign_in_form/presentation/google_form_template.jinja +15 -0
  90. generators/static/templates/auth/sign_in_form/presentation/sign_in_form_template.jinja +381 -0
  91. generators/static/templates/component/component_bloc_template.jinja +49 -0
  92. generators/static/templates/component/component_event_template.jinja +7 -0
  93. generators/static/templates/component/component_form_bloc_template.jinja +56 -0
  94. generators/static/templates/component/component_form_event_template.jinja +7 -0
  95. generators/static/templates/component/component_form_state_template.jinja +18 -0
  96. generators/static/templates/component/component_form_widget_template.jinja +130 -0
  97. generators/static/templates/component/component_list_widget_template.jinja +95 -0
  98. generators/static/templates/component/component_state_template.jinja +9 -0
  99. generators/static/templates/component/component_widget_template.jinja +113 -0
  100. generators/static/templates/core/bloc/base_form_bloc_template.jinja +32 -0
  101. generators/static/templates/core/errors/error_localizer_template.jinja +61 -0
  102. generators/static/templates/core/infrastructure/base_mapper_template.jinja +21 -0
  103. generators/static/templates/core/infrastructure/base_repository_mixin_template.jinja +78 -0
  104. generators/static/templates/core/infrastructure/firebase_injectable_module_template.jinja +11 -0
  105. generators/static/templates/core/infrastructure/firestore_helpers_template.jinja +22 -0
  106. generators/static/templates/core/infrastructure/repository_error_handler_template.jinja +44 -0
  107. generators/static/templates/core/model/common_interfaces_template.jinja +3 -0
  108. generators/static/templates/core/model/entity_template.jinja +5 -0
  109. generators/static/templates/core/model/errors_template.jinja +15 -0
  110. generators/static/templates/core/model/failures_template.jinja +97 -0
  111. generators/static/templates/core/model/value_objects_template.jinja +135 -0
  112. generators/static/templates/core/model/value_validators_template.jinja +105 -0
  113. generators/static/templates/core/presentation/app_drawer_template.jinja +52 -0
  114. generators/static/templates/core/presentation/app_widget_template.jinja +41 -0
  115. generators/static/templates/core/presentation/bottom_nav_bar_template.jinja +32 -0
  116. generators/static/templates/domain/domain_mapper_template.jinja +39 -0
  117. generators/static/templates/domain/domain_remote_service_template.jinja +46 -0
  118. generators/static/templates/domain/domain_repository_template.jinja +90 -0
  119. generators/static/templates/domain/domain_service_module_template.jinja +23 -0
  120. generators/static/templates/domain/enum_template.jinja +3 -0
  121. generators/static/templates/domain/i_domain_service_template.jinja +18 -0
  122. generators/static/templates/domain/mock_domain_service_template.jinja +73 -0
  123. generators/static/templates/feature/feature_bloc_template.jinja +104 -0
  124. generators/static/templates/feature/feature_dto_template.jinja +26 -0
  125. generators/static/templates/feature/feature_entity_template.jinja +23 -0
  126. generators/static/templates/feature/feature_event_template.jinja +20 -0
  127. generators/static/templates/feature/feature_extensions_template.jinja +25 -0
  128. generators/static/templates/feature/feature_failure_template.jinja +11 -0
  129. generators/static/templates/feature/feature_page_template.jinja +113 -0
  130. generators/static/templates/feature/feature_repository_template.jinja +112 -0
  131. generators/static/templates/feature/feature_state_template.jinja +20 -0
  132. generators/static/templates/feature/i_feature_repository_template.jinja +21 -0
  133. generators/static/templates/feature/value_object_field_template.jinja +0 -0
  134. generators/static/templates/feature/value_object_template.jinja +0 -0
  135. generators/static/templates/feature/value_validators_template.jinja +57 -0
  136. generators/static/templates/home/home_screen_template.jinja +68 -0
  137. generators/static/templates/home/presentation/home_screen_template.jinja +52 -0
  138. generators/static/templates/home/screen_template.jinja +12 -0
  139. generators/static/templates/injection_template.jinja +8 -0
  140. generators/static/templates/logging/analytics_logging_template.jinja +42 -0
  141. generators/static/templates/logging/console_template.jinja +50 -0
  142. generators/static/templates/logging/logger_injectable_module_template.jinja +24 -0
  143. generators/static/templates/logging/logger_template.jinja +118 -0
  144. generators/static/templates/main_template.jinja +43 -0
  145. generators/static/templates/page_template.jinja +29 -0
  146. generators/static/templates/router_template.jinja +26 -0
  147. generators/static/templates/splash/presentation/splash_screen_auth_template.jinja +97 -0
  148. generators/static/templates/splash/presentation/splash_screen_template.jinja +51 -0
  149. generators/static/templates/storage/storage_repository_template.jinja +80 -0
  150. generators/static/templates/user_profile/infrastructure/user_profile_dto_template.jinja +27 -0
  151. generators/static/templates/user_profile/infrastructure/user_profile_mapper_template.jinja +43 -0
  152. generators/static/templates/user_profile/infrastructure/user_profile_repository_template.jinja +82 -0
  153. generators/static/templates/user_profile/infrastructure/user_profile_service_template.jinja +27 -0
  154. generators/static/templates/user_profile/model/i_user_profile_repository_template.jinja +34 -0
  155. generators/static/templates/user_profile/model/user_profile_failure_template.jinja +11 -0
  156. generators/static/templates/user_profile/model/user_profile_template.jinja +31 -0
  157. generators/static/templates/widgets/common/custom_scaffold_template.jinja +52 -0
  158. generators/static/templates/widgets/common/error_widget_template.jinja +22 -0
  159. generators/static/templates/widgets/common/loading_widget_template.jinja +14 -0
  160. generators/static/templates/widgets/common/unknown_state_widget_template.jinja +23 -0
  161. generators/templates/__init__.py +1 -0
  162. generators/templates/_core/core_generator.py +121 -0
  163. generators/templates/apis/apis_generator.py +50 -0
  164. generators/templates/auth/auth_generator.py +40 -0
  165. generators/templates/auth/sign_in_form_generator.py +22 -0
  166. generators/templates/copier.py +51 -0
  167. generators/templates/home/home_generator.py +26 -0
  168. generators/templates/lib/lib_generator.py +40 -0
  169. generators/templates/logging/logging_generator.py +28 -0
  170. generators/templates/main.py +75 -0
  171. generators/templates/splash/splash_generator.py +20 -0
  172. generators/templates/storage/storage_generator.py +5 -0
@@ -0,0 +1,139 @@
1
+ import 'dart:async';
2
+
3
+ import 'package:bloc/bloc.dart';
4
+ import 'package:dartz/dartz.dart';
5
+ import 'package:freezed_annotation/freezed_annotation.dart';
6
+ import 'package:[[project_name]]/domain/auth/model/auth_failure.dart';
7
+ import 'package:flutter/foundation.dart';
8
+ import 'package:[[project_name]]/domain/auth/model/value_objects.dart';
9
+ import 'package:[[project_name]]/domain/auth/model/i_auth_facade.dart';
10
+
11
+ part 'sign_in_form_event.dart';
12
+ part 'sign_in_form_state.dart';
13
+
14
+ part 'sign_in_form_bloc.freezed.dart';
15
+
16
+ class SignInFormBloc extends Bloc<SignInFormEvent, SignInFormState> {
17
+ final IAuthFacade _authFacade;
18
+
19
+ SignInFormBloc(this._authFacade) : super(SignInFormState.initial()) {
20
+ on<EmailChanged>(_onEmailChanged);
21
+ on<PasswordChanged>(_onPasswordChanged);
22
+ on<ConfirmPasswordChanged>(_onConfirmPasswordChanged);
23
+ on<ToggleSignInAction>(_onToggleSignInAction);
24
+ on<RegisterWithEmailAndPasswordPressed>(_onRegisterWithEmailAndPasswordPressed);
25
+ on<SignInWithEmailAndPasswordPressed>(_onSignInWithEmailAndPasswordPressed);
26
+ on<SignInWithGooglePressed>(_onSignInWithGooglePressed);
27
+ on<SignInWithApplePressed>(_onSignInWithApplePressed);
28
+ on<RegisterWithGooglePressed>(_onRegisterWithGooglePressed);
29
+ on<RegisterWithApplePressed>(_onRegisterWithApplePressed);
30
+ }
31
+
32
+ void _onEmailChanged(EmailChanged event, Emitter<SignInFormState> emit) {
33
+ emit(state.copyWith(
34
+ emailAddress: EmailAddress(event.emailStr),
35
+ authFailureOrSuccessOption: none(),
36
+ ));
37
+ }
38
+
39
+ void _onPasswordChanged(PasswordChanged event, Emitter<SignInFormState> emit) {
40
+ emit(state.copyWith(
41
+ password: Password(event.passwordStr),
42
+ confirmPassword: state.signInAction == SignInAction.signUp ? ConfirmPassword(event.passwordStr, state.confirmPassword.rawValue) : state.confirmPassword,
43
+ authFailureOrSuccessOption: none(),
44
+ ));
45
+ }
46
+
47
+ void _onConfirmPasswordChanged(ConfirmPasswordChanged event, Emitter<SignInFormState> emit) {
48
+ emit(state.copyWith(
49
+ confirmPassword: ConfirmPassword(state.password.rawValue, event.confirmPasswordStr),
50
+ authFailureOrSuccessOption: none(),
51
+ ));
52
+ }
53
+
54
+ void _onToggleSignInAction(ToggleSignInAction event, Emitter<SignInFormState> emit) {
55
+ final SignInAction toggledAction = state.signInAction == SignInAction.signIn ? SignInAction.signUp : SignInAction.signIn;
56
+
57
+ emit(state.copyWith(
58
+ signInAction: toggledAction,
59
+ confirmPassword: toggledAction == SignInAction.signUp ? ConfirmPassword(state.password.rawValue, state.confirmPassword.rawValue) : state.confirmPassword,
60
+ authFailureOrSuccessOption: none(),
61
+ ));
62
+ }
63
+
64
+ Future<void> _onRegisterWithEmailAndPasswordPressed(RegisterWithEmailAndPasswordPressed event, Emitter<SignInFormState> emit) async {
65
+ await _performActionOnAuthFacadeWithEmailAndPassword(_authFacade.registerWithEmailAndPassword, emit);
66
+ }
67
+
68
+ Future<void> _onSignInWithEmailAndPasswordPressed(SignInWithEmailAndPasswordPressed event, Emitter<SignInFormState> emit) async {
69
+ await _performActionOnAuthFacadeWithEmailAndPassword(_authFacade.signInWithEmailAndPassword, emit);
70
+ }
71
+
72
+ Future<void> _onSignInWithGooglePressed(SignInWithGooglePressed event, Emitter<SignInFormState> emit) async {
73
+ await _performActionOnAuthFacade(_authFacade.signInWithGoogle, emit);
74
+ }
75
+
76
+ Future<void> _onSignInWithApplePressed(SignInWithApplePressed event, Emitter<SignInFormState> emit) async {
77
+ await _performActionOnAuthFacade(_authFacade.signInWithApple, emit);
78
+ }
79
+
80
+ Future<void> _onRegisterWithGooglePressed(RegisterWithGooglePressed event, Emitter<SignInFormState> emit) async {
81
+ await _performActionOnAuthFacade(_authFacade.registerWithGoogle, emit);
82
+ }
83
+
84
+ Future<void> _onRegisterWithApplePressed(RegisterWithApplePressed event, Emitter<SignInFormState> emit) async {
85
+ await _performActionOnAuthFacade(_authFacade.registerWithApple, emit);
86
+ }
87
+
88
+ Future<void> _performActionOnAuthFacade(
89
+ Future<Either<AuthFailure, Unit>> Function() forwardedCall,
90
+ Emitter<SignInFormState> emit,
91
+ ) async {
92
+ Either<AuthFailure, Unit>? failureOrSuccess;
93
+
94
+ emit(state.copyWith(
95
+ isSubmitting: true,
96
+ authFailureOrSuccessOption: none(),
97
+ ));
98
+
99
+ failureOrSuccess = await forwardedCall();
100
+
101
+ emit(state.copyWith(
102
+ isSubmitting: false,
103
+ showErrorMessages: true,
104
+ authFailureOrSuccessOption: optionOf(failureOrSuccess),
105
+ ));
106
+ }
107
+
108
+ Future<void> _performActionOnAuthFacadeWithEmailAndPassword(
109
+ Future<Either<AuthFailure, Unit>> Function({
110
+ required EmailAddress emailAddress,
111
+ required Password password,
112
+ }) forwardedCall,
113
+ Emitter<SignInFormState> emit,
114
+ ) async {
115
+ Either<AuthFailure, Unit>? failureOrSuccess;
116
+
117
+ final bool isEmailValid = state.emailAddress.isValid();
118
+ final bool isPasswordValid = state.password.isValid();
119
+
120
+ final bool isConfirmPasswordValid = state.signInAction == SignInAction.signUp ? state.confirmPassword.isValid() : true;
121
+
122
+ if (isEmailValid && isPasswordValid && isConfirmPasswordValid) {
123
+ emit(state.copyWith(
124
+ isSubmitting: true,
125
+ authFailureOrSuccessOption: none(),
126
+ ));
127
+
128
+ failureOrSuccess = await forwardedCall(
129
+ emailAddress: state.emailAddress,
130
+ password: state.password,
131
+ );
132
+ }
133
+ emit(state.copyWith(
134
+ isSubmitting: false,
135
+ showErrorMessages: true,
136
+ authFailureOrSuccessOption: optionOf(failureOrSuccess),
137
+ ));
138
+ }
139
+ }
@@ -0,0 +1,15 @@
1
+ part of 'sign_in_form_bloc.dart';
2
+
3
+ @freezed
4
+ abstract class SignInFormEvent with _$SignInFormEvent {
5
+ const factory SignInFormEvent.emailChanged(String emailStr) = EmailChanged;
6
+ const factory SignInFormEvent.passwordChanged(String passwordStr) = PasswordChanged;
7
+ const factory SignInFormEvent.confirmPasswordChanged(String confirmPasswordStr) = ConfirmPasswordChanged;
8
+ const factory SignInFormEvent.toggleSignInAction() = ToggleSignInAction;
9
+ const factory SignInFormEvent.registerWithEmailAndPasswordPressed() = RegisterWithEmailAndPasswordPressed;
10
+ const factory SignInFormEvent.signInWithEmailAndPasswordPressed() = SignInWithEmailAndPasswordPressed;
11
+ const factory SignInFormEvent.signInWithGooglePressed() = SignInWithGooglePressed;
12
+ const factory SignInFormEvent.signInWithApplePressed() = SignInWithApplePressed;
13
+ const factory SignInFormEvent.registerWithGooglePressed() = RegisterWithGooglePressed;
14
+ const factory SignInFormEvent.registerWithApplePressed() = RegisterWithApplePressed;
15
+ }
@@ -0,0 +1,26 @@
1
+ part of 'sign_in_form_bloc.dart';
2
+
3
+ enum SignInAction { signIn, signUp }
4
+
5
+ @freezed
6
+ abstract class SignInFormState with _$SignInFormState {
7
+ const factory SignInFormState({
8
+ required EmailAddress emailAddress,
9
+ required Password password,
10
+ required ConfirmPassword confirmPassword,
11
+ required SignInAction signInAction,
12
+ required bool showErrorMessages,
13
+ required bool isSubmitting,
14
+ required Option<Either<AuthFailure, Unit>> authFailureOrSuccessOption,
15
+ }) = _SignInFormState;
16
+
17
+ factory SignInFormState.initial() => SignInFormState(
18
+ emailAddress: kDebugMode ? EmailAddress('email@example.com') : EmailAddress(''),
19
+ password: kDebugMode ? Password('password') : Password(''),
20
+ confirmPassword: kDebugMode ? ConfirmPassword('password', 'password') : ConfirmPassword('', ''),
21
+ signInAction: SignInAction.signIn,
22
+ showErrorMessages: false,
23
+ isSubmitting: false,
24
+ authFailureOrSuccessOption: none(),
25
+ );
26
+ }
@@ -0,0 +1,16 @@
1
+ const SizedBox(height: 8),
2
+ CButton.elevated(
3
+ onPressed: () => context.read<SignInFormBloc>().add(const SignInFormEvent.signInWithApplePressed()),
4
+ color: Colors.black,
5
+ radius: AppRadius.s,
6
+ suffixIcon: SvgPicture.asset(
7
+ 'assets/svgs/apple.svg',
8
+ semanticsLabel: 'Apple logo',
9
+ color: Colors.white,
10
+ width: 24,
11
+ height: 24,
12
+ ),
13
+ child: CText.label(
14
+ 'Continue with Apple',
15
+ ).white.bold,
16
+ ),
@@ -0,0 +1,94 @@
1
+ // const SizedBox(height: 8),
2
+ // CTextField.bordered(
3
+ // decoration: const CFieldDecoration(
4
+ // prefixIcon: Icon(Icons.email),
5
+ // labelText: __STRING_0__,
6
+ // ),
7
+ // autocorrect: false,
8
+ // onChanged: (value) {
9
+ // context.read<SignInFormBloc>().add(SignInFormEvent.emailChanged(value));
10
+ // },
11
+ // validator: (_) {
12
+ // return context.read<SignInFormBloc>().state.emailAddress.value.fold(
13
+ // (f) => f.maybeMap(
14
+ // invalidEmail: (_) => __STRING_1__,
15
+ // orElse: () => null,
16
+ // ),
17
+ // (_) => null,
18
+ // );
19
+ // },
20
+ // ),
21
+ // const SizedBox(height: 8),
22
+ // CTextField.bordered(
23
+ // // controller: passwordController,
24
+ // decoration: const CFieldDecoration(
25
+ // prefixIcon: Icon(Icons.lock),
26
+ // labelText: __STRING_2__,
27
+ // ),
28
+ // obscureText: true,
29
+ // autocorrect: false,
30
+ // onChanged: (value) {
31
+ // context.read<SignInFormBloc>().add(SignInFormEvent.passwordChanged(value));
32
+ // },
33
+ // validator: (_) {
34
+ // return context.read<SignInFormBloc>().state.password.value.fold(
35
+ // (f) => f.maybeMap(
36
+ // shortPassword: (_) => __STRING_3__,
37
+ // orElse: () => null,
38
+ // ),
39
+ // (_) => null,
40
+ // );
41
+ // },
42
+ // ),
43
+ // if (state.signInAction == SignInAction.signUp) ...[
44
+ // const SizedBox(height: 8),
45
+ // CTextField.bordered(
46
+ // decoration: const CFieldDecoration(
47
+ // prefixIcon: Icon(Icons.person),
48
+ // labelText: __STRING_4__,
49
+ // ),
50
+ // obscureText: true,
51
+ // autocorrect: false,
52
+ // onChanged: (value) {
53
+ // context.read<SignInFormBloc>().add(SignInFormEvent.confirmPasswordChanged(value));
54
+ // },
55
+ // validator: (value) {
56
+ // return context.read<SignInFormBloc>().state.confirmPassword.value.fold(
57
+ // (f) => f.maybeMap(
58
+ // passwordsDoNotMatch: (_) => __STRING_5__,
59
+ // orElse: () => null,
60
+ // ),
61
+ // (_) => null,
62
+ // );
63
+ // },
64
+ // ),
65
+ // ],
66
+ // const SizedBox(height: 8),
67
+ // CButton.elevated(
68
+ // radius: AppRadius.s,
69
+ // onPressed: () {
70
+ // if (state.signInAction == SignInAction.signIn) {
71
+ // context.read<SignInFormBloc>().add(const SignInFormEvent.signInWithEmailAndPasswordPressed());
72
+ // } else {
73
+ // context.read<SignInFormBloc>().add(const SignInFormEvent.registerWithEmailAndPasswordPressed());
74
+ // }
75
+ // },
76
+ // child: state.signInAction == SignInAction.signIn ? CText.label(__STRING_6__) : CText.label(__STRING_7__),
77
+ // ),
78
+ // const SizedBox(height: 16),
79
+ // Row(
80
+ // mainAxisAlignment: MainAxisAlignment.center,
81
+ // children: [
82
+ // CText.label(
83
+ // state.signInAction == SignInAction.signIn ? __STRING_8__ : __STRING_9__,
84
+ // ),
85
+ // GestureDetector(
86
+ // onTap: () {
87
+ // context.read<SignInFormBloc>().add(const SignInFormEvent.toggleSignInAction());
88
+ // },
89
+ // child: CText.label(
90
+ // state.signInAction == SignInAction.signIn ? __STRING_10__ : __STRING_11__,
91
+ // ).bold.withColor(Colors.blue),
92
+ // ),
93
+ // ],
94
+ // ),
@@ -0,0 +1,15 @@
1
+ const SizedBox(height: 16),
2
+ CButton.outlined(
3
+ onPressed: () => context.read<SignInFormBloc>().add(const SignInFormEvent.signInWithGooglePressed()),
4
+ radius: AppRadius.s,
5
+ color: Colors.grey,
6
+ suffixIcon: SvgPicture.asset(
7
+ 'assets/svgs/google.svg',
8
+ semanticsLabel: 'Google logo',
9
+ width: 24,
10
+ height: 24,
11
+ ),
12
+ child: CText.label(
13
+ 'Continue with Google',
14
+ ).bold,
15
+ ),