@fayz-ai/plugin-menu 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.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/MenuContext.d.ts +30 -0
  4. package/dist/MenuContext.d.ts.map +1 -0
  5. package/dist/MenuPage-OABV6JYB.js +520 -0
  6. package/dist/MenuPage-OABV6JYB.js.map +1 -0
  7. package/dist/MenuPage-VMI2YAPY.cjs +522 -0
  8. package/dist/MenuPage-VMI2YAPY.cjs.map +1 -0
  9. package/dist/MenuPage.d.ts +13 -0
  10. package/dist/MenuPage.d.ts.map +1 -0
  11. package/dist/data/fayz.d.ts +12 -0
  12. package/dist/data/fayz.d.ts.map +1 -0
  13. package/dist/data/mock.d.ts +3 -0
  14. package/dist/data/mock.d.ts.map +1 -0
  15. package/dist/data/types.d.ts +22 -0
  16. package/dist/data/types.d.ts.map +1 -0
  17. package/dist/index.cjs +1053 -0
  18. package/dist/index.cjs.map +1 -0
  19. package/dist/index.d.ts +34 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +1046 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/locales/en.d.ts +2 -0
  24. package/dist/locales/en.d.ts.map +1 -0
  25. package/dist/locales/index.d.ts +2 -0
  26. package/dist/locales/index.d.ts.map +1 -0
  27. package/dist/locales/pt-BR.d.ts +2 -0
  28. package/dist/locales/pt-BR.d.ts.map +1 -0
  29. package/dist/registries.d.ts +3 -0
  30. package/dist/registries.d.ts.map +1 -0
  31. package/dist/store.d.ts +26 -0
  32. package/dist/store.d.ts.map +1 -0
  33. package/dist/types.d.ts +112 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/views/MenuManagerView.d.ts +3 -0
  36. package/dist/views/MenuManagerView.d.ts.map +1 -0
  37. package/package.json +55 -0
  38. package/src/MenuContext.tsx +40 -0
  39. package/src/MenuPage.tsx +21 -0
  40. package/src/data/fayz.ts +429 -0
  41. package/src/data/mock.ts +289 -0
  42. package/src/data/types.ts +33 -0
  43. package/src/index.ts +184 -0
  44. package/src/locales/en.ts +64 -0
  45. package/src/locales/index.ts +4 -0
  46. package/src/locales/pt-BR.ts +64 -0
  47. package/src/registries.ts +84 -0
  48. package/src/store.ts +161 -0
  49. package/src/types.ts +145 -0
  50. package/src/views/MenuManagerView.tsx +688 -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","paginate","createFayzClient","React","registerTranslations","PluginSettingsPanel"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { MenuDataProvider } from './types'\nimport type {\n MenuCategory, MenuItem, ModifierGroup,\n CreateMenuItemInput, UpdateMenuItemInput, CreateMenuCategoryInput,\n MenuItemQuery, PaginatedResult, MenuSummary,\n} from '../types'\n\nlet uid = 0\nfunction nextId(prefix: string) { return prefix + '-' + (++uid) }\nfunction now(): string { return new Date().toISOString() }\n\nfunction paginate<T>(items: T[], page?: number, pageSize?: number): PaginatedResult<T> {\n const p = page ?? 1\n const ps = pageSize ?? 50\n const start = (p - 1) * ps\n return { data: items.slice(start, start + ps), total: items.length }\n}\n\nfunction seedCategories(): MenuCategory[] {\n const t = 'mock-tenant'\n const ts = now()\n return [\n { id: nextId('cat'), name: 'Burgers', icon: '🍔', color: '#f59e0b', sortOrder: 0, isActive: true, itemCount: 3, tenantId: t, createdAt: ts, updatedAt: ts },\n { id: nextId('cat'), name: 'Sides', icon: '🍟', color: '#22c55e', sortOrder: 1, isActive: true, itemCount: 3, tenantId: t, createdAt: ts, updatedAt: ts },\n { id: nextId('cat'), name: 'Drinks', icon: '🥤', color: '#3b82f6', sortOrder: 2, isActive: true, itemCount: 4, tenantId: t, createdAt: ts, updatedAt: ts },\n { id: nextId('cat'), name: 'Desserts', icon: '🍰', color: '#ec4899', sortOrder: 3, isActive: true, itemCount: 2, tenantId: t, createdAt: ts, updatedAt: ts },\n { id: nextId('cat'), name: 'Combos', icon: '⭐', color: '#8b5cf6', sortOrder: 4, isActive: true, itemCount: 0, tenantId: t, createdAt: ts, updatedAt: ts },\n ]\n}\n\nfunction seedItems(categories: MenuCategory[]): MenuItem[] {\n const t = 'mock-tenant'\n const ts = now()\n const [burgers, sides, drinks, desserts] = categories.map((c) => c.id)\n\n const item = (\n name: string, price: number, categoryId: string, categoryName: string,\n opts: Partial<MenuItem> = {},\n ): MenuItem => ({\n id: nextId('mi'),\n name,\n price,\n currency: 'BRL',\n categoryId,\n categoryName,\n status: 'available',\n isActive: true,\n availableForPos: true,\n availableForDelivery: true,\n sortOrder: 0,\n isFeatured: false,\n tenantId: t,\n createdAt: ts,\n updatedAt: ts,\n ...opts,\n })\n\n let order = 0\n return [\n item('Classic Burger', 32, burgers, 'Burgers', { prepTimeMinutes: 12, sortOrder: order++, isFeatured: true }),\n item('Cheese Burger', 36, burgers, 'Burgers', { prepTimeMinutes: 12, sortOrder: order++ }),\n item('BBQ Bacon', 42, burgers, 'Burgers', { prepTimeMinutes: 15, sortOrder: order++, isFeatured: true }),\n item('Fries', 15, sides, 'Sides', { prepTimeMinutes: 8, sortOrder: order++ }),\n item('Onion Rings', 18, sides, 'Sides', { prepTimeMinutes: 8, sortOrder: order++ }),\n item('Coleslaw', 12, sides, 'Sides', { prepTimeMinutes: 2, sortOrder: order++, availableForDelivery: false }),\n item('Soda', 8, drinks, 'Drinks', { prepTimeMinutes: 1, sortOrder: order++ }),\n item('Juice', 12, drinks, 'Drinks', { prepTimeMinutes: 3, sortOrder: order++ }),\n item('Water', 5, drinks, 'Drinks', { prepTimeMinutes: 0, sortOrder: order++ }),\n item('Milkshake', 16, drinks, 'Drinks', { prepTimeMinutes: 5, sortOrder: order++, isFeatured: true }),\n item('Brownie', 14, desserts, 'Desserts', { prepTimeMinutes: 1, sortOrder: order++ }),\n item('Ice Cream', 12, desserts, 'Desserts', { prepTimeMinutes: 2, sortOrder: order++, availableForDelivery: false }),\n ]\n}\n\nfunction seedModifierGroups(): ModifierGroup[] {\n const t = 'mock-tenant'\n const ts = now()\n\n const g1Id = nextId('mg')\n const g2Id = nextId('mg')\n\n return [\n {\n id: g1Id, name: 'Extra Toppings', minSelections: 0, maxSelections: 3, isRequired: false, sortOrder: 0, tenantId: t, createdAt: ts,\n items: [\n { id: nextId('mod'), groupId: g1Id, name: 'Extra Cheese', priceAdjustment: 5, isActive: true, sortOrder: 0 },\n { id: nextId('mod'), groupId: g1Id, name: 'Bacon', priceAdjustment: 7, isActive: true, sortOrder: 1 },\n { id: nextId('mod'), groupId: g1Id, name: 'Jalapeños', priceAdjustment: 4, isActive: true, sortOrder: 2 },\n ],\n },\n {\n id: g2Id, name: 'Drink Size', minSelections: 1, maxSelections: 1, isRequired: true, sortOrder: 1, tenantId: t, createdAt: ts,\n items: [\n { id: nextId('mod'), groupId: g2Id, name: 'Small', priceAdjustment: 0, isActive: true, sortOrder: 0 },\n { id: nextId('mod'), groupId: g2Id, name: 'Medium', priceAdjustment: 3, isActive: true, sortOrder: 1 },\n { id: nextId('mod'), groupId: g2Id, name: 'Large', priceAdjustment: 5, isActive: true, sortOrder: 2 },\n ],\n },\n ]\n}\n\nexport function createMockMenuProvider(): MenuDataProvider {\n const tenantId = 'mock-tenant'\n const categories = seedCategories()\n const items = seedItems(categories)\n const modifierGroups = seedModifierGroups()\n\n return {\n async getCategories(): Promise<MenuCategory[]> {\n return [...categories].sort((a, b) => a.sortOrder - b.sortOrder)\n },\n\n async getCategoryById(id: string): Promise<MenuCategory | null> {\n return categories.find((c) => c.id === id) ?? null\n },\n\n async createCategory(input: CreateMenuCategoryInput): Promise<MenuCategory> {\n const cat: MenuCategory = {\n id: nextId('cat'),\n name: input.name,\n parentId: input.parentId,\n icon: input.icon,\n color: input.color,\n sortOrder: input.sortOrder ?? categories.length,\n isActive: true,\n itemCount: 0,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n categories.push(cat)\n return cat\n },\n\n async updateCategory(id: string, data: Partial<MenuCategory>): Promise<MenuCategory> {\n const cat = categories.find((c) => c.id === id)\n if (!cat) throw new Error(`Category ${id} not found`)\n Object.assign(cat, data, { updatedAt: now() })\n return cat\n },\n\n async deleteCategory(id: string): Promise<void> {\n const idx = categories.findIndex((c) => c.id === id)\n if (idx >= 0) categories.splice(idx, 1)\n },\n\n async reorderCategories(ids: string[]): Promise<void> {\n ids.forEach((id, i) => {\n const cat = categories.find((c) => c.id === id)\n if (cat) cat.sortOrder = i\n })\n },\n\n async getMenuItems(query: MenuItemQuery): Promise<PaginatedResult<MenuItem>> {\n let results = [...items]\n if (query.categoryId) results = results.filter((i) => i.categoryId === query.categoryId)\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status]\n results = results.filter((i) => statuses.includes(i.status))\n }\n if (query.availableForPos !== undefined) results = results.filter((i) => i.availableForPos === query.availableForPos)\n if (query.availableForDelivery !== undefined) results = results.filter((i) => i.availableForDelivery === query.availableForDelivery)\n if (query.isFeatured !== undefined) results = results.filter((i) => i.isFeatured === query.isFeatured)\n if (query.search) {\n const s = query.search.toLowerCase()\n results = results.filter((i) => i.name.toLowerCase().includes(s) || i.description?.toLowerCase().includes(s))\n }\n results.sort((a, b) => a.sortOrder - b.sortOrder)\n return paginate(results, query.page, query.pageSize)\n },\n\n async getMenuItemById(id: string): Promise<MenuItem | null> {\n return items.find((i) => i.id === id) ?? null\n },\n\n async createMenuItem(input: CreateMenuItemInput): Promise<MenuItem> {\n const cat = input.categoryId ? categories.find((c) => c.id === input.categoryId) : undefined\n const item: MenuItem = {\n id: nextId('mi'),\n name: input.name,\n description: input.description,\n price: input.price,\n cost: input.cost,\n currency: 'BRL',\n imageUrl: input.imageUrl,\n categoryId: input.categoryId,\n categoryName: cat?.name,\n status: input.status ?? 'available',\n isActive: true,\n prepTimeMinutes: input.prepTimeMinutes,\n allergens: input.allergens,\n dietaryTags: input.dietaryTags,\n availableForPos: input.availableForPos ?? true,\n availableForDelivery: input.availableForDelivery ?? true,\n deliveryPrice: input.deliveryPrice,\n sortOrder: items.length,\n isFeatured: input.isFeatured ?? false,\n modifierGroupIds: input.modifierGroupIds,\n tenantId,\n createdAt: now(),\n updatedAt: now(),\n }\n items.push(item)\n if (cat) cat.itemCount = (cat.itemCount ?? 0) + 1\n return item\n },\n\n async updateMenuItem(id: string, data: UpdateMenuItemInput): Promise<MenuItem> {\n const item = items.find((i) => i.id === id)\n if (!item) throw new Error(`MenuItem ${id} not found`)\n Object.assign(item, data, { updatedAt: now() })\n return item\n },\n\n async deleteMenuItem(id: string): Promise<void> {\n const idx = items.findIndex((i) => i.id === id)\n if (idx >= 0) {\n const [removed] = items.splice(idx, 1)\n if (removed.categoryId) {\n const cat = categories.find((c) => c.id === removed.categoryId)\n if (cat && cat.itemCount) cat.itemCount--\n }\n }\n },\n\n async toggleAvailability(id: string, field: 'status' | 'availableForPos' | 'availableForDelivery', value: any): Promise<MenuItem> {\n const item = items.find((i) => i.id === id)\n if (!item) throw new Error(`MenuItem ${id} not found`)\n ;(item as any)[field] = value\n item.updatedAt = now()\n return item\n },\n\n async reorderItems(categoryId: string, ids: string[]): Promise<void> {\n ids.forEach((id, i) => {\n const item = items.find((it) => it.id === id && it.categoryId === categoryId)\n if (item) item.sortOrder = i\n })\n },\n\n async getModifierGroups(): Promise<ModifierGroup[]> {\n return [...modifierGroups].sort((a, b) => a.sortOrder - b.sortOrder)\n },\n\n async createModifierGroup(input: Partial<ModifierGroup>): Promise<ModifierGroup> {\n const group: ModifierGroup = {\n id: nextId('mg'),\n name: input.name ?? '',\n minSelections: input.minSelections ?? 0,\n maxSelections: input.maxSelections ?? 1,\n isRequired: input.isRequired ?? false,\n sortOrder: input.sortOrder ?? modifierGroups.length,\n items: input.items ?? [],\n tenantId,\n createdAt: now(),\n }\n modifierGroups.push(group)\n return group\n },\n\n async updateModifierGroup(id: string, data: Partial<ModifierGroup>): Promise<ModifierGroup> {\n const group = modifierGroups.find((g) => g.id === id)\n if (!group) throw new Error(`ModifierGroup ${id} not found`)\n Object.assign(group, data)\n return group\n },\n\n async deleteModifierGroup(id: string): Promise<void> {\n const idx = modifierGroups.findIndex((g) => g.id === id)\n if (idx >= 0) modifierGroups.splice(idx, 1)\n },\n\n async getSummary(): Promise<MenuSummary> {\n const available = items.filter((i) => i.status === 'available')\n const soldOut = items.filter((i) => i.status === 'sold_out')\n const hidden = items.filter((i) => i.status === 'hidden')\n const prices = items.filter((i) => i.price > 0).map((i) => i.price)\n return {\n totalItems: items.length,\n availableItems: available.length,\n soldOutItems: soldOut.length,\n hiddenItems: hidden.length,\n categoryCount: categories.length,\n averagePrice: prices.length ? prices.reduce((a, b) => a + b, 0) / prices.length : 0,\n featuredCount: items.filter((i) => i.isFeatured).length,\n }\n },\n }\n}\n","import { createStore, type StoreApi } from 'zustand/vanilla'\nimport { dedup } from '@fayz-ai/saas'\nimport { toast } from 'sonner'\nimport type { MenuDataProvider } from './data/types'\nimport type {\n MenuCategory, MenuItem, ModifierGroup, MenuSummary,\n MenuItemQuery,\n CreateMenuItemInput, UpdateMenuItemInput, CreateMenuCategoryInput,\n} from './types'\n\n// ---------------------------------------------------------------------------\n// Store state\n// ---------------------------------------------------------------------------\n\nexport interface MenuUIState {\n // Data cache\n categories: MenuCategory[]\n categoriesLoading: boolean\n\n menuItems: MenuItem[]\n menuItemsTotal: number\n menuItemsLoading: boolean\n menuItemQuery: MenuItemQuery\n\n modifierGroups: ModifierGroup[]\n modifiersLoading: boolean\n\n summary: MenuSummary | null\n summaryLoading: boolean\n\n // Actions\n fetchCategories(): Promise<void>\n fetchMenuItems(query: MenuItemQuery): Promise<void>\n fetchModifierGroups(): Promise<void>\n fetchSummary(): Promise<void>\n createMenuItem(input: CreateMenuItemInput): Promise<MenuItem>\n updateMenuItem(id: string, data: UpdateMenuItemInput): Promise<MenuItem>\n deleteMenuItem(id: string): Promise<void>\n toggleAvailability(id: string, field: string, value: any): Promise<void>\n createCategory(input: CreateMenuCategoryInput): Promise<MenuCategory>\n}\n\n// ---------------------------------------------------------------------------\n// Store factory\n// ---------------------------------------------------------------------------\n\nexport function createMenuStore(provider: MenuDataProvider): StoreApi<MenuUIState> {\n return createStore<MenuUIState>((set, get) => ({\n categories: [],\n categoriesLoading: false,\n\n menuItems: [],\n menuItemsTotal: 0,\n menuItemsLoading: false,\n menuItemQuery: {},\n\n modifierGroups: [],\n modifiersLoading: false,\n\n summary: null,\n summaryLoading: false,\n\n async fetchCategories() {\n return dedup('menu:categories', async () => {\n set({ categoriesLoading: true })\n const categories = await provider.getCategories()\n set({ categories, categoriesLoading: false })\n })\n },\n\n async fetchMenuItems(query) {\n return dedup('menu:items:' + JSON.stringify(query), async () => {\n set({ menuItemsLoading: true, menuItemQuery: query })\n const result = await provider.getMenuItems(query)\n set({ menuItems: result.data, menuItemsTotal: result.total, menuItemsLoading: false })\n })\n },\n\n async fetchModifierGroups() {\n return dedup('menu:modifiers', async () => {\n set({ modifiersLoading: true })\n const modifierGroups = await provider.getModifierGroups()\n set({ modifierGroups, modifiersLoading: false })\n })\n },\n\n async fetchSummary() {\n return dedup('menu:summary', async () => {\n set({ summaryLoading: true })\n const summary = await provider.getSummary()\n set({ summary, summaryLoading: false })\n })\n },\n\n async createMenuItem(input) {\n try {\n const item = await provider.createMenuItem(input)\n const query = get().menuItemQuery\n const [result, summary] = await Promise.all([provider.getMenuItems(query), provider.getSummary()])\n set({ menuItems: result.data, menuItemsTotal: result.total, summary })\n toast.success('Menu item created')\n return item\n } catch (err: any) {\n toast.error('Failed to create menu item', { description: err?.message })\n throw err\n }\n },\n\n async updateMenuItem(id, data) {\n try {\n const item = await provider.updateMenuItem(id, data)\n const query = get().menuItemQuery\n const result = await provider.getMenuItems(query)\n set({ menuItems: result.data, menuItemsTotal: result.total })\n toast.success('Menu item updated')\n return item\n } catch (err: any) {\n toast.error('Failed to update menu item', { description: err?.message })\n throw err\n }\n },\n\n async deleteMenuItem(id) {\n try {\n await provider.deleteMenuItem(id)\n const query = get().menuItemQuery\n const [result, summary] = await Promise.all([provider.getMenuItems(query), provider.getSummary()])\n set({ menuItems: result.data, menuItemsTotal: result.total, summary })\n toast.success('Menu item deleted')\n } catch (err: any) {\n toast.error('Failed to delete menu item', { description: err?.message })\n throw err\n }\n },\n\n async toggleAvailability(id, field, value) {\n try {\n await provider.toggleAvailability(id, field as any, value)\n const query = get().menuItemQuery\n const result = await provider.getMenuItems(query)\n set({ menuItems: result.data, menuItemsTotal: result.total })\n } catch (err: any) {\n toast.error('Failed to update availability', { description: err?.message })\n throw err\n }\n },\n\n async createCategory(input) {\n try {\n const category = await provider.createCategory(input)\n const categories = await provider.getCategories()\n set({ categories })\n toast.success('Category created')\n return category\n } catch (err: any) {\n toast.error('Failed to create category', { 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 allergenEntity: EntityDef = {\n name: 'Allergen',\n namePlural: 'Allergens',\n icon: 'AlertTriangle',\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: 'menu_allergens', tenantScoped: true },\n}\n\nconst dietaryTagEntity: EntityDef = {\n name: 'Dietary Tag',\n namePlural: 'Dietary Tags',\n icon: 'Leaf',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'color', label: 'Color', type: 'text', showInTable: true },\n { key: 'isActive', label: 'Active', type: 'boolean', showInTable: true, defaultValue: true },\n ],\n data: { table: 'menu_dietary_tags', tenantScoped: true },\n}\n\nconst modifierGroupEntity: EntityDef = {\n name: 'Modifier Group',\n namePlural: 'Modifier Groups',\n icon: 'ListPlus',\n displayField: 'name',\n defaultSort: 'name',\n fields: [\n { key: 'name', label: 'Name', type: 'text', required: true, showInTable: true },\n { key: 'minSelections', label: 'Min Selections', type: 'number', showInTable: true, defaultValue: 0 },\n { key: 'maxSelections', label: 'Max Selections', type: 'number', showInTable: true, defaultValue: 1 },\n { key: 'isRequired', label: 'Required', type: 'boolean', showInTable: true, defaultValue: false },\n ],\n data: { table: 'menu_modifier_groups', tenantScoped: true },\n}\n\nexport const menuRegistries: PluginRegistryDef[] = [\n {\n id: 'allergens',\n entity: allergenEntity,\n icon: 'AlertTriangle',\n description: 'Allergen types for menu items',\n display: 'table',\n readOnly: true,\n seedData: [\n { id: 'a-gluten', name: 'Gluten', icon: '🌾', isActive: true },\n { id: 'a-dairy', name: 'Dairy', icon: '🥛', isActive: true },\n { id: 'a-nuts', name: 'Nuts', icon: '🥜', isActive: true },\n { id: 'a-shellfish', name: 'Shellfish', icon: '🦐', isActive: true },\n { id: 'a-eggs', name: 'Eggs', icon: '🥚', isActive: true },\n { id: 'a-soy', name: 'Soy', icon: '🫘', isActive: true },\n ],\n },\n {\n id: 'dietary-tags',\n entity: dietaryTagEntity,\n icon: 'Leaf',\n description: 'Dietary tags (vegan, vegetarian, etc.)',\n display: 'table',\n readOnly: true,\n seedData: [\n { id: 'dt-vegan', name: 'Vegan', color: 'green', isActive: true },\n { id: 'dt-vegetarian', name: 'Vegetarian', color: 'lime', isActive: true },\n { id: 'dt-gf', name: 'Gluten Free', color: 'amber', isActive: true },\n ],\n },\n {\n id: 'modifier-groups',\n entity: modifierGroupEntity,\n icon: 'ListPlus',\n description: 'Modifier groups for item customization',\n display: 'table',\n },\n]\n","export const en: Record<string, string> = {\n 'menu.title': 'Menu',\n 'menu.nav.manager': 'Menu',\n 'menu.nav.categories': 'Categories',\n 'menu.nav.items': 'Items',\n 'menu.nav.modifiers': 'Modifiers',\n 'menu.manager.title': 'Menu Manager',\n 'menu.manager.subtitle': 'Manage your menu items and categories',\n 'menu.manager.search': 'Search menu...',\n 'menu.manager.allCategories': 'All Categories',\n 'menu.manager.newItem': 'New Item',\n 'menu.manager.noItems': 'No menu items yet',\n 'menu.manager.noItemsDesc': 'Add your first menu item to get started',\n 'menu.manager.addFirst': 'Add first item',\n 'menu.manager.available': 'Available',\n 'menu.manager.soldOut': 'Sold Out',\n 'menu.manager.hidden': 'Hidden',\n 'menu.manager.pos': 'POS',\n 'menu.manager.delivery': 'Delivery',\n 'menu.manager.featured': 'Featured',\n 'menu.manager.prepTime': 'Prep time',\n 'menu.manager.min': 'min',\n 'menu.manager.addCategory': 'Add Category',\n 'menu.manager.addProduct': 'Add Product',\n 'menu.manager.item': 'Item',\n 'menu.manager.price': 'Price',\n 'menu.manager.deliveryPrice': 'Delivery $',\n 'menu.manager.itemsCount': '{{count}} items',\n 'menu.manager.noResults': 'No categories or items match your search.',\n 'menu.manager.noResultsDesc': 'Try a different search term or category filter.',\n 'menu.itemForm.newTitle': 'New Menu Item',\n 'menu.itemForm.editTitle': 'Edit Menu Item',\n 'menu.itemForm.name': 'Item name',\n 'menu.itemForm.description': 'Description',\n 'menu.itemForm.price': 'Price',\n 'menu.itemForm.cost': 'Cost',\n 'menu.itemForm.category': 'Category',\n 'menu.itemForm.prepTime': 'Prep time (min)',\n 'menu.itemForm.image': 'Image URL',\n 'menu.itemForm.allergens': 'Allergens',\n 'menu.itemForm.dietaryTags': 'Dietary tags',\n 'menu.itemForm.availableForPos': 'Available for POS',\n 'menu.itemForm.availableForDelivery': 'Available for Delivery',\n 'menu.itemForm.deliveryPrice': 'Delivery price',\n 'menu.itemForm.isFeatured': 'Featured item',\n 'menu.itemForm.save': 'Save',\n 'menu.itemForm.cancel': 'Cancel',\n 'menu.itemForm.saving': 'Saving...',\n 'menu.categories.title': 'Categories',\n 'menu.categories.newCategory': 'New Category',\n 'menu.categories.name': 'Category name',\n 'menu.settings.title': 'Menu Settings',\n 'menu.settings.general': 'General',\n 'menu.settings.taxRate': 'Default tax rate',\n 'menu.settings.currency': 'Currency',\n 'menu.form.categoryName': 'Category name',\n 'menu.form.itemName': 'Item name',\n 'menu.form.description': 'Description',\n 'menu.form.category': 'Category',\n 'menu.form.uncategorized': 'Uncategorized',\n 'menu.form.optional': 'optional',\n 'menu.form.save': 'Save',\n 'menu.form.cancel': 'Cancel',\n}\n","export const ptBR: Record<string, string> = {\n 'menu.title': 'Cardápio',\n 'menu.nav.manager': 'Cardápio',\n 'menu.nav.categories': 'Categorias',\n 'menu.nav.items': 'Itens',\n 'menu.nav.modifiers': 'Modificadores',\n 'menu.manager.title': 'Gerenciar Cardápio',\n 'menu.manager.subtitle': 'Gerencie itens e categorias do cardápio',\n 'menu.manager.search': 'Buscar no cardápio...',\n 'menu.manager.allCategories': 'Todas as Categorias',\n 'menu.manager.newItem': 'Novo Item',\n 'menu.manager.noItems': 'Nenhum item no cardápio',\n 'menu.manager.noItemsDesc': 'Adicione o primeiro item para começar',\n 'menu.manager.addFirst': 'Adicionar primeiro item',\n 'menu.manager.available': 'Disponível',\n 'menu.manager.soldOut': 'Esgotado',\n 'menu.manager.hidden': 'Oculto',\n 'menu.manager.pos': 'PDV',\n 'menu.manager.delivery': 'Delivery',\n 'menu.manager.featured': 'Destaque',\n 'menu.manager.prepTime': 'Tempo de preparo',\n 'menu.manager.min': 'min',\n 'menu.manager.addCategory': 'Adicionar Categoria',\n 'menu.manager.addProduct': 'Adicionar Produto',\n 'menu.manager.item': 'Item',\n 'menu.manager.price': 'Preço',\n 'menu.manager.deliveryPrice': 'Delivery R$',\n 'menu.manager.itemsCount': '{{count}} itens',\n 'menu.manager.noResults': 'Nenhuma categoria ou item encontrado.',\n 'menu.manager.noResultsDesc': 'Tente um termo diferente ou filtro de categoria.',\n 'menu.itemForm.newTitle': 'Novo Item do Cardápio',\n 'menu.itemForm.editTitle': 'Editar Item do Cardápio',\n 'menu.itemForm.name': 'Nome do item',\n 'menu.itemForm.description': 'Descrição',\n 'menu.itemForm.price': 'Preço',\n 'menu.itemForm.cost': 'Custo',\n 'menu.itemForm.category': 'Categoria',\n 'menu.itemForm.prepTime': 'Tempo de preparo (min)',\n 'menu.itemForm.image': 'URL da imagem',\n 'menu.itemForm.allergens': 'Alérgenos',\n 'menu.itemForm.dietaryTags': 'Tags dietéticas',\n 'menu.itemForm.availableForPos': 'Disponível no PDV',\n 'menu.itemForm.availableForDelivery': 'Disponível para Delivery',\n 'menu.itemForm.deliveryPrice': 'Preço delivery',\n 'menu.itemForm.isFeatured': 'Item em destaque',\n 'menu.itemForm.save': 'Salvar',\n 'menu.itemForm.cancel': 'Cancelar',\n 'menu.itemForm.saving': 'Salvando...',\n 'menu.categories.title': 'Categorias',\n 'menu.categories.newCategory': 'Nova Categoria',\n 'menu.categories.name': 'Nome da categoria',\n 'menu.settings.title': 'Configurações do Cardápio',\n 'menu.settings.general': 'Geral',\n 'menu.settings.taxRate': 'Taxa padrão',\n 'menu.settings.currency': 'Moeda',\n 'menu.form.categoryName': 'Nome da categoria',\n 'menu.form.itemName': 'Nome do item',\n 'menu.form.description': 'Descrição',\n 'menu.form.category': 'Categoria',\n 'menu.form.uncategorized': 'Sem categoria',\n 'menu.form.optional': 'opcional',\n 'menu.form.save': 'Salvar',\n 'menu.form.cancel': 'Cancelar',\n}\n","import { en } from './en'\nimport { ptBR } from './pt-BR'\n\nexport const menuLocales: Record<string, Record<string, string>> = { en, 'pt-BR': ptBR }\n","import { createFayzClient, type FayzClientOptions, type FayzTableFilter } from '@fayz-ai/sdk'\nimport type {\n CreateMenuCategoryInput,\n CreateMenuItemInput,\n MenuCategory,\n MenuItem,\n MenuItemQuery,\n MenuItemStatus,\n MenuSummary,\n ModifierGroup,\n PaginatedResult,\n UpdateMenuItemInput,\n} from '../types'\nimport type { MenuDataProvider } from './types'\n\nexport interface FayzMenuProviderOptions extends FayzClientOptions {\n projectId?: string\n schema?: string\n runtime?: boolean\n categoriesTable?: string\n productsTable?: string\n categoryKind?: string\n}\n\ninterface CategoryRow {\n id: string\n tenant_id?: string | null\n kind?: string | null\n name: string\n slug?: string | null\n parent_id?: string | null\n icon?: string | null\n color?: string | null\n sort_order?: number | null\n is_active?: boolean | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n updated_at?: string | null\n}\n\ninterface ProductRow {\n id: string\n tenant_id?: string | null\n category_id?: string | null\n name: string\n description?: string | null\n sku?: string | null\n price?: number | string | null\n cost?: number | string | null\n currency?: string | null\n image_url?: string | null\n status?: string | null\n is_active?: boolean | null\n tags?: string[] | null\n metadata?: Record<string, unknown> | null\n created_at?: string | null\n updated_at?: string | null\n}\n\nconst DEFAULT_CATEGORY_KIND = 'menu_category'\nconst MENU_METADATA_KEY = 'fayzMenu'\n\nfunction nowIso(): string {\n return new Date().toISOString()\n}\n\nfunction slugify(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')\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 menuMetadata(row: ProductRow): Record<string, unknown> {\n const raw = row.metadata?.[MENU_METADATA_KEY]\n return raw && typeof raw === 'object' && !Array.isArray(raw) ? raw as Record<string, unknown> : {}\n}\n\nfunction rowToCategory(row: CategoryRow, itemCount = 0): MenuCategory {\n return {\n id: row.id,\n name: row.name,\n parentId: row.parent_id ?? undefined,\n icon: row.icon ?? undefined,\n color: row.color ?? undefined,\n sortOrder: row.sort_order ?? 0,\n isActive: row.is_active ?? true,\n itemCount,\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 rowToItem(row: ProductRow, categoryName?: string): MenuItem {\n const metadata = menuMetadata(row)\n const status = (metadata.status ?? row.status ?? 'available') as MenuItemStatus\n return {\n id: row.id,\n name: row.name,\n description: row.description ?? undefined,\n price: numberValue(row.price),\n cost: numberValue(row.cost),\n currency: row.currency ?? 'BRL',\n sku: row.sku ?? undefined,\n imageUrl: row.image_url ?? undefined,\n categoryId: row.category_id ?? undefined,\n categoryName,\n status,\n isActive: row.is_active ?? true,\n prepTimeMinutes: typeof metadata.prepTimeMinutes === 'number' ? metadata.prepTimeMinutes : undefined,\n allergens: Array.isArray(metadata.allergens) ? metadata.allergens as string[] : undefined,\n dietaryTags: Array.isArray(metadata.dietaryTags) ? metadata.dietaryTags as string[] : row.tags ?? undefined,\n availableForPos: typeof metadata.availableForPos === 'boolean' ? metadata.availableForPos : true,\n availableForDelivery: typeof metadata.availableForDelivery === 'boolean' ? metadata.availableForDelivery : true,\n deliveryPrice: typeof metadata.deliveryPrice === 'number' ? metadata.deliveryPrice : undefined,\n sortOrder: typeof metadata.sortOrder === 'number' ? metadata.sortOrder : 0,\n isFeatured: typeof metadata.isFeatured === 'boolean' ? metadata.isFeatured : false,\n modifierGroupIds: Array.isArray(metadata.modifierGroupIds) ? metadata.modifierGroupIds as string[] : 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 categoryPayload(input: CreateMenuCategoryInput, kind: string): Record<string, unknown> {\n return {\n kind,\n name: input.name,\n slug: slugify(input.name),\n parent_id: input.parentId ?? null,\n icon: input.icon ?? null,\n color: input.color ?? null,\n sort_order: input.sortOrder ?? 0,\n is_active: true,\n }\n}\n\nfunction itemMetadata(input: Partial<CreateMenuItemInput>, existing?: Record<string, unknown>): Record<string, unknown> {\n return {\n ...(existing ?? {}),\n [MENU_METADATA_KEY]: {\n ...((existing?.[MENU_METADATA_KEY] && typeof existing[MENU_METADATA_KEY] === 'object') ? existing[MENU_METADATA_KEY] as Record<string, unknown> : {}),\n status: input.status,\n prepTimeMinutes: input.prepTimeMinutes,\n allergens: input.allergens,\n dietaryTags: input.dietaryTags,\n availableForPos: input.availableForPos ?? true,\n availableForDelivery: input.availableForDelivery ?? true,\n deliveryPrice: input.deliveryPrice,\n isFeatured: input.isFeatured ?? false,\n modifierGroupIds: input.modifierGroupIds,\n },\n }\n}\n\nfunction itemCreatePayload(input: CreateMenuItemInput): Record<string, unknown> {\n return {\n name: input.name,\n description: input.description ?? null,\n price: input.price,\n cost: input.cost ?? null,\n currency: 'BRL',\n image_url: input.imageUrl ?? null,\n category_id: input.categoryId ?? null,\n status: input.status === 'hidden' ? 'archived' : 'active',\n is_active: input.status !== 'hidden',\n tags: input.dietaryTags ?? [],\n metadata: itemMetadata(input),\n }\n}\n\nfunction itemUpdatePayload(input: UpdateMenuItemInput, existing?: MenuItem): Record<string, unknown> {\n const payload: Record<string, unknown> = {}\n if (input.name !== undefined) payload.name = input.name\n if (input.description !== undefined) payload.description = input.description\n if (input.price !== undefined) payload.price = input.price\n if (input.cost !== undefined) payload.cost = input.cost\n if (input.imageUrl !== undefined) payload.image_url = input.imageUrl\n if (input.categoryId !== undefined) payload.category_id = input.categoryId\n if (input.status !== undefined) {\n payload.status = input.status === 'hidden' ? 'archived' : 'active'\n payload.is_active = input.status !== 'hidden'\n }\n if (input.dietaryTags !== undefined) payload.tags = input.dietaryTags\n payload.metadata = itemMetadata(input, existing?.metadata)\n return payload\n}\n\nfunction filtersFromQuery(query: MenuItemQuery): FayzTableFilter[] {\n const filters: FayzTableFilter[] = [{ column: 'is_active', operator: 'eq', value: true }]\n if (query.categoryId) filters.push({ column: 'category_id', operator: 'eq', value: query.categoryId })\n return filters\n}\n\nfunction matchesClientQuery(item: MenuItem, query: MenuItemQuery): boolean {\n if (query.status) {\n const statuses = Array.isArray(query.status) ? query.status : [query.status]\n if (!statuses.includes(item.status)) return false\n }\n if (query.availableForPos !== undefined && item.availableForPos !== query.availableForPos) return false\n if (query.availableForDelivery !== undefined && item.availableForDelivery !== query.availableForDelivery) return false\n if (query.isFeatured !== undefined && item.isFeatured !== query.isFeatured) return false\n if (query.search) {\n const search = query.search.toLowerCase()\n return item.name.toLowerCase().includes(search)\n || (item.description?.toLowerCase().includes(search) ?? false)\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 ?? 50\n const start = (currentPage - 1) * limit\n return { data: items.slice(start, start + limit), total: items.length }\n}\n\nexport function createFayzMenuProvider(options: FayzMenuProviderOptions = {}): MenuDataProvider {\n const client = createFayzClient(options)\n const projectId = options.projectId\n const schema = options.schema\n const runtime = options.runtime\n const categoriesTable = options.categoriesTable ?? 'categories'\n const productsTable = options.productsTable ?? 'products'\n const categoryKind = options.categoryKind ?? DEFAULT_CATEGORY_KIND\n\n const tableOptions = { projectId, schema, runtime }\n\n async function getCategoriesRaw(): Promise<CategoryRow[]> {\n const response = await client.data.listRows<CategoryRow>({\n ...tableOptions,\n table: categoriesTable,\n filters: [\n { column: 'kind', operator: 'eq', value: categoryKind },\n { column: 'is_active', operator: 'eq', value: true },\n ],\n sortColumn: 'sort_order',\n sortDirection: 'asc',\n limit: 500,\n })\n return response.rows\n }\n\n async function getItemsRaw(): Promise<ProductRow[]> {\n const response = await client.data.listRows<ProductRow>({\n ...tableOptions,\n table: productsTable,\n filters: [{ column: 'is_active', operator: 'eq', value: true }],\n sortColumn: 'name',\n sortDirection: 'asc',\n limit: 1000,\n })\n return response.rows.filter((row) => {\n const metadata = menuMetadata(row)\n return metadata.kind === 'menu_item' || metadata.status != null || row.category_id != null\n })\n }\n\n async function getCategoryMap() {\n const categories = await getCategoriesRaw()\n return new Map(categories.map((category) => [category.id, category]))\n }\n\n async function getItems(): Promise<MenuItem[]> {\n const [rows, categoryMap] = await Promise.all([getItemsRaw(), getCategoryMap()])\n return rows.map((row) => rowToItem(row, row.category_id ? categoryMap.get(row.category_id)?.name : undefined))\n .sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name))\n }\n\n return {\n async getCategories() {\n const [categories, items] = await Promise.all([getCategoriesRaw(), getItemsRaw()])\n const counts = new Map<string, number>()\n for (const item of items) {\n if (item.category_id) counts.set(item.category_id, (counts.get(item.category_id) ?? 0) + 1)\n }\n return categories.map((category) => rowToCategory(category, counts.get(category.id) ?? 0))\n },\n\n async getCategoryById(id: string) {\n const response = await client.data.listRows<CategoryRow>({\n ...tableOptions,\n table: categoriesTable,\n filters: [{ column: 'id', operator: 'eq', value: id }],\n limit: 1,\n })\n return response.rows[0] ? rowToCategory(response.rows[0]) : null\n },\n\n async createCategory(input: CreateMenuCategoryInput) {\n const row = await client.data.createRow<CategoryRow>({\n ...tableOptions,\n table: categoriesTable,\n row: categoryPayload(input, categoryKind),\n })\n return rowToCategory(row)\n },\n\n async updateCategory(id: string, data: Partial<MenuCategory>) {\n const row = await client.data.updateRow<CategoryRow>({\n ...tableOptions,\n table: categoriesTable,\n primaryKeys: { id },\n row: {\n name: data.name,\n parent_id: data.parentId,\n icon: data.icon,\n color: data.color,\n sort_order: data.sortOrder,\n is_active: data.isActive,\n },\n })\n return rowToCategory(row)\n },\n\n async deleteCategory(id: string) {\n await client.data.updateRow<CategoryRow>({\n ...tableOptions,\n table: categoriesTable,\n primaryKeys: { id },\n row: { is_active: false },\n })\n },\n\n async reorderCategories(ids: string[]) {\n await Promise.all(ids.map((id, sortOrder) => this.updateCategory(id, { sortOrder })))\n },\n\n async getMenuItems(query: MenuItemQuery) {\n const items = (await getItems()).filter((item) => matchesClientQuery(item, query))\n return paginate(items, query.page, query.pageSize)\n },\n\n async getMenuItemById(id: string) {\n const response = await client.data.listRows<ProductRow>({\n ...tableOptions,\n table: productsTable,\n filters: [{ column: 'id', operator: 'eq', value: id }],\n limit: 1,\n })\n if (!response.rows[0]) return null\n const categoryMap = await getCategoryMap()\n const row = response.rows[0]\n return rowToItem(row, row.category_id ? categoryMap.get(row.category_id)?.name : undefined)\n },\n\n async createMenuItem(input: CreateMenuItemInput) {\n const row = await client.data.createRow<ProductRow>({\n ...tableOptions,\n table: productsTable,\n row: itemCreatePayload(input),\n })\n const categoryMap = await getCategoryMap()\n return rowToItem(row, row.category_id ? categoryMap.get(row.category_id)?.name : undefined)\n },\n\n async updateMenuItem(id: string, data: UpdateMenuItemInput) {\n const existing = await this.getMenuItemById(id)\n const row = await client.data.updateRow<ProductRow>({\n ...tableOptions,\n table: productsTable,\n primaryKeys: { id },\n row: itemUpdatePayload(data, existing ?? undefined),\n })\n const categoryMap = await getCategoryMap()\n return rowToItem(row, row.category_id ? categoryMap.get(row.category_id)?.name : undefined)\n },\n\n async deleteMenuItem(id: string) {\n await client.data.updateRow<ProductRow>({\n ...tableOptions,\n table: productsTable,\n primaryKeys: { id },\n row: { is_active: false },\n })\n },\n\n async toggleAvailability(id: string, field: 'status' | 'availableForPos' | 'availableForDelivery', value: unknown) {\n return this.updateMenuItem(id, { [field]: value } as UpdateMenuItemInput)\n },\n\n async reorderItems(categoryId: string, ids: string[]) {\n await Promise.all(ids.map(async (id, sortOrder) => {\n const existing = await this.getMenuItemById(id)\n await client.data.updateRow<ProductRow>({\n ...tableOptions,\n table: productsTable,\n primaryKeys: { id },\n row: { metadata: itemMetadata({ categoryId }, { ...existing?.metadata, [MENU_METADATA_KEY]: { ...existing?.metadata?.[MENU_METADATA_KEY] as Record<string, unknown>, sortOrder } }) },\n })\n }))\n },\n\n async getModifierGroups(): Promise<ModifierGroup[]> {\n return []\n },\n\n async createModifierGroup(): Promise<ModifierGroup> {\n throw new Error('Menu modifier groups require a dedicated Fayz table/broker contract.')\n },\n\n async updateModifierGroup(): Promise<ModifierGroup> {\n throw new Error('Menu modifier groups require a dedicated Fayz table/broker contract.')\n },\n\n async deleteModifierGroup(): Promise<void> {\n throw new Error('Menu modifier groups require a dedicated Fayz table/broker contract.')\n },\n\n async getSummary(): Promise<MenuSummary> {\n const [items, categories] = await Promise.all([getItems(), this.getCategories()])\n const prices = items.filter((item) => item.price > 0).map((item) => item.price)\n return {\n totalItems: items.length,\n availableItems: items.filter((item) => item.status === 'available').length,\n soldOutItems: items.filter((item) => item.status === 'sold_out').length,\n hiddenItems: items.filter((item) => item.status === 'hidden').length,\n categoryCount: categories.length,\n averagePrice: prices.length ? prices.reduce((sum, price) => sum + price, 0) / prices.length : 0,\n featuredCount: items.filter((item) => item.isFeatured).length,\n }\n },\n }\n}\n","import React from 'react'\nimport type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core'\nimport { registerTranslations } from '@fayz-ai/core'\nimport type { EntityLookup } from '@fayz-ai/saas'\nimport type { MenuDataProvider } from './data/types'\nimport { createMockMenuProvider } from './data/mock'\nimport { createMenuStore } from './store'\nimport { menuRegistries } from './registries'\nimport { menuLocales } from './locales'\nimport { PluginSettingsPanel } from '@fayz-ai/saas'\n\n// Lazy import page to avoid circular dependency issues\nconst MenuPage = React.lazy(() => import('./MenuPage').then((m) => ({ default: m.MenuPage })))\n\n// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface MenuPluginLabels {\n pageTitle: string\n menuManager: string\n categories: string\n newItem: string\n}\n\nconst DEFAULT_LABELS: MenuPluginLabels = {\n pageTitle: 'Menu',\n menuManager: 'Menu Manager',\n categories: 'Categories',\n newItem: 'New Item',\n}\n\n// ---------------------------------------------------------------------------\n// Currency\n// ---------------------------------------------------------------------------\n\nconst DEFAULT_CURRENCY = { code: 'BRL', locale: 'pt-BR', symbol: 'R$' }\n\n// ---------------------------------------------------------------------------\n// Options\n// ---------------------------------------------------------------------------\n\nexport interface MenuPluginOptions {\n modules?: {\n modifiers?: boolean\n deliveryPricing?: boolean\n }\n labels?: Partial<MenuPluginLabels>\n currency?: { code?: string; locale?: string; symbol?: string }\n navPosition?: number\n navSection?: 'main' | 'secondary' | 'settings'\n scope?: PluginScope\n verticalId?: VerticalId\n dataProvider?: MenuDataProvider\n menuItemLookup?: EntityLookup\n}\n\n// ---------------------------------------------------------------------------\n// Config resolver\n// ---------------------------------------------------------------------------\n\nfunction resolveConfig(options?: MenuPluginOptions) {\n return {\n modules: {\n modifiers: options?.modules?.modifiers !== false,\n deliveryPricing: options?.modules?.deliveryPricing === true,\n },\n labels: { ...DEFAULT_LABELS, ...options?.labels },\n currency: { ...DEFAULT_CURRENCY, ...options?.currency },\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function createMenuPlugin(options?: MenuPluginOptions): PluginManifest {\n const config = resolveConfig(options)\n registerTranslations(menuLocales)\n const provider = options?.dataProvider ?? createMockMenuProvider()\n const store = createMenuStore(provider)\n\n const PageComponent: React.FC<any> = () =>\n React.createElement(React.Suspense, { fallback: null },\n React.createElement(MenuPage, { config, provider, store, registries: menuRegistries })\n )\n\n return {\n id: 'menu',\n name: config.labels.pageTitle,\n icon: 'UtensilsCrossed',\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 ?? 5,\n label: config.labels.pageTitle,\n route: '/menu',\n icon: 'UtensilsCrossed',\n permission: { feature: 'menu', action: 'read' as const },\n },\n ],\n routes: [\n {\n path: '/menu',\n component: PageComponent,\n permission: { feature: 'menu', action: 'read' as const },\n },\n ],\n widgets: [],\n aiTools: [\n {\n id: 'menu.list-items',\n name: 'listMenuItems',\n description: 'Lists menu items, optionally filtered by category or status.',\n icon: 'UtensilsCrossed',\n mode: 'read' as const,\n category: 'Menu',\n parameters: {\n type: 'object' as const,\n properties: {\n category: { type: 'string' as const, description: 'Category name to filter by' },\n status: { type: 'string' as const, enum: ['available', 'sold_out', 'hidden'] },\n },\n },\n suggestions: [\n { label: 'What items are on the menu?' },\n { label: 'Which items are sold out right now?' },\n ],\n },\n {\n id: 'menu.toggle-availability',\n name: 'toggleMenuItemAvailability',\n description: 'Marks a menu item as available or sold out.',\n icon: 'ToggleLeft',\n mode: 'persist' as const,\n category: 'Menu',\n parameters: {\n type: 'object' as const,\n properties: {\n itemName: { type: 'string' as const, description: 'Menu item name' },\n status: { type: 'string' as const, enum: ['available', 'sold_out'] },\n },\n required: ['itemName', 'status'],\n },\n permission: { feature: 'menu', action: 'edit' as const },\n },\n ],\n registries: menuRegistries,\n settings: [\n {\n id: 'menu',\n label: config.labels.pageTitle,\n icon: 'UtensilsCrossed',\n component: (() => {\n const MenuSettingsTab: React.ComponentType<unknown> = () =>\n React.createElement(PluginSettingsPanel, {\n title: 'Menu Settings',\n subtitle: 'Categories, allergens, and modifiers',\n registries: menuRegistries,\n routeBase: '/settings/menu',\n })\n MenuSettingsTab.displayName = 'MenuSettingsTab'\n return MenuSettingsTab\n })(),\n order: 20,\n permission: { feature: 'menu', action: 'read' as const },\n },\n ],\n locales: menuLocales,\n }\n}\n\nexport type { MenuDataProvider } from './data/types'\nexport { createFayzMenuProvider } from './data/fayz'\nexport type { FayzMenuProviderOptions } from './data/fayz'\nexport type { ResolvedMenuConfig } from './MenuContext'\n// Domain types — public so any host can implement a MenuDataProvider (e.g. an\n// app-local Supabase provider during plugin incubation).\nexport type * from './types'\n"]}
@@ -0,0 +1,34 @@
1
+ import type { PluginManifest, PluginScope, VerticalId } from '@fayz-ai/core';
2
+ import type { EntityLookup } from '@fayz-ai/saas';
3
+ import type { MenuDataProvider } from './data/types';
4
+ export interface MenuPluginLabels {
5
+ pageTitle: string;
6
+ menuManager: string;
7
+ categories: string;
8
+ newItem: string;
9
+ }
10
+ export interface MenuPluginOptions {
11
+ modules?: {
12
+ modifiers?: boolean;
13
+ deliveryPricing?: boolean;
14
+ };
15
+ labels?: Partial<MenuPluginLabels>;
16
+ currency?: {
17
+ code?: string;
18
+ locale?: string;
19
+ symbol?: string;
20
+ };
21
+ navPosition?: number;
22
+ navSection?: 'main' | 'secondary' | 'settings';
23
+ scope?: PluginScope;
24
+ verticalId?: VerticalId;
25
+ dataProvider?: MenuDataProvider;
26
+ menuItemLookup?: EntityLookup;
27
+ }
28
+ export declare function createMenuPlugin(options?: MenuPluginOptions): PluginManifest;
29
+ export type { MenuDataProvider } from './data/types';
30
+ export { createFayzMenuProvider } from './data/fayz';
31
+ export type { FayzMenuProviderOptions } from './data/fayz';
32
+ export type { ResolvedMenuConfig } from './MenuContext';
33
+ export type * from './types';
34
+ //# 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;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAcpD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB;AAmBD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,eAAe,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;IACD,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9D,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,gBAAgB,CAAA;IAC/B,cAAc,CAAC,EAAE,YAAY,CAAA;CAC9B;AAqBD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAmG5E;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD,mBAAmB,SAAS,CAAA"}