diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/avalonia.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/avalonia.xml
index ea8c315..c7ac0c0 100644
--- a/src/.idea/.idea.AvaloniaInside.Shell/.idea/avalonia.xml
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/avalonia.xml
@@ -8,6 +8,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -24,6 +45,7 @@
+
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/android_support_multidex.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/android_support_multidex.xml
new file mode 100644
index 0000000..a695de2
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/android_support_multidex.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_activity_activity.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_activity_activity.xml
new file mode 100644
index 0000000..f9c4041
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_activity_activity.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation.xml
new file mode 100644
index 0000000..7fd1a19
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_experimental.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_experimental.xml
new file mode 100644
index 0000000..9c3fbbd
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_experimental.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_jvm.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_jvm.xml
new file mode 100644
index 0000000..bf38a7f
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_annotation_annotation_jvm.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat.xml
new file mode 100644
index 0000000..72460ec
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat_resources.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat_resources.xml
new file mode 100644
index 0000000..aaa23cf
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_appcompat_appcompat_resources.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_common.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_common.xml
new file mode 100644
index 0000000..affac6b
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_common.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_runtime.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_runtime.xml
new file mode 100644
index 0000000..9bcac3c
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_arch_core_core_runtime.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection.xml
new file mode 100644
index 0000000..1a451c4
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection_jvm.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection_jvm.xml
new file mode 100644
index 0000000..91a5ff7
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_collection_collection_jvm.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_concurrent_concurrent_futures.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_concurrent_concurrent_futures.xml
new file mode 100644
index 0000000..d484047
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_concurrent_concurrent_futures.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core.xml
new file mode 100644
index 0000000..d937f68
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_ktx.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_ktx.xml
new file mode 100644
index 0000000..3203bb9
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_ktx.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_splashscreen.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_splashscreen.xml
new file mode 100644
index 0000000..241ff29
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_core_core_splashscreen.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_cursoradapter_cursoradapter.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_cursoradapter_cursoradapter.xml
new file mode 100644
index 0000000..2e5715c
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_cursoradapter_cursoradapter.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_customview_customview.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_customview_customview.xml
new file mode 100644
index 0000000..5d66dac
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_customview_customview.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_documentfile_documentfile.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_documentfile_documentfile.xml
new file mode 100644
index 0000000..dfcc871
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_documentfile_documentfile.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_drawerlayout_drawerlayout.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_drawerlayout_drawerlayout.xml
new file mode 100644
index 0000000..cfb80eb
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_drawerlayout_drawerlayout.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2.xml
new file mode 100644
index 0000000..868b903
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2_views_helper.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2_views_helper.xml
new file mode 100644
index 0000000..4e0be82
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_emoji2_emoji2_views_helper.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_fragment_fragment.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_fragment_fragment.xml
new file mode 100644
index 0000000..0084d5f
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_fragment_fragment.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_interpolator_interpolator.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_interpolator_interpolator.xml
new file mode 100644
index 0000000..c36b6fb
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_interpolator_interpolator.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_common.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_common.xml
new file mode 100644
index 0000000..ce36d1b
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_common.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_livedata_core.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_livedata_core.xml
new file mode 100644
index 0000000..78c1a81
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_livedata_core.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_process.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_process.xml
new file mode 100644
index 0000000..6d3d921
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_process.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_runtime.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_runtime.xml
new file mode 100644
index 0000000..0e0047b
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_runtime.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel.xml
new file mode 100644
index 0000000..5df892f
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel_savedstate.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel_savedstate.xml
new file mode 100644
index 0000000..c3b9579
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_lifecycle_lifecycle_viewmodel_savedstate.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_loader_loader.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_loader_loader.xml
new file mode 100644
index 0000000..0a78fd0
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_loader_loader.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_profileinstaller_profileinstaller.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_profileinstaller_profileinstaller.xml
new file mode 100644
index 0000000..d708c14
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_profileinstaller_profileinstaller.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_resourceinspection_resourceinspection_annotation.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_resourceinspection_resourceinspection_annotation.xml
new file mode 100644
index 0000000..b4b5b32
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_resourceinspection_resourceinspection_annotation.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_savedstate_savedstate.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_savedstate_savedstate.xml
new file mode 100644
index 0000000..8643e82
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_savedstate_savedstate.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_startup_startup_runtime.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_startup_startup_runtime.xml
new file mode 100644
index 0000000..820ea4a
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_startup_startup_runtime.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_tracing_tracing.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_tracing_tracing.xml
new file mode 100644
index 0000000..89165ca
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_tracing_tracing.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable.xml
new file mode 100644
index 0000000..cefc0db
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable_animated.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable_animated.xml
new file mode 100644
index 0000000..8b4cfd3
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_vectordrawable_vectordrawable_animated.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_versionedparcelable_versionedparcelable.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_versionedparcelable_versionedparcelable.xml
new file mode 100644
index 0000000..e6779dd
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_versionedparcelable_versionedparcelable.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_viewpager_viewpager.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_viewpager_viewpager.xml
new file mode 100644
index 0000000..c7a9bc3
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/androidx_viewpager_viewpager.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/guava_listenablefuture.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/guava_listenablefuture.xml
new file mode 100644
index 0000000..3807ee6
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/guava_listenablefuture.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_0.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_0.xml
new file mode 100644
index 0000000..01b9077
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_1.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_1.xml
new file mode 100644
index 0000000..8af7bcc
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_annotations_24_0_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_8_0.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_8_0.xml
new file mode 100644
index 0000000..d61cadb
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_8_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_9_10.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_9_10.xml
new file mode 100644
index 0000000..c93b751
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_1_9_10.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_8_0.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_8_0.xml
new file mode 100644
index 0000000..3f01560
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_8_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_9_10.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_9_10.xml
new file mode 100644
index 0000000..238e12b
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_common_1_9_10.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_10.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_10.xml
new file mode 100644
index 0000000..6706051
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_9_10.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_10.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_10.xml
new file mode 100644
index 0000000..59ee76c
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_9_10.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_android_1_7_3.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_android_1_7_3.xml
new file mode 100644
index 0000000..a27f6b0
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_android_1_7_3.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_7_3.xml b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_7_3.xml
new file mode 100644
index 0000000..8d5c42e
--- /dev/null
+++ b/src/.idea/.idea.AvaloniaInside.Shell/.idea/libraries/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_1_7_3.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/AvaloniaInside.Shell.sln b/src/AvaloniaInside.Shell.sln
index b234e8c..62a7f2e 100644
--- a/src/AvaloniaInside.Shell.sln
+++ b/src/AvaloniaInside.Shell.sln
@@ -23,6 +23,16 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{50F7051E
..\README.md = ..\README.md
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShellBottomCustomNavigator", "Example\ShellBottomCustomNavigator\ShellBottomCustomNavigator\ShellBottomCustomNavigator.csproj", "{6D8FCCDB-C66B-4B81-9555-725E1EE912B8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShellBottomCustomNavigator.Android", "Example\ShellBottomCustomNavigator\ShellBottomCustomNavigator.Android\ShellBottomCustomNavigator.Android.csproj", "{4CEAC589-3446-4370-9357-C362E03DB56E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShellBottomCustomNavigator.Desktop", "Example\ShellBottomCustomNavigator\ShellBottomCustomNavigator.Desktop\ShellBottomCustomNavigator.Desktop.csproj", "{6FAADB02-7185-463E-8C93-5DAEE90EF782}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShellBottomCustomNavigator.iOS", "Example\ShellBottomCustomNavigator\ShellBottomCustomNavigator.iOS\ShellBottomCustomNavigator.iOS.csproj", "{C77D28D8-7583-40FE-9EA7-6E8B5F902A8B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShellBottomCustomNavigator.Browser", "Example\ShellBottomCustomNavigator\ShellBottomCustomNavigator.Browser\ShellBottomCustomNavigator.Browser.csproj", "{58D15C4F-ADC5-4550-9224-365FFB38955D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -55,6 +65,26 @@ Global
{75883514-564B-4EBA-83D8-68FD9FDB0CB2}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
{75883514-564B-4EBA-83D8-68FD9FDB0CB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75883514-564B-4EBA-83D8-68FD9FDB0CB2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6D8FCCDB-C66B-4B81-9555-725E1EE912B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D8FCCDB-C66B-4B81-9555-725E1EE912B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6D8FCCDB-C66B-4B81-9555-725E1EE912B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6D8FCCDB-C66B-4B81-9555-725E1EE912B8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4CEAC589-3446-4370-9357-C362E03DB56E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4CEAC589-3446-4370-9357-C362E03DB56E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4CEAC589-3446-4370-9357-C362E03DB56E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4CEAC589-3446-4370-9357-C362E03DB56E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6FAADB02-7185-463E-8C93-5DAEE90EF782}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6FAADB02-7185-463E-8C93-5DAEE90EF782}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6FAADB02-7185-463E-8C93-5DAEE90EF782}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6FAADB02-7185-463E-8C93-5DAEE90EF782}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C77D28D8-7583-40FE-9EA7-6E8B5F902A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C77D28D8-7583-40FE-9EA7-6E8B5F902A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C77D28D8-7583-40FE-9EA7-6E8B5F902A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C77D28D8-7583-40FE-9EA7-6E8B5F902A8B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {58D15C4F-ADC5-4550-9224-365FFB38955D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {58D15C4F-ADC5-4550-9224-365FFB38955D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {58D15C4F-ADC5-4550-9224-365FFB38955D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {58D15C4F-ADC5-4550-9224-365FFB38955D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -65,6 +95,11 @@ Global
{721FC232-3B13-492D-A96B-C6784FEDB10C} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
{E2E23F24-CC66-4940-91EA-68C28DC04602} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
{75883514-564B-4EBA-83D8-68FD9FDB0CB2} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
+ {6D8FCCDB-C66B-4B81-9555-725E1EE912B8} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
+ {4CEAC589-3446-4370-9357-C362E03DB56E} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
+ {6FAADB02-7185-463E-8C93-5DAEE90EF782} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
+ {C77D28D8-7583-40FE-9EA7-6E8B5F902A8B} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
+ {58D15C4F-ADC5-4550-9224-365FFB38955D} = {A495BEFD-2260-489E-A8F3-003EF9603D43}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {10F59C6F-508A-4C41-820B-AAC163C9FDB2}
diff --git a/src/Example/ShellBottomCustomNavigator/.gitignore b/src/Example/ShellBottomCustomNavigator/.gitignore
new file mode 100644
index 0000000..8afdcb6
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/.gitignore
@@ -0,0 +1,454 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Mono auto generated files
+mono_crash.*
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Ww][Ii][Nn]32/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+[Ll]ogs/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUnit
+*.VisualState.xml
+TestResult.xml
+nunit-*.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# Tye
+.tye/
+
+# ASP.NET Scaffolding
+ScaffoldingReadMe.txt
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Coverlet is a free, cross platform Code Coverage Tool
+coverage*.json
+coverage*.xml
+coverage*.info
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# NuGet Symbol Packages
+*.snupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+*.appxbundle
+*.appxupload
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- [Bb]ackup.rdl
+*- [Bb]ackup ([0-9]).rdl
+*- [Bb]ackup ([0-9][0-9]).rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
+
+# Backup folder for Package Reference Convert tool in Visual Studio 2017
+MigrationBackup/
+
+# Ionide (cross platform F# VS Code tools) working folder
+.ionide/
+
+# Fody - auto-generated XML schema
+FodyWeavers.xsd
+
+##
+## Visual studio for Mac
+##
+
+
+# globs
+Makefile.in
+*.userprefs
+*.usertasks
+config.make
+config.status
+aclocal.m4
+install-sh
+autom4te.cache/
+*.tar.gz
+tarballs/
+test-results/
+
+# Mac bundle stuff
+*.dmg
+*.app
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+##
+## Visual Studio Code
+##
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
diff --git a/src/Example/ShellBottomCustomNavigator/Directory.Build.props b/src/Example/ShellBottomCustomNavigator/Directory.Build.props
new file mode 100644
index 0000000..74d63f7
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/Directory.Build.props
@@ -0,0 +1,6 @@
+
+
+ enable
+ 11.0.7
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Icon.png b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Icon.png
new file mode 100644
index 0000000..41a2a61
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Icon.png differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/MainActivity.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/MainActivity.cs
new file mode 100644
index 0000000..d235bbd
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/MainActivity.cs
@@ -0,0 +1,23 @@
+using Android.App;
+using Android.Content.PM;
+using Avalonia;
+using Avalonia.Android;
+using Avalonia.ReactiveUI;
+
+namespace ShellBottomCustomNavigator.Android;
+
+[Activity(
+ Label = "ShellBottomCustomNavigator.Android",
+ Theme = "@style/MyTheme.NoActionBar",
+ Icon = "@drawable/icon",
+ MainLauncher = true,
+ ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)]
+public class MainActivity : AvaloniaMainActivity
+{
+ protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
+ {
+ return base.CustomizeAppBuilder(builder)
+ .WithInterFont()
+ .UseReactiveUI();
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Properties/AndroidManifest.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Properties/AndroidManifest.xml
new file mode 100644
index 0000000..6c0a263
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Properties/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/AboutResources.txt b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/AboutResources.txt
new file mode 100644
index 0000000..c2bca97
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/AboutResources.txt
@@ -0,0 +1,44 @@
+Images, layout descriptions, binary blobs and string dictionaries can be included
+in your application as resource files. Various Android APIs are designed to
+operate on the resource IDs instead of dealing with images, strings or binary blobs
+directly.
+
+For example, a sample Android app that contains a user interface layout (main.axml),
+an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
+would keep its resources in the "Resources" directory of the application:
+
+Resources/
+ drawable/
+ icon.png
+
+ layout/
+ main.axml
+
+ values/
+ strings.xml
+
+In order to get the build system to recognize Android resources, set the build action to
+"AndroidResource". The native Android APIs do not operate directly with filenames, but
+instead operate on resource IDs. When you compile an Android application that uses resources,
+the build system will package the resources for distribution and generate a class called "R"
+(this is an Android convention) that contains the tokens for each one of the resources
+included. For example, for the above Resources layout, this is what the R class would expose:
+
+public class R {
+ public class drawable {
+ public const int icon = 0x123;
+ }
+
+ public class layout {
+ public const int main = 0x456;
+ }
+
+ public class strings {
+ public const int first_string = 0xabc;
+ public const int second_string = 0xbcd;
+ }
+}
+
+You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
+to reference the layout/main.axml file, or R.strings.first_string to reference the first
+string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-night-v31/avalonia_anim.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-night-v31/avalonia_anim.xml
new file mode 100644
index 0000000..dde4b5a
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-night-v31/avalonia_anim.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-v31/avalonia_anim.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-v31/avalonia_anim.xml
new file mode 100644
index 0000000..94f27d9
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable-v31/avalonia_anim.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable/splash_screen.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable/splash_screen.xml
new file mode 100644
index 0000000..2e920b4
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/drawable/splash_screen.xml
@@ -0,0 +1,13 @@
+
+
+
+ -
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-night/colors.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-night/colors.xml
new file mode 100644
index 0000000..3d47b6f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-night/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #212121
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-v31/styles.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-v31/styles.xml
new file mode 100644
index 0000000..d5ecec4
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values-v31/styles.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/colors.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/colors.xml
new file mode 100644
index 0000000..59279d5
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/colors.xml
@@ -0,0 +1,4 @@
+
+
+ #FFFFFF
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/styles.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/styles.xml
new file mode 100644
index 0000000..6e534de
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/Resources/values/styles.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/ShellBottomCustomNavigator.Android.csproj b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/ShellBottomCustomNavigator.Android.csproj
new file mode 100644
index 0000000..fe8c064
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Android/ShellBottomCustomNavigator.Android.csproj
@@ -0,0 +1,29 @@
+
+
+ Exe
+ net8.0-android
+ 21
+ enable
+ com.CompanyName.ShellBottomCustomNavigator
+ 1
+ 1.0
+ apk
+ False
+
+
+
+
+ Resources\drawable\Icon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/Logo.svg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/Logo.svg
new file mode 100644
index 0000000..9685a23
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/Logo.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/app.css b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/app.css
new file mode 100644
index 0000000..a424538
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/app.css
@@ -0,0 +1,74 @@
+:root {
+ --sat: env(safe-area-inset-top);
+ --sar: env(safe-area-inset-right);
+ --sab: env(safe-area-inset-bottom);
+ --sal: env(safe-area-inset-left);
+}
+
+/* HTML styles for the splash screen */
+
+.highlight {
+ color: white;
+ font-size: 2.5rem;
+ display: block;
+}
+
+.purple {
+ color: #8b44ac;
+}
+
+.icon {
+ opacity: 0.05;
+ height: 35%;
+ width: 35%;
+ position: absolute;
+ background-repeat: no-repeat;
+ right: 0px;
+ bottom: 0px;
+ margin-right: 3%;
+ margin-bottom: 5%;
+ z-index: 5000;
+ background-position: right bottom;
+ pointer-events: none;
+}
+
+#avalonia-splash a {
+ color: whitesmoke;
+ text-decoration: none;
+}
+
+.center {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+}
+
+#avalonia-splash {
+ position: relative;
+ height: 100%;
+ width: 100%;
+ color: whitesmoke;
+ background: #1b2a4e;
+ font-family: 'Nunito', sans-serif;
+ background-position: center;
+ background-size: cover;
+ background-repeat: no-repeat;
+ justify-content: center;
+ align-items: center;
+}
+
+.splash-close {
+ animation: fadeout 0.25s linear forwards;
+}
+
+@keyframes fadeout {
+ 0% {
+ opacity: 100%;
+ }
+
+ 100% {
+ opacity: 0;
+ visibility: collapse;
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/favicon.ico b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/favicon.ico
new file mode 100644
index 0000000..da8d49f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/favicon.ico differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/index.html b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/index.html
new file mode 100644
index 0000000..a5b9b0c
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+ ShellBottomCustomNavigator.Browser
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/main.js b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/main.js
new file mode 100644
index 0000000..0dbe2e4
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/AppBundle/main.js
@@ -0,0 +1,13 @@
+import { dotnet } from './dotnet.js'
+
+const is_browser = typeof window != "undefined";
+if (!is_browser) throw new Error(`Expected to be running in a browser`);
+
+const dotnetRuntime = await dotnet
+ .withDiagnosticTracing(false)
+ .withApplicationArgumentsFromQuery()
+ .create();
+
+const config = dotnetRuntime.getConfig();
+
+await dotnetRuntime.runMainAndExit(config.mainAssemblyName, [window.location.search]);
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Program.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Program.cs
new file mode 100644
index 0000000..83b77a7
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Program.cs
@@ -0,0 +1,19 @@
+using System.Runtime.Versioning;
+using System.Threading.Tasks;
+using Avalonia;
+using Avalonia.Browser;
+using Avalonia.ReactiveUI;
+using ShellBottomCustomNavigator;
+
+[assembly: SupportedOSPlatform("browser")]
+
+internal sealed partial class Program
+{
+ private static Task Main(string[] args) => BuildAvaloniaApp()
+ .WithInterFont()
+ .UseReactiveUI()
+ .StartBrowserAppAsync("out");
+
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure();
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Properties/launchSettings.json b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Properties/launchSettings.json
new file mode 100644
index 0000000..bf2b532
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/Properties/launchSettings.json
@@ -0,0 +1,13 @@
+{
+ "profiles": {
+ "ShellBottomCustomNavigator.Browser": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "https://localhost:5001;http://localhost:5000",
+ "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/debug?browser={browserInspectUri}"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/ShellBottomCustomNavigator.Browser.csproj b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/ShellBottomCustomNavigator.Browser.csproj
new file mode 100644
index 0000000..3c3aa50
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/ShellBottomCustomNavigator.Browser.csproj
@@ -0,0 +1,21 @@
+
+
+ net8.0
+ browser-wasm
+ AppBundle\main.js
+ Exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/runtimeconfig.template.json b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/runtimeconfig.template.json
new file mode 100644
index 0000000..c6990ba
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Browser/runtimeconfig.template.json
@@ -0,0 +1,11 @@
+{
+ "wasmHostProperties": {
+ "perHostConfig": [
+ {
+ "name": "browser",
+ "html-path": "index.html",
+ "Host": "browser"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/Program.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/Program.cs
new file mode 100644
index 0000000..f7e8418
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/Program.cs
@@ -0,0 +1,25 @@
+using System;
+using Avalonia;
+using Avalonia.ReactiveUI;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Desktop;
+
+sealed class Program
+{
+ // Initialization code. Don't use any Avalonia, third-party APIs or any
+ // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
+ // yet and stuff might break.
+ [STAThread]
+ public static void Main(string[] args) => BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
+
+ // Avalonia configuration, don't remove; also used by visual designer.
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .WithInterFont()
+ .LogToTrace()
+ .UseReactiveUI()
+ .UseShell();
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/ShellBottomCustomNavigator.Desktop.csproj b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/ShellBottomCustomNavigator.Desktop.csproj
new file mode 100644
index 0000000..e06faf3
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/ShellBottomCustomNavigator.Desktop.csproj
@@ -0,0 +1,25 @@
+
+
+ WinExe
+
+ net8.0
+ enable
+ true
+
+
+
+ app.manifest
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/app.manifest b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/app.manifest
new file mode 100644
index 0000000..d75e229
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.Desktop/app.manifest
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/AppDelegate.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/AppDelegate.cs
new file mode 100644
index 0000000..759995f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/AppDelegate.cs
@@ -0,0 +1,25 @@
+using Foundation;
+using UIKit;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.iOS;
+using Avalonia.Media;
+using Avalonia.ReactiveUI;
+
+namespace ShellBottomCustomNavigator.iOS;
+
+// The UIApplicationDelegate for the application. This class is responsible for launching the
+// User Interface of the application, as well as listening (and optionally responding) to
+// application events from iOS.
+[Register("AppDelegate")]
+#pragma warning disable CA1711 // Identifiers should not have incorrect suffix
+public partial class AppDelegate : AvaloniaAppDelegate
+#pragma warning restore CA1711 // Identifiers should not have incorrect suffix
+{
+ protected override AppBuilder CustomizeAppBuilder(AppBuilder builder)
+ {
+ return base.CustomizeAppBuilder(builder)
+ .WithInterFont()
+ .UseReactiveUI();
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Entitlements.plist b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Entitlements.plist
new file mode 100644
index 0000000..0c67376
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Entitlements.plist
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Info.plist b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Info.plist
new file mode 100644
index 0000000..7aa282d
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Info.plist
@@ -0,0 +1,43 @@
+
+
+
+
+ CFBundleDisplayName
+ ShellBottomCustomNavigator
+ CFBundleIdentifier
+ companyName.ShellBottomCustomNavigator
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ MinimumOSVersion
+ 13.0
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Main.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Main.cs
new file mode 100644
index 0000000..b041e18
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Main.cs
@@ -0,0 +1,14 @@
+using UIKit;
+
+namespace ShellBottomCustomNavigator.iOS;
+
+public class Application
+{
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, typeof(AppDelegate));
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Resources/LaunchScreen.xib b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Resources/LaunchScreen.xib
new file mode 100644
index 0000000..9cf8b87
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/Resources/LaunchScreen.xib
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/ShellBottomCustomNavigator.iOS.csproj b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/ShellBottomCustomNavigator.iOS.csproj
new file mode 100644
index 0000000..ebb73cf
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.iOS/ShellBottomCustomNavigator.iOS.csproj
@@ -0,0 +1,17 @@
+
+
+ Exe
+ net8.0-ios
+ 13.0
+ enable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.sln b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.sln
new file mode 100644
index 0000000..ae18379
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator.sln
@@ -0,0 +1,54 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.3.32811.315
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShellBottomCustomNavigator", "ShellBottomCustomNavigator\ShellBottomCustomNavigator.csproj", "{EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShellBottomCustomNavigator.Desktop", "ShellBottomCustomNavigator.Desktop\ShellBottomCustomNavigator.Desktop.csproj", "{ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShellBottomCustomNavigator.Browser", "ShellBottomCustomNavigator.Browser\ShellBottomCustomNavigator.Browser.csproj", "{1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShellBottomCustomNavigator.iOS", "ShellBottomCustomNavigator.iOS\ShellBottomCustomNavigator.iOS.csproj", "{EBD9022F-BC83-4846-9A11-6F7F3772DC64}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShellBottomCustomNavigator.Android", "ShellBottomCustomNavigator.Android\ShellBottomCustomNavigator.Android.csproj", "{7AD1DAC8-7FBE-49D5-8614-7321233DB82E}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3DA99C4E-89E3-4049-9C22-0A7EC60D83D8}"
+ ProjectSection(SolutionItems) = preProject
+ Directory.Build.props = Directory.Build.props
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EBFA8512-1EA5-4D8C-B4AC-AB5B48A6D568}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ABC31E74-02FF-46EB-B3B2-4E6AE43B456C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1C1A049E-235C-4CD0-B6FA-D53AC418F4DA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EBD9022F-BC83-4846-9A11-6F7F3772DC64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7AD1DAC8-7FBE-49D5-8614-7321233DB82E}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {83CB65B8-011F-4ED7-BCD3-A6CFA935EF7E}
+ EndGlobalSection
+EndGlobal
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml
new file mode 100644
index 0000000..d48c664
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml.cs
new file mode 100644
index 0000000..04143d2
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/App.axaml.cs
@@ -0,0 +1,40 @@
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+using Projektanker.Icons.Avalonia;
+using Projektanker.Icons.Avalonia.FontAwesome;
+using ShellBottomCustomNavigator.ViewModels;
+using ShellBottomCustomNavigator.Views;
+
+namespace ShellBottomCustomNavigator;
+
+public partial class App : Application
+{
+ public override void Initialize()
+ {
+ IconProvider.Current
+ .Register();
+
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ desktop.MainWindow = new MainWindow
+ {
+ DataContext = new MainViewModel()
+ };
+ }
+ else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
+ {
+ singleViewPlatform.MainView = new MainView
+ {
+ DataContext = new MainViewModel()
+ };
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/Icons/truck-fast-solid.png b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/Icons/truck-fast-solid.png
new file mode 100644
index 0000000..6d9b431
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/Icons/truck-fast-solid.png differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/avalonia-logo.ico b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/avalonia-logo.ico
new file mode 100644
index 0000000..da8d49f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/avalonia-logo.ico differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/Donna_Moore.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/Donna_Moore.jpg
new file mode 100644
index 0000000..5450653
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/Donna_Moore.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1000.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1000.jpg
new file mode 100644
index 0000000..913e2bc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1000.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1001.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1001.jpg
new file mode 100644
index 0000000..913e2bc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1001.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1002.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1002.jpg
new file mode 100644
index 0000000..913e2bc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1002.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1003.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1003.jpg
new file mode 100644
index 0000000..913e2bc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1003.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1007.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1007.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1007.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1010.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1010.jpg
new file mode 100644
index 0000000..f08b42e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1010.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1011.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1011.jpg
new file mode 100644
index 0000000..f08b42e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1011.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1020.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1020.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1020.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1021.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1021.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1021.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1022.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1022.jpg
new file mode 100644
index 0000000..f0ad322
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1022.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1023.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1023.jpg
new file mode 100644
index 0000000..f0ad322
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1023.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1030.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1030.jpg
new file mode 100644
index 0000000..982af03
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1030.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1031.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1031.jpg
new file mode 100644
index 0000000..982af03
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1031.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1032.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1032.jpg
new file mode 100644
index 0000000..04b1536
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1032.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1035.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1035.jpg
new file mode 100644
index 0000000..d898367
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1035.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1036.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1036.jpg
new file mode 100644
index 0000000..855ad73
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1036.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1037.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1037.jpg
new file mode 100644
index 0000000..04b1536
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1037.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1040.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1040.jpg
new file mode 100644
index 0000000..e3c77df
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1040.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1041.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1041.jpg
new file mode 100644
index 0000000..b947564
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1041.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1042.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1042.jpg
new file mode 100644
index 0000000..b8b16b1
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1042.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1050.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1050.jpg
new file mode 100644
index 0000000..18cbe54
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1050.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1051.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1051.jpg
new file mode 100644
index 0000000..aea5c63
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1051.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1052.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1052.jpg
new file mode 100644
index 0000000..2c97261
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1052.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1055.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1055.jpg
new file mode 100644
index 0000000..4b0c565
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1055.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1056.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1056.jpg
new file mode 100644
index 0000000..653474a
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1056.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1060.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1060.jpg
new file mode 100644
index 0000000..ebad8d0
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1060.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1061.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1061.jpg
new file mode 100644
index 0000000..4391415
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1061.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1062.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1062.jpg
new file mode 100644
index 0000000..ac8ada2
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1062.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1063.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1063.jpg
new file mode 100644
index 0000000..62b6d3f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1063.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1064.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1064.jpg
new file mode 100644
index 0000000..2828e4b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1064.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1065.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1065.jpg
new file mode 100644
index 0000000..babb2f1
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1065.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1066.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1066.jpg
new file mode 100644
index 0000000..15945de
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1066.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1067.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1067.jpg
new file mode 100644
index 0000000..3e4c9f4
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1067.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1068.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1068.jpg
new file mode 100644
index 0000000..8c13f36
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1068.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1069.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1069.jpg
new file mode 100644
index 0000000..9b11b77
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1069.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1070.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1070.jpg
new file mode 100644
index 0000000..c036e66
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1070.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1071.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1071.jpg
new file mode 100644
index 0000000..c036e66
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1071.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1072.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1072.jpg
new file mode 100644
index 0000000..dd04a46
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1072.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1073.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1073.jpg
new file mode 100644
index 0000000..dd04a46
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1073.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1080.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1080.jpg
new file mode 100644
index 0000000..d40da13
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1080.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1081.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1081.jpg
new file mode 100644
index 0000000..d40da13
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1081.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1082.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1082.jpg
new file mode 100644
index 0000000..80ef1fc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1082.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1083.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1083.jpg
new file mode 100644
index 0000000..80ef1fc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1083.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1085.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1085.jpg
new file mode 100644
index 0000000..61ecdaf
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1085.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1090.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1090.jpg
new file mode 100644
index 0000000..d3ddb55
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1090.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1091.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1091.jpg
new file mode 100644
index 0000000..898b20b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1091.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1092.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1092.jpg
new file mode 100644
index 0000000..d3ddb55
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1092.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1095.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1095.jpg
new file mode 100644
index 0000000..71e41cf
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1095.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1096.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1096.jpg
new file mode 100644
index 0000000..7a77b4f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1096.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1097.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1097.jpg
new file mode 100644
index 0000000..4b22e53
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1097.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1100.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1100.jpg
new file mode 100644
index 0000000..4b605c1
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1100.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1101.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1101.jpg
new file mode 100644
index 0000000..5737952
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1101.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1102.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1102.jpg
new file mode 100644
index 0000000..1f88bea
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1102.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1103.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1103.jpg
new file mode 100644
index 0000000..da09dcc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1103.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1104.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1104.jpg
new file mode 100644
index 0000000..4b605c1
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1104.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1105.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1105.jpg
new file mode 100644
index 0000000..5737952
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1105.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1106.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1106.jpg
new file mode 100644
index 0000000..1f88bea
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1106.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1107.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1107.jpg
new file mode 100644
index 0000000..da09dcc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1107.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1110.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1110.jpg
new file mode 100644
index 0000000..a02ed75
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1110.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1111.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1111.jpg
new file mode 100644
index 0000000..a02ed75
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1111.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1112.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1112.jpg
new file mode 100644
index 0000000..66f04a4
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1112.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1113.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1113.jpg
new file mode 100644
index 0000000..8392225
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1113.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1114.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1114.jpg
new file mode 100644
index 0000000..fe37829
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1114.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1115.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1115.jpg
new file mode 100644
index 0000000..9ec7441
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1115.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1116.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1116.jpg
new file mode 100644
index 0000000..9ec7441
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1116.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1117.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1117.jpg
new file mode 100644
index 0000000..9ec7441
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1117.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1118.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1118.jpg
new file mode 100644
index 0000000..70542e5
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1118.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1119.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1119.jpg
new file mode 100644
index 0000000..a2b3930
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1119.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1120.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1120.jpg
new file mode 100644
index 0000000..f6157a4
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1120.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1137.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1137.jpg
new file mode 100644
index 0000000..855ad73
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1137.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1138.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1138.jpg
new file mode 100644
index 0000000..788c000
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1138.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1210.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1210.jpg
new file mode 100644
index 0000000..257d5eb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1210.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1251.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1251.jpg
new file mode 100644
index 0000000..da40954
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1251.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1252.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1252.jpg
new file mode 100644
index 0000000..5deae23
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1252.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1253.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1253.jpg
new file mode 100644
index 0000000..775cb12
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1253.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1254.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1254.jpg
new file mode 100644
index 0000000..2659039
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1254.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1255.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1255.jpg
new file mode 100644
index 0000000..2fe0457
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1255.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1256.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1256.jpg
new file mode 100644
index 0000000..287abab
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1256.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1257.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1257.jpg
new file mode 100644
index 0000000..e2b2ee9
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1257.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1258.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1258.jpg
new file mode 100644
index 0000000..22a7ec4
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1258.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1500.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1500.jpg
new file mode 100644
index 0000000..257d5eb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1500.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1501.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1501.jpg
new file mode 100644
index 0000000..257d5eb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1501.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1502.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1502.jpg
new file mode 100644
index 0000000..1e5d2c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1502.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1600.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1600.jpg
new file mode 100644
index 0000000..257d5eb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1600.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1601.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1601.jpg
new file mode 100644
index 0000000..257d5eb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1601.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1602.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1602.jpg
new file mode 100644
index 0000000..1e5d2c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1602.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1603.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1603.jpg
new file mode 100644
index 0000000..1e5d2c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-1603.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2000.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2000.jpg
new file mode 100644
index 0000000..7b60f3b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2000.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2001.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2001.jpg
new file mode 100644
index 0000000..a6975b2
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2001.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2002.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2002.jpg
new file mode 100644
index 0000000..a6975b2
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2002.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2020.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2020.jpg
new file mode 100644
index 0000000..7d7a7c6
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2020.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2025.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2025.jpg
new file mode 100644
index 0000000..c2dc494
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2025.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2026.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2026.jpg
new file mode 100644
index 0000000..51bff3b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2026.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2027.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2027.jpg
new file mode 100644
index 0000000..524a49b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-2027.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100-large.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100-large.jpg
new file mode 100644
index 0000000..81c4bab
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100-large.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100.jpg
new file mode 100644
index 0000000..f5feb4e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6100.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6101.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6101.jpg
new file mode 100644
index 0000000..f5feb4e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6101.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6102.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6102.jpg
new file mode 100644
index 0000000..f5feb4e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6102.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6110.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6110.jpg
new file mode 100644
index 0000000..10f93fa
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6110.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6111.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6111.jpg
new file mode 100644
index 0000000..7b60f3b
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6111.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120-large.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120-large.jpg
new file mode 100644
index 0000000..d98350f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120-large.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120.jpg
new file mode 100644
index 0000000..98568e8
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6120.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6121.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6121.jpg
new file mode 100644
index 0000000..5c64415
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6121.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6122.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6122.jpg
new file mode 100644
index 0000000..3e9679d
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6122.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6123.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6123.jpg
new file mode 100644
index 0000000..3e9679d
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6123.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6130.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6130.jpg
new file mode 100644
index 0000000..b87341f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6130.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6131.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6131.jpg
new file mode 100644
index 0000000..996ff0f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6131.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6132.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6132.jpg
new file mode 100644
index 0000000..04b1536
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-6132.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7000.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7000.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7000.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7010.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7010.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7010.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7020.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7020.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7020.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7030.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7030.jpg
new file mode 100644
index 0000000..347e0c3
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7030.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777-large.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777-large.jpg
new file mode 100644
index 0000000..a22e9a2
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777-large.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777.jpg
new file mode 100644
index 0000000..e77e1be
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-7777.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8000.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8000.jpg
new file mode 100644
index 0000000..bf3184a
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8000.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8001.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8001.jpg
new file mode 100644
index 0000000..87720aa
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8001.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8002.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8002.jpg
new file mode 100644
index 0000000..913e2bc
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8002.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8003.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8003.jpg
new file mode 100644
index 0000000..f08b42e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-8003.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9991.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9991.jpg
new file mode 100644
index 0000000..83f940f
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9991.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9992.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9992.jpg
new file mode 100644
index 0000000..6fd9583
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9992.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9993.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9993.jpg
new file mode 100644
index 0000000..dfee60a
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9993.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9994.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9994.jpg
new file mode 100644
index 0000000..6b8d07e
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9994.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9995.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9995.jpg
new file mode 100644
index 0000000..0b113b9
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9995.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9996.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9996.jpg
new file mode 100644
index 0000000..72c754c
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9996.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9997.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9997.jpg
new file mode 100644
index 0000000..065cbda
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9997.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9998.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9998.jpg
new file mode 100644
index 0000000..f0ad322
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9998.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9999.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9999.jpg
new file mode 100644
index 0000000..b0720ab
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/HT-9999.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/John_Miller.png b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/John_Miller.png
new file mode 100644
index 0000000..9504c70
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/John_Miller.png differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/PF-1000.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/PF-1000.jpg
new file mode 100644
index 0000000..e27e20c
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/PF-1000.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273303_low_jpg_srgb.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273303_low_jpg_srgb.jpg
new file mode 100644
index 0000000..931957c
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273303_low_jpg_srgb.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273537_low_jpg_srgb.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273537_low_jpg_srgb.jpg
new file mode 100644
index 0000000..c598b2a
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/273537_low_jpg_srgb.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg
new file mode 100644
index 0000000..8f478bb
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/bigimgs/274731_high_jpg_eci_rgb.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/johnDoe.png b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/johnDoe.png
new file mode 100644
index 0000000..6da9836
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/johnDoe.png differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants.jpg
new file mode 100644
index 0000000..0d713da
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants_small.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants_small.jpg
new file mode 100644
index 0000000..6462043
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/ALotOfElephants_small.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/elephant.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/elephant.jpg
new file mode 100644
index 0000000..489db21
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/elephant.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/flatFish.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/flatFish.jpg
new file mode 100644
index 0000000..c0a8d18
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/flatFish.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/horses.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/horses.jpg
new file mode 100644
index 0000000..9f4894d
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/nature/horses.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/screw.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/screw.jpg
new file mode 100644
index 0000000..7200587
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/images/screw.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/omid-img.jpg b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/omid-img.jpg
new file mode 100644
index 0000000..f5535ec
Binary files /dev/null and b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Assets/omid-img.jpg differ
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Converters/BitmapAssetValueConverter.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Converters/BitmapAssetValueConverter.cs
new file mode 100644
index 0000000..ec97ead
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Converters/BitmapAssetValueConverter.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Globalization;
+using Avalonia.Data.Converters;
+using Avalonia.Media.Imaging;
+using ShellBottomCustomNavigator.Helpers;
+
+namespace ShellBottomCustomNavigator.Converters;
+
+public class BitmapAssetValueConverter : IValueConverter
+{
+ public static BitmapAssetValueConverter Instance = new BitmapAssetValueConverter();
+
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (value == null)
+ return null;
+
+ if (value is string rawUri && targetType.IsAssignableFrom(typeof(Bitmap)))
+ {
+ return rawUri.GetBitmapFromAssets();
+ }
+
+ throw new NotSupportedException();
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotSupportedException();
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helper.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helper.cs
new file mode 100644
index 0000000..f94dca3
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helper.cs
@@ -0,0 +1,18 @@
+using Avalonia.Controls;
+using Avalonia.VisualTree;
+
+namespace ShellBottomCustomNavigator;
+public static class Helper
+{
+ public static void SetCarouselToTabControl(Carousel carousel, bool v)
+ {
+ var tabControl = carousel.FindAncestorOfType();
+ if (tabControl == null)
+ {
+ carousel.AttachedToVisualTree += delegate { SetCarouselToTabControl(carousel, true); };
+ return;
+ }
+
+ carousel.ItemsSource = tabControl.Items;
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helpers/ImageHelper.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helpers/ImageHelper.cs
new file mode 100644
index 0000000..e8b3b23
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Helpers/ImageHelper.cs
@@ -0,0 +1,33 @@
+using System;
+using Avalonia;
+using Avalonia.Media.Imaging;
+using Avalonia.Platform;
+using Splat;
+
+namespace ShellBottomCustomNavigator.Helpers;
+
+public static class ImageHelper
+{
+ public static Bitmap? GetBitmapFromAssets(this string rawUri)
+ {
+ Uri uri;
+
+ // Allow for assembly overrides
+ if (rawUri.StartsWith("avares://"))
+ {
+ uri = new Uri(rawUri);
+ }
+ else
+ {
+ var assemblyName = typeof(ImageHelper).Assembly.GetName().Name;
+ uri = new Uri($"avares://{assemblyName}/{rawUri.TrimStart('/')}");
+ }
+
+
+ //var assets = Locator.Current.GetService();
+ using var asset = AssetLoader.Open(uri);
+
+ return new Bitmap(asset);
+ }
+
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/DummyPlace.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/DummyPlace.cs
new file mode 100644
index 0000000..8fede11
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/DummyPlace.cs
@@ -0,0 +1,24 @@
+using System;
+using System.IO;
+using System.Reflection;
+using Newtonsoft.Json;
+
+namespace ShellBottomCustomNavigator.Models;
+
+public static class DummyPlace
+{
+ public static ProductDto[] Products { get; }
+
+ public static string GetProductsJson()
+ {
+ var assembly = Assembly.GetExecutingAssembly();
+ using var stream = assembly.GetManifestResourceStream("ShellBottomCustomNavigator.Resources.Products.json");
+ using var reader = new StreamReader(stream);
+ return reader.ReadToEnd();
+ }
+
+ static DummyPlace()
+ {
+ Products = JsonConvert.DeserializeObject(GetProductsJson()) ?? throw new Exception("Where is my resource?!");
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/ProductDto.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/ProductDto.cs
new file mode 100644
index 0000000..be45086
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Models/ProductDto.cs
@@ -0,0 +1,57 @@
+using Newtonsoft.Json;
+
+namespace ShellBottomCustomNavigator.Models;
+
+public partial class ProductDto
+{
+ [JsonProperty("ProductId")]
+ public string ProductId { get; set; }
+
+ [JsonProperty("Category")]
+ public string Category { get; set; }
+
+ [JsonProperty("MainCategory")]
+ public string MainCategory { get; set; }
+
+ [JsonProperty("SupplierName")]
+ public string SupplierName { get; set; }
+
+ [JsonProperty("Weight")]
+ public string Weight { get; set; }
+
+ [JsonProperty("WeightUnit")]
+ public string WeightUnit { get; set; }
+
+ [JsonProperty("ShortDescription")]
+ public string ShortDescription { get; set; }
+
+ [JsonProperty("Name")]
+ public string Name { get; set; }
+
+ [JsonProperty("PictureUrl")]
+ public string PictureUrl { get; set; }
+
+ [JsonProperty("Status")]
+ public string Status { get; set; }
+
+ [JsonProperty("Price")]
+ // [JsonConverter(typeof(ParseStringConverter))]
+ public decimal Price { get; set; }
+
+ [JsonProperty("DimensionWidth")]
+ // [JsonConverter(typeof(ParseStringConverter))]
+ public double DimensionWidth { get; set; }
+
+ [JsonProperty("DimensionDepth")]
+ // [JsonConverter(typeof(ParseStringConverter))]
+ public double DimensionDepth { get; set; }
+
+ [JsonProperty("DimensionHeight")]
+ public double DimensionHeight { get; set; }
+
+ [JsonProperty("Unit")]
+ public string Unit { get; set; }
+
+ [JsonProperty("CurrencyCode")]
+ public string CurrencyCode { get; set; }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Resources/Products.json b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Resources/Products.json
new file mode 100644
index 0000000..38fd104
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Resources/Products.json
@@ -0,0 +1,2217 @@
+[
+ {
+ "ProductId": "HT-1000",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Very Best Screens",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Basic 15 with 2,80 GHz quad core, 15\" LCD, 4 GB DDR3 RAM, 500 GB Hard Disc, Windows 8 Pro",
+ "Name": "Notebook Basic 15",
+ "PictureUrl": "/Assets/images/HT-1000.jpg",
+ "Status": "A",
+ "Price": "956",
+ "DimensionWidth": "30",
+ "DimensionDepth": "18",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+
+ },
+ {
+ "ProductId": "HT-1001",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Very Best Screens",
+ "Weight": "4.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Basic 17 with 2,80 GHz quad core, 17\" LCD, 4 GB DDR3 RAM, 500 GB Hard Disc, Windows 8 Pro",
+ "Name": "Notebook Basic 17",
+ "PictureUrl": "/Assets/images/HT-1001.jpg",
+ "Status": "A",
+ "Price": "1249",
+ "DimensionWidth": "29",
+ "DimensionDepth": "17",
+ "DimensionHeight": "3.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1002",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Very Best Screens",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Basic 18 with 2,80 GHz quad core, 18\" LCD, 8 GB DDR3 RAM, 1000 GB Hard Disc, Windows 8 Pro",
+ "Name": "Notebook Basic 18",
+ "PictureUrl": "/Assets/images/HT-1002.jpg",
+ "Status": "A",
+ "Price": "1570",
+ "DimensionWidth": "28",
+ "DimensionDepth": "19",
+ "DimensionHeight": "2.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1003",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Smartcards",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Basic 19 with 2,80 GHz quad core, 19\" LCD, 8 GB DDR3 RAM, 1000 GB Hard Disc, Windows 8 Pro",
+ "Name": "Notebook Basic 19",
+ "PictureUrl": "/Assets/images/HT-1003.jpg",
+ "Status": "A",
+ "Price": "1650",
+ "DimensionWidth": "32",
+ "DimensionDepth": "21",
+ "DimensionHeight": "4",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1007",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Digital Organizer with State-of-the-Art Storage Encryption",
+ "Name": "ITelO Vault",
+ "PictureUrl": "/Assets/images/HT-1007.jpg",
+ "Status": "D",
+ "Price": "299",
+ "DimensionWidth": "32",
+ "DimensionDepth": "22",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1010",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Very Best Screens",
+ "Weight": "4.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Professional 15 with 2,80 GHz quad core, 15\" Multitouch LCD, 8 GB DDR3 RAM, 500 GB SSD - DVD-Writer (DVD-R/+R/-RW/-RAM),Windows 8 Pro",
+ "Name": "Notebook Professional 15",
+ "PictureUrl": "/Assets/images/HT-1010.jpg",
+ "Status": "A",
+ "Price": "1999",
+ "DimensionWidth": "33",
+ "DimensionDepth": "20",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1011",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Very Best Screens",
+ "Weight": "4.1",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook Professional 17 with 2,80 GHz quad core, 17\" Multitouch LCD, 8 GB DDR3 RAM, 500 GB SSD - DVD-Writer (DVD-R/+R/-RW/-RAM),Windows 8 Pro",
+ "Name": "Notebook Professional 17",
+ "PictureUrl": "/Assets/images/HT-1011.jpg",
+ "Status": "O",
+ "Price": "2299",
+ "DimensionWidth": "33",
+ "DimensionDepth": "23",
+ "DimensionHeight": "2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1020",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.16",
+ "WeightUnit": "KG",
+ "ShortDescription": "Digital Organizer with State-of-the-Art Encryption for Storage and Network Communications",
+ "Name": "ITelO Vault Net",
+ "PictureUrl": "/Assets/images/HT-1020.jpg",
+ "Status": "O",
+ "Price": "459",
+ "DimensionWidth": "10",
+ "DimensionDepth": "1.8",
+ "DimensionHeight": "17",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1021",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.18",
+ "WeightUnit": "KG",
+ "ShortDescription": "Digital Organizer with State-of-the-Art Encryption for Storage and Secure Stellite Link",
+ "Name": "ITelO Vault SAT",
+ "PictureUrl": "/Assets/images/HT-1021.jpg",
+ "Status": "D",
+ "Price": "149",
+ "DimensionWidth": "11",
+ "DimensionDepth": "1.7",
+ "DimensionHeight": "18",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1022",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "32 GB Digital Assistant with high-resolution color screen",
+ "Name": "Comfort Easy",
+ "PictureUrl": "/Assets/images/HT-1022.jpg",
+ "Status": "A",
+ "Price": "1679",
+ "DimensionWidth": "84",
+ "DimensionDepth": "1.5",
+ "DimensionHeight": "14",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1023",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "64 GB Digital Assistant with high-resolution color screen and synthesized voice output",
+ "Name": "Comfort Senior",
+ "PictureUrl": "/Assets/images/HT-1023.jpg",
+ "Status": "A",
+ "Price": "512",
+ "DimensionWidth": "80",
+ "DimensionDepth": "1.6",
+ "DimensionHeight": "13",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1030",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "21",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 1920 x 1080 @ 85Hz, Dot Pitch: 0.27mm",
+ "Name": "Ergo Screen E-I",
+ "PictureUrl": "/Assets/images/HT-1030.jpg",
+ "Status": "D",
+ "Price": "230",
+ "DimensionWidth": "37",
+ "DimensionDepth": "12",
+ "DimensionHeight": "36",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1031",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "21",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 1920 x 1200 @ 85Hz, Dot Pitch: 0.26mm",
+ "Name": "Ergo Screen E-II",
+ "PictureUrl": "/Assets/images/HT-1031.jpg",
+ "Status": "O",
+ "Price": "285",
+ "DimensionWidth": "40.8",
+ "DimensionDepth": "19",
+ "DimensionHeight": "43",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1032",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "21",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 2560 x 1440 @ 85Hz, Dot Pitch: 0.25mm",
+ "Name": "Ergo Screen E-III",
+ "PictureUrl": "/Assets/images/HT-1032.jpg",
+ "Status": "A",
+ "Price": "345",
+ "DimensionWidth": "40.8",
+ "DimensionDepth": "19",
+ "DimensionHeight": "43",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1035",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "14",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 1600 x 1200 @ 85Hz, Dot Pitch: 0.24mm",
+ "Name": "Flat Basic",
+ "PictureUrl": "/Assets/images/HT-1035.jpg",
+ "Status": "A",
+ "Price": "399",
+ "DimensionWidth": "39",
+ "DimensionDepth": "20",
+ "DimensionHeight": "41",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1036",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "15",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 2048 x 1080 @ 85Hz, Dot Pitch: 0.26mm",
+ "Name": "Flat Future",
+ "PictureUrl": "/Assets/images/HT-1036.jpg",
+ "Status": "O",
+ "Price": "430",
+ "DimensionWidth": "45",
+ "DimensionDepth": "26",
+ "DimensionHeight": "46",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1037",
+ "Category": "FT",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Very Best Screens",
+ "Weight": "17",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 2016 x 1512 @ 85Hz, Dot Pitch: 0.24mm",
+ "Name": "Flat XL",
+ "PictureUrl": "/Assets/images/HT-1037.jpg",
+ "Status": "A",
+ "Price": "1230",
+ "DimensionWidth": "54.5",
+ "DimensionDepth": "22.1",
+ "DimensionHeight": "39.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1040",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Alpha Printers",
+ "Weight": "32",
+ "WeightUnit": "KG",
+ "ShortDescription": "Print 2400 dpi image quality color documents at speeds of up to 32 ppm (color) or 36 ppm (monochrome), letter/A4. Powerful 500 MHz processor, 512MB of memory",
+ "Name": "Laser Professional Eco",
+ "PictureUrl": "/Assets/images/HT-1040.jpg",
+ "Status": "A",
+ "Price": "830",
+ "DimensionWidth": "51",
+ "DimensionDepth": "46",
+ "DimensionHeight": "30",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1041",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Alpha Printers",
+ "Weight": "23",
+ "WeightUnit": "KG",
+ "ShortDescription": "Up to 22 ppm color or 24 ppm monochrome A4/letter, powerful 500 MHz processor and 128MB of memory",
+ "Name": "Laser Basic",
+ "PictureUrl": "/Assets/images/HT-1041.jpg",
+ "Status": "A",
+ "Price": "490",
+ "DimensionWidth": "48",
+ "DimensionDepth": "42",
+ "DimensionHeight": "26",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1042",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Alpha Printers",
+ "Weight": "17",
+ "WeightUnit": "KG",
+ "ShortDescription": "Print up to 25 ppm letter and 24 ppm A4 color or monochrome, with a first-page-out-time of less than 13 seconds for monochrome and less than 15 seconds for color",
+ "Name": "Laser Allround",
+ "PictureUrl": "/Assets/images/HT-1042.jpg",
+ "Status": "A",
+ "Price": "349",
+ "DimensionWidth": "53",
+ "DimensionDepth": "50",
+ "DimensionHeight": "65",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1050",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Alpha Printers",
+ "Weight": "3",
+ "WeightUnit": "KG",
+ "ShortDescription": "4800 dpi x 1200 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB, Ethernet",
+ "Name": "Ultra Jet Super Color",
+ "PictureUrl": "/Assets/images/HT-1050.jpg",
+ "Status": "A",
+ "Price": "139",
+ "DimensionWidth": "41",
+ "DimensionDepth": "41",
+ "DimensionHeight": "28",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1051",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Printer for All",
+ "Weight": "1.9",
+ "WeightUnit": "KG",
+ "ShortDescription": "1000 dpi x 1000 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB - excellent dimensions for the small office",
+ "Name": "Ultra Jet Mobile",
+ "PictureUrl": "/Assets/images/HT-1051.jpg",
+ "Status": "A",
+ "Price": "99",
+ "DimensionWidth": "46",
+ "DimensionDepth": "32",
+ "DimensionHeight": "25",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1052",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Printer for All",
+ "Weight": "18",
+ "WeightUnit": "KG",
+ "ShortDescription": "4800 dpi x 1200 dpi - up to 35 ppm (mono) / up to 34 ppm (color) - capacity: 250 sheets - Hi-Speed USB2.0, Ethernet",
+ "Name": "Ultra Jet Super Highspeed",
+ "PictureUrl": "/Assets/images/HT-1052.jpg",
+ "Status": "A",
+ "Price": "170",
+ "DimensionWidth": "41",
+ "DimensionDepth": "41",
+ "DimensionHeight": "28",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1055",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Printer for All",
+ "Weight": "6.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "1000 dpi x 1000 dpi - up to 16 ppm (mono) / up to 15 ppm (color)- capacity 80 sheets - scanner (216 x 297 mm, 1200dpi x 2400dpi)",
+ "Name": "Multi Print",
+ "PictureUrl": "/Assets/images/HT-1055.jpg",
+ "Status": "A",
+ "Price": "99",
+ "DimensionWidth": "55",
+ "DimensionDepth": "45",
+ "DimensionHeight": "29",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1056",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Printer for All",
+ "Weight": "4.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "1200 dpi x 1200 dpi - up to 25 ppm (mono) / up to 24 ppm (color)- capacity 80 sheets - scanner (216 x 297 mm, 2400dpi x 4800dpi, high resolution)",
+ "Name": "Multi Color",
+ "PictureUrl": "/Assets/images/HT-1056.jpg",
+ "Status": "A",
+ "Price": "119",
+ "DimensionWidth": "51",
+ "DimensionDepth": "41.3",
+ "DimensionHeight": "22",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1060",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "0.09",
+ "WeightUnit": "KG",
+ "ShortDescription": "Cordless Optical USB MI, Laptop, Color: Black, Plug&Play",
+ "Name": "Cordless Mouse",
+ "PictureUrl": "/Assets/images/HT-1060.jpg",
+ "Status": "O",
+ "Price": "9",
+ "DimensionWidth": "6",
+ "DimensionDepth": "14.5",
+ "DimensionHeight": "3.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1061",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "0.09",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optical USB, PS/2 Mouse, Color: Blue, 3-button-functionality (incl. Scroll wheel)",
+ "Name": "Speed Mouse",
+ "PictureUrl": "/Assets/images/HT-1061.jpg",
+ "Status": "D",
+ "Price": "7",
+ "DimensionWidth": "7",
+ "DimensionDepth": "15",
+ "DimensionHeight": "3.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1062",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "0.03",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optical USB Mouse, Color: Red, 5-button-functionality(incl. Scroll wheel), Plug&Play",
+ "Name": "Track Mouse",
+ "PictureUrl": "/Assets/images/HT-1062.jpg",
+ "Status": "O",
+ "Price": "11",
+ "DimensionWidth": "3",
+ "DimensionDepth": "7",
+ "DimensionHeight": "4",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1063",
+ "Category": "KB",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "2.1",
+ "WeightUnit": "KG",
+ "ShortDescription": "Ergonomic USB Keyboard for Desktop, Plug&Play",
+ "Name": "Ergonomic Keyboard",
+ "PictureUrl": "/Assets/images/HT-1063.jpg",
+ "Status": "D",
+ "Price": "14",
+ "DimensionWidth": "50",
+ "DimensionDepth": "21",
+ "DimensionHeight": "3.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1064",
+ "Category": "KB",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "1.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Corded Keyboard with special keys for Internet Usability, USB",
+ "Name": "Internet Keyboard",
+ "PictureUrl": "/Assets/images/HT-1064.jpg",
+ "Status": "A",
+ "Price": "16",
+ "DimensionWidth": "52",
+ "DimensionDepth": "25",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1065",
+ "Category": "KB",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "2.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "Corded Ergonomic Keyboard with special keys for Media Usability, USB",
+ "Name": "Media Keyboard",
+ "PictureUrl": "/Assets/images/HT-1065.jpg",
+ "Status": "A",
+ "Price": "26",
+ "DimensionWidth": "51.4",
+ "DimensionDepth": "23",
+ "DimensionHeight": "4",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1066",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "80",
+ "WeightUnit": "G",
+ "ShortDescription": "Nice mouse pad with ITelO Logo",
+ "Name": "Mousepad",
+ "PictureUrl": "/Assets/images/HT-1066.jpg",
+ "Status": "A",
+ "Price": "6.99",
+ "DimensionWidth": "15",
+ "DimensionDepth": "6",
+ "DimensionHeight": "0.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1067",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Oxynum",
+ "Weight": "80",
+ "WeightUnit": "G",
+ "ShortDescription": "Ergonomic mouse pad with ITelO Logo",
+ "Name": "Ergo Mousepad",
+ "PictureUrl": "/Assets/images/HT-1067.jpg",
+ "Status": "O",
+ "Price": "8.99",
+ "DimensionWidth": "15",
+ "DimensionDepth": "6",
+ "DimensionHeight": "0.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1068",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "90",
+ "WeightUnit": "G",
+ "ShortDescription": "ITelO Mousepad Special Edition",
+ "Name": "Designer Mousepad",
+ "PictureUrl": "/Assets/images/HT-1068.jpg",
+ "Status": "A",
+ "Price": "12.99",
+ "DimensionWidth": "24",
+ "DimensionDepth": "24",
+ "DimensionHeight": "0.6",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1069",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Fasttech",
+ "Weight": "45",
+ "WeightUnit": "G",
+ "ShortDescription": "Universal card reader",
+ "Name": "Universal card reader",
+ "PictureUrl": "/Assets/images/HT-1069.jpg",
+ "Status": "O",
+ "Price": "14",
+ "DimensionWidth": "6",
+ "DimensionDepth": "6",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1070",
+ "Category": "GC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.255",
+ "WeightUnit": "KG",
+ "ShortDescription": "Proctra X: PCI-E GDDR5 3072MB",
+ "Name": "Proctra X",
+ "PictureUrl": "/Assets/images/HT-1070.jpg",
+ "Status": "A",
+ "Price": "70.9",
+ "DimensionWidth": "22",
+ "DimensionDepth": "35",
+ "DimensionHeight": "17",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1071",
+ "Category": "GC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "Gladiator XLN: PCI-E GDDR5 3072MB DVI Out, TV Out low-noise",
+ "Name": "Gladiator MX",
+ "PictureUrl": "/Assets/images/HT-1071.jpg",
+ "Status": "A",
+ "Price": "81.7",
+ "DimensionWidth": "22",
+ "DimensionDepth": "35",
+ "DimensionHeight": "17",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1072",
+ "Category": "GC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.4",
+ "WeightUnit": "KG",
+ "ShortDescription": "Hurricane GX: PCI-E 691 GFLOPS game-optimized",
+ "Name": "Hurricane GX",
+ "PictureUrl": "/Assets/images/HT-1072.jpg",
+ "Status": "A",
+ "Price": "101.2",
+ "DimensionWidth": "22",
+ "DimensionDepth": "35",
+ "DimensionHeight": "17",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1073",
+ "Category": "GC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Smartcards",
+ "Weight": "0.4",
+ "WeightUnit": "KG",
+ "ShortDescription": "Hurricane GX/LN: PCI-E 691 GFLOPS game-optimized, low-noise.",
+ "Name": "Hurricane GX/LN",
+ "PictureUrl": "/Assets/images/HT-1073.jpg",
+ "Status": "A",
+ "Price": "139.99",
+ "DimensionWidth": "22",
+ "DimensionDepth": "35",
+ "DimensionHeight": "17",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1080",
+ "Category": "SC",
+ "MainCategory": "Printers and Scanners",
+ "SupplierName": "Printer for All",
+ "Weight": "2.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flatbed scanner - 9.600 × 9.600 dpi - 216 x 297 mm - Hi-Speed USB - Bluetooth",
+ "Name": "Photo Scan",
+ "PictureUrl": "/Assets/images/HT-1080.jpg",
+ "Status": "A",
+ "Price": "129",
+ "DimensionWidth": "34",
+ "DimensionDepth": "48",
+ "DimensionHeight": "5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1081",
+ "Category": "SC",
+ "MainCategory": "Printers and Scanners",
+ "SupplierName": "Printer for All",
+ "Weight": "2.4",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flatbed scanner - 9.600 × 9.600 dpi - 216 x 297 mm - SCSI for backward compatibility",
+ "Name": "Power Scan",
+ "PictureUrl": "/Assets/images/HT-1081.jpg",
+ "Status": "A",
+ "Price": "89",
+ "DimensionWidth": "31",
+ "DimensionDepth": "43",
+ "DimensionHeight": "7",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1082",
+ "Category": "SC",
+ "MainCategory": "Printers and Scanners",
+ "SupplierName": "Printer for All",
+ "Weight": "3.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flatbed scanner - Letter - 2400 dpi x 2400 dpi - 216 x 297 mm - add-on module",
+ "Name": "Jet Scan Professional",
+ "PictureUrl": "/Assets/images/HT-1082.jpg",
+ "Status": "A",
+ "Price": "169",
+ "DimensionWidth": "33",
+ "DimensionDepth": "41",
+ "DimensionHeight": "12",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1083",
+ "Category": "SC",
+ "MainCategory": "Printers and Scanners",
+ "SupplierName": "Printer for All",
+ "Weight": "3.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flatbed scanner - A4 - 2400 dpi x 2400 dpi - 216 x 297 mm - add-on module",
+ "Name": "Jet Scan Professional",
+ "PictureUrl": "/Assets/images/HT-1083.jpg",
+ "Status": "A",
+ "Price": "189",
+ "DimensionWidth": "35",
+ "DimensionDepth": "40",
+ "DimensionHeight": "10",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1085",
+ "Category": "PR",
+ "MainCategory": "SC",
+ "SupplierName": "Alpha Printers",
+ "Weight": "23.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Copymaster",
+ "Name": "Copymaster",
+ "PictureUrl": "/Assets/images/HT-1085.jpg",
+ "Status": "A",
+ "Price": "1499",
+ "DimensionWidth": "45",
+ "DimensionDepth": "42",
+ "DimensionHeight": "22",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1090",
+ "Category": "SP",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Speaker Experts",
+ "Weight": "3",
+ "WeightUnit": "KG",
+ "ShortDescription": "PC multimedia speakers - 5 Watt (Total)",
+ "Name": "Surround Sound",
+ "PictureUrl": "/Assets/images/HT-1090.jpg",
+ "Status": "A",
+ "Price": "39",
+ "DimensionWidth": "12",
+ "DimensionDepth": "10",
+ "DimensionHeight": "16",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1091",
+ "Category": "SP",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Speaker Experts",
+ "Weight": "1.4",
+ "WeightUnit": "KG",
+ "ShortDescription": "PC multimedia speakers - 10 Watt (Total) - 2-way",
+ "Name": "Blaster Extreme",
+ "PictureUrl": "/Assets/images/HT-1091.jpg",
+ "Status": "A",
+ "Price": "26",
+ "DimensionWidth": "13",
+ "DimensionDepth": "11",
+ "DimensionHeight": "17.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1092",
+ "Category": "SP",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Speaker Experts",
+ "Weight": "2.1",
+ "WeightUnit": "KG",
+ "ShortDescription": "PC multimedia speakers - optimized for Blutooth/A2DP",
+ "Name": "Sound Booster",
+ "PictureUrl": "/Assets/images/HT-1092.jpg",
+ "Status": "A",
+ "Price": "45",
+ "DimensionWidth": "12.4",
+ "DimensionDepth": "10.4",
+ "DimensionHeight": "18.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1100",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Technocom",
+ "Weight": "1.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, Office Applications (word processing, spreadsheet, presentations)",
+ "Name": "Smart Office",
+ "PictureUrl": "/Assets/images/HT-1100.jpg",
+ "Status": "D",
+ "Price": "89.9",
+ "DimensionWidth": "15",
+ "DimensionDepth": "6.5",
+ "DimensionHeight": "2.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1101",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Technocom",
+ "Weight": "0.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, Image editing, processing",
+ "Name": "Smart Design",
+ "PictureUrl": "/Assets/images/HT-1101.jpg",
+ "Status": "O",
+ "Price": "79.9",
+ "DimensionWidth": "14",
+ "DimensionDepth": "6.7",
+ "DimensionHeight": "24",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1102",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Technocom",
+ "Weight": "0.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, Network Software Utilities, Useful Applications and Documentation",
+ "Name": "Smart Network",
+ "PictureUrl": "/Assets/images/HT-1102.jpg",
+ "Status": "A",
+ "Price": "69",
+ "DimensionWidth": "16",
+ "DimensionDepth": "6",
+ "DimensionHeight": "27",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1103",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Technocom",
+ "Weight": "0.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, different Multimedia applications, playing music, watching DVDs, only with this Smart package",
+ "Name": "Smart Multimedia",
+ "PictureUrl": "/Assets/images/HT-1103.jpg",
+ "Status": "A",
+ "Price": "77",
+ "DimensionWidth": "11",
+ "DimensionDepth": "3.4",
+ "DimensionHeight": "22",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1104",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Technocom",
+ "Weight": "1.1",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, various games for amusement, logic, action, jump&run",
+ "Name": "Smart Games",
+ "PictureUrl": "/Assets/images/HT-1104.jpg",
+ "Status": "O",
+ "Price": "55",
+ "DimensionWidth": "10",
+ "DimensionDepth": "3",
+ "DimensionHeight": "30",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1105",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Brainsoft",
+ "Weight": "0.7",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, highly recommended for internet users as anti-virus protection",
+ "Name": "Smart Internet Antivirus",
+ "PictureUrl": "/Assets/images/HT-1105.jpg",
+ "Status": "A",
+ "Price": "29",
+ "DimensionWidth": "16",
+ "DimensionDepth": "4",
+ "DimensionHeight": "21",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1106",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Brainsoft",
+ "Weight": "0.9",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, recommended for internet users, protect your PC against cyber-crime",
+ "Name": "Smart Firewall",
+ "PictureUrl": "/Assets/images/HT-1106.jpg",
+ "Status": "A",
+ "Price": "34",
+ "DimensionWidth": "17.9",
+ "DimensionDepth": "4.2",
+ "DimensionHeight": "23.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1107",
+ "Category": "SW",
+ "MainCategory": "Software",
+ "SupplierName": "Brainsoft",
+ "Weight": "0.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Complete package, 1 User, bring your money in your mind, see what you have and what you want",
+ "Name": "Smart Money",
+ "PictureUrl": "/Assets/images/HT-1107.jpg",
+ "Status": "D",
+ "Price": "29.9",
+ "DimensionWidth": "12",
+ "DimensionDepth": "1.5",
+ "DimensionHeight": "19",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1110",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.03",
+ "WeightUnit": "KG",
+ "ShortDescription": "Robust 3m anti-burglary protection for your laptop computer",
+ "Name": "PC Lock",
+ "PictureUrl": "/Assets/images/HT-1110.jpg",
+ "Status": "A",
+ "Price": "8.9",
+ "DimensionWidth": "20",
+ "DimensionDepth": "8",
+ "DimensionHeight": "4.3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1111",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.02",
+ "WeightUnit": "KG",
+ "ShortDescription": "Robust 1m anti-burglary protection for your desktop computer",
+ "Name": "Notebook Lock",
+ "PictureUrl": "/Assets/images/HT-1111.jpg",
+ "Status": "A",
+ "Price": "6.9",
+ "DimensionWidth": "31",
+ "DimensionDepth": "9",
+ "DimensionHeight": "7",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1112",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.075",
+ "WeightUnit": "KG",
+ "ShortDescription": "Color webcam, color, High-Speed USB",
+ "Name": "Web cam reality",
+ "PictureUrl": "/Assets/images/HT-1112.jpg",
+ "Status": "A",
+ "Price": "39",
+ "DimensionWidth": "9",
+ "DimensionDepth": "8.2",
+ "DimensionHeight": "1.3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1113",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.05",
+ "WeightUnit": "KG",
+ "ShortDescription": "10 separately packed screen wipes",
+ "Name": "Screen clean",
+ "PictureUrl": "/Assets/images/HT-1113.jpg",
+ "Status": "A",
+ "Price": "2.3",
+ "DimensionWidth": "2",
+ "DimensionDepth": "2",
+ "DimensionHeight": "0.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1114",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Red Point Stores",
+ "Weight": "1.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook bag, plenty of room for stationery and writing materials",
+ "Name": "Fabric bag professional",
+ "PictureUrl": "/Assets/images/HT-1114.jpg",
+ "Status": "A",
+ "Price": "31",
+ "DimensionWidth": "42",
+ "DimensionDepth": "32",
+ "DimensionHeight": "7",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1115",
+ "Category": "TC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.45",
+ "WeightUnit": "KG",
+ "ShortDescription": "Wireless DSL Router (available in blue, black and silver)",
+ "Name": "Wireless DSL Router",
+ "PictureUrl": "/Assets/images/HT-1115.jpg",
+ "Status": "O",
+ "Price": "49",
+ "DimensionWidth": "19.3",
+ "DimensionDepth": "18",
+ "DimensionHeight": "5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1116",
+ "Category": "TC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Red Point Stores",
+ "Weight": "0.45",
+ "WeightUnit": "KG",
+ "ShortDescription": "Wireless DSL Router / Repeater (available in blue, black and silver)",
+ "Name": "Wireless DSL Router / Repeater",
+ "PictureUrl": "/Assets/images/HT-1116.jpg",
+ "Status": "A",
+ "Price": "59",
+ "DimensionWidth": "19.3",
+ "DimensionDepth": "18",
+ "DimensionHeight": "5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1117",
+ "Category": "TC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.45",
+ "WeightUnit": "KG",
+ "ShortDescription": "Wireless DSL Router / Repeater and Print Server (available in blue, black and silver)",
+ "Name": "Wireless DSL Router / Repeater and Print Server",
+ "PictureUrl": "/Assets/images/HT-1117.jpg",
+ "Status": "O",
+ "Price": "69",
+ "DimensionWidth": "19.3",
+ "DimensionDepth": "18",
+ "DimensionHeight": "5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1118",
+ "Category": "CSA",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Technocom",
+ "Weight": "0.015",
+ "WeightUnit": "KG",
+ "ShortDescription": "USB 2.0 High-Speed 64 GB",
+ "Name": "USB Stick",
+ "PictureUrl": "/Assets/images/HT-1118.jpg",
+ "Status": "A",
+ "Price": "35",
+ "DimensionWidth": "1.5",
+ "DimensionDepth": "8.7",
+ "DimensionHeight": "1.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1120",
+ "Category": "KB",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "1",
+ "WeightUnit": "KG",
+ "ShortDescription": "Cordless Bluetooth Keyboard with English keys",
+ "Name": "Cordless Bluetooth Keyboard, english international",
+ "PictureUrl": "/Assets/images/HT-1120.jpg",
+ "Status": "A",
+ "Price": "29",
+ "DimensionWidth": "51.4",
+ "DimensionDepth": "23",
+ "DimensionHeight": "4",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1137",
+ "Category": "FS",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "18",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution max. 2048 × 1536 @ 85Hz, Dot Pitch: 0.24mm",
+ "Name": "Flat XXL",
+ "PictureUrl": "/Assets/images/HT-1137.jpg",
+ "Status": "A",
+ "Price": "1430",
+ "DimensionWidth": "54",
+ "DimensionDepth": "22",
+ "DimensionHeight": "38",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1138",
+ "Category": "MI",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Technocom",
+ "Weight": "0.02",
+ "WeightUnit": "KG",
+ "ShortDescription": "Portable pocket Mouse with retracting cord",
+ "Name": "Pocket Mouse",
+ "PictureUrl": "/Assets/images/HT-1138.jpg",
+ "Status": "A",
+ "Price": "23",
+ "DimensionWidth": "0.3",
+ "DimensionDepth": "0.5",
+ "DimensionHeight": "1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1210",
+ "Category": "DC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Technocom",
+ "Weight": "2.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "PC Power Station with 3,4 Ghz quad-core, 32 GB DDR3 SDRAM, feels like a PC, Windows 8 Pro",
+ "Name": "PC Power Station",
+ "PictureUrl": "/Assets/images/HT-1210.jpg",
+ "Status": "A",
+ "Price": "2399",
+ "DimensionWidth": "28",
+ "DimensionDepth": "31",
+ "DimensionHeight": "43",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1500",
+ "Category": "SV",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Technocom",
+ "Weight": "18",
+ "WeightUnit": "KG",
+ "ShortDescription": "Dual socket, quad-core processing server with 1333 MHz Front Side Bus with 10Gb connectivity",
+ "Name": "Server Basic",
+ "PictureUrl": "/Assets/images/HT-1500.jpg",
+ "Status": "A",
+ "Price": "5000",
+ "DimensionWidth": "34",
+ "DimensionDepth": "35",
+ "DimensionHeight": "23",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1501",
+ "Category": "SV",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Technocom",
+ "Weight": "25",
+ "WeightUnit": "KG",
+ "ShortDescription": "Dual socket, quad-core processing server with 1644 MHz Front Side Bus with 10Gb connectivity",
+ "Name": "Server Professional",
+ "PictureUrl": "/Assets/images/HT-1501.jpg",
+ "Status": "O",
+ "Price": "15000",
+ "DimensionWidth": "29",
+ "DimensionDepth": "30",
+ "DimensionHeight": "27",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1502",
+ "Category": "SV",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Technocom",
+ "Weight": "35",
+ "WeightUnit": "KG",
+ "ShortDescription": "Dual socket, quad-core processing server with 1644 MHz Front Side Bus with 100Gb connectivity",
+ "Name": "Server Power Pro",
+ "PictureUrl": "/Assets/images/HT-1502.jpg",
+ "Status": "A",
+ "Price": "25000",
+ "DimensionWidth": "22",
+ "DimensionDepth": "27.3",
+ "DimensionHeight": "37",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6130",
+ "Category": "FST",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Very Best Screens",
+ "Weight": "2.6",
+ "WeightUnit": "KG",
+ "ShortDescription": "32-inch, 1366x768 Pixel, 16:9, HDTV ready",
+ "Name": "Flat Watch HD32",
+ "PictureUrl": "/Assets/images/HT-6130.jpg",
+ "Status": "A",
+ "Price": "1459",
+ "DimensionWidth": "78",
+ "DimensionDepth": "22.1",
+ "DimensionHeight": "55",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6131",
+ "Category": "FST",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Very Best Screens",
+ "Weight": "2.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "37-inch, 1366x768 Pixel, 16:9, HDTV ready",
+ "Name": "Flat Watch HD37",
+ "PictureUrl": "/Assets/images/HT-6131.jpg",
+ "Status": "A",
+ "Price": "1199",
+ "DimensionWidth": "99.1",
+ "DimensionDepth": "26",
+ "DimensionHeight": "61",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6132",
+ "Category": "FST",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Very Best Screens",
+ "Weight": "1.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "41-inch, 1366x768 Pixel, 16:9, HDTV ready",
+ "Name": "Flat Watch HD41",
+ "PictureUrl": "/Assets/images/HT-6132.jpg",
+ "Status": "A",
+ "Price": "899",
+ "DimensionWidth": "128",
+ "DimensionDepth": "23",
+ "DimensionHeight": "79.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-7030",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "0.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Our new multifunctional Handheld with phone function in platinum",
+ "Name": "Platinberry",
+ "PictureUrl": "/Assets/images/HT-7030.jpg",
+ "Status": "D",
+ "Price": "549",
+ "DimensionWidth": "8.1",
+ "DimensionDepth": "13",
+ "DimensionHeight": "12.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-7020",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "0.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Our new multifunctional Handheld with phone function in gold",
+ "Name": "Goldberry",
+ "PictureUrl": "/Assets/images/HT-7020.jpg",
+ "Status": "A",
+ "Price": "549",
+ "DimensionWidth": "8.1",
+ "DimensionDepth": "13",
+ "DimensionHeight": "12.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-7010",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "0.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Our new multifunctional Handheld with phone function in silver",
+ "Name": "Silverberry",
+ "PictureUrl": "/Assets/images/HT-7010.jpg",
+ "Status": "A",
+ "Price": "549",
+ "DimensionWidth": "8.1",
+ "DimensionDepth": "13",
+ "DimensionHeight": "12.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-7000",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "0.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Our new multifunctional Handheld with phone function in copper",
+ "Name": "Copperberry",
+ "PictureUrl": "/Assets/images/HT-7000.jpg",
+ "Status": "A",
+ "Price": "549",
+ "DimensionWidth": "8.1",
+ "DimensionDepth": "13",
+ "DimensionHeight": "12.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1095",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "80",
+ "WeightUnit": "G",
+ "ShortDescription": "5.1 Headset, 40 Hz-20 kHz, Wireless",
+ "Name": "Lovely Sound 5.1 Wireless",
+ "PictureUrl": "/Assets/images/HT-1095.jpg",
+ "Status": "A",
+ "Price": "49",
+ "DimensionWidth": "24",
+ "DimensionDepth": "19",
+ "DimensionHeight": "23",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1096",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "130",
+ "WeightUnit": "G",
+ "ShortDescription": "5.1 Headset, 40 Hz-20 kHz, 3m cable",
+ "Name": "Lovely Sound 5.1",
+ "PictureUrl": "/Assets/images/HT-1096.jpg",
+ "Status": "A",
+ "Price": "39",
+ "DimensionWidth": "25",
+ "DimensionDepth": "17",
+ "DimensionHeight": "19",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1097",
+ "Category": "AC",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Fasttech",
+ "Weight": "60",
+ "WeightUnit": "G",
+ "ShortDescription": "5.1 Headset, 40 Hz-20 kHz, 1m cable",
+ "Name": "Lovely Sound Stereo",
+ "PictureUrl": "/Assets/images/HT-1097.jpg",
+ "Status": "A",
+ "Price": "29",
+ "DimensionWidth": "21.3",
+ "DimensionDepth": "2.4",
+ "DimensionHeight": "19.7",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6123",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "267",
+ "WeightUnit": "G",
+ "ShortDescription": "MP3-Player with 80 GB SSD and Color Display, can play movies",
+ "Name": "Power Pro Player 80",
+ "PictureUrl": "/Assets/images/HT-6123.jpg",
+ "Status": "A",
+ "Price": "299",
+ "DimensionWidth": "4",
+ "DimensionDepth": "6",
+ "DimensionHeight": "0.8",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6122",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "266",
+ "WeightUnit": "G",
+ "ShortDescription": "MP3-Player with 40 GB HDD and Color Display, can play movies",
+ "Name": "Power Pro Player 40",
+ "PictureUrl": "/Assets/images/HT-6122.jpg",
+ "Status": "A",
+ "Price": "167",
+ "DimensionWidth": "5.1",
+ "DimensionDepth": "8",
+ "DimensionHeight": "9.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6121",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "134",
+ "WeightUnit": "G",
+ "ShortDescription": "ITelo Jog-Mate 64 GB HDD and Color Display, can play movies",
+ "Name": "ITelo Jog-Mate",
+ "PictureUrl": "/Assets/images/HT-6121.jpg",
+ "Status": "A",
+ "Price": "63",
+ "DimensionWidth": "5.1",
+ "DimensionDepth": "8",
+ "DimensionHeight": "9.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6120",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "134",
+ "WeightUnit": "G",
+ "ShortDescription": "64 GB USB Music-on-a-Stick",
+ "Name": "ITelo MusicStick",
+ "PictureUrl": "/Assets/images/HT-6120.jpg",
+ "Status": "A",
+ "Price": "45",
+ "DimensionWidth": "1.5",
+ "DimensionDepth": "6",
+ "DimensionHeight": "1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6111",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "3.1",
+ "WeightUnit": "KG",
+ "ShortDescription": "160 GB HDD, CD-RW, DVD+R/RW, DVD-R/RW, MPEG 2 (Video-DVD), MPEG 4, VCD, SVCD, DivX, Xvid",
+ "Name": "Record Movie",
+ "PictureUrl": "/Assets/images/HT-6111.jpg",
+ "Status": "O",
+ "Price": "288",
+ "DimensionWidth": "38",
+ "DimensionDepth": "26",
+ "DimensionHeight": "6.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6110",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Fasttech",
+ "Weight": "2.4",
+ "WeightUnit": "KG",
+ "ShortDescription": "CD-RW, DVD+R/RW, DVD-R/RW, MPEG 2 (Video-DVD), MPEG 4, VCD, SVCD, DivX, Xvid",
+ "Name": "Play Movie",
+ "PictureUrl": "/Assets/images/HT-6110.jpg",
+ "Status": "O",
+ "Price": "130",
+ "DimensionWidth": "37",
+ "DimensionDepth": "24",
+ "DimensionHeight": "6",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6102",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Technocom",
+ "Weight": "2.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "1080p, DLP max. 12,3 Meter, 3D-ready",
+ "Name": "Beam Breaker B-3",
+ "PictureUrl": "/Assets/images/HT-6102.jpg",
+ "Status": "A",
+ "Price": "889",
+ "DimensionWidth": "30.4",
+ "DimensionDepth": "23.1",
+ "DimensionHeight": "23",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6101",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Technocom",
+ "Weight": "2",
+ "WeightUnit": "KG",
+ "ShortDescription": "1080p, DLP max.9,34 Meter, 2D-ready",
+ "Name": "Beam Breaker B-2",
+ "PictureUrl": "/Assets/images/HT-6101.jpg",
+ "Status": "A",
+ "Price": "679",
+ "DimensionWidth": "30.4",
+ "DimensionDepth": "23.1",
+ "DimensionHeight": "23",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2002",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Technocom",
+ "Weight": "0.72",
+ "WeightUnit": "KG",
+ "ShortDescription": "9\" LCD Screen, storage holds up to 8 hours, 2 speakers included",
+ "Name": "Portable DVD Player with 9\" LCD Monitor",
+ "PictureUrl": "/Assets/images/HT-2002.jpg",
+ "Status": "D",
+ "Price": "853.99",
+ "DimensionWidth": "21",
+ "DimensionDepth": "16.5",
+ "DimensionHeight": "14",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-6100",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Titanium",
+ "Weight": "1.7",
+ "WeightUnit": "KG",
+ "ShortDescription": "720p, DLP Projector max. 8,45 Meter, 2D",
+ "Name": "Beam Breaker B-1",
+ "PictureUrl": "/Assets/images/HT-6100.jpg",
+ "Status": "O",
+ "Price": "469",
+ "DimensionWidth": "30.4",
+ "DimensionDepth": "23.1",
+ "DimensionHeight": "23",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2027",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "0.15",
+ "WeightUnit": "KG",
+ "ShortDescription": "Removable jewel case labels, zero residues (100)",
+ "Name": "Removable CD/DVD Laser Labels",
+ "PictureUrl": "/Assets/images/HT-2027.jpg",
+ "Status": "A",
+ "Price": "8.99",
+ "DimensionWidth": "5.5",
+ "DimensionDepth": "2",
+ "DimensionHeight": "2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2026",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "0.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Quality cables for notebooks and projectors",
+ "Name": "Audio/Video Cable Kit - 4m",
+ "PictureUrl": "/Assets/images/HT-2026.jpg",
+ "Status": "D",
+ "Price": "29.99",
+ "DimensionWidth": "21",
+ "DimensionDepth": "10.2",
+ "DimensionHeight": "13",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2025",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "0.65",
+ "WeightUnit": "KG",
+ "ShortDescription": "Organizer and protective case for 264 CDs and DVDs",
+ "Name": "CD/DVD case: 264 sleeves",
+ "PictureUrl": "/Assets/images/HT-2025.jpg",
+ "Status": "A",
+ "Price": "44.99",
+ "DimensionWidth": "13",
+ "DimensionDepth": "13",
+ "DimensionHeight": "20",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2001",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Titanium",
+ "Weight": "0.84",
+ "WeightUnit": "KG",
+ "ShortDescription": "10\" LCD Screen, storage battery holds up to 8 hours",
+ "Name": "10\" Portable DVD player",
+ "PictureUrl": "/Assets/images/HT-2001.jpg",
+ "Status": "A",
+ "Price": "449.99",
+ "DimensionWidth": "24",
+ "DimensionDepth": "19.5",
+ "DimensionHeight": "29",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-2000",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Titanium",
+ "Weight": "0.79",
+ "WeightUnit": "KG",
+ "ShortDescription": "7\" LCD Screen, storage battery holds up to 6 hours!",
+ "Name": "7\" Widescreen Portable DVD Player w MP3",
+ "PictureUrl": "/Assets/images/HT-2000.jpg",
+ "Status": "O",
+ "Price": "249.99",
+ "DimensionWidth": "21.4",
+ "DimensionDepth": "19",
+ "DimensionHeight": "27.6",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1603",
+ "Category": "DC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "6.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "3,4 Ghz quad core, 16 GB DDR3 SDRAM, 4000 GB Hard Disc, Graphic Card: Hurricane GX, Windows 8",
+ "Name": "Gaming Monster Pro",
+ "PictureUrl": "/Assets/images/HT-1603.jpg",
+ "Status": "A",
+ "Price": "1700",
+ "DimensionWidth": "27",
+ "DimensionDepth": "28",
+ "DimensionHeight": "42",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1602",
+ "Category": "DC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "5.9",
+ "WeightUnit": "KG",
+ "ShortDescription": "3,4 Ghz quad core, 8 GB DDR3 SDRAM, 2000 GB Hard Disc, Graphic Card: Gladiator MX, Windows 8",
+ "Name": "Gaming Monster",
+ "PictureUrl": "/Assets/images/HT-1602.jpg",
+ "Status": "A",
+ "Price": "1200",
+ "DimensionWidth": "26.5",
+ "DimensionDepth": "34",
+ "DimensionHeight": "47",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1601",
+ "Category": "DC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "5.3",
+ "WeightUnit": "KG",
+ "ShortDescription": "2,8 Ghz dual core, 4 GB DDR3 SDRAM, 1000 GB Hard Disc, Graphic Card: Gladiator MX, Windows 8",
+ "Name": "Family PC Pro",
+ "PictureUrl": "/Assets/images/HT-1601.jpg",
+ "Status": "A",
+ "Price": "900",
+ "DimensionWidth": "25",
+ "DimensionDepth": "31.7",
+ "DimensionHeight": "40.2",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1600",
+ "Category": "DC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "4.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "2,8 Ghz dual core, 4 GB DDR3 SDRAM, 500 GB Hard Disc, Graphic Card: Proctra X, Windows 8",
+ "Name": "Family PC Basic",
+ "PictureUrl": "/Assets/images/HT-1600.jpg",
+ "Status": "O",
+ "Price": "600",
+ "DimensionWidth": "21.4",
+ "DimensionDepth": "29",
+ "DimensionHeight": "38",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1119",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "88",
+ "WeightUnit": "G",
+ "ShortDescription": "Universal Travel Adapter",
+ "Name": "Travel Adapter",
+ "PictureUrl": "/Assets/images/HT-1119.jpg",
+ "Status": "A",
+ "Price": "79",
+ "DimensionWidth": "2",
+ "DimensionDepth": "3.1",
+ "DimensionHeight": "3.9",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-8000",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "4",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook with 2,80 GHz dual core, 4 GB DDR3 SDRAM, 500 GB Hard Disc, Windows 8",
+ "Name": "ITelO FlexTop I4000",
+ "PictureUrl": "/Assets/images/HT-8000.jpg",
+ "Status": "A",
+ "Price": "799",
+ "DimensionWidth": "31",
+ "DimensionDepth": "19",
+ "DimensionHeight": "3.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-8001",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook with 2,80 GHz dual core, 8 GB DDR3 SDRAM, 500 GB Hard Disc, Windows 8",
+ "Name": "ITelO FlexTop I6300c",
+ "PictureUrl": "/Assets/images/HT-8001.jpg",
+ "Status": "A",
+ "Price": "799",
+ "DimensionWidth": "32",
+ "DimensionDepth": "20",
+ "DimensionHeight": "3.4",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-8002",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "3.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook with 2,80 GHz quad core, 4 GB DDR3 SDRAM, 1000 GB Hard Disc, Windows 8",
+ "Name": "ITelO FlexTop I9100",
+ "PictureUrl": "/Assets/images/HT-8002.jpg",
+ "Status": "A",
+ "Price": "1199",
+ "DimensionWidth": "38",
+ "DimensionDepth": "21",
+ "DimensionHeight": "4.1",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-8003",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "3.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "Notebook with 2,80 GHz quad core, 8 GB DDR3 SDRAM, 1000 GB Hard Disc, Windows 8",
+ "Name": "ITelO FlexTop I9800",
+ "PictureUrl": "/Assets/images/HT-8003.jpg",
+ "Status": "A",
+ "Price": "1388",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "PF-1000",
+ "Category": "AC",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Titanium",
+ "Weight": "0.01",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flyer for our product palette",
+ "Name": "Flyer",
+ "PictureUrl": "/Assets/images/PF-1000.jpg",
+ "Status": "A",
+ "Price": "0",
+ "DimensionWidth": "46",
+ "DimensionDepth": "30",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9999",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Titanium",
+ "Weight": "3.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "10.1-inch Multitouch HD Screen (1280 x 800), 16GB Internal Memory, Wireless N Wi-Fi; Bluetooth, GPS Enabled, 1GHz Dual-Core Processor",
+ "Name": "Maxi Tablet",
+ "PictureUrl": "/Assets/images/HT-9999.jpg",
+ "Status": "A",
+ "Price": "749",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9998",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Titanium",
+ "Weight": "0.75",
+ "WeightUnit": "KG",
+ "ShortDescription": "5 Megapixel Camera, Wi-Fi 802.11 b/g/n, Bluetooth, GPS A-GPS support",
+ "Name": "Smartphone Beta",
+ "PictureUrl": "/Assets/images/HT-9998.jpg",
+ "Status": "A",
+ "Price": "699",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9997",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Titanium",
+ "Weight": "3.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "6-Inch E Ink Screen, Access To e-book Store, Adjustable Font Styles and Sizes, Stores Up To 1,000 Books",
+ "Name": "e-Book Reader ReadMe",
+ "PictureUrl": "/Assets/images/HT-9997.jpg",
+ "Status": "A",
+ "Price": "633",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9996",
+ "Category": "AC",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Titanium",
+ "Weight": "0.03",
+ "WeightUnit": "KG",
+ "ShortDescription": "Stylish tablet pouch, protects from scratches, color: black",
+ "Name": "Tablet Pouch",
+ "PictureUrl": "/Assets/images/HT-9996.jpg",
+ "Status": "A",
+ "Price": "20",
+ "DimensionWidth": "25",
+ "DimensionDepth": "40",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9995",
+ "Category": "AC",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Titanium",
+ "Weight": "0.02",
+ "WeightUnit": "KG",
+ "ShortDescription": "Durable high quality plastic bump-sleeve, lightweight, protects from scratches, rubber coating, multiple colors available, Accurate design and cut-outs for your device, snap-on design",
+ "Name": "Smartphone Cover",
+ "PictureUrl": "/Assets/images/HT-9995.jpg",
+ "Status": "A",
+ "Price": "15",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9994",
+ "Category": "AC",
+ "MainCategory": "TV, Video & HiFi",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "3.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "1920x1080 Full HD, image stabilization reduces blur, 27x Optical / 32x Extended Zoom, wide angle Lens, 2.7\" wide LCD display",
+ "Name": "Camcorder View",
+ "PictureUrl": "/Assets/images/HT-9994.jpg",
+ "Status": "A",
+ "Price": "1388",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "27",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9993",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "3.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "7 inch 1280x800 HD display (216 ppi), Quad-core processor, 16 GB internal storage, 4325 mAh battery (Up to 8 hours of active use)",
+ "Name": "Mini Tablet",
+ "PictureUrl": "/Assets/images/HT-9993.jpg",
+ "Status": "A",
+ "Price": "833",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9992",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.75",
+ "WeightUnit": "KG",
+ "ShortDescription": "7 inch 1280x800 HD display (216 ppi), Quad-core processor, 16 GB internal storage (actual formatted capacity will be less), 4325 mAh battery (Up to 8 hours of active use), white or black",
+ "Name": "Smartphone Alpha",
+ "PictureUrl": "/Assets/images/HT-9992.jpg",
+ "Status": "A",
+ "Price": "599",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-9991",
+ "Category": "AC",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.02",
+ "WeightUnit": "KG",
+ "ShortDescription": "Button Clasp, Quality Material, 100% Leather, compatible with many smartphone models",
+ "Name": "Smartphone Leather Case",
+ "PictureUrl": "/Assets/images/HT-9991.jpg",
+ "Status": "A",
+ "Price": "25",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1251",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flexible Laptop with 2,5 GHz Quad Core, 15\" HD TN, 16 GB DDR SDRAM, 256 GB SSD, Windows 10 Pro",
+ "Name": "Astro Laptop 1516",
+ "PictureUrl": "/Assets/images/HT-1251.jpg",
+ "Status": "A",
+ "Price": "989",
+ "DimensionWidth": "30",
+ "DimensionDepth": "18",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1252",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.75",
+ "WeightUnit": "KG",
+ "ShortDescription": "6 inch 1280x800 HD display (216 ppi), Quad-core processor, 8 GB internal storage (actual formatted capacity will be less), 3050 mAh battery (Up to 8 hours of active use), grey or black",
+ "Name": "Astro Phone 6",
+ "PictureUrl": "/Assets/images/HT-1252.jpg",
+ "Status": "A",
+ "Price": "649",
+ "DimensionWidth": "8",
+ "DimensionDepth": "6",
+ "DimensionHeight": "1.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1253",
+ "Category": "LT",
+ "MainCategory": "Computer Systems",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "4.2",
+ "WeightUnit": "KG",
+ "ShortDescription": "Flexible Laptop with 2,5 GHz Dual Core, 14\" HD+ TN, 8 GB DDR SDRAM, 324 GB SSD, Windows 10 Pro",
+ "Name": "Benda Laptop 1408",
+ "PictureUrl": "/Assets/images/HT-1253.jpg",
+ "Status": "A",
+ "Price": "976",
+ "DimensionWidth": "30",
+ "DimensionDepth": "18",
+ "DimensionHeight": "3",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1254",
+ "Category": "FS",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "15",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution Widescreen max. 1920 x 1080 @ 85Hz, Dot Pitch: 0.27mm, HDMI, D-Sub",
+ "Name": "Bending Screen 21HD",
+ "PictureUrl": "/Assets/images/HT-1254.jpg",
+ "Status": "A",
+ "Price": "250",
+ "DimensionWidth": "37",
+ "DimensionDepth": "12",
+ "DimensionHeight": "36",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1255",
+ "Category": "FS",
+ "MainCategory": "Computer Components",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "16",
+ "WeightUnit": "KG",
+ "ShortDescription": "Optimum Hi-Resolution Widescreen max. 2048 x 1080 @ 85Hz, Dot Pitch: 0.27mm, HDMI, D-Sub",
+ "Name": "Broad Screen 22HD",
+ "PictureUrl": "/Assets/images/HT-1255.jpg",
+ "Status": "O",
+ "Price": "270",
+ "DimensionWidth": "39",
+ "DimensionDepth": "12",
+ "DimensionHeight": "38",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1256",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "0.75",
+ "WeightUnit": "KG",
+ "ShortDescription": "7 inch 1280x800 HD display (216 ppi), Quad-core processor, 16 GB internal storage (actual formatted capacity will be less), 4325 mAh battery (Up to 8 hours of active use), white or black",
+ "Name": "Cerdik Phone 7",
+ "PictureUrl": "/Assets/images/HT-1256.jpg",
+ "Status": "A",
+ "Price": "549",
+ "DimensionWidth": "9",
+ "DimensionDepth": "15",
+ "DimensionHeight": "1.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1257",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "2.8",
+ "WeightUnit": "KG",
+ "ShortDescription": "10.5-inch Multitouch HD Screen (1280 x 800), 16GB Internal Memory, Wireless N Wi-Fi; Bluetooth, GPS Enabled, 1GHz Dual-Core Processor",
+ "Name": "Cepat Tablet 10.5",
+ "PictureUrl": "/Assets/images/HT-1257.jpg",
+ "Status": "A",
+ "Price": "549",
+ "DimensionWidth": "48",
+ "DimensionDepth": "31",
+ "DimensionHeight": "4.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ },
+ {
+ "ProductId": "HT-1258",
+ "Category": "ST",
+ "MainCategory": "Smartphones & Tablets",
+ "SupplierName": "Ultrasonic United",
+ "Weight": "2.5",
+ "WeightUnit": "KG",
+ "ShortDescription": "8-inch Multitouch HD Screen (2000 x 1500) 32GB Internal Memory, Wireless N Wi-Fi, Bluetooth, GPS Enabled, 1.5 GHz Quad-Core Processor",
+ "Name": "Cepat Tablet 8",
+ "PictureUrl": "/Assets/images/HT-1258.jpg",
+ "Status": "A",
+ "Price": "529",
+ "DimensionWidth": "38",
+ "DimensionDepth": "21",
+ "DimensionHeight": "3.5",
+ "Unit": "cm",
+ "CurrencyCode": "EUR"
+ }
+]
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Roots.xml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Roots.xml
new file mode 100644
index 0000000..a46568f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Roots.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ShellBottomCustomNavigator.csproj b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ShellBottomCustomNavigator.csproj
new file mode 100644
index 0000000..765b923
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ShellBottomCustomNavigator.csproj
@@ -0,0 +1,49 @@
+
+
+ net8.0
+ enable
+ latest
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PetsTabControlView.axaml
+ Code
+
+
+ ProfileView.axaml
+ Code
+
+
+ DogView.axaml
+ Code
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Styles.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Styles.axaml
new file mode 100644
index 0000000..526dd69
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Styles.axaml
@@ -0,0 +1,189 @@
+
+
+
+
+ M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0,0,0 z
+
+
+
+ White
+ Gray
+ Blue
+
+
+
+
+
+
+
+
+
+
+ #001E39
+ Silver
+ LightSkyBlue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewLocator.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewLocator.cs
new file mode 100644
index 0000000..a71b983
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewLocator.cs
@@ -0,0 +1,30 @@
+using System;
+using Avalonia.Controls;
+using Avalonia.Controls.Templates;
+using ShellBottomCustomNavigator.ViewModels;
+
+namespace ShellBottomCustomNavigator;
+
+public class ViewLocator : IDataTemplate
+{
+ public Control? Build(object? data)
+ {
+ if (data is null)
+ return null;
+
+ var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal);
+ var type = Type.GetType(name);
+
+ if (type != null)
+ {
+ return (Control)Activator.CreateInstance(type)!;
+ }
+
+ return new TextBlock { Text = "Not Found: " + name };
+ }
+
+ public bool Match(object? data)
+ {
+ return data is ViewModelBase;
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/HomePageViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/HomePageViewModel.cs
new file mode 100644
index 0000000..33beafd
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/HomePageViewModel.cs
@@ -0,0 +1,32 @@
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using AvaloniaInside.Shell;
+using ReactiveUI;
+
+namespace ShellBottomCustomNavigator.ViewModels;
+
+public class HomePageViewModel : ViewModelBase
+{
+ private readonly INavigator _navigationService;
+
+ public ICommand NavigateToSecondPage { get; set; }
+ public ICommand ShowDialogCommand { get; set; }
+
+ public HomePageViewModel(INavigator navigationService)
+ {
+ _navigationService = navigationService;
+ NavigateToSecondPage = ReactiveCommand.CreateFromTask(Navigate);
+ ShowDialogCommand = ReactiveCommand.CreateFromTask(ShowDialog);
+ }
+
+ private Task ShowDialog(CancellationToken cancellationToken)
+ {
+ return _navigationService.NavigateAsync("/main/home/confirmation", cancellationToken);
+ }
+
+ private Task Navigate()
+ {
+ return _navigationService.NavigateAsync("/second");
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/MainViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/MainViewModel.cs
new file mode 100644
index 0000000..6899d1a
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/MainViewModel.cs
@@ -0,0 +1,20 @@
+using Avalonia.Animation;
+using AvaloniaInside.Shell.Platform;
+using ReactiveUI;
+
+namespace ShellBottomCustomNavigator.ViewModels;
+
+public class MainViewModel : ViewModelBase
+{
+ public string Greeting => "Welcome to Avalonia!";
+
+ private IPageTransition _currentTransition = PlatformSetup.TransitionForPage;
+ public IPageTransition CurrentTransition
+ {
+ get => _currentTransition;
+ set
+ {
+ this.RaiseAndSetIfChanged(ref _currentTransition, value);
+ }
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/SettingViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/SettingViewModel.cs
new file mode 100644
index 0000000..738b082
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/SettingViewModel.cs
@@ -0,0 +1,54 @@
+using Avalonia.Animation;
+using Avalonia.Collections;
+using AvaloniaInside.Shell.Platform;
+using AvaloniaInside.Shell.Platform.Android;
+using AvaloniaInside.Shell.Platform.Ios;
+using AvaloniaInside.Shell.Platform.Windows;
+using ReactiveUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.ViewModels;
+public class SettingViewModel : ViewModelBase
+{
+ public class TransitionItem
+ {
+ public string Name { get; set; }
+ public IPageTransition Transition { get; set; }
+ }
+
+ public AvaloniaList Transitions { get; }
+
+ private TransitionItem _currentTransition;
+ public TransitionItem CurrentTransition
+ {
+ get => _currentTransition;
+ set
+ {
+ this.RaiseAndSetIfChanged(ref _currentTransition, value);
+ if (MainViewModel != null)
+ MainViewModel.CurrentTransition = value.Transition;
+ }
+ }
+
+ public MainViewModel? MainViewModel { get; internal set; }
+
+ public SettingViewModel()
+ {
+ Transitions = new AvaloniaList
+ {
+ new TransitionItem{ Name = "Android Default", Transition = AndroidDefaultPageSlide.Instance },
+ new TransitionItem{ Name = "Android Material", Transition = MaterialListPageSlide.Instance },
+ new TransitionItem{ Name = "iOS", Transition = DefaultIosPageSlide.Instance },
+ new TransitionItem{ Name = "Windows EntranceNavigation", Transition = EntranceNavigationTransition.Instance },
+ new TransitionItem{ Name = "Windows DrillInNavigation", Transition = DrillInNavigationTransition.Instance },
+ new TransitionItem{ Name = "Windows ListSlideNavigation", Transition = ListSlideNavigationTransition.Instance },
+ };
+
+ CurrentTransition = Transitions.FirstOrDefault(f => f.Transition == PlatformSetup.TransitionForPage);
+ }
+
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogFilterViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogFilterViewModel.cs
new file mode 100644
index 0000000..9185629
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogFilterViewModel.cs
@@ -0,0 +1,59 @@
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using AvaloniaInside.Shell;
+using ReactiveUI;
+using ShellBottomCustomNavigator.Models;
+
+namespace ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+
+public class ProductCatalogFilterViewModel : ViewModelBase
+{
+ private readonly INavigator _navigationService;
+ private string? _selectedCategory;
+
+ public ICommand CloseCommand { get; }
+ public ICommand ClearCommand { get; }
+
+ public ProductCatalogFilterViewModel(INavigator navigationService)
+ {
+ _navigationService = navigationService;
+ var items = DummyPlace.Products.Select(s => s.MainCategory)
+ .Distinct()
+ .Order();
+ Categories = new ObservableCollection(items);
+
+ CloseCommand = ReactiveCommand.CreateFromTask(CloseAsync);
+ ClearCommand = ReactiveCommand.CreateFromTask(ClearAsync);
+ }
+
+ private Task CloseAsync(CancellationToken cancellationToken)
+ {
+ return _navigationService.BackAsync(cancellationToken) ?? Task.CompletedTask;
+ }
+
+ private Task ClearAsync(CancellationToken cancellationToken)
+ {
+ return _navigationService.BackAsync(string.Empty, cancellationToken);
+ }
+
+ public ObservableCollection Categories { get; }
+
+ public string? SelectedCategory
+ {
+ get => _selectedCategory;
+ set
+ {
+ this.RaiseAndSetIfChanged(ref _selectedCategory, value);
+ _ = _navigationService.BackAsync(value);
+ }
+ }
+
+ public void SetSelectedCategory(string? selected)
+ {
+ _selectedCategory = selected;
+ this.RaisePropertyChanged(nameof(SelectedCategory));
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogViewModel.cs
new file mode 100644
index 0000000..dadbabe
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductCatalogViewModel.cs
@@ -0,0 +1,60 @@
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using AvaloniaInside.Shell;
+using DynamicData;
+using ReactiveUI;
+using ShellBottomCustomNavigator.Models;
+
+namespace ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+
+public class ProductCatalogViewModel : ViewModelBase
+{
+ private readonly INavigator _navigationService;
+ private string? _selectedCategory;
+
+ public ObservableCollection Products { get; }
+ public ICommand FilterCommand { get; }
+
+ public string? SelectedCategory
+ {
+ get => _selectedCategory;
+ set
+ {
+ this.RaiseAndSetIfChanged(ref _selectedCategory, value);
+ this.RaisePropertyChanged(nameof(Title));
+ }
+ }
+
+ public string? Title => string.IsNullOrEmpty(SelectedCategory) ? "Products" : SelectedCategory;
+
+ public ProductCatalogViewModel(INavigator navigationService)
+ {
+ _navigationService = navigationService;
+ Products = new ObservableCollection(DummyPlace.Products);
+ FilterCommand = ReactiveCommand.CreateFromTask(FilterAsync);
+ }
+
+ private async Task FilterAsync(CancellationToken cancellationToken)
+ {
+ var result = await _navigationService
+ .NavigateAndWaitAsync("/main/product/filter", _selectedCategory, cancellationToken);
+
+ if (result.HasArgument)
+ UpdateSelectedCategory(result.As());
+ }
+
+ private void UpdateSelectedCategory(string? selectedCategory)
+ {
+ if (selectedCategory == string.Empty) selectedCategory = null;
+
+ var filtered = selectedCategory == null
+ ? DummyPlace.Products
+ : DummyPlace.Products.Where(w => w.MainCategory == selectedCategory);
+ Products.Clear();
+ Products.AddRange(filtered);
+ SelectedCategory = selectedCategory;
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductDetailViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductDetailViewModel.cs
new file mode 100644
index 0000000..e480db8
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ShopViewModels/ProductDetailViewModel.cs
@@ -0,0 +1,17 @@
+using ShellBottomCustomNavigator.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+public class ProductDetailViewModel : ViewModelBase
+{
+ public ProductDto Product { get; set; }
+
+ public ProductDetailViewModel(ProductDto product)
+ {
+ Product = product;
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ViewModelBase.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ViewModelBase.cs
new file mode 100644
index 0000000..a56269f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/ViewModelBase.cs
@@ -0,0 +1,7 @@
+using ReactiveUI;
+
+namespace ShellBottomCustomNavigator.ViewModels;
+
+public class ViewModelBase : ReactiveObject
+{
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/WelcomeViewModel.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/WelcomeViewModel.cs
new file mode 100644
index 0000000..ae224d5
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/ViewModels/WelcomeViewModel.cs
@@ -0,0 +1,29 @@
+using AvaloniaInside.Shell;
+using ReactiveUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Input;
+
+namespace ShellBottomCustomNavigator.ViewModels;
+
+public class WelcomeViewModel
+{
+ private readonly INavigator _navigationService;
+ public ICommand OpenCommand { get; set; }
+
+ public WelcomeViewModel(INavigator navigationService)
+ {
+ _navigationService = navigationService;
+ OpenCommand = ReactiveCommand.CreateFromTask(OpenAsync);
+ }
+
+ private Task OpenAsync(CancellationToken cancellationToken)
+ {
+ return _navigationService.NavigateAsync("/main", cancellationToken);
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml
new file mode 100644
index 0000000..2e69a7f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml.cs
new file mode 100644
index 0000000..79427a0
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/CatView.axaml.cs
@@ -0,0 +1,21 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class CatView : Page
+{
+ public CatView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-cat";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml
new file mode 100644
index 0000000..d41cf05
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml.cs
new file mode 100644
index 0000000..0ad3734
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/DogView.axaml.cs
@@ -0,0 +1,21 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class DogView : Page
+{
+ public DogView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-dog";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/FontIconImageSource.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/FontIconImageSource.cs
new file mode 100644
index 0000000..83da87e
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/FontIconImageSource.cs
@@ -0,0 +1,74 @@
+using Avalonia.Media;
+using Avalonia;
+using Projektanker.Icons.Avalonia;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.Views;
+internal class FontIconImageSource : DrawingImage
+{
+ public static readonly StyledProperty ValueProperty =
+ AvaloniaProperty.Register(nameof(Value));
+
+ public static readonly StyledProperty BrushProperty =
+ AvaloniaProperty.Register(nameof(Brush));
+
+ public static readonly StyledProperty PenProperty =
+ AvaloniaProperty.Register(nameof(Pen));
+
+ public string Value
+ {
+ get => GetValue(ValueProperty);
+ set => SetValue(ValueProperty, value);
+ }
+
+ public IBrush? Brush
+ {
+ get => GetValue(BrushProperty);
+ set => SetValue(BrushProperty, value);
+ }
+
+ public IPen? Pen
+ {
+ get => GetValue(PenProperty);
+ set => SetValue(PenProperty, value);
+ }
+
+ private GeometryDrawing GetGeometryDrawing()
+ {
+ if (Drawing is GeometryDrawing geometryDrawing)
+ return geometryDrawing;
+
+ Drawing = geometryDrawing = new GeometryDrawing();
+ return geometryDrawing;
+ }
+
+ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
+ {
+ base.OnPropertyChanged(change);
+ if (change.Property == ValueProperty)
+ {
+ HandleValueChanged();
+ }
+ else if (change.Property == BrushProperty || change.Property == PenProperty)
+ {
+ HandleBrushChanged();
+ }
+ }
+
+ private void HandleBrushChanged()
+ {
+ var geometry = GetGeometryDrawing();
+ geometry.Brush = Brush;
+ geometry.Pen = Pen;
+ }
+
+ private void HandleValueChanged()
+ {
+ var iconModel = IconProvider.Current.GetIcon(Value);
+ GetGeometryDrawing().Geometry = StreamGeometry.Parse(iconModel.Path);
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml
new file mode 100644
index 0000000..57e22d6
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml.cs
new file mode 100644
index 0000000..38be81a
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/HomePage.axaml.cs
@@ -0,0 +1,28 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class HomePage : Page
+{
+ public HomePage()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override Task InitialiseAsync(CancellationToken cancellationToken)
+ {
+ DataContext = new ViewModels.HomePageViewModel(Navigator);
+ return Task.CompletedTask;
+ }
+
+ public string Icon => "fa-solid fa-house";
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml
new file mode 100644
index 0000000..4e48fdd
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml.cs
new file mode 100644
index 0000000..e03f2cc
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainTabControl.axaml.cs
@@ -0,0 +1,40 @@
+using System;
+using Avalonia.Controls;
+using Avalonia.Controls.Primitives;
+using Avalonia.Markup.Xaml;
+using Avalonia.Styling;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class MainTabControl : TabControl, IStyleable
+{
+ public Type StyleKey => typeof(TabControl);
+ private Grid _circle;
+ public MainTabControl()
+ {
+ InitializeComponent();
+
+ var aaa = Styles;
+
+ this.SelectionChanged += (sender, args) =>
+ {
+ if (_circle == null) return;
+ int idx = SelectedIndex;
+ Canvas.SetLeft(_circle, idx * 80);
+ };
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
+ {
+ base.OnApplyTemplate(e);
+
+ _circle = e.NameScope.Get("PART_Circle");
+ this.SelectedIndex = 0;
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml
new file mode 100644
index 0000000..be295d0
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml.cs
new file mode 100644
index 0000000..0c54076
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainView.axaml.cs
@@ -0,0 +1,20 @@
+using Avalonia.Controls;
+using Avalonia.Interactivity;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class MainView : UserControl
+{
+ public static MainView Current { get; private set; }
+ public MainView()
+ {
+ Current = this;
+ InitializeComponent();
+ }
+
+ protected override void OnLoaded(RoutedEventArgs e)
+ {
+ Current = this;
+ base.OnLoaded(e);
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml
new file mode 100644
index 0000000..d6a9cc0
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml.cs
new file mode 100644
index 0000000..422cf95
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/MainWindow.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia.Controls;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml
new file mode 100644
index 0000000..a653323
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml.cs
new file mode 100644
index 0000000..eb68301
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/PetsTabControlView.axaml.cs
@@ -0,0 +1,24 @@
+using System;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using Avalonia.Styling;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class PetsTabControlView : TabControl, IStyleable
+{
+ public Type StyleKey => typeof(TabControl);
+
+ public PetsTabControlView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-paw";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml
new file mode 100644
index 0000000..e6b667d
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml
@@ -0,0 +1,10 @@
+
+ Welcome to Avalonia!
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml.cs
new file mode 100644
index 0000000..fb45492
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ProfileView.axaml.cs
@@ -0,0 +1,21 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class ProfileView : Page
+{
+ public ProfileView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-user";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml
new file mode 100644
index 0000000..a14f3d3
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml
@@ -0,0 +1,10 @@
+
+ Welcome to Avalonia!
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml.cs
new file mode 100644
index 0000000..a4b8852
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SecondView.axaml.cs
@@ -0,0 +1,19 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class SecondView : Page
+{
+ public SecondView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml
new file mode 100644
index 0000000..9319b4a
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml.cs
new file mode 100644
index 0000000..3f60b89
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SettingView.axaml.cs
@@ -0,0 +1,34 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+using ShellBottomCustomNavigator.ViewModels;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class SettingView : Page
+{
+ public SettingView()
+ {
+ InitializeComponent();
+ }
+
+ public override Task InitialiseAsync(CancellationToken cancellationToken)
+ {
+ DataContext = new SettingViewModel()
+ {
+ MainViewModel = (MainViewModel)MainView.Current.DataContext
+ };
+
+ return base.InitialiseAsync(cancellationToken);
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-user";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml
new file mode 100644
index 0000000..b896d1f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml.cs
new file mode 100644
index 0000000..acb2184
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ConfirmationCloseView.axaml.cs
@@ -0,0 +1,24 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views.ShopViews;
+
+public partial class ConfirmationCloseView : Page
+{
+ public ConfirmationCloseView()
+ {
+ InitializeComponent();
+ }
+
+ private void NoClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ Navigator.BackAsync(false);
+ }
+
+ private void YesClick(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ Navigator.BackAsync(true);
+ }
+}
\ No newline at end of file
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml
new file mode 100644
index 0000000..7426623
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml.cs
new file mode 100644
index 0000000..572d91f
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogFilterView.axaml.cs
@@ -0,0 +1,36 @@
+using System.Threading;
+using System.Threading.Tasks;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+using ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+
+namespace ShellBottomCustomNavigator.Views.ShopViews;
+
+public partial class ProductCatalogFilterView : Page
+{
+ public ProductCatalogFilterViewModel ViewModel { get; internal set; }
+
+ public ProductCatalogFilterView()
+ {
+ InitializeComponent();
+ }
+
+ public override Task InitialiseAsync(CancellationToken cancellationToken)
+ {
+ DataContext = ViewModel = new ProductCatalogFilterViewModel(Navigator);
+ return base.InitialiseAsync(cancellationToken);
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override Task ArgumentAsync(object args, CancellationToken cancellationToken)
+ {
+ if (args is string selectedCategory)
+ ViewModel.SetSelectedCategory(selectedCategory == string.Empty ? null : selectedCategory);
+ return Task.CompletedTask;
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml
new file mode 100644
index 0000000..c99626b
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml.cs
new file mode 100644
index 0000000..100c5df
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductCatalogView.axaml.cs
@@ -0,0 +1,31 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+using ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.Views.ShopViews;
+
+public partial class ProductCatalogView : Page
+{
+ public ProductCatalogView()
+ {
+ InitializeComponent();
+ }
+
+ public override Task InitialiseAsync(CancellationToken cancellationToken)
+ {
+ DataContext = new ProductCatalogViewModel(Navigator);
+
+ return base.InitialiseAsync(cancellationToken);
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public string Icon => "fa-solid fa-tag";
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml
new file mode 100644
index 0000000..2998439
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml.cs
new file mode 100644
index 0000000..cb1a2c0
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/ProductDetailView.axaml.cs
@@ -0,0 +1,33 @@
+using Avalonia.Controls;
+using AvaloniaInside.Shell;
+using ShellBottomCustomNavigator.Models;
+using ShellBottomCustomNavigator.ViewModels.ShopViewModels;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ShellBottomCustomNavigator.Views.ShopViews;
+public partial class ProductDetailView : Page
+{
+ public ProductDetailView()
+ {
+ InitializeComponent();
+ }
+
+ public override Task ArgumentAsync(object args, CancellationToken cancellationToken)
+ {
+ if (args is not ProductDto dto) return Task.CompletedTask;
+
+ DataContext = new ProductDetailViewModel(dto);
+ return Task.CompletedTask;
+ }
+
+ public override async Task OnNavigatingAsync(NaviagatingEventArgs args, CancellationToken cancellationToken)
+ {
+ if (args.Navigate == NavigateType.Pop)
+ {
+ var result = await Navigator.NavigateAndWaitAsync("/main/product/confirmation");
+ if (result.Argument is bool v)
+ args.Cancel = !v;
+ }
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/StarsControl.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/StarsControl.cs
new file mode 100644
index 0000000..064300d
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/ShopViews/StarsControl.cs
@@ -0,0 +1,8 @@
+using Avalonia.Controls;
+
+namespace ShellBottomCustomNavigator.Views.ShopViews;
+
+public class StarsControl : Control
+{
+
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml
new file mode 100644
index 0000000..7ec4b7c
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml.cs
new file mode 100644
index 0000000..40b0509
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/SimpleDialog.axaml.cs
@@ -0,0 +1,30 @@
+using Avalonia.Controls;
+using Avalonia.Interactivity;
+using Avalonia.Markup.Xaml;
+using AvaloniaInside.Shell;
+
+namespace ShellBottomCustomNavigator.Views;
+
+public partial class SimpleDialog : Page
+{
+ public SimpleDialog()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ private void OkButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ Navigator?.BackAsync();
+ }
+
+ private void CancelButton_OnClick(object? sender, RoutedEventArgs e)
+ {
+ Navigator?.BackAsync();
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml
new file mode 100644
index 0000000..551a365
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml.cs
new file mode 100644
index 0000000..9eaaac4
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/WelcomeView.axaml.cs
@@ -0,0 +1,21 @@
+using System.Threading;
+using System.Threading.Tasks;
+using AvaloniaInside.Shell;
+using ShellBottomCustomNavigator.ViewModels;
+
+namespace ShellBottomCustomNavigator.Views
+{
+ public partial class WelcomeView : Page
+ {
+ public WelcomeView()
+ {
+ InitializeComponent();
+ }
+
+ public override Task InitialiseAsync(CancellationToken cancellationToken)
+ {
+ DataContext = new WelcomeViewModel(Navigator);
+ return base.InitialiseAsync(cancellationToken);
+ }
+ }
+}
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml
new file mode 100644
index 0000000..ddb1aa8
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml.cs
new file mode 100644
index 0000000..85f64c7
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/CalendarWidgetView.axaml.cs
@@ -0,0 +1,22 @@
+using System;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ShellBottomCustomNavigator.Views.Widgets;
+
+public partial class CalendarWidgetView : UserControl
+{
+ public string JustNow => DateTime.Now.ToString("dd MMMM yyyy");
+
+ public CalendarWidgetView()
+ {
+ InitializeComponent();
+ DataContext = this;
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml
new file mode 100644
index 0000000..1339b31
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml.cs
new file mode 100644
index 0000000..f3f6b96
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/UserProfileWidgetView.axaml.cs
@@ -0,0 +1,18 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ShellBottomCustomNavigator.Views.Widgets;
+
+public partial class UserProfileWidgetView : UserControl
+{
+ public UserProfileWidgetView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml
new file mode 100644
index 0000000..1320f99
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml.cs b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml.cs
new file mode 100644
index 0000000..942006c
--- /dev/null
+++ b/src/Example/ShellBottomCustomNavigator/ShellBottomCustomNavigator/Views/Widgets/WeatherView.axaml.cs
@@ -0,0 +1,18 @@
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace ShellBottomCustomNavigator.Views.Widgets;
+
+public partial class WeatherView : UserControl
+{
+ public WeatherView()
+ {
+ InitializeComponent();
+ }
+
+ private void InitializeComponent()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+}
+
diff --git a/src/Example/ShellExample/ShellExample/Styles.axaml b/src/Example/ShellExample/ShellExample/Styles.axaml
index dd66a59..f838fc6 100644
--- a/src/Example/ShellExample/ShellExample/Styles.axaml
+++ b/src/Example/ShellExample/ShellExample/Styles.axaml
@@ -1,8 +1,6 @@
+ xmlns:local="clr-namespace:ShellExample">
@@ -47,13 +45,13 @@
@@ -80,8 +78,7 @@
SelectedItem="{TemplateBinding SelectedContent}"
local:Helper.CarouselToTabControl="true"
ItemTemplate="{TemplateBinding SelectedContentTemplate}"
- PageTransition="{x:Static PlatformSetup.TransitionForTab}">
-
+ PageTransition="{x:Static PlatformSetup.TransitionForTab}" />
@@ -89,14 +86,14 @@