feat(companion): initial rn port scaffold
This commit is contained in:
81
aris/app/(tabs)/_layout.tsx
Normal file
81
aris/app/(tabs)/_layout.tsx
Normal file
@@ -0,0 +1,81 @@
|
||||
import { Ionicons } from "@expo/vector-icons";
|
||||
import { Tabs } from "expo-router";
|
||||
|
||||
const iconSize = 22;
|
||||
|
||||
export default function TabLayout() {
|
||||
return (
|
||||
<Tabs screenOptions={{ headerShown: false }}>
|
||||
<Tabs.Screen
|
||||
name="index"
|
||||
options={{
|
||||
title: "BLE",
|
||||
tabBarLabel: "BLE",
|
||||
tabBarIcon: ({ color, focused }) => (
|
||||
<Ionicons
|
||||
color={color}
|
||||
name={focused ? "bluetooth" : "bluetooth-outline"}
|
||||
size={iconSize}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
<Tabs.Screen
|
||||
name="orchestrator"
|
||||
options={{
|
||||
title: "Orchestrator",
|
||||
tabBarLabel: "Orchestrator",
|
||||
tabBarIcon: ({ color, focused }) => (
|
||||
<Ionicons
|
||||
color={color}
|
||||
name={focused ? "flash" : "flash-outline"}
|
||||
size={iconSize}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
<Tabs.Screen
|
||||
name="todos"
|
||||
options={{
|
||||
title: "Todos",
|
||||
tabBarLabel: "Todos",
|
||||
tabBarIcon: ({ color, focused }) => (
|
||||
<Ionicons
|
||||
color={color}
|
||||
name={focused ? "checkmark-done" : "checkmark-done-outline"}
|
||||
size={iconSize}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
<Tabs.Screen
|
||||
name="stocks"
|
||||
options={{
|
||||
title: "Stocks",
|
||||
tabBarLabel: "Stocks",
|
||||
tabBarIcon: ({ color, focused }) => (
|
||||
<Ionicons
|
||||
color={color}
|
||||
name={focused ? "stats-chart" : "stats-chart-outline"}
|
||||
size={iconSize}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
<Tabs.Screen
|
||||
name="settings"
|
||||
options={{
|
||||
title: "Settings",
|
||||
tabBarLabel: "Settings",
|
||||
tabBarIcon: ({ color, focused }) => (
|
||||
<Ionicons
|
||||
color={color}
|
||||
name={focused ? "settings" : "settings-outline"}
|
||||
size={iconSize}
|
||||
/>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
22
aris/app/(tabs)/index.tsx
Normal file
22
aris/app/(tabs)/index.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import { View } from "react-native";
|
||||
|
||||
import { Container } from "@/components/Container";
|
||||
import { Text } from "@/components/ui/text";
|
||||
|
||||
export default function BleScreen() {
|
||||
return (
|
||||
<View className={styles.container}>
|
||||
<Container>
|
||||
<Text variant="h3">BLE</Text>
|
||||
<Text className={styles.subtitle}>
|
||||
Port of SwiftUI BleStatusView will live here.
|
||||
</Text>
|
||||
</Container>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
container: "flex flex-1 bg-white",
|
||||
subtitle: "mt-2 text-sm text-muted-foreground",
|
||||
};
|
||||
22
aris/app/(tabs)/orchestrator.tsx
Normal file
22
aris/app/(tabs)/orchestrator.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import { View } from "react-native";
|
||||
|
||||
import { Container } from "@/components/Container";
|
||||
import { Text } from "@/components/ui/text";
|
||||
|
||||
export default function OrchestratorScreen() {
|
||||
return (
|
||||
<View className={styles.container}>
|
||||
<Container>
|
||||
<Text variant="h3">Orchestrator</Text>
|
||||
<Text className={styles.subtitle}>
|
||||
Port of SwiftUI OrchestratorView will live here.
|
||||
</Text>
|
||||
</Container>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
container: "flex flex-1 bg-white",
|
||||
subtitle: "mt-2 text-sm text-muted-foreground",
|
||||
};
|
||||
22
aris/app/(tabs)/settings.tsx
Normal file
22
aris/app/(tabs)/settings.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import { View } from "react-native";
|
||||
|
||||
import { Container } from "@/components/Container";
|
||||
import { Text } from "@/components/ui/text";
|
||||
|
||||
export default function SettingsScreen() {
|
||||
return (
|
||||
<View className={styles.container}>
|
||||
<Container>
|
||||
<Text variant="h3">Settings</Text>
|
||||
<Text className={styles.subtitle}>
|
||||
Port of SwiftUI SettingsView will live here.
|
||||
</Text>
|
||||
</Container>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
container: "flex flex-1 bg-white",
|
||||
subtitle: "mt-2 text-sm text-muted-foreground",
|
||||
};
|
||||
22
aris/app/(tabs)/stocks.tsx
Normal file
22
aris/app/(tabs)/stocks.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import { View } from "react-native";
|
||||
|
||||
import { Container } from "@/components/Container";
|
||||
import { Text } from "@/components/ui/text";
|
||||
|
||||
export default function StocksScreen() {
|
||||
return (
|
||||
<View className={styles.container}>
|
||||
<Container>
|
||||
<Text variant="h3">Stocks</Text>
|
||||
<Text className={styles.subtitle}>
|
||||
Port of SwiftUI StockSettingsView will live here.
|
||||
</Text>
|
||||
</Container>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
container: "flex flex-1 bg-white",
|
||||
subtitle: "mt-2 text-sm text-muted-foreground",
|
||||
};
|
||||
22
aris/app/(tabs)/todos.tsx
Normal file
22
aris/app/(tabs)/todos.tsx
Normal file
@@ -0,0 +1,22 @@
|
||||
import { View } from "react-native";
|
||||
|
||||
import { Container } from "@/components/Container";
|
||||
import { Text } from "@/components/ui/text";
|
||||
|
||||
export default function TodosScreen() {
|
||||
return (
|
||||
<View className={styles.container}>
|
||||
<Container>
|
||||
<Text variant="h3">Todos</Text>
|
||||
<Text className={styles.subtitle}>
|
||||
Port of SwiftUI TodosView will live here.
|
||||
</Text>
|
||||
</Container>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = {
|
||||
container: "flex flex-1 bg-white",
|
||||
subtitle: "mt-2 text-sm text-muted-foreground",
|
||||
};
|
||||
Reference in New Issue
Block a user