diff --git a/js/mobile/app.config.ts b/js/mobile/app.config.ts
index cb8009b..2c99236 100644
--- a/js/mobile/app.config.ts
+++ b/js/mobile/app.config.ts
@@ -9,7 +9,7 @@ const config: ExpoConfig = {
orientation: "portrait",
icon: "./assets/icon.png",
scheme: "flowy",
- userInterfaceStyle: "automatic",
+ userInterfaceStyle: "dark",
newArchEnabled: true,
splash: {
image: "./assets/icon.png",
diff --git a/js/mobile/src/App.tsx b/js/mobile/src/App.tsx
index f932e26..23be821 100644
--- a/js/mobile/src/App.tsx
+++ b/js/mobile/src/App.tsx
@@ -31,7 +31,7 @@ export default function App() {
-
+
diff --git a/js/mobile/src/components/FlowyLogo.tsx b/js/mobile/src/components/FlowyLogo.tsx
new file mode 100644
index 0000000..148ce89
--- /dev/null
+++ b/js/mobile/src/components/FlowyLogo.tsx
@@ -0,0 +1,20 @@
+import Svg, { Path } from "react-native-svg";
+
+type Props = {
+ height?: number;
+ color?: string;
+};
+
+const ASPECT_RATIO = 89 / 18;
+
+export function FlowyLogo({ height = 18, color = "#828282" }: Props) {
+ const width = height * ASPECT_RATIO;
+ return (
+
+ );
+}
diff --git a/js/mobile/src/components/ListSeparator.tsx b/js/mobile/src/components/ListSeparator.tsx
new file mode 100644
index 0000000..e65d57e
--- /dev/null
+++ b/js/mobile/src/components/ListSeparator.tsx
@@ -0,0 +1,10 @@
+import { View } from "react-native";
+
+/**
+ * Inset hairline separator for edge-to-edge list rows. Pass to a FlatList
+ * via `ItemSeparatorComponent` so it renders only between rows, not after
+ * the last one. Mirrors desktop's pattern.
+ */
+export function ListSeparator() {
+ return ;
+}
diff --git a/js/mobile/src/features/networks/NetworkListScreen.tsx b/js/mobile/src/features/networks/NetworkListScreen.tsx
index 9a824b6..4efb26a 100644
--- a/js/mobile/src/features/networks/NetworkListScreen.tsx
+++ b/js/mobile/src/features/networks/NetworkListScreen.tsx
@@ -13,6 +13,8 @@ import { useNetworks } from "@/hooks/use-networks";
import { useAuthStore } from "@/stores/auth-store";
import { toUserMessage } from "@/lib/errors";
import type { RootStackScreenProps } from "@/navigation/types";
+import { FlowyLogo } from "@/components/FlowyLogo";
+import { ListSeparator } from "@/components/ListSeparator";
import { Drawer } from "./Drawer";
export function NetworkListScreen({
@@ -48,7 +50,7 @@ export function NetworkListScreen({
{initials}
- Flowy
+
@@ -71,10 +73,10 @@ export function NetworkListScreen({
item.id}
- contentContainerClassName="p-4 gap-2"
refreshControl={
}
+ ItemSeparatorComponent={ListSeparator}
renderItem={({ item }) => (
-
+
{network.name}
diff --git a/js/mobile/src/features/streams/StreamCard.tsx b/js/mobile/src/features/streams/StreamCard.tsx
index 782d979..5780450 100644
--- a/js/mobile/src/features/streams/StreamCard.tsx
+++ b/js/mobile/src/features/streams/StreamCard.tsx
@@ -96,10 +96,7 @@ export const StreamCard = memo(function StreamCard({
s.id}
- contentContainerClassName=""
+ ItemSeparatorComponent={ListSeparator}
renderItem={({ item }) => (