diff --git a/app/(tabs)/apps.tsx b/app/(tabs)/apps.tsx index d353f43..a294ca3 100644 --- a/app/(tabs)/apps.tsx +++ b/app/(tabs)/apps.tsx @@ -1,5 +1,6 @@ import { View, Text, ScrollView, RefreshControl } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import { webContentMaxWidth } from "~/lib/responsive"; import { useRouter } from "expo-router"; import { useTranslation } from "react-i18next"; import { useCallback, useState } from "react"; @@ -34,6 +35,7 @@ export default function AppsScreen() { diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 5a3de4c..e3f39a8 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -1,5 +1,6 @@ import { View, Text, ScrollView, RefreshControl } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import { webContentMaxWidth } from "~/lib/responsive"; import { LayoutDashboard, ChevronRight, @@ -115,6 +116,7 @@ export default function HomeScreen() { diff --git a/app/(tabs)/more.tsx b/app/(tabs)/more.tsx index 11ff2d4..864d381 100644 --- a/app/(tabs)/more.tsx +++ b/app/(tabs)/more.tsx @@ -1,5 +1,6 @@ import { View, Text, ScrollView, TouchableOpacity } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import { webContentMaxWidth } from "~/lib/responsive"; import { UserCircle, Bell, @@ -81,7 +82,11 @@ export default function MoreScreen() { return ( - + {/* Profile Header */} {notifications.map((n) => ( diff --git a/app/(tabs)/profile.tsx b/app/(tabs)/profile.tsx index ba420b2..226e554 100644 --- a/app/(tabs)/profile.tsx +++ b/app/(tabs)/profile.tsx @@ -1,5 +1,6 @@ import { View, Text, ScrollView } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import { webContentMaxWidth } from "~/lib/responsive"; import { UserCircle } from "lucide-react-native"; import { useRouter } from "expo-router"; import { Button } from "~/components/ui/Button"; @@ -37,6 +38,7 @@ export default function ProfileScreen() { diff --git a/app/(tabs)/search.tsx b/app/(tabs)/search.tsx index 2020227..64339bc 100644 --- a/app/(tabs)/search.tsx +++ b/app/(tabs)/search.tsx @@ -1,5 +1,6 @@ import { View, Text, TouchableOpacity, ScrollView, ActivityIndicator } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; +import { webContentMaxWidth } from "~/lib/responsive"; import { Search as SearchIcon, X, ChevronRight, FileText, SearchX } from "lucide-react-native"; import { useRouter } from "expo-router"; import { useTranslation } from "react-i18next"; @@ -68,6 +69,7 @@ export default function SearchScreen() { diff --git a/app/ai.tsx b/app/ai.tsx index 9328f6b..f682bd9 100644 --- a/app/ai.tsx +++ b/app/ai.tsx @@ -11,6 +11,7 @@ import { } from "react-native"; import { SafeAreaView } from "react-native-safe-area-context"; import { useTranslation } from "react-i18next"; +import { webContentMaxWidth } from "~/lib/responsive"; import * as Clipboard from "expo-clipboard"; import { Send, @@ -305,6 +306,7 @@ export default function AIAssistantScreen() { ref={scrollRef} className="flex-1" contentContainerClassName="px-4 py-4" + contentContainerStyle={webContentMaxWidth} keyboardShouldPersistTaps="handled" > {messages.length === 0 ? ( @@ -356,8 +358,11 @@ export default function AIAssistantScreen() { )} - {/* Input bar */} - + {/* Input bar — capped + centered on web to align with the message column */} + {/* Field sections */} {sections.map((section, idx) => { diff --git a/components/renderers/FormViewRenderer.tsx b/components/renderers/FormViewRenderer.tsx index 462a6f8..f55e77d 100644 --- a/components/renderers/FormViewRenderer.tsx +++ b/components/renderers/FormViewRenderer.tsx @@ -9,6 +9,7 @@ import { } from "react-native"; import { ChevronDown, ChevronUp } from "lucide-react-native"; import { Button } from "~/components/ui/Button"; +import { webContentMaxWidth } from "~/lib/responsive"; import { isFieldVisible, isFieldReadonlyByCondition, @@ -310,6 +311,7 @@ export function FormViewRenderer({ {sections.map((section, idx) => { diff --git a/components/renderers/ListViewRenderer.tsx b/components/renderers/ListViewRenderer.tsx index ce43f16..4e8c402 100644 --- a/components/renderers/ListViewRenderer.tsx +++ b/components/renderers/ListViewRenderer.tsx @@ -7,6 +7,7 @@ import { RefreshControl, } from "react-native"; import { FlashList } from "@shopify/flash-list"; +import { webContentMaxWidth } from "~/lib/responsive"; import { ChevronDown, ChevronUp, Check, Search as SearchIcon, AlertCircle } from "lucide-react-native"; import { cn } from "~/lib/utils"; import { EmptyState } from "~/components/common/EmptyState"; @@ -392,7 +393,10 @@ export function ListViewRenderer({ const rowContent = (