diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..e4d616c1
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,25 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "web",
+ "request": "launch",
+ "type": "dart"
+ },
+ {
+ "name": "web (profile mode)",
+ "request": "launch",
+ "type": "dart",
+ "flutterMode": "profile"
+ },
+ {
+ "name": "web (release mode)",
+ "request": "launch",
+ "type": "dart",
+ "flutterMode": "release"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/assets/icons/desk_icon.svg b/assets/icons/desk_icon.svg
new file mode 100644
index 00000000..04b35926
--- /dev/null
+++ b/assets/icons/desk_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 70693e4a..b6363034 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -1,7 +1,7 @@
import UIKit
import Flutter
-@UIApplicationMain
+@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
diff --git a/lib/pages/common/buttons/add_space_button.dart b/lib/pages/common/buttons/add_space_button.dart
new file mode 100644
index 00000000..8348b390
--- /dev/null
+++ b/lib/pages/common/buttons/add_space_button.dart
@@ -0,0 +1,44 @@
+import 'package:flutter/material.dart';
+
+class AddSpaceButton extends StatelessWidget {
+ final VoidCallback onTap;
+
+ const AddSpaceButton({super.key, required this.onTap});
+
+ @override
+ Widget build(BuildContext context) {
+ return GestureDetector(
+ onTap: onTap, // Handle tap event
+ child: Container(
+ width: 120, // Width of the button
+ height: 60, // Height of the button
+ decoration: BoxDecoration(
+ color: Colors.white,
+ borderRadius: BorderRadius.circular(20), // Rounded corners
+ boxShadow: [
+ BoxShadow(
+ color: Colors.grey.withOpacity(0.5), // Shadow color
+ spreadRadius: 5, // Spread radius of the shadow
+ blurRadius: 7, // Blur effect
+ offset: const Offset(0, 3), // Shadow position
+ ),
+ ],
+ ),
+ child: Center(
+ child: Container(
+ width: 40, // Size of the inner circle
+ height: 40,
+ decoration: BoxDecoration(
+ color: const Color(0xFFF5F6F7), // Light gray background
+ shape: BoxShape.circle, // Circular shape for the icon container
+ ),
+ child: const Icon(
+ Icons.add, // Add icon
+ color: Colors.blue, // Icon color
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/lib/pages/common/buttons/cancel_button.dart b/lib/pages/common/buttons/cancel_button.dart
new file mode 100644
index 00000000..da6dcdc7
--- /dev/null
+++ b/lib/pages/common/buttons/cancel_button.dart
@@ -0,0 +1,38 @@
+import 'package:flutter/material.dart';
+import 'package:syncrow_web/utils/color_manager.dart';
+
+class CancelButton extends StatelessWidget {
+ final String label;
+ final VoidCallback? onPressed;
+ final double? height; // Optional height parameter for customization
+ final double? borderRadius; // Optional border radius customization
+ final double? width;
+
+ const CancelButton({
+ super.key,
+ required this.label, // Button label
+ required this.onPressed, // Button action
+ this.height = 40, // Default height
+ this.width = 140,
+ this.borderRadius = 10, // Default border radius
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return ElevatedButton(
+ onPressed: onPressed,
+ style: ButtonStyle(
+ backgroundColor: WidgetStateProperty.all(ColorsManager.boxColor), // White background
+ foregroundColor: WidgetStateProperty.all(Colors.black), // Black text color
+ shape: WidgetStateProperty.all(
+ RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(borderRadius ?? 10),
+ side: const BorderSide(color: ColorsManager.boxColor), // Black border
+ ),
+ ),
+ fixedSize: WidgetStateProperty.all(Size(width ?? 50, height ?? 40)), // Set button height
+ ),
+ child: Text(label), // Dynamic label
+ );
+ }
+}
\ No newline at end of file
diff --git a/lib/pages/common/buttons/default_button.dart b/lib/pages/common/buttons/default_button.dart
index 5aa506f8..37320b26 100644
--- a/lib/pages/common/buttons/default_button.dart
+++ b/lib/pages/common/buttons/default_button.dart
@@ -15,7 +15,8 @@ class DefaultButton extends StatelessWidget {
this.backgroundColor,
this.foregroundColor,
this.borderRadius,
- this.height,
+ this.height = 40,
+ this.width = 140,
this.padding,
});
final void Function()? onPressed;
@@ -31,6 +32,8 @@ class DefaultButton extends StatelessWidget {
final ButtonStyle? customButtonStyle;
final Color? backgroundColor;
final Color? foregroundColor;
+ final double? width;
+
@override
Widget build(BuildContext context) {
return ElevatedButton(
@@ -39,6 +42,7 @@ class DefaultButton extends StatelessWidget {
? null
: customButtonStyle ??
ButtonStyle(
+ fixedSize: WidgetStateProperty.all(Size(width ?? 50, height ?? 40)), // Set button height
textStyle: MaterialStateProperty.all(
customTextStyle ??
Theme.of(context).textTheme.bodySmall!.copyWith(
@@ -59,14 +63,11 @@ class DefaultButton extends StatelessWidget {
? backgroundColor ?? ColorsManager.primaryColor
: Colors.black.withOpacity(0.2);
}),
- shape: MaterialStateProperty.all(
+ shape: WidgetStateProperty.all(
RoundedRectangleBorder(
- borderRadius: BorderRadius.circular(borderRadius ?? 20),
+ borderRadius: BorderRadius.circular(borderRadius ?? 10),
),
),
- fixedSize: MaterialStateProperty.all(
- const Size.fromHeight(50),
- ),
padding: MaterialStateProperty.all(
EdgeInsets.all(padding ?? 10),
),
diff --git a/lib/pages/spaces_management/bloc/space_management_bloc.dart b/lib/pages/spaces_management/bloc/space_management_bloc.dart
new file mode 100644
index 00000000..bb4afe19
--- /dev/null
+++ b/lib/pages/spaces_management/bloc/space_management_bloc.dart
@@ -0,0 +1,60 @@
+import 'package:equatable/equatable.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+
+import 'package:syncrow_web/pages/spaces_management/model/space_model.dart';
+
+// Events
+abstract class SpaceEvent extends Equatable {
+ @override
+ List