diff --git a/apps/web-ui/src/routes/offers.tsx b/apps/web-ui/src/routes/offers.tsx
new file mode 100644
index 0000000..90ed785
--- /dev/null
+++ b/apps/web-ui/src/routes/offers.tsx
@@ -0,0 +1,127 @@
+import { createFileRoute, useNavigate } from '@tanstack/react-router'
+import { useState } from 'react'
+import { trpc } from '../lib/trpc-client'
+import { AppContainer } from 'web-components'
+import { Tag, Loader2, AlertCircle } from 'lucide-react'
+import { ProductCard } from '../components/ProductCard'
+import { AppLayout } from '../components/AppLayout'
+
+export const Route = createFileRoute('/offers')({ component: OffersPage })
+
+const SHOW_MORE_STEP = 6
+
+interface OffersSectionProps {
+ title: string
+ subtitle: string
+ products: any[]
+ expanded: boolean
+ onExpand: () => void
+ onProductPress: (id: number) => void
+}
+
+function OffersSection({ title, subtitle, products, expanded, onExpand, onProductPress }: OffersSectionProps) {
+ const visible = expanded ? products : products.slice(0, SHOW_MORE_STEP)
+ const hasMore = products.length > SHOW_MORE_STEP && !expanded
+
+ return (
+
+
+
+ {products.length === 0 ? (
+
+
+
No {title.toLowerCase()} available right now
+
+ ) : (
+ <>
+
+ {visible.map((item: any) => (
+
onProductPress(item.id)}
+ showDeliveryInfo={false}
+ miniView={true}
+ useAddToCartDialog={true}
+ />
+ ))}
+
+ {hasMore && (
+
+
+
+ )}
+ >
+ )}
+
+ )
+}
+
+function OffersPage() {
+ const navigate = useNavigate()
+ const [expandedOffers, setExpandedOffers] = useState(false)
+ const [expandedCombos, setExpandedCombos] = useState(false)
+
+ const { data, isLoading, error } = trpc.user.product.getOffersPage.useQuery()
+
+ const combos = data?.combos || []
+ const offers = data?.offers || []
+
+ const handleProductPress = (id: number) => {
+ navigate({ to: '/home/product/$id', params: { id: String(id) } })
+ }
+
+ if (isLoading) {
+ return (
+
+
+
+ )
+ }
+
+ if (error) {
+ return (
+
+
+
+
Failed to load offers. Please try again.
+
+
+ )
+ }
+
+ return (
+
+
+ setExpandedOffers(true)}
+ onProductPress={handleProductPress}
+ />
+
+ setExpandedCombos(true)}
+ onProductPress={handleProductPress}
+ />
+
+
+ )
+}