Redesign Orders list

This commit is contained in:
thesn10
2026-07-03 13:12:56 +02:00
parent 7d6c779711
commit 21acab57c6
2 changed files with 14 additions and 6 deletions

View File

@@ -1,20 +1,21 @@
import type { JSX } from "react"; import type { JSX } from "react";
import { ScrollView, View } from "react-native"; import { ScrollView } from "react-native";
import { Typography } from "heroui-native"; import { Typography } from "heroui-native";
import { ORDERS } from "@/data/mock"; import { ORDERS } from "@/data/mock";
import { OrderRow } from "@/components/OrderRow"; import { OrderRow } from "@/components/OrderRow";
import { PageContainer } from "@/components/PageContainer";
export default function OrdersTab(): JSX.Element { export default function OrdersTab(): JSX.Element {
return ( return (
<ScrollView className="flex-1 bg-background"> <ScrollView className="flex-1 bg-background">
<View className="gap-2.5 p-4 md:mx-auto md:w-full md:max-w-2xl"> <PageContainer className="gap-2.5 py-4">
<Typography type="h4" className="mb-1"> <Typography type="h4" className="mb-1">
My Orders My Orders
</Typography> </Typography>
{ORDERS.map((order) => ( {ORDERS.map((order) => (
<OrderRow key={order.id} order={order} /> <OrderRow key={order.id} order={order} />
))} ))}
</View> </PageContainer>
</ScrollView> </ScrollView>
); );
} }

View File

@@ -1,10 +1,12 @@
import type { JSX } from "react"; import type { JSX } from "react";
import { useState } from "react";
import { Pressable, View } from "react-native"; import { Pressable, View } from "react-native";
import { useRouter } from "expo-router"; import { useRouter } from "expo-router";
import { Typography } from "heroui-native"; import { Typography } from "heroui-native";
import type { Order } from "@/data/mock"; import type { Order } from "@/data/mock";
import { orderStatusInfo } from "@/lib/status"; import { orderStatusInfo } from "@/lib/status";
import { StatusChip } from "@/components/StatusChip"; import { StatusChip } from "@/components/StatusChip";
import { MonoText } from "@/components/MonoText";
interface OrderRowProps { interface OrderRowProps {
order: Order; order: Order;
@@ -12,21 +14,26 @@ interface OrderRowProps {
export function OrderRow({ order }: OrderRowProps): JSX.Element { export function OrderRow({ order }: OrderRowProps): JSX.Element {
const router = useRouter(); const router = useRouter();
const [isHovered, setIsHovered] = useState(false);
const status = orderStatusInfo(order.status); const status = orderStatusInfo(order.status);
return ( return (
<Pressable <Pressable
onPress={() => router.push(`/orders/${order.id}`)} onPress={() => router.push(`/orders/${order.id}`)}
className="flex-row items-center gap-3.5 rounded-xl border border-border bg-surface p-3.5" onHoverIn={() => setIsHovered(true)}
onHoverOut={() => setIsHovered(false)}
className={`flex-row items-center gap-3.5 rounded-xl border bg-surface p-3.5 ${
isHovered ? "border-border-secondary" : "border-border"
}`}
> >
<Typography className="text-2xl">{order.emoji}</Typography> <Typography className="text-2xl">{order.emoji}</Typography>
<View className="flex-1 gap-0.5"> <View className="flex-1 gap-0.5">
<Typography type="body-sm" weight="semibold" numberOfLines={1}> <Typography type="body-sm" weight="semibold" numberOfLines={1}>
{order.name} {order.name}
</Typography> </Typography>
<Typography type="body-xs" color="muted"> <MonoText type="body-xs" color="muted">
{order.seller} {order.seller}
</Typography> </MonoText>
</View> </View>
<View className="items-end gap-0.5"> <View className="items-end gap-0.5">
<Typography type="body-sm" weight="bold"> <Typography type="body-sm" weight="bold">