From 7c5bca35fca4f1afceec8964caec1044e1e46e62 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 23 Jul 2025 10:52:07 +0300 Subject: [PATCH] Add `DuplicateSpaceTextField` widget for user input in duplicate space management. --- .../widgets/duplicate_space_text_field.dart | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/pages/space_management_v2/modules/duplicate_space/presentation/widgets/duplicate_space_text_field.dart diff --git a/lib/pages/space_management_v2/modules/duplicate_space/presentation/widgets/duplicate_space_text_field.dart b/lib/pages/space_management_v2/modules/duplicate_space/presentation/widgets/duplicate_space_text_field.dart new file mode 100644 index 00000000..19b0201a --- /dev/null +++ b/lib/pages/space_management_v2/modules/duplicate_space/presentation/widgets/duplicate_space_text_field.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; + +class DuplicateSpaceTextField extends StatelessWidget { + const DuplicateSpaceTextField({ + required this.nameController, + required this.isNameValid, + required this.initialName, + super.key, + }); + + final TextEditingController nameController; + final bool isNameValid; + final String initialName; + + String get _errorText => 'Name must be different from "$initialName"'; + + @override + Widget build(BuildContext context) { + return TextField( + controller: nameController, + style: context.textTheme.bodyMedium!.copyWith( + color: ColorsManager.blackColor, + ), + decoration: InputDecoration( + label: const Text('Space Name'), + border: _border(), + enabledBorder: _border(), + focusedBorder: _border(ColorsManager.primaryColor), + errorBorder: _border(context.theme.colorScheme.error), + focusedErrorBorder: _border(context.theme.colorScheme.error), + errorStyle: context.textTheme.bodyMedium!.copyWith( + color: context.theme.colorScheme.error, + fontSize: 8, + ), + errorText: isNameValid ? null : _errorText, + ), + ); + } + + OutlineInputBorder _border([Color? color]) { + return OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + borderSide: BorderSide( + color: color ?? ColorsManager.blackColor, + width: 0.5, + ), + ); + } +}