@fayz-ai/plugin-tables 0.2.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/LICENSE +21 -0
- package/README.md +53 -0
- package/dist/TablesContext.d.ts +35 -0
- package/dist/TablesContext.d.ts.map +1 -0
- package/dist/TablesPage-5GCFGSX3.cjs +276 -0
- package/dist/TablesPage-5GCFGSX3.cjs.map +1 -0
- package/dist/TablesPage-IM732NWO.js +274 -0
- package/dist/TablesPage-IM732NWO.js.map +1 -0
- package/dist/TablesPage.d.ts +13 -0
- package/dist/TablesPage.d.ts.map +1 -0
- package/dist/data/fayz.d.ts +15 -0
- package/dist/data/fayz.d.ts.map +1 -0
- package/dist/data/mock.d.ts +3 -0
- package/dist/data/mock.d.ts.map +1 -0
- package/dist/data/types.d.ts +24 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/index.cjs +887 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +880 -0
- package/dist/index.js.map +1 -0
- package/dist/locales/en.d.ts +2 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/index.d.ts +2 -0
- package/dist/locales/index.d.ts.map +1 -0
- package/dist/locales/pt-BR.d.ts +2 -0
- package/dist/locales/pt-BR.d.ts.map +1 -0
- package/dist/registries.d.ts +3 -0
- package/dist/registries.d.ts.map +1 -0
- package/dist/store.d.ts +28 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/views/FloorPlanView.d.ts +3 -0
- package/dist/views/FloorPlanView.d.ts.map +1 -0
- package/package.json +55 -0
- package/src/TablesContext.tsx +41 -0
- package/src/TablesPage.tsx +20 -0
- package/src/data/fayz.ts +348 -0
- package/src/data/mock.ts +322 -0
- package/src/data/types.ts +31 -0
- package/src/index.ts +179 -0
- package/src/locales/en.ts +45 -0
- package/src/locales/index.ts +4 -0
- package/src/locales/pt-BR.ts +45 -0
- package/src/registries.ts +32 -0
- package/src/store.ts +178 -0
- package/src/types.ts +116 -0
- package/src/views/FloorPlanView.tsx +388 -0
|
@@ -0,0 +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/fayz.ts","../src/index.ts"],"names":["createStore","dedup","toast","createFayzClient","table","React","PluginSettingsPanel"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n RestaurantTable, TableSession, Zone,\n CreateTableInput, SeatGuestsInput, UpdateTableStatusInput,\n TableQuery, TablesSummary, TableShape,\n} from '../types'\nimport type { TablesDataProvider } from './types'\n\n// ---------------------------------------------------------------------------\n// ID generator\n// ---------------------------------------------------------------------------\n\nlet uid = 0\nfunction nextId(prefix: string) { return prefix + '-' + (++uid) }\n\n// ---------------------------------------------------------------------------\n// Seed helpers\n// ---------------------------------------------------------------------------\n\nconst TENANT = 'mock-tenant'\nconst NOW = new Date().toISOString()\n\nfunction makeTable(\n id: string,\n number: number,\n seats: number,\n zone: string,\n zoneName: string,\n shape: TableShape,\n gridCol: number,\n gridRow: number,\n): RestaurantTable {\n return {\n id,\n name: `Table ${number}`,\n number,\n seats,\n status: 'available',\n zone,\n zoneName,\n shape,\n gridCol,\n gridRow,\n isActive: true,\n tenantId: TENANT,\n createdAt: NOW,\n updatedAt: NOW,\n }\n}\n\nfunction seedZones(): Zone[] {\n return [\n { id: nextId('zone'), name: 'Indoor', color: '#3b82f6', sortOrder: 0, isActive: true, tenantId: TENANT, createdAt: NOW },\n { id: nextId('zone'), name: 'Outdoor', color: '#22c55e', sortOrder: 1, isActive: true, tenantId: TENANT, createdAt: NOW },\n { id: nextId('zone'), name: 'Bar', color: '#f59e0b', sortOrder: 2, isActive: true, tenantId: TENANT, createdAt: NOW },\n ]\n}\n\nfunction seedTables(zones: Zone[]): RestaurantTable[] {\n const [indoor, outdoor, bar] = zones\n\n const tables: RestaurantTable[] = []\n\n // Indoor zone — tables 1-8, 4x2 grid, alternating 4/6 seats, square/rectangle\n for (let i = 0; i < 8; i++) {\n const num = i + 1\n tables.push(makeTable(\n nextId('table'),\n num,\n i % 2 === 0 ? 4 : 6,\n indoor.id,\n indoor.name,\n i % 2 === 0 ? 'square' : 'rectangle',\n (i % 4),\n Math.floor(i / 4),\n ))\n }\n\n // Outdoor zone — tables 9-10, round, 4 seats\n tables.push(makeTable(nextId('table'), 9, 4, outdoor.id, outdoor.name, 'round', 0, 0))\n tables.push(makeTable(nextId('table'), 10, 4, outdoor.id, outdoor.name, 'round', 1, 0))\n\n // Bar zone — tables 11-12, bar shape, 2 seats\n tables.push(makeTable(nextId('table'), 11, 2, bar.id, bar.name, 'bar', 0, 0))\n tables.push(makeTable(nextId('table'), 12, 2, bar.id, bar.name, 'bar', 1, 0))\n\n return tables\n}\n\n// ---------------------------------------------------------------------------\n// Provider factory\n// ---------------------------------------------------------------------------\n\nexport function createMockTablesProvider(): TablesDataProvider {\n const zones = seedZones()\n const tables = seedTables(zones)\n const sessions: TableSession[] = []\n\n // ------- helpers -------\n\n function findTable(id: string) {\n return tables.find(t => t.id === id) ?? null\n }\n\n function matchesQuery(table: RestaurantTable, query?: TableQuery): boolean {\n if (!query) return true\n if (query.zone && table.zone !== query.zone) return false\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status]\n if (!statuses.includes(table.status)) return false\n }\n if (query.search) {\n const s = query.search.toLowerCase()\n if (\n !table.name.toLowerCase().includes(s) &&\n !String(table.number).includes(s) &&\n !(table.zoneName ?? '').toLowerCase().includes(s)\n ) return false\n }\n return true\n }\n\n // ------- provider -------\n\n return {\n // ---- Tables ----\n\n async getTables(query?: TableQuery) {\n return tables.filter(t => matchesQuery(t, query))\n },\n\n async getTableById(id: string) {\n return findTable(id)\n },\n\n async createTable(input: CreateTableInput) {\n const zone = zones.find(z => z.id === input.zone)\n const table: RestaurantTable = {\n id: nextId('table'),\n name: input.name,\n number: input.number,\n seats: input.seats,\n status: 'available',\n zone: input.zone,\n zoneName: zone?.name,\n shape: input.shape ?? 'square',\n gridCol: input.gridCol ?? 0,\n gridRow: input.gridRow ?? 0,\n isActive: true,\n tenantId: TENANT,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n tables.push(table)\n return table\n },\n\n async updateTable(id: string, data: Partial<RestaurantTable>) {\n const table = findTable(id)\n if (!table) throw new Error(`Table ${id} not found`)\n Object.assign(table, data, { updatedAt: new Date().toISOString() })\n return table\n },\n\n async deleteTable(id: string) {\n const idx = tables.findIndex(t => t.id === id)\n if (idx !== -1) tables.splice(idx, 1)\n },\n\n async updateTableStatus(input: UpdateTableStatusInput) {\n const table = findTable(input.tableId)\n if (!table) throw new Error(`Table ${input.tableId} not found`)\n table.status = input.status\n table.updatedAt = new Date().toISOString()\n return table\n },\n\n async updateTablePositions(positions: Array<{ id: string; gridCol: number; gridRow: number }>) {\n for (const pos of positions) {\n const table = findTable(pos.id)\n if (table) {\n table.gridCol = pos.gridCol\n table.gridRow = pos.gridRow\n table.updatedAt = new Date().toISOString()\n }\n }\n },\n\n // ---- Sessions ----\n\n async seatGuests(input: SeatGuestsInput) {\n const table = findTable(input.tableId)\n if (!table) throw new Error(`Table ${input.tableId} not found`)\n\n const session: TableSession = {\n id: nextId('session'),\n tableId: input.tableId,\n tableName: table.name,\n guests: input.guests,\n waiterId: input.waiterId,\n waiterName: input.waiterId ? `Waiter ${input.waiterId}` : undefined,\n seatedAt: new Date().toISOString(),\n status: 'active',\n notes: input.notes,\n tenantId: TENANT,\n createdAt: new Date().toISOString(),\n }\n sessions.push(session)\n\n // Denormalize onto table\n table.status = 'occupied'\n table.currentSessionId = session.id\n table.currentGuests = input.guests\n table.currentWaiterName = session.waiterName\n table.currentElapsedMinutes = 0\n table.currentTotal = 0\n table.updatedAt = new Date().toISOString()\n\n return session\n },\n\n async closeSession(sessionId: string) {\n const session = sessions.find(s => s.id === sessionId)\n if (!session) throw new Error(`Session ${sessionId} not found`)\n\n session.status = 'closed'\n session.closedAt = new Date().toISOString()\n\n // Update table → cleaning\n const table = findTable(session.tableId)\n if (table) {\n table.status = 'cleaning'\n table.currentSessionId = undefined\n table.currentOrderId = undefined\n table.currentGuests = undefined\n table.currentWaiterName = undefined\n table.currentElapsedMinutes = undefined\n table.currentTotal = undefined\n table.updatedAt = new Date().toISOString()\n }\n\n return session\n },\n\n async getActiveSessions() {\n return sessions.filter(s => s.status === 'active')\n },\n\n async getSessionHistory(tableId?: string) {\n const closed = sessions.filter(s => s.status === 'closed')\n if (tableId) return closed.filter(s => s.tableId === tableId)\n return closed\n },\n\n // ---- Zones ----\n\n async getZones() {\n return [...zones]\n },\n\n async createZone(data: Partial<Zone>) {\n const zone: Zone = {\n id: nextId('zone'),\n name: data.name ?? 'New Zone',\n color: data.color,\n sortOrder: data.sortOrder ?? zones.length,\n isActive: data.isActive ?? true,\n tenantId: TENANT,\n createdAt: new Date().toISOString(),\n }\n zones.push(zone)\n return zone\n },\n\n async updateZone(id: string, data: Partial<Zone>) {\n const zone = zones.find(z => z.id === id)\n if (!zone) throw new Error(`Zone ${id} not found`)\n Object.assign(zone, data)\n return zone\n },\n\n async deleteZone(id: string) {\n const idx = zones.findIndex(z => z.id === id)\n if (idx !== -1) zones.splice(idx, 1)\n },\n\n // ---- Summary ----\n\n async getSummary(): Promise<TablesSummary> {\n const available = tables.filter(t => t.status === 'available').length\n const occupied = tables.filter(t => t.status === 'occupied').length\n const reserved = tables.filter(t => t.status === 'reserved').length\n const cleaning = tables.filter(t => t.status === 'cleaning').length\n\n const totalSeats = tables.reduce((sum, t) => sum + t.seats, 0)\n const occupiedSeats = tables\n .filter(t => t.status === 'occupied')\n .reduce((sum, t) => sum + (t.currentGuests ?? t.seats), 0)\n\n const closedSessions = sessions.filter(s => s.status === 'closed' && s.closedAt)\n let averageSessionMinutes = 0\n if (closedSessions.length > 0) {\n const totalMinutes = closedSessions.reduce((sum, s) => {\n const seated = new Date(s.seatedAt).getTime()\n const closed = new Date(s.closedAt!).getTime()\n return sum + (closed - seated) / 60_000\n }, 0)\n averageSessionMinutes = Math.round(totalMinutes / closedSessions.length)\n }\n\n return {\n totalTables: tables.length,\n availableCount: available,\n occupiedCount: occupied,\n reservedCount: reserved,\n cleaningCount: cleaning,\n totalSeats,\n occupiedSeats,\n averageSessionMinutes,\n }\n },\n }\n}\n","import { createStore, type StoreApi } from 'zustand/vanilla'\nimport { dedup } from '@fayz-ai/saas'\nimport { toast } from 'sonner'\nimport type { TablesDataProvider } from './data/types'\nimport type {\n RestaurantTable, TableSession, Zone,\n CreateTableInput, SeatGuestsInput, UpdateTableStatusInput,\n TableQuery, TablesSummary,\n} from './types'\n\n// ---------------------------------------------------------------------------\n// Store state\n// ---------------------------------------------------------------------------\n\nexport interface TablesUIState {\n // Data cache\n tables: RestaurantTable[]\n tablesLoading: boolean\n\n zones: Zone[]\n zonesLoading: boolean\n\n activeSessions: TableSession[]\n sessionsLoading: boolean\n\n sessionHistory: TableSession[]\n historyLoading: boolean\n\n summary: TablesSummary | null\n summaryLoading: boolean\n\n selectedTableId: string | null\n\n // Actions\n fetchTables(query?: TableQuery): Promise<void>\n fetchZones(): Promise<void>\n fetchActiveSessions(): Promise<void>\n fetchSessionHistory(tableId?: string): Promise<void>\n fetchSummary(): Promise<void>\n selectTable(id: string | null): void\n seatGuests(input: SeatGuestsInput): Promise<TableSession>\n closeSession(sessionId: string): Promise<void>\n updateTableStatus(input: UpdateTableStatusInput): Promise<void>\n createTable(input: CreateTableInput): Promise<RestaurantTable>\n}\n\n// ---------------------------------------------------------------------------\n// Store factory\n// ---------------------------------------------------------------------------\n\nexport function createTablesStore(provider: TablesDataProvider): StoreApi<TablesUIState> {\n return createStore<TablesUIState>((set, get) => ({\n tables: [],\n tablesLoading: false,\n\n zones: [],\n zonesLoading: false,\n\n activeSessions: [],\n sessionsLoading: false,\n\n sessionHistory: [],\n historyLoading: false,\n\n summary: null,\n summaryLoading: false,\n\n selectedTableId: null,\n\n async fetchTables(query) {\n return dedup('tables:tables:' + JSON.stringify(query), async () => {\n set({ tablesLoading: true })\n const tables = await provider.getTables(query)\n set({ tables, tablesLoading: false })\n })\n },\n\n async fetchZones() {\n return dedup('tables:zones', async () => {\n set({ zonesLoading: true })\n const zones = await provider.getZones()\n set({ zones, zonesLoading: false })\n })\n },\n\n async fetchActiveSessions() {\n return dedup('tables:activeSessions', async () => {\n set({ sessionsLoading: true })\n const activeSessions = await provider.getActiveSessions()\n set({ activeSessions, sessionsLoading: false })\n })\n },\n\n async fetchSessionHistory(tableId) {\n return dedup('tables:history:' + (tableId ?? ''), async () => {\n set({ historyLoading: true })\n const sessionHistory = await provider.getSessionHistory(tableId)\n set({ sessionHistory, historyLoading: false })\n })\n },\n\n async fetchSummary() {\n return dedup('tables:summary', async () => {\n set({ summaryLoading: true })\n const summary = await provider.getSummary()\n set({ summary, summaryLoading: false })\n })\n },\n\n selectTable(id) {\n set({ selectedTableId: id })\n },\n\n async seatGuests(input) {\n try {\n const session = await provider.seatGuests(input)\n const [tables, activeSessions, summary] = await Promise.all([\n provider.getTables(),\n provider.getActiveSessions(),\n provider.getSummary(),\n ])\n set({ tables, activeSessions, summary })\n toast.success('Guests seated')\n return session\n } catch (err: any) {\n toast.error('Failed to seat guests', { description: err?.message })\n throw err\n }\n },\n\n async closeSession(sessionId) {\n try {\n await provider.closeSession(sessionId)\n const [tables, activeSessions, summary] = await Promise.all([\n provider.getTables(),\n provider.getActiveSessions(),\n provider.getSummary(),\n ])\n set({ tables, activeSessions, summary })\n toast.success('Session closed')\n } catch (err: any) {\n toast.error('Failed to close session', { description: err?.message })\n throw err\n }\n },\n\n async updateTableStatus(input) {\n try {\n await provider.updateTableStatus(input)\n const [tables, summary] = await Promise.all([\n provider.getTables(),\n provider.getSummary(),\n ])\n set({ tables, summary })\n toast.success('Table status updated')\n } catch (err: any) {\n toast.error('Failed to update table status', { description: err?.message })\n throw err\n }\n },\n\n async createTable(input) {\n try {\n const table = await provider.createTable(input)\n const [tables, summary] = await Promise.all([\n provider.getTables(),\n provider.getSummary(),\n ])\n set({ tables, summary })\n toast.success('Table created')\n return table\n } catch (err: any) {\n toast.error('Failed to create table', { 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 zoneEntity: EntityDef = {\n name: 'Zone',\n namePlural: 'Zones',\n icon: 'MapPin',\n displayField: 'name',\n defaultSort: 'sortOrder',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'color', label: 'Color', type: 'text', showInTable: true },\n { key: 'sortOrder', label: 'Order', type: 'number', showInTable: true, defaultValue: 0 },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: 'restaurant_zones', tenantScoped: true },\n}\n\nexport const tablesRegistries: PluginRegistryDef[] = [\n {\n id: 'zones',\n entity: zoneEntity,\n icon: 'MapPin',\n description: 'Floor plan zones (indoor, outdoor, bar, etc.)',\n display: 'table',\n seedData: [\n { id: 'z-indoor', name: 'Indoor', color: '#3b82f6', sortOrder: 0, isActive: true },\n { id: 'z-outdoor', name: 'Outdoor', color: '#22c55e', sortOrder: 1, isActive: true },\n { id: 'z-bar', name: 'Bar', color: '#f59e0b', sortOrder: 2, isActive: true },\n ],\n },\n]\n","export const en: Record<string, string> = {\n 'tables.title': 'Tables',\n 'tables.nav.floorPlan': 'Floor Plan',\n 'tables.nav.zones': 'Zones',\n 'tables.nav.history': 'Session History',\n 'tables.floorPlan.title': 'Floor Plan',\n 'tables.floorPlan.subtitle': 'Manage table layout and seating',\n 'tables.floorPlan.available': 'Available',\n 'tables.floorPlan.occupied': 'Occupied',\n 'tables.floorPlan.reserved': 'Reserved',\n 'tables.floorPlan.cleaning': 'Cleaning',\n 'tables.floorPlan.seats': 'seats',\n 'tables.floorPlan.noTables': 'No tables configured',\n 'tables.floorPlan.noTablesDesc': 'Add your first table to get started',\n 'tables.floorPlan.addTable': 'Add Table',\n 'tables.floorPlan.occupiedOf': '{occupied} occupied, {available} available of {total} tables',\n 'tables.floorPlan.selectTable': 'Select a table',\n 'tables.floorPlan.selectTableDesc': 'Click on any table to see details and actions',\n 'tables.floorPlan.min': 'min',\n 'tables.floorPlan.zone': 'Zone',\n 'tables.floorPlan.order': 'Order',\n 'tables.floorPlan.checkIn': 'Check In',\n 'tables.detail.currentSession': 'Current Session',\n 'tables.detail.guests': 'Guests',\n 'tables.detail.waiter': 'Waiter',\n 'tables.detail.elapsed': 'Elapsed',\n 'tables.detail.total': 'Running Total',\n 'tables.detail.viewOrder': 'View Order',\n 'tables.detail.seatGuests': 'Seat Guests',\n 'tables.detail.closeTable': 'Close Table',\n 'tables.detail.markClean': 'Mark Ready',\n 'tables.detail.cancel': 'Cancel',\n 'tables.seat.title': 'Seat Guests',\n 'tables.seat.guestCount': 'Number of guests',\n 'tables.seat.waiter': 'Waiter',\n 'tables.seat.notes': 'Notes',\n 'tables.seat.confirm': 'Seat',\n 'tables.history.title': 'Session History',\n 'tables.history.table': 'Table',\n 'tables.history.guests': 'Guests',\n 'tables.history.waiter': 'Waiter',\n 'tables.history.duration': 'Duration',\n 'tables.history.noSessions': 'No session history yet',\n 'tables.settings.title': 'Tables Settings',\n}\n","export const ptBR: Record<string, string> = {\n 'tables.title': 'Mesas',\n 'tables.nav.floorPlan': 'Mapa de Mesas',\n 'tables.nav.zones': 'Áreas',\n 'tables.nav.history': 'Histórico',\n 'tables.floorPlan.title': 'Mapa de Mesas',\n 'tables.floorPlan.subtitle': 'Gerencie o layout e a ocupação das mesas',\n 'tables.floorPlan.available': 'Disponível',\n 'tables.floorPlan.occupied': 'Ocupada',\n 'tables.floorPlan.reserved': 'Reservada',\n 'tables.floorPlan.cleaning': 'Limpeza',\n 'tables.floorPlan.seats': 'lugares',\n 'tables.floorPlan.noTables': 'Nenhuma mesa configurada',\n 'tables.floorPlan.noTablesDesc': 'Adicione a primeira mesa para começar',\n 'tables.floorPlan.addTable': 'Adicionar Mesa',\n 'tables.floorPlan.occupiedOf': '{occupied} ocupadas, {available} disponíveis de {total} mesas',\n 'tables.floorPlan.selectTable': 'Selecione uma mesa',\n 'tables.floorPlan.selectTableDesc': 'Clique em uma mesa para ver detalhes e ações',\n 'tables.floorPlan.min': 'min',\n 'tables.floorPlan.zone': 'Área',\n 'tables.floorPlan.order': 'Pedido',\n 'tables.floorPlan.checkIn': 'Check-in',\n 'tables.detail.currentSession': 'Sessão Atual',\n 'tables.detail.guests': 'Pessoas',\n 'tables.detail.waiter': 'Garçom',\n 'tables.detail.elapsed': 'Tempo',\n 'tables.detail.total': 'Total Parcial',\n 'tables.detail.viewOrder': 'Ver Pedido',\n 'tables.detail.seatGuests': 'Sentar Clientes',\n 'tables.detail.closeTable': 'Fechar Mesa',\n 'tables.detail.markClean': 'Marcar Pronta',\n 'tables.detail.cancel': 'Cancelar',\n 'tables.seat.title': 'Sentar Clientes',\n 'tables.seat.guestCount': 'Número de pessoas',\n 'tables.seat.waiter': 'Garçom',\n 'tables.seat.notes': 'Observações',\n 'tables.seat.confirm': 'Sentar',\n 'tables.history.title': 'Histórico de Sessões',\n 'tables.history.table': 'Mesa',\n 'tables.history.guests': 'Pessoas',\n 'tables.history.waiter': 'Garçom',\n 'tables.history.duration': 'Duração',\n 'tables.history.noSessions': 'Nenhum histórico de sessões',\n 'tables.settings.title': 'Configurações de Mesas',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const tablesLocales: Record<string, Record<string, string>> = { en, 'pt-BR': ptBR }\n","import { createFayzClient, type FayzClientOptions, type FayzTableFilter } from '@fayz-ai/sdk'\nimport type {\n CreateTableInput,\n RestaurantTable,\n SeatGuestsInput,\n TableQuery,\n TableSession,\n TablesSummary,\n TableStatus,\n UpdateTableStatusInput,\n Zone,\n} from '../types'\nimport type { TablesDataProvider } from './types'\n\nexport interface FayzTablesProviderOptions extends FayzClientOptions {\n projectId?: string\n tableName?: string\n schema?: string\n runtime?: boolean\n /**\n * Active tenant id (or a getter) used to scope reads and stamp writes on the\n * restaurant_tables table. When omitted, scoping is left to runtime/RLS.\n */\n tenantId?: string | (() => string | undefined | null)\n}\n\ninterface RestaurantTableRow {\n id: string\n tenant_id?: string | null\n name?: string | null\n number?: number | null\n seats?: number | null\n status?: TableStatus | null\n zone?: string | null\n zone_name?: string | null\n shape?: RestaurantTable['shape'] | null\n grid_col?: number | null\n grid_row?: number | null\n is_active?: boolean | null\n current_session_id?: string | null\n current_order_id?: string | null\n current_guests?: number | null\n current_waiter_name?: string | null\n current_elapsed_minutes?: number | null\n current_total?: number | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n updated_at?: string | null\n}\n\nconst DEFAULT_TABLE_NAME = 'restaurant_tables'\n\nfunction nowIso(): string {\n return new Date().toISOString()\n}\n\nfunction rowToTable(row: RestaurantTableRow): RestaurantTable {\n const number = row.number ?? 0\n const zone = row.zone ?? 'indoor'\n return {\n id: row.id,\n name: row.name ?? `Table ${number}`,\n number,\n seats: row.seats ?? 4,\n status: row.status ?? 'available',\n zone,\n zoneName: row.zone_name ?? zone,\n shape: row.shape ?? 'square',\n gridCol: row.grid_col ?? 0,\n gridRow: row.grid_row ?? 0,\n isActive: row.is_active ?? true,\n currentSessionId: row.current_session_id ?? undefined,\n currentOrderId: row.current_order_id ?? undefined,\n currentGuests: row.current_guests ?? undefined,\n currentWaiterName: row.current_waiter_name ?? undefined,\n currentElapsedMinutes: row.current_elapsed_minutes ?? undefined,\n currentTotal: row.current_total ?? undefined,\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 }\n}\n\nfunction tableCreatePayload(input: CreateTableInput): Record<string, unknown> {\n return {\n name: input.name,\n number: input.number,\n seats: input.seats,\n zone: input.zone,\n shape: input.shape ?? 'square',\n grid_col: input.gridCol ?? 0,\n grid_row: input.gridRow ?? 0,\n status: 'available',\n is_active: true,\n }\n}\n\nfunction tableUpdatePayload(data: Partial<RestaurantTable>): Record<string, unknown> {\n const payload: Record<string, unknown> = {}\n if (data.name !== undefined) payload.name = data.name\n if (data.number !== undefined) payload.number = data.number\n if (data.seats !== undefined) payload.seats = data.seats\n if (data.status !== undefined) payload.status = data.status\n if (data.zone !== undefined) payload.zone = data.zone\n if (data.zoneName !== undefined) payload.zone_name = data.zoneName\n if (data.shape !== undefined) payload.shape = data.shape\n if (data.gridCol !== undefined) payload.grid_col = data.gridCol\n if (data.gridRow !== undefined) payload.grid_row = data.gridRow\n if (data.isActive !== undefined) payload.is_active = data.isActive\n if (data.currentSessionId !== undefined) payload.current_session_id = data.currentSessionId\n if (data.currentOrderId !== undefined) payload.current_order_id = data.currentOrderId\n if (data.currentGuests !== undefined) payload.current_guests = data.currentGuests\n if (data.currentWaiterName !== undefined) payload.current_waiter_name = data.currentWaiterName\n if (data.currentElapsedMinutes !== undefined) payload.current_elapsed_minutes = data.currentElapsedMinutes\n if (data.currentTotal !== undefined) payload.current_total = data.currentTotal\n if (data.metadata !== undefined) payload.metadata = data.metadata\n return payload\n}\n\nfunction filtersFromQuery(query?: TableQuery): FayzTableFilter[] {\n const filters: FayzTableFilter[] = [{ column: 'is_active', operator: 'eq', value: true }]\n if (!query) return filters\n if (query.zone) filters.push({ column: 'zone', operator: 'eq', value: query.zone })\n if (query.status && !Array.isArray(query.status)) {\n filters.push({ column: 'status', operator: 'eq', value: query.status })\n }\n return filters\n}\n\nfunction matchesClientQuery(table: RestaurantTable, query?: TableQuery): boolean {\n if (!query) return true\n if (Array.isArray(query.status) && !query.status.includes(table.status)) return false\n if (query.search) {\n const search = query.search.toLowerCase()\n return table.name.toLowerCase().includes(search)\n || String(table.number).includes(search)\n || (table.zoneName?.toLowerCase().includes(search) ?? false)\n }\n return true\n}\n\nfunction summarize(tables: RestaurantTable[]): TablesSummary {\n const availableCount = tables.filter((table) => table.status === 'available').length\n const occupiedCount = tables.filter((table) => table.status === 'occupied').length\n const reservedCount = tables.filter((table) => table.status === 'reserved').length\n const cleaningCount = tables.filter((table) => table.status === 'cleaning').length\n const totalSeats = tables.reduce((sum, table) => sum + table.seats, 0)\n const occupiedSeats = tables\n .filter((table) => table.status === 'occupied')\n .reduce((sum, table) => sum + (table.currentGuests ?? table.seats), 0)\n\n return {\n totalTables: tables.length,\n availableCount,\n occupiedCount,\n reservedCount,\n cleaningCount,\n totalSeats,\n occupiedSeats,\n averageSessionMinutes: 0,\n }\n}\n\nexport function createFayzTablesProvider(options: FayzTablesProviderOptions = {}): TablesDataProvider {\n const client = createFayzClient(options)\n const table = options.tableName ?? DEFAULT_TABLE_NAME\n const baseOptions = {\n projectId: options.projectId,\n table,\n schema: options.schema,\n runtime: options.runtime,\n }\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 listTables(query?: TableQuery): Promise<RestaurantTable[]> {\n const response = await client.data.listRows<RestaurantTableRow>({\n ...baseOptions,\n filters: withTenant(filtersFromQuery(query)),\n sortColumn: 'number',\n sortDirection: 'asc',\n limit: 500,\n })\n return response.rows.map(rowToTable).filter((item) => matchesClientQuery(item, query))\n }\n\n async function getById(id: string): Promise<RestaurantTable | null> {\n const response = await client.data.listRows<RestaurantTableRow>({\n ...baseOptions,\n filters: withTenant([{ column: 'id', operator: 'eq', value: id }]),\n limit: 1,\n })\n return response.rows[0] ? rowToTable(response.rows[0]) : null\n }\n\n return {\n async getTables(query?: TableQuery) {\n return listTables(query)\n },\n\n async getTableById(id: string) {\n return getById(id)\n },\n\n async createTable(input: CreateTableInput) {\n const tenantId = resolveTenant()\n const row = await client.data.createRow<RestaurantTableRow>({\n ...baseOptions,\n row: tenantId ? { ...tableCreatePayload(input), tenant_id: tenantId } : tableCreatePayload(input),\n })\n return rowToTable(row)\n },\n\n async updateTable(id: string, data: Partial<RestaurantTable>) {\n const row = await client.data.updateRow<RestaurantTableRow>({\n ...baseOptions,\n primaryKeys: { id },\n row: tableUpdatePayload(data),\n })\n return rowToTable(row)\n },\n\n async deleteTable(id: string) {\n await client.data.deleteRows({ ...baseOptions, rows: [{ id }] })\n },\n\n async updateTableStatus(input: UpdateTableStatusInput) {\n return this.updateTable(input.tableId, { status: input.status })\n },\n\n async updateTablePositions(positions: Array<{ id: string; gridCol: number; gridRow: number }>) {\n await Promise.all(positions.map((position) => this.updateTable(position.id, {\n gridCol: position.gridCol,\n gridRow: position.gridRow,\n })))\n },\n\n async seatGuests(input: SeatGuestsInput) {\n const table = await this.updateTable(input.tableId, {\n status: 'occupied',\n currentGuests: input.guests,\n currentWaiterName: input.waiterId ? `Waiter ${input.waiterId}` : undefined,\n currentElapsedMinutes: 0,\n currentTotal: 0,\n })\n const session: TableSession = {\n id: table.currentSessionId ?? `runtime-session-${table.id}`,\n tableId: table.id,\n tableName: table.name,\n guests: input.guests,\n waiterId: input.waiterId,\n waiterName: table.currentWaiterName,\n seatedAt: nowIso(),\n status: 'active',\n notes: input.notes,\n tenantId: table.tenantId,\n createdAt: nowIso(),\n }\n return session\n },\n\n async closeSession(sessionId: string) {\n const tables = await listTables()\n const table = tables.find((item) => item.currentSessionId === sessionId)\n if (table) await this.updateTable(table.id, {\n status: 'cleaning',\n currentSessionId: undefined,\n currentOrderId: undefined,\n currentGuests: undefined,\n currentWaiterName: undefined,\n currentElapsedMinutes: undefined,\n currentTotal: undefined,\n })\n return {\n id: sessionId,\n tableId: table?.id ?? '',\n tableName: table?.name,\n guests: table?.currentGuests ?? 0,\n seatedAt: nowIso(),\n closedAt: nowIso(),\n status: 'closed',\n tenantId: table?.tenantId ?? 'runtime-tenant',\n createdAt: nowIso(),\n }\n },\n\n async getActiveSessions() {\n const tables = await listTables({ status: 'occupied' })\n return tables.map((table) => ({\n id: table.currentSessionId ?? `runtime-session-${table.id}`,\n tableId: table.id,\n tableName: table.name,\n guests: table.currentGuests ?? table.seats,\n waiterName: table.currentWaiterName,\n seatedAt: nowIso(),\n status: 'active' as const,\n tenantId: table.tenantId,\n createdAt: nowIso(),\n }))\n },\n\n async getSessionHistory() {\n return []\n },\n\n async getZones() {\n const tables = await listTables()\n const zones = new Map<string, Zone>()\n for (const table of tables) {\n if (zones.has(table.zone)) continue\n zones.set(table.zone, {\n id: table.zone,\n name: table.zoneName ?? table.zone,\n sortOrder: zones.size,\n isActive: true,\n tenantId: table.tenantId,\n createdAt: table.createdAt,\n })\n }\n return [...zones.values()]\n },\n\n async createZone() {\n throw new Error('Restaurant zone writes require a dedicated Fayz table/broker contract.')\n },\n\n async updateZone() {\n throw new Error('Restaurant zone writes require a dedicated Fayz table/broker contract.')\n },\n\n async deleteZone() {\n throw new Error('Restaurant zone writes require a dedicated Fayz table/broker contract.')\n },\n\n async getSummary() {\n return summarize(await listTables())\n },\n }\n}\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport type { TablesDataProvider } from './data/types'\nimport type { TableSession } from './types'\nimport { createMockTablesProvider } from './data/mock'\nimport { createTablesStore } from './store'\nimport { tablesRegistries } from './registries'\nimport { tablesLocales } from './locales'\nimport { PluginSettingsPanel } from '@fayz-ai/saas'\n\nconst TablesPage = React.lazy(() => import('./TablesPage').then((m) => ({ default: m.TablesPage })))\n\n// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface TablesPluginLabels {\n pageTitle: string\n floorPlan: string\n zones: string\n sessionHistory: string\n}\n\nconst DEFAULT_LABELS: TablesPluginLabels = {\n pageTitle: 'Tables',\n floorPlan: 'Floor Plan',\n zones: 'Zones',\n sessionHistory: 'Session History',\n}\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface TablesPluginOptions {\n modules?: {\n reservations?: boolean\n sessionHistory?: boolean\n }\n labels?: Partial<TablesPluginLabels>\n defaultZones?: Array<{ name: string; color?: string }>\n navPosition?: number\n navSection?: 'main' | 'secondary' | 'settings'\n scope?: PluginScope\n verticalId?: VerticalId\n dataProvider?: TablesDataProvider\n onTableSeated?: (session: TableSession) => Promise<string | undefined>\n onTableClosed?: (session: TableSession) => Promise<void>\n}\n\n// ---------------------------------------------------------------------------\n// Config resolver\n// ---------------------------------------------------------------------------\n\nfunction resolveConfig(options?: TablesPluginOptions) {\n return {\n modules: {\n reservations: options?.modules?.reservations === true,\n sessionHistory: options?.modules?.sessionHistory !== false,\n },\n labels: { ...DEFAULT_LABELS, ...options?.labels } as any,\n defaultZones: options?.defaultZones ?? [\n { name: 'Indoor', color: '#3b82f6' },\n { name: 'Outdoor', color: '#22c55e' },\n { name: 'Bar', color: '#f59e0b' },\n ],\n onTableSeated: options?.onTableSeated,\n onTableClosed: options?.onTableClosed,\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createTablesPlugin(options?: TablesPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n const provider = options?.dataProvider ?? createMockTablesProvider()\n const store = createTablesStore(provider)\n\n const PageComponent: React.FC<any> = () =>\n React.createElement(React.Suspense, { fallback: null },\n React.createElement(TablesPage, { config, provider, store, registries: tablesRegistries })\n )\n\n return {\n id: 'tables',\n name: config.labels.pageTitle,\n icon: 'MapPin',\n version: '1.0.0',\n scope: options?.scope ?? 'vertical',\n verticalId: options?.verticalId,\n defaultEnabled: true,\n dependencies: [],\n navigation: [\n {\n section: options?.navSection ?? 'main',\n position: options?.navPosition ?? 4,\n label: config.labels.pageTitle,\n route: '/tables',\n icon: 'MapPin',\n permission: { feature: 'tables', action: 'read' as const },\n },\n ],\n routes: [\n {\n path: '/tables',\n component: PageComponent,\n permission: { feature: 'tables', action: 'read' as const },\n },\n ],\n widgets: [],\n aiTools: [\n {\n id: 'tables.availability',\n name: 'getTableAvailability',\n description: 'Returns which tables are available, occupied, reserved, or being cleaned.',\n icon: 'MapPin',\n mode: 'read' as const,\n category: 'Tables',\n parameters: {\n type: 'object' as const,\n properties: {\n zone: { type: 'string' as const, description: 'Filter by zone name' },\n status: { type: 'string' as const, enum: ['available', 'occupied', 'reserved', 'cleaning'] },\n },\n },\n suggestions: [\n { label: 'Which tables are available right now?' },\n { label: 'How many tables are occupied?' },\n ],\n },\n {\n id: 'tables.seat-guests',\n name: 'seatGuests',\n description: 'Seats guests at a specific table.',\n icon: 'UserPlus',\n mode: 'persist' as const,\n category: 'Tables',\n parameters: {\n type: 'object' as const,\n properties: {\n tableNumber: { type: 'number' as const, description: 'Table number' },\n guests: { type: 'number' as const, description: 'Number of guests' },\n },\n required: ['tableNumber', 'guests'],\n },\n permission: { feature: 'tables', action: 'edit' as const },\n },\n ],\n registries: tablesRegistries,\n settings: [\n {\n id: 'tables',\n label: config.labels.pageTitle,\n icon: 'MapPin',\n component: (() => {\n const TablesSettingsTab: React.ComponentType<unknown> = () =>\n React.createElement(PluginSettingsPanel, {\n title: 'Tables Settings',\n subtitle: 'Zones and floor plan configuration',\n registries: tablesRegistries,\n routeBase: '/settings/tables',\n })\n TablesSettingsTab.displayName = 'TablesSettingsTab'\n return TablesSettingsTab\n })(),\n order: 21,\n permission: { feature: 'tables', action: 'read' as const },\n },\n ],\n locales: tablesLocales,\n }\n}\n\nexport type { TablesDataProvider } from './data/types'\nexport { createFayzTablesProvider } from './data/fayz'\nexport type { FayzTablesProviderOptions } from './data/fayz'\nexport type { ResolvedTablesConfig } from './TablesContext'\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core';
|
|
2
|
+
import type { TablesDataProvider } from './data/types';
|
|
3
|
+
import type { TableSession } from './types';
|
|
4
|
+
export interface TablesPluginLabels {
|
|
5
|
+
pageTitle: string;
|
|
6
|
+
floorPlan: string;
|
|
7
|
+
zones: string;
|
|
8
|
+
sessionHistory: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TablesPluginOptions {
|
|
11
|
+
modules?: {
|
|
12
|
+
reservations?: boolean;
|
|
13
|
+
sessionHistory?: boolean;
|
|
14
|
+
};
|
|
15
|
+
labels?: Partial<TablesPluginLabels>;
|
|
16
|
+
defaultZones?: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
color?: string;
|
|
19
|
+
}>;
|
|
20
|
+
navPosition?: number;
|
|
21
|
+
navSection?: 'main' | 'secondary' | 'settings';
|
|
22
|
+
scope?: PluginScope;
|
|
23
|
+
verticalId?: VerticalId;
|
|
24
|
+
dataProvider?: TablesDataProvider;
|
|
25
|
+
onTableSeated?: (session: TableSession) => Promise<string | undefined>;
|
|
26
|
+
onTableClosed?: (session: TableSession) => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export declare function createTablesPlugin(options?: TablesPluginOptions): PluginManifest;
|
|
29
|
+
export type { TablesDataProvider } from './data/types';
|
|
30
|
+
export { createFayzTablesProvider } from './data/fayz';
|
|
31
|
+
export type { FayzTablesProviderOptions } from './data/fayz';
|
|
32
|
+
export type { ResolvedTablesConfig } from './TablesContext';
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAa3C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;CACvB;AAaD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,CAAA;IACD,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IACtE,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACzD;AA2BD,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,cAAc,CAkGhF;AAED,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAC5D,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA"}
|