@fayz-ai/plugin-orders 0.9.0 → 0.9.2

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/mock.ts","../src/store.ts","../src/registries.ts","../src/locales/en.ts","../src/locales/pt-BR.ts","../src/locales/index.ts","../src/data/platform.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n RestaurantOrder, RestaurantOrderItem,\n CreateOrderInput, CreateOrderItemInput, UpdateOrderStatusInput,\n OrderQuery, PaginatedResult, OrdersSummary,\n OrderKind, OrderStatus,\n} from '../types'\nimport { getNextStatus, STATUS_FLOW } from '../types'\nimport type { OrdersDataProvider } from './types'\n\n// ---------------------------------------------------------------------------\n// ID generator\n// ---------------------------------------------------------------------------\n\nlet uid = 100\nfunction nextId(prefix: string) { return prefix + '-' + (++uid) }\n\n// ---------------------------------------------------------------------------\n// Seed helpers\n// ---------------------------------------------------------------------------\n\nconst now = new Date().toISOString()\n\nfunction makeItem(\n orderId: string,\n name: string,\n quantity: number,\n unitPrice: number,\n sortOrder: number,\n productId?: string,\n): RestaurantOrderItem {\n const id = nextId('item')\n return {\n id,\n orderId,\n productId,\n name,\n quantity,\n unitPrice,\n discount: 0,\n total: quantity * unitPrice,\n sortOrder,\n createdAt: now,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Seed data\n// ---------------------------------------------------------------------------\n\nfunction createSeedOrders(): RestaurantOrder[] {\n const order1Id = nextId('order')\n const order1Items = [\n makeItem(order1Id, 'Classic Burger', 1, 32, 0, 'prod-burger-classic'),\n makeItem(order1Id, 'Fries', 1, 15, 1, 'prod-fries'),\n ]\n const order1: RestaurantOrder = {\n id: order1Id,\n referenceNumber: 'ORD-0001',\n kind: 'dine_in',\n status: 'preparing',\n source: 'pos',\n tableId: 'table-3',\n tableName: 'Table 3',\n subtotal: 47,\n discount: 0,\n tax: 0,\n total: 47,\n currency: 'BRL',\n tags: [],\n items: order1Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order2Id = nextId('order')\n const order2Items = [\n makeItem(order2Id, 'Cheese Burger', 1, 36, 0, 'prod-burger-cheese'),\n ]\n const order2: RestaurantOrder = {\n id: order2Id,\n referenceNumber: 'ORD-0002',\n kind: 'takeout',\n status: 'ready',\n source: 'pos',\n subtotal: 36,\n discount: 0,\n tax: 0,\n total: 36,\n currency: 'BRL',\n tags: [],\n items: order2Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order3Id = nextId('order')\n const order3Items = [\n makeItem(order3Id, 'Margherita Pizza', 1, 38, 0, 'prod-pizza-margherita'),\n makeItem(order3Id, 'Caesar Salad', 1, 22, 1, 'prod-salad-caesar'),\n makeItem(order3Id, 'Soda 350ml', 1, 12, 2, 'prod-soda'),\n ]\n const order3: RestaurantOrder = {\n id: order3Id,\n referenceNumber: 'ORD-0003',\n kind: 'delivery',\n status: 'confirmed',\n source: 'ifood',\n subtotal: 72,\n discount: 0,\n tax: 0,\n total: 72,\n currency: 'BRL',\n tags: [],\n items: order3Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order4Id = nextId('order')\n const order4Items = [\n makeItem(order4Id, 'BBQ Bacon Burger', 1, 42, 0, 'prod-burger-bbq'),\n ]\n const order4: RestaurantOrder = {\n id: order4Id,\n referenceNumber: 'ORD-0004',\n kind: 'dine_in',\n status: 'new',\n source: 'pos',\n tableId: 'table-7',\n tableName: 'Table 7',\n subtotal: 42,\n discount: 0,\n tax: 0,\n total: 42,\n currency: 'BRL',\n tags: [],\n items: order4Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order5Id = nextId('order')\n const order5Items = [\n makeItem(order5Id, 'Classic Burger', 2, 32, 0, 'prod-burger-classic'),\n makeItem(order5Id, 'Fries', 1, 15, 1, 'prod-fries'),\n makeItem(order5Id, 'Onion Rings', 1, 18, 2, 'prod-onion-rings'),\n makeItem(order5Id, 'Milkshake', 1, 23, 3, 'prod-milkshake'),\n ]\n const order5: RestaurantOrder = {\n id: order5Id,\n referenceNumber: 'ORD-0005',\n kind: 'dine_in',\n status: 'completed',\n source: 'pos',\n tableId: 'table-1',\n tableName: 'Table 1',\n subtotal: 120,\n discount: 0,\n tax: 0,\n total: 120,\n currency: 'BRL',\n tags: [],\n items: order5Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n completedAt: now,\n }\n\n return [order1, order2, order3, order4, order5]\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction recomputeTotals(order: RestaurantOrder): void {\n order.subtotal = order.items.reduce((sum, i) => sum + i.total, 0)\n order.total = order.subtotal - order.discount + order.tax\n}\n\nlet refCounter = 5\nfunction generateReferenceNumber(): string {\n refCounter++\n return 'ORD-' + String(refCounter).padStart(4, '0')\n}\n\nfunction toDateStr(d: Date): string {\n return d.toISOString().slice(0, 10)\n}\n\n// ---------------------------------------------------------------------------\n// Provider factory\n// ---------------------------------------------------------------------------\n\nexport function createMockOrdersProvider(): OrdersDataProvider {\n const orders: RestaurantOrder[] = createSeedOrders()\n\n function findOrder(id: string): RestaurantOrder | undefined {\n return orders.find(o => o.id === id)\n }\n\n function findItem(itemId: string): { order: RestaurantOrder; item: RestaurantOrderItem; index: number } | undefined {\n for (const order of orders) {\n const index = order.items.findIndex(i => i.id === itemId)\n if (index !== -1) return { order, item: order.items[index], index }\n }\n return undefined\n }\n\n const provider: OrdersDataProvider = {\n // ------------------------------------------------------------------\n // getOrders\n // ------------------------------------------------------------------\n async getOrders(query: OrderQuery): Promise<PaginatedResult<RestaurantOrder>> {\n let result = [...orders]\n\n // Filter by kind\n if (query.kind) {\n const kinds = Array.isArray(query.kind) ? query.kind : [query.kind]\n result = result.filter(o => kinds.includes(o.kind))\n }\n\n // Filter by status\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status]\n result = result.filter(o => (statuses as string[]).includes(o.status))\n }\n\n // Filter by source\n if (query.source) {\n result = result.filter(o => o.source === query.source)\n }\n\n // Filter by tableId\n if (query.tableId) {\n result = result.filter(o => o.tableId === query.tableId)\n }\n\n // Filter by assigneeId\n if (query.assigneeId) {\n result = result.filter(o => o.assigneeId === query.assigneeId)\n }\n\n // Filter by search (reference number, party name, table name)\n if (query.search) {\n const q = query.search.toLowerCase()\n result = result.filter(o =>\n o.referenceNumber.toLowerCase().includes(q) ||\n o.partyName?.toLowerCase().includes(q) ||\n o.tableName?.toLowerCase().includes(q) ||\n o.items.some(i => i.name.toLowerCase().includes(q))\n )\n }\n\n // Filter by date range\n if (query.dateRange) {\n const from = query.dateRange.from\n const to = query.dateRange.to\n result = result.filter(o => {\n const d = o.createdAt.slice(0, 10)\n return d >= from && d <= to\n })\n }\n\n // Sort by createdAt desc\n result.sort((a, b) => b.createdAt.localeCompare(a.createdAt))\n\n const total = result.length\n const page = query.page ?? 1\n const pageSize = query.pageSize ?? 20\n const start = (page - 1) * pageSize\n const data = result.slice(start, start + pageSize)\n\n return { data, total }\n },\n\n // ------------------------------------------------------------------\n // getOrderById\n // ------------------------------------------------------------------\n async getOrderById(id: string): Promise<RestaurantOrder | null> {\n return findOrder(id) ?? null\n },\n\n // ------------------------------------------------------------------\n // createOrder\n // ------------------------------------------------------------------\n async createOrder(input: CreateOrderInput): Promise<RestaurantOrder> {\n const orderId = nextId('order')\n const items: RestaurantOrderItem[] = input.items.map((item, idx) => ({\n id: nextId('item'),\n orderId,\n productId: item.productId,\n name: item.name,\n quantity: item.quantity,\n unitPrice: item.unitPrice,\n discount: item.discount ?? 0,\n total: item.quantity * item.unitPrice - (item.discount ?? 0),\n sortOrder: idx,\n modifiers: item.modifiers,\n kitchenNotes: item.kitchenNotes,\n createdAt: new Date().toISOString(),\n }))\n\n const subtotal = items.reduce((sum, i) => sum + i.total, 0)\n\n const order: RestaurantOrder = {\n id: orderId,\n referenceNumber: generateReferenceNumber(),\n kind: input.kind,\n status: 'new',\n source: input.source ?? 'pos',\n tableId: input.tableId,\n partyId: input.partyId,\n assigneeId: input.assigneeId,\n notes: input.notes,\n estimatedMinutes: input.estimatedMinutes,\n subtotal,\n discount: 0,\n tax: 0,\n total: subtotal,\n currency: 'BRL',\n tags: [],\n items,\n tenantId: 'tenant-mock',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n\n orders.push(order)\n return order\n },\n\n // ------------------------------------------------------------------\n // updateOrderStatus\n // ------------------------------------------------------------------\n async updateOrderStatus(input: UpdateOrderStatusInput): Promise<RestaurantOrder> {\n const order = findOrder(input.orderId)\n if (!order) throw new Error(`Order not found: ${input.orderId}`)\n\n // Validate the transition: the target status must be reachable via getNextStatus\n // or it must be 'cancelled'\n if (input.status !== 'cancelled') {\n const flow = STATUS_FLOW[order.kind]\n const currentIdx = flow.indexOf(order.status)\n const targetIdx = flow.indexOf(input.status)\n if (targetIdx < 0 || targetIdx !== currentIdx + 1) {\n const next = getNextStatus(order.kind, order.status)\n throw new Error(\n `Invalid status transition: ${order.status} → ${input.status}. ` +\n (next ? `Expected next status: ${next}` : 'Order is already in a terminal state.')\n )\n }\n }\n\n order.status = input.status\n order.updatedAt = new Date().toISOString()\n\n if (input.status === 'completed') {\n order.completedAt = order.updatedAt\n }\n\n return order\n },\n\n // ------------------------------------------------------------------\n // updateOrder\n // ------------------------------------------------------------------\n async updateOrder(id: string, data: Partial<RestaurantOrder>): Promise<RestaurantOrder> {\n const order = findOrder(id)\n if (!order) throw new Error(`Order not found: ${id}`)\n\n const { id: _id, items: _items, tenantId: _t, createdAt: _c, ...safe } = data\n Object.assign(order, safe)\n order.updatedAt = new Date().toISOString()\n return order\n },\n\n // ------------------------------------------------------------------\n // cancelOrder\n // ------------------------------------------------------------------\n async cancelOrder(id: string, reason?: string): Promise<void> {\n const order = findOrder(id)\n if (!order) throw new Error(`Order not found: ${id}`)\n\n order.status = 'cancelled'\n order.updatedAt = new Date().toISOString()\n if (reason) {\n order.notes = order.notes ? `${order.notes}\\nCancelled: ${reason}` : `Cancelled: ${reason}`\n }\n },\n\n // ------------------------------------------------------------------\n // addOrderItem\n // ------------------------------------------------------------------\n async addOrderItem(orderId: string, item: CreateOrderItemInput): Promise<RestaurantOrderItem> {\n const order = findOrder(orderId)\n if (!order) throw new Error(`Order not found: ${orderId}`)\n\n const newItem: RestaurantOrderItem = {\n id: nextId('item'),\n orderId,\n productId: item.productId,\n name: item.name,\n quantity: item.quantity,\n unitPrice: item.unitPrice,\n discount: item.discount ?? 0,\n total: item.quantity * item.unitPrice - (item.discount ?? 0),\n sortOrder: order.items.length,\n modifiers: item.modifiers,\n kitchenNotes: item.kitchenNotes,\n createdAt: new Date().toISOString(),\n }\n\n order.items.push(newItem)\n recomputeTotals(order)\n order.updatedAt = new Date().toISOString()\n return newItem\n },\n\n // ------------------------------------------------------------------\n // removeOrderItem\n // ------------------------------------------------------------------\n async removeOrderItem(itemId: string): Promise<void> {\n const found = findItem(itemId)\n if (!found) throw new Error(`Order item not found: ${itemId}`)\n\n found.order.items.splice(found.index, 1)\n recomputeTotals(found.order)\n found.order.updatedAt = new Date().toISOString()\n },\n\n // ------------------------------------------------------------------\n // updateOrderItem\n // ------------------------------------------------------------------\n async updateOrderItem(itemId: string, data: Partial<RestaurantOrderItem>): Promise<RestaurantOrderItem> {\n const found = findItem(itemId)\n if (!found) throw new Error(`Order item not found: ${itemId}`)\n\n const { id: _id, orderId: _oid, createdAt: _c, ...safe } = data\n Object.assign(found.item, safe)\n\n // Recompute item total if quantity or price changed\n found.item.total = found.item.quantity * found.item.unitPrice - found.item.discount\n\n recomputeTotals(found.order)\n found.order.updatedAt = new Date().toISOString()\n return found.item\n },\n\n // ------------------------------------------------------------------\n // getSummary\n // ------------------------------------------------------------------\n async getSummary(dateRange?: { from: string; to: string }): Promise<OrdersSummary> {\n const today = toDateStr(new Date())\n const from = dateRange?.from ?? today\n const to = dateRange?.to ?? today\n\n const inRange = orders.filter(o => {\n const d = o.createdAt.slice(0, 10)\n return d >= from && d <= to\n })\n\n const completed = inRange.filter(o => o.status !== 'cancelled')\n const revenue = completed.reduce((sum, o) => sum + o.total, 0)\n\n const activeStatuses = new Set(['new', 'confirmed', 'preparing', 'ready', 'served', 'dispatched'])\n const active = orders.filter(o => activeStatuses.has(o.status))\n\n const ordersByKind: Record<OrderKind, number> = { dine_in: 0, takeout: 0, delivery: 0 }\n const ordersByStatus: Record<string, number> = {}\n\n for (const o of inRange) {\n ordersByKind[o.kind] = (ordersByKind[o.kind] || 0) + 1\n ordersByStatus[o.status] = (ordersByStatus[o.status] || 0) + 1\n }\n\n // Top items\n const itemMap = new Map<string, { name: string; quantity: number; revenue: number }>()\n for (const o of completed) {\n for (const item of o.items) {\n const existing = itemMap.get(item.name)\n if (existing) {\n existing.quantity += item.quantity\n existing.revenue += item.total\n } else {\n itemMap.set(item.name, { name: item.name, quantity: item.quantity, revenue: item.total })\n }\n }\n }\n const topItems = Array.from(itemMap.values())\n .sort((a, b) => b.quantity - a.quantity)\n .slice(0, 5)\n\n return {\n todayOrderCount: inRange.length,\n todayRevenue: revenue,\n averageTicket: completed.length > 0 ? revenue / completed.length : 0,\n activeOrderCount: active.length,\n ordersByKind,\n ordersByStatus,\n topItems,\n }\n },\n }\n\n return provider\n}\n","import { createStore, type StoreApi } from 'zustand/vanilla'\nimport { dedup } from '@fayz-ai/saas'\nimport { toast } from 'sonner'\nimport type { OrdersDataProvider } from './data/types'\nimport type {\n RestaurantOrder, OrdersSummary,\n OrderQuery, CreateOrderInput, CreateOrderItemInput,\n UpdateOrderStatusInput,\n} from './types'\nimport { getNextStatus } from './types'\n\n// ---------------------------------------------------------------------------\n// Store state\n// ---------------------------------------------------------------------------\n\nexport interface OrdersUIState {\n // Data cache\n orders: RestaurantOrder[]\n ordersTotal: number\n ordersLoading: boolean\n orderQuery: OrderQuery\n\n activeOrders: RestaurantOrder[]\n activeOrdersLoading: boolean\n\n summary: OrdersSummary | null\n summaryLoading: boolean\n\n selectedOrderId: string | null\n\n // Actions\n fetchOrders(query: OrderQuery): Promise<void>\n fetchActiveOrders(): Promise<void>\n fetchSummary(dateRange?: { from: string; to: string }): Promise<void>\n selectOrder(id: string | null): void\n createOrder(input: CreateOrderInput): Promise<RestaurantOrder>\n advanceOrderStatus(orderId: string): Promise<void>\n updateOrderStatus(input: UpdateOrderStatusInput): Promise<void>\n cancelOrder(id: string, reason?: string): Promise<void>\n addOrderItem(orderId: string, item: CreateOrderItemInput): Promise<void>\n removeOrderItem(itemId: string): Promise<void>\n}\n\n// ---------------------------------------------------------------------------\n// Store factory\n// ---------------------------------------------------------------------------\n\nexport function createOrdersStore(provider: OrdersDataProvider): StoreApi<OrdersUIState> {\n return createStore<OrdersUIState>((set, get) => ({\n orders: [],\n ordersTotal: 0,\n ordersLoading: false,\n orderQuery: {},\n\n activeOrders: [],\n activeOrdersLoading: false,\n\n summary: null,\n summaryLoading: false,\n\n selectedOrderId: null,\n\n async fetchOrders(query) {\n return dedup('orders:list:' + JSON.stringify(query), async () => {\n set({ ordersLoading: true, orderQuery: query })\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total, ordersLoading: false })\n })\n },\n\n async fetchActiveOrders() {\n return dedup('orders:active', async () => {\n set({ activeOrdersLoading: true })\n const result = await provider.getOrders({\n status: ['new', 'confirmed', 'preparing', 'ready'],\n })\n set({ activeOrders: result.data, activeOrdersLoading: false })\n })\n },\n\n async fetchSummary(dateRange) {\n return dedup('orders:summary', async () => {\n set({ summaryLoading: true })\n const summary = await provider.getSummary(dateRange)\n set({ summary, summaryLoading: false })\n })\n },\n\n selectOrder(id) {\n set({ selectedOrderId: id })\n },\n\n async createOrder(input) {\n try {\n const order = await provider.createOrder(input)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order created')\n return order\n } catch (err: any) {\n toast.error('Failed to create order', { description: err?.message })\n throw err\n }\n },\n\n async advanceOrderStatus(orderId) {\n try {\n const { orders, activeOrders } = get()\n const order = orders.find(o => o.id === orderId) ?? activeOrders.find(o => o.id === orderId)\n if (!order) throw new Error('Order not found')\n\n const nextStatus = getNextStatus(order.kind, order.status)\n if (!nextStatus) throw new Error('No next status available')\n\n await provider.updateOrderStatus({ orderId, status: nextStatus })\n\n // Refresh active orders\n const activeResult = await provider.getOrders({\n status: ['new', 'confirmed', 'preparing', 'ready'],\n })\n set({ activeOrders: activeResult.data })\n toast.success(`Order advanced to ${nextStatus.replace('_', ' ')}`)\n } catch (err: any) {\n toast.error('Failed to advance order', { description: err?.message })\n throw err\n }\n },\n\n async updateOrderStatus(input) {\n try {\n await provider.updateOrderStatus(input)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order status updated')\n } catch (err: any) {\n toast.error('Failed to update status', { description: err?.message })\n throw err\n }\n },\n\n async cancelOrder(id, reason) {\n try {\n await provider.cancelOrder(id, reason)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order cancelled')\n } catch (err: any) {\n toast.error('Failed to cancel order', { description: err?.message })\n throw err\n }\n },\n\n async addOrderItem(orderId, item) {\n try {\n await provider.addOrderItem(orderId, item)\n const query = get().orderQuery\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total })\n toast.success('Item added')\n } catch (err: any) {\n toast.error('Failed to add item', { description: err?.message })\n throw err\n }\n },\n\n async removeOrderItem(itemId) {\n try {\n await provider.removeOrderItem(itemId)\n const query = get().orderQuery\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total })\n toast.success('Item removed')\n } catch (err: any) {\n toast.error('Failed to remove item', { description: err?.message })\n throw err\n }\n },\n }))\n}\n","import type { PluginRegistryDef } from '@fayz-ai/core'\nimport type { EntityDef } from '@fayz-ai/core'\n\nconst orderSourceEntity: EntityDef = {\n name: 'Order Source',\n namePlural: 'Order Sources',\n icon: 'Globe',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'icon', label: 'Icon', type: 'text', showInTable: true },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: 'order_sources', tenantScoped: true },\n}\n\nexport const ordersRegistries: PluginRegistryDef[] = [\n {\n id: 'order-sources',\n entity: orderSourceEntity,\n icon: 'Globe',\n description: 'Order sources and delivery platforms',\n display: 'table',\n seedData: [\n { id: 'os-dine', name: 'Dine-in', icon: '🍽️', isActive: true },\n { id: 'os-takeout', name: 'Takeout', icon: '🥡', isActive: true },\n { id: 'os-ifood', name: 'iFood', icon: '🔴', isActive: true },\n { id: 'os-99food', name: '99Food', icon: '🟡', isActive: true },\n ],\n },\n]\n","export const en: Record<string, string> = {\n 'orders.title': 'Orders',\n 'orders.nav.kanban': 'Orders',\n 'orders.nav.list': 'History',\n 'orders.nav.new': 'New Order',\n 'orders.nav.dashboard': 'Dashboard',\n 'orders.kanban.title': 'Orders',\n 'orders.kanban.subtitle': 'Active orders',\n 'orders.kanban.noOrders': 'No active orders',\n 'orders.kanban.noOrdersDesc': 'Orders will appear here as they come in',\n 'orders.kanban.newOrder': 'New Order',\n 'orders.kanban.advance': 'Advance',\n 'orders.kanban.cancel': 'Cancel Order',\n 'orders.kanban.column.new': 'New',\n 'orders.kanban.column.confirmed': 'Confirmed',\n 'orders.kanban.column.preparing': 'Preparing',\n 'orders.kanban.column.ready': 'Ready',\n 'orders.kanban.column.out': 'Out',\n 'orders.kanban.column.completed': 'Completed',\n 'orders.kanban.column.cancelled': 'Cancelled',\n 'orders.detail.title': 'Order Details',\n 'orders.detail.items': 'Items',\n 'orders.detail.table': 'Table',\n 'orders.detail.customer': 'Customer',\n 'orders.detail.waiter': 'Waiter',\n 'orders.detail.source': 'Source',\n 'orders.detail.subtotal': 'Subtotal',\n 'orders.detail.discount': 'Discount',\n 'orders.detail.tax': 'Tax',\n 'orders.detail.total': 'Total',\n 'orders.detail.notes': 'Notes',\n 'orders.newOrder.title': 'New Order',\n 'orders.newOrder.selectKind': 'Order type',\n 'orders.newOrder.dineIn': 'Dine-in',\n 'orders.newOrder.takeout': 'Takeout',\n 'orders.newOrder.delivery': 'Delivery',\n 'orders.newOrder.selectTable': 'Select table',\n 'orders.newOrder.addItems': 'Add items',\n 'orders.newOrder.searchItems': 'Search menu...',\n 'orders.newOrder.noItems': 'No items added yet',\n 'orders.newOrder.confirm': 'Place Order',\n 'orders.newOrder.cancel': 'Cancel',\n 'orders.list.title': 'Order History',\n 'orders.list.subtitle': 'All orders',\n 'orders.list.search': 'Search orders...',\n 'orders.list.noOrders': 'No orders found',\n 'orders.source.dine_in': 'Dine-in',\n 'orders.source.takeout': 'Takeout',\n 'orders.source.ifood': 'iFood',\n 'orders.source.99food': '99Food',\n 'orders.source.delivery': 'Delivery',\n 'orders.settings.title': 'Orders Settings',\n}\n","export const ptBR: Record<string, string> = {\n 'orders.title': 'Pedidos',\n 'orders.nav.kanban': 'Pedidos',\n 'orders.nav.list': 'Histórico',\n 'orders.nav.new': 'Novo Pedido',\n 'orders.nav.dashboard': 'Painel',\n 'orders.kanban.title': 'Pedidos',\n 'orders.kanban.subtitle': 'Pedidos ativos',\n 'orders.kanban.noOrders': 'Nenhum pedido ativo',\n 'orders.kanban.noOrdersDesc': 'Os pedidos aparecerão aqui conforme chegarem',\n 'orders.kanban.newOrder': 'Novo Pedido',\n 'orders.kanban.advance': 'Avançar',\n 'orders.kanban.cancel': 'Cancelar Pedido',\n 'orders.kanban.column.new': 'Novo',\n 'orders.kanban.column.confirmed': 'Confirmado',\n 'orders.kanban.column.preparing': 'Preparando',\n 'orders.kanban.column.ready': 'Pronto',\n 'orders.kanban.column.out': 'Saiu',\n 'orders.kanban.column.completed': 'Concluído',\n 'orders.kanban.column.cancelled': 'Cancelado',\n 'orders.detail.title': 'Detalhes do Pedido',\n 'orders.detail.items': 'Itens',\n 'orders.detail.table': 'Mesa',\n 'orders.detail.customer': 'Cliente',\n 'orders.detail.waiter': 'Garçom',\n 'orders.detail.source': 'Origem',\n 'orders.detail.subtotal': 'Subtotal',\n 'orders.detail.discount': 'Desconto',\n 'orders.detail.tax': 'Imposto',\n 'orders.detail.total': 'Total',\n 'orders.detail.notes': 'Observações',\n 'orders.newOrder.title': 'Novo Pedido',\n 'orders.newOrder.selectKind': 'Tipo de pedido',\n 'orders.newOrder.dineIn': 'Mesa',\n 'orders.newOrder.takeout': 'Para Viagem',\n 'orders.newOrder.delivery': 'Delivery',\n 'orders.newOrder.selectTable': 'Selecionar mesa',\n 'orders.newOrder.addItems': 'Adicionar itens',\n 'orders.newOrder.searchItems': 'Buscar no cardápio...',\n 'orders.newOrder.noItems': 'Nenhum item adicionado',\n 'orders.newOrder.confirm': 'Fazer Pedido',\n 'orders.newOrder.cancel': 'Cancelar',\n 'orders.list.title': 'Histórico de Pedidos',\n 'orders.list.subtitle': 'Todos os pedidos',\n 'orders.list.search': 'Buscar pedidos...',\n 'orders.list.noOrders': 'Nenhum pedido encontrado',\n 'orders.source.dine_in': 'Mesa',\n 'orders.source.takeout': 'Para Viagem',\n 'orders.source.ifood': 'iFood',\n 'orders.source.99food': '99Food',\n 'orders.source.delivery': 'Delivery',\n 'orders.settings.title': 'Configurações de Pedidos',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const ordersLocales: Record<string, Record<string, string>> = { en, 'pt-BR': ptBR }\n","import { createFayzClient, type FayzClientOptions, type FayzTableFilter } from '@fayz-ai/sdk'\nimport type {\n CreateOrderInput,\n CreateOrderItemInput,\n OrderKind,\n OrderQuery,\n OrdersSummary,\n OrderStatus,\n PaginatedResult,\n RestaurantOrder,\n RestaurantOrderItem,\n UpdateOrderStatusInput,\n} from '../types'\nimport type { OrdersDataProvider } from './types'\n\nexport interface FayzOrdersProviderOptions extends FayzClientOptions {\n projectId?: string\n schema?: string\n runtime?: boolean\n ordersTable?: string\n orderItemsTable?: string\n /**\n * Active tenant id (or a getter) used to scope reads and stamp writes on the\n * orders table. When omitted, scoping is left to the runtime/RLS context.\n * Only the orders table carries `tenant_id`; order_items scope via their\n * parent order, so this never touches the order-items table.\n */\n tenantId?: string | (() => string | undefined | null)\n}\n\ninterface OrderRow {\n id: string\n tenant_id?: string | null\n reference_number?: string | null\n kind?: OrderKind | null\n status?: OrderStatus | null\n party_id?: string | null\n party_name?: string | null\n assignee_id?: string | null\n assignee_name?: string | null\n location_id?: string | null\n subtotal?: number | string | null\n discount?: number | string | null\n tax?: number | string | null\n total?: number | string | null\n currency?: string | null\n notes?: string | null\n tags?: string[] | null\n source?: string | null\n table_id?: string | null\n table_name?: string | null\n estimated_minutes?: number | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n updated_at?: string | null\n completed_at?: string | null\n}\n\ninterface OrderItemRow {\n id: string\n order_id?: string | null\n product_id?: string | null\n name?: string | null\n description?: string | null\n quantity?: number | string | null\n unit_price?: number | string | null\n discount?: number | string | null\n total?: number | string | null\n sort_order?: number | null\n modifiers?: string | null\n kitchen_notes?: string | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n}\n\nconst DEFAULT_ORDERS_TABLE = 'orders'\nconst DEFAULT_ORDER_ITEMS_TABLE = 'order_items'\nconst ACTIVE_STATUSES = new Set<OrderStatus>(['new', 'confirmed', 'preparing', 'ready', 'served', 'dispatched'])\n\nfunction nowIso(): string {\n return new Date().toISOString()\n}\n\nfunction numberValue(value: number | string | null | undefined): number {\n if (typeof value === 'number') return value\n if (typeof value === 'string') return Number(value) || 0\n return 0\n}\n\nfunction dateKey(value: string): string {\n return value.slice(0, 10)\n}\n\nfunction referenceNumber(): string {\n return `ORD-${Date.now().toString().slice(-6)}`\n}\n\nfunction itemToRow(item: CreateOrderItemInput, orderId: string, sortOrder: number): Record<string, unknown> {\n const discount = item.discount ?? 0\n return {\n order_id: orderId,\n product_id: item.productId ?? null,\n name: item.name,\n quantity: item.quantity,\n unit_price: item.unitPrice,\n discount,\n total: item.quantity * item.unitPrice - discount,\n sort_order: sortOrder,\n modifiers: item.modifiers ?? null,\n kitchen_notes: item.kitchenNotes ?? null,\n }\n}\n\nfunction rowToItem(row: OrderItemRow): RestaurantOrderItem {\n const quantity = numberValue(row.quantity)\n const unitPrice = numberValue(row.unit_price)\n const discount = numberValue(row.discount)\n return {\n id: row.id,\n orderId: row.order_id ?? '',\n productId: row.product_id ?? undefined,\n name: row.name ?? 'Item',\n description: row.description ?? undefined,\n quantity,\n unitPrice,\n discount,\n total: numberValue(row.total) || quantity * unitPrice - discount,\n sortOrder: row.sort_order ?? 0,\n modifiers: row.modifiers ?? undefined,\n kitchenNotes: row.kitchen_notes ?? undefined,\n metadata: row.metadata ?? {},\n createdAt: row.created_at ?? nowIso(),\n }\n}\n\nfunction rowToOrder(row: OrderRow, items: RestaurantOrderItem[] = []): RestaurantOrder {\n const subtotal = numberValue(row.subtotal) || items.reduce((sum, item) => sum + item.total, 0)\n const discount = numberValue(row.discount)\n const tax = numberValue(row.tax)\n return {\n id: row.id,\n referenceNumber: row.reference_number ?? row.id,\n kind: row.kind ?? 'dine_in',\n status: row.status ?? 'new',\n partyId: row.party_id ?? undefined,\n partyName: row.party_name ?? undefined,\n assigneeId: row.assignee_id ?? undefined,\n assigneeName: row.assignee_name ?? undefined,\n locationId: row.location_id ?? undefined,\n subtotal,\n discount,\n tax,\n total: numberValue(row.total) || subtotal - discount + tax,\n currency: row.currency ?? 'BRL',\n notes: row.notes ?? undefined,\n tags: row.tags ?? [],\n source: row.source ?? 'pos',\n tableId: row.table_id ?? undefined,\n tableName: row.table_name ?? undefined,\n estimatedMinutes: row.estimated_minutes ?? undefined,\n items,\n metadata: row.metadata ?? {},\n tenantId: row.tenant_id ?? 'runtime-tenant',\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n completedAt: row.completed_at ?? undefined,\n }\n}\n\nfunction orderPayload(input: CreateOrderInput): Record<string, unknown> {\n const subtotal = input.items.reduce((sum, item) => sum + item.quantity * item.unitPrice - (item.discount ?? 0), 0)\n return {\n reference_number: referenceNumber(),\n kind: input.kind,\n status: 'new',\n source: input.source ?? 'pos',\n table_id: input.tableId ?? null,\n party_id: input.partyId ?? null,\n assignee_id: input.assigneeId ?? null,\n notes: input.notes ?? null,\n estimated_minutes: input.estimatedMinutes ?? null,\n subtotal,\n discount: 0,\n tax: 0,\n total: subtotal,\n currency: 'BRL',\n tags: [],\n }\n}\n\nfunction updatePayload(data: Partial<RestaurantOrder>): Record<string, unknown> {\n const payload: Record<string, unknown> = {}\n if (data.referenceNumber !== undefined) payload.reference_number = data.referenceNumber\n if (data.kind !== undefined) payload.kind = data.kind\n if (data.status !== undefined) payload.status = data.status\n if (data.partyId !== undefined) payload.party_id = data.partyId\n if (data.partyName !== undefined) payload.party_name = data.partyName\n if (data.assigneeId !== undefined) payload.assignee_id = data.assigneeId\n if (data.assigneeName !== undefined) payload.assignee_name = data.assigneeName\n if (data.locationId !== undefined) payload.location_id = data.locationId\n if (data.subtotal !== undefined) payload.subtotal = data.subtotal\n if (data.discount !== undefined) payload.discount = data.discount\n if (data.tax !== undefined) payload.tax = data.tax\n if (data.total !== undefined) payload.total = data.total\n if (data.currency !== undefined) payload.currency = data.currency\n if (data.notes !== undefined) payload.notes = data.notes\n if (data.tags !== undefined) payload.tags = data.tags\n if (data.source !== undefined) payload.source = data.source\n if (data.tableId !== undefined) payload.table_id = data.tableId\n if (data.tableName !== undefined) payload.table_name = data.tableName\n if (data.estimatedMinutes !== undefined) payload.estimated_minutes = data.estimatedMinutes\n if (data.metadata !== undefined) payload.metadata = data.metadata\n if (data.completedAt !== undefined) payload.completed_at = data.completedAt\n return payload\n}\n\nfunction filtersFromQuery(query: OrderQuery): FayzTableFilter[] {\n const filters: FayzTableFilter[] = []\n if (query.kind && !Array.isArray(query.kind)) filters.push({ column: 'kind', operator: 'eq', value: query.kind })\n if (query.status && !Array.isArray(query.status)) filters.push({ column: 'status', operator: 'eq', value: query.status })\n if (query.source) filters.push({ column: 'source', operator: 'eq', value: query.source })\n if (query.tableId) filters.push({ column: 'table_id', operator: 'eq', value: query.tableId })\n if (query.assigneeId) filters.push({ column: 'assignee_id', operator: 'eq', value: query.assigneeId })\n return filters\n}\n\nfunction matchesClientQuery(order: RestaurantOrder, query: OrderQuery): boolean {\n if (Array.isArray(query.kind) && !query.kind.includes(order.kind)) return false\n if (Array.isArray(query.status) && !query.status.includes(order.status)) return false\n if (query.dateRange) {\n const created = dateKey(order.createdAt)\n if (created < query.dateRange.from || created > query.dateRange.to) return false\n }\n if (query.search) {\n const search = query.search.toLowerCase()\n return order.referenceNumber.toLowerCase().includes(search)\n || (order.partyName?.toLowerCase().includes(search) ?? false)\n || (order.tableName?.toLowerCase().includes(search) ?? false)\n || order.items.some((item) => item.name.toLowerCase().includes(search))\n }\n return true\n}\n\nfunction paginate<T>(items: T[], page?: number, pageSize?: number): PaginatedResult<T> {\n const currentPage = page ?? 1\n const limit = pageSize ?? 20\n const start = (currentPage - 1) * limit\n return { data: items.slice(start, start + limit), total: items.length }\n}\n\nfunction summarize(orders: RestaurantOrder[], dateRange?: { from: string; to: string }): OrdersSummary {\n const today = dateKey(nowIso())\n const from = dateRange?.from ?? today\n const to = dateRange?.to ?? today\n const inRange = orders.filter((order) => {\n const created = dateKey(order.createdAt)\n return created >= from && created <= to\n })\n const billable = inRange.filter((order) => order.status !== 'cancelled')\n const revenue = billable.reduce((sum, order) => sum + order.total, 0)\n const ordersByKind: Record<OrderKind, number> = { dine_in: 0, takeout: 0, delivery: 0 }\n const ordersByStatus: Record<string, number> = {}\n const top = new Map<string, { name: string; quantity: number; revenue: number }>()\n\n for (const order of inRange) {\n ordersByKind[order.kind] = (ordersByKind[order.kind] ?? 0) + 1\n ordersByStatus[order.status] = (ordersByStatus[order.status] ?? 0) + 1\n if (order.status === 'cancelled') continue\n for (const item of order.items) {\n const current = top.get(item.name) ?? { name: item.name, quantity: 0, revenue: 0 }\n current.quantity += item.quantity\n current.revenue += item.total\n top.set(item.name, current)\n }\n }\n\n return {\n todayOrderCount: inRange.length,\n todayRevenue: revenue,\n averageTicket: billable.length > 0 ? revenue / billable.length : 0,\n activeOrderCount: orders.filter((order) => ACTIVE_STATUSES.has(order.status)).length,\n ordersByKind,\n ordersByStatus,\n topItems: [...top.values()].sort((a, b) => b.quantity - a.quantity).slice(0, 5),\n }\n}\n\nexport function createFayzOrdersProvider(options: FayzOrdersProviderOptions = {}): OrdersDataProvider {\n const client = createFayzClient(options)\n const ordersTable = options.ordersTable ?? DEFAULT_ORDERS_TABLE\n const orderItemsTable = options.orderItemsTable ?? DEFAULT_ORDER_ITEMS_TABLE\n const tableOptions = { projectId: options.projectId, schema: options.schema, runtime: options.runtime }\n\n function resolveTenant(): string | undefined {\n const value = typeof options.tenantId === 'function' ? options.tenantId() : options.tenantId\n return value ?? undefined\n }\n\n function withTenant(filters: FayzTableFilter[]): FayzTableFilter[] {\n const tenantId = resolveTenant()\n return tenantId ? [{ column: 'tenant_id', operator: 'eq', value: tenantId }, ...filters] : filters\n }\n\n async function listItemRows(orderIds: string[]): Promise<OrderItemRow[]> {\n if (orderIds.length === 0) return []\n const rows: OrderItemRow[] = []\n await Promise.all(orderIds.map(async (orderId) => {\n const response = await client.data.listRows<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n filters: [{ column: 'order_id', operator: 'eq', value: orderId }],\n sortColumn: 'sort_order',\n sortDirection: 'asc',\n limit: 200,\n })\n rows.push(...response.rows)\n }))\n return rows\n }\n\n async function hydrate(rows: OrderRow[]): Promise<RestaurantOrder[]> {\n const itemRows = await listItemRows(rows.map((row) => row.id))\n const byOrder = new Map<string, RestaurantOrderItem[]>()\n for (const itemRow of itemRows) {\n const item = rowToItem(itemRow)\n const list = byOrder.get(item.orderId) ?? []\n list.push(item)\n byOrder.set(item.orderId, list)\n }\n return rows.map((row) => rowToOrder(row, byOrder.get(row.id) ?? []))\n }\n\n async function listOrders(query: OrderQuery = {}): Promise<RestaurantOrder[]> {\n const response = await client.data.listRows<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n filters: withTenant(filtersFromQuery(query)),\n sortColumn: 'created_at',\n sortDirection: 'desc',\n limit: 500,\n })\n return (await hydrate(response.rows)).filter((order) => matchesClientQuery(order, query))\n }\n\n async function getById(id: string): Promise<RestaurantOrder | null> {\n const response = await client.data.listRows<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n filters: withTenant([{ column: 'id', operator: 'eq', value: id }]),\n limit: 1,\n })\n return (await hydrate(response.rows))[0] ?? null\n }\n\n return {\n async getOrders(query) {\n const orders = await listOrders(query)\n return paginate(orders, query.page, query.pageSize)\n },\n\n async getOrderById(id) {\n return getById(id)\n },\n\n async createOrder(input) {\n const tenantId = resolveTenant()\n const orderRow = await client.data.createRow<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n row: tenantId ? { ...orderPayload(input), tenant_id: tenantId } : orderPayload(input),\n })\n await Promise.all(input.items.map((item, index) => client.data.createRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n row: itemToRow(item, orderRow.id, index),\n })))\n return (await getById(orderRow.id)) ?? rowToOrder(orderRow)\n },\n\n async updateOrderStatus(input: UpdateOrderStatusInput) {\n const completedAt = input.status === 'completed' ? nowIso() : undefined\n return this.updateOrder(input.orderId, { status: input.status, completedAt })\n },\n\n async updateOrder(id, data) {\n const row = await client.data.updateRow<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n primaryKeys: { id },\n row: updatePayload(data),\n })\n return (await getById(row.id)) ?? rowToOrder(row)\n },\n\n async cancelOrder(id, reason) {\n const order = await getById(id)\n await this.updateOrder(id, {\n status: 'cancelled',\n notes: reason ? `${order?.notes ? `${order.notes}\\n` : ''}Cancelled: ${reason}` : order?.notes,\n })\n },\n\n async addOrderItem(orderId, item) {\n const order = await getById(orderId)\n const row = await client.data.createRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n row: itemToRow(item, orderId, order?.items.length ?? 0),\n })\n const created = rowToItem(row)\n const items = [...(order?.items ?? []), created]\n await this.updateOrder(orderId, {\n subtotal: items.reduce((sum, orderItem) => sum + orderItem.total, 0),\n total: items.reduce((sum, orderItem) => sum + orderItem.total, 0) - (order?.discount ?? 0) + (order?.tax ?? 0),\n })\n return created\n },\n\n async removeOrderItem(itemId) {\n const orders = await listOrders()\n const order = orders.find((item) => item.items.some((orderItem) => orderItem.id === itemId))\n await client.data.deleteRows({ ...tableOptions, table: orderItemsTable, rows: [{ id: itemId }] })\n if (order) {\n const items = order.items.filter((item) => item.id !== itemId)\n const subtotal = items.reduce((sum, item) => sum + item.total, 0)\n await this.updateOrder(order.id, { subtotal, total: subtotal - order.discount + order.tax })\n }\n },\n\n async updateOrderItem(itemId, data) {\n const row = await client.data.updateRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n primaryKeys: { id: itemId },\n row: {\n product_id: data.productId,\n name: data.name,\n description: data.description,\n quantity: data.quantity,\n unit_price: data.unitPrice,\n discount: data.discount,\n total: data.total,\n sort_order: data.sortOrder,\n modifiers: data.modifiers,\n kitchen_notes: data.kitchenNotes,\n metadata: data.metadata,\n },\n })\n return rowToItem(row)\n },\n\n async getSummary(dateRange) {\n return summarize(await listOrders({ dateRange }), dateRange)\n },\n }\n}\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport type { EntityLookup } from '@fayz-ai/saas'\nimport type { OrdersDataProvider } from './data/types'\nimport type { RestaurantOrder } from './types'\nimport { createMockOrdersProvider } from './data/mock'\nimport { createOrdersStore } from './store'\nimport { ordersRegistries } from './registries'\nimport { ordersLocales } from './locales'\nimport { PluginSettingsPanel } from '@fayz-ai/saas'\n\nconst OrdersPage = React.lazy(() => import('./OrdersPage').then((m) => ({ default: m.OrdersPage })))\n\n// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface OrdersPluginLabels {\n pageTitle: string\n kanban: string\n newOrder: string\n orderList: string\n}\n\nconst DEFAULT_LABELS: OrdersPluginLabels = {\n pageTitle: 'Orders',\n kanban: 'Orders',\n newOrder: 'New Order',\n orderList: 'History',\n}\n\n// ---------------------------------------------------------------------------\n// Currency + sources\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_CURRENCY = { code: 'BRL', locale: 'pt-BR', symbol: 'R$' }\n\nexport interface OrderSourceOption {\n value: string\n label: string\n icon?: string\n}\n\nconst DEFAULT_ORDER_SOURCES: OrderSourceOption[] = [\n { value: 'dine_in', label: 'Dine-in', icon: '🍽️' },\n { value: 'takeout', label: 'Takeout', icon: '🥡' },\n]\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface OrdersPluginOptions {\n modules?: {\n delivery?: boolean\n takeout?: boolean\n }\n labels?: Partial<OrdersPluginLabels>\n currency?: { code?: string; locale?: string; symbol?: string }\n navPosition?: number\n navSection?: 'main' | 'secondary'\n scope?: PluginScope\n verticalId?: VerticalId\n dataProvider?: OrdersDataProvider\n menuItemLookup?: EntityLookup\n staffLookup?: EntityLookup\n onOrderCompleted?: (order: RestaurantOrder) => Promise<void>\n orderSources?: OrderSourceOption[]\n}\n\n// ---------------------------------------------------------------------------\n// Config resolver\n// ---------------------------------------------------------------------------\n\nfunction resolveConfig(options?: OrdersPluginOptions) {\n return {\n modules: {\n delivery: options?.modules?.delivery !== false,\n takeout: options?.modules?.takeout !== false,\n },\n labels: { ...DEFAULT_LABELS, ...options?.labels } as any,\n currency: { ...DEFAULT_CURRENCY, ...options?.currency },\n orderSources: options?.orderSources ?? DEFAULT_ORDER_SOURCES,\n menuItemLookup: options?.menuItemLookup,\n staffLookup: options?.staffLookup,\n onOrderCompleted: options?.onOrderCompleted,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createOrdersPlugin(options?: OrdersPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n const provider = options?.dataProvider ?? createMockOrdersProvider()\n const store = createOrdersStore(provider)\n\n const PageComponent: React.FC<any> = () =>\n React.createElement(React.Suspense, { fallback: null },\n React.createElement(OrdersPage, { config, provider, store, registries: ordersRegistries })\n )\n\n return {\n id: 'orders',\n name: config.labels.pageTitle,\n icon: 'ClipboardList',\n version: '1.0.0',\n scope: options?.scope ?? 'vertical',\n verticalId: options?.verticalId,\n defaultEnabled: true,\n dependencies: ['menu'],\n // Orders/month quota. NOTE: order creation currently flows only through the\n // store/AI-tool (createOrder) with no dedicated UI create handler, so no\n // client-side guard is wired yet — the declaration keeps the cap countable.\n declaredLimits: [\n { key: 'orders_month', label: 'Orders / month', table: 'orders', kindFilter: 'order', period: 'month' },\n ],\n navigation: [\n {\n section: options?.navSection ?? 'main',\n position: options?.navPosition ?? 2,\n label: config.labels.pageTitle,\n route: '/orders',\n icon: 'ClipboardList',\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n routes: [\n {\n path: '/orders',\n component: PageComponent,\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n widgets: [],\n aiTools: [\n {\n id: 'orders.today-summary',\n name: 'getOrdersSummary',\n description: 'Returns order count, revenue, and average ticket for today or a given period.',\n icon: 'ClipboardList',\n mode: 'read' as const,\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n period: { type: 'string' as const, description: 'today, week, month' },\n },\n },\n suggestions: [\n { label: 'How many orders today?' },\n { label: \"What's the average ticket today?\" },\n { label: \"What's the most ordered item?\" },\n ],\n },\n {\n id: 'orders.active-orders',\n name: 'getActiveOrders',\n description: 'Lists currently active (non-completed) orders.',\n icon: 'Clock',\n mode: 'read' as const,\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n kind: { type: 'string' as const, enum: ['dine_in', 'takeout', 'delivery'] },\n status: { type: 'string' as const, description: 'Filter by status' },\n },\n },\n suggestions: [\n { label: 'What orders are being prepared right now?' },\n { label: 'Any delivery orders waiting?' },\n ],\n },\n {\n id: 'orders.create-order',\n name: 'createOrder',\n description: 'Creates a new restaurant order with items.',\n icon: 'PlusCircle',\n mode: 'persist' as const,\n limitKey: 'orders_month',\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n kind: { type: 'string' as const, enum: ['dine_in', 'takeout', 'delivery'] },\n tableNumber: { type: 'number' as const, description: 'Table number (for dine-in)' },\n items: { type: 'array' as const, description: 'Item names and quantities' },\n },\n required: ['kind', 'items'],\n },\n permission: { feature: 'orders', action: 'create' as const },\n },\n ],\n registries: ordersRegistries,\n settings: [\n {\n id: 'orders',\n label: config.labels.pageTitle,\n icon: 'ClipboardList',\n component: (() => {\n const OrdersSettingsTab: React.ComponentType<unknown> = () =>\n React.createElement(PluginSettingsPanel, {\n title: 'Orders Settings',\n subtitle: 'Order sources and preferences',\n registries: ordersRegistries,\n routeBase: '/settings/orders',\n })\n OrdersSettingsTab.displayName = 'OrdersSettingsTab'\n return OrdersSettingsTab\n })(),\n order: 22,\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n locales: ordersLocales,\n }\n}\n\nexport type { OrdersDataProvider } from './data/types'\nexport { createFayzOrdersProvider } from './data/platform'\nexport type { FayzOrdersProviderOptions } from './data/platform'\nexport type { ResolvedOrdersConfig } from './OrdersContext'\n"]}
1
+ {"version":3,"sources":["../src/data/mock.ts","../src/store.ts","../src/data/registries.ts","../src/locales/en.ts","../src/locales/pt-BR.ts","../src/locales/index.ts","../src/data/platform.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n RestaurantOrder, RestaurantOrderItem,\n CreateOrderInput, CreateOrderItemInput, UpdateOrderStatusInput,\n OrderQuery, PaginatedResult, OrdersSummary,\n OrderKind, OrderStatus,\n} from '../types'\nimport { getNextStatus, STATUS_FLOW } from '../types'\nimport type { OrdersDataProvider } from './types'\n\n// ---------------------------------------------------------------------------\n// ID generator\n// ---------------------------------------------------------------------------\n\nlet uid = 100\nfunction nextId(prefix: string) { return prefix + '-' + (++uid) }\n\n// ---------------------------------------------------------------------------\n// Seed helpers\n// ---------------------------------------------------------------------------\n\nconst now = new Date().toISOString()\n\nfunction makeItem(\n orderId: string,\n name: string,\n quantity: number,\n unitPrice: number,\n sortOrder: number,\n productId?: string,\n): RestaurantOrderItem {\n const id = nextId('item')\n return {\n id,\n orderId,\n productId,\n name,\n quantity,\n unitPrice,\n discount: 0,\n total: quantity * unitPrice,\n sortOrder,\n createdAt: now,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Seed data\n// ---------------------------------------------------------------------------\n\nfunction createSeedOrders(): RestaurantOrder[] {\n const order1Id = nextId('order')\n const order1Items = [\n makeItem(order1Id, 'Classic Burger', 1, 32, 0, 'prod-burger-classic'),\n makeItem(order1Id, 'Fries', 1, 15, 1, 'prod-fries'),\n ]\n const order1: RestaurantOrder = {\n id: order1Id,\n referenceNumber: 'ORD-0001',\n kind: 'dine_in',\n status: 'preparing',\n source: 'pos',\n tableId: 'table-3',\n tableName: 'Table 3',\n subtotal: 47,\n discount: 0,\n tax: 0,\n total: 47,\n currency: 'BRL',\n tags: [],\n items: order1Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order2Id = nextId('order')\n const order2Items = [\n makeItem(order2Id, 'Cheese Burger', 1, 36, 0, 'prod-burger-cheese'),\n ]\n const order2: RestaurantOrder = {\n id: order2Id,\n referenceNumber: 'ORD-0002',\n kind: 'takeout',\n status: 'ready',\n source: 'pos',\n subtotal: 36,\n discount: 0,\n tax: 0,\n total: 36,\n currency: 'BRL',\n tags: [],\n items: order2Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order3Id = nextId('order')\n const order3Items = [\n makeItem(order3Id, 'Margherita Pizza', 1, 38, 0, 'prod-pizza-margherita'),\n makeItem(order3Id, 'Caesar Salad', 1, 22, 1, 'prod-salad-caesar'),\n makeItem(order3Id, 'Soda 350ml', 1, 12, 2, 'prod-soda'),\n ]\n const order3: RestaurantOrder = {\n id: order3Id,\n referenceNumber: 'ORD-0003',\n kind: 'delivery',\n status: 'confirmed',\n source: 'ifood',\n subtotal: 72,\n discount: 0,\n tax: 0,\n total: 72,\n currency: 'BRL',\n tags: [],\n items: order3Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order4Id = nextId('order')\n const order4Items = [\n makeItem(order4Id, 'BBQ Bacon Burger', 1, 42, 0, 'prod-burger-bbq'),\n ]\n const order4: RestaurantOrder = {\n id: order4Id,\n referenceNumber: 'ORD-0004',\n kind: 'dine_in',\n status: 'new',\n source: 'pos',\n tableId: 'table-7',\n tableName: 'Table 7',\n subtotal: 42,\n discount: 0,\n tax: 0,\n total: 42,\n currency: 'BRL',\n tags: [],\n items: order4Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n }\n\n const order5Id = nextId('order')\n const order5Items = [\n makeItem(order5Id, 'Classic Burger', 2, 32, 0, 'prod-burger-classic'),\n makeItem(order5Id, 'Fries', 1, 15, 1, 'prod-fries'),\n makeItem(order5Id, 'Onion Rings', 1, 18, 2, 'prod-onion-rings'),\n makeItem(order5Id, 'Milkshake', 1, 23, 3, 'prod-milkshake'),\n ]\n const order5: RestaurantOrder = {\n id: order5Id,\n referenceNumber: 'ORD-0005',\n kind: 'dine_in',\n status: 'completed',\n source: 'pos',\n tableId: 'table-1',\n tableName: 'Table 1',\n subtotal: 120,\n discount: 0,\n tax: 0,\n total: 120,\n currency: 'BRL',\n tags: [],\n items: order5Items,\n tenantId: 'tenant-mock',\n createdAt: now,\n updatedAt: now,\n completedAt: now,\n }\n\n return [order1, order2, order3, order4, order5]\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction recomputeTotals(order: RestaurantOrder): void {\n order.subtotal = order.items.reduce((sum, i) => sum + i.total, 0)\n order.total = order.subtotal - order.discount + order.tax\n}\n\nlet refCounter = 5\nfunction generateReferenceNumber(): string {\n refCounter++\n return 'ORD-' + String(refCounter).padStart(4, '0')\n}\n\nfunction toDateStr(d: Date): string {\n return d.toISOString().slice(0, 10)\n}\n\n// ---------------------------------------------------------------------------\n// Provider factory\n// ---------------------------------------------------------------------------\n\nexport function createMockOrdersProvider(): OrdersDataProvider {\n const orders: RestaurantOrder[] = createSeedOrders()\n\n function findOrder(id: string): RestaurantOrder | undefined {\n return orders.find(o => o.id === id)\n }\n\n function findItem(itemId: string): { order: RestaurantOrder; item: RestaurantOrderItem; index: number } | undefined {\n for (const order of orders) {\n const index = order.items.findIndex(i => i.id === itemId)\n if (index !== -1) return { order, item: order.items[index], index }\n }\n return undefined\n }\n\n const provider: OrdersDataProvider = {\n // ------------------------------------------------------------------\n // getOrders\n // ------------------------------------------------------------------\n async getOrders(query: OrderQuery): Promise<PaginatedResult<RestaurantOrder>> {\n let result = [...orders]\n\n // Filter by kind\n if (query.kind) {\n const kinds = Array.isArray(query.kind) ? query.kind : [query.kind]\n result = result.filter(o => kinds.includes(o.kind))\n }\n\n // Filter by status\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status]\n result = result.filter(o => (statuses as string[]).includes(o.status))\n }\n\n // Filter by source\n if (query.source) {\n result = result.filter(o => o.source === query.source)\n }\n\n // Filter by tableId\n if (query.tableId) {\n result = result.filter(o => o.tableId === query.tableId)\n }\n\n // Filter by assigneeId\n if (query.assigneeId) {\n result = result.filter(o => o.assigneeId === query.assigneeId)\n }\n\n // Filter by search (reference number, party name, table name)\n if (query.search) {\n const q = query.search.toLowerCase()\n result = result.filter(o =>\n o.referenceNumber.toLowerCase().includes(q) ||\n o.partyName?.toLowerCase().includes(q) ||\n o.tableName?.toLowerCase().includes(q) ||\n o.items.some(i => i.name.toLowerCase().includes(q))\n )\n }\n\n // Filter by date range\n if (query.dateRange) {\n const from = query.dateRange.from\n const to = query.dateRange.to\n result = result.filter(o => {\n const d = o.createdAt.slice(0, 10)\n return d >= from && d <= to\n })\n }\n\n // Sort by createdAt desc\n result.sort((a, b) => b.createdAt.localeCompare(a.createdAt))\n\n const total = result.length\n const page = query.page ?? 1\n const pageSize = query.pageSize ?? 20\n const start = (page - 1) * pageSize\n const data = result.slice(start, start + pageSize)\n\n return { data, total }\n },\n\n // ------------------------------------------------------------------\n // getOrderById\n // ------------------------------------------------------------------\n async getOrderById(id: string): Promise<RestaurantOrder | null> {\n return findOrder(id) ?? null\n },\n\n // ------------------------------------------------------------------\n // createOrder\n // ------------------------------------------------------------------\n async createOrder(input: CreateOrderInput): Promise<RestaurantOrder> {\n const orderId = nextId('order')\n const items: RestaurantOrderItem[] = input.items.map((item, idx) => ({\n id: nextId('item'),\n orderId,\n productId: item.productId,\n name: item.name,\n quantity: item.quantity,\n unitPrice: item.unitPrice,\n discount: item.discount ?? 0,\n total: item.quantity * item.unitPrice - (item.discount ?? 0),\n sortOrder: idx,\n modifiers: item.modifiers,\n kitchenNotes: item.kitchenNotes,\n createdAt: new Date().toISOString(),\n }))\n\n const subtotal = items.reduce((sum, i) => sum + i.total, 0)\n\n const order: RestaurantOrder = {\n id: orderId,\n referenceNumber: generateReferenceNumber(),\n kind: input.kind,\n status: 'new',\n source: input.source ?? 'pos',\n tableId: input.tableId,\n partyId: input.partyId,\n assigneeId: input.assigneeId,\n notes: input.notes,\n estimatedMinutes: input.estimatedMinutes,\n subtotal,\n discount: 0,\n tax: 0,\n total: subtotal,\n currency: 'BRL',\n tags: [],\n items,\n tenantId: 'tenant-mock',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n\n orders.push(order)\n return order\n },\n\n // ------------------------------------------------------------------\n // updateOrderStatus\n // ------------------------------------------------------------------\n async updateOrderStatus(input: UpdateOrderStatusInput): Promise<RestaurantOrder> {\n const order = findOrder(input.orderId)\n if (!order) throw new Error(`Order not found: ${input.orderId}`)\n\n // Validate the transition: the target status must be reachable via getNextStatus\n // or it must be 'cancelled'\n if (input.status !== 'cancelled') {\n const flow = STATUS_FLOW[order.kind]\n const currentIdx = flow.indexOf(order.status)\n const targetIdx = flow.indexOf(input.status)\n if (targetIdx < 0 || targetIdx !== currentIdx + 1) {\n const next = getNextStatus(order.kind, order.status)\n throw new Error(\n `Invalid status transition: ${order.status} → ${input.status}. ` +\n (next ? `Expected next status: ${next}` : 'Order is already in a terminal state.')\n )\n }\n }\n\n order.status = input.status\n order.updatedAt = new Date().toISOString()\n\n if (input.status === 'completed') {\n order.completedAt = order.updatedAt\n }\n\n return order\n },\n\n // ------------------------------------------------------------------\n // updateOrder\n // ------------------------------------------------------------------\n async updateOrder(id: string, data: Partial<RestaurantOrder>): Promise<RestaurantOrder> {\n const order = findOrder(id)\n if (!order) throw new Error(`Order not found: ${id}`)\n\n const { id: _id, items: _items, tenantId: _t, createdAt: _c, ...safe } = data\n Object.assign(order, safe)\n order.updatedAt = new Date().toISOString()\n return order\n },\n\n // ------------------------------------------------------------------\n // cancelOrder\n // ------------------------------------------------------------------\n async cancelOrder(id: string, reason?: string): Promise<void> {\n const order = findOrder(id)\n if (!order) throw new Error(`Order not found: ${id}`)\n\n order.status = 'cancelled'\n order.updatedAt = new Date().toISOString()\n if (reason) {\n order.notes = order.notes ? `${order.notes}\\nCancelled: ${reason}` : `Cancelled: ${reason}`\n }\n },\n\n // ------------------------------------------------------------------\n // addOrderItem\n // ------------------------------------------------------------------\n async addOrderItem(orderId: string, item: CreateOrderItemInput): Promise<RestaurantOrderItem> {\n const order = findOrder(orderId)\n if (!order) throw new Error(`Order not found: ${orderId}`)\n\n const newItem: RestaurantOrderItem = {\n id: nextId('item'),\n orderId,\n productId: item.productId,\n name: item.name,\n quantity: item.quantity,\n unitPrice: item.unitPrice,\n discount: item.discount ?? 0,\n total: item.quantity * item.unitPrice - (item.discount ?? 0),\n sortOrder: order.items.length,\n modifiers: item.modifiers,\n kitchenNotes: item.kitchenNotes,\n createdAt: new Date().toISOString(),\n }\n\n order.items.push(newItem)\n recomputeTotals(order)\n order.updatedAt = new Date().toISOString()\n return newItem\n },\n\n // ------------------------------------------------------------------\n // removeOrderItem\n // ------------------------------------------------------------------\n async removeOrderItem(itemId: string): Promise<void> {\n const found = findItem(itemId)\n if (!found) throw new Error(`Order item not found: ${itemId}`)\n\n found.order.items.splice(found.index, 1)\n recomputeTotals(found.order)\n found.order.updatedAt = new Date().toISOString()\n },\n\n // ------------------------------------------------------------------\n // updateOrderItem\n // ------------------------------------------------------------------\n async updateOrderItem(itemId: string, data: Partial<RestaurantOrderItem>): Promise<RestaurantOrderItem> {\n const found = findItem(itemId)\n if (!found) throw new Error(`Order item not found: ${itemId}`)\n\n const { id: _id, orderId: _oid, createdAt: _c, ...safe } = data\n Object.assign(found.item, safe)\n\n // Recompute item total if quantity or price changed\n found.item.total = found.item.quantity * found.item.unitPrice - found.item.discount\n\n recomputeTotals(found.order)\n found.order.updatedAt = new Date().toISOString()\n return found.item\n },\n\n // ------------------------------------------------------------------\n // getSummary\n // ------------------------------------------------------------------\n async getSummary(dateRange?: { from: string; to: string }): Promise<OrdersSummary> {\n const today = toDateStr(new Date())\n const from = dateRange?.from ?? today\n const to = dateRange?.to ?? today\n\n const inRange = orders.filter(o => {\n const d = o.createdAt.slice(0, 10)\n return d >= from && d <= to\n })\n\n const completed = inRange.filter(o => o.status !== 'cancelled')\n const revenue = completed.reduce((sum, o) => sum + o.total, 0)\n\n const activeStatuses = new Set(['new', 'confirmed', 'preparing', 'ready', 'served', 'dispatched'])\n const active = orders.filter(o => activeStatuses.has(o.status))\n\n const ordersByKind: Record<OrderKind, number> = { dine_in: 0, takeout: 0, delivery: 0 }\n const ordersByStatus: Record<string, number> = {}\n\n for (const o of inRange) {\n ordersByKind[o.kind] = (ordersByKind[o.kind] || 0) + 1\n ordersByStatus[o.status] = (ordersByStatus[o.status] || 0) + 1\n }\n\n // Top items\n const itemMap = new Map<string, { name: string; quantity: number; revenue: number }>()\n for (const o of completed) {\n for (const item of o.items) {\n const existing = itemMap.get(item.name)\n if (existing) {\n existing.quantity += item.quantity\n existing.revenue += item.total\n } else {\n itemMap.set(item.name, { name: item.name, quantity: item.quantity, revenue: item.total })\n }\n }\n }\n const topItems = Array.from(itemMap.values())\n .sort((a, b) => b.quantity - a.quantity)\n .slice(0, 5)\n\n return {\n todayOrderCount: inRange.length,\n todayRevenue: revenue,\n averageTicket: completed.length > 0 ? revenue / completed.length : 0,\n activeOrderCount: active.length,\n ordersByKind,\n ordersByStatus,\n topItems,\n }\n },\n }\n\n return provider\n}\n","import { createStore, type StoreApi } from 'zustand/vanilla'\nimport { dedup } from '@fayz-ai/admin'\nimport { toast } from 'sonner'\nimport type { OrdersDataProvider } from './data/types'\nimport type {\n RestaurantOrder, OrdersSummary,\n OrderQuery, CreateOrderInput, CreateOrderItemInput,\n UpdateOrderStatusInput,\n} from './types'\nimport { getNextStatus } from './types'\n\n// ---------------------------------------------------------------------------\n// Store state\n// ---------------------------------------------------------------------------\n\nexport interface OrdersUIState {\n // Data cache\n orders: RestaurantOrder[]\n ordersTotal: number\n ordersLoading: boolean\n orderQuery: OrderQuery\n\n activeOrders: RestaurantOrder[]\n activeOrdersLoading: boolean\n\n summary: OrdersSummary | null\n summaryLoading: boolean\n\n selectedOrderId: string | null\n\n // Actions\n fetchOrders(query: OrderQuery): Promise<void>\n fetchActiveOrders(): Promise<void>\n fetchSummary(dateRange?: { from: string; to: string }): Promise<void>\n selectOrder(id: string | null): void\n createOrder(input: CreateOrderInput): Promise<RestaurantOrder>\n advanceOrderStatus(orderId: string): Promise<void>\n updateOrderStatus(input: UpdateOrderStatusInput): Promise<void>\n cancelOrder(id: string, reason?: string): Promise<void>\n addOrderItem(orderId: string, item: CreateOrderItemInput): Promise<void>\n removeOrderItem(itemId: string): Promise<void>\n}\n\n// ---------------------------------------------------------------------------\n// Store factory\n// ---------------------------------------------------------------------------\n\nexport function createOrdersStore(provider: OrdersDataProvider): StoreApi<OrdersUIState> {\n return createStore<OrdersUIState>((set, get) => ({\n orders: [],\n ordersTotal: 0,\n ordersLoading: false,\n orderQuery: {},\n\n activeOrders: [],\n activeOrdersLoading: false,\n\n summary: null,\n summaryLoading: false,\n\n selectedOrderId: null,\n\n async fetchOrders(query) {\n return dedup('orders:list:' + JSON.stringify(query), async () => {\n set({ ordersLoading: true, orderQuery: query })\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total, ordersLoading: false })\n })\n },\n\n async fetchActiveOrders() {\n return dedup('orders:active', async () => {\n set({ activeOrdersLoading: true })\n const result = await provider.getOrders({\n status: ['new', 'confirmed', 'preparing', 'ready'],\n })\n set({ activeOrders: result.data, activeOrdersLoading: false })\n })\n },\n\n async fetchSummary(dateRange) {\n return dedup('orders:summary', async () => {\n set({ summaryLoading: true })\n const summary = await provider.getSummary(dateRange)\n set({ summary, summaryLoading: false })\n })\n },\n\n selectOrder(id) {\n set({ selectedOrderId: id })\n },\n\n async createOrder(input) {\n try {\n const order = await provider.createOrder(input)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order created')\n return order\n } catch (err: any) {\n toast.error('Failed to create order', { description: err?.message })\n throw err\n }\n },\n\n async advanceOrderStatus(orderId) {\n try {\n const { orders, activeOrders } = get()\n const order = orders.find(o => o.id === orderId) ?? activeOrders.find(o => o.id === orderId)\n if (!order) throw new Error('Order not found')\n\n const nextStatus = getNextStatus(order.kind, order.status)\n if (!nextStatus) throw new Error('No next status available')\n\n await provider.updateOrderStatus({ orderId, status: nextStatus })\n\n // Refresh active orders\n const activeResult = await provider.getOrders({\n status: ['new', 'confirmed', 'preparing', 'ready'],\n })\n set({ activeOrders: activeResult.data })\n toast.success(`Order advanced to ${nextStatus.replace('_', ' ')}`)\n } catch (err: any) {\n toast.error('Failed to advance order', { description: err?.message })\n throw err\n }\n },\n\n async updateOrderStatus(input) {\n try {\n await provider.updateOrderStatus(input)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order status updated')\n } catch (err: any) {\n toast.error('Failed to update status', { description: err?.message })\n throw err\n }\n },\n\n async cancelOrder(id, reason) {\n try {\n await provider.cancelOrder(id, reason)\n const query = get().orderQuery\n const [result, summary] = await Promise.all([\n provider.getOrders(query),\n provider.getSummary(),\n ])\n set({ orders: result.data, ordersTotal: result.total, summary })\n toast.success('Order cancelled')\n } catch (err: any) {\n toast.error('Failed to cancel order', { description: err?.message })\n throw err\n }\n },\n\n async addOrderItem(orderId, item) {\n try {\n await provider.addOrderItem(orderId, item)\n const query = get().orderQuery\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total })\n toast.success('Item added')\n } catch (err: any) {\n toast.error('Failed to add item', { description: err?.message })\n throw err\n }\n },\n\n async removeOrderItem(itemId) {\n try {\n await provider.removeOrderItem(itemId)\n const query = get().orderQuery\n const result = await provider.getOrders(query)\n set({ orders: result.data, ordersTotal: result.total })\n toast.success('Item removed')\n } catch (err: any) {\n toast.error('Failed to remove item', { description: err?.message })\n throw err\n }\n },\n }))\n}\n","import type { PluginRegistryDef } from '@fayz-ai/core'\nimport type { EntityDef } from '@fayz-ai/core'\n\nconst orderSourceEntity: EntityDef = {\n name: 'Order Source',\n namePlural: 'Order Sources',\n icon: 'Globe',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'icon', label: 'Icon', type: 'text', showInTable: true },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: 'order_sources', tenantScoped: true },\n}\n\nexport const ordersRegistries: PluginRegistryDef[] = [\n {\n id: 'order-sources',\n entity: orderSourceEntity,\n icon: 'Globe',\n description: 'Order sources and delivery platforms',\n display: 'table',\n seedData: [\n { id: 'os-dine', name: 'Dine-in', icon: '🍽️', isActive: true },\n { id: 'os-takeout', name: 'Takeout', icon: '🥡', isActive: true },\n { id: 'os-ifood', name: 'iFood', icon: '🔴', isActive: true },\n { id: 'os-99food', name: '99Food', icon: '🟡', isActive: true },\n ],\n },\n]\n","export const en: Record<string, string> = {\n 'orders.title': 'Orders',\n 'orders.nav.kanban': 'Orders',\n 'orders.nav.list': 'History',\n 'orders.nav.new': 'New Order',\n 'orders.nav.dashboard': 'Dashboard',\n 'orders.kanban.title': 'Orders',\n 'orders.kanban.subtitle': 'Active orders',\n 'orders.kanban.noOrders': 'No active orders',\n 'orders.kanban.noOrdersDesc': 'Orders will appear here as they come in',\n 'orders.kanban.newOrder': 'New Order',\n 'orders.kanban.advance': 'Advance',\n 'orders.kanban.cancel': 'Cancel Order',\n 'orders.kanban.column.new': 'New',\n 'orders.kanban.column.confirmed': 'Confirmed',\n 'orders.kanban.column.preparing': 'Preparing',\n 'orders.kanban.column.ready': 'Ready',\n 'orders.kanban.column.out': 'Out',\n 'orders.kanban.column.completed': 'Completed',\n 'orders.kanban.column.cancelled': 'Cancelled',\n 'orders.detail.title': 'Order Details',\n 'orders.detail.items': 'Items',\n 'orders.detail.table': 'Table',\n 'orders.detail.customer': 'Customer',\n 'orders.detail.waiter': 'Waiter',\n 'orders.detail.source': 'Source',\n 'orders.detail.subtotal': 'Subtotal',\n 'orders.detail.discount': 'Discount',\n 'orders.detail.tax': 'Tax',\n 'orders.detail.total': 'Total',\n 'orders.detail.notes': 'Notes',\n 'orders.newOrder.title': 'New Order',\n 'orders.newOrder.selectKind': 'Order type',\n 'orders.newOrder.dineIn': 'Dine-in',\n 'orders.newOrder.takeout': 'Takeout',\n 'orders.newOrder.delivery': 'Delivery',\n 'orders.newOrder.selectTable': 'Select table',\n 'orders.newOrder.addItems': 'Add items',\n 'orders.newOrder.searchItems': 'Search menu...',\n 'orders.newOrder.noItems': 'No items added yet',\n 'orders.newOrder.confirm': 'Place Order',\n 'orders.newOrder.cancel': 'Cancel',\n 'orders.list.title': 'Order History',\n 'orders.list.subtitle': 'All orders',\n 'orders.list.search': 'Search orders...',\n 'orders.list.noOrders': 'No orders found',\n 'orders.source.dine_in': 'Dine-in',\n 'orders.source.takeout': 'Takeout',\n 'orders.source.ifood': 'iFood',\n 'orders.source.99food': '99Food',\n 'orders.source.delivery': 'Delivery',\n 'orders.settings.title': 'Orders Settings',\n}\n","export const ptBR: Record<string, string> = {\n 'orders.title': 'Pedidos',\n 'orders.nav.kanban': 'Pedidos',\n 'orders.nav.list': 'Histórico',\n 'orders.nav.new': 'Novo Pedido',\n 'orders.nav.dashboard': 'Painel',\n 'orders.kanban.title': 'Pedidos',\n 'orders.kanban.subtitle': 'Pedidos ativos',\n 'orders.kanban.noOrders': 'Nenhum pedido ativo',\n 'orders.kanban.noOrdersDesc': 'Os pedidos aparecerão aqui conforme chegarem',\n 'orders.kanban.newOrder': 'Novo Pedido',\n 'orders.kanban.advance': 'Avançar',\n 'orders.kanban.cancel': 'Cancelar Pedido',\n 'orders.kanban.column.new': 'Novo',\n 'orders.kanban.column.confirmed': 'Confirmado',\n 'orders.kanban.column.preparing': 'Preparando',\n 'orders.kanban.column.ready': 'Pronto',\n 'orders.kanban.column.out': 'Saiu',\n 'orders.kanban.column.completed': 'Concluído',\n 'orders.kanban.column.cancelled': 'Cancelado',\n 'orders.detail.title': 'Detalhes do Pedido',\n 'orders.detail.items': 'Itens',\n 'orders.detail.table': 'Mesa',\n 'orders.detail.customer': 'Cliente',\n 'orders.detail.waiter': 'Garçom',\n 'orders.detail.source': 'Origem',\n 'orders.detail.subtotal': 'Subtotal',\n 'orders.detail.discount': 'Desconto',\n 'orders.detail.tax': 'Imposto',\n 'orders.detail.total': 'Total',\n 'orders.detail.notes': 'Observações',\n 'orders.newOrder.title': 'Novo Pedido',\n 'orders.newOrder.selectKind': 'Tipo de pedido',\n 'orders.newOrder.dineIn': 'Mesa',\n 'orders.newOrder.takeout': 'Para Viagem',\n 'orders.newOrder.delivery': 'Delivery',\n 'orders.newOrder.selectTable': 'Selecionar mesa',\n 'orders.newOrder.addItems': 'Adicionar itens',\n 'orders.newOrder.searchItems': 'Buscar no cardápio...',\n 'orders.newOrder.noItems': 'Nenhum item adicionado',\n 'orders.newOrder.confirm': 'Fazer Pedido',\n 'orders.newOrder.cancel': 'Cancelar',\n 'orders.list.title': 'Histórico de Pedidos',\n 'orders.list.subtitle': 'Todos os pedidos',\n 'orders.list.search': 'Buscar pedidos...',\n 'orders.list.noOrders': 'Nenhum pedido encontrado',\n 'orders.source.dine_in': 'Mesa',\n 'orders.source.takeout': 'Para Viagem',\n 'orders.source.ifood': 'iFood',\n 'orders.source.99food': '99Food',\n 'orders.source.delivery': 'Delivery',\n 'orders.settings.title': 'Configurações de Pedidos',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const ordersLocales: Record<string, Record<string, string>> = { en, 'pt-BR': ptBR }\n","import { createFayzClient, type FayzClientOptions, type FayzTableFilter } from '@fayz-ai/sdk'\nimport type {\n CreateOrderInput,\n CreateOrderItemInput,\n OrderKind,\n OrderQuery,\n OrdersSummary,\n OrderStatus,\n PaginatedResult,\n RestaurantOrder,\n RestaurantOrderItem,\n UpdateOrderStatusInput,\n} from '../types'\nimport type { OrdersDataProvider } from './types'\n\nexport interface FayzOrdersProviderOptions extends FayzClientOptions {\n projectId?: string\n schema?: string\n runtime?: boolean\n ordersTable?: string\n orderItemsTable?: string\n /**\n * Active tenant id (or a getter) used to scope reads and stamp writes on the\n * orders table. When omitted, scoping is left to the runtime/RLS context.\n * Only the orders table carries `tenant_id`; order_items scope via their\n * parent order, so this never touches the order-items table.\n */\n tenantId?: string | (() => string | undefined | null)\n}\n\ninterface OrderRow {\n id: string\n tenant_id?: string | null\n reference_number?: string | null\n kind?: OrderKind | null\n status?: OrderStatus | null\n party_id?: string | null\n party_name?: string | null\n assignee_id?: string | null\n assignee_name?: string | null\n location_id?: string | null\n subtotal?: number | string | null\n discount?: number | string | null\n tax?: number | string | null\n total?: number | string | null\n currency?: string | null\n notes?: string | null\n tags?: string[] | null\n source?: string | null\n table_id?: string | null\n table_name?: string | null\n estimated_minutes?: number | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n updated_at?: string | null\n completed_at?: string | null\n}\n\ninterface OrderItemRow {\n id: string\n order_id?: string | null\n product_id?: string | null\n name?: string | null\n description?: string | null\n quantity?: number | string | null\n unit_price?: number | string | null\n discount?: number | string | null\n total?: number | string | null\n sort_order?: number | null\n modifiers?: string | null\n kitchen_notes?: string | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n}\n\nconst DEFAULT_ORDERS_TABLE = 'orders'\nconst DEFAULT_ORDER_ITEMS_TABLE = 'order_items'\nconst ACTIVE_STATUSES = new Set<OrderStatus>(['new', 'confirmed', 'preparing', 'ready', 'served', 'dispatched'])\n\nfunction nowIso(): string {\n return new Date().toISOString()\n}\n\nfunction numberValue(value: number | string | null | undefined): number {\n if (typeof value === 'number') return value\n if (typeof value === 'string') return Number(value) || 0\n return 0\n}\n\nfunction dateKey(value: string): string {\n return value.slice(0, 10)\n}\n\nfunction referenceNumber(): string {\n return `ORD-${Date.now().toString().slice(-6)}`\n}\n\nfunction itemToRow(item: CreateOrderItemInput, orderId: string, sortOrder: number): Record<string, unknown> {\n const discount = item.discount ?? 0\n return {\n order_id: orderId,\n product_id: item.productId ?? null,\n name: item.name,\n quantity: item.quantity,\n unit_price: item.unitPrice,\n discount,\n total: item.quantity * item.unitPrice - discount,\n sort_order: sortOrder,\n modifiers: item.modifiers ?? null,\n kitchen_notes: item.kitchenNotes ?? null,\n }\n}\n\nfunction rowToItem(row: OrderItemRow): RestaurantOrderItem {\n const quantity = numberValue(row.quantity)\n const unitPrice = numberValue(row.unit_price)\n const discount = numberValue(row.discount)\n return {\n id: row.id,\n orderId: row.order_id ?? '',\n productId: row.product_id ?? undefined,\n name: row.name ?? 'Item',\n description: row.description ?? undefined,\n quantity,\n unitPrice,\n discount,\n total: numberValue(row.total) || quantity * unitPrice - discount,\n sortOrder: row.sort_order ?? 0,\n modifiers: row.modifiers ?? undefined,\n kitchenNotes: row.kitchen_notes ?? undefined,\n metadata: row.metadata ?? {},\n createdAt: row.created_at ?? nowIso(),\n }\n}\n\nfunction rowToOrder(row: OrderRow, items: RestaurantOrderItem[] = []): RestaurantOrder {\n const subtotal = numberValue(row.subtotal) || items.reduce((sum, item) => sum + item.total, 0)\n const discount = numberValue(row.discount)\n const tax = numberValue(row.tax)\n return {\n id: row.id,\n referenceNumber: row.reference_number ?? row.id,\n kind: row.kind ?? 'dine_in',\n status: row.status ?? 'new',\n partyId: row.party_id ?? undefined,\n partyName: row.party_name ?? undefined,\n assigneeId: row.assignee_id ?? undefined,\n assigneeName: row.assignee_name ?? undefined,\n locationId: row.location_id ?? undefined,\n subtotal,\n discount,\n tax,\n total: numberValue(row.total) || subtotal - discount + tax,\n currency: row.currency ?? 'BRL',\n notes: row.notes ?? undefined,\n tags: row.tags ?? [],\n source: row.source ?? 'pos',\n tableId: row.table_id ?? undefined,\n tableName: row.table_name ?? undefined,\n estimatedMinutes: row.estimated_minutes ?? undefined,\n items,\n metadata: row.metadata ?? {},\n tenantId: row.tenant_id ?? 'runtime-tenant',\n createdAt: row.created_at ?? nowIso(),\n updatedAt: row.updated_at ?? row.created_at ?? nowIso(),\n completedAt: row.completed_at ?? undefined,\n }\n}\n\nfunction orderPayload(input: CreateOrderInput): Record<string, unknown> {\n const subtotal = input.items.reduce((sum, item) => sum + item.quantity * item.unitPrice - (item.discount ?? 0), 0)\n return {\n reference_number: referenceNumber(),\n kind: input.kind,\n status: 'new',\n source: input.source ?? 'pos',\n table_id: input.tableId ?? null,\n party_id: input.partyId ?? null,\n assignee_id: input.assigneeId ?? null,\n notes: input.notes ?? null,\n estimated_minutes: input.estimatedMinutes ?? null,\n subtotal,\n discount: 0,\n tax: 0,\n total: subtotal,\n currency: 'BRL',\n tags: [],\n }\n}\n\nfunction updatePayload(data: Partial<RestaurantOrder>): Record<string, unknown> {\n const payload: Record<string, unknown> = {}\n if (data.referenceNumber !== undefined) payload.reference_number = data.referenceNumber\n if (data.kind !== undefined) payload.kind = data.kind\n if (data.status !== undefined) payload.status = data.status\n if (data.partyId !== undefined) payload.party_id = data.partyId\n if (data.partyName !== undefined) payload.party_name = data.partyName\n if (data.assigneeId !== undefined) payload.assignee_id = data.assigneeId\n if (data.assigneeName !== undefined) payload.assignee_name = data.assigneeName\n if (data.locationId !== undefined) payload.location_id = data.locationId\n if (data.subtotal !== undefined) payload.subtotal = data.subtotal\n if (data.discount !== undefined) payload.discount = data.discount\n if (data.tax !== undefined) payload.tax = data.tax\n if (data.total !== undefined) payload.total = data.total\n if (data.currency !== undefined) payload.currency = data.currency\n if (data.notes !== undefined) payload.notes = data.notes\n if (data.tags !== undefined) payload.tags = data.tags\n if (data.source !== undefined) payload.source = data.source\n if (data.tableId !== undefined) payload.table_id = data.tableId\n if (data.tableName !== undefined) payload.table_name = data.tableName\n if (data.estimatedMinutes !== undefined) payload.estimated_minutes = data.estimatedMinutes\n if (data.metadata !== undefined) payload.metadata = data.metadata\n if (data.completedAt !== undefined) payload.completed_at = data.completedAt\n return payload\n}\n\nfunction filtersFromQuery(query: OrderQuery): FayzTableFilter[] {\n const filters: FayzTableFilter[] = []\n if (query.kind && !Array.isArray(query.kind)) filters.push({ column: 'kind', operator: 'eq', value: query.kind })\n if (query.status && !Array.isArray(query.status)) filters.push({ column: 'status', operator: 'eq', value: query.status })\n if (query.source) filters.push({ column: 'source', operator: 'eq', value: query.source })\n if (query.tableId) filters.push({ column: 'table_id', operator: 'eq', value: query.tableId })\n if (query.assigneeId) filters.push({ column: 'assignee_id', operator: 'eq', value: query.assigneeId })\n return filters\n}\n\nfunction matchesClientQuery(order: RestaurantOrder, query: OrderQuery): boolean {\n if (Array.isArray(query.kind) && !query.kind.includes(order.kind)) return false\n if (Array.isArray(query.status) && !query.status.includes(order.status)) return false\n if (query.dateRange) {\n const created = dateKey(order.createdAt)\n if (created < query.dateRange.from || created > query.dateRange.to) return false\n }\n if (query.search) {\n const search = query.search.toLowerCase()\n return order.referenceNumber.toLowerCase().includes(search)\n || (order.partyName?.toLowerCase().includes(search) ?? false)\n || (order.tableName?.toLowerCase().includes(search) ?? false)\n || order.items.some((item) => item.name.toLowerCase().includes(search))\n }\n return true\n}\n\nfunction paginate<T>(items: T[], page?: number, pageSize?: number): PaginatedResult<T> {\n const currentPage = page ?? 1\n const limit = pageSize ?? 20\n const start = (currentPage - 1) * limit\n return { data: items.slice(start, start + limit), total: items.length }\n}\n\nfunction summarize(orders: RestaurantOrder[], dateRange?: { from: string; to: string }): OrdersSummary {\n const today = dateKey(nowIso())\n const from = dateRange?.from ?? today\n const to = dateRange?.to ?? today\n const inRange = orders.filter((order) => {\n const created = dateKey(order.createdAt)\n return created >= from && created <= to\n })\n const billable = inRange.filter((order) => order.status !== 'cancelled')\n const revenue = billable.reduce((sum, order) => sum + order.total, 0)\n const ordersByKind: Record<OrderKind, number> = { dine_in: 0, takeout: 0, delivery: 0 }\n const ordersByStatus: Record<string, number> = {}\n const top = new Map<string, { name: string; quantity: number; revenue: number }>()\n\n for (const order of inRange) {\n ordersByKind[order.kind] = (ordersByKind[order.kind] ?? 0) + 1\n ordersByStatus[order.status] = (ordersByStatus[order.status] ?? 0) + 1\n if (order.status === 'cancelled') continue\n for (const item of order.items) {\n const current = top.get(item.name) ?? { name: item.name, quantity: 0, revenue: 0 }\n current.quantity += item.quantity\n current.revenue += item.total\n top.set(item.name, current)\n }\n }\n\n return {\n todayOrderCount: inRange.length,\n todayRevenue: revenue,\n averageTicket: billable.length > 0 ? revenue / billable.length : 0,\n activeOrderCount: orders.filter((order) => ACTIVE_STATUSES.has(order.status)).length,\n ordersByKind,\n ordersByStatus,\n topItems: [...top.values()].sort((a, b) => b.quantity - a.quantity).slice(0, 5),\n }\n}\n\nexport function createFayzOrdersProvider(options: FayzOrdersProviderOptions = {}): OrdersDataProvider {\n const client = createFayzClient(options)\n const ordersTable = options.ordersTable ?? DEFAULT_ORDERS_TABLE\n const orderItemsTable = options.orderItemsTable ?? DEFAULT_ORDER_ITEMS_TABLE\n const tableOptions = { projectId: options.projectId, schema: options.schema, runtime: options.runtime }\n\n function resolveTenant(): string | undefined {\n const value = typeof options.tenantId === 'function' ? options.tenantId() : options.tenantId\n return value ?? undefined\n }\n\n function withTenant(filters: FayzTableFilter[]): FayzTableFilter[] {\n const tenantId = resolveTenant()\n return tenantId ? [{ column: 'tenant_id', operator: 'eq', value: tenantId }, ...filters] : filters\n }\n\n async function listItemRows(orderIds: string[]): Promise<OrderItemRow[]> {\n if (orderIds.length === 0) return []\n const rows: OrderItemRow[] = []\n await Promise.all(orderIds.map(async (orderId) => {\n const response = await client.data.listRows<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n filters: [{ column: 'order_id', operator: 'eq', value: orderId }],\n sortColumn: 'sort_order',\n sortDirection: 'asc',\n limit: 200,\n })\n rows.push(...response.rows)\n }))\n return rows\n }\n\n async function hydrate(rows: OrderRow[]): Promise<RestaurantOrder[]> {\n const itemRows = await listItemRows(rows.map((row) => row.id))\n const byOrder = new Map<string, RestaurantOrderItem[]>()\n for (const itemRow of itemRows) {\n const item = rowToItem(itemRow)\n const list = byOrder.get(item.orderId) ?? []\n list.push(item)\n byOrder.set(item.orderId, list)\n }\n return rows.map((row) => rowToOrder(row, byOrder.get(row.id) ?? []))\n }\n\n async function listOrders(query: OrderQuery = {}): Promise<RestaurantOrder[]> {\n const response = await client.data.listRows<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n filters: withTenant(filtersFromQuery(query)),\n sortColumn: 'created_at',\n sortDirection: 'desc',\n limit: 500,\n })\n return (await hydrate(response.rows)).filter((order) => matchesClientQuery(order, query))\n }\n\n async function getById(id: string): Promise<RestaurantOrder | null> {\n const response = await client.data.listRows<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n filters: withTenant([{ column: 'id', operator: 'eq', value: id }]),\n limit: 1,\n })\n return (await hydrate(response.rows))[0] ?? null\n }\n\n return {\n async getOrders(query) {\n const orders = await listOrders(query)\n return paginate(orders, query.page, query.pageSize)\n },\n\n async getOrderById(id) {\n return getById(id)\n },\n\n async createOrder(input) {\n const tenantId = resolveTenant()\n const orderRow = await client.data.createRow<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n row: tenantId ? { ...orderPayload(input), tenant_id: tenantId } : orderPayload(input),\n })\n await Promise.all(input.items.map((item, index) => client.data.createRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n row: itemToRow(item, orderRow.id, index),\n })))\n return (await getById(orderRow.id)) ?? rowToOrder(orderRow)\n },\n\n async updateOrderStatus(input: UpdateOrderStatusInput) {\n const completedAt = input.status === 'completed' ? nowIso() : undefined\n return this.updateOrder(input.orderId, { status: input.status, completedAt })\n },\n\n async updateOrder(id, data) {\n const row = await client.data.updateRow<OrderRow>({\n ...tableOptions,\n table: ordersTable,\n primaryKeys: { id },\n row: updatePayload(data),\n })\n return (await getById(row.id)) ?? rowToOrder(row)\n },\n\n async cancelOrder(id, reason) {\n const order = await getById(id)\n await this.updateOrder(id, {\n status: 'cancelled',\n notes: reason ? `${order?.notes ? `${order.notes}\\n` : ''}Cancelled: ${reason}` : order?.notes,\n })\n },\n\n async addOrderItem(orderId, item) {\n const order = await getById(orderId)\n const row = await client.data.createRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n row: itemToRow(item, orderId, order?.items.length ?? 0),\n })\n const created = rowToItem(row)\n const items = [...(order?.items ?? []), created]\n await this.updateOrder(orderId, {\n subtotal: items.reduce((sum, orderItem) => sum + orderItem.total, 0),\n total: items.reduce((sum, orderItem) => sum + orderItem.total, 0) - (order?.discount ?? 0) + (order?.tax ?? 0),\n })\n return created\n },\n\n async removeOrderItem(itemId) {\n const orders = await listOrders()\n const order = orders.find((item) => item.items.some((orderItem) => orderItem.id === itemId))\n await client.data.deleteRows({ ...tableOptions, table: orderItemsTable, rows: [{ id: itemId }] })\n if (order) {\n const items = order.items.filter((item) => item.id !== itemId)\n const subtotal = items.reduce((sum, item) => sum + item.total, 0)\n await this.updateOrder(order.id, { subtotal, total: subtotal - order.discount + order.tax })\n }\n },\n\n async updateOrderItem(itemId, data) {\n const row = await client.data.updateRow<OrderItemRow>({\n ...tableOptions,\n table: orderItemsTable,\n primaryKeys: { id: itemId },\n row: {\n product_id: data.productId,\n name: data.name,\n description: data.description,\n quantity: data.quantity,\n unit_price: data.unitPrice,\n discount: data.discount,\n total: data.total,\n sort_order: data.sortOrder,\n modifiers: data.modifiers,\n kitchen_notes: data.kitchenNotes,\n metadata: data.metadata,\n },\n })\n return rowToItem(row)\n },\n\n async getSummary(dateRange) {\n return summarize(await listOrders({ dateRange }), dateRange)\n },\n }\n}\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport type { EntityLookup } from '@fayz-ai/admin'\nimport type { OrdersDataProvider } from './data/types'\nimport type { RestaurantOrder } from './types'\nimport { createMockOrdersProvider } from './data/mock'\nimport { createOrdersStore } from './store'\nimport { ordersRegistries } from './data/registries'\nimport { ordersLocales } from './locales'\nimport { PluginSettingsPanel } from '@fayz-ai/admin'\n\nconst OrdersPage = React.lazy(() => import('./views/OrdersPage').then((m) => ({ default: m.OrdersPage })))\n\n// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface OrdersPluginLabels {\n pageTitle: string\n kanban: string\n newOrder: string\n orderList: string\n}\n\nconst DEFAULT_LABELS: OrdersPluginLabels = {\n pageTitle: 'Orders',\n kanban: 'Orders',\n newOrder: 'New Order',\n orderList: 'History',\n}\n\n// ---------------------------------------------------------------------------\n// Currency + sources\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_CURRENCY = { code: 'BRL', locale: 'pt-BR', symbol: 'R$' }\n\nexport interface OrderSourceOption {\n value: string\n label: string\n icon?: string\n}\n\nconst DEFAULT_ORDER_SOURCES: OrderSourceOption[] = [\n { value: 'dine_in', label: 'Dine-in', icon: '🍽️' },\n { value: 'takeout', label: 'Takeout', icon: '🥡' },\n]\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface OrdersPluginOptions {\n modules?: {\n delivery?: boolean\n takeout?: boolean\n }\n labels?: Partial<OrdersPluginLabels>\n currency?: { code?: string; locale?: string; symbol?: string }\n navPosition?: number\n navSection?: 'main' | 'secondary'\n scope?: PluginScope\n verticalId?: VerticalId\n dataProvider?: OrdersDataProvider\n menuItemLookup?: EntityLookup\n staffLookup?: EntityLookup\n onOrderCompleted?: (order: RestaurantOrder) => Promise<void>\n orderSources?: OrderSourceOption[]\n}\n\n// ---------------------------------------------------------------------------\n// Config resolver\n// ---------------------------------------------------------------------------\n\nfunction resolveConfig(options?: OrdersPluginOptions) {\n return {\n modules: {\n delivery: options?.modules?.delivery !== false,\n takeout: options?.modules?.takeout !== false,\n },\n labels: { ...DEFAULT_LABELS, ...options?.labels } as any,\n currency: { ...DEFAULT_CURRENCY, ...options?.currency },\n orderSources: options?.orderSources ?? DEFAULT_ORDER_SOURCES,\n menuItemLookup: options?.menuItemLookup,\n staffLookup: options?.staffLookup,\n onOrderCompleted: options?.onOrderCompleted,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createOrdersPlugin(options?: OrdersPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n const provider = options?.dataProvider ?? createMockOrdersProvider()\n const store = createOrdersStore(provider)\n\n const PageComponent: React.FC<any> = () =>\n React.createElement(React.Suspense, { fallback: null },\n React.createElement(OrdersPage, { config, provider, store, registries: ordersRegistries })\n )\n\n return {\n id: 'orders',\n name: config.labels.pageTitle,\n icon: 'ClipboardList',\n version: '1.0.0',\n scope: options?.scope ?? 'vertical',\n verticalId: options?.verticalId,\n defaultEnabled: true,\n dependencies: ['menu'],\n // Orders/month quota. NOTE: order creation currently flows only through the\n // store/AI-tool (createOrder) with no dedicated UI create handler, so no\n // client-side guard is wired yet — the declaration keeps the cap countable.\n declaredLimits: [\n { key: 'orders_month', label: 'Orders / month', table: 'orders', kindFilter: 'order', period: 'month' },\n ],\n navigation: [\n {\n section: options?.navSection ?? 'main',\n position: options?.navPosition ?? 2,\n label: config.labels.pageTitle,\n route: '/orders',\n icon: 'ClipboardList',\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n routes: [\n {\n path: '/orders',\n component: PageComponent,\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n widgets: [],\n aiTools: [\n {\n id: 'orders.today-summary',\n name: 'getOrdersSummary',\n description: 'Returns order count, revenue, and average ticket for today or a given period.',\n icon: 'ClipboardList',\n mode: 'read' as const,\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n period: { type: 'string' as const, description: 'today, week, month' },\n },\n },\n suggestions: [\n { label: 'How many orders today?' },\n { label: \"What's the average ticket today?\" },\n { label: \"What's the most ordered item?\" },\n ],\n },\n {\n id: 'orders.active-orders',\n name: 'getActiveOrders',\n description: 'Lists currently active (non-completed) orders.',\n icon: 'Clock',\n mode: 'read' as const,\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n kind: { type: 'string' as const, enum: ['dine_in', 'takeout', 'delivery'] },\n status: { type: 'string' as const, description: 'Filter by status' },\n },\n },\n suggestions: [\n { label: 'What orders are being prepared right now?' },\n { label: 'Any delivery orders waiting?' },\n ],\n },\n {\n id: 'orders.create-order',\n name: 'createOrder',\n description: 'Creates a new restaurant order with items.',\n icon: 'PlusCircle',\n mode: 'persist' as const,\n limitKey: 'orders_month',\n category: 'Orders',\n parameters: {\n type: 'object' as const,\n properties: {\n kind: { type: 'string' as const, enum: ['dine_in', 'takeout', 'delivery'] },\n tableNumber: { type: 'number' as const, description: 'Table number (for dine-in)' },\n items: { type: 'array' as const, description: 'Item names and quantities' },\n },\n required: ['kind', 'items'],\n },\n permission: { feature: 'orders', action: 'create' as const },\n },\n ],\n registries: ordersRegistries,\n settings: [\n {\n id: 'orders',\n label: config.labels.pageTitle,\n icon: 'ClipboardList',\n component: (() => {\n const OrdersSettingsTab: React.ComponentType<unknown> = () =>\n React.createElement(PluginSettingsPanel, {\n title: 'Orders Settings',\n subtitle: 'Order sources and preferences',\n registries: ordersRegistries,\n routeBase: '/settings/orders',\n })\n OrdersSettingsTab.displayName = 'OrdersSettingsTab'\n return OrdersSettingsTab\n })(),\n order: 22,\n permission: { feature: 'orders', action: 'read' as const },\n },\n ],\n locales: ordersLocales,\n }\n}\n\nexport type { OrdersDataProvider } from './data/types'\nexport { createFayzOrdersProvider } from './data/platform'\nexport type { FayzOrdersProviderOptions } from './data/platform'\nexport type { ResolvedOrdersConfig } from './context'\n"]}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { StoreApi } from 'zustand/vanilla';
3
- import { type ResolvedOrdersConfig } from './OrdersContext';
4
- import type { OrdersDataProvider } from './data/types';
5
- import type { OrdersUIState } from './store';
3
+ import { type ResolvedOrdersConfig } from '../context';
4
+ import type { OrdersDataProvider } from '../data/types';
5
+ import type { OrdersUIState } from '../store';
6
6
  import type { PluginRegistryDef } from '@fayz-ai/core';
7
7
  export declare function OrdersPage({ config, provider, store, registries }: {
8
8
  config: ResolvedOrdersConfig;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrdersPage.d.ts","sourceRoot":"","sources":["../../src/views/OrdersPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAClE,MAAM,EAAE,oBAAoB,CAAA;IAC5B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;CACjC,qBAMA"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.9.0",
6
+ "version": "0.9.2",
7
7
  "description": "Fayz SDK — plugin-orders plugin",
8
8
  "type": "module",
9
9
  "sideEffects": false,
@@ -12,14 +12,12 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "exports": {
14
14
  ".": {
15
- "source": "./src/index.ts",
16
15
  "types": "./dist/index.d.ts",
17
16
  "import": "./dist/index.js"
18
17
  }
19
18
  },
20
19
  "files": [
21
- "dist",
22
- "src"
20
+ "dist"
23
21
  ],
24
22
  "peerDependencies": {
25
23
  "react": "^18.0.0 || ^19.0.0",
@@ -29,9 +27,9 @@
29
27
  "sonner": "^2.0.7"
30
28
  },
31
29
  "dependencies": {
32
- "@fayz-ai/core": "^0.9.0",
33
- "@fayz-ai/sdk": "^0.9.0",
34
- "@fayz-ai/saas": "^0.9.0"
30
+ "@fayz-ai/core": "^0.11.0",
31
+ "@fayz-ai/sdk": "^0.11.0",
32
+ "@fayz-ai/admin": "^0.11.0"
35
33
  },
36
34
  "devDependencies": {
37
35
  "@types/react": "^18.3.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrdersContext.d.ts","sourceRoot":"","sources":["../src/OrdersContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAC3G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAM9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,CAAA;AAE3C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,WAAW,CAAC,EAAE,YAAY,CAAA;IAC1B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAID,eAAO,MAAM,qBAAqB;;;;;EAAsB,CAAA;AACxD,eAAO,MAAM,eAAe,4BAAgB,CAAA;AAC5C,eAAO,MAAM,iBAAiB,0BAAkB,CAAA;AAChD,eAAO,MAAM,cAAc,iDAAe,CAAA;AAE1C,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/OrdersContext.tsx","../src/views/OrderKanbanView.tsx","../src/OrdersPage.tsx"],"names":["jsx"],"mappings":";;;;;;;AAuCA,IAAM,GAAA,GAAM,oBAA6E,YAAY,CAAA;AAE9F,IAAM,wBAAwB,GAAA,CAAI,eAAA;AAClC,IAAM,kBAAkB,GAAA,CAAI,SAAA;AACF,GAAA,CAAI;AAC9B,IAAM,iBAAiB,GAAA,CAAI,QAAA;AC5BlC,IAAM,aAAA,GAAyD;AAAA,EAC7D,GAAA,EAAK,EAAE,KAAA,EAAO,eAAA,EAAgB;AAAA,EAC9B,SAAA,EAAW,EAAE,KAAA,EAAO,aAAA,EAAc;AAAA,EAClC,SAAA,EAAW,EAAE,KAAA,EAAO,cAAA,EAAe;AAAA,EACnC,KAAA,EAAO,EAAE,KAAA,EAAO,gBAAA,EAAiB;AAAA,EACjC,GAAA,EAAK,EAAE,KAAA,EAAO,aAAA,EAAc;AAAA,EAC5B,SAAA,EAAW,EAAE,KAAA,EAAO,aAAA,EAAc;AAAA,EAClC,SAAA,EAAW,EAAE,KAAA,EAAO,YAAA;AACtB,CAAA;AAMA,SAAS,QAAQ,OAAA,EAAyB;AACxC,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAA,CAAO,IAAA,CAAK,GAAA,EAAI,GAAI,IAAI,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,EAAQ,IAAK,GAAK,CAAA;AAC1E,EAAA,IAAI,IAAA,GAAO,GAAG,OAAO,UAAA;AACrB,EAAA,IAAI,IAAA,KAAS,GAAG,OAAO,MAAA;AACvB,EAAA,OAAO,GAAG,IAAI,CAAA,GAAA,CAAA;AAChB;AAMA,SAAS,SAAA,CAAU;AAAA,EACjB,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,IAAI,cAAA,EAAe;AACzB,EAAA,MAAM,cAAc,CAAA,CAAE,CAAA,cAAA,EAAiB,KAAA,CAAM,MAAM,EAAE,CAAA,KAAM,CAAA,cAAA,EAAiB,KAAA,CAAM,MAAM,KACpF,CAAA,CAAE,CAAA,cAAA,EAAiB,MAAM,MAAM,CAAA,CAAE,IACjC,KAAA,CAAM,MAAA;AAEV,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,gFAAA;AAAA,MACV,OAAA,EAAS,QAAA;AAAA,MAGT,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,KAAA,CAAM,eAAA,EAAgB,CAAA;AAAA,0BAC3D,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0FAAA,EACb,QAAA,EAAA,WAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,QAGC,MAAM,SAAA,oBACL,GAAA,CAAC,OAAE,SAAA,EAAU,8BAAA,EAAgC,gBAAM,SAAA,EAAU,CAAA;AAAA,QAE9D,MAAM,SAAA,oBACL,GAAA,CAAC,OAAE,SAAA,EAAU,+BAAA,EAAiC,gBAAM,SAAA,EAAU,CAAA;AAAA,QAI/D,MAAM,KAAA,CAAM,MAAA,GAAS,CAAA,oBACpB,GAAA,CAAC,SAAI,SAAA,EAAU,kBAAA,EACZ,QAAA,EAAA,KAAA,CAAM,KAAA,CAAM,IAAI,CAAC,IAAA,qBAChB,IAAA,CAAC,GAAA,EAAA,EAAgB,WAAU,wCAAA,EACxB,QAAA,EAAA;AAAA,UAAA,IAAA,CAAK,QAAA;AAAA,UAAS,IAAA;AAAA,UAAG,IAAA,CAAK;AAAA,SAAA,EAAA,EADjB,IAAA,CAAK,EAEb,CACD,CAAA,EACH,CAAA;AAAA,wBAIF,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sDAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAK,SAAA,EAAU,mBAAA,EACb,yBAAe,KAAA,CAAM,KAAA,EAAO,QAAQ,CAAA,EACvC,CAAA;AAAA,0BACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oEAAA,EACd,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,SAAA,EAAU,CAAA;AAAA,YAC1B,OAAA,CAAQ,MAAM,SAAS;AAAA,WAAA,EAC1B;AAAA,SAAA,EACF,CAAA;AAAA,QAGC,SAAA,oBACC,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,SAAA,EAAU,wKAAA;AAAA,YACV,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,SAAA,EAAU;AAAA,YACZ,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,uBAAuB,CAAA;AAAA,8BAC1B,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAAA;AACpC;AAAA;AAAA,GAEJ;AAEJ;AAMA,SAAS,cAAA,GAAiB;AACxB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4CAAA,EAA6C,CAAA;AAAA,wBAC3D,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,sBACd,GAAA,CAAC,KAAA,EAAA,EAAY,WAAU,2CAAA,EAAA,EAAb,CAAyD,CACpE,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AAMO,SAAS,eAAA,GAAkB;AAChC,EAAA,MAAM,IAAI,cAAA,EAAe;AACzB,EAAA,MAAM,SAAS,eAAA,EAAgB;AAE/B,EAAA,MAAM,YAAA,GAAe,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,YAAY,CAAA;AACzD,EAAA,MAAM,mBAAA,GAAsB,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,mBAAmB,CAAA;AACvE,EAAA,MAAM,iBAAA,GAAoB,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,iBAAiB,CAAA;AACnE,EAAA,MAAM,kBAAA,GAAqB,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,kBAAkB,CAAA;AACrE,EAAA,MAAM,WAAA,GAAc,cAAA,CAAe,CAAC,CAAA,KAAM,EAAE,WAAW,CAAA;AAEvD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,iBAAA,EAAkB;AAAA,EACpB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAM;AAC5B,IAAA,MAAM,GAAA,GAA+C;AAAA,MACnD,KAAK,EAAC;AAAA,MACN,WAAW,EAAC;AAAA,MACZ,WAAW,EAAC;AAAA,MACZ,OAAO,EAAC;AAAA,MACR,KAAK,EAAC;AAAA,MACN,WAAW,EAAC;AAAA,MACZ,WAAW;AAAC,KACd;AACA,IAAA,KAAA,MAAW,SAAS,YAAA,EAAc;AAChC,MAAA,MAAM,GAAA,GAAM,iBAAA,CAAkB,KAAA,CAAM,MAAM,CAAA;AAC1C,MAAA,GAAA,CAAI,GAAG,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAAA,IACrB;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,EAAA,IAAI,mBAAA,IAAuB,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG;AACpD,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACZ,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,GAAA,qBACnB,GAAA,CAAC,cAAA,EAAA,EAAA,EAAoB,GAAK,CAC3B,CAAA,EACH,CAAA;AAAA,EAEJ;AAGA,EAAA,IAAI,CAAC,mBAAA,IAAuB,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG;AACrD,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,WAAU,yCAAA,EAA0C,CAAA;AAAA,0BAClE,GAAA,EAAA,EAAE,SAAA,EAAU,2CAAA,EACV,QAAA,EAAA,CAAA,CAAE,wBAAwB,CAAA,EAC7B,CAAA;AAAA,0BACC,GAAA,EAAA,EAAE,SAAA,EAAU,uCAAA,EACV,QAAA,EAAA,CAAA,CAAE,4BAA4B,CAAA,EACjC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,mCACZ,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,GAAA,KAAQ;AAC3B,IAAA,MAAM,YAAA,GAAe,QAAQ,GAAG,CAAA;AAChC,IAAA,MAAM,SAAA,GAAY,cAAc,GAAG,CAAA;AACnC,IAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,CAAA,qBAAA,EAAwB,GAAG,CAAA,CAAE,CAAA;AAC7C,IAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KACf,aAAA,CAAc,MAAM,IAAA,EAAM,KAAA,CAAM,MAAM,CAAA,KAAM,IAAA;AAE9C,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAc,SAAA,EAAU,oBAAA,EAEvB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mDAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,yBAAA,EAA4B,SAAA,CAAU,KAAK,CAAA,CAAA,EAAI,CAAA;AAAA,wBAChE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAC/C,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uGAAA,EACb,uBAAa,MAAA,EAChB;AAAA,OAAA,EACF,CAAA;AAAA,sBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACZ,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,GAAA,CAAI,CAAC,KAAA,qBACjB,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YAEC,KAAA;AAAA,YACA,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,QAAA,EAAU,MAAM,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA;AAAA,YACpC,SAAA,EAAW,QAAQ,KAAK,CAAA,GAAI,MAAM,kBAAA,CAAmB,KAAA,CAAM,EAAE,CAAA,GAAI;AAAA,WAAA;AAAA,UAJ5D,KAAA,CAAM;AAAA,SAMd,CAAA;AAAA,QACA,YAAA,CAAa,WAAW,CAAA,oBACvB,GAAA,CAAC,SAAI,SAAA,EAAU,gFAAA,EACZ,QAAA,EAAA,CAAA,CAAE,wBAAwB,CAAA,EAC7B;AAAA,OAAA,EAEJ;AAAA,KAAA,EAAA,EA1BQ,GA2BV,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;ACvOO,SAAS,WAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,EAAO,YAAW,EAK9D;AACD,EAAA,uBACEA,IAAC,qBAAA,EAAA,EAAsB,MAAA,EAAgB,UAAoB,KAAA,EACzD,QAAA,kBAAAA,GAAAA,CAAC,eAAA,EAAA,EAAgB,CAAA,EACnB,CAAA;AAEJ","file":"OrdersPage-KKQCTFCN.js","sourcesContent":["import { createPluginContext, formatCurrency, type CurrencyConfig, type EntityLookup } from '@fayz-ai/saas'\nimport type { OrdersDataProvider } from './data/types'\nimport type { OrdersUIState } from './store'\nimport type { RestaurantOrder } from './types'\n\n// ---------------------------------------------------------------------------\n// Resolved config — fully merged, no optionals\n// ---------------------------------------------------------------------------\n\nexport interface OrdersModules {\n delivery: boolean\n takeout: boolean\n}\n\nexport type OrdersCurrency = CurrencyConfig\n\nexport interface OrderSourceOption {\n value: string\n label: string\n icon?: string\n}\n\nexport interface OrdersPluginLabels {\n pageTitle: string\n pageSubtitle: string\n orderSingular: string\n orderPlural: string\n}\n\nexport interface ResolvedOrdersConfig {\n modules: OrdersModules\n labels: OrdersPluginLabels\n currency: OrdersCurrency\n orderSources: OrderSourceOption[]\n menuItemLookup?: EntityLookup\n staffLookup?: EntityLookup\n onOrderCompleted?: (order: RestaurantOrder) => Promise<void>\n}\n\nconst ctx = createPluginContext<ResolvedOrdersConfig, OrdersDataProvider, OrdersUIState>('OrdersPage')\n\nexport const OrdersContextProvider = ctx.ContextProvider\nexport const useOrdersConfig = ctx.useConfig\nexport const useOrdersProvider = ctx.useProvider\nexport const useOrdersStore = ctx.useStore\n\nexport { formatCurrency }\n","import React, { useEffect, useMemo } from 'react'\nimport { ChevronRight, Clock, Loader2, ClipboardList } from 'lucide-react'\nimport { useOrdersConfig, useOrdersStore, formatCurrency } from '../OrdersContext'\nimport { useTranslation } from '@fayz-ai/core'\nimport {\n KANBAN_COLUMNS,\n mapToKanbanColumn,\n getNextStatus,\n type KanbanColumn,\n type RestaurantOrder,\n} from '../types'\n\n// ---------------------------------------------------------------------------\n// Column config\n// ---------------------------------------------------------------------------\n\nconst COLUMN_CONFIG: Record<KanbanColumn, { color: string }> = {\n new: { color: 'bg-violet-500' },\n confirmed: { color: 'bg-blue-500' },\n preparing: { color: 'bg-amber-500' },\n ready: { color: 'bg-emerald-500' },\n out: { color: 'bg-cyan-500' },\n completed: { color: 'bg-gray-400' },\n cancelled: { color: 'bg-red-500' },\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction timeAgo(dateStr: string): string {\n const diff = Math.floor((Date.now() - new Date(dateStr).getTime()) / 60000)\n if (diff < 1) return 'just now'\n if (diff === 1) return '1min'\n return `${diff}min`\n}\n\n// ---------------------------------------------------------------------------\n// Order Card\n// ---------------------------------------------------------------------------\n\nfunction OrderCard({\n order,\n onAdvance,\n onSelect,\n currency,\n}: {\n order: RestaurantOrder\n onAdvance?: () => void\n onSelect: () => void\n currency: { code: string; locale: string; symbol: string }\n}) {\n const t = useTranslation()\n const sourceLabel = t(`orders.source.${order.source}`) !== `orders.source.${order.source}`\n ? t(`orders.source.${order.source}`)\n : order.source\n\n return (\n <div\n className=\"rounded-lg border bg-card p-3 hover:shadow-md transition-shadow cursor-pointer\"\n onClick={onSelect}\n >\n {/* Header: order number + source badge */}\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"text-sm font-bold\">{order.referenceNumber}</span>\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium\">\n {sourceLabel}\n </span>\n </div>\n\n {/* Customer + table */}\n {order.partyName && (\n <p className=\"text-sm font-medium truncate\">{order.partyName}</p>\n )}\n {order.tableName && (\n <p className=\"text-xs text-muted-foreground\">{order.tableName}</p>\n )}\n\n {/* Items */}\n {order.items.length > 0 && (\n <div className=\"mt-2 space-y-0.5\">\n {order.items.map((item) => (\n <p key={item.id} className=\"text-xs text-muted-foreground truncate\">\n {item.quantity}x {item.name}\n </p>\n ))}\n </div>\n )}\n\n {/* Total + time */}\n <div className=\"flex items-center justify-between mt-3 pt-2 border-t\">\n <span className=\"text-sm font-bold\">\n {formatCurrency(order.total, currency)}\n </span>\n <span className=\"inline-flex items-center gap-0.5 text-[10px] text-muted-foreground\">\n <Clock className=\"h-3 w-3\" />\n {timeAgo(order.createdAt)}\n </span>\n </div>\n\n {/* Advance button */}\n {onAdvance && (\n <button\n type=\"button\"\n className=\"mt-2 flex w-full items-center justify-center gap-1 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 transition-colors\"\n onClick={(e) => {\n e.stopPropagation()\n onAdvance()\n }}\n >\n {t('orders.kanban.advance')}\n <ChevronRight className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Skeleton column (loading state)\n// ---------------------------------------------------------------------------\n\nfunction SkeletonColumn() {\n return (\n <div className=\"flex-shrink-0 w-72\">\n <div className=\"h-9 rounded-lg bg-muted animate-pulse mb-3\" />\n <div className=\"space-y-3\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"h-32 rounded-lg bg-muted/60 animate-pulse\" />\n ))}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// OrderKanbanView\n// ---------------------------------------------------------------------------\n\nexport function OrderKanbanView() {\n const t = useTranslation()\n const config = useOrdersConfig()\n\n const activeOrders = useOrdersStore((s) => s.activeOrders)\n const activeOrdersLoading = useOrdersStore((s) => s.activeOrdersLoading)\n const fetchActiveOrders = useOrdersStore((s) => s.fetchActiveOrders)\n const advanceOrderStatus = useOrdersStore((s) => s.advanceOrderStatus)\n const selectOrder = useOrdersStore((s) => s.selectOrder)\n\n useEffect(() => {\n fetchActiveOrders()\n }, [fetchActiveOrders])\n\n // Group orders by kanban column\n const grouped = useMemo(() => {\n const map: Record<KanbanColumn, RestaurantOrder[]> = {\n new: [],\n confirmed: [],\n preparing: [],\n ready: [],\n out: [],\n completed: [],\n cancelled: [],\n }\n for (const order of activeOrders) {\n const col = mapToKanbanColumn(order.status)\n map[col].push(order)\n }\n return map\n }, [activeOrders])\n\n // Loading state\n if (activeOrdersLoading && activeOrders.length === 0) {\n return (\n <div className=\"flex gap-4 overflow-x-auto pb-4\">\n {KANBAN_COLUMNS.map((col) => (\n <SkeletonColumn key={col} />\n ))}\n </div>\n )\n }\n\n // Empty state\n if (!activeOrdersLoading && activeOrders.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center h-64 text-center\">\n <ClipboardList className=\"h-12 w-12 text-muted-foreground/40 mb-3\" />\n <p className=\"text-sm font-medium text-muted-foreground\">\n {t('orders.kanban.noOrders')}\n </p>\n <p className=\"text-xs text-muted-foreground/70 mt-1\">\n {t('orders.kanban.noOrdersDesc')}\n </p>\n </div>\n )\n }\n\n return (\n <div className=\"flex gap-4 overflow-x-auto pb-4\">\n {KANBAN_COLUMNS.map((col) => {\n const columnOrders = grouped[col]\n const colConfig = COLUMN_CONFIG[col]\n const label = t(`orders.kanban.column.${col}`)\n const hasNext = (order: RestaurantOrder) =>\n getNextStatus(order.kind, order.status) !== null\n\n return (\n <div key={col} className=\"flex-shrink-0 w-72\">\n {/* Column header */}\n <div className=\"flex items-center gap-2 px-3 py-2 rounded-lg mb-3\">\n <span className={`h-2.5 w-2.5 rounded-full ${colConfig.color}`} />\n <span className=\"text-sm font-semibold\">{label}</span>\n <span className=\"ml-auto inline-flex items-center justify-center rounded-full bg-muted px-2 py-0.5 text-xs font-medium\">\n {columnOrders.length}\n </span>\n </div>\n\n {/* Cards */}\n <div className=\"space-y-3 max-h-[calc(100vh-16rem)] overflow-y-auto pr-1\">\n {columnOrders.map((order) => (\n <OrderCard\n key={order.id}\n order={order}\n currency={config.currency}\n onSelect={() => selectOrder(order.id)}\n onAdvance={hasNext(order) ? () => advanceOrderStatus(order.id) : undefined}\n />\n ))}\n {columnOrders.length === 0 && (\n <div className=\"text-center py-8 text-sm text-muted-foreground rounded-lg border border-dashed\">\n {t('orders.kanban.noOrders')}\n </div>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n","import React from 'react'\nimport type { StoreApi } from 'zustand/vanilla'\nimport { OrdersContextProvider, type ResolvedOrdersConfig } from './OrdersContext'\nimport { OrderKanbanView } from './views/OrderKanbanView'\nimport type { OrdersDataProvider } from './data/types'\nimport type { OrdersUIState } from './store'\nimport type { PluginRegistryDef } from '@fayz-ai/core'\n\nexport function OrdersPage({ config, provider, store, registries }: {\n config: ResolvedOrdersConfig\n provider: OrdersDataProvider\n store: StoreApi<OrdersUIState>\n registries?: PluginRegistryDef[]\n}) {\n return (\n <OrdersContextProvider config={config} provider={provider} store={store}>\n <OrderKanbanView />\n </OrdersContextProvider>\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OrdersPage.d.ts","sourceRoot":"","sources":["../src/OrdersPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAyB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;IAClE,MAAM,EAAE,oBAAoB,CAAA;IAC5B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;CACjC,qBAMA"}