@fayz-ai/plugin-menu 0.9.3 → 0.10.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 (52) hide show
  1. package/dist/MenuPage-2LLWRJGN.js +1785 -0
  2. package/dist/MenuPage-2LLWRJGN.js.map +1 -0
  3. package/dist/chunk-C6W53TML.js +65 -0
  4. package/dist/chunk-C6W53TML.js.map +1 -0
  5. package/dist/components/DraftSectionCard.d.ts +18 -0
  6. package/dist/components/DraftSectionCard.d.ts.map +1 -0
  7. package/dist/components/ItemRailPage.d.ts +36 -0
  8. package/dist/components/ItemRailPage.d.ts.map +1 -0
  9. package/dist/components/MenuPreview.d.ts +17 -0
  10. package/dist/components/MenuPreview.d.ts.map +1 -0
  11. package/dist/components/MenuRailPage.d.ts +17 -0
  12. package/dist/components/MenuRailPage.d.ts.map +1 -0
  13. package/dist/components/ScheduleEditor.d.ts +8 -0
  14. package/dist/components/ScheduleEditor.d.ts.map +1 -0
  15. package/dist/components/SectionCard.d.ts +32 -0
  16. package/dist/components/SectionCard.d.ts.map +1 -0
  17. package/dist/data/legacy-adapter.d.ts +4 -0
  18. package/dist/data/legacy-adapter.d.ts.map +1 -0
  19. package/dist/data/mock.d.ts +2 -2
  20. package/dist/data/mock.d.ts.map +1 -1
  21. package/dist/data/registries.d.ts.map +1 -1
  22. package/dist/data/supabase.d.ts +7 -0
  23. package/dist/data/supabase.d.ts.map +1 -0
  24. package/dist/data/tables.d.ts +17 -0
  25. package/dist/data/tables.d.ts.map +1 -0
  26. package/dist/data/types.d.ts +36 -2
  27. package/dist/data/types.d.ts.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2150 -356
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/agent-surface.d.ts +46 -0
  32. package/dist/lib/agent-surface.d.ts.map +1 -0
  33. package/dist/lib/availability.d.ts +16 -0
  34. package/dist/lib/availability.d.ts.map +1 -0
  35. package/dist/lib/extract-parse.d.ts +16 -0
  36. package/dist/lib/extract-parse.d.ts.map +1 -0
  37. package/dist/lib/extract-transport.d.ts +10 -0
  38. package/dist/lib/extract-transport.d.ts.map +1 -0
  39. package/dist/lib/images.d.ts +7 -0
  40. package/dist/lib/images.d.ts.map +1 -0
  41. package/dist/locales/en.d.ts.map +1 -1
  42. package/dist/locales/pt-BR.d.ts.map +1 -1
  43. package/dist/migrations/index.d.ts +8 -0
  44. package/dist/migrations/index.d.ts.map +1 -0
  45. package/dist/store.d.ts +46 -10
  46. package/dist/store.d.ts.map +1 -1
  47. package/dist/types.d.ts +151 -2
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/views/MenuManagerView.d.ts.map +1 -1
  50. package/package.json +15 -9
  51. package/dist/MenuPage-ZNKKQJKD.js +0 -523
  52. package/dist/MenuPage-ZNKKQJKD.js.map +0 -1
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import type { MenuItem, MenuItemStatus, MenuSection } from '../types';
3
+ export interface ItemFormValues {
4
+ name: string;
5
+ description?: string;
6
+ price: number;
7
+ cost?: number;
8
+ deliveryPrice?: number;
9
+ prepTimeMinutes?: number;
10
+ imageUrl?: string;
11
+ status: MenuItemStatus;
12
+ availableForPos: boolean;
13
+ availableForDelivery: boolean;
14
+ isFeatured: boolean;
15
+ sectionId: string;
16
+ /** Price for THIS menu only. Undefined = use the item's price. */
17
+ priceOverride?: number;
18
+ }
19
+ export declare function ItemRailPage({ open, item, sections, sectionId, currency, deliveryPricing, multiMenu, priceOverride, onClose, onSubmit, onUploadImage, }: {
20
+ open: boolean;
21
+ item?: MenuItem;
22
+ sections: MenuSection[];
23
+ sectionId: string;
24
+ currency: {
25
+ code: string;
26
+ locale: string;
27
+ symbol: string;
28
+ };
29
+ deliveryPricing: boolean;
30
+ multiMenu: boolean;
31
+ priceOverride?: number;
32
+ onClose: () => void;
33
+ onSubmit: (values: ItemFormValues) => Promise<void>;
34
+ onUploadImage?: (file: File) => Promise<string | null>;
35
+ }): React.JSX.Element;
36
+ //# sourceMappingURL=ItemRailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemRailPage.d.ts","sourceRoot":"","sources":["../../src/components/ItemRailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAOlD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAWrE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,cAAc,CAAA;IACtB,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EACrE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,GAChD,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CACvD,qBA4NA"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { Menu, MenuItem, MenuPlacement, MenuSection } from '../types';
3
+ export declare function MenuPreview({ open, menu, sections, placements, itemsById, currency, locale, onClose }: {
4
+ open: boolean;
5
+ menu?: Menu;
6
+ sections: MenuSection[];
7
+ placements: MenuPlacement[];
8
+ itemsById: Map<string, MenuItem>;
9
+ currency: {
10
+ code: string;
11
+ locale: string;
12
+ symbol: string;
13
+ };
14
+ locale: string;
15
+ onClose: () => void;
16
+ }): React.JSX.Element;
17
+ //# sourceMappingURL=MenuPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuPreview.d.ts","sourceRoot":"","sources":["../../src/components/MenuPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAW1E,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IACtG,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAChC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,qBAyDA"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { Menu, MenuAvailability, MenuChannel } from '../types';
3
+ export declare function MenuRailPage({ open, menu, locale, onClose, onSubmit }: {
4
+ open: boolean;
5
+ /** Undefined = creating. */
6
+ menu?: Menu;
7
+ locale: string;
8
+ onClose: () => void;
9
+ onSubmit: (values: {
10
+ name: string;
11
+ description?: string;
12
+ channels: MenuChannel[];
13
+ availability: MenuAvailability;
14
+ isActive: boolean;
15
+ }) => Promise<void>;
16
+ }): React.JSX.Element;
17
+ //# sourceMappingURL=MenuRailPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuRailPage.d.ts","sourceRoot":"","sources":["../../src/components/MenuRailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAKlD,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAanE,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IACtE,IAAI,EAAE,OAAO,CAAA;IACb,4BAA4B;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,WAAW,EAAE,CAAA;QACvB,YAAY,EAAE,gBAAgB,CAAA;QAC9B,QAAQ,EAAE,OAAO,CAAA;KAClB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB,qBA2GA"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { MenuAvailability } from '../types';
3
+ export declare function ScheduleEditor({ value, onChange, locale }: {
4
+ value: MenuAvailability;
5
+ onChange: (next: MenuAvailability) => void;
6
+ locale: string;
7
+ }): React.JSX.Element;
8
+ //# sourceMappingURL=ScheduleEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScheduleEditor.d.ts","sourceRoot":"","sources":["../../src/components/ScheduleEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAiBhD,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;IAC1D,KAAK,EAAE,gBAAgB,CAAA;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;CACf,qBAkFA"}
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import type { MenuItem, MenuItemStatus, MenuPlacement, MenuSection } from '../types';
3
+ export interface SectionHandlers {
4
+ onRenameSection: (sectionId: string, name: string) => void;
5
+ onEditSection: (section: MenuSection) => void;
6
+ onDeleteSection: (section: MenuSection) => void;
7
+ onAddItem: (sectionId: string) => void;
8
+ onEditItem: (item: MenuItem, placement: MenuPlacement) => void;
9
+ onDuplicateItem: (item: MenuItem, sectionId: string) => void;
10
+ onRemoveFromMenu: (placement: MenuPlacement) => void;
11
+ onDeleteItem: (item: MenuItem) => void;
12
+ onToggleItem: (itemId: string, field: 'availableForPos' | 'availableForDelivery' | 'isFeatured', value: boolean) => void;
13
+ onSetItemStatus: (itemId: string, status: MenuItemStatus) => void;
14
+ onSetPlacementPrice: (placementId: string, price: number | undefined) => void;
15
+ }
16
+ export declare function SectionCard({ section, placements, itemsById, currency, locale, deliveryPricing, multiMenu, pendingIds, handlers, }: {
17
+ section: MenuSection;
18
+ placements: MenuPlacement[];
19
+ itemsById: Map<string, MenuItem>;
20
+ currency: {
21
+ code: string;
22
+ locale: string;
23
+ symbol: string;
24
+ };
25
+ locale: string;
26
+ deliveryPricing: boolean;
27
+ multiMenu: boolean;
28
+ /** Ids of rows already on screen whose write has not landed. */
29
+ pendingIds?: string[];
30
+ handlers: SectionHandlers;
31
+ }): React.JSX.Element;
32
+ //# sourceMappingURL=SectionCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionCard.d.ts","sourceRoot":"","sources":["../../src/components/SectionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAYvC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAUpF,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1D,aAAa,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC7C,eAAe,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAC/C,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAA;IAC9D,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5D,gBAAgB,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAA;IACpD,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAA;IACtC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,sBAAsB,GAAG,YAAY,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IACjE,mBAAmB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAA;CAC9E;AAkLD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,GACnG,EAAE;IACD,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAChC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;CAC1B,qBAkIA"}
@@ -0,0 +1,4 @@
1
+ import type { MenuDataProvider, FullMenuDataProvider } from './types';
2
+ export declare const LEGACY_MENU_ID = "__default__";
3
+ export declare function wrapLegacyProvider(provider: MenuDataProvider): FullMenuDataProvider;
4
+ //# sourceMappingURL=legacy-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-adapter.d.ts","sourceRoot":"","sources":["../../src/data/legacy-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAarE,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAU3C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB,CA+InF"}
@@ -1,3 +1,3 @@
1
- import type { MenuDataProvider } from './types';
2
- export declare function createMockMenuProvider(): MenuDataProvider;
1
+ import type { FullMenuDataProvider } from './types';
2
+ export declare function createMockMenuProvider(): FullMenuDataProvider;
3
3
  //# sourceMappingURL=mock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAqG/C,wBAAgB,sBAAsB,IAAI,gBAAgB,CA2LzD"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/data/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AA0BnD,wBAAgB,sBAAsB,IAAI,oBAAoB,CAyX7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/data/registries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AA8CtD,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAqC7C,CAAA"}
1
+ {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/data/registries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AA+CtD,eAAO,MAAM,cAAc,EAAE,iBAAiB,EAqC7C,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { FullMenuDataProvider } from './types';
2
+ export interface SupabaseMenuProviderOptions {
3
+ /** Currency code stamped on items — display only. */
4
+ currencyCode?: string;
5
+ }
6
+ export declare function createSupabaseMenuProvider(options?: SupabaseMenuProviderOptions): FullMenuDataProvider;
7
+ //# sourceMappingURL=supabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AA+GnD,MAAM,WAAW,2BAA2B;IAC1C,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,oBAAoB,CAuetG"}
@@ -0,0 +1,17 @@
1
+ export declare const T: {
2
+ readonly menus: "plg_menu_menus";
3
+ readonly sections: "plg_menu_sections";
4
+ readonly placements: "plg_menu_placements";
5
+ readonly items: "plg_menu_items";
6
+ readonly allergens: "plg_menu_allergens";
7
+ readonly dietaryTags: "plg_menu_dietary_tags";
8
+ readonly modifierGroups: "plg_menu_modifier_groups";
9
+ readonly modifiers: "plg_menu_modifiers";
10
+ readonly itemModifierGroups: "plg_menu_item_modifier_groups";
11
+ /** Spine tables this plugin reads/writes through. */
12
+ readonly products: "products";
13
+ readonly categories: "categories";
14
+ /** Bucket for item, section and import photos. */
15
+ readonly mediaBucket: "menu-images";
16
+ };
17
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../src/data/tables.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,CAAC;;;;;;;;;;IAUZ,qDAAqD;;;IAGrD,kDAAkD;;CAE1C,CAAA"}
@@ -1,5 +1,35 @@
1
- import type { MenuCategory, MenuItem, ModifierGroup, CreateMenuItemInput, UpdateMenuItemInput, CreateMenuCategoryInput, MenuItemQuery, PaginatedResult, MenuSummary } from '../types';
1
+ import type { Menu, MenuSection, MenuPlacement, MenuCategory, MenuItem, ModifierGroup, CreateMenuInput, UpdateMenuInput, CreateSectionInput, UpdateSectionInput, PlaceItemInput, CreateMenuItemInput, UpdateMenuItemInput, CreateMenuCategoryInput, MenuItemQuery, PaginatedResult, MenuSummary } from '../types';
2
+ /**
3
+ * What a host must implement to back the menu screen.
4
+ *
5
+ * The MENU half (menus / sections / placements) is optional on purpose. A host
6
+ * that predates it — an app-local provider written while this plugin was
7
+ * incubating — keeps working: `wrapLegacyProvider` presents its flat categories
8
+ * as one menu, so the UI has a single shape to render and the app is not forced
9
+ * to migrate on the same day the plugin ships.
10
+ */
2
11
  export interface MenuDataProvider {
12
+ getMenus?(): Promise<Menu[]>;
13
+ createMenu?(input: CreateMenuInput): Promise<Menu>;
14
+ updateMenu?(id: string, data: UpdateMenuInput): Promise<Menu>;
15
+ deleteMenu?(id: string): Promise<void>;
16
+ /** Copy a menu with its sections and placements — how a weekend menu is born. */
17
+ duplicateMenu?(id: string, name: string): Promise<Menu>;
18
+ reorderMenus?(ids: string[]): Promise<void>;
19
+ getSections?(menuId: string): Promise<MenuSection[]>;
20
+ createSection?(input: CreateSectionInput): Promise<MenuSection>;
21
+ updateSection?(id: string, data: UpdateSectionInput): Promise<MenuSection>;
22
+ deleteSection?(id: string): Promise<void>;
23
+ reorderSections?(menuId: string, ids: string[]): Promise<void>;
24
+ getPlacements?(menuId: string): Promise<MenuPlacement[]>;
25
+ placeItem?(input: PlaceItemInput): Promise<MenuPlacement>;
26
+ updatePlacement?(id: string, data: Partial<PlaceItemInput>): Promise<MenuPlacement>;
27
+ removePlacement?(id: string): Promise<void>;
28
+ /** Ids in their new order, within one section. */
29
+ reorderPlacements?(sectionId: string, placementIds: string[]): Promise<void>;
30
+ /** Cross-section drag: same item, another section, at `toIndex`. */
31
+ movePlacement?(placementId: string, toSectionId: string, toIndex: number): Promise<void>;
32
+ uploadImage?(file: File, kind: 'item' | 'section' | 'menu' | 'import'): Promise<string>;
3
33
  getCategories(): Promise<MenuCategory[]>;
4
34
  getCategoryById(id: string): Promise<MenuCategory | null>;
5
35
  createCategory(input: CreateMenuCategoryInput): Promise<MenuCategory>;
@@ -11,7 +41,7 @@ export interface MenuDataProvider {
11
41
  createMenuItem(input: CreateMenuItemInput): Promise<MenuItem>;
12
42
  updateMenuItem(id: string, data: UpdateMenuItemInput): Promise<MenuItem>;
13
43
  deleteMenuItem(id: string): Promise<void>;
14
- toggleAvailability(id: string, field: 'status' | 'availableForPos' | 'availableForDelivery', value: any): Promise<MenuItem>;
44
+ toggleAvailability(id: string, field: 'status' | 'availableForPos' | 'availableForDelivery' | 'isFeatured', value: any): Promise<MenuItem>;
15
45
  reorderItems(categoryId: string, ids: string[]): Promise<void>;
16
46
  getModifierGroups(): Promise<ModifierGroup[]>;
17
47
  createModifierGroup(input: Partial<ModifierGroup>): Promise<ModifierGroup>;
@@ -19,4 +49,8 @@ export interface MenuDataProvider {
19
49
  deleteModifierGroup(id: string): Promise<void>;
20
50
  getSummary(): Promise<MenuSummary>;
21
51
  }
52
+ /** A provider with the menu half guaranteed — what the store and UI talk to. */
53
+ export type FullMenuDataProvider = MenuDataProvider & Required<Pick<MenuDataProvider, 'getMenus' | 'createMenu' | 'updateMenu' | 'deleteMenu' | 'duplicateMenu' | 'reorderMenus' | 'getSections' | 'createSection' | 'updateSection' | 'deleteSection' | 'reorderSections' | 'getPlacements' | 'placeItem' | 'updatePlacement' | 'removePlacement' | 'reorderPlacements' | 'movePlacement'>>;
54
+ /** Does this host know about menus, or only about a flat list of categories? */
55
+ export declare function supportsMenus(provider: MenuDataProvider): boolean;
22
56
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAAE,QAAQ,EAAE,aAAa,EACrC,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EACjE,aAAa,EAAE,eAAe,EAAE,WAAW,EAC5C,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,gBAAgB;IAE/B,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;IACxC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;IACzD,cAAc,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACrE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9E,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAG/C,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAA;IACtE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IACrD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7D,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxE,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,iBAAiB,GAAG,sBAAsB,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3H,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAG9D,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAC7C,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAC1E,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACrF,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAG9C,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"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"}
@@ -1 +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,gBAAgB,CAAA;AAClD,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,CA0G5E;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,mBAAmB,SAAS,CAAA"}
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,gBAAgB,CAAA;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAiBpD,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,CAqI5E;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,mBAAmB,SAAS,CAAA"}