- Add Expo Router with bottom tabs (Home, Scan, Proforma, Payments, Profile) - Home: earnings summary, quick actions, invoice list with Waiting/Paid filters - Scan: placeholder for camera flow, recent scans list - Proforma: list of proforma requests with send-to-contacts CTA - Payments: pending match and reconciled list - Profile: account info, about, logout - Apply Yaltopia theme: primary orange (#ea580c), dark navbar/tabs (#2d2d2d) - Add mock data (invoices, proforma, payments, user) in lib/mock-data.ts - Root layout: GestureHandler, SafeArea, PortalHost; tab bar dark with orange active Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { Text, TextClassContext } from '@/components/ui/text';
|
|
import { cn } from '@/lib/utils';
|
|
import { View, type ViewProps } from 'react-native';
|
|
|
|
function Card({ className, ...props }: ViewProps & React.RefAttributes<View>) {
|
|
return (
|
|
<TextClassContext.Provider value="text-card-foreground">
|
|
<View
|
|
className={cn(
|
|
'bg-card border-border flex flex-col gap-6 rounded-xl border py-6 shadow-sm shadow-black/5',
|
|
className
|
|
)}
|
|
{...props}
|
|
/>
|
|
</TextClassContext.Provider>
|
|
);
|
|
}
|
|
|
|
function CardHeader({ className, ...props }: ViewProps & React.RefAttributes<View>) {
|
|
return <View className={cn('flex flex-col gap-1.5 px-6', className)} {...props} />;
|
|
}
|
|
|
|
function CardTitle({
|
|
className,
|
|
...props
|
|
}: React.ComponentProps<typeof Text> & React.RefAttributes<Text>) {
|
|
return (
|
|
<Text
|
|
role="heading"
|
|
aria-level={3}
|
|
className={cn('font-semibold leading-none', className)}
|
|
{...props}
|
|
/>
|
|
);
|
|
}
|
|
|
|
function CardDescription({
|
|
className,
|
|
...props
|
|
}: React.ComponentProps<typeof Text> & React.RefAttributes<Text>) {
|
|
return <Text className={cn('text-muted-foreground text-sm', className)} {...props} />;
|
|
}
|
|
|
|
function CardContent({ className, ...props }: ViewProps & React.RefAttributes<View>) {
|
|
return <View className={cn('px-6', className)} {...props} />;
|
|
}
|
|
|
|
function CardFooter({ className, ...props }: ViewProps & React.RefAttributes<View>) {
|
|
return <View className={cn('flex flex-row items-center px-6', className)} {...props} />;
|
|
}
|
|
|
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|