import { Ionicons } from "@expo/vector-icons"; import { router, useLocalSearchParams } from "expo-router"; import { useMemo, useState } from "react"; import { Image, Pressable, ScrollView, View, } from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { useTranslation } from "react-i18next"; import { Badge, Price, Rating, StockLabel } from "@/components/ui/Badge"; import { Button, IconButton } from "@/components/ui/Button"; import { Card, InfoRow, Section } from "@/components/ui/Card"; import { Chip } from "@/components/ui/Chip"; import { QtyStepper } from "@/components/ui/QtyStepper"; import { StickyBar } from "@/components/ui/StickyBar"; import { Text } from "@/components/ui/Text"; import { branches } from "@/lib/data/branches"; import { getDrugFacts, getReviewBreakdown } from "@/lib/data/clinical"; import { products } from "@/lib/data/products"; import { useCartStore } from "@/lib/stores/cartStore"; import { useFavoritesStore } from "@/lib/stores/favoritesStore"; import { colors, gutter, radii, space } from "@/lib/theme"; import { formatETB } from "@/lib/utils"; import { routes } from "@/lib/routes"; export default function ProductDetailScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const product = products.find((p) => p.id === id) ?? products[0]; const facts = useMemo(() => getDrugFacts(product), [product]); const reviews = useMemo(() => getReviewBreakdown(product), [product]); const [qty, setQty] = useState(1); const [dose, setDose] = useState(facts.dosages[0] ?? ""); const [tab, setTab] = useState<"details" | "pharmacy">("details"); const [more, setMore] = useState(false); const insets = useSafeAreaInsets(); const { t } = useTranslation(); const addProduct = useCartStore((s) => s.addProduct); const toggle = useFavoritesStore((s) => s.toggle); const liked = useFavoritesStore((s) => s.has(product.id)); const addToCart = () => { addProduct(product, qty); }; return ( router.back()} /> toggle(product.id)} color={liked ? colors.danger : colors.ink} accessibilityLabel={liked ? "Remove favorite" : "Add favorite"} /> {product.requiresPrescription ? ( ) : ( )} {product.name} {product.brand} · {product.unit} {facts.dosages.length > 0 ? ( Strength {facts.dosages.map((d) => ( setDose(d)} /> ))} ) : null} Same-day delivery in Addis Ababa Pharmacist-verified · 30-day return policy