diff --git a/src/modules/market/components/ProductDetailDialog.vue b/src/modules/market/components/ProductDetailDialog.vue new file mode 100644 index 0000000..e226b37 --- /dev/null +++ b/src/modules/market/components/ProductDetailDialog.vue @@ -0,0 +1,267 @@ + + + + + + + Close + + + + + + + + + + + + + + + + + + + + + + + + + + {{ product.name }} + + + {{ formatPrice(product.price, product.currency) }} + + + Out of Stock + + + Only {{ product.quantity }} left + + + In Stock + + + + + + + + Sold by + {{ product.stallName }} + + + + + Description + {{ product.description }} + + + + + Categories + + + {{ category }} + + + + + + + + + Quantity: + + + + + + + + + + + + + + + + Add to Cart + + + Continue Shopping + + + + + + + + + + + + \ No newline at end of file diff --git a/src/modules/market/index.ts b/src/modules/market/index.ts index 24bf032..93b6bd6 100644 --- a/src/modules/market/index.ts +++ b/src/modules/market/index.ts @@ -145,6 +145,15 @@ export const marketModule: ModulePlugin = { title: 'Checkout', requiresAuth: false } + }, + { + path: '/market/stall/:stallId', + name: 'stall-view', + component: () => import('./views/StallView.vue'), + meta: { + title: 'Stall', + requiresAuth: false + } } ] as RouteRecordRaw[], diff --git a/src/modules/market/views/MarketPage.vue b/src/modules/market/views/MarketPage.vue index 9fa6d47..a52873f 100644 --- a/src/modules/market/views/MarketPage.vue +++ b/src/modules/market/views/MarketPage.vue @@ -81,6 +81,7 @@ :product="product" @add-to-cart="addToCart" @view-details="viewProduct" + @view-stall="viewStall" /> @@ -164,6 +165,11 @@ const viewProduct = (_product: any) => { // TODO: Navigate to product detail page } +const viewStall = (stallId: string) => { + // Navigate to the stall view page + router.push(`/market/stall/${stallId}`) +} + const viewCart = () => { router.push('/cart') } diff --git a/src/modules/market/views/StallView.vue b/src/modules/market/views/StallView.vue new file mode 100644 index 0000000..aca78c8 --- /dev/null +++ b/src/modules/market/views/StallView.vue @@ -0,0 +1,319 @@ + + + + + + + + Back to Market + + + + + + + + + + + + + + + + + + + {{ stall?.name || 'Unknown Stall' }} + + {{ stall.description }} + + + + + + {{ productCount }} + Products + + + {{ stall?.currency || 'sats' }} + Currency + + + {{ stall.shipping.length }} + Shipping Zones + + + + + + + + {{ category }} + + + + + + + + + + + + + + + + + + + + + + + + Name + Price: Low to High + Price: High to Low + Newest First + + + + + Clear Filters + + + + + + + + + + + + + + No Products Found + + {{ searchQuery || selectedCategories.length > 0 + ? 'Try adjusting your filters or search terms' + : 'This stall doesn\'t have any products yet' }} + + + + + + + + + + + + + + + + \ No newline at end of file
{{ product.description }}
+ {{ stall.description }} +
+ {{ searchQuery || selectedCategories.length > 0 + ? 'Try adjusting your filters or search terms' + : 'This stall doesn\'t have any products yet' }} +