@contractspec/example.marketplace 1.56.1 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/docs/index.js +103 -0
- package/dist/browser/docs/marketplace.docblock.js +103 -0
- package/dist/browser/entities/index.js +721 -0
- package/dist/browser/entities/order.js +167 -0
- package/dist/browser/entities/payout.js +142 -0
- package/dist/browser/entities/product.js +152 -0
- package/dist/browser/entities/review.js +129 -0
- package/dist/browser/entities/store.js +97 -0
- package/dist/browser/example.js +42 -0
- package/dist/browser/handlers/index.js +303 -0
- package/dist/browser/handlers/marketplace.handlers.js +303 -0
- package/dist/browser/index.js +2016 -0
- package/dist/browser/marketplace.capability.js +40 -0
- package/dist/browser/marketplace.feature.js +137 -0
- package/dist/browser/order/index.js +307 -0
- package/dist/browser/order/order.enum.js +17 -0
- package/dist/browser/order/order.event.js +131 -0
- package/dist/browser/order/order.operations.js +172 -0
- package/dist/browser/order/order.presentation.js +153 -0
- package/dist/browser/order/order.schema.js +79 -0
- package/dist/browser/payout/index.js +152 -0
- package/dist/browser/payout/payout.enum.js +12 -0
- package/dist/browser/payout/payout.event.js +55 -0
- package/dist/browser/payout/payout.operations.js +94 -0
- package/dist/browser/payout/payout.presentation.js +111 -0
- package/dist/browser/payout/payout.schema.js +61 -0
- package/dist/browser/product/index.js +249 -0
- package/dist/browser/product/product.enum.js +13 -0
- package/dist/browser/product/product.event.js +74 -0
- package/dist/browser/product/product.operations.js +171 -0
- package/dist/browser/product/product.presentation.js +158 -0
- package/dist/browser/product/product.schema.js +84 -0
- package/dist/browser/review/index.js +206 -0
- package/dist/browser/review/review.enum.js +11 -0
- package/dist/browser/review/review.event.js +50 -0
- package/dist/browser/review/review.operations.js +152 -0
- package/dist/browser/review/review.presentation.js +123 -0
- package/dist/browser/review/review.schema.js +74 -0
- package/dist/browser/seeders/index.js +12 -0
- package/dist/browser/store/index.js +142 -0
- package/dist/browser/store/store.enum.js +11 -0
- package/dist/browser/store/store.event.js +52 -0
- package/dist/browser/store/store.operations.js +88 -0
- package/dist/browser/store/store.presentation.js +94 -0
- package/dist/browser/store/store.schema.js +43 -0
- package/dist/browser/tests/operations.test-spec.js +139 -0
- package/dist/browser/ui/MarketplaceDashboard.js +418 -0
- package/dist/browser/ui/hooks/index.js +59 -0
- package/dist/browser/ui/hooks/useMarketplaceData.js +56 -0
- package/dist/browser/ui/index.js +668 -0
- package/dist/browser/ui/renderers/index.js +248 -0
- package/dist/browser/ui/renderers/marketplace.markdown.js +248 -0
- package/dist/docs/index.d.ts +2 -1
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +104 -1
- package/dist/docs/marketplace.docblock.d.ts +2 -1
- package/dist/docs/marketplace.docblock.d.ts.map +1 -0
- package/dist/docs/marketplace.docblock.js +46 -57
- package/dist/entities/index.d.ts +302 -307
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +719 -43
- package/dist/entities/order.d.ts +77 -82
- package/dist/entities/order.d.ts.map +1 -1
- package/dist/entities/order.js +162 -167
- package/dist/entities/payout.d.ts +64 -69
- package/dist/entities/payout.d.ts.map +1 -1
- package/dist/entities/payout.js +137 -156
- package/dist/entities/product.d.ts +69 -74
- package/dist/entities/product.d.ts.map +1 -1
- package/dist/entities/product.js +148 -156
- package/dist/entities/review.d.ts +55 -60
- package/dist/entities/review.d.ts.map +1 -1
- package/dist/entities/review.js +124 -146
- package/dist/entities/store.d.ts +40 -45
- package/dist/entities/store.d.ts.map +1 -1
- package/dist/entities/store.js +94 -106
- package/dist/example.d.ts +2 -6
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +40 -55
- package/dist/handlers/index.d.ts +2 -2
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +304 -3
- package/dist/handlers/marketplace.handlers.d.ts +138 -138
- package/dist/handlers/marketplace.handlers.d.ts.map +1 -1
- package/dist/handlers/marketplace.handlers.js +284 -309
- package/dist/index.d.ts +13 -31
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2017 -32
- package/dist/marketplace.capability.d.ts +3 -8
- package/dist/marketplace.capability.d.ts.map +1 -1
- package/dist/marketplace.capability.js +41 -34
- package/dist/marketplace.feature.d.ts +1 -7
- package/dist/marketplace.feature.d.ts.map +1 -1
- package/dist/marketplace.feature.js +136 -313
- package/dist/node/docs/index.js +103 -0
- package/dist/node/docs/marketplace.docblock.js +103 -0
- package/dist/node/entities/index.js +721 -0
- package/dist/node/entities/order.js +167 -0
- package/dist/node/entities/payout.js +142 -0
- package/dist/node/entities/product.js +152 -0
- package/dist/node/entities/review.js +129 -0
- package/dist/node/entities/store.js +97 -0
- package/dist/node/example.js +42 -0
- package/dist/node/handlers/index.js +303 -0
- package/dist/node/handlers/marketplace.handlers.js +303 -0
- package/dist/node/index.js +2016 -0
- package/dist/node/marketplace.capability.js +40 -0
- package/dist/node/marketplace.feature.js +137 -0
- package/dist/node/order/index.js +307 -0
- package/dist/node/order/order.enum.js +17 -0
- package/dist/node/order/order.event.js +131 -0
- package/dist/node/order/order.operations.js +172 -0
- package/dist/node/order/order.presentation.js +153 -0
- package/dist/node/order/order.schema.js +79 -0
- package/dist/node/payout/index.js +152 -0
- package/dist/node/payout/payout.enum.js +12 -0
- package/dist/node/payout/payout.event.js +55 -0
- package/dist/node/payout/payout.operations.js +94 -0
- package/dist/node/payout/payout.presentation.js +111 -0
- package/dist/node/payout/payout.schema.js +61 -0
- package/dist/node/product/index.js +249 -0
- package/dist/node/product/product.enum.js +13 -0
- package/dist/node/product/product.event.js +74 -0
- package/dist/node/product/product.operations.js +171 -0
- package/dist/node/product/product.presentation.js +158 -0
- package/dist/node/product/product.schema.js +84 -0
- package/dist/node/review/index.js +206 -0
- package/dist/node/review/review.enum.js +11 -0
- package/dist/node/review/review.event.js +50 -0
- package/dist/node/review/review.operations.js +152 -0
- package/dist/node/review/review.presentation.js +123 -0
- package/dist/node/review/review.schema.js +74 -0
- package/dist/node/seeders/index.js +12 -0
- package/dist/node/store/index.js +142 -0
- package/dist/node/store/store.enum.js +11 -0
- package/dist/node/store/store.event.js +52 -0
- package/dist/node/store/store.operations.js +88 -0
- package/dist/node/store/store.presentation.js +94 -0
- package/dist/node/store/store.schema.js +43 -0
- package/dist/node/tests/operations.test-spec.js +139 -0
- package/dist/node/ui/MarketplaceDashboard.js +418 -0
- package/dist/node/ui/hooks/index.js +59 -0
- package/dist/node/ui/hooks/useMarketplaceData.js +56 -0
- package/dist/node/ui/index.js +668 -0
- package/dist/node/ui/renderers/index.js +248 -0
- package/dist/node/ui/renderers/marketplace.markdown.js +248 -0
- package/dist/order/index.d.ts +8 -5
- package/dist/order/index.d.ts.map +1 -0
- package/dist/order/index.js +307 -5
- package/dist/order/order.enum.d.ts +1 -6
- package/dist/order/order.enum.d.ts.map +1 -1
- package/dist/order/order.enum.js +16 -20
- package/dist/order/order.event.d.ts +133 -139
- package/dist/order/order.event.d.ts.map +1 -1
- package/dist/order/order.event.js +121 -205
- package/dist/order/order.operations.d.ts +291 -297
- package/dist/order/order.operations.d.ts.map +1 -1
- package/dist/order/order.operations.js +169 -115
- package/dist/order/order.presentation.d.ts +3 -8
- package/dist/order/order.presentation.d.ts.map +1 -1
- package/dist/order/order.presentation.js +149 -81
- package/dist/order/order.schema.d.ts +143 -148
- package/dist/order/order.schema.d.ts.map +1 -1
- package/dist/order/order.schema.js +75 -150
- package/dist/payout/index.d.ts +8 -5
- package/dist/payout/index.d.ts.map +1 -0
- package/dist/payout/index.js +152 -5
- package/dist/payout/payout.enum.d.ts +1 -6
- package/dist/payout/payout.enum.d.ts.map +1 -1
- package/dist/payout/payout.enum.js +11 -15
- package/dist/payout/payout.event.d.ts +54 -60
- package/dist/payout/payout.event.d.ts.map +1 -1
- package/dist/payout/payout.event.js +51 -87
- package/dist/payout/payout.operations.d.ts +82 -88
- package/dist/payout/payout.operations.d.ts.map +1 -1
- package/dist/payout/payout.operations.js +92 -50
- package/dist/payout/payout.presentation.d.ts +2 -7
- package/dist/payout/payout.presentation.d.ts.map +1 -1
- package/dist/payout/payout.presentation.js +108 -56
- package/dist/payout/payout.schema.d.ts +139 -144
- package/dist/payout/payout.schema.d.ts.map +1 -1
- package/dist/payout/payout.schema.js +58 -112
- package/dist/product/index.d.ts +8 -5
- package/dist/product/index.d.ts.map +1 -0
- package/dist/product/index.js +249 -5
- package/dist/product/product.enum.d.ts +1 -6
- package/dist/product/product.enum.d.ts.map +1 -1
- package/dist/product/product.enum.js +12 -16
- package/dist/product/product.event.d.ts +63 -69
- package/dist/product/product.event.d.ts.map +1 -1
- package/dist/product/product.event.js +68 -113
- package/dist/product/product.operations.d.ts +225 -231
- package/dist/product/product.operations.d.ts.map +1 -1
- package/dist/product/product.operations.js +168 -104
- package/dist/product/product.presentation.d.ts +3 -8
- package/dist/product/product.presentation.d.ts.map +1 -1
- package/dist/product/product.presentation.js +154 -81
- package/dist/product/product.schema.d.ts +196 -201
- package/dist/product/product.schema.d.ts.map +1 -1
- package/dist/product/product.schema.js +80 -171
- package/dist/review/index.d.ts +8 -5
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +206 -5
- package/dist/review/review.enum.d.ts +1 -6
- package/dist/review/review.enum.d.ts.map +1 -1
- package/dist/review/review.enum.js +10 -14
- package/dist/review/review.event.d.ts +46 -52
- package/dist/review/review.event.d.ts.map +1 -1
- package/dist/review/review.event.js +46 -79
- package/dist/review/review.operations.d.ts +190 -196
- package/dist/review/review.operations.d.ts.map +1 -1
- package/dist/review/review.operations.js +149 -102
- package/dist/review/review.presentation.d.ts +2 -7
- package/dist/review/review.presentation.d.ts.map +1 -1
- package/dist/review/review.presentation.js +120 -56
- package/dist/review/review.schema.d.ts +164 -169
- package/dist/review/review.schema.d.ts.map +1 -1
- package/dist/review/review.schema.js +70 -151
- package/dist/seeders/index.d.ts +4 -8
- package/dist/seeders/index.d.ts.map +1 -1
- package/dist/seeders/index.js +11 -16
- package/dist/store/index.d.ts +8 -5
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +142 -5
- package/dist/store/store.enum.d.ts +1 -6
- package/dist/store/store.enum.d.ts.map +1 -1
- package/dist/store/store.enum.js +10 -14
- package/dist/store/store.event.d.ts +42 -48
- package/dist/store/store.event.d.ts.map +1 -1
- package/dist/store/store.event.js +48 -75
- package/dist/store/store.operations.d.ts +98 -104
- package/dist/store/store.operations.d.ts.map +1 -1
- package/dist/store/store.operations.js +86 -58
- package/dist/store/store.presentation.d.ts +2 -7
- package/dist/store/store.presentation.d.ts.map +1 -1
- package/dist/store/store.presentation.js +91 -56
- package/dist/store/store.schema.d.ts +70 -75
- package/dist/store/store.schema.d.ts.map +1 -1
- package/dist/store/store.schema.js +41 -90
- package/dist/tests/operations.test-spec.d.ts +5 -10
- package/dist/tests/operations.test-spec.d.ts.map +1 -1
- package/dist/tests/operations.test-spec.js +134 -146
- package/dist/ui/MarketplaceDashboard.d.ts +1 -6
- package/dist/ui/MarketplaceDashboard.d.ts.map +1 -1
- package/dist/ui/MarketplaceDashboard.js +413 -313
- package/dist/ui/hooks/index.d.ts +2 -2
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +59 -4
- package/dist/ui/hooks/useMarketplaceData.d.ts +16 -20
- package/dist/ui/hooks/useMarketplaceData.d.ts.map +1 -1
- package/dist/ui/hooks/useMarketplaceData.js +53 -60
- package/dist/ui/index.d.ts +7 -6
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +668 -5
- package/dist/ui/renderers/index.d.ts +2 -2
- package/dist/ui/renderers/index.d.ts.map +1 -0
- package/dist/ui/renderers/index.js +249 -3
- package/dist/ui/renderers/marketplace.markdown.d.ts +13 -15
- package/dist/ui/renderers/marketplace.markdown.d.ts.map +1 -1
- package/dist/ui/renderers/marketplace.markdown.js +241 -236
- package/package.json +529 -110
- package/dist/docs/marketplace.docblock.js.map +0 -1
- package/dist/entities/index.js.map +0 -1
- package/dist/entities/order.js.map +0 -1
- package/dist/entities/payout.js.map +0 -1
- package/dist/entities/product.js.map +0 -1
- package/dist/entities/review.js.map +0 -1
- package/dist/entities/store.js.map +0 -1
- package/dist/example.js.map +0 -1
- package/dist/handlers/marketplace.handlers.js.map +0 -1
- package/dist/marketplace.capability.js.map +0 -1
- package/dist/marketplace.feature.js.map +0 -1
- package/dist/order/order.enum.js.map +0 -1
- package/dist/order/order.event.js.map +0 -1
- package/dist/order/order.operations.js.map +0 -1
- package/dist/order/order.presentation.js.map +0 -1
- package/dist/order/order.schema.js.map +0 -1
- package/dist/payout/payout.enum.js.map +0 -1
- package/dist/payout/payout.event.js.map +0 -1
- package/dist/payout/payout.operations.js.map +0 -1
- package/dist/payout/payout.presentation.js.map +0 -1
- package/dist/payout/payout.schema.js.map +0 -1
- package/dist/product/product.enum.js.map +0 -1
- package/dist/product/product.event.js.map +0 -1
- package/dist/product/product.operations.js.map +0 -1
- package/dist/product/product.presentation.js.map +0 -1
- package/dist/product/product.schema.js.map +0 -1
- package/dist/review/review.enum.js.map +0 -1
- package/dist/review/review.event.js.map +0 -1
- package/dist/review/review.operations.js.map +0 -1
- package/dist/review/review.presentation.js.map +0 -1
- package/dist/review/review.schema.js.map +0 -1
- package/dist/seeders/index.js.map +0 -1
- package/dist/store/store.enum.js.map +0 -1
- package/dist/store/store.event.js.map +0 -1
- package/dist/store/store.operations.js.map +0 -1
- package/dist/store/store.presentation.js.map +0 -1
- package/dist/store/store.schema.js.map +0 -1
- package/dist/tests/operations.test-spec.js.map +0 -1
- package/dist/ui/MarketplaceDashboard.js.map +0 -1
- package/dist/ui/hooks/useMarketplaceData.js.map +0 -1
- package/dist/ui/renderers/marketplace.markdown.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarketplaceDashboard.js","names":[],"sources":["../../src/ui/MarketplaceDashboard.tsx"],"sourcesContent":["'use client';\n\n/**\n * Marketplace Dashboard\n *\n * Interactive dashboard for the marketplace template.\n * Displays stores, products, and orders with stats.\n */\nimport { useState } from 'react';\nimport {\n Button,\n ErrorState,\n LoaderBlock,\n StatCard,\n StatCardGroup,\n} from '@contractspec/lib.design-system';\nimport { useMarketplaceData } from './hooks/useMarketplaceData';\n\ntype Tab = 'stores' | 'products' | 'orders';\n\nconst STATUS_COLORS: Record<string, string> = {\n ACTIVE:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n PENDING:\n 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400',\n SUSPENDED: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n DRAFT: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400',\n OUT_OF_STOCK:\n 'bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400',\n ARCHIVED: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400',\n CONFIRMED: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',\n PROCESSING:\n 'bg-indigo-100 text-indigo-700 dark:bg-indigo-900/30 dark:text-indigo-400',\n SHIPPED:\n 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400',\n DELIVERED:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n CANCELLED: 'bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400',\n};\n\nfunction formatCurrency(value: number, currency = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(value);\n}\n\nexport function MarketplaceDashboard() {\n const [activeTab, setActiveTab] = useState<Tab>('stores');\n const { stores, products, orders, loading, error, stats, refetch } =\n useMarketplaceData();\n\n const tabs: { id: Tab; label: string; icon: string }[] = [\n { id: 'stores', label: 'Stores', icon: '🏪' },\n { id: 'products', label: 'Products', icon: '📦' },\n { id: 'orders', label: 'Orders', icon: '🛒' },\n ];\n\n if (loading) {\n return <LoaderBlock label=\"Loading Marketplace...\" />;\n }\n\n if (error) {\n return (\n <ErrorState\n title=\"Failed to load Marketplace\"\n description={error.message}\n onRetry={refetch}\n retryLabel=\"Retry\"\n />\n );\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-2xl font-bold\">Marketplace</h2>\n <Button onClick={() => alert('Create store modal')}>\n <span className=\"mr-2\">+</span> New Store\n </Button>\n </div>\n\n {/* Stats Row */}\n <StatCardGroup>\n <StatCard\n label=\"Stores\"\n value={stats.totalStores}\n hint={`${stats.activeStores} active`}\n />\n <StatCard label=\"Products\" value={stats.totalProducts} hint=\"listed\" />\n <StatCard\n label=\"Orders\"\n value={stats.totalOrders}\n hint={`${stats.pendingOrders} pending`}\n />\n <StatCard\n label=\"Revenue\"\n value={formatCurrency(stats.totalRevenue)}\n hint=\"total\"\n />\n </StatCardGroup>\n\n {/* Navigation Tabs */}\n <nav className=\"bg-muted flex gap-1 rounded-lg p-1\" role=\"tablist\">\n {tabs.map((tab) => (\n <Button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === tab.id}\n onClick={() => setActiveTab(tab.id)}\n className={`flex flex-1 items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors ${\n activeTab === tab.id\n ? 'bg-background text-foreground shadow-sm'\n : 'text-muted-foreground hover:text-foreground'\n }`}\n >\n <span>{tab.icon}</span>\n {tab.label}\n </Button>\n ))}\n </nav>\n\n {/* Tab Content */}\n <div className=\"min-h-[400px]\" role=\"tabpanel\">\n {activeTab === 'stores' && (\n <div className=\"border-border rounded-lg border\">\n <table className=\"w-full\">\n <thead className=\"border-border bg-muted/30 border-b\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Store\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Status\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Rating\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Reviews\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-border divide-y\">\n {stores.map((store) => (\n <tr key={store.id} className=\"hover:bg-muted/50\">\n <td className=\"px-4 py-3\">\n <div className=\"font-medium\">{store.name}</div>\n <div className=\"text-muted-foreground text-sm\">\n {store.description}\n </div>\n </td>\n <td className=\"px-4 py-3\">\n <span\n className={`inline-flex rounded-full px-2 py-0.5 text-xs font-medium ${STATUS_COLORS[store.status] ?? ''}`}\n >\n {store.status}\n </span>\n </td>\n <td className=\"px-4 py-3\">\n <span className=\"flex items-center gap-1\">\n ⭐ {store.rating.toFixed(1)}\n </span>\n </td>\n <td className=\"text-muted-foreground px-4 py-3 text-sm\">\n {store.reviewCount} reviews\n </td>\n </tr>\n ))}\n {stores.length === 0 && (\n <tr>\n <td\n colSpan={4}\n className=\"text-muted-foreground px-4 py-8 text-center\"\n >\n No stores found\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )}\n\n {activeTab === 'products' && (\n <div className=\"border-border rounded-lg border\">\n <table className=\"w-full\">\n <thead className=\"border-border bg-muted/30 border-b\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Product\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Price\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Stock\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Status\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-border divide-y\">\n {products.map((product) => (\n <tr key={product.id} className=\"hover:bg-muted/50\">\n <td className=\"px-4 py-3\">\n <div className=\"font-medium\">{product.name}</div>\n <div className=\"text-muted-foreground text-sm\">\n {product.category}\n </div>\n </td>\n <td className=\"px-4 py-3 font-mono\">\n {formatCurrency(product.price, product.currency)}\n </td>\n <td className=\"px-4 py-3\">{product.stock}</td>\n <td className=\"px-4 py-3\">\n <span\n className={`inline-flex rounded-full px-2 py-0.5 text-xs font-medium ${STATUS_COLORS[product.status] ?? ''}`}\n >\n {product.status}\n </span>\n </td>\n </tr>\n ))}\n {products.length === 0 && (\n <tr>\n <td\n colSpan={4}\n className=\"text-muted-foreground px-4 py-8 text-center\"\n >\n No products found\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )}\n\n {activeTab === 'orders' && (\n <div className=\"border-border rounded-lg border\">\n <table className=\"w-full\">\n <thead className=\"border-border bg-muted/30 border-b\">\n <tr>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Order ID\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Customer\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Total\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Status\n </th>\n <th className=\"px-4 py-3 text-left text-sm font-medium\">\n Date\n </th>\n </tr>\n </thead>\n <tbody className=\"divide-border divide-y\">\n {orders.map((order) => (\n <tr key={order.id} className=\"hover:bg-muted/50\">\n <td className=\"px-4 py-3 font-mono text-sm\">{order.id}</td>\n <td className=\"px-4 py-3 text-sm\">{order.customerId}</td>\n <td className=\"px-4 py-3 font-mono\">\n {formatCurrency(order.total, order.currency)}\n </td>\n <td className=\"px-4 py-3\">\n <span\n className={`inline-flex rounded-full px-2 py-0.5 text-xs font-medium ${STATUS_COLORS[order.status] ?? ''}`}\n >\n {order.status}\n </span>\n </td>\n <td className=\"text-muted-foreground px-4 py-3 text-sm\">\n {order.createdAt.toLocaleDateString()}\n </td>\n </tr>\n ))}\n {orders.length === 0 && (\n <tr>\n <td\n colSpan={5}\n className=\"text-muted-foreground px-4 py-8 text-center\"\n >\n No orders found\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMarketplaceData.js","names":[],"sources":["../../../src/ui/hooks/useMarketplaceData.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\nimport type {\n MarketplaceHandlers,\n Order,\n Product,\n Store,\n} from '../../handlers/marketplace.handlers';\nimport { useTemplateRuntime } from '@contractspec/lib.example-shared-ui';\n\nexport interface MarketplaceStats {\n totalStores: number;\n activeStores: number;\n totalProducts: number;\n totalOrders: number;\n totalRevenue: number;\n pendingOrders: number;\n}\n\nexport function useMarketplaceData(projectId = 'local-project') {\n const { handlers } = useTemplateRuntime<{\n marketplace: MarketplaceHandlers;\n }>();\n const marketplace = handlers.marketplace;\n const [stores, setStores] = useState<Store[]>([]);\n const [products, setProducts] = useState<Product[]>([]);\n const [orders, setOrders] = useState<Order[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [totalRevenue, setTotalRevenue] = useState(0);\n\n const fetchData = useCallback(async () => {\n try {\n setLoading(true);\n setError(null);\n\n const [storeResult, productResult, orderResult] = await Promise.all([\n marketplace.listStores({ projectId, limit: 100 }),\n marketplace.listProducts({ limit: 100 }),\n marketplace.listOrders({ projectId, limit: 100 }),\n ]);\n\n setStores(storeResult.stores);\n setProducts(productResult.products);\n setOrders(orderResult.orders);\n setTotalRevenue(orderResult.totalRevenue);\n } catch (err) {\n setError(\n err instanceof Error ? err : new Error('Failed to load marketplace')\n );\n } finally {\n setLoading(false);\n }\n }, [marketplace, projectId]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const stats: MarketplaceStats = {\n totalStores: stores.length,\n activeStores: stores.filter((s) => s.status === 'ACTIVE').length,\n totalProducts: products.length,\n totalOrders: orders.length,\n totalRevenue,\n pendingOrders: orders.filter((o) => o.status === 'PENDING').length,\n };\n\n return {\n stores,\n products,\n orders,\n loading,\n error,\n stats,\n refetch: fetchData,\n };\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,mBAAmB,YAAY,iBAAiB;CAC9D,MAAM,EAAE,aAAa,oBAEjB;CACJ,MAAM,cAAc,SAAS;CAC7B,MAAM,CAAC,QAAQ,aAAa,SAAkB,EAAE,CAAC;CACjD,MAAM,CAAC,UAAU,eAAe,SAAoB,EAAE,CAAC;CACvD,MAAM,CAAC,QAAQ,aAAa,SAAkB,EAAE,CAAC;CACjD,MAAM,CAAC,SAAS,cAAc,SAAS,KAAK;CAC5C,MAAM,CAAC,OAAO,YAAY,SAAuB,KAAK;CACtD,MAAM,CAAC,cAAc,mBAAmB,SAAS,EAAE;CAEnD,MAAM,YAAY,YAAY,YAAY;AACxC,MAAI;AACF,cAAW,KAAK;AAChB,YAAS,KAAK;GAEd,MAAM,CAAC,aAAa,eAAe,eAAe,MAAM,QAAQ,IAAI;IAClE,YAAY,WAAW;KAAE;KAAW,OAAO;KAAK,CAAC;IACjD,YAAY,aAAa,EAAE,OAAO,KAAK,CAAC;IACxC,YAAY,WAAW;KAAE;KAAW,OAAO;KAAK,CAAC;IAClD,CAAC;AAEF,aAAU,YAAY,OAAO;AAC7B,eAAY,cAAc,SAAS;AACnC,aAAU,YAAY,OAAO;AAC7B,mBAAgB,YAAY,aAAa;WAClC,KAAK;AACZ,YACE,eAAe,QAAQ,sBAAM,IAAI,MAAM,6BAA6B,CACrE;YACO;AACR,cAAW,MAAM;;IAElB,CAAC,aAAa,UAAU,CAAC;AAE5B,iBAAgB;AACd,aAAW;IACV,CAAC,UAAU,CAAC;AAWf,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,OAf8B;GAC9B,aAAa,OAAO;GACpB,cAAc,OAAO,QAAQ,MAAM,EAAE,WAAW,SAAS,CAAC;GAC1D,eAAe,SAAS;GACxB,aAAa,OAAO;GACpB;GACA,eAAe,OAAO,QAAQ,MAAM,EAAE,WAAW,UAAU,CAAC;GAC7D;EASC,SAAS;EACV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.markdown.js","names":[],"sources":["../../../src/ui/renderers/marketplace.markdown.ts"],"sourcesContent":["/**\n * Markdown renderers for Marketplace presentations\n */\nimport type { PresentationRenderer } from '@contractspec/lib.contracts';\n\n// Mock data for marketplace rendering\nconst mockStores = [\n {\n id: 'store-1',\n name: 'Tech Gadgets Store',\n status: 'ACTIVE',\n productCount: 45,\n rating: 4.8,\n },\n {\n id: 'store-2',\n name: 'Home & Garden',\n status: 'ACTIVE',\n productCount: 120,\n rating: 4.5,\n },\n {\n id: 'store-3',\n name: 'Fashion Boutique',\n status: 'PENDING',\n productCount: 0,\n rating: 0,\n },\n];\n\nconst mockProducts = [\n {\n id: 'prod-1',\n name: 'Wireless Earbuds',\n storeId: 'store-1',\n price: 79.99,\n currency: 'USD',\n status: 'ACTIVE',\n stock: 150,\n },\n {\n id: 'prod-2',\n name: 'Smart Watch',\n storeId: 'store-1',\n price: 249.99,\n currency: 'USD',\n status: 'ACTIVE',\n stock: 50,\n },\n {\n id: 'prod-3',\n name: 'Garden Tools Set',\n storeId: 'store-2',\n price: 89.99,\n currency: 'USD',\n status: 'ACTIVE',\n stock: 30,\n },\n {\n id: 'prod-4',\n name: 'Indoor Plant Kit',\n storeId: 'store-2',\n price: 45.99,\n currency: 'USD',\n status: 'ACTIVE',\n stock: 75,\n },\n {\n id: 'prod-5',\n name: 'LED Desk Lamp',\n storeId: 'store-1',\n price: 34.99,\n currency: 'USD',\n status: 'OUT_OF_STOCK',\n stock: 0,\n },\n];\n\nconst mockOrders = [\n {\n id: 'ord-1',\n storeId: 'store-1',\n customerId: 'cust-1',\n total: 329.98,\n currency: 'USD',\n status: 'DELIVERED',\n itemCount: 2,\n createdAt: '2024-01-15T10:00:00Z',\n },\n {\n id: 'ord-2',\n storeId: 'store-2',\n customerId: 'cust-2',\n total: 135.98,\n currency: 'USD',\n status: 'SHIPPED',\n itemCount: 2,\n createdAt: '2024-01-14T14:00:00Z',\n },\n {\n id: 'ord-3',\n storeId: 'store-1',\n customerId: 'cust-3',\n total: 79.99,\n currency: 'USD',\n status: 'PROCESSING',\n itemCount: 1,\n createdAt: '2024-01-16T08:00:00Z',\n },\n {\n id: 'ord-4',\n storeId: 'store-2',\n customerId: 'cust-4',\n total: 45.99,\n currency: 'USD',\n status: 'PENDING',\n itemCount: 1,\n createdAt: '2024-01-16T12:00:00Z',\n },\n];\n\nfunction formatCurrency(value: number, currency = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 2,\n }).format(value);\n}\n\n/**\n * Markdown renderer for Marketplace Dashboard\n */\nexport const marketplaceDashboardMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'MarketplaceDashboard'\n ) {\n throw new Error(\n 'marketplaceDashboardMarkdownRenderer: not MarketplaceDashboard'\n );\n }\n\n const stores = mockStores;\n const products = mockProducts;\n const orders = mockOrders;\n\n // Calculate stats\n const activeStores = stores.filter((s) => s.status === 'ACTIVE');\n const activeProducts = products.filter((p) => p.status === 'ACTIVE');\n const totalRevenue = orders.reduce((sum, o) => sum + o.total, 0);\n const pendingOrders = orders.filter(\n (o) => o.status === 'PENDING' || o.status === 'PROCESSING'\n );\n\n const lines: string[] = [\n '# Marketplace Dashboard',\n '',\n '> Two-sided marketplace overview',\n '',\n '## Summary',\n '',\n '| Metric | Value |',\n '|--------|-------|',\n `| Active Stores | ${activeStores.length} |`,\n `| Active Products | ${activeProducts.length} |`,\n `| Total Orders | ${orders.length} |`,\n `| Total Revenue | ${formatCurrency(totalRevenue)} |`,\n `| Pending Orders | ${pendingOrders.length} |`,\n '',\n '## Top Stores',\n '',\n '| Store | Products | Rating | Status |',\n '|-------|----------|--------|--------|',\n ];\n\n for (const store of stores.slice(0, 5)) {\n lines.push(\n `| ${store.name} | ${store.productCount} | ⭐ ${store.rating || 'N/A'} | ${store.status} |`\n );\n }\n\n lines.push('');\n lines.push('## Recent Orders');\n lines.push('');\n lines.push('| Order | Items | Total | Status | Date |');\n lines.push('|-------|-------|-------|--------|------|');\n\n for (const order of orders.slice(0, 10)) {\n const date = new Date(order.createdAt).toLocaleDateString();\n lines.push(\n `| ${order.id} | ${order.itemCount} | ${formatCurrency(order.total, order.currency)} | ${order.status} | ${date} |`\n );\n }\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n\n/**\n * Markdown renderer for Product Catalog\n */\nexport const productCatalogMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'ProductCatalog'\n ) {\n throw new Error('productCatalogMarkdownRenderer: not ProductCatalog');\n }\n\n const products = mockProducts;\n const stores = mockStores;\n\n const lines: string[] = [\n '# Product Catalog',\n '',\n '> Browse products across all marketplace stores',\n '',\n ];\n\n // Group by store\n for (const store of stores.filter((s) => s.status === 'ACTIVE')) {\n const storeProducts = products.filter((p) => p.storeId === store.id);\n\n if (storeProducts.length === 0) continue;\n\n lines.push(`## ${store.name}`);\n lines.push('');\n lines.push('| Product | Price | Stock | Status |');\n lines.push('|---------|-------|-------|--------|');\n\n for (const product of storeProducts) {\n const stockStatus =\n product.stock > 0 ? `${product.stock} in stock` : 'Out of stock';\n lines.push(\n `| ${product.name} | ${formatCurrency(product.price, product.currency)} | ${stockStatus} | ${product.status} |`\n );\n }\n\n lines.push('');\n }\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n\n/**\n * Markdown renderer for Order List\n */\nexport const orderListMarkdownRenderer: PresentationRenderer<{\n mimeType: string;\n body: string;\n}> = {\n target: 'markdown',\n render: async (desc) => {\n if (\n desc.source.type !== 'component' ||\n desc.source.componentKey !== 'OrderList'\n ) {\n throw new Error('orderListMarkdownRenderer: not OrderList');\n }\n\n const orders = mockOrders;\n const stores = mockStores;\n\n const lines: string[] = [\n '# Orders',\n '',\n '> Manage marketplace orders',\n '',\n '| Order ID | Store | Items | Total | Status | Created |',\n '|----------|-------|-------|-------|--------|---------|',\n ];\n\n for (const order of orders) {\n const store = stores.find((s) => s.id === order.storeId);\n const date = new Date(order.createdAt).toLocaleDateString();\n lines.push(\n `| ${order.id} | ${store?.name ?? 'Unknown'} | ${order.itemCount} | ${formatCurrency(order.total, order.currency)} | ${order.status} | ${date} |`\n );\n }\n\n lines.push('');\n lines.push('## Order Status Legend');\n lines.push('');\n lines.push('- **PENDING**: Awaiting payment confirmation');\n lines.push('- **PROCESSING**: Being prepared');\n lines.push('- **SHIPPED**: In transit');\n lines.push('- **DELIVERED**: Order completed');\n lines.push('- **CANCELLED**: Order cancelled');\n\n return {\n mimeType: 'text/markdown',\n body: lines.join('\\n'),\n };\n },\n};\n"],"mappings":"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"}
|