diff --git a/THIRD_PARTY.md b/THIRD_PARTY.md
index e55e0dfc5..693138cb7 100644
--- a/THIRD_PARTY.md
+++ b/THIRD_PARTY.md
@@ -42,6 +42,7 @@
| react-native-gesture-handler | MIT | https://github.com/software-mansion/react-native-gesture-handler |
| react-native-keyboard-controller | MIT | https://github.com/kirillzyusko/react-native-keyboard-controller |
| react-native-markdown-renderer | MIT | https://github.com/mientjan/react-native-markdown-renderer |
+| react-native-nano-icons | MIT | https://github.com/software-mansion-labs/react-native-nano-icons |
| react-native-nitro-modules | MIT | https://github.com/mrousavy/nitro |
| react-native-pager-view | MIT | https://github.com/callstack/react-native-pager-view |
| react-native-reanimated | MIT | https://github.com/software-mansion/react-native-reanimated |
diff --git a/mobile/android/app/src/main/assets/fonts/app-icons.ttf b/mobile/android/app/src/main/assets/fonts/app-icons.ttf
new file mode 100644
index 000000000..fb3095349
Binary files /dev/null and b/mobile/android/app/src/main/assets/fonts/app-icons.ttf differ
diff --git a/mobile/app.config.ts b/mobile/app.config.ts
index 8ac739ea6..4fc03ed80 100644
--- a/mobile/app.config.ts
+++ b/mobile/app.config.ts
@@ -103,6 +103,17 @@ export default (): ExpoConfig => {
}),
navigationBarPlugin({ android: { enforceNavigationBarContrast: false } }),
["react-native-android-widget", widgetPluginConfig],
+ [
+ "react-native-nano-icons",
+ {
+ iconSets: [
+ {
+ inputDir: "./assets/icons/app-icons",
+ outputDir: "./src/resources/icons",
+ },
+ ],
+ },
+ ],
...optionalPlugins,
],
};
diff --git a/mobile/assets/icons/README.md b/mobile/assets/icons/README.md
new file mode 100644
index 000000000..c6fa2ffc6
--- /dev/null
+++ b/mobile/assets/icons/README.md
@@ -0,0 +1,17 @@
+# Icon Specifications
+
+**Material Symbols**
+
+- Weight: `300`
+- Grade: `-25`
+- Optical Size: `24px`
+- Rounded
+
+**Ionicons**
+
+- We use `color-wand`, `flask-filled`, `logo-github`, `logo-google-playstore`, `repeat`, and `shuffle`.
+
+**Custom Icons**
+
+- `nothing-arrow-right`
+- `repeat-one` is a custom icon based on Ionicons' `repeat` & `calendar-number` icons.
diff --git a/mobile/assets/icons/app-icons/activity-zone.svg b/mobile/assets/icons/app-icons/activity-zone.svg
new file mode 100644
index 000000000..54c0d99d7
--- /dev/null
+++ b/mobile/assets/icons/app-icons/activity-zone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/add.svg b/mobile/assets/icons/app-icons/add.svg
new file mode 100644
index 000000000..173d00de1
--- /dev/null
+++ b/mobile/assets/icons/app-icons/add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/archive.svg b/mobile/assets/icons/app-icons/archive.svg
new file mode 100644
index 000000000..491812a28
--- /dev/null
+++ b/mobile/assets/icons/app-icons/archive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/arrow-back.svg b/mobile/assets/icons/app-icons/arrow-back.svg
new file mode 100644
index 000000000..edee3a115
--- /dev/null
+++ b/mobile/assets/icons/app-icons/arrow-back.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/autoplay.svg b/mobile/assets/icons/app-icons/autoplay.svg
new file mode 100644
index 000000000..ad10007bb
--- /dev/null
+++ b/mobile/assets/icons/app-icons/autoplay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/bar-chart-4-bars.svg b/mobile/assets/icons/app-icons/bar-chart-4-bars.svg
new file mode 100644
index 000000000..de3156f2f
--- /dev/null
+++ b/mobile/assets/icons/app-icons/bar-chart-4-bars.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/cached.svg b/mobile/assets/icons/app-icons/cached.svg
new file mode 100644
index 000000000..fd6ea38be
--- /dev/null
+++ b/mobile/assets/icons/app-icons/cached.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/cancel.svg b/mobile/assets/icons/app-icons/cancel.svg
new file mode 100644
index 000000000..fa24b9751
--- /dev/null
+++ b/mobile/assets/icons/app-icons/cancel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/check-circle.svg b/mobile/assets/icons/app-icons/check-circle.svg
new file mode 100644
index 000000000..ea57c5aa0
--- /dev/null
+++ b/mobile/assets/icons/app-icons/check-circle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/check.svg b/mobile/assets/icons/app-icons/check.svg
new file mode 100644
index 000000000..4bb7f7276
--- /dev/null
+++ b/mobile/assets/icons/app-icons/check.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/close.svg b/mobile/assets/icons/app-icons/close.svg
new file mode 100644
index 000000000..ecabc15c2
--- /dev/null
+++ b/mobile/assets/icons/app-icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/color-wand.svg b/mobile/assets/icons/app-icons/color-wand.svg
new file mode 100644
index 000000000..4be45b308
--- /dev/null
+++ b/mobile/assets/icons/app-icons/color-wand.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/conversion-path.svg b/mobile/assets/icons/app-icons/conversion-path.svg
new file mode 100644
index 000000000..c627f4193
--- /dev/null
+++ b/mobile/assets/icons/app-icons/conversion-path.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/create-new-folder.svg b/mobile/assets/icons/app-icons/create-new-folder.svg
new file mode 100644
index 000000000..d11288302
--- /dev/null
+++ b/mobile/assets/icons/app-icons/create-new-folder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/delete.svg b/mobile/assets/icons/app-icons/delete.svg
new file mode 100644
index 000000000..7c3fb4ef2
--- /dev/null
+++ b/mobile/assets/icons/app-icons/delete.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/do-not-disturb-on.svg b/mobile/assets/icons/app-icons/do-not-disturb-on.svg
new file mode 100644
index 000000000..b82c521ed
--- /dev/null
+++ b/mobile/assets/icons/app-icons/do-not-disturb-on.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/document-search.svg b/mobile/assets/icons/app-icons/document-search.svg
new file mode 100644
index 000000000..b5dcd4d23
--- /dev/null
+++ b/mobile/assets/icons/app-icons/document-search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/drag-handle.svg b/mobile/assets/icons/app-icons/drag-handle.svg
new file mode 100644
index 000000000..b28299ba5
--- /dev/null
+++ b/mobile/assets/icons/app-icons/drag-handle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/edit.svg b/mobile/assets/icons/app-icons/edit.svg
new file mode 100644
index 000000000..011271717
--- /dev/null
+++ b/mobile/assets/icons/app-icons/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/favorite-filled.svg b/mobile/assets/icons/app-icons/favorite-filled.svg
new file mode 100644
index 000000000..b045be6bd
--- /dev/null
+++ b/mobile/assets/icons/app-icons/favorite-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/favorite.svg b/mobile/assets/icons/app-icons/favorite.svg
new file mode 100644
index 000000000..6da9ffed7
--- /dev/null
+++ b/mobile/assets/icons/app-icons/favorite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/file-save.svg b/mobile/assets/icons/app-icons/file-save.svg
new file mode 100644
index 000000000..8aa223e2e
--- /dev/null
+++ b/mobile/assets/icons/app-icons/file-save.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/flask-filled.svg b/mobile/assets/icons/app-icons/flask-filled.svg
new file mode 100644
index 000000000..6e730e436
--- /dev/null
+++ b/mobile/assets/icons/app-icons/flask-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/folder.svg b/mobile/assets/icons/app-icons/folder.svg
new file mode 100644
index 000000000..8ec47477e
--- /dev/null
+++ b/mobile/assets/icons/app-icons/folder.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/format-paint.svg b/mobile/assets/icons/app-icons/format-paint.svg
new file mode 100644
index 000000000..a76e17f1e
--- /dev/null
+++ b/mobile/assets/icons/app-icons/format-paint.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/graph-1.svg b/mobile/assets/icons/app-icons/graph-1.svg
new file mode 100644
index 000000000..aba824694
--- /dev/null
+++ b/mobile/assets/icons/app-icons/graph-1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/graphic-eq.svg b/mobile/assets/icons/app-icons/graphic-eq.svg
new file mode 100644
index 000000000..a9bd72a84
--- /dev/null
+++ b/mobile/assets/icons/app-icons/graphic-eq.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/grid-view.svg b/mobile/assets/icons/app-icons/grid-view.svg
new file mode 100644
index 000000000..2c0610d82
--- /dev/null
+++ b/mobile/assets/icons/app-icons/grid-view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/history.svg b/mobile/assets/icons/app-icons/history.svg
new file mode 100644
index 000000000..36a8b806c
--- /dev/null
+++ b/mobile/assets/icons/app-icons/history.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/home-filled.svg b/mobile/assets/icons/app-icons/home-filled.svg
new file mode 100644
index 000000000..69303c929
--- /dev/null
+++ b/mobile/assets/icons/app-icons/home-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/home.svg b/mobile/assets/icons/app-icons/home.svg
new file mode 100644
index 000000000..48c699bac
--- /dev/null
+++ b/mobile/assets/icons/app-icons/home.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/image.svg b/mobile/assets/icons/app-icons/image.svg
new file mode 100644
index 000000000..da57fc039
--- /dev/null
+++ b/mobile/assets/icons/app-icons/image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/info.svg b/mobile/assets/icons/app-icons/info.svg
new file mode 100644
index 000000000..145b237ee
--- /dev/null
+++ b/mobile/assets/icons/app-icons/info.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/keyboard-arrow-down.svg b/mobile/assets/icons/app-icons/keyboard-arrow-down.svg
new file mode 100644
index 000000000..77353ee2f
--- /dev/null
+++ b/mobile/assets/icons/app-icons/keyboard-arrow-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/link-off.svg b/mobile/assets/icons/app-icons/link-off.svg
new file mode 100644
index 000000000..16928fbaa
--- /dev/null
+++ b/mobile/assets/icons/app-icons/link-off.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/logo-github.svg b/mobile/assets/icons/app-icons/logo-github.svg
new file mode 100644
index 000000000..92ffd5666
--- /dev/null
+++ b/mobile/assets/icons/app-icons/logo-github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/logo-google-playstore.svg b/mobile/assets/icons/app-icons/logo-google-playstore.svg
new file mode 100644
index 000000000..4107a4666
--- /dev/null
+++ b/mobile/assets/icons/app-icons/logo-google-playstore.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/low-priority.svg b/mobile/assets/icons/app-icons/low-priority.svg
new file mode 100644
index 000000000..f18ad3a37
--- /dev/null
+++ b/mobile/assets/icons/app-icons/low-priority.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/lyrics.svg b/mobile/assets/icons/app-icons/lyrics.svg
new file mode 100644
index 000000000..36bf586ab
--- /dev/null
+++ b/mobile/assets/icons/app-icons/lyrics.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/mobile-arrow-down.svg b/mobile/assets/icons/app-icons/mobile-arrow-down.svg
new file mode 100644
index 000000000..dec7cd9b6
--- /dev/null
+++ b/mobile/assets/icons/app-icons/mobile-arrow-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/more-horiz.svg b/mobile/assets/icons/app-icons/more-horiz.svg
new file mode 100644
index 000000000..dd29484ef
--- /dev/null
+++ b/mobile/assets/icons/app-icons/more-horiz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/more-vert.svg b/mobile/assets/icons/app-icons/more-vert.svg
new file mode 100644
index 000000000..5027b9344
--- /dev/null
+++ b/mobile/assets/icons/app-icons/more-vert.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/nothing-arrow-right.svg b/mobile/assets/icons/app-icons/nothing-arrow-right.svg
new file mode 100644
index 000000000..1c4418c96
--- /dev/null
+++ b/mobile/assets/icons/app-icons/nothing-arrow-right.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/open-in-new.svg b/mobile/assets/icons/app-icons/open-in-new.svg
new file mode 100644
index 000000000..31bb26d66
--- /dev/null
+++ b/mobile/assets/icons/app-icons/open-in-new.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/pause-filled.svg b/mobile/assets/icons/app-icons/pause-filled.svg
new file mode 100644
index 000000000..d75951eac
--- /dev/null
+++ b/mobile/assets/icons/app-icons/pause-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/play-arrow-filled.svg b/mobile/assets/icons/app-icons/play-arrow-filled.svg
new file mode 100644
index 000000000..7057f908f
--- /dev/null
+++ b/mobile/assets/icons/app-icons/play-arrow-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/playlist-add.svg b/mobile/assets/icons/app-icons/playlist-add.svg
new file mode 100644
index 000000000..bd82ac5f8
--- /dev/null
+++ b/mobile/assets/icons/app-icons/playlist-add.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/queue-music.svg b/mobile/assets/icons/app-icons/queue-music.svg
new file mode 100644
index 000000000..dbb87193c
--- /dev/null
+++ b/mobile/assets/icons/app-icons/queue-music.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/remove.svg b/mobile/assets/icons/app-icons/remove.svg
new file mode 100644
index 000000000..acdb03c24
--- /dev/null
+++ b/mobile/assets/icons/app-icons/remove.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/repeat-one.svg b/mobile/assets/icons/app-icons/repeat-one.svg
new file mode 100644
index 000000000..6821c71b5
--- /dev/null
+++ b/mobile/assets/icons/app-icons/repeat-one.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/repeat.svg b/mobile/assets/icons/app-icons/repeat.svg
new file mode 100644
index 000000000..7277d9b96
--- /dev/null
+++ b/mobile/assets/icons/app-icons/repeat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/save.svg b/mobile/assets/icons/app-icons/save.svg
new file mode 100644
index 000000000..26114b498
--- /dev/null
+++ b/mobile/assets/icons/app-icons/save.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/schedule.svg b/mobile/assets/icons/app-icons/schedule.svg
new file mode 100644
index 000000000..de104f7df
--- /dev/null
+++ b/mobile/assets/icons/app-icons/schedule.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/search.svg b/mobile/assets/icons/app-icons/search.svg
new file mode 100644
index 000000000..44c8f17ec
--- /dev/null
+++ b/mobile/assets/icons/app-icons/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/settings.svg b/mobile/assets/icons/app-icons/settings.svg
new file mode 100644
index 000000000..4a7d57f1f
--- /dev/null
+++ b/mobile/assets/icons/app-icons/settings.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/shuffle.svg b/mobile/assets/icons/app-icons/shuffle.svg
new file mode 100644
index 000000000..f211696bd
--- /dev/null
+++ b/mobile/assets/icons/app-icons/shuffle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/skip-next-filled.svg b/mobile/assets/icons/app-icons/skip-next-filled.svg
new file mode 100644
index 000000000..3876c9629
--- /dev/null
+++ b/mobile/assets/icons/app-icons/skip-next-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/skip-previous-filled.svg b/mobile/assets/icons/app-icons/skip-previous-filled.svg
new file mode 100644
index 000000000..c36eaa093
--- /dev/null
+++ b/mobile/assets/icons/app-icons/skip-previous-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/slow-motion-video.svg b/mobile/assets/icons/app-icons/slow-motion-video.svg
new file mode 100644
index 000000000..3c59986a9
--- /dev/null
+++ b/mobile/assets/icons/app-icons/slow-motion-video.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/sort.svg b/mobile/assets/icons/app-icons/sort.svg
new file mode 100644
index 000000000..77e977ffa
--- /dev/null
+++ b/mobile/assets/icons/app-icons/sort.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/timer.svg b/mobile/assets/icons/app-icons/timer.svg
new file mode 100644
index 000000000..715bc76b5
--- /dev/null
+++ b/mobile/assets/icons/app-icons/timer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/translate.svg b/mobile/assets/icons/app-icons/translate.svg
new file mode 100644
index 000000000..bc1e590ec
--- /dev/null
+++ b/mobile/assets/icons/app-icons/translate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/view-agenda.svg b/mobile/assets/icons/app-icons/view-agenda.svg
new file mode 100644
index 000000000..be9611fb6
--- /dev/null
+++ b/mobile/assets/icons/app-icons/view-agenda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/view-module.svg b/mobile/assets/icons/app-icons/view-module.svg
new file mode 100644
index 000000000..74e0cf062
--- /dev/null
+++ b/mobile/assets/icons/app-icons/view-module.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/visibility-off-filled.svg b/mobile/assets/icons/app-icons/visibility-off-filled.svg
new file mode 100644
index 000000000..98eb56002
--- /dev/null
+++ b/mobile/assets/icons/app-icons/visibility-off-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/voice-selection.svg b/mobile/assets/icons/app-icons/voice-selection.svg
new file mode 100644
index 000000000..5d846d57c
--- /dev/null
+++ b/mobile/assets/icons/app-icons/voice-selection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/volume-up-filled.svg b/mobile/assets/icons/app-icons/volume-up-filled.svg
new file mode 100644
index 000000000..78b41df48
--- /dev/null
+++ b/mobile/assets/icons/app-icons/volume-up-filled.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/assets/icons/app-icons/warning.svg b/mobile/assets/icons/app-icons/warning.svg
new file mode 100644
index 000000000..5741f6600
--- /dev/null
+++ b/mobile/assets/icons/app-icons/warning.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mobile/package.json b/mobile/package.json
index 822cd2f04..9e1199b75 100644
--- a/mobile/package.json
+++ b/mobile/package.json
@@ -60,6 +60,7 @@
"react-native-gesture-handler": "3.0.1",
"react-native-keyboard-controller": "1.21.11",
"react-native-markdown-renderer": "4.1.1",
+ "react-native-nano-icons": "1.0.0-nightly-20260611-d07ca9613",
"react-native-nitro-modules": "0.35.9",
"react-native-pager-view": "8.0.2",
"react-native-reanimated": "4.3.1",
diff --git a/mobile/pnpm-lock.yaml b/mobile/pnpm-lock.yaml
index d55cd413f..b91943e5e 100644
--- a/mobile/pnpm-lock.yaml
+++ b/mobile/pnpm-lock.yaml
@@ -123,6 +123,9 @@ importers:
react-native-markdown-renderer:
specifier: 4.1.1
version: 4.1.1(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)
+ react-native-nano-icons:
+ specifier: 1.0.0-nightly-20260611-d07ca9613
+ version: 1.0.0-nightly-20260611-d07ca9613(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
react-native-nitro-modules:
specifier: 0.35.9
version: 0.35.9(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)
@@ -1134,9 +1137,15 @@ packages:
'@expo/config-plugins@56.0.8':
resolution: {integrity: sha512-phTuyBhgVLfqUHMjQkAfRtbyoY6yTxoKja1awtpVnEkoJDxPJuXx1KX5uvq1eZtt4bJQ08OBJ6P95INqRSHpRg==}
+ '@expo/config-plugins@56.0.9':
+ resolution: {integrity: sha512-/6a/S9USwx8OC9tGjHxbviLFiBHyueN3aoNWMLvWDEJoZ1CIVW800ZBzwXq/FYNK2qzcN1LxFmQtzD1zeFQKNA==}
+
'@expo/config-types@56.0.5':
resolution: {integrity: sha512-GsAHO/MwW9ZRdgnmyfRXqVGLCP/zejD6rWnp5OROp8mBGRObKm4HfrjlUyT1skjMwCj1OrURx9ZfIc6yeBAkIA==}
+ '@expo/config-types@56.0.6':
+ resolution: {integrity: sha512-4Y6Aum5J4Re5NnxGVofRNe1aDwUBOmWhQYkynZsqzRtX/zEA1ADUeyHXuEckv9YD9djiyT7bKtLt5gKL3mA6VQ==}
+
'@expo/config@56.0.9':
resolution: {integrity: sha512-/lqFeWGSrhpKJVP8tTN8LjuoIe8u8q2w7FzBL0C+wHgl+WM8l1qUIEYWy/sMvsG/NbpUIUsDHJRhQvOkU58eIw==}
@@ -1930,6 +1939,9 @@ packages:
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
+ '@types/emscripten@1.41.5':
+ resolution: {integrity: sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==}
+
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
@@ -2438,6 +2450,10 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
chrome-launcher@0.15.2:
resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==}
engines: {node: '>=12.13.0'}
@@ -2457,10 +2473,18 @@ packages:
resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
engines: {node: '>=4'}
+ cli-cursor@5.0.0:
+ resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
+ engines: {node: '>=18'}
+
cli-spinners@2.9.2:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
+ cli-spinners@3.4.0:
+ resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==}
+ engines: {node: '>=18.20'}
+
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
@@ -2562,6 +2586,9 @@ packages:
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+ cubic2quad@1.2.1:
+ resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==}
+
culori@4.0.2:
resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3228,6 +3255,9 @@ packages:
flow-enums-runtime@0.0.6:
resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==}
+ fonteditor-core@2.6.3:
+ resolution: {integrity: sha512-YUryIKjkenjZ41E7JvM3V+02Ak4mTHDDTwBWgs9KBzypzHqLZHuua1UDRevZNTKawmnq1dbBAa70Jddl2+F4FQ==}
+
fontfaceobserver@2.3.0:
resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==}
@@ -3278,6 +3308,10 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
+ get-east-asian-width@1.6.0:
+ resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==}
+ engines: {node: '>=18'}
+
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -3525,6 +3559,10 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-interactive@2.0.0:
+ resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+ engines: {node: '>=12'}
+
is-map@2.0.3:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
@@ -3565,6 +3603,10 @@ packages:
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
engines: {node: '>= 0.4'}
+ is-unicode-supported@2.1.0:
+ resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
+ engines: {node: '>=18'}
+
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
@@ -3864,10 +3906,17 @@ packages:
lodash.throttle@4.1.1:
resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==}
+ lodash@4.18.1:
+ resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
+
log-symbols@2.2.0:
resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
engines: {node: '>=4'}
+ log-symbols@7.0.1:
+ resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==}
+ engines: {node: '>=18'}
+
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -3988,6 +4037,9 @@ packages:
engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
hasBin: true
+ microbuffer@1.0.0:
+ resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -4017,6 +4069,10 @@ packages:
resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
engines: {node: '>=4'}
+ mimic-function@5.0.1:
+ resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
+ engines: {node: '>=18'}
+
minimatch@10.2.5:
resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
engines: {node: 18 || 20 || >=22}
@@ -4174,6 +4230,10 @@ packages:
resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==}
engines: {node: '>=4'}
+ onetime@7.0.0:
+ resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
+ engines: {node: '>=18'}
+
open@7.4.2:
resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
engines: {node: '>=8'}
@@ -4190,6 +4250,10 @@ packages:
resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==}
engines: {node: '>=6'}
+ ora@9.4.0:
+ resolution: {integrity: sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==}
+ engines: {node: '>=20'}
+
own-keys@1.0.1:
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
engines: {node: '>= 0.4'}
@@ -4242,6 +4306,9 @@ packages:
path-to-regexp@0.1.13:
resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==}
+ pathkit-wasm@1.0.0:
+ resolution: {integrity: sha512-oREIcGpwnBBto6PfB3C20aIw9jBPLcSNVF1AlL5tGlXsoL2zqWVuD0mi8WMJQHHNemm6aR1hHH2lz+TO551Fgw==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -4374,6 +4441,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ pyodide@0.29.4:
+ resolution: {integrity: sha512-tCseTsqU3kSxZIjkue5zXxTMNEwrKZwOIIEQRBA/VzHxFN1hoCxe4w41phfCdHd9it9RcCNQb5K/Re0InqMgvA==}
+ engines: {node: '>=18.0.0'}
+
qs@6.15.2:
resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==}
engines: {node: '>=0.6'}
@@ -4484,6 +4555,17 @@ packages:
react: '>=18.0.0'
react-native: '>=0.73.0'
+ react-native-nano-icons@1.0.0-nightly-20260611-d07ca9613:
+ resolution: {integrity: sha512-Fk0v+06QLtyOlZzaDg4YG/bGfW5La5PoLgdxFU+vJYCM3G/IdwLetBwP8O5goxsknhmiDA9YLMJG4SEMAGt+Pg==}
+ hasBin: true
+ peerDependencies:
+ expo: '*'
+ react: '*'
+ react-native: '*'
+ peerDependenciesMeta:
+ expo:
+ optional: true
+
react-native-nitro-modules@0.35.9:
resolution: {integrity: sha512-yCO6eJ85SPPUo4a4an7H5oj6wPCSIT72fbjr5WZ/20n6zswaJ2gNNpnWtg2We0AZwkAOjSqkOJ0Vjc05p6kGiA==}
peerDependencies:
@@ -4631,6 +4713,10 @@ packages:
resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
engines: {node: '>=4'}
+ restore-cursor@5.1.0:
+ resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
+ engines: {node: '>=18'}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -4822,6 +4908,10 @@ packages:
resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
engines: {node: '>= 0.8'}
+ stdin-discarder@0.3.2:
+ resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==}
+ engines: {node: '>=18'}
+
stop-iteration-iterator@1.1.0:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
engines: {node: '>= 0.4'}
@@ -4848,6 +4938,10 @@ packages:
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
+ string-width@8.2.1:
+ resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==}
+ engines: {node: '>=20'}
+
string.prototype.matchall@4.0.12:
resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
engines: {node: '>= 0.4'}
@@ -4910,6 +5004,13 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ svg2ttf@6.1.0:
+ resolution: {integrity: sha512-EjxgcmhKcBpx/3fR1hPwVtJAbUc/ZsDpwOTF74SI3PbzCg4pDHnxVmoSuqgEqxVJGqqkSCI6+82cucpn2D5aOw==}
+ hasBin: true
+
+ svgpath@2.6.0:
+ resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==}
+
synckit@0.11.13:
resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -5249,6 +5350,10 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ yoctocolors@2.1.2:
+ resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
+ engines: {node: '>=18'}
+
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -6168,8 +6273,29 @@ snapshots:
- supports-color
- typescript
+ '@expo/config-plugins@56.0.9(typescript@6.0.3)':
+ dependencies:
+ '@expo/config-types': 56.0.6
+ '@expo/json-file': 10.2.0
+ '@expo/plist': 0.7.0
+ '@expo/require-utils': 56.1.3(typescript@6.0.3)
+ '@expo/sdk-runtime-versions': 1.0.0
+ chalk: 4.1.2
+ debug: 4.4.3
+ getenv: 2.0.0
+ glob: 13.0.6
+ semver: 7.8.4
+ slugify: 1.6.9
+ xcode: 3.0.1
+ xml2js: 0.6.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
'@expo/config-types@56.0.5': {}
+ '@expo/config-types@56.0.6': {}
+
'@expo/config@56.0.9(typescript@6.0.3)':
dependencies:
'@expo/config-plugins': 56.0.8(typescript@6.0.3)
@@ -7051,6 +7177,8 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@types/emscripten@1.41.5': {}
+
'@types/estree@1.0.9': {}
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -7609,6 +7737,8 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ chalk@5.6.2: {}
+
chrome-launcher@0.15.2:
dependencies:
'@types/node': 25.9.3
@@ -7636,8 +7766,14 @@ snapshots:
dependencies:
restore-cursor: 2.0.0
+ cli-cursor@5.0.0:
+ dependencies:
+ restore-cursor: 5.1.0
+
cli-spinners@2.9.2: {}
+ cli-spinners@3.4.0: {}
+
cliui@8.0.1:
dependencies:
string-width: 4.2.3
@@ -7744,6 +7880,8 @@ snapshots:
csstype@3.2.3: {}
+ cubic2quad@1.2.1: {}
+
culori@4.0.2: {}
data-view-buffer@1.0.2:
@@ -8564,6 +8702,10 @@ snapshots:
flow-enums-runtime@0.0.6: {}
+ fonteditor-core@2.6.3:
+ dependencies:
+ '@xmldom/xmldom': 0.8.13
+
fontfaceobserver@2.3.0: {}
for-each@0.3.5:
@@ -8606,6 +8748,8 @@ snapshots:
get-caller-file@2.0.5: {}
+ get-east-asian-width@1.6.0: {}
+
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -8856,6 +9000,8 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-interactive@2.0.0: {}
+
is-map@2.0.3: {}
is-negative-zero@2.0.3: {}
@@ -8895,6 +9041,8 @@ snapshots:
dependencies:
which-typed-array: 1.1.22
+ is-unicode-supported@2.1.0: {}
+
is-weakmap@2.0.2: {}
is-weakref@1.1.1:
@@ -9146,10 +9294,17 @@ snapshots:
lodash.throttle@4.1.1: {}
+ lodash@4.18.1: {}
+
log-symbols@2.2.0:
dependencies:
chalk: 2.4.2
+ log-symbols@7.0.1:
+ dependencies:
+ is-unicode-supported: 2.1.0
+ yoctocolors: 2.1.2
+
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
@@ -9375,6 +9530,8 @@ snapshots:
- supports-color
- utf-8-validate
+ microbuffer@1.0.0: {}
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
@@ -9396,6 +9553,8 @@ snapshots:
mimic-fn@1.2.0: {}
+ mimic-function@5.0.1: {}
+
minimatch@10.2.5:
dependencies:
brace-expansion: 5.0.6
@@ -9548,6 +9707,10 @@ snapshots:
dependencies:
mimic-fn: 1.2.0
+ onetime@7.0.0:
+ dependencies:
+ mimic-function: 5.0.1
+
open@7.4.2:
dependencies:
is-docker: 2.2.1
@@ -9577,6 +9740,17 @@ snapshots:
strip-ansi: 5.2.0
wcwidth: 1.0.1
+ ora@9.4.0:
+ dependencies:
+ chalk: 5.6.2
+ cli-cursor: 5.0.0
+ cli-spinners: 3.4.0
+ is-interactive: 2.0.0
+ is-unicode-supported: 2.1.0
+ log-symbols: 7.0.1
+ stdin-discarder: 0.3.2
+ string-width: 8.2.1
+
own-keys@1.0.1:
dependencies:
get-intrinsic: 1.3.0
@@ -9623,6 +9797,8 @@ snapshots:
path-to-regexp@0.1.13: {}
+ pathkit-wasm@1.0.0: {}
+
picocolors@1.1.1: {}
picomatch@2.3.2: {}
@@ -9693,6 +9869,14 @@ snapshots:
punycode@2.3.1: {}
+ pyodide@0.29.4:
+ dependencies:
+ '@types/emscripten': 1.41.5
+ ws: 8.21.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
qs@6.15.2:
dependencies:
side-channel: 1.1.1
@@ -9805,6 +9989,28 @@ snapshots:
react: 19.2.3
react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3)
+ react-native-nano-icons@1.0.0-nightly-20260611-d07ca9613(expo@56.0.11)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3):
+ dependencies:
+ '@expo/config-plugins': 56.0.9(typescript@6.0.3)
+ '@xmldom/xmldom': 0.9.10
+ chalk: 5.6.2
+ fonteditor-core: 2.6.3
+ ora: 9.4.0
+ pathkit-wasm: 1.0.0
+ plist: 3.1.1
+ pyodide: 0.29.4
+ react: 19.2.3
+ react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3)
+ svg2ttf: 6.1.0
+ xcode: 3.0.1
+ optionalDependencies:
+ expo: 56.0.11(@babel/core@7.29.7)(@expo/dom-webview@56.0.5)(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3)(typescript@6.0.3)
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - typescript
+ - utf-8-validate
+
react-native-nitro-modules@0.35.9(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7))(@types/react@19.2.17)(react@19.2.3))(react@19.2.3):
dependencies:
react: 19.2.3
@@ -10015,6 +10221,11 @@ snapshots:
onetime: 2.0.1
signal-exit: 3.0.7
+ restore-cursor@5.1.0:
+ dependencies:
+ onetime: 7.0.0
+ signal-exit: 4.1.0
+
reusify@1.1.0: {}
run-parallel@1.2.0:
@@ -10251,6 +10462,8 @@ snapshots:
statuses@2.0.2: {}
+ stdin-discarder@0.3.2: {}
+
stop-iteration-iterator@1.1.0:
dependencies:
es-errors: 1.3.0
@@ -10278,6 +10491,11 @@ snapshots:
emoji-regex: 9.2.2
strip-ansi: 7.2.0
+ string-width@8.2.1:
+ dependencies:
+ get-east-asian-width: 1.6.0
+ strip-ansi: 7.2.0
+
string.prototype.matchall@4.0.12:
dependencies:
call-bind: 1.0.9
@@ -10360,6 +10578,17 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ svg2ttf@6.1.0:
+ dependencies:
+ '@xmldom/xmldom': 0.9.10
+ argparse: 2.0.1
+ cubic2quad: 1.2.1
+ lodash: 4.18.1
+ microbuffer: 1.0.0
+ svgpath: 2.6.0
+
+ svgpath@2.6.0: {}
+
synckit@0.11.13:
dependencies:
'@pkgr/core': 0.3.6
@@ -10708,6 +10937,8 @@ snapshots:
yocto-queue@0.1.0: {}
+ yoctocolors@2.1.2: {}
+
zod-validation-error@4.0.2(zod@4.4.3):
dependencies:
zod: 4.4.3
diff --git a/mobile/src/components/Base/AnimatedMaterialSymbol.tsx b/mobile/src/components/Base/AnimatedMaterialSymbol.tsx
index 097c4d969..7ddabc0bc 100644
--- a/mobile/src/components/Base/AnimatedMaterialSymbol.tsx
+++ b/mobile/src/components/Base/AnimatedMaterialSymbol.tsx
@@ -1,12 +1,23 @@
import Animated from "react-native-reanimated";
import { Path, Svg } from "react-native-svg";
-import type { Icon } from "~/resources/icons/type";
-
+import type { AppColor } from "~/modules/customization/theme/core/constants";
import { useColor } from "~/modules/customization/theme/hooks";
const AnimatedPath = Animated.createAnimatedComponent(Path);
+interface Props {
+ /** Defaults to `24px`. */
+ size?: number;
+ /** Defaults to theme's `onSurface` color. */
+ color?: AppColor;
+ /**
+ * Use the alternative version of the icon if available (ie: filled, animated).
+ * Defaults to `false`.
+ */
+ alternative?: boolean;
+}
+
/**
* Create an Icon where setting the `alternative` prop will animate the
* SVG via Reanimated's CSS SVG Animations.
@@ -20,7 +31,7 @@ export function createAnimatedMaterialSymbol(
size = 24,
color,
alternative = false,
- }: Icon) {
+ }: Props) {
const usedColor = useColor(color, "onSurface");
return (