diff --git a/frontend/.vscode/tasks.json b/frontend/.vscode/tasks.json
index 30b48151ab..6e906e4d2e 100644
--- a/frontend/.vscode/tasks.json
+++ b/frontend/.vscode/tasks.json
@@ -20,7 +20,8 @@
"AF: Flutter Pub Get",
"AF: Flutter Package Get",
"AF: Generate Language Files",
- "AF: Generate Freezed Files"
+ "AF: Generate Freezed Files",
+ "AF: Generate Svg Files"
],
"presentation": {
"reveal": "always",
@@ -38,7 +39,8 @@
"AF: Flutter Pub Get",
"AF: Flutter Package Get",
"AF: Generate Language Files",
- "AF: Generate Freezed Files"
+ "AF: Generate Freezed Files",
+ "AF: Generate Svg Files"
],
"presentation": {
"reveal": "always",
@@ -56,7 +58,8 @@
"AF: Flutter Pub Get",
"AF: Flutter Package Get",
"AF: Generate Language Files",
- "AF: Generate Freezed Files"
+ "AF: Generate Freezed Files",
+ "AF: Generate Svg Files"
],
"presentation": {
"reveal": "always",
@@ -107,7 +110,8 @@
"AF: Flutter Pub Get",
"AF: Flutter Package Get",
"AF: Generate Language Files",
- "AF: Generate Freezed Files"
+ "AF: Generate Freezed Files",
+ "AF: Generate Svg Files"
],
"group": {
"kind": "build",
@@ -161,7 +165,7 @@
]
}
}
- },
+ }
},
{
"label": "AF: Generate Language Files",
@@ -184,6 +188,27 @@
"cwd": "${workspaceFolder}"
}
},
+ {
+ "label": "AF: Generate Svg Files",
+ "type": "shell",
+ "command": "sh ./scripts/code_generation/flowy_icons/generate_flowy_icons.sh",
+ "windows": {
+ "options": {
+ "shell": {
+ "executable": "cmd.exe",
+ "args": [
+ "/d",
+ "/c",
+ ".\\scripts\\code_generation\\flowy_icons\\generate_flowy_icons.cmd"
+ ]
+ }
+ }
+ },
+ "group": "build",
+ "options": {
+ "cwd": "${workspaceFolder}"
+ }
+ },
{
"label": "AF: Flutter Clean",
"type": "shell",
@@ -197,10 +222,7 @@
"label": "AF: flutter build aar",
"type": "flutter",
"command": "flutter",
- "args": [
- "build",
- "aar"
- ],
+ "args": ["build", "aar"],
"group": "build",
"problemMatcher": [],
"detail": "appflowy_flutter"
@@ -210,9 +232,7 @@
"type": "shell",
"isBackground": true,
"command": "yarn",
- "args": [
- "dev"
- ],
+ "args": ["dev"],
"options": {
"cwd": "${workspaceFolder}/appflowy_tauri"
}
@@ -245,10 +265,7 @@
"label": "AF: Tauri Clean + Dev",
"type": "shell",
"dependsOrder": "sequence",
- "dependsOn": [
- "AF: Tauri Clean",
- "AF: Tauri UI Dev"
- ],
+ "dependsOn": ["AF: Tauri Clean", "AF: Tauri UI Dev"],
"options": {
"cwd": "${workspaceFolder}"
}
@@ -268,6 +285,6 @@
"options": {
"cwd": "${workspaceFolder}/appflowy_flutter"
}
- },
+ }
]
-}
\ No newline at end of file
+}
diff --git a/frontend/appflowy_flutter/.gitignore b/frontend/appflowy_flutter/.gitignore
index c1b771a89c..e60f0bd4e8 100644
--- a/frontend/appflowy_flutter/.gitignore
+++ b/frontend/appflowy_flutter/.gitignore
@@ -77,3 +77,4 @@ coverage/
**/failures/*.png
assets/translations/
+assets/flowy_icons/*
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/common/archive.svg b/frontend/appflowy_flutter/assets/images/common/archive.svg
deleted file mode 100644
index 590dad7c38..0000000000
--- a/frontend/appflowy_flutter/assets/images/common/archive.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/common/information.svg b/frontend/appflowy_flutter/assets/images/common/information.svg
deleted file mode 100644
index 3ff0998a03..0000000000
--- a/frontend/appflowy_flutter/assets/images/common/information.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/common/open_folder.svg b/frontend/appflowy_flutter/assets/images/common/open_folder.svg
deleted file mode 100644
index cd81df9271..0000000000
--- a/frontend/appflowy_flutter/assets/images/common/open_folder.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/common/recover.svg b/frontend/appflowy_flutter/assets/images/common/recover.svg
deleted file mode 100644
index 38d77b51de..0000000000
--- a/frontend/appflowy_flutter/assets/images/common/recover.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/common/settings.svg b/frontend/appflowy_flutter/assets/images/common/settings.svg
deleted file mode 100644
index 92140a3c23..0000000000
--- a/frontend/appflowy_flutter/assets/images/common/settings.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/Favorite/active.svg b/frontend/appflowy_flutter/assets/images/editor/Favorite/active.svg
deleted file mode 100644
index 8ad54bbbb5..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/Favorite/active.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/calendar.svg b/frontend/appflowy_flutter/assets/images/editor/calendar.svg
deleted file mode 100644
index c69687bc2a..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/calendar.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/editor/delete.svg b/frontend/appflowy_flutter/assets/images/editor/delete.svg
deleted file mode 100644
index cdf24226b4..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/delete.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/duplicate.svg b/frontend/appflowy_flutter/assets/images/editor/duplicate.svg
deleted file mode 100644
index 1ae2067c24..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/duplicate.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/editor_check.svg b/frontend/appflowy_flutter/assets/images/editor/editor_check.svg
deleted file mode 100644
index 8446cced9f..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/editor_check.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/insert_emoticon.svg b/frontend/appflowy_flutter/assets/images/editor/insert_emoticon.svg
deleted file mode 100644
index 8bb960e52d..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/insert_emoticon.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/insert_emoticon_2.svg b/frontend/appflowy_flutter/assets/images/editor/insert_emoticon_2.svg
deleted file mode 100644
index 66bbf7a626..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/insert_emoticon_2.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/link.svg b/frontend/appflowy_flutter/assets/images/editor/link.svg
deleted file mode 100644
index 5fbcc8d787..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/link.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/editor/math.svg b/frontend/appflowy_flutter/assets/images/editor/math.svg
deleted file mode 100644
index 32e79a21ed..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/math.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/editor/option.svg b/frontend/appflowy_flutter/assets/images/editor/option.svg
deleted file mode 100644
index 627c959f9f..0000000000
--- a/frontend/appflowy_flutter/assets/images/editor/option.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/file_icon.jpg b/frontend/appflowy_flutter/assets/images/file_icon.jpg
deleted file mode 100644
index 88865fa004..0000000000
Binary files a/frontend/appflowy_flutter/assets/images/file_icon.jpg and /dev/null differ
diff --git a/frontend/appflowy_flutter/assets/images/file_icon.svg b/frontend/appflowy_flutter/assets/images/file_icon.svg
deleted file mode 100644
index f0fb8ce9ce..0000000000
--- a/frontend/appflowy_flutter/assets/images/file_icon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/folder.svg b/frontend/appflowy_flutter/assets/images/folder.svg
deleted file mode 100644
index 9c4d0dddb0..0000000000
--- a/frontend/appflowy_flutter/assets/images/folder.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/grid/checkmark.svg b/frontend/appflowy_flutter/assets/images/grid/checkmark.svg
deleted file mode 100644
index f9c848f713..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/checkmark.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/details.svg b/frontend/appflowy_flutter/assets/images/grid/details.svg
deleted file mode 100644
index e4c9f58f27..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/details.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/duplicate.svg b/frontend/appflowy_flutter/assets/images/grid/duplicate.svg
deleted file mode 100644
index f11048fd2f..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/duplicate.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/expander.svg b/frontend/appflowy_flutter/assets/images/grid/expander.svg
deleted file mode 100644
index 179bdb1a9e..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/expander.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/checkbox.svg b/frontend/appflowy_flutter/assets/images/grid/field/checkbox.svg
deleted file mode 100644
index 37f52c47ed..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/checkbox.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/checklist.svg b/frontend/appflowy_flutter/assets/images/grid/field/checklist.svg
deleted file mode 100644
index 3a88d236a1..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/checklist.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/date.svg b/frontend/appflowy_flutter/assets/images/grid/field/date.svg
deleted file mode 100644
index 78243f1e75..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/date.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/euro.svg b/frontend/appflowy_flutter/assets/images/grid/field/euro.svg
deleted file mode 100644
index 95f511f687..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/euro.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/multi_select.svg b/frontend/appflowy_flutter/assets/images/grid/field/multi_select.svg
deleted file mode 100644
index 97a2e9c434..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/multi_select.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/number.svg b/frontend/appflowy_flutter/assets/images/grid/field/number.svg
deleted file mode 100644
index 9d8b98d10d..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/number.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/numbers.svg b/frontend/appflowy_flutter/assets/images/grid/field/numbers.svg
deleted file mode 100644
index 9d8b98d10d..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/numbers.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/single_select.svg b/frontend/appflowy_flutter/assets/images/grid/field/single_select.svg
deleted file mode 100644
index 8ccbc9a2e3..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/single_select.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/text.svg b/frontend/appflowy_flutter/assets/images/grid/field/text.svg
deleted file mode 100644
index 7befa5080f..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/text.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/url.svg b/frontend/appflowy_flutter/assets/images/grid/field/url.svg
deleted file mode 100644
index f00f5c7aa2..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/url.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/us_dollar.svg b/frontend/appflowy_flutter/assets/images/grid/field/us_dollar.svg
deleted file mode 100644
index a8485cd6a1..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/us_dollar.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/field/yen.svg b/frontend/appflowy_flutter/assets/images/grid/field/yen.svg
deleted file mode 100644
index 8e9bf47c99..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/field/yen.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/hide.svg b/frontend/appflowy_flutter/assets/images/grid/hide.svg
deleted file mode 100644
index dfb6dbb90c..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/hide.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/left.svg b/frontend/appflowy_flutter/assets/images/grid/left.svg
deleted file mode 100644
index 0f771a3858..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/left.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/more.svg b/frontend/appflowy_flutter/assets/images/grid/more.svg
deleted file mode 100644
index b191e64a10..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/more.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/right.svg b/frontend/appflowy_flutter/assets/images/grid/right.svg
deleted file mode 100644
index 7d738f4e69..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/right.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/calendar_layout.svg b/frontend/appflowy_flutter/assets/images/grid/setting/calendar_layout.svg
deleted file mode 100644
index 32423640d8..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/setting/calendar_layout.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/database_layout.svg b/frontend/appflowy_flutter/assets/images/grid/setting/database_layout.svg
deleted file mode 100644
index e1bf39190a..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/setting/database_layout.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/group.svg b/frontend/appflowy_flutter/assets/images/grid/setting/group.svg
deleted file mode 100644
index f0a6dff4f9..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/setting/group.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/setting.svg b/frontend/appflowy_flutter/assets/images/grid/setting/setting.svg
deleted file mode 100644
index 3d632703ab..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/setting/setting.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/sort.svg b/frontend/appflowy_flutter/assets/images/grid/setting/sort.svg
deleted file mode 100644
index 06e17d62a9..0000000000
--- a/frontend/appflowy_flutter/assets/images/grid/setting/sort.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/home/new_app.svg b/frontend/appflowy_flutter/assets/images/home/new_app.svg
deleted file mode 100644
index c74ac3b349..0000000000
--- a/frontend/appflowy_flutter/assets/images/home/new_app.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/assets/images/home/unfavorite.svg b/frontend/appflowy_flutter/assets/images/home/unfavorite.svg
deleted file mode 100644
index b8350ff917..0000000000
--- a/frontend/appflowy_flutter/assets/images/home/unfavorite.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/frontend/appflowy_flutter/lib/plugins/blank/blank.dart b/frontend/appflowy_flutter/lib/plugins/blank/blank.dart
index d4c7bf8b1d..6599b3b236 100644
--- a/frontend/appflowy_flutter/lib/plugins/blank/blank.dart
+++ b/frontend/appflowy_flutter/lib/plugins/blank/blank.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -15,7 +16,7 @@ class BlankPluginBuilder extends PluginBuilder {
String get menuName => "Blank";
@override
- String get menuIcon => "";
+ FlowySvgData get icon => const FlowySvgData('');
@override
PluginType get pluginType => PluginType.blank;
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/board/board.dart b/frontend/appflowy_flutter/lib/plugins/database_view/board/board.dart
index 22e5858d4f..10a25d7e52 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/board/board.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/board/board.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/tar_bar/tab_bar_view.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
@@ -18,7 +19,7 @@ class BoardPluginBuilder implements PluginBuilder {
String get menuName => LocaleKeys.board_menuName.tr();
@override
- String get menuIcon => "editor/board";
+ FlowySvgData get icon => FlowySvgs.board_s;
@override
PluginType get pluginType => PluginType.board;
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/board/presentation/board_page.dart b/frontend/appflowy_flutter/lib/plugins/database_view/board/presentation/board_page.dart
index ebdfcc048e..d0729a4766 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/board/presentation/board_page.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/board/presentation/board_page.dart
@@ -2,6 +2,7 @@
import 'dart:collection';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/database_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
@@ -15,7 +16,7 @@ import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart
import 'package:appflowy_backend/protobuf/flowy-database2/row_entities.pb.dart';
import 'package:appflowy_board/appflowy_board.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/error_page.dart';
@@ -221,8 +222,8 @@ class _BoardContentState extends State {
addIcon: SizedBox(
height: 20,
width: 20,
- child: svgWidget(
- "home/add",
+ child: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).iconTheme.color,
),
),
@@ -244,8 +245,8 @@ class _BoardContentState extends State {
icon: SizedBox(
height: 20,
width: 20,
- child: svgWidget(
- "home/add",
+ child: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).iconTheme.color,
),
),
@@ -381,9 +382,9 @@ Widget? _buildHeaderIcon(GroupData customData) {
case FieldType.Checkbox:
final group = customData.asCheckboxGroup()!;
if (group.isCheck) {
- widget = svgWidget('editor/editor_check');
+ widget = const FlowySvg(FlowySvgs.check_filled_s);
} else {
- widget = svgWidget('editor/editor_uncheck');
+ widget = const FlowySvg(FlowySvgs.uncheck_s);
}
break;
case FieldType.DateTime:
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/calendar.dart b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/calendar.dart
index aa5047ca2f..4a85ff3739 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/calendar.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/calendar.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/tar_bar/tab_bar_view.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
@@ -18,7 +19,7 @@ class CalendarPluginBuilder extends PluginBuilder {
String get menuName => LocaleKeys.calendar_menuName.tr();
@override
- String get menuIcon => "editor/date";
+ FlowySvgData get icon => FlowySvgs.date_s;
@override
PluginType get pluginType => PluginType.calendar;
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_day.dart b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_day.dart
index 28fe449561..93acd414a0 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_day.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_day.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/widgets/card/card.dart';
import 'package:appflowy/plugins/database_view/widgets/card/card_cell_builder.dart';
@@ -6,7 +7,7 @@ import 'package:appflowy/plugins/database_view/widgets/card/cells/number_card_ce
import 'package:appflowy/plugins/database_view/widgets/card/cells/url_card_cell.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
@@ -177,7 +178,7 @@ class NewEventButton extends StatelessWidget {
child: FlowyIconButton(
onPressed: onCreate,
iconPadding: EdgeInsets.zero,
- icon: const FlowySvg(name: "home/add"),
+ icon: const FlowySvg(FlowySvgs.add_s),
fillColor: Theme.of(context).colorScheme.background,
hoverColor: AFThemeExtension.of(context).lightGreyHover,
width: 22,
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_page.dart b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_page.dart
index 71520f5fe5..059ff9c973 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_page.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/calendar_page.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/database_controller.dart';
import 'package:appflowy/plugins/database_view/calendar/application/calendar_bloc.dart';
@@ -6,7 +7,7 @@ import 'package:appflowy_backend/protobuf/flowy-database2/calendar_entities.pb.d
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:calendar_view/calendar_view.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -220,7 +221,7 @@ class _CalendarPageState extends State {
FlowyIconButton(
width: CalendarSize.navigatorButtonWidth,
height: CalendarSize.navigatorButtonHeight,
- icon: const FlowySvg(name: 'home/arrow_left'),
+ icon: const FlowySvg(FlowySvgs.arrow_left_s),
tooltipText: LocaleKeys.calendar_navigation_previousMonth.tr(),
hoverColor: AFThemeExtension.of(context).lightGreyHover,
onPressed: () => _calendarState?.currentState?.previousPage(),
@@ -238,7 +239,7 @@ class _CalendarPageState extends State {
FlowyIconButton(
width: CalendarSize.navigatorButtonWidth,
height: CalendarSize.navigatorButtonHeight,
- icon: const FlowySvg(name: 'home/arrow_right'),
+ icon: const FlowySvg(FlowySvgs.arrow_right_s),
tooltipText: LocaleKeys.calendar_navigation_nextMonth.tr(),
hoverColor: AFThemeExtension.of(context).lightGreyHover,
onPressed: () => _calendarState?.currentState?.nextPage(),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/toolbar/calendar_layout_setting.dart b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/toolbar/calendar_layout_setting.dart
index 79f718f9e2..47e828072e 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/toolbar/calendar_layout_setting.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/calendar/presentation/toolbar/calendar_layout_setting.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart';
@@ -9,7 +10,7 @@ import 'package:appflowy/workspace/presentation/widgets/toggle/toggle_style.dart
import 'package:appflowy_backend/protobuf/flowy-database2/protobuf.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -250,9 +251,9 @@ class LayoutDateField extends StatelessWidget {
onUpdated(fieldInfo.id);
popoverMutex.close();
},
- leftIcon: const FlowySvg(name: 'grid/field/date'),
+ leftIcon: const FlowySvg(FlowySvgs.grid_s),
rightIcon: fieldInfo.id == fieldId
- ? const FlowySvg(name: 'grid/checkmark')
+ ? const FlowySvg(FlowySvgs.check_s)
: null,
),
);
@@ -442,7 +443,7 @@ class StartFromButton extends StatelessWidget {
child: FlowyButton(
text: FlowyText.medium(title),
onTap: () => onTap(dayIndex),
- rightIcon: isSelected ? const FlowySvg(name: 'grid/checkmark') : null,
+ rightIcon: isSelected ? const FlowySvg(FlowySvgs.check_s) : null,
),
);
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/grid.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/grid.dart
index 453f773796..6bce729003 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/grid.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/grid.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/tar_bar/tab_bar_view.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
@@ -18,7 +19,7 @@ class GridPluginBuilder implements PluginBuilder {
String get menuName => LocaleKeys.grid_menuName.tr();
@override
- String get menuIcon => "editor/grid";
+ FlowySvgData get icon => FlowySvgs.grid_s;
@override
PluginType get pluginType => PluginType.grid;
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/checkbox.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/checkbox.dart
index c6bd3707b1..5879e27b5b 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/checkbox.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/checkbox.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/grid/application/filter/checkbox_filter_editor_bloc.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/checkbox_filter.pbenum.dart';
import 'package:flutter/material.dart';
@@ -190,7 +191,7 @@ class ConditionWrapper extends ActionCell {
@override
Widget? rightIcon(Color iconColor) {
if (isSelected) {
- return svgWidget("grid/checkmark");
+ return const FlowySvg(FlowySvgs.check_s);
} else {
return null;
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/choicechip.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/choicechip.dart
index 9446c16ec8..572fdb6011 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/choicechip.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/choicechip.dart
@@ -1,6 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
@@ -44,8 +45,8 @@ class ChoiceChipButton extends StatelessWidget {
),
margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 2),
radius: const BorderRadius.all(Radius.circular(14)),
- leftIcon: svgWidget(
- filterInfo.fieldInfo.fieldType.iconName(),
+ leftIcon: FlowySvg(
+ filterInfo.fieldInfo.fieldType.icon(),
color: Theme.of(context).iconTheme.color,
),
rightIcon: _ChoicechipFilterDesc(filterDesc: filterDesc),
@@ -65,8 +66,8 @@ class _ChoicechipFilterDesc extends StatelessWidget {
Widget build(BuildContext context) {
final arrow = Transform.rotate(
angle: -math.pi / 2,
- child: svgWidget(
- "home/arrow_left",
+ child: FlowySvg(
+ FlowySvgs.arrow_left_s,
color: AFThemeExtension.of(context).textColor,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart
index e3151f51d9..a229e39768 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/condition_list.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option_filter.pb.dart';
import 'package:flutter/material.dart';
@@ -69,7 +70,7 @@ class ConditionWrapper extends ActionCell {
@override
Widget? rightIcon(Color iconColor) {
if (isSelected) {
- return svgWidget("grid/checkmark");
+ return const FlowySvg(FlowySvgs.check_s);
} else {
return null;
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart
index c4a344f683..224e832abe 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/select_option/option_list.dart
@@ -1,7 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/grid/application/filter/select_option_filter_list_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.dart';
import 'package:flutter/material.dart';
@@ -112,9 +113,9 @@ class _SelectOptionFilterCellState extends State {
},
children: [
if (widget.isSelected)
- Padding(
- padding: const EdgeInsets.only(right: 6),
- child: svgWidget("grid/checkmark"),
+ const Padding(
+ padding: EdgeInsets.only(right: 6),
+ child: FlowySvg(FlowySvgs.check_s),
),
],
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/text.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/text.dart
index 7db9776746..aa1f35ced9 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/text.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/choicechip/text.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/text_filter.pb.dart';
import 'package:flutter/material.dart';
@@ -220,7 +221,7 @@ class ConditionWrapper extends ActionCell {
@override
Widget? rightIcon(Color iconColor) {
if (isSelected) {
- return svgWidget("grid/checkmark");
+ return const FlowySvg(FlowySvgs.check_s);
} else {
return null;
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/condition_button.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/condition_button.dart
index 386bb85ae3..bdc6af2dbb 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/condition_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/condition_button.dart
@@ -1,6 +1,7 @@
import 'dart:math' as math;
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
@@ -18,8 +19,8 @@ class ConditionButton extends StatelessWidget {
Widget build(BuildContext context) {
final arrow = Transform.rotate(
angle: -math.pi / 2,
- child: svgWidget(
- "home/arrow_left",
+ child: FlowySvg(
+ FlowySvgs.arrow_left_s,
color: AFThemeExtension.of(context).textColor,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/create_filter_list.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/create_filter_list.dart
index 157d75a111..8a92d573ac 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/create_filter_list.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/create_filter_list.dart
@@ -1,9 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -166,8 +166,8 @@ class GridFilterPropertyCell extends StatelessWidget {
color: AFThemeExtension.of(context).textColor,
),
onTap: () => onTap(fieldInfo),
- leftIcon: svgWidget(
- fieldInfo.fieldType.iconName(),
+ leftIcon: FlowySvg(
+ fieldInfo.fieldType.icon(),
color: Theme.of(context).iconTheme.color,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/disclosure_button.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/disclosure_button.dart
index fd296a73e0..994e402486 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/disclosure_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/disclosure_button.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
@@ -34,8 +35,8 @@ class _DisclosureButtonState extends State {
return FlowyIconButton(
hoverColor: AFThemeExtension.of(context).lightGreyHover,
width: 20,
- icon: svgWidget(
- "editor/details",
+ icon: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).iconTheme.color,
),
onPressed: () => controller.show(),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/filter_menu.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/filter_menu.dart
index 8df5fc9add..ad0df4d485 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/filter_menu.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/filter/filter_menu.dart
@@ -1,10 +1,11 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/grid/application/filter/filter_menu_bloc.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -90,8 +91,8 @@ class _AddFilterButtonState extends State {
),
useIntrinsicWidth: true,
hoverColor: AFThemeExtension.of(context).lightGreyHover,
- leftIcon: svgWidget(
- "home/add",
+ leftIcon: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).iconTheme.color,
),
onTap: () => popoverController.show(),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/footer/grid_footer.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/footer/grid_footer.dart
index 62f250b43b..9aad5d503c 100755
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/footer/grid_footer.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/footer/grid_footer.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/grid/application/grid_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
@@ -21,8 +22,8 @@ class GridAddRowButton extends StatelessWidget {
),
hoverColor: AFThemeExtension.of(context).lightGreyHover,
onTap: () => context.read().add(const GridEvent.createRow()),
- leftIcon: svgWidget(
- "home/add",
+ leftIcon: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).colorScheme.tertiary,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell.dart
index d2562cdb84..0efc95a613 100755
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell.dart
@@ -1,7 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_cell_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
@@ -172,7 +173,7 @@ class FieldCellButton extends StatelessWidget {
hoverColor: AFThemeExtension.of(context).greyHover,
onTap: onTap,
leftIcon: FlowySvg(
- name: field.fieldType.iconName(),
+ field.fieldType.icon(),
),
radius: radius,
text: FlowyText.medium(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell_action_sheet.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell_action_sheet.dart
index 19f2ecc24c..b707ccf7b7 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell_action_sheet.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_cell_action_sheet.dart
@@ -1,10 +1,11 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_action_sheet_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -177,8 +178,8 @@ class FieldActionCell extends StatelessWidget {
: Theme.of(context).disabledColor,
),
onTap: () => action.run(context, fieldInfo),
- leftIcon: svgWidget(
- action.iconName(),
+ leftIcon: FlowySvg(
+ action.icon(),
color: enable
? AFThemeExtension.of(context).textColor
: Theme.of(context).disabledColor,
@@ -194,14 +195,14 @@ enum FieldAction {
}
extension _FieldActionExtension on FieldAction {
- String iconName() {
+ FlowySvgData icon() {
switch (this) {
case FieldAction.hide:
- return 'grid/hide';
+ return FlowySvgs.hide_s;
case FieldAction.duplicate:
- return 'grid/duplicate';
+ return FlowySvgs.copy_s;
case FieldAction.delete:
- return 'grid/delete';
+ return FlowySvgs.delete_s;
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_editor.dart
index 67ba869ffe..5c1be5911c 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_editor.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_editor_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:dartz/dartz.dart' show none;
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/style_widget/text_field.dart';
@@ -233,7 +234,7 @@ class _DeleteFieldButton extends StatelessWidget {
LocaleKeys.grid_field_delete.tr(),
color: enable ? null : Theme.of(context).disabledColor,
),
- leftIcon: const FlowySvg(name: 'grid/delete'),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
onTap: () {
if (enable) onDeleted?.call();
},
@@ -264,7 +265,7 @@ class _HideFieldButton extends StatelessWidget {
text: FlowyText.medium(
LocaleKeys.grid_field_hide.tr(),
),
- leftIcon: const FlowySvg(name: 'grid/hide'),
+ leftIcon: const FlowySvg(FlowySvgs.hide_s),
onTap: () => onHidden?.call(),
onHover: (_) => popoverMutex.close(),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart
index 848d750270..ca9b527158 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart
@@ -1,28 +1,29 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
extension FieldTypeListExtension on FieldType {
- String iconName() {
+ FlowySvgData icon() {
switch (this) {
case FieldType.Checkbox:
- return "grid/field/checkbox";
+ return FlowySvgs.checkbox_s;
case FieldType.DateTime:
case FieldType.LastEditedTime:
case FieldType.CreatedTime:
- return "grid/field/date";
+ return FlowySvgs.date_s;
case FieldType.MultiSelect:
- return "grid/field/multi_select";
+ return FlowySvgs.multiselect_s;
case FieldType.Number:
- return "grid/field/number";
+ return FlowySvgs.numbers_s;
case FieldType.RichText:
- return "grid/field/text";
+ return FlowySvgs.text_s;
case FieldType.SingleSelect:
- return "grid/field/single_select";
+ return FlowySvgs.status_s;
case FieldType.URL:
- return "grid/field/url";
+ return FlowySvgs.attach_s;
case FieldType.Checklist:
- return "grid/field/checklist";
+ return FlowySvgs.checklist_s;
}
throw UnimplementedError;
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_list.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_list.dart
index 81bc715015..0f2875d24a 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_list.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_list.dart
@@ -1,5 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:flutter/material.dart';
@@ -62,7 +63,7 @@ class FieldTypeCell extends StatelessWidget {
),
onTap: () => onSelectField(fieldType),
leftIcon: FlowySvg(
- name: fieldType.iconName(),
+ fieldType.icon(),
),
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_option_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_option_editor.dart
index 9b9d792933..e5b2418834 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_option_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/field_type_option_editor.dart
@@ -1,9 +1,10 @@
import 'dart:typed_data';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_type_option_edit_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_data_controller.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:dartz/dartz.dart' show Either;
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
@@ -115,8 +116,8 @@ class SwitchFieldButton extends StatelessWidget {
text: FlowyText.medium(
bloc.state.field.fieldType.title(),
),
- leftIcon: FlowySvg(name: bloc.state.field.fieldType.iconName()),
- rightIcon: const FlowySvg(name: 'grid/more'),
+ leftIcon: FlowySvg(bloc.state.field.fieldType.icon()),
+ rightIcon: const FlowySvg(FlowySvgs.more_s),
);
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/grid_header.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/grid_header.dart
index 15de7f897f..2069fd2598 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/grid_header.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/grid_header.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
@@ -8,7 +9,7 @@ import 'package:appflowy_backend/log.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:flutter/material.dart';
@@ -213,7 +214,7 @@ class _CreateFieldButtonState extends State {
(r) => Log.error("Failed to create field type option: $r"),
);
},
- leftIcon: const FlowySvg(name: 'home/add'),
+ leftIcon: const FlowySvg(FlowySvgs.add_s),
),
popupBuilder: (BuildContext popover) {
return FieldEditor(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/date.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/date.dart
index da81368c50..8c40fb2ba9 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/date.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/date.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/date_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/date_entities.pbenum.dart';
import 'package:easy_localization/easy_localization.dart' hide DateFormat;
import 'package:appflowy/generated/locale_keys.g.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -146,7 +147,7 @@ class DateFormatButton extends StatelessWidget {
text: FlowyText.medium(LocaleKeys.grid_field_dateFormat.tr()),
onTap: onTap,
onHover: onHover,
- rightIcon: const FlowySvg(name: 'grid/more'),
+ rightIcon: const FlowySvg(FlowySvgs.more_s),
),
);
}
@@ -171,7 +172,7 @@ class TimeFormatButton extends StatelessWidget {
text: FlowyText.medium(LocaleKeys.grid_field_timeFormat.tr()),
onTap: onTap,
onHover: onHover,
- rightIcon: const FlowySvg(name: 'grid/more'),
+ rightIcon: const FlowySvg(FlowySvgs.more_s),
),
);
}
@@ -228,7 +229,7 @@ class DateFormatCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? checkmark;
if (isSelected) {
- checkmark = const FlowySvg(name: 'grid/checkmark');
+ checkmark = const FlowySvg(FlowySvgs.check_s);
}
return SizedBox(
@@ -312,7 +313,7 @@ class TimeFormatCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? checkmark;
if (isSelected) {
- checkmark = const FlowySvg(name: 'grid/checkmark');
+ checkmark = const FlowySvg(FlowySvgs.check_s);
}
return SizedBox(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/number.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/number.dart
index 8bbfeaacbf..90ab14a555 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/number.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/number.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/number_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/number_format_bloc.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/number_entities.pbenum.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -60,7 +61,7 @@ class NumberTypeOptionWidget extends TypeOptionWidget {
height: GridSize.popoverItemHeight,
child: FlowyButton(
margin: GridSize.typeOptionContentInsets,
- rightIcon: const FlowySvg(name: 'grid/more'),
+ rightIcon: const FlowySvg(FlowySvgs.more_s),
text: FlowyText.regular(
state.typeOption.format.title(),
),
@@ -181,9 +182,7 @@ class NumberFormatCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? checkmark;
if (isSelected) {
- checkmark = const FlowySvg(
- name: 'grid/checkmark',
- );
+ checkmark = const FlowySvg(FlowySvgs.check_s);
}
return SizedBox(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option.dart
index ca82fdedd2..fd9322260a 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option.dart
@@ -1,7 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/select_option_type_option_bloc.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -195,8 +196,8 @@ class _OptionCellState extends State<_OptionCell> {
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 6.0),
- child: svgWidget(
- "grid/details",
+ child: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).iconTheme.color,
),
),
@@ -256,8 +257,8 @@ class _AddOptionButton extends StatelessWidget {
.read()
.add(const SelectOptionTypeOptionEvent.addingOption());
},
- leftIcon: svgWidget(
- "home/add",
+ leftIcon: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).iconTheme.color,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option_editor.dart
index 9fc853eae3..f58401a313 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/header/type_option/select_option_editor.dart
@@ -1,7 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/edit_select_option_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -113,7 +114,7 @@ class _DeleteTag extends StatelessWidget {
text: FlowyText.medium(
LocaleKeys.grid_selectOption_deleteTag.tr(),
),
- leftIcon: const FlowySvg(name: 'grid/delete'),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
onTap: () {
context
.read()
@@ -218,7 +219,7 @@ class _SelectOptionColorCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? checkmark;
if (isSelected) {
- checkmark = svgWidget("grid/checkmark");
+ checkmark = const FlowySvg(FlowySvgs.check_s);
}
final colorIcon = SizedBox.square(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/action.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/action.dart
index b40c801b07..9da9bc523a 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/action.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/action.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy/plugins/database_view/grid/application/row/row_action_sheet_bloc.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -80,8 +81,8 @@ class _ActionCell extends StatelessWidget {
action.performAction(context);
}
},
- leftIcon: svgWidget(
- action.iconName(),
+ leftIcon: FlowySvg(
+ action.icon(),
color: Theme.of(context).iconTheme.color,
),
),
@@ -95,12 +96,12 @@ enum _RowAction {
}
extension _RowActionExtension on _RowAction {
- String iconName() {
+ FlowySvgData icon() {
switch (this) {
case _RowAction.duplicate:
- return 'grid/duplicate';
+ return FlowySvgs.copy_s;
case _RowAction.delete:
- return 'grid/delete';
+ return FlowySvgs.delete_s;
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/row.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/row.dart
index 954bc12584..02f7f5e70c 100755
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/row.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/row/row.dart
@@ -1,10 +1,11 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:appflowy/plugins/database_view/application/row/row_controller.dart';
import 'package:appflowy/plugins/database_view/application/row/row_service.dart';
import 'package:appflowy/plugins/database_view/grid/application/row/row_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/foundation.dart';
@@ -191,8 +192,8 @@ class InsertRowButton extends StatelessWidget {
height: 30,
onPressed: () => context.read().add(const RowEvent.createRow()),
iconPadding: const EdgeInsets.all(3),
- icon: svgWidget(
- 'home/add',
+ icon: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).colorScheme.tertiary,
),
);
@@ -232,8 +233,8 @@ class _RowMenuButtonState extends State {
height: 30,
onPressed: () => widget.openMenu(),
iconPadding: const EdgeInsets.all(3),
- icon: svgWidget(
- 'editor/details',
+ icon: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).colorScheme.tertiary,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/create_sort_list.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/create_sort_list.dart
index a23e651cdc..440b2405e9 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/create_sort_list.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/create_sort_list.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
@@ -5,7 +6,7 @@ import 'package:appflowy/plugins/database_view/grid/application/sort/sort_create
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -165,8 +166,8 @@ class GridSortPropertyCell extends StatelessWidget {
color: AFThemeExtension.of(context).textColor,
),
onTap: () => onTap(fieldInfo),
- leftIcon: svgWidget(
- fieldInfo.fieldType.iconName(),
+ leftIcon: FlowySvg(
+ fieldInfo.fieldType.icon(),
color: Theme.of(context).iconTheme.color,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_editor.dart
index 99fdb37146..d1e95346e2 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_editor.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/grid/application/sort/sort_editor_bloc.dart';
@@ -6,7 +7,7 @@ import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.da
import 'package:appflowy_backend/protobuf/flowy-database2/sort_entities.pbenum.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -125,8 +126,8 @@ class DatabaseSortItem extends StatelessWidget {
},
iconPadding: const EdgeInsets.all(5),
hoverColor: AFThemeExtension.of(context).lightGreyHover,
- icon: svgWidget(
- "home/close",
+ icon: FlowySvg(
+ FlowySvgs.close_s,
color: Theme.of(context).iconTheme.color,
),
);
@@ -190,7 +191,7 @@ class _DatabaseAddSortButtonState extends State {
disable: getCreatableSorts(widget.fieldController.fieldInfos).isEmpty,
text: FlowyText.medium(LocaleKeys.grid_sort_addSort.tr()),
onTap: () => _popoverController.show(),
- leftIcon: const FlowySvg(name: 'home/add'),
+ leftIcon: const FlowySvg(FlowySvgs.add_s),
),
),
popupBuilder: (BuildContext context) {
@@ -222,7 +223,7 @@ class DatabaseDeleteSortButton extends StatelessWidget {
.read()
.add(const SortEditorEvent.deleteAllSorts());
},
- leftIcon: const FlowySvg(name: 'editor/delete'),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
),
);
},
@@ -252,7 +253,7 @@ class _DatabaseSortItemOrderButtonState
Widget build(BuildContext context) {
final arrow = Transform.rotate(
angle: -math.pi / 2,
- child: svgWidget("home/arrow_left"),
+ child: const FlowySvg(FlowySvgs.arrow_left_s),
);
return AppFlowyPopover(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_menu.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_menu.dart
index 3ebebcac00..2d1accdc86 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_menu.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/sort/sort_menu.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/grid/application/sort/sort_menu_bloc.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
@@ -6,7 +7,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'dart:math' as math;
import 'sort_choice_button.dart';
@@ -66,15 +67,15 @@ class SortChoiceChip extends StatelessWidget {
Widget build(BuildContext context) {
final arrow = Transform.rotate(
angle: -math.pi / 2,
- child: svgWidget(
- "home/arrow_left",
+ child: FlowySvg(
+ FlowySvgs.arrow_left_s,
color: Theme.of(context).iconTheme.color,
),
);
final text = LocaleKeys.grid_settings_sort.tr();
- final leftIcon = svgWidget(
- "grid/setting/sort",
+ final leftIcon = FlowySvg(
+ FlowySvgs.sort_ascending_s,
color: Theme.of(context).iconTheme.color,
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/toolbar/grid_layout.dart b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/toolbar/grid_layout.dart
index 04786deeea..3f9754582d 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/toolbar/grid_layout.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/grid/presentation/widgets/toolbar/grid_layout.dart
@@ -1,7 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/layout/layout_bloc.dart';
import 'package:appflowy/plugins/database_view/widgets/database_layout_ext.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/setting_entities.pb.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -81,7 +82,7 @@ class DatabaseViewLayoutCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? checkmark;
if (isSelected) {
- checkmark = svgWidget("grid/checkmark");
+ checkmark = const FlowySvg(FlowySvgs.check_s);
}
return SizedBox(
@@ -92,8 +93,8 @@ class DatabaseViewLayoutCell extends StatelessWidget {
databaseLayout.layoutName(),
color: AFThemeExtension.of(context).textColor,
),
- leftIcon: svgWidget(
- databaseLayout.iconName(),
+ leftIcon: FlowySvg(
+ databaseLayout.icon,
color: Theme.of(context).iconTheme.color,
),
rightIcon: checkmark,
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tab_bar_header.dart b/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tab_bar_header.dart
index 9129eebae9..9f9f5e2886 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tab_bar_header.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tab_bar_header.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/view/view_ext.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
@@ -5,7 +6,6 @@ import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/protobuf.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
@@ -209,7 +209,7 @@ class TabBarItemButton extends StatelessWidget {
controller.show();
},
leftIcon: FlowySvg(
- name: view.iconName,
+ view.iconData,
size: const Size(14, 14),
color: color,
),
@@ -272,9 +272,9 @@ enum TabBarViewAction implements ActionCell {
Widget icon(Color iconColor) {
switch (this) {
case TabBarViewAction.rename:
- return const FlowySvg(name: 'editor/edit');
+ return const FlowySvg(FlowySvgs.edit_s);
case TabBarViewAction.delete:
- return const FlowySvg(name: 'editor/delete');
+ return const FlowySvg(FlowySvgs.delete_s);
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tar_bar_add_button.dart b/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tar_bar_add_button.dart
index 0bee6d7fe2..7dd7a93d3d 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tar_bar_add_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/tar_bar/tar_bar_add_button.dart
@@ -1,9 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
@@ -50,7 +50,7 @@ class _AddDatabaseViewButtonState extends State {
hoverColor: AFThemeExtension.of(context).greyHover,
onPressed: () => popoverController.show(),
radius: Corners.s4Border,
- icon: const FlowySvg(name: 'home/add'),
+ icon: const FlowySvg(FlowySvgs.add_s),
iconColorOnHover: Theme.of(context).colorScheme.onSurface,
),
],
@@ -115,8 +115,8 @@ class TarBarAddButtonActionCell extends StatelessWidget {
'${LocaleKeys.grid_createView.tr()} ${action.title}',
color: AFThemeExtension.of(context).textColor,
),
- leftIcon: svgWidget(
- action.iconName,
+ leftIcon: FlowySvg(
+ action.icon,
color: Theme.of(context).iconTheme.color,
),
onTap: () => onTap(action),
@@ -156,16 +156,13 @@ enum AddButtonAction {
}
}
- String get iconName {
+ FlowySvgData get icon {
switch (this) {
case AddButtonAction.board:
- return 'editor/board';
+ return FlowySvgs.board_s;
case AddButtonAction.calendar:
- return "editor/grid";
case AddButtonAction.grid:
- return "editor/grid";
- default:
- return "";
+ return FlowySvgs.grid_s;
}
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/card.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/card.dart
index 8d6998c3d2..b399abc451 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/card.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/card.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/action.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/row_entities.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flutter/foundation.dart';
@@ -279,8 +280,8 @@ class CardMoreOption extends StatelessWidget with CardAccessory {
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(3.0),
- child: svgWidget(
- 'grid/details',
+ child: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).iconTheme.color,
),
);
@@ -301,8 +302,8 @@ class _CardEditOption extends StatelessWidget with CardAccessory {
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(3.0),
- child: svgWidget(
- 'editor/edit',
+ child: FlowySvg(
+ FlowySvgs.edit_s,
color: Theme.of(context).iconTheme.color,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart
index 33fef71bf0..ffca3048b5 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/card/cells/checkbox_card_cell.dart
@@ -1,5 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -40,8 +41,8 @@ class _CheckboxCardCellState extends State {
previous.isSelected != current.isSelected,
builder: (context, state) {
final icon = state.isSelected
- ? svgWidget('editor/editor_check')
- : svgWidget('editor/editor_uncheck');
+ ? const FlowySvg(FlowySvgs.check_filled_s)
+ : const FlowySvg(FlowySvgs.uncheck_s);
return Align(
alignment: Alignment.centerLeft,
child: Padding(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/database_layout_ext.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/database_layout_ext.dart
index 43b0faa6bf..33b357a119 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/database_layout_ext.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/database_layout_ext.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/setting_entities.pbenum.dart';
import 'package:easy_localization/easy_localization.dart';
@@ -16,16 +17,14 @@ extension DatabaseLayoutExtension on DatabaseLayoutPB {
}
}
- String iconName() {
+ FlowySvgData get icon {
switch (this) {
case DatabaseLayoutPB.Board:
- return 'editor/board';
+ return FlowySvgs.board_s;
case DatabaseLayoutPB.Calendar:
- return "editor/grid";
case DatabaseLayoutPB.Grid:
- return "editor/grid";
- default:
- return "";
+ return FlowySvgs.grid_s;
}
+ throw UnimplementedError();
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/field/grid_property.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/field/grid_property.dart
index 9d063ec5a1..28f9ab3a69 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/field/grid_property.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/field/grid_property.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
@@ -5,7 +6,7 @@ import 'package:appflowy/plugins/database_view/application/setting/property_bloc
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -95,8 +96,8 @@ class _GridPropertyCellState extends State<_GridPropertyCell> {
@override
Widget build(BuildContext context) {
- final checkmark = svgWidget(
- widget.fieldInfo.field.visibility ? 'home/show' : 'home/hide',
+ final checkmark = FlowySvg(
+ widget.fieldInfo.field.visibility ? FlowySvgs.show_m : FlowySvgs.hide_m,
color: Theme.of(context).iconTheme.color,
);
@@ -121,8 +122,8 @@ class _GridPropertyCellState extends State<_GridPropertyCell> {
widget.fieldInfo.name,
color: AFThemeExtension.of(context).textColor,
),
- leftIcon: svgWidget(
- widget.fieldInfo.fieldType.iconName(),
+ leftIcon: FlowySvg(
+ widget.fieldInfo.fieldType.icon(),
color: Theme.of(context).iconTheme.color,
),
rightIcon: FlowyIconButton(
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/group/database_group.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/group/database_group.dart
index ef8a452ac6..2cd04e5d41 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/group/database_group.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/group/database_group.dart
@@ -1,9 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
import 'package:appflowy/plugins/database_view/application/field/field_info.dart';
import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_type_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -73,9 +74,9 @@ class _GridGroupCell extends StatelessWidget {
Widget build(BuildContext context) {
Widget? rightIcon;
if (fieldInfo.isGroupField) {
- rightIcon = Padding(
- padding: const EdgeInsets.all(2.0),
- child: svgWidget("grid/checkmark"),
+ rightIcon = const Padding(
+ padding: EdgeInsets.all(2.0),
+ child: FlowySvg(FlowySvgs.check_s),
);
}
@@ -87,8 +88,8 @@ class _GridGroupCell extends StatelessWidget {
fieldInfo.name,
color: AFThemeExtension.of(context).textColor,
),
- leftIcon: svgWidget(
- fieldInfo.fieldType.iconName(),
+ leftIcon: FlowySvg(
+ fieldInfo.fieldType.icon(),
color: Theme.of(context).iconTheme.color,
),
rightIcon: rightIcon,
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/accessory/cell_accessory.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/accessory/cell_accessory.dart
index b1faeae3df..d756601bbd 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/accessory/cell_accessory.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/accessory/cell_accessory.dart
@@ -1,5 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
@@ -72,8 +73,8 @@ class _PrimaryCellAccessoryState extends State
height: 26,
child: Padding(
padding: const EdgeInsets.all(3.0),
- child: svgWidget(
- "grid/expander",
+ child: FlowySvg(
+ FlowySvgs.full_view_s,
color: Theme.of(context).colorScheme.primary,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart
index a8c5594545..7df3979198 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checkbox_cell/checkbox_cell.dart
@@ -1,6 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -88,7 +89,7 @@ class CheckboxCellCheck extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return svgWidget('editor/editor_check');
+ return const FlowySvg(FlowySvgs.check_filled_s);
}
}
@@ -97,6 +98,6 @@ class CheckboxCellUncheck extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return svgWidget('editor/editor_uncheck');
+ return const FlowySvg(FlowySvgs.uncheck_s);
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor.dart
index 8ebcfe7b2a..0a57d1b185 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor.dart
@@ -1,6 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -108,8 +109,8 @@ class _ChecklistOptionCellState extends State<_ChecklistOptionCell> {
@override
Widget build(BuildContext context) {
final icon = widget.option.isSelected
- ? svgWidget('editor/editor_check')
- : svgWidget('editor/editor_uncheck');
+ ? const FlowySvg(FlowySvgs.check_filled_s)
+ : const FlowySvg(FlowySvgs.uncheck_s);
return _wrapPopover(
SizedBox(
height: GridSize.popoverItemHeight,
@@ -141,8 +142,8 @@ class _ChecklistOptionCellState extends State<_ChecklistOptionCell> {
width: 20,
onPressed: () => _popoverController.show(),
iconPadding: const EdgeInsets.fromLTRB(2, 2, 2, 2),
- icon: svgWidget(
- "editor/details",
+ icon: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).iconTheme.color,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_editor.dart
index 1ab8fb4881..adef7e9aec 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/date_cell/date_editor.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
@@ -9,7 +10,7 @@ import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:dartz/dartz.dart' show Either;
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/time/duration.dart';
@@ -169,14 +170,14 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
titleTextStyle: textStyle,
leftChevronMargin: EdgeInsets.zero,
leftChevronPadding: EdgeInsets.zero,
- leftChevronIcon: svgWidget(
- "home/arrow_left",
+ leftChevronIcon: FlowySvg(
+ FlowySvgs.arrow_left_s,
color: Theme.of(context).iconTheme.color,
),
rightChevronPadding: EdgeInsets.zero,
rightChevronMargin: EdgeInsets.zero,
- rightChevronIcon: svgWidget(
- "home/arrow_right",
+ rightChevronIcon: FlowySvg(
+ FlowySvgs.arrow_right_s,
color: Theme.of(context).iconTheme.color,
),
headerMargin: const EdgeInsets.only(bottom: 8.0),
@@ -246,8 +247,8 @@ class _IncludeTimeButton extends StatelessWidget {
padding: GridSize.typeOptionContentInsets,
child: Row(
children: [
- svgWidget(
- "grid/clock",
+ FlowySvg(
+ FlowySvgs.clock_alarm_s,
color: Theme.of(context).iconTheme.color,
),
const HSpace(6),
@@ -369,7 +370,7 @@ class DateTypeOptionButton extends StatelessWidget {
child: FlowyButton(
text: FlowyText.medium(title),
margin: GridSize.typeOptionContentInsets,
- rightIcon: const FlowySvg(name: 'grid/more'),
+ rightIcon: const FlowySvg(FlowySvgs.more_s),
),
),
),
@@ -480,7 +481,7 @@ class ClearDateButton extends StatelessWidget {
.add(const DateCellCalendarEvent.clearDate());
PopoverContainer.of(context).close();
},
- leftIcon: const FlowySvg(name: "grid/delete"),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
margin: GridSize.typeOptionContentInsets,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart
index fe38716d12..c865eae29c 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart
@@ -1,5 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
@@ -118,8 +119,8 @@ class SelectOptionTag extends StatelessWidget {
onPressed: () => onRemove?.call(name),
fillColor: Colors.transparent,
hoverColor: Colors.transparent,
- icon: svgWidget(
- 'home/close',
+ icon: FlowySvg(
+ FlowySvgs.close_s,
color: Theme.of(context).colorScheme.onSurface,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart
index e759b8bd99..8dade4978e 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart
@@ -1,11 +1,12 @@
import 'dart:collection';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/select_option.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -219,8 +220,8 @@ class _Title extends StatelessWidget {
child: FlowyIconButton(
onPressed: onPressedAddButton,
width: 18,
- icon: svgWidget(
- 'home/add',
+ icon: FlowySvg(
+ FlowySvgs.add_s,
color: Theme.of(context).iconTheme.color,
),
),
@@ -315,16 +316,16 @@ class _SelectOptionCellState extends State<_SelectOptionCell> {
},
children: [
if (widget.isSelected)
- Padding(
- padding: const EdgeInsets.only(left: 6),
- child: svgWidget("grid/checkmark"),
+ const Padding(
+ padding: EdgeInsets.only(left: 6),
+ child: FlowySvg(FlowySvgs.check_s),
),
FlowyIconButton(
onPressed: () => _popoverController.show(),
hoverColor: Colors.transparent,
iconPadding: const EdgeInsets.symmetric(horizontal: 6.0),
- icon: svgWidget(
- "editor/details",
+ icon: FlowySvg(
+ FlowySvgs.details_s,
color: Theme.of(context).iconTheme.color,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/url_cell/url_cell.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/url_cell/url_cell.dart
index 7acf6466fb..1dc1eb888e 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/url_cell/url_cell.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/cells/url_cell/url_cell.dart
@@ -1,11 +1,12 @@
import 'dart:async';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller.dart';
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
import 'package:appflowy/workspace/presentation/home/toast.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -218,8 +219,8 @@ class _EditURLAccessoryState extends State<_EditURLAccessory>
controller: popoverController,
direction: PopoverDirection.bottomWithLeftAligned,
offset: const Offset(0, 8),
- child: svgWidget(
- "editor/edit",
+ child: FlowySvg(
+ FlowySvgs.edit_s,
color: AFThemeExtension.of(context).textColor,
),
popupBuilder: (BuildContext popoverContext) {
@@ -259,8 +260,8 @@ class _CopyURLAccessoryState extends State<_CopyURLAccessory>
Widget build(BuildContext context) {
if (widget.cellDataNotifier.value.isNotEmpty) {
return _URLAccessoryIconContainer(
- child: svgWidget(
- "editor/copy",
+ child: FlowySvg(
+ FlowySvgs.copy_s,
color: AFThemeExtension.of(context).textColor,
),
);
@@ -301,8 +302,8 @@ class _VisitURLAccessoryState extends State<_VisitURLAccessory>
Widget build(BuildContext context) {
if (widget.cellDataNotifier.value.isNotEmpty) {
return _URLAccessoryIconContainer(
- child: svgWidget(
- "editor/link",
+ child: FlowySvg(
+ FlowySvgs.attach_s,
color: AFThemeExtension.of(context).textColor,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_action.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_action.dart
index e9518c7eec..15f04a2503 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_action.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_action.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_service.dart';
@@ -10,7 +11,7 @@ import 'package:appflowy_backend/log.dart';
import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -56,7 +57,7 @@ class RowDetailPageDeleteButton extends StatelessWidget {
height: GridSize.popoverItemHeight,
child: FlowyButton(
text: FlowyText.regular(LocaleKeys.grid_row_delete.tr()),
- leftIcon: const FlowySvg(name: "home/trash"),
+ leftIcon: const FlowySvg(FlowySvgs.trash_m),
onTap: () {
context.read().add(RowDetailEvent.deleteRow(rowId));
FlowyOverlay.pop(context);
@@ -81,7 +82,7 @@ class RowDetailPageDuplicateButton extends StatelessWidget {
height: GridSize.popoverItemHeight,
child: FlowyButton(
text: FlowyText.regular(LocaleKeys.grid_row_duplicate.tr()),
- leftIcon: const FlowySvg(name: "grid/duplicate"),
+ leftIcon: const FlowySvg(FlowySvgs.copy_s),
onTap: () {
context
.read()
@@ -143,8 +144,8 @@ class _CreateRowFieldButtonState extends State {
(r) => Log.error("Failed to create field type option: $r"),
);
},
- leftIcon: svgWidget(
- "home/add",
+ leftIcon: FlowySvg(
+ FlowySvgs.add_m,
color: AFThemeExtension.of(context).textColor,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/database_setting.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/database_setting.dart
index ea51d1f675..8c77cbf0a6 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/database_setting.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/database_setting.dart
@@ -1,5 +1,5 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/application/database_controller.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -65,8 +65,8 @@ class DatabaseSettingItem extends StatelessWidget {
color: AFThemeExtension.of(context).textColor,
),
onTap: () => onAction(action),
- leftIcon: svgWidget(
- action.iconName(),
+ leftIcon: FlowySvg(
+ action.iconData(),
color: Theme.of(context).iconTheme.color,
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/setting_button.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/setting_button.dart
index ed3d2deb38..ccea4aa933 100644
--- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/setting_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/setting/setting_button.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/database_view/application/database_controller.dart';
import 'package:appflowy/plugins/database_view/calendar/presentation/toolbar/calendar_layout_setting.dart';
@@ -153,16 +154,16 @@ enum DatabaseSettingAction {
}
extension DatabaseSettingActionExtension on DatabaseSettingAction {
- String iconName() {
+ FlowySvgData iconData() {
switch (this) {
case DatabaseSettingAction.showProperties:
- return 'grid/setting/properties';
+ return FlowySvgs.properties_s;
case DatabaseSettingAction.showLayout:
- return 'grid/setting/database_layout';
+ return FlowySvgs.database_layout_m;
case DatabaseSettingAction.showGroup:
- return 'grid/setting/group';
+ return FlowySvgs.group_s;
case DatabaseSettingAction.showCalendarLayout:
- return 'grid/setting/calendar_layout';
+ return FlowySvgs.calendar_layout_m;
}
}
diff --git a/frontend/appflowy_flutter/lib/plugins/document/document.dart b/frontend/appflowy_flutter/lib/plugins/document/document.dart
index a068441095..56e6cfe016 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/document.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/document.dart
@@ -1,5 +1,6 @@
library document_plugin;
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/document_page.dart';
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
@@ -29,7 +30,7 @@ class DocumentPluginBuilder extends PluginBuilder {
String get menuName => LocaleKeys.document_menuName.tr();
@override
- String get menuIcon => "editor/documents";
+ FlowySvgData get icon => FlowySvgs.documents_s;
@override
PluginType get pluginType => PluginType.editor;
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_add_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_add_button.dart
index 2a5435bfa7..ecc02f7bd9 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_add_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_add_button.dart
@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:appflowy/core/raw_keyboard_extension.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/block_action_button.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
@@ -26,7 +27,7 @@ class BlockAddButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlockActionButton(
- svgName: 'editor/add',
+ svg: FlowySvgs.add_s,
richMessage: TextSpan(
children: [
TextSpan(
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_button.dart
index 25154cfcf1..e1d8f6d8f0 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_button.dart
@@ -1,18 +1,18 @@
import 'dart:io';
-import 'package:flowy_infra/image.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra_ui/widget/ignore_parent_gesture.dart';
import 'package:flutter/material.dart';
class BlockActionButton extends StatelessWidget {
const BlockActionButton({
super.key,
- required this.svgName,
+ required this.svg,
required this.richMessage,
required this.onTap,
});
- final String svgName;
+ final FlowySvgData svg;
final InlineSpan richMessage;
final VoidCallback onTap;
@@ -31,8 +31,8 @@ class BlockActionButton extends StatelessWidget {
child: GestureDetector(
onTap: onTap,
behavior: HitTestBehavior.deferToChild,
- child: svgWidget(
- svgName,
+ child: FlowySvg(
+ svg,
size: const Size.square(18.0),
color: Theme.of(context).iconTheme.color,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_option_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_option_button.dart
index 4a33a72653..2130c1cf98 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_option_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/block_action_option_button.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/block_action_button.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/option_action.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
@@ -57,7 +58,7 @@ class BlockOptionButton extends StatelessWidget {
Widget _buildOptionButton(PopoverController controller) {
return BlockActionButton(
- svgName: 'editor/option',
+ svg: FlowySvgs.drag_element_s,
richMessage: TextSpan(
children: [
TextSpan(
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action.dart
index 987105c759..13aa48412e 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action.dart
@@ -1,10 +1,11 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -22,24 +23,24 @@ enum OptionAction {
divider,
align;
- String get assetName {
+ FlowySvgData get svg {
switch (this) {
case OptionAction.delete:
- return 'editor/delete';
+ return FlowySvgs.delete_s;
case OptionAction.duplicate:
- return 'editor/duplicate';
+ return FlowySvgs.copy_s;
case OptionAction.turnInto:
- return 'editor/turn_into';
+ return const FlowySvgData('editor/turn_into');
case OptionAction.moveUp:
- return 'editor/move_up';
+ return const FlowySvgData('editor/move_up');
case OptionAction.moveDown:
- return 'editor/move_down';
+ return const FlowySvgData('editor/move_down');
case OptionAction.color:
- return 'editor/color';
+ return const FlowySvgData('editor/color');
case OptionAction.divider:
- return 'editor/divider';
+ return const FlowySvgData('editor/divider');
case OptionAction.align:
- return 'editor/align/center';
+ return FlowySvgs.align_center_s;
}
}
@@ -83,14 +84,14 @@ enum OptionAlignType {
}
}
- String get assetName {
+ FlowySvgData get svg {
switch (this) {
case OptionAlignType.left:
- return 'editor/align/left';
+ return FlowySvgs.align_left_s;
case OptionAlignType.center:
- return 'editor/align/center';
+ return FlowySvgs.align_center_s;
case OptionAlignType.right:
- return 'editor/align/right';
+ return FlowySvgs.align_right_s;
}
}
@@ -126,7 +127,7 @@ class AlignOptionAction extends PopoverActionCell {
@override
Widget? leftIcon(Color iconColor) {
return FlowySvg(
- name: align.assetName,
+ align.svg,
size: const Size.square(12),
).padding(all: 2.0);
}
@@ -218,7 +219,7 @@ class ColorOptionAction extends PopoverActionCell {
@override
Widget? leftIcon(Color iconColor) {
return const FlowySvg(
- name: 'editor/color_formatter',
+ FlowySvgs.color_format_m,
size: Size.square(12),
).padding(all: 2.0);
}
@@ -287,7 +288,7 @@ class OptionActionWrapper extends ActionCell {
final OptionAction inner;
@override
- Widget? leftIcon(Color iconColor) => FlowySvg(name: inner.assetName);
+ Widget? leftIcon(Color iconColor) => FlowySvg(inner.svg);
@override
String get name => inner.description;
@@ -299,7 +300,7 @@ class OptionAlignWrapper extends ActionCell {
final OptionAlignType inner;
@override
- Widget? leftIcon(Color iconColor) => FlowySvg(name: inner.assetName);
+ Widget? leftIcon(Color iconColor) => FlowySvg(inner.svg);
@override
String get name => inner.description;
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action_button.dart
index 1bbce0b5ad..a10920f635 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/actions/option_action_button.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/option_action.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/widget/ignore_parent_gesture.dart';
import 'package:flutter/material.dart';
@@ -155,8 +156,8 @@ class OptionActionButton extends StatelessWidget {
child: GestureDetector(
onTap: onTap,
behavior: HitTestBehavior.deferToChild,
- child: svgWidget(
- 'editor/option',
+ child: FlowySvg(
+ FlowySvgs.drag_element_s,
size: const Size.square(24.0),
color: Theme.of(context).iconTheme.color,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart
index abae17604c..838089caf0 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/startup/startup.dart';
@@ -13,7 +14,7 @@ import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter/material.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:appflowy/workspace/application/view/view_ext.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
@@ -128,8 +129,8 @@ class _BuiltInPageWidgetState extends State {
width: 24,
height: 24,
iconPadding: const EdgeInsets.all(3),
- icon: svgWidget(
- 'common/information',
+ icon: FlowySvg(
+ FlowySvgs.information_s,
color: Theme.of(context).iconTheme.color,
),
),
@@ -145,8 +146,8 @@ class _BuiltInPageWidgetState extends State {
width: 24,
height: 24,
iconPadding: const EdgeInsets.all(3),
- icon: svgWidget(
- 'common/settings',
+ icon: FlowySvg(
+ FlowySvgs.settings_s,
color: Theme.of(context).iconTheme.color,
),
onPressed: () => controller.show(),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart
index 99c4479ea1..0796687dfd 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/base/insert_page_command.dart';
import 'package:appflowy/workspace/application/view/view_ext.dart';
import 'package:appflowy/workspace/application/view/view_service.dart';
@@ -5,7 +6,6 @@ import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/error_page.dart';
@@ -208,8 +208,8 @@ class _LinkToPageMenuState extends State {
children.add(
FlowyButton(
isSelected: index == _selectedIndex,
- leftIcon: svgWidget(
- view.iconName,
+ leftIcon: FlowySvg(
+ view.iconData,
color: Theme.of(context).iconTheme.color,
),
text: FlowyText.regular(view.name),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_item_list_menu.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_item_list_menu.dart
index c87bc3ee90..8832224367 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_item_list_menu.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_item_list_menu.dart
@@ -1,4 +1,4 @@
-import 'package:flowy_infra/image.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -48,7 +48,7 @@ class SelectableItem extends StatelessWidget {
height: 32,
child: FlowyButton(
text: FlowyText.medium(item),
- rightIcon: isSelected ? const FlowySvg(name: 'grid/checkmark') : null,
+ rightIcon: isSelected ? const FlowySvg(FlowySvgs.check_s) : null,
onTap: onTap,
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart
index 2a08f181cc..8f3e4b7477 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart
@@ -1,23 +1,24 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flutter/material.dart';
class SelectableSvgWidget extends StatelessWidget {
const SelectableSvgWidget({
super.key,
- required this.name,
+ required this.data,
required this.isSelected,
required this.style,
});
- final String name;
+ final FlowySvgData data;
final bool isSelected;
final SelectionMenuStyle style;
@override
Widget build(BuildContext context) {
- return svgWidget(
- name,
+ return FlowySvg(
+ data,
size: const Size.square(18.0),
color: isSelected
? style.selectionMenuItemSelectedIconColor
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart
index 0576d6e4b4..8797d6d5eb 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/inline_database_menu_item.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/application/doc_bloc.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/base/insert_page_command.dart';
@@ -11,7 +12,7 @@ SelectionMenuItem inlineGridMenuItem(DocumentBloc documentBloc) =>
SelectionMenuItem(
name: LocaleKeys.document_slashMenu_grid_createANewGrid.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/grid',
+ data: FlowySvgs.grid_s,
isSelected: onSelected,
style: style,
),
@@ -36,7 +37,7 @@ SelectionMenuItem inlineBoardMenuItem(DocumentBloc documentBloc) =>
SelectionMenuItem(
name: LocaleKeys.document_slashMenu_board_createANewBoard.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/board',
+ data: FlowySvgs.board_s,
isSelected: onSelected,
style: style,
),
@@ -60,7 +61,7 @@ SelectionMenuItem inlineCalendarMenuItem(DocumentBloc documentBloc) =>
SelectionMenuItem(
name: LocaleKeys.document_slashMenu_calendar_createANewCalendar.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/calendar',
+ data: FlowySvgs.date_s,
isSelected: onSelected,
style: style,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart
index ca82324813..94d20d479c 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/database/referenced_database_menu_item.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/base/link_to_page_widget.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/base/selectable_svg_widget.dart';
@@ -9,7 +10,7 @@ import 'package:flutter/material.dart';
SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
name: LocaleKeys.document_plugins_referencedGrid.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/grid',
+ data: FlowySvgs.grid_s,
isSelected: onSelected,
style: style,
),
@@ -28,7 +29,7 @@ SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
name: LocaleKeys.document_plugins_referencedBoard.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/board',
+ data: FlowySvgs.board_s,
isSelected: onSelected,
style: style,
),
@@ -47,7 +48,7 @@ SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem(
name: LocaleKeys.document_plugins_referencedCalendar.tr(),
icon: (editorState, onSelected, style) => SelectableSvgWidget(
- name: 'editor/calendar',
+ data: FlowySvgs.date_s,
isSelected: onSelected,
style: style,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/cover_editor.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/cover_editor.dart
index d18900d66e..e00f8c56c7 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/cover_editor.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/cover_editor.dart
@@ -1,11 +1,12 @@
import 'dart:io';
import 'dart:ui';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
@@ -445,8 +446,8 @@ class _ImageGridItemState extends State {
Theme.of(context).colorScheme.surface.withOpacity(0.8),
iconPadding: const EdgeInsets.all(5),
width: 28,
- icon: svgWidget(
- 'editor/delete',
+ icon: FlowySvg(
+ FlowySvgs.delete_s,
color: Theme.of(context).colorScheme.tertiary,
),
onPressed: widget.onImageDelete,
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/custom_cover_picker.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/custom_cover_picker.dart
index 39f0d239d3..088869f180 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/custom_cover_picker.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/custom_cover_picker.dart
@@ -1,4 +1,5 @@
import 'dart:io';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/header/custom_cover_picker_bloc.dart';
import 'package:easy_localization/easy_localization.dart';
@@ -6,7 +7,6 @@ import 'package:flowy_infra_ui/style_widget/snap_bar.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -219,7 +219,7 @@ class _CoverImagePreviewWidgetState extends State {
mainAxisAlignment: MainAxisAlignment.center,
children: [
const FlowySvg(
- name: 'editor/add',
+ FlowySvgs.add_s,
size: Size(20, 20),
),
const SizedBox(
@@ -243,7 +243,7 @@ class _CoverImagePreviewWidgetState extends State {
},
useIntrinsicWidth: true,
leftIcon: const FlowySvg(
- name: 'file_icon',
+ FlowySvgs.page_s,
size: Size(20, 20),
),
text: FlowyText(
@@ -268,9 +268,9 @@ class _CoverImagePreviewWidgetState extends State {
shape: BoxShape.circle,
color: Theme.of(context).colorScheme.onPrimary,
),
- child: svgWidget(
- "editor/close",
- size: const Size(20, 20),
+ child: const FlowySvg(
+ FlowySvgs.close_s,
+ size: Size(20, 20),
),
),
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart
index 7386aa42e9..93c9887ee7 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/document_header_node_widget.dart
@@ -1,11 +1,12 @@
import 'dart:io';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/widgets/emoji_picker/emoji_picker.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/rounded_button.dart';
import 'package:flutter/material.dart';
@@ -227,7 +228,7 @@ class _DocumentHeaderToolbarState extends State {
cover: (CoverType.asset, builtInAssetImages.first),
),
useIntrinsicWidth: true,
- leftIcon: const FlowySvg(name: 'editor/image'),
+ leftIcon: const FlowySvg(FlowySvgs.image_s),
text: FlowyText.regular(
LocaleKeys.document_plugins_cover_addCover.tr(),
),
@@ -434,8 +435,8 @@ class DeleteCoverButton extends StatelessWidget {
fillColor: Theme.of(context).colorScheme.surface.withOpacity(0.5),
iconPadding: const EdgeInsets.all(5),
width: 28,
- icon: svgWidget(
- 'editor/delete',
+ icon: FlowySvg(
+ FlowySvgs.delete_s,
color: Theme.of(context).colorScheme.tertiary,
),
onPressed: onTap,
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/emoji_popover.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/emoji_popover.dart
index d24e0682b1..89ab6c072b 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/emoji_popover.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/header/emoji_popover.dart
@@ -1,10 +1,11 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/widgets/emoji_picker/emoji_picker.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flutter/material.dart';
class EmojiPopover extends StatefulWidget {
@@ -77,7 +78,7 @@ class DeleteButton extends StatelessWidget {
text: FlowyText(
LocaleKeys.document_plugins_cover_removeIcon.tr(),
),
- leftIcon: const FlowySvg(name: 'editor/delete'),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
),
);
}
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_menu.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_menu.dart
index 9aa4523df8..71e341d460 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_menu.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/image/image_menu.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/ignore_parent_gesture.dart';
import 'package:flutter/material.dart';
@@ -97,7 +98,7 @@ class _ImageCopyLinkButton extends StatelessWidget {
return GestureDetector(
onTap: onTap,
child: const FlowySvg(
- name: 'editor/copy',
+ FlowySvgs.copy_s,
size: Size.square(16),
),
);
@@ -190,9 +191,21 @@ class _ImageAlignButtonState extends State<_ImageAlignButton> {
);
}
+ FlowySvgData iconFor(String alignment) {
+ switch (alignment) {
+ case 'right':
+ return FlowySvgs.align_right_s;
+ case 'center':
+ return FlowySvgs.align_center_s;
+ case 'left':
+ default:
+ return FlowySvgs.align_left_s;
+ }
+ }
+
Widget buildAlignIcon() {
return FlowySvg(
- name: 'editor/align/$align',
+ iconFor(align),
size: const Size.square(16),
);
}
@@ -214,17 +227,17 @@ class _AlignButtons extends StatelessWidget {
children: [
const HSpace(4),
_AlignButton(
- align: 'left',
+ icon: FlowySvgs.align_left_s,
onTap: () => onAlignChanged('left'),
),
const _Divider(),
_AlignButton(
- align: 'left',
+ icon: FlowySvgs.align_center_s,
onTap: () => onAlignChanged('center'),
),
const _Divider(),
_AlignButton(
- align: 'left',
+ icon: FlowySvgs.align_right_s,
onTap: () => onAlignChanged('right'),
),
const HSpace(4),
@@ -236,11 +249,11 @@ class _AlignButtons extends StatelessWidget {
class _AlignButton extends StatelessWidget {
const _AlignButton({
- required this.align,
+ required this.icon,
required this.onTap,
});
- final String align;
+ final FlowySvgData icon;
final VoidCallback onTap;
@override
@@ -248,7 +261,7 @@ class _AlignButton extends StatelessWidget {
return GestureDetector(
onTap: onTap,
child: FlowySvg(
- name: 'editor/align/$align',
+ icon,
size: const Size.square(16),
),
);
@@ -267,7 +280,7 @@ class _ImageDeleteButton extends StatelessWidget {
return GestureDetector(
onTap: onTap,
child: const FlowySvg(
- name: 'editor/delete',
+ FlowySvgs.delete_s,
size: Size.square(16),
),
);
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/infra/svg.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/infra/svg.dart
index 0951b0bda3..e1a128ed92 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/infra/svg.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/infra/svg.dart
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
-import 'package:flutter_svg/svg.dart';
+import 'package:flutter_svg/flutter_svg.dart';
class Svg extends StatelessWidget {
const Svg({
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_math_equation/inline_math_equation_toolbar_item.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_math_equation/inline_math_equation_toolbar_item.dart
index 3e95e5abb7..21a8568a07 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_math_equation/inline_math_equation_toolbar_item.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_math_equation/inline_math_equation_toolbar_item.dart
@@ -1,8 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/editor_plugins/plugins.dart';
import 'package:appflowy_editor/appflowy_editor.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
+
import 'package:flutter/material.dart';
final ToolbarItem inlineMathEquationItem = ToolbarItem(
@@ -18,8 +19,8 @@ final ToolbarItem inlineMathEquationItem = ToolbarItem(
);
});
return SVGIconItemWidget(
- iconBuilder: (_) => svgWidget(
- 'editor/math',
+ iconBuilder: (_) => FlowySvg(
+ FlowySvgs.math_lg,
size: const Size.square(16),
color: isHighlight ? highlightColor : Colors.white,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_page/inline_page_reference.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_page/inline_page_reference.dart
index 65f598bc50..d3104cccf1 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_page/inline_page_reference.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/inline_page/inline_page_reference.dart
@@ -107,7 +107,7 @@ class InlinePageReferenceService {
for (final view in views) {
final SelectionMenuItem pageSelectionMenuItem = SelectionMenuItem(
icon: (editorState, isSelected, style) => SelectableSvgWidget(
- name: view.iconName,
+ data: view.iconData,
isSelected: isSelected,
style: style,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart
index 24ab28c421..80c9d224ad 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
import 'package:appflowy/plugins/trash/application/trash_service.dart';
import 'package:appflowy/startup/startup.dart';
@@ -9,7 +10,6 @@ import 'package:appflowy_backend/protobuf/flowy-folder2/protobuf.dart';
import 'package:appflowy_editor/appflowy_editor.dart'
show EditorState, SelectionUpdateReason;
import 'package:collection/collection.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flutter/material.dart';
@@ -83,7 +83,7 @@ class _MentionPageBlockState extends State {
children: [
const HSpace(4),
FlowySvg(
- name: view.layout.iconName,
+ view.layout.icon,
size: const Size.square(18.0),
),
const HSpace(2),
diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/more/more_button.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/more/more_button.dart
index 181ac2b225..4152cdde8b 100644
--- a/frontend/appflowy_flutter/lib/plugins/document/presentation/more/more_button.dart
+++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/more/more_button.dart
@@ -1,8 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
import 'package:appflowy/plugins/document/presentation/more/font_size_switcher.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -29,8 +29,8 @@ class DocumentMoreButton extends StatelessWidget {
),
];
},
- child: svgWidget(
- 'editor/details',
+ child: FlowySvg(
+ FlowySvgs.details_s,
size: const Size(18, 18),
color: Theme.of(context).iconTheme.color,
),
diff --git a/frontend/appflowy_flutter/lib/plugins/trash/menu.dart b/frontend/appflowy_flutter/lib/plugins/trash/menu.dart
index 943670d03b..f48e477e65 100644
--- a/frontend/appflowy_flutter/lib/plugins/trash/menu.dart
+++ b/frontend/appflowy_flutter/lib/plugins/trash/menu.dart
@@ -1,10 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/extension.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
@@ -49,8 +49,8 @@ class MenuTrash extends StatelessWidget {
return Row(
children: [
const FlowySvg(
+ FlowySvgs.trash_m,
size: Size(16, 16),
- name: 'home/trash',
),
const HSpace(6),
FlowyText.medium(LocaleKeys.trash_text.tr()),
diff --git a/frontend/appflowy_flutter/lib/plugins/trash/src/trash_cell.dart b/frontend/appflowy_flutter/lib/plugins/trash/src/trash_cell.dart
index 89c124d217..487bcb82aa 100644
--- a/frontend/appflowy_flutter/lib/plugins/trash/src/trash_cell.dart
+++ b/frontend/appflowy_flutter/lib/plugins/trash/src/trash_cell.dart
@@ -1,4 +1,4 @@
-import 'package:flowy_infra/image.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
@@ -42,7 +42,7 @@ class TrashCell extends StatelessWidget {
width: TrashSizes.actionIconWidth,
onPressed: onRestore,
iconPadding: const EdgeInsets.all(5),
- icon: const FlowySvg(name: 'editor/restore'),
+ icon: const FlowySvg(FlowySvgs.restore_s),
),
const HSpace(20),
FlowyIconButton(
@@ -50,7 +50,7 @@ class TrashCell extends StatelessWidget {
width: TrashSizes.actionIconWidth,
onPressed: onDelete,
iconPadding: const EdgeInsets.all(5),
- icon: const FlowySvg(name: 'editor/delete'),
+ icon: const FlowySvg(FlowySvgs.delete_s),
),
],
);
diff --git a/frontend/appflowy_flutter/lib/plugins/trash/trash.dart b/frontend/appflowy_flutter/lib/plugins/trash/trash.dart
index 920c04b793..cedac2622a 100644
--- a/frontend/appflowy_flutter/lib/plugins/trash/trash.dart
+++ b/frontend/appflowy_flutter/lib/plugins/trash/trash.dart
@@ -2,6 +2,7 @@ export "./src/sizes.dart";
export "./src/trash_cell.dart";
export "./src/trash_header.dart";
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
import 'package:easy_localization/easy_localization.dart';
@@ -21,7 +22,7 @@ class TrashPluginBuilder extends PluginBuilder {
String get menuName => "TrashPB";
@override
- String get menuIcon => "editor/delete";
+ FlowySvgData get icon => FlowySvgs.trash_m;
@override
PluginType get pluginType => PluginType.trash;
diff --git a/frontend/appflowy_flutter/lib/plugins/trash/trash_page.dart b/frontend/appflowy_flutter/lib/plugins/trash/trash_page.dart
index 4ade561baa..9b0631b9b0 100644
--- a/frontend/appflowy_flutter/lib/plugins/trash/trash_page.dart
+++ b/frontend/appflowy_flutter/lib/plugins/trash/trash_page.dart
@@ -1,9 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/trash/src/sizes.dart';
import 'package:appflowy/plugins/trash/src/trash_header.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
@@ -96,7 +96,7 @@ class _TrashPageState extends State {
IntrinsicWidth(
child: FlowyButton(
text: FlowyText.medium(LocaleKeys.trash_restoreAll.tr()),
- leftIcon: const FlowySvg(name: 'editor/restore'),
+ leftIcon: const FlowySvg(FlowySvgs.restore_s),
onTap: () => context.read().add(
const TrashEvent.restoreAll(),
),
@@ -106,7 +106,7 @@ class _TrashPageState extends State {
IntrinsicWidth(
child: FlowyButton(
text: FlowyText.medium(LocaleKeys.trash_deleteAll.tr()),
- leftIcon: const FlowySvg(name: 'editor/delete'),
+ leftIcon: const FlowySvg(FlowySvgs.delete_s),
onTap: () =>
context.read().add(const TrashEvent.deleteAll()),
),
diff --git a/frontend/appflowy_flutter/lib/startup/plugin/plugin.dart b/frontend/appflowy_flutter/lib/startup/plugin/plugin.dart
index 3572fc6488..5a2444e91f 100644
--- a/frontend/appflowy_flutter/lib/startup/plugin/plugin.dart
+++ b/frontend/appflowy_flutter/lib/startup/plugin/plugin.dart
@@ -1,5 +1,6 @@
library flowy_plugin;
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
@@ -45,7 +46,7 @@ abstract class PluginBuilder {
String get menuName;
- String get menuIcon;
+ FlowySvgData get icon;
/// The type of this [Plugin]. Each [Plugin] should have a unique [PluginType]
PluginType get pluginType;
diff --git a/frontend/appflowy_flutter/lib/user/presentation/folder/folder_widget.dart b/frontend/appflowy_flutter/lib/user/presentation/folder/folder_widget.dart
index 7ef1712ece..b064b90da2 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/folder/folder_widget.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/folder/folder_widget.dart
@@ -1,9 +1,9 @@
import 'dart:io';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/application/settings/prelude.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/file_picker/file_picker_service.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/buttons/secondary_button.dart';
@@ -86,7 +86,7 @@ class FolderOptionsWidget extends StatelessWidget {
builder: (context, result) {
final subtitle = result.hasData ? result.data! : '';
return _FolderCard(
- icon: const FlowySvg(name: 'common/archive'),
+ icon: const FlowySvg(FlowySvgs.archive_m),
title: LocaleKeys.settings_files_defineWhereYourDataIsStored.tr(),
subtitle: subtitle,
trailing: _buildTextButton(
diff --git a/frontend/appflowy_flutter/lib/user/presentation/historical_user.dart b/frontend/appflowy_flutter/lib/user/presentation/historical_user.dart
index 7fe2ee85e2..9e74e2c0ae 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/historical_user.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/historical_user.dart
@@ -1,8 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/user/application/historical_user_bloc.dart';
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -71,7 +71,7 @@ class HistoricalUserItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
- final icon = isSelected ? const FlowySvg(name: "grid/checkmark") : null;
+ final icon = isSelected ? const FlowySvg(FlowySvgs.check_s) : null;
final isDisabled = isSelected || user.authType != AuthTypePB.Local;
final outputFormat = DateFormat('MM/dd/yyyy hh:mm a');
final date =
diff --git a/frontend/appflowy_flutter/lib/user/presentation/sign_in_screen.dart b/frontend/appflowy_flutter/lib/user/presentation/sign_in_screen.dart
index d29dac34c8..ee7ed27b7c 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/sign_in_screen.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/sign_in_screen.dart
@@ -2,6 +2,7 @@ import 'package:appflowy/core/config/kv.dart';
import 'package:appflowy/core/config/kv_keys.dart';
import 'package:appflowy/core/frameless_window.dart';
import 'package:appflowy/startup/entry_point.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/user/application/historical_user_bloc.dart';
import 'package:appflowy/user/application/sign_in_bloc.dart';
@@ -19,7 +20,6 @@ import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart'
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:dartz/dartz.dart';
-import 'package:flowy_infra/image.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
class SignInScreen extends StatelessWidget {
@@ -281,8 +281,8 @@ class PasswordTextField extends StatelessWidget {
builder: (context, state) {
return RoundedInputField(
obscureText: true,
- obscureIcon: svgWidget("home/hide"),
- obscureHideIcon: svgWidget("home/show"),
+ obscureIcon: const FlowySvg(FlowySvgs.hide_m),
+ obscureHideIcon: const FlowySvg(FlowySvgs.show_m),
hintText: LocaleKeys.signIn_passwordHint.tr(),
errorText: context
.read()
@@ -357,7 +357,7 @@ class ThirdPartySignInButton extends StatelessWidget {
required this.onPressed,
}) : super(key: key);
- final String icon;
+ final FlowySvgData icon;
final VoidCallback onPressed;
@override
@@ -368,7 +368,7 @@ class ThirdPartySignInButton extends StatelessWidget {
iconPadding: const EdgeInsets.all(8.0),
radius: Corners.s10Border,
onPressed: onPressed,
- icon: svgWidget(
+ icon: FlowySvg(
icon,
),
);
@@ -388,7 +388,7 @@ class ThirdPartySignInButtons extends StatelessWidget {
mainAxisAlignment: mainAxisAlignment,
children: [
ThirdPartySignInButton(
- icon: 'login/google-mark',
+ icon: FlowySvgs.google_mark_xl,
onPressed: () {
getIt().set(KVKeys.loginType, 'supabase');
context.read().add(
diff --git a/frontend/appflowy_flutter/lib/user/presentation/sign_up_screen.dart b/frontend/appflowy_flutter/lib/user/presentation/sign_up_screen.dart
index 95f9c2fef8..5736b30ae9 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/sign_up_screen.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/sign_up_screen.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/user/application/sign_up_bloc.dart';
import 'package:appflowy/user/presentation/router.dart';
@@ -14,7 +15,6 @@ import 'package:flowy_infra_ui/style_widget/snap_bar.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:dartz/dartz.dart';
-import 'package:flowy_infra/image.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
class SignUpScreen extends StatelessWidget {
@@ -148,8 +148,8 @@ class PasswordTextField extends StatelessWidget {
builder: (context, state) {
return RoundedInputField(
obscureText: true,
- obscureIcon: svgWidget("home/hide"),
- obscureHideIcon: svgWidget("home/show"),
+ obscureIcon: const FlowySvg(FlowySvgs.hide_m),
+ obscureHideIcon: const FlowySvg(FlowySvgs.show_m),
hintText: LocaleKeys.signUp_passwordHint.tr(),
normalBorderColor: Theme.of(context).colorScheme.outline,
errorBorderColor: Theme.of(context).colorScheme.error,
@@ -181,8 +181,8 @@ class RepeatPasswordTextField extends StatelessWidget {
builder: (context, state) {
return RoundedInputField(
obscureText: true,
- obscureIcon: svgWidget("home/hide"),
- obscureHideIcon: svgWidget("home/show"),
+ obscureIcon: const FlowySvg(FlowySvgs.hide_m),
+ obscureHideIcon: const FlowySvg(FlowySvgs.show_m),
hintText: LocaleKeys.signUp_repeatPasswordHint.tr(),
normalBorderColor: Theme.of(context).colorScheme.outline,
errorBorderColor: Theme.of(context).colorScheme.error,
diff --git a/frontend/appflowy_flutter/lib/user/presentation/skip_log_in_screen.dart b/frontend/appflowy_flutter/lib/user/presentation/skip_log_in_screen.dart
index 16a51826ea..be8845b6a4 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/skip_log_in_screen.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/skip_log_in_screen.dart
@@ -1,4 +1,5 @@
import 'package:appflowy/core/frameless_window.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/entry_point.dart';
import 'package:appflowy/startup/launch_configuration.dart';
import 'package:appflowy/startup/startup.dart';
@@ -8,7 +9,6 @@ import 'package:appflowy/workspace/presentation/settings/widgets/settings_langua
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:dartz/dartz.dart' as dartz;
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/language.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
@@ -245,7 +245,7 @@ class LanguageSelectorOnWelcomePage extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.end,
children: [
const FlowySvg(
- name: 'login/language',
+ FlowySvgs.ethernet_m,
size: Size.square(20),
),
const HSpace(4),
@@ -259,7 +259,7 @@ class LanguageSelectorOnWelcomePage extends StatelessWidget {
},
),
const FlowySvg(
- name: 'home/drop_down_hide',
+ FlowySvgs.drop_menu_hide_m,
size: Size.square(20),
),
],
diff --git a/frontend/appflowy_flutter/lib/user/presentation/widgets/background.dart b/frontend/appflowy_flutter/lib/user/presentation/widgets/background.dart
index 779e7cf0ba..17fcf0e370 100644
--- a/frontend/appflowy_flutter/lib/user/presentation/widgets/background.dart
+++ b/frontend/appflowy_flutter/lib/user/presentation/widgets/background.dart
@@ -1,6 +1,6 @@
import 'dart:math';
-import 'package:flowy_infra/image.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
@@ -44,7 +44,7 @@ class FlowyLogoTitle extends StatelessWidget {
children: [
SizedBox.fromSize(
size: logoSize,
- child: svgWidget('flowy_logo'),
+ child: const FlowySvg(FlowySvgs.flowy_logo_xl),
),
const VSpace(40),
FlowyText.regular(
diff --git a/frontend/appflowy_flutter/lib/workspace/application/view/view_ext.dart b/frontend/appflowy_flutter/lib/workspace/application/view/view_ext.dart
index f8d189220a..e42c8e988a 100644
--- a/frontend/appflowy_flutter/lib/workspace/application/view/view_ext.dart
+++ b/frontend/appflowy_flutter/lib/workspace/application/view/view_ext.dart
@@ -1,10 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/database_view/board/presentation/board_page.dart';
import 'package:appflowy/plugins/database_view/calendar/presentation/calendar_page.dart';
import 'package:appflowy/plugins/database_view/grid/presentation/grid_page.dart';
import 'package:appflowy/plugins/database_view/tar_bar/tab_bar_view.dart';
import 'package:appflowy/plugins/document/document.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
-import 'package:flowy_infra/image.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:flutter/material.dart';
@@ -39,21 +39,19 @@ extension FlowyPluginExtension on FlowyPlugin {
extension ViewExtension on ViewPB {
Widget renderThumbnail({Color? iconColor}) {
- const String thumbnail = "file_icon";
- const Widget widget = FlowySvg(name: thumbnail);
+ const Widget widget = FlowySvg(FlowySvgs.page_s);
return widget;
}
Widget defaultIcon() {
- final iconName = switch (layout) {
- ViewLayoutPB.Board => 'editor/board',
- ViewLayoutPB.Calendar => 'editor/calendar',
- ViewLayoutPB.Grid => 'editor/grid',
- ViewLayoutPB.Document => 'editor/documents',
- _ => 'file_icon',
- };
return FlowySvg(
- name: iconName,
+ switch (layout) {
+ ViewLayoutPB.Board => FlowySvgs.board_s,
+ ViewLayoutPB.Calendar => FlowySvgs.date_s,
+ ViewLayoutPB.Grid => FlowySvgs.grid_s,
+ ViewLayoutPB.Document => FlowySvgs.documents_s,
+ _ => FlowySvgs.documents_s,
+ },
);
}
@@ -105,22 +103,20 @@ extension ViewExtension on ViewPB {
throw UnimplementedError;
}
- String get iconName {
- return layout.iconName;
- }
+ FlowySvgData get iconData => layout.icon;
}
extension ViewLayoutExtension on ViewLayoutPB {
- String get iconName {
+ FlowySvgData get icon {
switch (this) {
case ViewLayoutPB.Grid:
- return 'editor/grid';
+ return FlowySvgs.grid_s;
case ViewLayoutPB.Board:
- return 'editor/board';
+ return FlowySvgs.board_s;
case ViewLayoutPB.Calendar:
- return 'editor/date';
+ return FlowySvgs.date_s;
case ViewLayoutPB.Document:
- return 'editor/documents';
+ return FlowySvgs.documents_s;
default:
throw Exception('Unknown layout type');
}
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart
index 5f3c5bda2a..3a6df0be80 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart
@@ -1,4 +1,5 @@
import 'package:appflowy/core/raw_keyboard_extension.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/menu/menu_bloc.dart';
import 'package:appflowy/workspace/application/sidebar/folder/folder_bloc.dart';
@@ -6,7 +7,6 @@ import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -115,7 +115,7 @@ class _PersonalFolderHeaderState extends State {
iconPadding: const EdgeInsets.all(2),
height: iconSize,
width: iconSize,
- icon: const FlowySvg(name: 'editor/add'),
+ icon: const FlowySvg(FlowySvgs.add_s),
onPressed: () {
context.read().add(
MenuEvent.createApp(
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/import/import_type.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/import/import_type.dart
index b07a8fffba..86a2797f1a 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/import/import_type.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/import/import_type.dart
@@ -1,6 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@@ -28,21 +28,20 @@ enum ImportType {
}
WidgetBuilder get icon => (context) {
- final String name;
+ final FlowySvgData svg;
switch (this) {
- case ImportType.historyDocument:
- name = 'editor/board';
case ImportType.historyDatabase:
- name = 'editor/documents';
+ svg = FlowySvgs.documents_s;
+ case ImportType.historyDocument:
case ImportType.databaseCSV:
- name = 'editor/board';
case ImportType.databaseRawData:
- name = 'editor/board';
+ svg = FlowySvgs.board_s;
case ImportType.markdownOrText:
- name = 'editor/text';
+ svg = FlowySvgs.text_s;
}
+
return FlowySvg(
- name: name,
+ svg,
color: Theme.of(context).colorScheme.tertiary,
);
};
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_folder.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_folder.dart
index 548c5bd3b7..74590d790d 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_folder.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_folder.dart
@@ -25,11 +25,12 @@ class SidebarFolder extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
children: [
// favorite
- if (favoriteViews.isNotEmpty)
+ if (favoriteViews.isNotEmpty) ...[
FavoriteFolder(
views: favoriteViews,
),
- const VSpace(10),
+ const VSpace(10),
+ ],
// personal
PersonalFolder(views: views),
],
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_new_page_button.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_new_page_button.dart
index a94575cfcd..cec04264fe 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_new_page_button.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_new_page_button.dart
@@ -1,7 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/application/menu/menu_bloc.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flutter/material.dart';
import 'package:flowy_infra_ui/style_widget/extension.dart';
@@ -28,7 +28,7 @@ class SidebarNewPageButton extends StatelessWidget {
shape: BoxShape.circle,
color: Theme.of(context).colorScheme.surface,
),
- child: svgWidget('home/new_app'),
+ child: const FlowySvg(FlowySvgs.new_app_s),
),
padding: const EdgeInsets.all(0),
);
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_top_menu.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_top_menu.dart
index 3a2493bdba..22671f787b 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_top_menu.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_top_menu.dart
@@ -1,12 +1,12 @@
import 'dart:io' show Platform;
import 'package:appflowy/core/frameless_window.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/home/home_setting_bloc.dart';
import 'package:appflowy/workspace/application/menu/menu_bloc.dart';
import 'package:appflowy/workspace/presentation/home/home_sizes.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -47,9 +47,9 @@ class SidebarTopMenu extends StatelessWidget {
}
final name = Theme.of(context).brightness == Brightness.dark
- ? 'flowy_logo_dark_mode'
- : 'flowy_logo_with_text';
- return svgWidget(
+ ? FlowySvgs.flowy_logo_dark_mode_xl
+ : FlowySvgs.flowy_logo_text_xl;
+ return FlowySvg(
name,
size: const Size(92, 17),
);
@@ -77,7 +77,7 @@ class SidebarTopMenu extends StatelessWidget {
.add(const HomeSettingEvent.collapseMenu()),
iconPadding: const EdgeInsets.fromLTRB(4, 4, 4, 4),
icon: const FlowySvg(
- name: 'home/hide_menu',
+ FlowySvgs.hide_menu_m,
),
),
);
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_trash.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_trash.dart
index 36014021b1..b4a6eb344a 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_trash.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_trash.dart
@@ -1,10 +1,10 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra/theme_extension.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
@@ -50,8 +50,8 @@ class SidebarTrashButton extends StatelessWidget {
children: [
const HSpace(6),
const FlowySvg(
+ FlowySvgs.trash_m,
size: Size(16, 16),
- name: 'home/trash',
),
const HSpace(6),
FlowyText.medium(
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_user.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_user.dart
index f95d111d64..e5bc7c5626 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_user.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar_user.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
import 'package:appflowy/startup/entry_point.dart';
import 'package:appflowy/startup/startup.dart';
@@ -5,7 +6,6 @@ import 'package:appflowy/util/color_generator/color_generator.dart';
import 'package:appflowy/workspace/application/menu/menu_user_bloc.dart';
import 'package:appflowy/workspace/presentation/settings/settings_dialog.dart';
import 'package:appflowy/workspace/presentation/settings/widgets/settings_user_view.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flowy_infra_ui/widget/spacing.dart';
@@ -84,7 +84,10 @@ class SidebarUser extends StatelessWidget {
borderRadius: Corners.s5Border,
child: CircleAvatar(
backgroundColor: Colors.transparent,
- child: svgWidget('emoji/$iconUrl'),
+ child: FlowySvg(
+ FlowySvgData('emoji/$iconUrl'),
+ overrideColor: false,
+ ),
),
),
);
@@ -140,8 +143,8 @@ class SidebarUser extends StatelessWidget {
},
icon: SizedBox.square(
dimension: 20,
- child: svgWidget(
- 'home/settings',
+ child: FlowySvg(
+ FlowySvgs.settings_m,
color: Theme.of(context).colorScheme.tertiary,
),
),
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_action_type.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_action_type.dart
index cce5ef0e13..9fda07d7d2 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_action_type.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_action_type.dart
@@ -1,6 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flutter/material.dart';
enum ViewMoreActionType {
@@ -39,21 +39,21 @@ extension ViewMoreActionTypeExtension on ViewMoreActionType {
Widget icon(Color iconColor) {
switch (this) {
case ViewMoreActionType.delete:
- return const FlowySvg(name: 'editor/delete');
+ return const FlowySvg(FlowySvgs.delete_s);
case ViewMoreActionType.favorite:
- return const FlowySvg(name: 'home/unfavorite');
+ return const FlowySvg(FlowySvgs.unfavorite_s);
case ViewMoreActionType.unFavorite:
- return const FlowySvg(name: 'home/favorite');
+ return const FlowySvg(FlowySvgs.favorite_s);
case ViewMoreActionType.duplicate:
- return const FlowySvg(name: 'editor/copy');
+ return const FlowySvg(FlowySvgs.copy_s);
case ViewMoreActionType.copyLink:
return const Icon(Icons.copy);
case ViewMoreActionType.rename:
- return const FlowySvg(name: 'editor/edit');
+ return const FlowySvg(FlowySvgs.edit_s);
case ViewMoreActionType.moveTo:
return const Icon(Icons.move_to_inbox);
case ViewMoreActionType.openInNewTab:
- return const FlowySvg(name: 'grid/expander');
+ return const FlowySvg(FlowySvgs.full_view_s);
}
}
}
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_add_button.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_add_button.dart
index 799a6ca138..e020751e0b 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_add_button.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_add_button.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/plugins/document/document.dart';
import 'package:appflowy/startup/plugin/plugin.dart';
import 'package:appflowy/startup/startup.dart';
@@ -5,7 +6,6 @@ import 'package:appflowy/workspace/presentation/home/menu/sidebar/import/import_
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
@@ -57,7 +57,7 @@ class ViewAddButton extends StatelessWidget {
hoverColor: Colors.transparent,
iconPadding: const EdgeInsets.all(2),
width: 26,
- icon: const FlowySvg(name: 'editor/add'),
+ icon: const FlowySvg(FlowySvgs.add_s),
onPressed: () {
onEditing(true);
popover.show();
@@ -108,7 +108,7 @@ class ViewAddButtonActionWrapper extends ActionCell {
final PluginBuilder pluginBuilder;
@override
- Widget? leftIcon(Color iconColor) => FlowySvg(name: pluginBuilder.menuIcon);
+ Widget? leftIcon(Color iconColor) => FlowySvg(pluginBuilder.icon);
@override
String get name => pluginBuilder.menuName;
@@ -124,7 +124,7 @@ class ViewImportActionWrapper extends ActionCell {
final DocumentPluginBuilder pluginBuilder;
@override
- Widget? leftIcon(Color iconColor) => const FlowySvg(name: 'editor/import');
+ Widget? leftIcon(Color iconColor) => const FlowySvg(FlowySvgs.import_s);
@override
String get name => LocaleKeys.moreAction_import.tr();
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart
index 4c56858b0c..742ceba2a8 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/workspace/application/favorite/favorite_bloc.dart';
@@ -12,7 +13,6 @@ import 'package:appflowy/workspace/presentation/home/menu/view/view_add_button.d
import 'package:appflowy/workspace/presentation/home/menu/view/view_more_action_button.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
@@ -320,11 +320,12 @@ class _SingleInnerViewItemState extends State {
return const _DotIconWidget();
}
- final name =
- widget.isExpanded ? 'home/drop_down_show' : 'home/drop_down_hide';
+ final svg = widget.isExpanded
+ ? FlowySvgs.drop_menu_show_m
+ : FlowySvgs.drop_menu_hide_m;
return GestureDetector(
child: FlowySvg(
- name: name,
+ svg,
size: const Size.square(16.0),
),
onTap: () => context
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_more_action_button.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_more_action_button.dart
index d236157fe8..ed6001a2f7 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_more_action_button.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_more_action_button.dart
@@ -1,7 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/presentation/home/menu/view/view_action_type.dart';
import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart';
import 'package:flutter/material.dart';
-import 'package:flowy_infra/image.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
@@ -42,7 +42,7 @@ class ViewMoreActionButton extends StatelessWidget {
hoverColor: Colors.transparent,
iconPadding: const EdgeInsets.all(2),
width: 26,
- icon: const FlowySvg(name: 'editor/details'),
+ icon: const FlowySvg(FlowySvgs.details_s),
onPressed: () {
onEditing(true);
popover.show();
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/navigation.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/navigation.dart
index aa34984374..d71e42ac0d 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/navigation.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/navigation.dart
@@ -1,10 +1,10 @@
import 'dart:io';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/home/home_setting_bloc.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -79,8 +79,8 @@ class FlowyNavigation extends StatelessWidget {
.add(const HomeSettingEvent.collapseMenu());
},
iconPadding: const EdgeInsets.fromLTRB(2, 2, 2, 2),
- icon: svgWidget(
- "home/hide_menu",
+ icon: FlowySvg(
+ FlowySvgs.hide_menu_m,
color: Theme.of(context).iconTheme.color,
),
),
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/tabs/flowy_tab.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/tabs/flowy_tab.dart
index 0b97774c36..0d12894b47 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/home/tabs/flowy_tab.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/tabs/flowy_tab.dart
@@ -1,7 +1,7 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart';
import 'package:appflowy/workspace/presentation/home/home_sizes.dart';
import 'package:appflowy/workspace/presentation/home/home_stack.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/theme_extension.dart';
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:flutter/material.dart';
@@ -53,7 +53,7 @@ class _FlowyTabState extends State {
child: FlowyIconButton(
onPressed: _closeTab,
icon: const FlowySvg(
- name: 'editor/close',
+ FlowySvgs.close_s,
size: Size.fromWidth(16),
),
),
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart
index d10ce90361..0964def3fa 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_appearance_view.dart
@@ -1,3 +1,4 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/plugins/document/presentation/more/cubit/document_appearance_cubit.dart';
import 'package:appflowy/workspace/application/appearance.dart';
@@ -6,7 +7,6 @@ import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:collection/collection.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/plugins/bloc/dynamic_plugin_bloc.dart';
import 'package:flowy_infra/plugins/bloc/dynamic_plugin_event.dart';
import 'package:flowy_infra/plugins/bloc/dynamic_plugin_state.dart';
@@ -86,7 +86,7 @@ class ThemeUploadOverlayButton extends StatelessWidget {
Widget build(BuildContext context) {
return FlowyIconButton(
width: 24,
- icon: const FlowySvg(name: 'folder'),
+ icon: const FlowySvg(FlowySvgs.folder_m),
iconColorOnHover: Theme.of(context).colorScheme.onPrimary,
onPressed: () => Dialogs.show(
context,
@@ -190,7 +190,7 @@ class ThemeSelectionPopover extends StatelessWidget {
child: FlowyButton(
text: FlowyText.medium(theme),
rightIcon: currentTheme == theme
- ? const FlowySvg(name: 'grid/checkmark')
+ ? const FlowySvg(FlowySvgs.check_s)
: null,
onTap: () {
if (currentTheme != theme) {
@@ -201,7 +201,7 @@ class ThemeSelectionPopover extends StatelessWidget {
),
if (!isBuiltin)
FlowyIconButton(
- icon: const FlowySvg(name: 'home/close'),
+ icon: const FlowySvg(FlowySvgs.close_m),
width: 20,
onPressed: () =>
bloc.add(DynamicPluginEvent.removePlugin(name: theme)),
@@ -254,7 +254,7 @@ class BrightnessSetting extends StatelessWidget {
child: FlowyButton(
text: FlowyText.medium(_themeModeLabelText(themeMode)),
rightIcon: currentThemeMode == themeMode
- ? const FlowySvg(name: 'grid/checkmark')
+ ? const FlowySvg(FlowySvgs.check_s)
: null,
onTap: () {
if (currentThemeMode != themeMode) {
@@ -376,7 +376,7 @@ class _ThemeFontFamilySettingState extends State {
),
rightIcon:
buttonFontFamily == parseFontFamilyName(widget.currentFontFamily)
- ? const FlowySvg(name: 'grid/checkmark')
+ ? const FlowySvg(FlowySvgs.check_s)
: null,
onTap: () {
if (parseFontFamilyName(widget.currentFontFamily) !=
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_export_file_widget.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_export_file_widget.dart
index b381305607..d97b8a5631 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_export_file_widget.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_export_file_widget.dart
@@ -1,5 +1,5 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/workspace/presentation/settings/widgets/settings_file_exporter_widget.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
@@ -65,8 +65,8 @@ class _OpenExportedDirectoryButton extends StatelessWidget {
return FlowyIconButton(
hoverColor: Theme.of(context).colorScheme.secondaryContainer,
tooltipText: LocaleKeys.settings_files_export.tr(),
- icon: svgWidget(
- 'common/open_folder',
+ icon: FlowySvg(
+ FlowySvgs.open_folder_lg,
color: Theme.of(context).iconTheme.color,
),
onPressed: onTap,
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_file_customize_location_view.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_file_customize_location_view.dart
index 5451cd5632..ff57d91172 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_file_customize_location_view.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_file_customize_location_view.dart
@@ -1,9 +1,9 @@
import 'dart:io';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/entry_point.dart';
import 'package:flowy_infra/file_picker/file_picker_service.dart';
import 'package:appflowy/workspace/application/settings/settings_location_cubit.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
import 'package:flowy_infra_ui/widget/buttons/secondary_button.dart';
import 'package:flutter/material.dart';
@@ -203,8 +203,8 @@ class _OpenStorageButton extends StatelessWidget {
return FlowyIconButton(
hoverColor: Theme.of(context).colorScheme.secondaryContainer,
tooltipText: LocaleKeys.settings_files_openCurrentDataFolder.tr(),
- icon: svgWidget(
- 'common/open_folder',
+ icon: FlowySvg(
+ FlowySvgs.open_folder_lg,
color: Theme.of(context).iconTheme.color,
),
onPressed: () async {
@@ -236,8 +236,8 @@ class _RecoverDefaultStorageButtonState
return FlowyIconButton(
hoverColor: Theme.of(context).colorScheme.secondaryContainer,
tooltipText: LocaleKeys.settings_files_recoverLocationTooltips.tr(),
- icon: svgWidget(
- 'common/recover',
+ icon: FlowySvg(
+ FlowySvgs.restore_s,
color: Theme.of(context).iconTheme.color,
),
onPressed: () async {
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_language_view.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_language_view.dart
index 78bf071d0b..b22861a36c 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_language_view.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_language_view.dart
@@ -1,8 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/application/appearance.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
import 'package:flowy_infra/language.dart';
@@ -99,9 +99,8 @@ class LanguageItem extends StatelessWidget {
text: FlowyText.medium(
languageFromLocale(locale),
),
- rightIcon: currentLocale == locale
- ? const FlowySvg(name: 'grid/checkmark')
- : null,
+ rightIcon:
+ currentLocale == locale ? const FlowySvg(FlowySvgs.check_s) : null,
onTap: () {
if (currentLocale != locale) {
context.read().setLocale(context, locale);
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_user_view.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_user_view.dart
index f103ff799f..0730d6f39e 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_user_view.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/settings_user_view.dart
@@ -2,6 +2,7 @@ import 'dart:convert';
import 'dart:async';
import 'package:appflowy/env/env.dart';
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/startup/startup.dart';
import 'package:appflowy/user/application/auth/auth_service.dart';
@@ -10,7 +11,6 @@ import 'package:appflowy/workspace/application/user/settings_user_bloc.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:appflowy_backend/protobuf/flowy-user/protobuf.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flutter/material.dart';
@@ -302,7 +302,7 @@ class _CurrentIcon extends StatelessWidget {
LocaleKeys.settings_user_selectAnIcon.tr(),
fontSize: FontSizes.s16,
),
- children: [
+ children: [
SizedBox(
height: 300,
width: 300,
@@ -315,9 +315,10 @@ class _CurrentIcon extends StatelessWidget {
},
child: Container(
margin: const EdgeInsets.fromLTRB(0, 5, 5, 5),
- child: svgWidget(
- 'emoji/$iconUrl',
+ child: FlowySvg(
+ FlowySvgData('emoji/$iconUrl'),
size: _iconSize,
+ overrideColor: false,
),
),
),
@@ -357,7 +358,11 @@ class IconGallery extends StatelessWidget {
padding: const EdgeInsets.all(20),
crossAxisCount: 5,
children: (snapshot.data ?? []).map((String iconUrl) {
- return IconOption(iconUrl, setIcon);
+ return IconOption(
+ FlowySvgData('emoji/$iconUrl'),
+ iconUrl,
+ setIcon,
+ );
}).toList(),
);
} else {
@@ -371,21 +376,20 @@ class IconGallery extends StatelessWidget {
}
class IconOption extends StatelessWidget {
+ final FlowySvgData emoji;
final String iconUrl;
final Function setIcon;
- IconOption(this.iconUrl, this.setIcon, {Key? key})
- : super(key: ValueKey(iconUrl));
+ IconOption(this.emoji, this.iconUrl, this.setIcon, {Key? key})
+ : super(key: ValueKey(emoji));
@override
Widget build(BuildContext context) {
return InkWell(
borderRadius: Corners.s6Border,
hoverColor: Theme.of(context).colorScheme.tertiaryContainer,
- onTap: () {
- setIcon(iconUrl);
- },
- child: svgWidget('emoji/$iconUrl', size: _iconSize),
+ onTap: () => setIcon(iconUrl),
+ child: FlowySvg(emoji, size: _iconSize, overrideColor: false),
);
}
}
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/theme_upload_failure_widget.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/theme_upload_failure_widget.dart
index 77f8fcdc68..68b8fe6425 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/theme_upload_failure_widget.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/theme_upload_failure_widget.dart
@@ -1,6 +1,6 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
import 'package:flutter/material.dart';
@@ -23,8 +23,8 @@ class ThemeUploadFailureWidget extends StatelessWidget {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- svgWidget(
- 'home/close',
+ FlowySvg(
+ FlowySvgs.close_m,
size: ThemeUploadWidget.iconSize,
color: Theme.of(context).colorScheme.onBackground,
),
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/upload_new_theme_widget.dart b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/upload_new_theme_widget.dart
index 8e05c66a8a..2d62c23830 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/upload_new_theme_widget.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/settings/widgets/theme_upload/upload_new_theme_widget.dart
@@ -1,8 +1,8 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/generated/locale_keys.g.dart';
import 'package:appflowy/workspace/presentation/settings/widgets/theme_upload/theme_upload_button.dart';
import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
import 'package:flowy_infra_ui/widget/error_page.dart';
import 'package:flutter/material.dart';
@@ -28,8 +28,8 @@ class UploadNewThemeWidget extends StatelessWidget {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
- svgWidget(
- 'folder',
+ FlowySvg(
+ FlowySvgs.folder_m,
size: ThemeUploadWidget.iconSize,
color: Theme.of(context).colorScheme.onBackground,
),
diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/widgets/float_bubble/question_bubble.dart b/frontend/appflowy_flutter/lib/workspace/presentation/widgets/float_bubble/question_bubble.dart
index 16dd0f14bc..199d236114 100644
--- a/frontend/appflowy_flutter/lib/workspace/presentation/widgets/float_bubble/question_bubble.dart
+++ b/frontend/appflowy_flutter/lib/workspace/presentation/widgets/float_bubble/question_bubble.dart
@@ -1,9 +1,9 @@
+import 'package:appflowy/generated/flowy_svgs.g.dart';
import 'package:appflowy/startup/tasks/rust_sdk.dart';
import 'package:appflowy/workspace/presentation/home/toast.dart';
import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
import 'package:appflowy_popover/appflowy_popover.dart';
import 'package:easy_localization/easy_localization.dart';
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/button.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
@@ -219,11 +219,11 @@ extension QuestionBubbleExtension on BubbleAction {
case BubbleAction.markdown:
return const FlowyText.regular('✨');
case BubbleAction.github:
- return Padding(
- padding: const EdgeInsets.all(3.0),
- child: svgWidget(
- 'login/github-light',
- size: const Size.square(12),
+ return const Padding(
+ padding: EdgeInsets.all(3.0),
+ child: FlowySvg(
+ FlowySvgs.archive_m,
+ size: Size.square(12),
),
);
}
diff --git a/frontend/appflowy_flutter/packages/flowy_infra/lib/image.dart b/frontend/appflowy_flutter/packages/flowy_infra/lib/image.dart
deleted file mode 100644
index 6e4dd11943..0000000000
--- a/frontend/appflowy_flutter/packages/flowy_infra/lib/image.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_svg/flutter_svg.dart';
-
-/// For icon that needs to change color when it is on hovered
-///
-/// Get the hover color from ThemeData
-class FlowySvg extends StatelessWidget {
- const FlowySvg({
- super.key,
- required this.name,
- this.size,
- this.color,
- });
-
- final String name;
- final Size? size;
- final Color? color;
-
- @override
- Widget build(BuildContext context) {
- return svgWidget(
- name,
- size: size,
- color: color ?? Theme.of(context).iconTheme.color,
- );
- }
-}
-
-Widget svgWidget(String name, {Size? size, Color? color}) {
- if (size != null) {
- return SizedBox.fromSize(
- size: size,
- child: SvgPicture.asset(
- 'assets/images/$name.svg',
- colorFilter:
- color != null ? ColorFilter.mode(color, BlendMode.srcIn) : null,
- ),
- );
- } else {
- return SvgPicture.asset(
- 'assets/images/$name.svg',
- colorFilter:
- color != null ? ColorFilter.mode(color, BlendMode.srcIn) : null,
- );
- }
-}
diff --git a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/color_picker.dart b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/color_picker.dart
index bc372e24d8..55354d7713 100644
--- a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/color_picker.dart
+++ b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/color_picker.dart
@@ -1,5 +1,5 @@
-import 'package:flowy_infra/image.dart';
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
+import 'package:flowy_svg/flowy_svg.dart';
import 'package:flutter/material.dart';
class FlowyColorOption {
@@ -54,7 +54,7 @@ class FlowyColorPicker extends StatelessWidget {
) {
Widget? checkmark;
if (selected == option.color) {
- checkmark = svgWidget("grid/checkmark");
+ checkmark = const FlowySvg(FlowySvgData("grid/checkmark"));
}
final colorIcon = SizedBox.square(
diff --git a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/icon_button.dart b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/icon_button.dart
index 26798b165d..8e3fe50c23 100644
--- a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/icon_button.dart
+++ b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/icon_button.dart
@@ -1,8 +1,9 @@
import 'dart:math';
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra/size.dart';
import 'package:flowy_infra_ui/style_widget/hover.dart';
+import 'package:flowy_svg/flowy_svg.dart';
import 'package:flutter/material.dart';
class FlowyIconButton extends StatelessWidget {
@@ -106,7 +107,7 @@ class FlowyDropdownButton extends StatelessWidget {
return FlowyIconButton(
width: 16,
onPressed: onPressed,
- icon: svgWidget("home/drop_down_show"),
+ icon: const FlowySvg(FlowySvgData("home/drop_down_show")),
);
}
}
diff --git a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/widget/error_page.dart b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/widget/error_page.dart
index 59fb068b3a..b7f19a0dc6 100644
--- a/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/widget/error_page.dart
+++ b/frontend/appflowy_flutter/packages/flowy_infra_ui/lib/widget/error_page.dart
@@ -1,5 +1,6 @@
-import 'package:flowy_infra/image.dart';
+
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
+import 'package:flowy_svg/flowy_svg.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:url_launcher/url_launcher.dart';
@@ -190,9 +191,9 @@ class GitHubRedirectButton extends StatelessWidget {
"AppFlowy",
),
useIntrinsicWidth: true,
- leftIcon: Padding(
- padding: const EdgeInsets.all(4.0),
- child: svgWidget('login/github-mark'),
+ leftIcon: const Padding(
+ padding: EdgeInsets.all(4.0),
+ child: FlowySvg(FlowySvgData('login/github-mark')),
),
onTap: () async {
if (await canLaunchUrl(_gitHubNewBugUri)) {
diff --git a/frontend/appflowy_flutter/packages/flowy_infra_ui/pubspec.yaml b/frontend/appflowy_flutter/packages/flowy_infra_ui/pubspec.yaml
index 69afe449df..f55e604091 100644
--- a/frontend/appflowy_flutter/packages/flowy_infra_ui/pubspec.yaml
+++ b/frontend/appflowy_flutter/packages/flowy_infra_ui/pubspec.yaml
@@ -31,6 +31,8 @@ dependencies:
path: ../appflowy_popover
flowy_infra:
path: ../flowy_infra
+ flowy_svg:
+ path: ../flowy_svg
dev_dependencies:
flutter_test:
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/bug_report.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..50a4c7b8b7
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,29 @@
+---
+name: Bug Report
+about: Create a report to help us improve
+title: "fix: "
+labels: bug
+---
+
+**Description**
+
+A clear and concise description of what the bug is.
+
+**Steps To Reproduce**
+
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected Behavior**
+
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+
+If applicable, add screenshots to help explain your problem.
+
+**Additional Context**
+
+Add any other context about the problem here.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/build.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/build.md
new file mode 100644
index 0000000000..0cf8e62cdb
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/build.md
@@ -0,0 +1,14 @@
+---
+name: Build System
+about: Changes that affect the build system or external dependencies
+title: "build: "
+labels: build
+---
+
+**Description**
+
+Describe what changes need to be done to the build system and why.
+
+**Requirements**
+
+- [ ] The build system is passing
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/chore.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/chore.md
new file mode 100644
index 0000000000..498ebfd821
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/chore.md
@@ -0,0 +1,14 @@
+---
+name: Chore
+about: Other changes that don't modify src or test files
+title: "chore: "
+labels: chore
+---
+
+**Description**
+
+Clearly describe what change is needed and why. If this changes code then please use another issue type.
+
+**Requirements**
+
+- [ ] No functional changes to the code
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/ci.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/ci.md
new file mode 100644
index 0000000000..fa2dd9e2d0
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/ci.md
@@ -0,0 +1,14 @@
+---
+name: Continuous Integration
+about: Changes to the CI configuration files and scripts
+title: "ci: "
+labels: ci
+---
+
+**Description**
+
+Describe what changes need to be done to the ci/cd system and why.
+
+**Requirements**
+
+- [ ] The ci system is passing
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/config.yml b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000..ec4bb386bc
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/documentation.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/documentation.md
new file mode 100644
index 0000000000..f494a4d98b
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/documentation.md
@@ -0,0 +1,14 @@
+---
+name: Documentation
+about: Improve the documentation so all collaborators have a common understanding
+title: "docs: "
+labels: documentation
+---
+
+**Description**
+
+Clearly describe what documentation you are looking to add or improve.
+
+**Requirements**
+
+- [ ] Requirements go here
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/feature_request.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..ddd2fcca97
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,18 @@
+---
+name: Feature Request
+about: A new feature to be added to the project
+title: "feat: "
+labels: feature
+---
+
+**Description**
+
+Clearly describe what you are looking to add. The more context the better.
+
+**Requirements**
+
+- [ ] Checklist of requirements to be fulfilled
+
+**Additional Context**
+
+Add any other context or screenshots about the feature request go here.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/performance.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/performance.md
new file mode 100644
index 0000000000..699b8d45f2
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/performance.md
@@ -0,0 +1,14 @@
+---
+name: Performance Update
+about: A code change that improves performance
+title: "perf: "
+labels: performance
+---
+
+**Description**
+
+Clearly describe what code needs to be changed and what the performance impact is going to be. Bonus point's if you can tie this directly to user experience.
+
+**Requirements**
+
+- [ ] There is no drop in test coverage.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/refactor.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/refactor.md
new file mode 100644
index 0000000000..1626c57047
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/refactor.md
@@ -0,0 +1,14 @@
+---
+name: Refactor
+about: A code change that neither fixes a bug nor adds a feature
+title: "refactor: "
+labels: refactor
+---
+
+**Description**
+
+Clearly describe what needs to be refactored and why. Please provide links to related issues (bugs or upcoming features) in order to help prioritize.
+
+**Requirements**
+
+- [ ] There is no drop in test coverage.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/revert.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/revert.md
new file mode 100644
index 0000000000..9d121dc56f
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/revert.md
@@ -0,0 +1,16 @@
+---
+name: Revert Commit
+about: Reverts a previous commit
+title: "revert: "
+labels: revert
+---
+
+**Description**
+
+Provide a link to a PR/Commit that you are looking to revert and why.
+
+**Requirements**
+
+- [ ] Change has been reverted
+- [ ] No change in test coverage has happened
+- [ ] A new ticket is created for any follow on work that needs to happen
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/style.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/style.md
new file mode 100644
index 0000000000..02244a7bdd
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/style.md
@@ -0,0 +1,14 @@
+---
+name: Style Changes
+about: Changes that do not affect the meaning of the code (white space, formatting, missing semi-colons, etc)
+title: "style: "
+labels: style
+---
+
+**Description**
+
+Clearly describe what you are looking to change and why.
+
+**Requirements**
+
+- [ ] There is no drop in test coverage.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/test.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/test.md
new file mode 100644
index 0000000000..431a7ea764
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/ISSUE_TEMPLATE/test.md
@@ -0,0 +1,14 @@
+---
+name: Test
+about: Adding missing tests or correcting existing tests
+title: "test: "
+labels: test
+---
+
+**Description**
+
+List out the tests that need to be added or changed. Please also include any information as to why this was not covered in the past.
+
+**Requirements**
+
+- [ ] There is no drop in test coverage.
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/PULL_REQUEST_TEMPLATE.md b/frontend/appflowy_flutter/packages/flowy_svg/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000..116993637f
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,27 @@
+
+
+## Status
+
+**READY/IN DEVELOPMENT/HOLD**
+
+## Description
+
+
+
+## Type of Change
+
+
+
+- [ ] ✨ New feature (non-breaking change which adds functionality)
+- [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
+- [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
+- [ ] 🧹 Code refactor
+- [ ] ✅ Build configuration change
+- [ ] 📝 Documentation
+- [ ] 🗑️ Chore
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/cspell.json b/frontend/appflowy_flutter/packages/flowy_svg/.github/cspell.json
new file mode 100644
index 0000000000..29ea2f8e4b
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/cspell.json
@@ -0,0 +1,21 @@
+{
+ "version": "0.2",
+ "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json",
+ "dictionaries": ["vgv_allowed", "vgv_forbidden"],
+ "dictionaryDefinitions": [
+ {
+ "name": "vgv_allowed",
+ "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/allowed.txt",
+ "description": "Allowed VGV Spellings"
+ },
+ {
+ "name": "vgv_forbidden",
+ "path": "https://raw.githubusercontent.com/verygoodopensource/very_good_dictionaries/main/forbidden.txt",
+ "description": "Forbidden VGV Spellings"
+ }
+ ],
+ "useGitignore": true,
+ "words": [
+ "flowy_svg"
+ ]
+}
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/dependabot.yaml b/frontend/appflowy_flutter/packages/flowy_svg/.github/dependabot.yaml
new file mode 100644
index 0000000000..63b035cdea
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/dependabot.yaml
@@ -0,0 +1,11 @@
+version: 2
+enable-beta-ecosystems: true
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ - package-ecosystem: "pub"
+ directory: "/"
+ schedule:
+ interval: "daily"
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.github/workflows/main.yaml b/frontend/appflowy_flutter/packages/flowy_svg/.github/workflows/main.yaml
new file mode 100644
index 0000000000..cf84703df4
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.github/workflows/main.yaml
@@ -0,0 +1,25 @@
+name: ci
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+on:
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ semantic_pull_request:
+ uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1
+
+ spell-check:
+ uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/spell_check.yml@v1
+ with:
+ includes: "**/*.md"
+ modified_files_only: false
+
+ build:
+ uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
+ with:
+ flutter_channel: stable
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/.gitignore b/frontend/appflowy_flutter/packages/flowy_svg/.gitignore
new file mode 100644
index 0000000000..8e19df2d9d
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/.gitignore
@@ -0,0 +1,43 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# VSCode related
+.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+pubspec.lock
+
+# Web related
+lib/generated_plugin_registrant.dart
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Test related
+coverage
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/analysis_options.yaml b/frontend/appflowy_flutter/packages/flowy_svg/analysis_options.yaml
new file mode 100644
index 0000000000..9749d57481
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/analysis_options.yaml
@@ -0,0 +1,3 @@
+include: package:very_good_analysis/analysis_options.5.0.0.yaml
+
+linter:
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/bin/flowy_svg.dart b/frontend/appflowy_flutter/packages/flowy_svg/bin/flowy_svg.dart
new file mode 100644
index 0000000000..cbf114156d
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/bin/flowy_svg.dart
@@ -0,0 +1,284 @@
+import 'dart:async';
+import 'dart:developer';
+import 'dart:io';
+
+import 'package:args/args.dart';
+import 'package:path/path.dart' as path;
+
+import 'options.dart';
+
+const languageKeywords = [
+ 'abstract',
+ 'else',
+ 'import',
+ 'show',
+ 'as',
+ 'enum',
+ 'static',
+ 'assert',
+ 'export',
+ 'interface',
+ 'super',
+ 'async',
+ 'extends',
+ 'is',
+ 'switch',
+ 'await',
+ 'extension',
+ 'late',
+ 'sync',
+ 'base',
+ 'external',
+ 'library',
+ 'this',
+ 'break',
+ 'factory',
+ 'mixin',
+ 'throw',
+ 'case',
+ 'false',
+ 'new',
+ 'true',
+ 'catch',
+ 'final',
+ 'variable',
+ 'null',
+ 'try',
+ 'class',
+ 'final',
+ 'class',
+ 'on',
+ 'typedef',
+ 'const',
+ 'finally',
+ 'operator',
+ 'var',
+ 'continue',
+ 'for',
+ 'part',
+ 'void',
+ 'covariant',
+ 'Function',
+ 'required',
+ 'when',
+ 'default',
+ 'get',
+ 'rethrow',
+ 'while',
+ 'deferred',
+ 'hide',
+ 'return',
+ 'with',
+ 'do',
+ 'if',
+ 'sealed',
+ 'yield',
+ 'dynamic',
+ 'implements',
+ 'set',
+];
+
+void main(List args) {
+ if (_isHelpCommand(args)) {
+ _printHelperDisplay();
+ } else {
+ generateSvgData(_generateOption(args));
+ }
+}
+
+bool _isHelpCommand(List args) {
+ return args.length == 1 && (args[0] == '--help' || args[0] == '-h');
+}
+
+void _printHelperDisplay() {
+ final parser = _generateArgParser(null);
+ log(parser.usage);
+}
+
+Options _generateOption(List args) {
+ final generateOptions = Options();
+ _generateArgParser(generateOptions).parse(args);
+ return generateOptions;
+}
+
+ArgParser _generateArgParser(Options? generateOptions) {
+ final parser = ArgParser()
+ ..addOption(
+ 'source-dir',
+ abbr: 'S',
+ defaultsTo: '/assets/flowy_icons',
+ callback: (String? x) => generateOptions!.sourceDir = x,
+ help: 'Folder containing localization files',
+ )
+ ..addOption(
+ 'output-dir',
+ abbr: 'O',
+ defaultsTo: '/lib/generated',
+ callback: (String? x) => generateOptions!.outputDir = x,
+ help: 'Output folder stores for the generated file',
+ )
+ ..addOption(
+ 'name',
+ abbr: 'N',
+ defaultsTo: 'flowy_svgs.g.dart',
+ callback: (String? x) => generateOptions!.outputFile = x,
+ help: 'The name of the output file that this tool will generate',
+ );
+
+ return parser;
+}
+
+Directory source(Options options) => Directory(
+ [
+ Directory.current.path,
+ Directory.fromUri(
+ Uri.file(
+ options.sourceDir!,
+ windows: Platform.isWindows,
+ ),
+ ).path,
+ ].join(),
+ );
+
+File output(Options options) => File(
+ [
+ Directory.current.path,
+ Directory.fromUri(
+ Uri.file(options.outputDir!, windows: Platform.isWindows),
+ ).path,
+ Platform.pathSeparator,
+ File.fromUri(
+ Uri.file(
+ options.outputFile!,
+ windows: Platform.isWindows,
+ ),
+ ).path,
+ ].join(),
+ );
+
+/// generates the svg data
+Future generateSvgData(Options options) async {
+ // the source directory that this is targeting
+ final src = source(options);
+
+ // the output directory that this is targeting
+ final out = output(options);
+
+ var files = await dirContents(src);
+ files = files.where((f) => f.path.contains('.svg')).toList();
+
+ await generate(files, out, options);
+}
+
+/// List the contents of the directory
+Future> dirContents(Directory dir) {
+ final files = [];
+ final completer = Completer>();
+
+ dir.list(recursive: true).listen(
+ files.add,
+ onDone: () => completer.complete(files),
+ );
+ return completer.future;
+}
+
+/// Generate the abstract class for the FlowySvg data.
+Future generate(
+ List files,
+ File output,
+ Options options,
+) async {
+ final generated = File(output.path);
+
+ // create the output file if it doesn't exist
+ if (!generated.existsSync()) {
+ generated.createSync(recursive: true);
+ }
+
+ // content of the generated file
+ final builder = StringBuffer()..writeln(prelude);
+ files.whereType().forEach(
+ (element) => builder.writeln(lineFor(element, options)),
+ );
+ builder.writeln(postlude);
+
+ generated.writeAsStringSync(builder.toString());
+}
+
+String lineFor(File file, Options options) {
+ final name = varNameFor(file, options);
+ return " static const $name = FlowySvgData('${pathFor(file)}');";
+}
+
+String pathFor(File file) {
+ final relative = path.relative(file.path, from: Directory.current.path);
+ final uri = Uri.file(relative);
+ return uri.toFilePath(windows: false);
+}
+
+String varNameFor(File file, Options options) {
+ final from = source(options).path;
+
+ final relative = Uri.file(path.relative(file.path, from: from));
+
+ final parts = relative.pathSegments;
+
+ final cleaned = parts.map(clean).toList();
+
+ var simplified = cleaned.reversed
+ // join all cleaned path segments with an underscore
+ .join('_')
+ // there are some cases where the segment contains a dart reserved keyword
+ // in this case, the path will be suffixed with an underscore which means
+ // there will be a double underscore, so we have to replace the double
+ // underscore with one underscore
+ .replaceAll(RegExp('_+'), '_');
+
+ // rename icon based on relative path folder name (16x, 24x, etc.)
+ for (final key in sizeMap.keys) {
+ simplified = simplified.replaceAll(key, sizeMap[key]!);
+ }
+
+ return simplified;
+}
+
+const sizeMap = {r'$16x': 's', r'$24x': 'm', r'$32x': 'lg', r'$40x': 'xl'};
+
+/// cleans the path segment before rejoining the path into a variable name
+String clean(String segment) {
+ final cleaned = segment
+ // replace all dashes with underscores (dash is invalid in
+ // a variable name)
+ .replaceAll('-', '_')
+ // replace all spaces with an underscore
+ .replaceAll(RegExp(r'\s+'), '_')
+ // replace all file extensions with an empty string
+ .replaceAll(RegExp(r'\.[^.]*$'), '')
+ // convert everything to lower case
+ .toLowerCase();
+
+ if (languageKeywords.contains(cleaned)) {
+ return '${cleaned}_';
+ } else if (cleaned.startsWith(RegExp('[0-9]'))) {
+ return '\$$cleaned';
+ }
+ return cleaned;
+}
+
+/// The prelude for the generated file
+const prelude = '''
+// DO NOT EDIT. This code is generated by the flowy_svg script
+
+// import the widget with from this package
+import 'package:flowy_svg/flowy_svg.dart';
+
+// export as convenience to the programmer
+export 'package:flowy_svg/flowy_svg.dart';
+
+/// A class to easily list all the svgs in the app
+class FlowySvgs {''';
+
+/// The postlude for the generated file
+const postlude = '''
+}
+''';
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/bin/options.dart b/frontend/appflowy_flutter/packages/flowy_svg/bin/options.dart
new file mode 100644
index 0000000000..d3476975d4
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/bin/options.dart
@@ -0,0 +1,21 @@
+/// The options for the command line tool
+class Options {
+ /// The source directory which the tool will use to generate the output file
+ String? sourceDir;
+
+ /// The output directory which the tool will use to output the file(s)
+ String? outputDir;
+
+ /// The name of the file that will be generated
+ String? outputFile;
+
+ @override
+ String toString() {
+ return '''
+Options:
+ sourceDir: $sourceDir
+ outputDir: $outputDir
+ name: $outputFile
+''';
+ }
+}
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/coverage_badge.svg b/frontend/appflowy_flutter/packages/flowy_svg/coverage_badge.svg
new file mode 100644
index 0000000000..499e98ce2f
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/coverage_badge.svg
@@ -0,0 +1,20 @@
+
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/lib/flowy_svg.dart b/frontend/appflowy_flutter/packages/flowy_svg/lib/flowy_svg.dart
new file mode 100644
index 0000000000..8e32c3e97c
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/lib/flowy_svg.dart
@@ -0,0 +1,4 @@
+/// A Flutter package to generate Dart code for SVG files.
+library flowy_svg;
+
+export 'src/flowy_svg.dart';
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/lib/src/flowy_svg.dart b/frontend/appflowy_flutter/packages/flowy_svg/lib/src/flowy_svg.dart
new file mode 100644
index 0000000000..39efc06a2e
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/lib/src/flowy_svg.dart
@@ -0,0 +1,83 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+
+/// The class for FlowySvgData that the code generator will implement
+class FlowySvgData {
+ /// The svg data
+ const FlowySvgData(
+ this.path,
+ );
+
+ /// The path to the svg data in appflowy assets/images
+ final String path;
+}
+
+/// For icon that needs to change color when it is on hovered
+///
+/// Get the hover color from ThemeData
+class FlowySvg extends StatelessWidget {
+ /// Construct a FlowySvg Widget
+ const FlowySvg(
+ this.svg, {
+ super.key,
+ this.size,
+ this.color,
+ this.overrideColor = true,
+ });
+
+ /// The data for the flowy svg. Will be generated by the generator in this
+ /// package within bin/flowy_svg.dart
+ final FlowySvgData svg;
+
+ /// The size of the svg
+ final Size? size;
+
+ /// The color of the svg
+ final Color? color;
+
+ /// If true a color filter is applied to the SVG, otherwise not applied.
+ ///
+ /// Defaults to true
+ ///
+ final bool overrideColor;
+
+ @override
+ Widget build(BuildContext context) {
+ final iconColor = color ?? Theme.of(context).iconTheme.color;
+
+ final child = SvgPicture.asset(
+ _normalized(),
+ colorFilter: iconColor != null && overrideColor
+ ? ColorFilter.mode(iconColor, BlendMode.srcIn)
+ : null,
+ );
+
+ if (size != null) {
+ return SizedBox.fromSize(
+ size: size,
+ child: child,
+ );
+ }
+
+ return child;
+ }
+
+ /// If the SVG's path does not start with `assets/`, it is
+ /// normalized and directed to `assets/images/`
+ ///
+ /// If the SVG does not end with `.svg`, then we append the file extension
+ ///
+ String _normalized() {
+ var path = svg.path;
+
+ if (!path.toLowerCase().startsWith('assets/')) {
+ path = 'assets/images/$path';
+ }
+
+ if (!path.toLowerCase().endsWith('.svg')) {
+ path = '$path.svg';
+ }
+
+ return path;
+ }
+}
diff --git a/frontend/appflowy_flutter/packages/flowy_svg/pubspec.yaml b/frontend/appflowy_flutter/packages/flowy_svg/pubspec.yaml
new file mode 100644
index 0000000000..5f012d5014
--- /dev/null
+++ b/frontend/appflowy_flutter/packages/flowy_svg/pubspec.yaml
@@ -0,0 +1,18 @@
+name: flowy_svg
+description: AppFlowy Svgs
+version: 0.1.0+1
+publish_to: none
+
+environment:
+ sdk: ">=3.0.0 <4.0.0"
+ flutter: 3.10.0
+
+dependencies:
+ args: ^2.4.2
+ flutter:
+ sdk: flutter
+ flutter_svg: ^2.0.7
+ path: ^1.8.3
+
+dev_dependencies:
+ very_good_analysis: ^5.0.0
diff --git a/frontend/appflowy_flutter/pubspec.lock b/frontend/appflowy_flutter/pubspec.lock
index 88f883f923..933b28a8f5 100644
--- a/frontend/appflowy_flutter/pubspec.lock
+++ b/frontend/appflowy_flutter/pubspec.lock
@@ -77,10 +77,10 @@ packages:
dependency: transitive
description:
name: args
- sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a
+ sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
url: "https://pub.dev"
source: hosted
- version: "2.4.1"
+ version: "2.4.2"
async:
dependency: transitive
description:
@@ -461,6 +461,13 @@ packages:
relative: true
source: path
version: "0.0.1"
+ flowy_svg:
+ dependency: "direct main"
+ description:
+ path: "packages/flowy_svg"
+ relative: true
+ source: path
+ version: "0.1.0+1"
flutter:
dependency: "direct main"
description: flutter
@@ -521,10 +528,10 @@ packages:
dependency: "direct main"
description:
name: flutter_svg
- sha256: "6ff8c902c8056af9736de2689f63f81c42e2d642b9f4c79dbf8790ae48b63012"
+ sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338"
url: "https://pub.dev"
source: hosted
- version: "2.0.6"
+ version: "2.0.7"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -701,10 +708,10 @@ packages:
dependency: transitive
description:
name: intl_utils
- sha256: a509a2ada4d12c4dc70f9ca35c2fddf75f8b402409ac1a9e1b3dd8065681986b
+ sha256: "0d38f605f292321c0729f8c0632b845be77aa12d272b7bc5e3022bb670a7309e"
url: "https://pub.dev"
source: hosted
- version: "2.8.3"
+ version: "2.8.4"
io:
dependency: transitive
description:
@@ -805,10 +812,10 @@ packages:
dependency: transitive
description:
name: markdown
- sha256: "8e332924094383133cee218b676871f42db2514f1f6ac617b6cf6152a7faab8e"
+ sha256: acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd
url: "https://pub.dev"
source: hosted
- version: "7.1.0"
+ version: "7.1.1"
matcher:
dependency: transitive
description:
@@ -1611,26 +1618,26 @@ packages:
dependency: transitive
description:
name: vector_graphics
- sha256: b96f10cbdfcbd03a65758633a43e7d04574438f059b1043104b5d61b23d38a4f
+ sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_graphics_codec:
dependency: transitive
description:
name: vector_graphics_codec
- sha256: "57a8e6e24662a3bdfe3b3d61257db91768700c0b8f844e235877b56480f31c69"
+ sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_graphics_compiler:
dependency: transitive
description:
name: vector_graphics_compiler
- sha256: "7430f5d834d0db4560d7b19863362cd892f1e52b43838553a3c5cdfc9ab28e5b"
+ sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e"
url: "https://pub.dev"
source: hosted
- version: "1.1.6"
+ version: "1.1.7"
vector_math:
dependency: transitive
description:
diff --git a/frontend/appflowy_flutter/pubspec.yaml b/frontend/appflowy_flutter/pubspec.yaml
index 12b9cda8e5..fec9a75a2b 100644
--- a/frontend/appflowy_flutter/pubspec.yaml
+++ b/frontend/appflowy_flutter/pubspec.yaml
@@ -37,6 +37,8 @@ dependencies:
path: packages/flowy_infra_ui
flowy_infra:
path: packages/flowy_infra
+ flowy_svg:
+ path: packages/flowy_svg
appflowy_board:
# path: packages/appflowy_board
git:
@@ -84,6 +86,7 @@ dependencies:
linked_scroll_controller: ^0.2.0
hotkey_manager: ^0.1.7
fixnum: ^1.1.0
+ flutter_svg: ^2.0.7
protobuf: "2.0.0"
charcode: ^1.3.1
collection: ^1.17.1
@@ -97,7 +100,6 @@ dependencies:
path: ^1.8.3
mocktail: ^0.3.0
archive: ^3.3.7
- flutter_svg: ^2.0.6
nanoid: ^1.0.0
supabase_flutter: ^1.10.4
envied: ^0.3.0+3
@@ -175,15 +177,13 @@ flutter:
# To add assets to your application, add an assets section, like this:
assets:
- assets/images/
- - assets/images/home/
- - assets/images/editor/align/
- - assets/images/editor/
- - assets/images/grid/
+ - assets/flowy_icons/
+ - assets/flowy_icons/16x/
+ - assets/flowy_icons/24x/
+ - assets/flowy_icons/32x/
+ - assets/flowy_icons/40x/
- assets/images/emoji/
- - assets/images/grid/field/
- - assets/images/common/
- assets/images/login/
- - assets/images/grid/setting/
- assets/translations/
# The following assets will be excluded in release.
@@ -192,4 +192,4 @@ flutter:
- assets/template/
- assets/test/workspaces/markdowns/
- assets/test/workspaces/database/
- # END: EXCLUDE_IN_RELEASE
\ No newline at end of file
+ # END: EXCLUDE_IN_RELEASE
diff --git a/frontend/appflowy_flutter/assets/images/editor/add.svg b/frontend/resources/flowy_icons/16x/add.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/add.svg
rename to frontend/resources/flowy_icons/16x/add.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/align/center.svg b/frontend/resources/flowy_icons/16x/align_center.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/align/center.svg
rename to frontend/resources/flowy_icons/16x/align_center.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/align/left.svg b/frontend/resources/flowy_icons/16x/align_left.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/align/left.svg
rename to frontend/resources/flowy_icons/16x/align_left.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/align/right.svg b/frontend/resources/flowy_icons/16x/align_right.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/align/right.svg
rename to frontend/resources/flowy_icons/16x/align_right.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Arrow/left.svg b/frontend/resources/flowy_icons/16x/arrow_left.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Arrow/left.svg
rename to frontend/resources/flowy_icons/16x/arrow_left.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Arrow/right.svg b/frontend/resources/flowy_icons/16x/arrow_right.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Arrow/right.svg
rename to frontend/resources/flowy_icons/16x/arrow_right.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/attach.svg b/frontend/resources/flowy_icons/16x/attach.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/attach.svg
rename to frontend/resources/flowy_icons/16x/attach.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/board.svg b/frontend/resources/flowy_icons/16x/board.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/board.svg
rename to frontend/resources/flowy_icons/16x/board.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/bold.svg b/frontend/resources/flowy_icons/16x/bold.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/bold.svg
rename to frontend/resources/flowy_icons/16x/bold.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/check.svg b/frontend/resources/flowy_icons/16x/check.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/check.svg
rename to frontend/resources/flowy_icons/16x/check.svg
diff --git a/frontend/resources/flowy_icons/16x/check_filled.svg b/frontend/resources/flowy_icons/16x/check_filled.svg
new file mode 100644
index 0000000000..f1c4e67731
--- /dev/null
+++ b/frontend/resources/flowy_icons/16x/check_filled.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/editor/checkbox.svg b/frontend/resources/flowy_icons/16x/checkbox.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/checkbox.svg
rename to frontend/resources/flowy_icons/16x/checkbox.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/checklist.svg b/frontend/resources/flowy_icons/16x/checklist.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/checklist.svg
rename to frontend/resources/flowy_icons/16x/checklist.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/clear.svg b/frontend/resources/flowy_icons/16x/clear.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/clear.svg
rename to frontend/resources/flowy_icons/16x/clear.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/clock.svg b/frontend/resources/flowy_icons/16x/clock_alarm.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/clock.svg
rename to frontend/resources/flowy_icons/16x/clock_alarm.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/close.svg b/frontend/resources/flowy_icons/16x/close.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/close.svg
rename to frontend/resources/flowy_icons/16x/close.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Color/default.svg b/frontend/resources/flowy_icons/16x/color_default.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Color/default.svg
rename to frontend/resources/flowy_icons/16x/color_default.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Color/select.svg b/frontend/resources/flowy_icons/16x/color_select.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Color/select.svg
rename to frontend/resources/flowy_icons/16x/color_select.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/comment.svg b/frontend/resources/flowy_icons/16x/comment.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/comment.svg
rename to frontend/resources/flowy_icons/16x/comment.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/comments.svg b/frontend/resources/flowy_icons/16x/comments.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/comments.svg
rename to frontend/resources/flowy_icons/16x/comments.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/copy.svg b/frontend/resources/flowy_icons/16x/copy.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/copy.svg
rename to frontend/resources/flowy_icons/16x/copy.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/dashboard.svg b/frontend/resources/flowy_icons/16x/dashboard.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/dashboard.svg
rename to frontend/resources/flowy_icons/16x/dashboard.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/date.svg b/frontend/resources/flowy_icons/16x/date.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/date.svg
rename to frontend/resources/flowy_icons/16x/date.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/delete.svg b/frontend/resources/flowy_icons/16x/delete.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/delete.svg
rename to frontend/resources/flowy_icons/16x/delete.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/details.svg b/frontend/resources/flowy_icons/16x/details.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/details.svg
rename to frontend/resources/flowy_icons/16x/details.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/documents.svg b/frontend/resources/flowy_icons/16x/documents.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/documents.svg
rename to frontend/resources/flowy_icons/16x/documents.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Status/done.svg b/frontend/resources/flowy_icons/16x/done.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Status/done.svg
rename to frontend/resources/flowy_icons/16x/done.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/drag_element.svg b/frontend/resources/flowy_icons/16x/drag_element.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/drag_element.svg
rename to frontend/resources/flowy_icons/16x/drag_element.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/drop_menu/hide.svg b/frontend/resources/flowy_icons/16x/drop_menu_hide.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/drop_menu/hide.svg
rename to frontend/resources/flowy_icons/16x/drop_menu_hide.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/drop_menu/show.svg b/frontend/resources/flowy_icons/16x/drop_menu_show.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/drop_menu/show.svg
rename to frontend/resources/flowy_icons/16x/drop_menu_show.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/edit.svg b/frontend/resources/flowy_icons/16x/edit.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/edit.svg
rename to frontend/resources/flowy_icons/16x/edit.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/inline_block.svg b/frontend/resources/flowy_icons/16x/embed_link.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/inline_block.svg
rename to frontend/resources/flowy_icons/16x/embed_link.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/euro.svg b/frontend/resources/flowy_icons/16x/euro.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/euro.svg
rename to frontend/resources/flowy_icons/16x/euro.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/favorite.svg b/frontend/resources/flowy_icons/16x/favorite.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/favorite.svg
rename to frontend/resources/flowy_icons/16x/favorite.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/filter.svg b/frontend/resources/flowy_icons/16x/filter.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/setting/filter.svg
rename to frontend/resources/flowy_icons/16x/filter.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/full_view.svg b/frontend/resources/flowy_icons/16x/full_view.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/full_view.svg
rename to frontend/resources/flowy_icons/16x/full_view.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/grid.svg b/frontend/resources/flowy_icons/16x/grid.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/grid.svg
rename to frontend/resources/flowy_icons/16x/grid.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/group.svg b/frontend/resources/flowy_icons/16x/group.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/group.svg
rename to frontend/resources/flowy_icons/16x/group.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/H1.svg b/frontend/resources/flowy_icons/16x/h1.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/H1.svg
rename to frontend/resources/flowy_icons/16x/h1.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/H2.svg b/frontend/resources/flowy_icons/16x/h2.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/H2.svg
rename to frontend/resources/flowy_icons/16x/h2.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/H3.svg b/frontend/resources/flowy_icons/16x/h3.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/H3.svg
rename to frontend/resources/flowy_icons/16x/h3.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/hide.svg b/frontend/resources/flowy_icons/16x/hide.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/hide.svg
rename to frontend/resources/flowy_icons/16x/hide.svg
diff --git a/frontend/resources/flowy_icons/16x/hide_menu.svg b/frontend/resources/flowy_icons/16x/hide_menu.svg
new file mode 100644
index 0000000000..ce88af8ea7
--- /dev/null
+++ b/frontend/resources/flowy_icons/16x/hide_menu.svg
@@ -0,0 +1,6 @@
+
diff --git a/frontend/appflowy_flutter/assets/images/editor/highlight.svg b/frontend/resources/flowy_icons/16x/highlight.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/highlight.svg
rename to frontend/resources/flowy_icons/16x/highlight.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/image.svg b/frontend/resources/flowy_icons/16x/image.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/image.svg
rename to frontend/resources/flowy_icons/16x/image.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/import.svg b/frontend/resources/flowy_icons/16x/import.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/import.svg
rename to frontend/resources/flowy_icons/16x/import.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Status/inprogress.svg b/frontend/resources/flowy_icons/16x/in_progress.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Status/inprogress.svg
rename to frontend/resources/flowy_icons/16x/in_progress.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Information.svg b/frontend/resources/flowy_icons/16x/information.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Information.svg
rename to frontend/resources/flowy_icons/16x/information.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/italic.svg b/frontend/resources/flowy_icons/16x/italic.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/italic.svg
rename to frontend/resources/flowy_icons/16x/italic.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/left.svg b/frontend/resources/flowy_icons/16x/left.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/left.svg
rename to frontend/resources/flowy_icons/16x/left.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/level.svg b/frontend/resources/flowy_icons/16x/level.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/level.svg
rename to frontend/resources/flowy_icons/16x/level.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Lira.svg b/frontend/resources/flowy_icons/16x/lira.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Lira.svg
rename to frontend/resources/flowy_icons/16x/lira.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/list_dropdown.svg b/frontend/resources/flowy_icons/16x/list_dropdown.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/list_dropdown.svg
rename to frontend/resources/flowy_icons/16x/list_dropdown.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/logout.svg b/frontend/resources/flowy_icons/16x/logout.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/logout.svg
rename to frontend/resources/flowy_icons/16x/logout.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/persoin_1.svg b/frontend/resources/flowy_icons/16x/mention.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/persoin_1.svg
rename to frontend/resources/flowy_icons/16x/mention.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/messages.svg b/frontend/resources/flowy_icons/16x/messages.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/messages.svg
rename to frontend/resources/flowy_icons/16x/messages.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/more.svg b/frontend/resources/flowy_icons/16x/more.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/more.svg
rename to frontend/resources/flowy_icons/16x/more.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/bullet_list.svg b/frontend/resources/flowy_icons/16x/multiselect.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/bullet_list.svg
rename to frontend/resources/flowy_icons/16x/multiselect.svg
diff --git a/frontend/resources/flowy_icons/16x/new_app.svg b/frontend/resources/flowy_icons/16x/new_app.svg
new file mode 100644
index 0000000000..7952c685a5
--- /dev/null
+++ b/frontend/resources/flowy_icons/16x/new_app.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/editor/numbers.svg b/frontend/resources/flowy_icons/16x/numbers.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/numbers.svg
rename to frontend/resources/flowy_icons/16x/numbers.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/page.svg b/frontend/resources/flowy_icons/16x/page.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/page.svg
rename to frontend/resources/flowy_icons/16x/page.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/percent.svg b/frontend/resources/flowy_icons/16x/percent.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/percent.svg
rename to frontend/resources/flowy_icons/16x/percent.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/person.svg b/frontend/resources/flowy_icons/16x/person.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/person.svg
rename to frontend/resources/flowy_icons/16x/person.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/pound.svg b/frontend/resources/flowy_icons/16x/pound.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/pound.svg
rename to frontend/resources/flowy_icons/16x/pound.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/properties.svg b/frontend/resources/flowy_icons/16x/properties.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/setting/properties.svg
rename to frontend/resources/flowy_icons/16x/properties.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/quote.svg b/frontend/resources/flowy_icons/16x/quote.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/quote.svg
rename to frontend/resources/flowy_icons/16x/quote.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Real.svg b/frontend/resources/flowy_icons/16x/real.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Real.svg
rename to frontend/resources/flowy_icons/16x/real.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Relation.svg b/frontend/resources/flowy_icons/16x/relation.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Relation.svg
rename to frontend/resources/flowy_icons/16x/relation.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Reload.svg b/frontend/resources/flowy_icons/16x/reload.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Reload.svg
rename to frontend/resources/flowy_icons/16x/reload.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/report.svg b/frontend/resources/flowy_icons/16x/report.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/report.svg
rename to frontend/resources/flowy_icons/16x/report.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/resize.svg b/frontend/resources/flowy_icons/16x/resize.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/resize.svg
rename to frontend/resources/flowy_icons/16x/resize.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/restore.svg b/frontend/resources/flowy_icons/16x/restore.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/restore.svg
rename to frontend/resources/flowy_icons/16x/restore.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/right.svg b/frontend/resources/flowy_icons/16x/right.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/right.svg
rename to frontend/resources/flowy_icons/16x/right.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Ruble.svg b/frontend/resources/flowy_icons/16x/ruble.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Ruble.svg
rename to frontend/resources/flowy_icons/16x/ruble.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Rupee.svg b/frontend/resources/flowy_icons/16x/rupee.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Rupee.svg
rename to frontend/resources/flowy_icons/16x/rupee.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Rupiah.svg b/frontend/resources/flowy_icons/16x/rupiah.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Rupiah.svg
rename to frontend/resources/flowy_icons/16x/rupiah.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/search.svg b/frontend/resources/flowy_icons/16x/search.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/search.svg
rename to frontend/resources/flowy_icons/16x/search.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/send.svg b/frontend/resources/flowy_icons/16x/send.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/send.svg
rename to frontend/resources/flowy_icons/16x/send.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/settings.svg b/frontend/resources/flowy_icons/16x/settings.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/settings.svg
rename to frontend/resources/flowy_icons/16x/settings.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/share.svg b/frontend/resources/flowy_icons/16x/share.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/share.svg
rename to frontend/resources/flowy_icons/16x/share.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/show_menu.svg b/frontend/resources/flowy_icons/16x/show_menu.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/show_menu.svg
rename to frontend/resources/flowy_icons/16x/show_menu.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/slash.svg b/frontend/resources/flowy_icons/16x/slash.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/slash.svg
rename to frontend/resources/flowy_icons/16x/slash.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/ascending.svg b/frontend/resources/flowy_icons/16x/sort_ascending.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/setting/ascending.svg
rename to frontend/resources/flowy_icons/16x/sort_ascending.svg
diff --git a/frontend/appflowy_flutter/assets/images/grid/setting/descending.svg b/frontend/resources/flowy_icons/16x/sort_descending.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/grid/setting/descending.svg
rename to frontend/resources/flowy_icons/16x/sort_descending.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Sort/High.svg b/frontend/resources/flowy_icons/16x/sort_high.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Sort/High.svg
rename to frontend/resources/flowy_icons/16x/sort_high.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Sort/Low.svg b/frontend/resources/flowy_icons/16x/sort_low.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Sort/Low.svg
rename to frontend/resources/flowy_icons/16x/sort_low.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/status.svg b/frontend/resources/flowy_icons/16x/status.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/status.svg
rename to frontend/resources/flowy_icons/16x/status.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/strikethrough.svg b/frontend/resources/flowy_icons/16x/strikethrough.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/strikethrough.svg
rename to frontend/resources/flowy_icons/16x/strikethrough.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/tag.svg b/frontend/resources/flowy_icons/16x/tag.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/tag.svg
rename to frontend/resources/flowy_icons/16x/tag.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/tag_block.svg b/frontend/resources/flowy_icons/16x/tag_block.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/tag_block.svg
rename to frontend/resources/flowy_icons/16x/tag_block.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/template.svg b/frontend/resources/flowy_icons/16x/template.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/template.svg
rename to frontend/resources/flowy_icons/16x/template.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/text.svg b/frontend/resources/flowy_icons/16x/text.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/text.svg
rename to frontend/resources/flowy_icons/16x/text.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/time.svg b/frontend/resources/flowy_icons/16x/time.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/time.svg
rename to frontend/resources/flowy_icons/16x/time.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/timer_finish.svg b/frontend/resources/flowy_icons/16x/timer_finish.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/timer_finish.svg
rename to frontend/resources/flowy_icons/16x/timer_finish.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/timer_start.svg b/frontend/resources/flowy_icons/16x/timer_start.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/timer_start.svg
rename to frontend/resources/flowy_icons/16x/timer_start.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Status/todo.svg b/frontend/resources/flowy_icons/16x/to_do.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Status/todo.svg
rename to frontend/resources/flowy_icons/16x/to_do.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/toggle_list.svg b/frontend/resources/flowy_icons/16x/toggle_list.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/toggle_list.svg
rename to frontend/resources/flowy_icons/16x/toggle_list.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/editor_uncheck.svg b/frontend/resources/flowy_icons/16x/uncheck.svg
similarity index 53%
rename from frontend/appflowy_flutter/assets/images/editor/editor_uncheck.svg
rename to frontend/resources/flowy_icons/16x/uncheck.svg
index 6c487795c6..7ff8d222d7 100644
--- a/frontend/appflowy_flutter/assets/images/editor/editor_uncheck.svg
+++ b/frontend/resources/flowy_icons/16x/uncheck.svg
@@ -1,3 +1,3 @@
+
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/editor/underline.svg b/frontend/resources/flowy_icons/16x/underline.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/underline.svg
rename to frontend/resources/flowy_icons/16x/underline.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Favorite/default.svg b/frontend/resources/flowy_icons/16x/unfavorite.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Favorite/default.svg
rename to frontend/resources/flowy_icons/16x/unfavorite.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/USD.svg b/frontend/resources/flowy_icons/16x/usd.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/USD.svg
rename to frontend/resources/flowy_icons/16x/usd.svg
diff --git a/frontend/appflowy_flutter/assets/images/editor/Icons 16/Won.svg b/frontend/resources/flowy_icons/16x/won.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/editor/Icons 16/Won.svg
rename to frontend/resources/flowy_icons/16x/won.svg
diff --git a/frontend/resources/flowy_icons/16x/yen.svg b/frontend/resources/flowy_icons/16x/yen.svg
new file mode 100644
index 0000000000..b7cf1d361d
--- /dev/null
+++ b/frontend/resources/flowy_icons/16x/yen.svg
@@ -0,0 +1,3 @@
+
diff --git a/frontend/appflowy_flutter/assets/images/home/add.svg b/frontend/resources/flowy_icons/24x/add.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/add.svg
rename to frontend/resources/flowy_icons/24x/add.svg
diff --git a/frontend/resources/flowy_icons/24x/archive.svg b/frontend/resources/flowy_icons/24x/archive.svg
new file mode 100644
index 0000000000..77c7085cda
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/archive.svg
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/home/arrow_left.svg b/frontend/resources/flowy_icons/24x/arrow_left.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/arrow_left.svg
rename to frontend/resources/flowy_icons/24x/arrow_left.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/arrow_right.svg b/frontend/resources/flowy_icons/24x/arrow_right.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/arrow_right.svg
rename to frontend/resources/flowy_icons/24x/arrow_right.svg
diff --git a/frontend/resources/flowy_icons/24x/calendar_layout.svg b/frontend/resources/flowy_icons/24x/calendar_layout.svg
new file mode 100644
index 0000000000..52e06e9111
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/calendar_layout.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/frontend/resources/flowy_icons/24x/close.svg b/frontend/resources/flowy_icons/24x/close.svg
new file mode 100644
index 0000000000..f0733a398b
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/close.svg
@@ -0,0 +1,4 @@
+
diff --git a/frontend/appflowy_flutter/assets/images/editor/color_formatter.svg b/frontend/resources/flowy_icons/24x/color_format.svg
similarity index 65%
rename from frontend/appflowy_flutter/assets/images/editor/color_formatter.svg
rename to frontend/resources/flowy_icons/24x/color_format.svg
index 35d6d2ed67..796287a64d 100644
--- a/frontend/appflowy_flutter/assets/images/editor/color_formatter.svg
+++ b/frontend/resources/flowy_icons/24x/color_format.svg
@@ -1,13 +1,10 @@
-
-
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/home/dashboard.svg b/frontend/resources/flowy_icons/24x/dashboard.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/dashboard.svg
rename to frontend/resources/flowy_icons/24x/dashboard.svg
diff --git a/frontend/resources/flowy_icons/24x/database_layout.svg b/frontend/resources/flowy_icons/24x/database_layout.svg
new file mode 100644
index 0000000000..240a5065d8
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/database_layout.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/home/details.svg b/frontend/resources/flowy_icons/24x/details.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/details.svg
rename to frontend/resources/flowy_icons/24x/details.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/drop_down_hide.svg b/frontend/resources/flowy_icons/24x/drop_menu_hide.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/drop_down_hide.svg
rename to frontend/resources/flowy_icons/24x/drop_menu_hide.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/drop_down_show.svg b/frontend/resources/flowy_icons/24x/drop_menu_show.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/drop_down_show.svg
rename to frontend/resources/flowy_icons/24x/drop_menu_show.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/eathernet.svg b/frontend/resources/flowy_icons/24x/ethernet.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/eathernet.svg
rename to frontend/resources/flowy_icons/24x/ethernet.svg
diff --git a/frontend/resources/flowy_icons/24x/favorite.svg b/frontend/resources/flowy_icons/24x/favorite.svg
new file mode 100644
index 0000000000..3d862a56f9
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/favorite.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/frontend/resources/flowy_icons/24x/folder.svg b/frontend/resources/flowy_icons/24x/folder.svg
new file mode 100644
index 0000000000..2db17d41fc
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/folder.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/home/hide.svg b/frontend/resources/flowy_icons/24x/hide.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/hide.svg
rename to frontend/resources/flowy_icons/24x/hide.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/hide_menu.svg b/frontend/resources/flowy_icons/24x/hide_menu.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/hide_menu.svg
rename to frontend/resources/flowy_icons/24x/hide_menu.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/level.svg b/frontend/resources/flowy_icons/24x/level.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/level.svg
rename to frontend/resources/flowy_icons/24x/level.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/messages.svg b/frontend/resources/flowy_icons/24x/messages.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/messages.svg
rename to frontend/resources/flowy_icons/24x/messages.svg
diff --git a/frontend/resources/flowy_icons/24x/page.svg b/frontend/resources/flowy_icons/24x/page.svg
new file mode 100644
index 0000000000..0846ad2335
--- /dev/null
+++ b/frontend/resources/flowy_icons/24x/page.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/frontend/appflowy_flutter/assets/images/home/person.svg b/frontend/resources/flowy_icons/24x/person.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/person.svg
rename to frontend/resources/flowy_icons/24x/person.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/search.svg b/frontend/resources/flowy_icons/24x/search.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/search.svg
rename to frontend/resources/flowy_icons/24x/search.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/settings.svg b/frontend/resources/flowy_icons/24x/settings.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/settings.svg
rename to frontend/resources/flowy_icons/24x/settings.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/share.svg b/frontend/resources/flowy_icons/24x/share.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/share.svg
rename to frontend/resources/flowy_icons/24x/share.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/show.svg b/frontend/resources/flowy_icons/24x/show.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/show.svg
rename to frontend/resources/flowy_icons/24x/show.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/Sort/high.svg b/frontend/resources/flowy_icons/24x/sort_high.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/Sort/high.svg
rename to frontend/resources/flowy_icons/24x/sort_high.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/Sort/low.svg b/frontend/resources/flowy_icons/24x/sort_low.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/Sort/low.svg
rename to frontend/resources/flowy_icons/24x/sort_low.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/trash.svg b/frontend/resources/flowy_icons/24x/trash.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/trash.svg
rename to frontend/resources/flowy_icons/24x/trash.svg
diff --git a/frontend/appflowy_flutter/assets/images/home/close.svg b/frontend/resources/flowy_icons/32x/close.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/close.svg
rename to frontend/resources/flowy_icons/32x/close.svg
diff --git a/frontend/resources/flowy_icons/32x/favorite_active.svg b/frontend/resources/flowy_icons/32x/favorite_active.svg
new file mode 100644
index 0000000000..0f7ba51f4d
--- /dev/null
+++ b/frontend/resources/flowy_icons/32x/favorite_active.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/frontend/resources/flowy_icons/32x/favorite_inactive.svg b/frontend/resources/flowy_icons/32x/favorite_inactive.svg
new file mode 100644
index 0000000000..a6e84e8e91
--- /dev/null
+++ b/frontend/resources/flowy_icons/32x/favorite_inactive.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/frontend/appflowy_flutter/assets/images/home/image.svg b/frontend/resources/flowy_icons/32x/image.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/image.svg
rename to frontend/resources/flowy_icons/32x/image.svg
diff --git a/frontend/resources/flowy_icons/32x/math.svg b/frontend/resources/flowy_icons/32x/math.svg
new file mode 100644
index 0000000000..baf7e0a882
--- /dev/null
+++ b/frontend/resources/flowy_icons/32x/math.svg
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/frontend/resources/flowy_icons/32x/open_folder.svg b/frontend/resources/flowy_icons/32x/open_folder.svg
new file mode 100644
index 0000000000..7ef9866085
--- /dev/null
+++ b/frontend/resources/flowy_icons/32x/open_folder.svg
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/frontend/appflowy_flutter/assets/images/home/page.svg b/frontend/resources/flowy_icons/32x/page.svg
similarity index 100%
rename from frontend/appflowy_flutter/assets/images/home/page.svg
rename to frontend/resources/flowy_icons/32x/page.svg
diff --git a/frontend/resources/flowy_icons/40x/favorite_active.svg b/frontend/resources/flowy_icons/40x/favorite_active.svg
new file mode 100644
index 0000000000..818c2f3703
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/favorite_active.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/frontend/resources/flowy_icons/40x/favorite_inactive.svg b/frontend/resources/flowy_icons/40x/favorite_inactive.svg
new file mode 100644
index 0000000000..d1d116b31d
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/favorite_inactive.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/frontend/resources/flowy_icons/40x/flowy_logo.svg b/frontend/resources/flowy_icons/40x/flowy_logo.svg
new file mode 100644
index 0000000000..3958a1a253
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/flowy_logo.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/resources/flowy_icons/40x/flowy_logo_dark_mode.svg b/frontend/resources/flowy_icons/40x/flowy_logo_dark_mode.svg
new file mode 100644
index 0000000000..8e37a1c747
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/flowy_logo_dark_mode.svg
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/resources/flowy_icons/40x/flowy_logo_text.svg b/frontend/resources/flowy_icons/40x/flowy_logo_text.svg
new file mode 100644
index 0000000000..a45a05e2e7
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/flowy_logo_text.svg
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/resources/flowy_icons/40x/google_mark.svg b/frontend/resources/flowy_icons/40x/google_mark.svg
new file mode 100644
index 0000000000..bcc2c72c02
--- /dev/null
+++ b/frontend/resources/flowy_icons/40x/google_mark.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.cmd b/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.cmd
new file mode 100644
index 0000000000..d7ada3b641
--- /dev/null
+++ b/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.cmd
@@ -0,0 +1,26 @@
+@echo off
+
+echo 'Generating flowy icon files'
+
+REM Store the current working directory
+set "original_dir=%CD%"
+
+REM Change the current working directory to the script's location
+cd /d "%~dp0"
+
+cd ..\..\..\appflowy_flutter
+
+REM copy the resources/translations folder to
+REM the appflowy_flutter/assets/translation directory
+echo Copying resources/flowy_icons to appflowy_flutter/assets/flowy_icons
+xcopy /E /Y /I ..\resources\flowy_icons assets\flowy_icons
+
+call flutter packages pub get
+
+echo Generating FlowySvg class
+call dart run flowy_svg
+
+echo Done generating icon files.
+
+REM Return to the original directory
+cd /d "%original_dir%"
diff --git a/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.sh b/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.sh
new file mode 100644
index 0000000000..fb6eee67c6
--- /dev/null
+++ b/frontend/scripts/code_generation/flowy_icons/generate_flowy_icons.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+echo "Generating flowy icon files"
+
+# Store the current working directory
+original_dir=$(pwd)
+
+cd "$(dirname "$0")"
+
+# Navigate to the project root
+cd ../../../appflowy_flutter
+
+rm -rf assets/flowy_icons/
+mkdir -p assets/flowy_icons/
+rsync -r ../resources/flowy_icons/ assets/flowy_icons/
+
+flutter packages pub get
+
+echo "Generating FlowySvg classes"
+dart run flowy_svg
+
+echo "Done generating icon files."
+
+# Return to the original directory
+cd "$original_dir"
diff --git a/frontend/scripts/code_generation/generate.cmd b/frontend/scripts/code_generation/generate.cmd
index 45dafb42c0..1dc853d2a2 100644
--- a/frontend/scripts/code_generation/generate.cmd
+++ b/frontend/scripts/code_generation/generate.cmd
@@ -22,6 +22,8 @@ cd freezed
REM Allow execution permissions on CI
chmod +x generate_freezed.cmd
call generate_freezed.cmd %*
+
+REM Return to the main script directory
cd ..
echo Generating env files using build_runner
@@ -30,5 +32,14 @@ REM Allow execution permissions on CI
chmod +x generate_env.cmd
call generate_env.cmd %*
+REM Return to the main script directory
+cd ..
+
+echo Generating svg files using flowy_svg
+cd flowy_icons
+REM Allow execution permissions on CI
+chmod +x generate_flowy_icons.cmd
+call generate_flowy_icons.cmd %*
+
REM Return to the original directory
cd /d "%original_dir%"
diff --git a/frontend/scripts/code_generation/generate.sh b/frontend/scripts/code_generation/generate.sh
index 1fe2d41292..567feddc7d 100755
--- a/frontend/scripts/code_generation/generate.sh
+++ b/frontend/scripts/code_generation/generate.sh
@@ -22,6 +22,8 @@ cd freezed
# Allow execution permissions on CI
chmod +x ./generate_freezed.sh
./generate_freezed.sh "$@"
+
+# Return to the main script directory
cd ..
echo "Generating env files using build_runner"
@@ -30,5 +32,14 @@ cd env
chmod +x ./generate_env.sh
./generate_env.sh "$@"
+# Return to the main script directory
+cd ..
+
+echo "Generating svg files using flowy_svg"
+cd flowy_icons
+# Allow execution permissions on CI
+chmod +x ./generate_flowy_icons.sh
+./generate_flowy_icons.sh "$@"
+
# Return to the original directory
cd "$original_dir"
diff --git a/frontend/scripts/docker-buildfiles/Dockerfile b/frontend/scripts/docker-buildfiles/Dockerfile
index 9f2348754a..9a3b39d4b3 100644
--- a/frontend/scripts/docker-buildfiles/Dockerfile
+++ b/frontend/scripts/docker-buildfiles/Dockerfile
@@ -47,7 +47,7 @@ RUN flutter doctor
RUN dart pub global activate protoc_plugin 20.0.1
# Install build dependencies for AppFlowy
-RUN sudo pacman -S --noconfirm git libkeybinder3 sqlite clang
+RUN sudo pacman -S --noconfirm git libkeybinder3 sqlite clang rsync
RUN source ~/.cargo/env && cargo install --force cargo-make duckscript_cli
# Build AppFlowy