@fayz-ai/plugin-orders 0.12.28 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/OrderDetailRoute-LTPDQXQU.js +193 -0
- package/dist/OrderDetailRoute-LTPDQXQU.js.map +1 -0
- package/dist/OrdersPage-5326V62H.js +291 -0
- package/dist/OrdersPage-5326V62H.js.map +1 -0
- package/dist/chunk-YVC7R552.js +6 -0
- package/dist/chunk-YVC7R552.js.map +1 -0
- package/dist/context.d.ts +0 -46
- package/dist/context.d.ts.map +1 -1
- package/dist/data/core-supabase.d.ts.map +1 -1
- package/dist/index.d.ts +4 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1108 -934
- package/dist/index.js.map +1 -1
- package/dist/lib/detail-slot.d.ts +13 -0
- package/dist/lib/detail-slot.d.ts.map +1 -0
- package/dist/lib/list-query.d.ts +21 -0
- package/dist/lib/list-query.d.ts.map +1 -0
- package/dist/migrations/index.d.ts +6 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/server/index.d.ts +17 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +48 -0
- package/dist/server/index.js.map +1 -0
- package/dist/types.d.ts +10 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/views/OrderDetailRoute.d.ts +12 -0
- package/dist/views/OrderDetailRoute.d.ts.map +1 -0
- package/dist/views/OrdersPage.d.ts +1 -7
- package/dist/views/OrdersPage.d.ts.map +1 -1
- package/dist/views/OrdersScreen.d.ts.map +1 -1
- package/package.json +12 -9
- package/dist/OrdersPage-QV2YWARF.js +0 -483
- package/dist/OrdersPage-QV2YWARF.js.map +0 -1
- package/dist/chunk-TYS3LCKX.js +0 -57
- package/dist/chunk-TYS3LCKX.js.map +0 -1
- package/dist/lib/floor-plan-id.d.ts +0 -13
- package/dist/lib/floor-plan-id.d.ts.map +0 -1
- package/dist/views/CommercialOrdersScreen.d.ts +0 -3
- package/dist/views/CommercialOrdersScreen.d.ts.map +0 -1
package/dist/chunk-TYS3LCKX.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// src/types.ts
|
|
2
|
-
var STATUS_FLOW = {
|
|
3
|
-
dine_in: ["draft", "new", "confirmed", "preparing", "ready", "served", "completed"],
|
|
4
|
-
takeout: ["draft", "new", "confirmed", "preparing", "ready", "picked_up", "completed"],
|
|
5
|
-
delivery: ["draft", "new", "confirmed", "preparing", "ready", "dispatched", "delivered", "completed"]
|
|
6
|
-
};
|
|
7
|
-
var OUT_STATUSES = ["served", "picked_up", "dispatched", "delivered"];
|
|
8
|
-
function getNextStatus(kind, current) {
|
|
9
|
-
const flow = STATUS_FLOW[kind];
|
|
10
|
-
let idx = flow.indexOf(current);
|
|
11
|
-
if (idx === -1 && OUT_STATUSES.includes(current)) {
|
|
12
|
-
idx = flow.findIndex((status) => OUT_STATUSES.includes(status));
|
|
13
|
-
}
|
|
14
|
-
return idx >= 0 && idx < flow.length - 1 ? flow[idx + 1] : null;
|
|
15
|
-
}
|
|
16
|
-
var ADVANCE_VERB = {
|
|
17
|
-
draft: "Salvar rascunho",
|
|
18
|
-
new: "Enviar",
|
|
19
|
-
confirmed: "Confirmar",
|
|
20
|
-
preparing: "Preparar",
|
|
21
|
-
ready: "Marcar pronto",
|
|
22
|
-
served: "Servir",
|
|
23
|
-
picked_up: "Entregar",
|
|
24
|
-
dispatched: "Despachar",
|
|
25
|
-
delivered: "Confirmar entrega",
|
|
26
|
-
completed: "Concluir",
|
|
27
|
-
cancelled: "Cancelar"
|
|
28
|
-
};
|
|
29
|
-
function getPreviousStatus(kind, current) {
|
|
30
|
-
const flow = STATUS_FLOW[kind];
|
|
31
|
-
const idx = flow.indexOf(current);
|
|
32
|
-
return idx > 0 ? flow[idx - 1] : null;
|
|
33
|
-
}
|
|
34
|
-
function mapToKanbanColumn(status) {
|
|
35
|
-
if (["served", "picked_up", "dispatched", "delivered"].includes(status)) return "out";
|
|
36
|
-
if (["new", "confirmed", "preparing", "ready", "completed", "cancelled"].includes(status)) {
|
|
37
|
-
return status;
|
|
38
|
-
}
|
|
39
|
-
return "new";
|
|
40
|
-
}
|
|
41
|
-
var KANBAN_COLUMNS = ["new", "confirmed", "preparing", "ready", "out", "completed"];
|
|
42
|
-
var DEFAULT_STATUS_CONFIGS = [
|
|
43
|
-
{ value: "new", label: "New", color: "#6366f1", icon: "PlusCircle" },
|
|
44
|
-
{ value: "confirmed", label: "Confirmed", color: "#3b82f6", icon: "CheckCircle" },
|
|
45
|
-
{ value: "preparing", label: "Preparing", color: "#f59e0b", icon: "ChefHat" },
|
|
46
|
-
{ value: "ready", label: "Ready", color: "#10b981", icon: "Bell" },
|
|
47
|
-
{ value: "served", label: "Served", color: "#06b6d4", icon: "Utensils" },
|
|
48
|
-
{ value: "picked_up", label: "Picked Up", color: "#06b6d4", icon: "ShoppingBag" },
|
|
49
|
-
{ value: "dispatched", label: "Dispatched", color: "#8b5cf6", icon: "Truck" },
|
|
50
|
-
{ value: "delivered", label: "Delivered", color: "#06b6d4", icon: "PackageCheck" },
|
|
51
|
-
{ value: "completed", label: "Completed", color: "#22c55e", icon: "CircleCheck" },
|
|
52
|
-
{ value: "cancelled", label: "Cancelled", color: "#ef4444", icon: "XCircle" }
|
|
53
|
-
];
|
|
54
|
-
|
|
55
|
-
export { ADVANCE_VERB, DEFAULT_STATUS_CONFIGS, KANBAN_COLUMNS, STATUS_FLOW, getNextStatus, getPreviousStatus, mapToKanbanColumn };
|
|
56
|
-
//# sourceMappingURL=chunk-TYS3LCKX.js.map
|
|
57
|
-
//# sourceMappingURL=chunk-TYS3LCKX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":[],"mappings":"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","file":"chunk-TYS3LCKX.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Orders Plugin — Pure TypeScript types\n// ---------------------------------------------------------------------------\n\n// ============================================================\n// ENUMS / LITERALS\n// ============================================================\n\nexport type OrderKind = 'dine_in' | 'takeout' | 'delivery'\n\nexport type DineInStatus = 'draft' | 'new' | 'confirmed' | 'preparing' | 'ready' | 'served' | 'completed' | 'cancelled'\nexport type TakeoutStatus = 'draft' | 'new' | 'confirmed' | 'preparing' | 'ready' | 'picked_up' | 'completed' | 'cancelled'\nexport type DeliveryStatus = 'draft' | 'new' | 'confirmed' | 'preparing' | 'ready' | 'dispatched' | 'delivered' | 'completed' | 'cancelled'\nexport type OrderStatus = DineInStatus | TakeoutStatus | DeliveryStatus\n\n/** Unified columns for the kanban board */\nexport type KanbanColumn = 'new' | 'confirmed' | 'preparing' | 'ready' | 'out' | 'completed' | 'cancelled'\n\n// ============================================================\n// STATUS FLOW\n// ============================================================\n\n// `draft` opens each flow because the app can already produce one: \"Ou salve\n// como rascunho — a cozinha só vê depois de enviada\". It was missing here, so\n// `getNextStatus` returned null for a rascunho and every screen that offers to\n// advance an order offered a draft nothing at all — the one state where the\n// next step (\"mandar para a cozinha\") is least ambiguous.\n//\n// Safe against the database: `public.order_kinds` lists `draft` among the valid\n// statuses of all three kinds, and their transitions are `* → *`.\nexport const STATUS_FLOW: Record<OrderKind, OrderStatus[]> = {\n dine_in: ['draft', 'new', 'confirmed', 'preparing', 'ready', 'served', 'completed'],\n takeout: ['draft', 'new', 'confirmed', 'preparing', 'ready', 'picked_up', 'completed'],\n delivery: ['draft', 'new', 'confirmed', 'preparing', 'ready', 'dispatched', 'delivered', 'completed'],\n}\n\n/**\n * The one moment each kind names differently: the food has left the kitchen.\n * A salão serves it, a counter has it picked up, a courier dispatches it, a\n * customer receives it — one step in four vocabularies.\n */\nconst OUT_STATUSES: OrderStatus[] = ['served', 'picked_up', 'dispatched', 'delivered']\n\nexport function getNextStatus(kind: OrderKind, current: OrderStatus): OrderStatus | null {\n const flow = STATUS_FLOW[kind]\n let idx = flow.indexOf(current)\n // A kind can be handed a SIBLING's word for that moment, because the status\n // is derived and the deriving does not always know the kind: resto-saas reads\n // `dispatched` off a timestamp for every kind, so a dine_in comanda arrives\n // here calling itself dispatched while its own flow says `served`. Without\n // this it had no next step at all — the comanda reached Saiu and could never\n // be finished, from the board or the panel.\n if (idx === -1 && OUT_STATUSES.includes(current)) {\n idx = flow.findIndex((status) => OUT_STATUSES.includes(status))\n }\n return idx >= 0 && idx < flow.length - 1 ? flow[idx + 1] : null\n}\n\n/**\n * O VERBO de cada passo — o que o botão FAZ, não o estado a que chega.\n *\n * \"Avançar\" é a palavra do desenvolvedor: descreve o movimento no diagrama, e\n * não o ato. Quem está no salão numa sexta cheia não avança um pedido, ele\n * confirma, prepara, serve ou despacha — e a diferença aparece justamente no\n * cartão, que é onde a decisão é tomada sem abrir nada.\n *\n * Chaveado pelo estado ALVO, porque é o alvo que nomeia o ato: `getNextStatus`\n * já sabe qual é, inclusive no passo que cada espécie chama de um jeito (o\n * salão serve, o balcão entrega, o motoboy despacha — um passo, quatro\n * vocabulários; ver OUT_STATUSES acima).\n *\n * `draft → new` é \"Enviar\" e não \"Novo\": o rascunho existe porque \"a cozinha só\n * vê depois de enviada\", e enviar é literalmente o que o botão faz.\n */\nexport const ADVANCE_VERB: Record<OrderStatus, string> = {\n draft: 'Salvar rascunho',\n new: 'Enviar',\n confirmed: 'Confirmar',\n preparing: 'Preparar',\n ready: 'Marcar pronto',\n served: 'Servir',\n picked_up: 'Entregar',\n dispatched: 'Despachar',\n delivered: 'Confirmar entrega',\n completed: 'Concluir',\n cancelled: 'Cancelar',\n}\n\nexport function getPreviousStatus(kind: OrderKind, current: OrderStatus): OrderStatus | null {\n const flow = STATUS_FLOW[kind]\n const idx = flow.indexOf(current)\n return idx > 0 ? flow[idx - 1] : null\n}\n\nexport function mapToKanbanColumn(status: OrderStatus): KanbanColumn {\n if (['served', 'picked_up', 'dispatched', 'delivered'].includes(status)) return 'out'\n if (['new', 'confirmed', 'preparing', 'ready', 'completed', 'cancelled'].includes(status)) {\n return status as KanbanColumn\n }\n return 'new'\n}\n\nexport const KANBAN_COLUMNS: KanbanColumn[] = ['new', 'confirmed', 'preparing', 'ready', 'out', 'completed']\n\n// ============================================================\n// CORE ENTITIES\n// ============================================================\n\n/** Restaurant order — public.orders + public.orders extension */\nexport interface RestaurantOrder {\n id: string\n referenceNumber: string\n kind: OrderKind\n status: OrderStatus\n partyId?: string\n partyName?: string\n assigneeId?: string\n assigneeName?: string\n locationId?: string\n subtotal: number\n discount: number\n tax: number\n total: number\n currency: string\n notes?: string\n tags: string[]\n // Extension fields\n source: string\n tableId?: string\n tableName?: string\n estimatedMinutes?: number\n items: RestaurantOrderItem[]\n metadata?: Record<string, unknown>\n tenantId: string\n unitId?: string\n createdAt: string\n updatedAt: string\n completedAt?: string\n}\n\nexport interface RestaurantOrderItem {\n id: string\n orderId: string\n productId?: string\n name: string\n description?: string\n quantity: number\n unitPrice: number\n discount: number\n total: number\n sortOrder: number\n modifiers?: string\n kitchenNotes?: string\n metadata?: Record<string, unknown>\n createdAt: string\n}\n\n// ============================================================\n// INPUT TYPES\n// ============================================================\n\nexport interface CreateOrderInput {\n kind: OrderKind\n source?: string\n tableId?: string\n partyId?: string\n assigneeId?: string\n notes?: string\n estimatedMinutes?: number\n items: CreateOrderItemInput[]\n}\n\nexport interface CreateOrderItemInput {\n productId?: string\n name: string\n quantity: number\n unitPrice: number\n discount?: number\n modifiers?: string\n kitchenNotes?: string\n}\n\nexport interface UpdateOrderStatusInput {\n orderId: string\n status: OrderStatus\n}\n\n// ============================================================\n// QUERY TYPES\n// ============================================================\n\nexport interface OrderQuery {\n kind?: OrderKind | OrderKind[]\n status?: OrderStatus | OrderStatus[]\n source?: string\n tableId?: string\n assigneeId?: string\n dateRange?: { from: string; to: string }\n search?: string\n page?: number\n pageSize?: number\n}\n\nexport interface PaginatedResult<T> {\n data: T[]\n total: number\n}\n\n// ============================================================\n// AGGREGATION\n// ============================================================\n\nexport interface OrdersSummary {\n todayOrderCount: number\n todayRevenue: number\n averageTicket: number\n activeOrderCount: number\n ordersByKind: Record<OrderKind, number>\n ordersByStatus: Record<string, number>\n topItems: Array<{ name: string; quantity: number; revenue: number }>\n}\n\n// ============================================================\n// STATUS CONFIG\n// ============================================================\n\nexport interface OrderStatusConfig {\n value: string\n label: string\n color: string\n icon?: string\n}\n\nexport const DEFAULT_STATUS_CONFIGS: OrderStatusConfig[] = [\n { value: 'new', label: 'New', color: '#6366f1', icon: 'PlusCircle' },\n { value: 'confirmed', label: 'Confirmed', color: '#3b82f6', icon: 'CheckCircle' },\n { value: 'preparing', label: 'Preparing', color: '#f59e0b', icon: 'ChefHat' },\n { value: 'ready', label: 'Ready', color: '#10b981', icon: 'Bell' },\n { value: 'served', label: 'Served', color: '#06b6d4', icon: 'Utensils' },\n { value: 'picked_up', label: 'Picked Up', color: '#06b6d4', icon: 'ShoppingBag' },\n { value: 'dispatched', label: 'Dispatched', color: '#8b5cf6', icon: 'Truck' },\n { value: 'delivered', label: 'Delivered', color: '#06b6d4', icon: 'PackageCheck' },\n { value: 'completed', label: 'Completed', color: '#22c55e', icon: 'CircleCheck' },\n { value: 'cancelled', label: 'Cancelled', color: '#ef4444', icon: 'XCircle' },\n]\n"]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* O id sob o qual a planta do salão se anuncia no registro de componentes.
|
|
3
|
-
*
|
|
4
|
-
* Uma cópia da constante, não um import de `@fayz-ai/plugin-tables`: os dois
|
|
5
|
-
* plugins são independentes de propósito — uma lanchonete de balcão tem pedido
|
|
6
|
-
* e não tem salão — e um import aqui faria o plugin de mesas virar dependência
|
|
7
|
-
* de todo app que mostra pedidos. O acoplamento é a string, e ela é combinada
|
|
8
|
-
* em dois lugares porque nenhum dos dois pode ser dono do outro.
|
|
9
|
-
*
|
|
10
|
-
* Mantido em par com `FLOOR_PLAN_COMPONENT_ID` de `@fayz-ai/plugin-tables`.
|
|
11
|
-
*/
|
|
12
|
-
export declare const FLOOR_PLAN_COMPONENT_ID = "tables.floor-plan";
|
|
13
|
-
//# sourceMappingURL=floor-plan-id.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"floor-plan-id.d.ts","sourceRoot":"","sources":["../../src/lib/floor-plan-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,sBAAsB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CommercialOrdersScreen.d.ts","sourceRoot":"","sources":["../../src/views/CommercialOrdersScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAwDzB,wBAAgB,sBAAsB,sBAkHrC"}
|