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 }) => (