From cd3ed0fe699097be5dbe8bc41f32790f585cbf34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Malo=20L=C3=A9on?= <malo.leon@wyatt-studio.fr>
Date: Tue, 7 Feb 2023 09:44:03 +0100
Subject: [PATCH] refactor(ui_components): migrate components using code
 generator packages (#115)

---
 .../pubspec.yaml                              |  6 +-
 .../.vscode/extensions.json                   | 15 ++--
 packages/wyatt_ui_components/README.md        |  2 +-
 .../wyatt_ui_components/analysis_options.yaml |  4 +-
 .../lib/src/core/core.dart                    |  2 +-
 .../extensions/build_context_extensions.dart  |  2 +-
 .../lib/src/core/mixins/copy_with_mixin.dart  | 19 +++++
 .../lib/src/domain/domain.dart                |  4 +-
 .../domain/entities/app_bar_component.dart    | 36 ++++++++++
 .../domain/entities/app_bar_component.g.dart  | 20 ++++++
 .../bottom_navigation_bar_component.dart      | 34 +++++++++
 .../bottom_navigation_bar_component.g.dart    | 17 +++++
 .../lib/src/domain/entities/component.dart    |  4 +-
 .../lib/src/domain/entities/components.dart   | 69 -------------------
 .../lib/src/domain/entities/entities.dart     | 21 ++++++
 .../entities/error_widget_component.dart      | 29 ++++++++
 .../entities/error_widget_component.g.dart    | 16 +++++
 .../entities/loading_widget_component.dart    | 29 ++++++++
 .../entities/loading_widget_component.g.dart  | 16 +++++
 .../lib/src/features/component_theme.dart     |  2 +-
 .../src/features/component_theme_data.dart    |  4 +-
 .../lib/src/features/features.dart            |  2 +-
 packages/wyatt_ui_components/lib/src/src.dart |  3 +-
 .../lib/wyatt_wyatt_ui_components.dart        |  2 +-
 packages/wyatt_ui_components/pubspec.yaml     | 19 +++--
 25 files changed, 273 insertions(+), 104 deletions(-)
 create mode 100644 packages/wyatt_ui_components/lib/src/core/mixins/copy_with_mixin.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.g.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.g.dart
 delete mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/components.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/entities.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.g.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.dart
 create mode 100644 packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.g.dart

diff --git a/packages/wyatt_component_copy_with_gen/pubspec.yaml b/packages/wyatt_component_copy_with_gen/pubspec.yaml
index 4fb5c97c..c878289c 100644
--- a/packages/wyatt_component_copy_with_gen/pubspec.yaml
+++ b/packages/wyatt_component_copy_with_gen/pubspec.yaml
@@ -12,8 +12,10 @@ dependencies:
   source_gen: ^1.2.7
   analyzer: ^5.4.0
 
-  wyatt_component_copy_with_extension:
-    path: ../wyatt_component_copy_with_extension
+wyatt_component_copy_with_extension:
+  git:
+    url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
+    path: packages/wyatt_component_copy_with_extension
 
 dev_dependencies:
   test: ^1.21.0
diff --git a/packages/wyatt_ui_components/.vscode/extensions.json b/packages/wyatt_ui_components/.vscode/extensions.json
index 30cd2233..1ab895dc 100644
--- a/packages/wyatt_ui_components/.vscode/extensions.json
+++ b/packages/wyatt_ui_components/.vscode/extensions.json
@@ -1,24 +1,21 @@
 /*
- * Copyright (C) 2022 WYATT GROUP
+ * Copyright (C) 2023 WYATT GROUP
  * Please see the AUTHORS file for details.
- * 
+ *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * any later version.
- * 
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
  */
 
 {
-    "recommendations": [
-        "psioniq.psi-header",
-        "blaugold.melos-code"
-    ]
-}
\ No newline at end of file
+  "recommendations": ["psioniq.psi-header", "blaugold.melos-code"]
+}
diff --git a/packages/wyatt_ui_components/README.md b/packages/wyatt_ui_components/README.md
index 01aaee48..4c2d773d 100644
--- a/packages/wyatt_ui_components/README.md
+++ b/packages/wyatt_ui_components/README.md
@@ -1,5 +1,5 @@
 <!--
- * Copyright (C) 2022 WYATT GROUP
+ * Copyright (C) 2023 WYATT GROUP
  * Please see the AUTHORS file for details.
 
  * This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/analysis_options.yaml b/packages/wyatt_ui_components/analysis_options.yaml
index 22f1fb8e..225c0796 100644
--- a/packages/wyatt_ui_components/analysis_options.yaml
+++ b/packages/wyatt_ui_components/analysis_options.yaml
@@ -1,4 +1,4 @@
-# Copyright (C) 2022 WYATT GROUP
+# Copyright (C) 2023 WYATT GROUP
 # Please see the AUTHORS file for details.
 #
 # This program is free software: you can redistribute it and/or modify
@@ -14,6 +14,4 @@
 # You should have received a copy of the GNU General Public License
 # along with this program. If not, see <https://www.gnu.org/licenses/>.
 
-
 include: package:wyatt_analysis/analysis_options.flutter.experimental.yaml
-
diff --git a/packages/wyatt_ui_components/lib/src/core/core.dart b/packages/wyatt_ui_components/lib/src/core/core.dart
index 0580104c..243dd3d2 100644
--- a/packages/wyatt_ui_components/lib/src/core/core.dart
+++ b/packages/wyatt_ui_components/lib/src/core/core.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/lib/src/core/extensions/build_context_extensions.dart b/packages/wyatt_ui_components/lib/src/core/extensions/build_context_extensions.dart
index d22389c0..be5e6045 100644
--- a/packages/wyatt_ui_components/lib/src/core/extensions/build_context_extensions.dart
+++ b/packages/wyatt_ui_components/lib/src/core/extensions/build_context_extensions.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/lib/src/core/mixins/copy_with_mixin.dart b/packages/wyatt_ui_components/lib/src/core/mixins/copy_with_mixin.dart
new file mode 100644
index 00000000..cd7bd5a9
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/core/mixins/copy_with_mixin.dart
@@ -0,0 +1,19 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+mixin CopyWithMixin<Proxy> {
+  Proxy get copyWith;
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/domain.dart b/packages/wyatt_ui_components/lib/src/domain/domain.dart
index 1bebe890..83394f16 100644
--- a/packages/wyatt_ui_components/lib/src/domain/domain.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/domain.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
@@ -14,4 +14,4 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
-export 'entities/components.dart';
+export './entities/entities.dart';
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.dart
new file mode 100644
index 00000000..1a12cb97
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.dart
@@ -0,0 +1,36 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import 'package:flutter/material.dart';
+import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
+import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
+import 'package:wyatt_ui_components/src/domain/entities/component.dart';
+
+part 'app_bar_component.g.dart';
+
+@ComponentProxyExtension()
+abstract class AppBarComponent extends Component
+    with CopyWithMixin<$AppBarComponentCWProxy> {
+  final String? title;
+  final Widget? leading;
+  final List<Widget>? actions;
+  const AppBarComponent({
+    this.title,
+    this.leading,
+    this.actions,
+    super.key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.g.dart
new file mode 100644
index 00000000..fe0b0b20
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/app_bar_component.g.dart
@@ -0,0 +1,20 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'app_bar_component.dart';
+
+// **************************************************************************
+// ComponentProxyGenerator
+// **************************************************************************
+
+abstract class $AppBarComponentCWProxy {
+  AppBarComponent title(String? title);
+  AppBarComponent leading(Widget? leading);
+  AppBarComponent actions(List<Widget>? actions);
+  AppBarComponent key(Key? key);
+  AppBarComponent call({
+    String? title,
+    Widget? leading,
+    List<Widget>? actions,
+    Key? key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.dart
new file mode 100644
index 00000000..0620ef87
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.dart
@@ -0,0 +1,34 @@
+import 'package:flutter/material.dart';
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
+import 'package:wyatt_ui_components/src/domain/entities/component.dart';
+import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
+
+part 'bottom_navigation_bar_component.g.dart';
+
+@ComponentProxyExtension()
+abstract class BottomNavigationBarComponent extends Component
+    with CopyWithMixin<$BottomNavigationBarComponentCWProxy> {
+  final int currentIndex;
+  final void Function(BuildContext, int)? onTap;
+  const BottomNavigationBarComponent({
+    this.onTap,
+    this.currentIndex = 0,
+    super.key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.g.dart
new file mode 100644
index 00000000..e8963f65
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/bottom_navigation_bar_component.g.dart
@@ -0,0 +1,17 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'bottom_navigation_bar_component.dart';
+
+// **************************************************************************
+// ComponentProxyGenerator
+// **************************************************************************
+
+abstract class $BottomNavigationBarComponentCWProxy {
+  BottomNavigationBarComponent onTap(void Function(BuildContext, int)? onTap);
+  BottomNavigationBarComponent currentIndex(int? currentIndex);
+  BottomNavigationBarComponent key(Key? key);
+  BottomNavigationBarComponent call({
+    void Function(BuildContext, int)? onTap,
+    Key? key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/component.dart
index 7a03682f..33f05fbd 100644
--- a/packages/wyatt_ui_components/lib/src/domain/entities/component.dart
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/component.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
@@ -18,6 +18,4 @@ import 'package:flutter/material.dart';
 
 abstract class Component extends StatelessWidget {
   const Component({super.key});
-
-  Component? configure();
 }
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/components.dart b/packages/wyatt_ui_components/lib/src/domain/entities/components.dart
deleted file mode 100644
index 44c16697..00000000
--- a/packages/wyatt_ui_components/lib/src/domain/entities/components.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2022 WYATT GROUP
-// Please see the AUTHORS file for details.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-import 'package:flutter/material.dart';
-import 'package:wyatt_ui_components/src/domain/entities/component.dart';
-
-abstract class AppBarComponent extends Component {
-  final String? title;
-  final Widget? leading;
-  final List<Widget>? actions;
-  const AppBarComponent({
-    this.title,
-    this.leading,
-    this.actions,
-    super.key,
-  });
-
-  @override
-  AppBarComponent? configure({
-    String? title,
-    Widget? leading,
-    List<Widget>? actions,
-  });
-}
-
-abstract class BottomNavigationBarComponent extends Component {
-  final int currentIndex;
-  final void Function(BuildContext, int)? onTap;
-  const BottomNavigationBarComponent({
-    this.onTap,
-    this.currentIndex = 0,
-    super.key,
-  });
-
-  @override
-  BottomNavigationBarComponent? configure({
-    void Function(BuildContext, int)? onTap,
-    int currentIndex = 0,
-  });
-}
-
-abstract class ErrorWidgetComponent extends Component {
-  final String? error;
-  const ErrorWidgetComponent({required this.error, super.key});
-
-  @override
-  ErrorWidgetComponent? configure({String? error});
-}
-
-abstract class LoadingWidgetComponent extends Component {
-  final Color? color;
-  const LoadingWidgetComponent({required this.color, super.key});
-
-  @override
-  LoadingWidgetComponent? configure({Color? color});
-}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/entities.dart b/packages/wyatt_ui_components/lib/src/domain/entities/entities.dart
new file mode 100644
index 00000000..51d081f6
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/entities.dart
@@ -0,0 +1,21 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+export './app_bar_component.dart';
+export './bottom_navigation_bar_component.dart';
+export './error_widget_component.dart';
+export './loading_widget_component.dart';
+export './component.dart';
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.dart
new file mode 100644
index 00000000..e4a0ae83
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.dart
@@ -0,0 +1,29 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
+import 'package:wyatt_ui_components/src/domain/entities/component.dart';
+import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
+import 'package:flutter/material.dart';
+
+part 'error_widget_component.g.dart';
+
+@ComponentProxyExtension()
+abstract class ErrorWidgetComponent extends Component
+    with CopyWithMixin<$ErrorWidgetComponentCWProxy> {
+  final String? error;
+  const ErrorWidgetComponent({required this.error, super.key});
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.g.dart
new file mode 100644
index 00000000..6d62b709
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/error_widget_component.g.dart
@@ -0,0 +1,16 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'error_widget_component.dart';
+
+// **************************************************************************
+// ComponentProxyGenerator
+// **************************************************************************
+
+abstract class $ErrorWidgetComponentCWProxy {
+  ErrorWidgetComponent error(String? error);
+  ErrorWidgetComponent key(Key? key);
+  ErrorWidgetComponent call({
+    String? error,
+    Key? key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.dart
new file mode 100644
index 00000000..c565b6e3
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.dart
@@ -0,0 +1,29 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+import 'package:flutter/material.dart';
+import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
+import 'package:wyatt_ui_components/src/domain/entities/component.dart';
+import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
+
+part 'loading_widget_component.g.dart';
+
+@ComponentProxyExtension()
+abstract class LoadingWidgetComponent extends Component
+    with CopyWithMixin<$LoadingWidgetComponentCWProxy> {
+  final Color? color;
+  const LoadingWidgetComponent({required this.color, super.key});
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.g.dart
new file mode 100644
index 00000000..29401267
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/loading_widget_component.g.dart
@@ -0,0 +1,16 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'loading_widget_component.dart';
+
+// **************************************************************************
+// ComponentProxyGenerator
+// **************************************************************************
+
+abstract class $LoadingWidgetComponentCWProxy {
+  LoadingWidgetComponent color(Color? color);
+  LoadingWidgetComponent key(Key? key);
+  LoadingWidgetComponent call({
+    Color? color,
+    Key? key,
+  });
+}
diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme.dart b/packages/wyatt_ui_components/lib/src/features/component_theme.dart
index 612b71a2..9e3b64d3 100644
--- a/packages/wyatt_ui_components/lib/src/features/component_theme.dart
+++ b/packages/wyatt_ui_components/lib/src/features/component_theme.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
index e613e826..f518caa7 100644
--- a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
+++ b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
-import 'package:wyatt_ui_components/src/domain/entities/components.dart';
+import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
 
 class ComponentThemeData {
   final AppBarComponent? appBar;
diff --git a/packages/wyatt_ui_components/lib/src/features/features.dart b/packages/wyatt_ui_components/lib/src/features/features.dart
index 60e0e1d2..806071dc 100644
--- a/packages/wyatt_ui_components/lib/src/features/features.dart
+++ b/packages/wyatt_ui_components/lib/src/features/features.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/lib/src/src.dart b/packages/wyatt_ui_components/lib/src/src.dart
index 9bd7701f..36673d35 100644
--- a/packages/wyatt_ui_components/lib/src/src.dart
+++ b/packages/wyatt_ui_components/lib/src/src.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
@@ -14,7 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with this program. If not, see <https://www.gnu.org/licenses/>.
 
-export 'core/core.dart';
 export 'core/core.dart';
 export 'domain/domain.dart';
 export 'features/features.dart';
diff --git a/packages/wyatt_ui_components/lib/wyatt_wyatt_ui_components.dart b/packages/wyatt_ui_components/lib/wyatt_wyatt_ui_components.dart
index 3d5154e2..3f16c3b1 100644
--- a/packages/wyatt_ui_components/lib/wyatt_wyatt_ui_components.dart
+++ b/packages/wyatt_ui_components/lib/wyatt_wyatt_ui_components.dart
@@ -1,4 +1,4 @@
-// Copyright (C) 2022 WYATT GROUP
+// Copyright (C) 2023 WYATT GROUP
 // Please see the AUTHORS file for details.
 //
 // This program is free software: you can redistribute it and/or modify
diff --git a/packages/wyatt_ui_components/pubspec.yaml b/packages/wyatt_ui_components/pubspec.yaml
index c8928ed5..d39806bc 100644
--- a/packages/wyatt_ui_components/pubspec.yaml
+++ b/packages/wyatt_ui_components/pubspec.yaml
@@ -4,21 +4,28 @@ repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/mas
 version: 0.0.1
 
 environment:
-  sdk: '>=2.17.0 <3.0.0'
+  sdk: ">=2.17.0 <3.0.0"
 
 dependencies:
-  
   flutter:
     sdk: flutter
+wyatt_component_copy_with_extension:
+  git:
+    url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
+    path: packages/wyatt_component_copy_with_extension
 
 dev_dependencies:
-  
   flutter_test:
     sdk: flutter
-  
-  
+
+  build_runner: ^2.3.3
+  wyatt_component_copy_with_gen:
+    git:
+      url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
+      path: packages/wyatt_component_copy_with_gen
+
   wyatt_analysis:
     git:
       url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
       ref: wyatt_analysis-v2.3.0
-      path: packages/wyatt_analysis
\ No newline at end of file
+      path: packages/wyatt_analysis