@feedmepos/mf-menu-portal 0.0.0-stage → 1.0.1-dev.1

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 (263) hide show
  1. package/README.md +30 -2
  2. package/dist/AddPriceGroupDialog.vue_vue_type_script_setup_true_lang-DhKyG3gY.js +20 -0
  3. package/dist/App-C6k--u1c.js +8316 -0
  4. package/dist/ApplyProduct.vue_vue_type_script_setup_true_lang-C9OSr8ft.js +98 -0
  5. package/dist/BindingLinkDialog.vue_vue_type_script_setup_true_lang-BZVQRyRI.js +180 -0
  6. package/dist/BindingTable.vue_vue_type_script_setup_true_lang-DBzjWI_6.js +179 -0
  7. package/dist/Catalog-DEYN4dMN.js +374 -0
  8. package/dist/CatalogBinding-NnPKdPvx.js +315 -0
  9. package/dist/CatalogEditTabs.vue_vue_type_script_setup_true_lang-OshqaPTE.js +97 -0
  10. package/dist/CatalogEditor.vue_vue_type_script_setup_true_lang-poznuDXu.js +447 -0
  11. package/dist/CatalogLinkProductAction.vue_vue_type_script_setup_true_lang-BSMAIkQ2.js +117 -0
  12. package/dist/Category-BdUP0o34.js +13 -0
  13. package/dist/Category-CkQiwP9e.js +52 -0
  14. package/dist/CategoryList.vue_vue_type_script_setup_true_lang-UgNVpYgp.js +797 -0
  15. package/dist/CookingGuide-CtDkm74r.js +842 -0
  16. package/dist/FormItem.vue_vue_type_script_setup_true_lang-C2S6QCyR.js +26 -0
  17. package/dist/FormSection.vue_vue_type_script_setup_true_lang-pY-_msnM.js +1774 -0
  18. package/dist/Group-D2HngOjr.js +52 -0
  19. package/dist/Group-DSj7_16V.js +13 -0
  20. package/dist/GroupList.vue_vue_type_script_setup_true_lang-BmmsSKTt.js +2183 -0
  21. package/dist/Ingredient-BHqz7kjQ.js +463 -0
  22. package/dist/LinkProductSideSheet.vue_vue_type_script_setup_true_lang-D9jK-Fhn.js +709 -0
  23. package/dist/ListCountTag.vue_vue_type_script_setup_true_lang-0bjk8Aly.js +15 -0
  24. package/dist/MenuSetting-DF-cJH7N.js +1228 -0
  25. package/dist/OrderPacing-CejS9dEI.js +698 -0
  26. package/dist/OrderPacingFields.vue_vue_type_script_setup_true_lang-C2mixGUk.js +55 -0
  27. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-B3szUH39.js +41 -0
  28. package/dist/Preview-1C7jGJuY.js +327 -0
  29. package/dist/PriceTierNotice.vue_vue_type_script_setup_true_lang-CxKHCptJ.js +26 -0
  30. package/dist/PrintRoute-BNnMcgTf.js +473 -0
  31. package/dist/Product-BoUKxogB.js +44 -0
  32. package/dist/ProductChipSummary.vue_vue_type_script_setup_true_lang-D8DygCBl.js +110 -0
  33. package/dist/ProductEditorHost.vue_vue_type_script_setup_true_lang-Bm8_FTvr.js +83 -0
  34. package/dist/ProductFilterMenu.vue_vue_type_script_setup_true_lang-Cgc0Ms_n.js +101 -0
  35. package/dist/ProductGroupCreateSheet.vue_vue_type_script_setup_true_lang-Cx_mW05R.js +1246 -0
  36. package/dist/ProductImageEditorDialog.vue_vue_type_script_setup_true_lang-CUeYaXYg.js +1955 -0
  37. package/dist/ProductInlineCreateHost.vue_vue_type_script_setup_true_lang-CeYyZX7g.js +5401 -0
  38. package/dist/ProductInternalTools-b3sy8bWy.js +2147 -0
  39. package/dist/ProductInventoryDialog-DO0D8e3Z.js +4 -0
  40. package/dist/ProductInventoryDialog.vue_vue_type_script_setup_true_lang-y9Mz__o9.js +187 -0
  41. package/dist/ProductList.vue_vue_type_script_setup_true_lang-n_UYIwwt.js +10353 -0
  42. package/dist/ProductVariantTranslationSheet.vue_vue_type_script_setup_true_lang-ClG3Prfm.js +218 -0
  43. package/dist/Products-7vlFJB0P.js +155 -0
  44. package/dist/Publish-DTP-CgV-.js +1261 -0
  45. package/dist/Recipe-C1W8_15H.js +350 -0
  46. package/dist/Scheduler-JRjozwP_.js +637 -0
  47. package/dist/ServingSequence-BGT5m7JB.js +336 -0
  48. package/dist/Setting-CS_M1gMN.js +173 -0
  49. package/dist/Subcategory-Cgy9CQCz.js +412 -0
  50. package/dist/Takeaway-Bpo9XA-j.js +48 -0
  51. package/dist/Takeaway-DO2dmFGP.js +13 -0
  52. package/dist/TakeawayList.vue_vue_type_script_setup_true_lang-C7KexF7H.js +554 -0
  53. package/dist/TranslationLanguageSelector.vue_vue_type_script_setup_true_lang-BJZ6VcrT.js +161 -0
  54. package/dist/TranslationSideSheet.vue_vue_type_script_setup_true_lang-B0j2PNih.js +158 -0
  55. package/dist/TranslationViewChip.vue_vue_type_script_setup_true_lang-CAkLEmSA.js +69 -0
  56. package/dist/TreeEditorOpenner.vue_vue_type_script_setup_true_lang-BHxmPO7F.js +1213 -0
  57. package/dist/Unit-Bn5UzMp1.js +385 -0
  58. package/dist/Variant-DmeGEEkw.js +538 -0
  59. package/dist/_id_-DC1dJIaj.js +28 -0
  60. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  61. package/dist/app-Bd7W2PYm.js +2008 -0
  62. package/dist/app.js +8 -0
  63. package/dist/apps/mf-menu/src/App.vue.d.ts +2 -0
  64. package/dist/apps/mf-menu/src/Entry.vue.d.ts +4 -0
  65. package/dist/apps/mf-menu/src/app.d.ts +16771 -0
  66. package/dist/apps/mf-menu/src/assets/icons/index.d.ts +4 -0
  67. package/dist/apps/mf-menu/src/components/CatalogBindingList.vue.d.ts +9 -0
  68. package/dist/apps/mf-menu/src/components/CatalogList.vue.d.ts +6 -0
  69. package/dist/apps/mf-menu/src/components/CategoryImageField.vue.d.ts +17 -0
  70. package/dist/apps/mf-menu/src/components/CategoryList.vue.d.ts +28 -0
  71. package/dist/apps/mf-menu/src/components/Fields/RangeSlider.vue.d.ts +23 -0
  72. package/dist/apps/mf-menu/src/components/GroupList.vue.d.ts +28 -0
  73. package/dist/apps/mf-menu/src/components/GroupTranslationSideSheet.vue.d.ts +14 -0
  74. package/dist/apps/mf-menu/src/components/IngredientList.vue.d.ts +15 -0
  75. package/dist/apps/mf-menu/src/components/MenuHeaderContext.vue.d.ts +2 -0
  76. package/dist/apps/mf-menu/src/components/MenuRestaurantSelector.vue.d.ts +7 -0
  77. package/dist/apps/mf-menu/src/components/MenuSetting/AddMemberTierDialog.vue.d.ts +2 -0
  78. package/dist/apps/mf-menu/src/components/MenuSetting/AddPriceGroupDialog.vue.d.ts +2 -0
  79. package/dist/apps/mf-menu/src/components/MenuSetting/ConfigurationTab.vue.d.ts +6 -0
  80. package/dist/apps/mf-menu/src/components/MenuSetting/MemberPricingTab.vue.d.ts +6 -0
  81. package/dist/apps/mf-menu/src/components/MenuSetting/PriceGroupTab.vue.d.ts +6 -0
  82. package/dist/apps/mf-menu/src/components/MenuSetting/RuleGroupsTab.vue.d.ts +6 -0
  83. package/dist/apps/mf-menu/src/components/Navigator.vue.d.ts +2 -0
  84. package/dist/apps/mf-menu/src/components/OrderPacingList.vue.d.ts +6 -0
  85. package/dist/apps/mf-menu/src/components/PriceTier/PriceTierNotice.vue.d.ts +6 -0
  86. package/dist/apps/mf-menu/src/components/PrintRouteList.vue.d.ts +6 -0
  87. package/dist/apps/mf-menu/src/components/Product/LocalizedCurrencySymbol.vue.d.ts +5 -0
  88. package/dist/apps/mf-menu/src/components/Product/ProductAttributeFilter.vue.d.ts +13 -0
  89. package/dist/apps/mf-menu/src/components/Product/ProductCategorySelector.vue.d.ts +11 -0
  90. package/dist/apps/mf-menu/src/components/Product/ProductChipSummary.vue.d.ts +9 -0
  91. package/dist/apps/mf-menu/src/components/Product/ProductChoicePicker.vue.d.ts +15 -0
  92. package/dist/apps/mf-menu/src/components/Product/ProductEditorHost.vue.d.ts +26 -0
  93. package/dist/apps/mf-menu/src/components/Product/ProductFilterMenu.vue.d.ts +26 -0
  94. package/dist/apps/mf-menu/src/components/Product/ProductForm.vue.d.ts +42 -0
  95. package/dist/apps/mf-menu/src/components/Product/ProductFormSection.vue.d.ts +41 -0
  96. package/dist/apps/mf-menu/src/components/Product/ProductGroupCreateSheet.vue.d.ts +19 -0
  97. package/dist/apps/mf-menu/src/components/Product/ProductGroupSheet.vue.d.ts +56 -0
  98. package/dist/apps/mf-menu/src/components/Product/ProductInlineCategoryCreateField.vue.d.ts +10 -0
  99. package/dist/apps/mf-menu/src/components/Product/ProductInlineCreateHost.vue.d.ts +38 -0
  100. package/dist/apps/mf-menu/src/components/Product/ProductInlineSubcategoryCreateField.vue.d.ts +10 -0
  101. package/dist/apps/mf-menu/src/components/Product/ProductInventoryDialog.vue.d.ts +12 -0
  102. package/dist/apps/mf-menu/src/components/Product/ProductLocaleBadge.vue.d.ts +6 -0
  103. package/dist/apps/mf-menu/src/components/Product/ProductMemberPriceTooltip.vue.d.ts +6 -0
  104. package/dist/apps/mf-menu/src/components/Product/ProductMoneyField.vue.d.ts +25 -0
  105. package/dist/apps/mf-menu/src/components/Product/ProductOverviewSheet.vue.d.ts +11 -0
  106. package/dist/apps/mf-menu/src/components/Product/ProductPacingSheet.vue.d.ts +13 -0
  107. package/dist/apps/mf-menu/src/components/Product/ProductPriceTierButton.vue.d.ts +11 -0
  108. package/dist/apps/mf-menu/src/components/Product/ProductPricingSheet.vue.d.ts +26 -0
  109. package/dist/apps/mf-menu/src/components/Product/ProductPrintRouteSheet.vue.d.ts +12 -0
  110. package/dist/apps/mf-menu/src/components/Product/ProductQuantityField.vue.d.ts +16 -0
  111. package/dist/apps/mf-menu/src/components/Product/ProductSummaryCard.vue.d.ts +9 -0
  112. package/dist/apps/mf-menu/src/components/Product/ProductTakeawaySheet.vue.d.ts +12 -0
  113. package/dist/apps/mf-menu/src/components/Product/ProductTranslationDialog.vue.d.ts +16 -0
  114. package/dist/apps/mf-menu/src/components/Product/ProductVariantCreateSheet.vue.d.ts +12 -0
  115. package/dist/apps/mf-menu/src/components/Product/ProductVariantTranslationSheet.vue.d.ts +13 -0
  116. package/dist/apps/mf-menu/src/components/Product/inlineCreate.d.ts +23 -0
  117. package/dist/apps/mf-menu/src/components/Product/labels.d.ts +15 -0
  118. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageBadge.vue.d.ts +7 -0
  119. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageDownloadDialog.vue.d.ts +15 -0
  120. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageFormatChips.vue.d.ts +13 -0
  121. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageLegacyChip.vue.d.ts +2 -0
  122. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageProgressDialog.vue.d.ts +11 -0
  123. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageResult.vue.d.ts +14 -0
  124. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageReview.vue.d.ts +21 -0
  125. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageThumb.vue.d.ts +15 -0
  126. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageUpdateFlow.vue.d.ts +6 -0
  127. package/dist/apps/mf-menu/src/components/ProductBatchImage/BatchImageUpdateSheet.vue.d.ts +34 -0
  128. package/dist/apps/mf-menu/src/components/ProductBatchImage/batchImageFiles.d.ts +53 -0
  129. package/dist/apps/mf-menu/src/components/ProductImage/ProductImageCustomFormatDialog.vue.d.ts +40 -0
  130. package/dist/apps/mf-menu/src/components/ProductImage/ProductImageEditorDialog.vue.d.ts +82 -0
  131. package/dist/apps/mf-menu/src/components/ProductImage/ProductImageField.vue.d.ts +42 -0
  132. package/dist/apps/mf-menu/src/components/ProductImage/ProductImageManageSheet.vue.d.ts +47 -0
  133. package/dist/apps/mf-menu/src/components/ProductImage/ProductImageRegenerateDialog.vue.d.ts +44 -0
  134. package/dist/apps/mf-menu/src/components/ProductImage/imageBrowser.d.ts +18 -0
  135. package/dist/apps/mf-menu/src/components/ProductList.vue.d.ts +18 -0
  136. package/dist/apps/mf-menu/src/components/PublishList.vue.d.ts +14 -0
  137. package/dist/apps/mf-menu/src/components/RecipeList.vue.d.ts +11 -0
  138. package/dist/apps/mf-menu/src/components/SchedulerList.vue.d.ts +6 -0
  139. package/dist/apps/mf-menu/src/components/ServingSequenceList.vue.d.ts +6 -0
  140. package/dist/apps/mf-menu/src/components/SubcategoryList.vue.d.ts +6 -0
  141. package/dist/apps/mf-menu/src/components/TakeawayList.vue.d.ts +26 -0
  142. package/dist/apps/mf-menu/src/components/TranslationSideSheet.vue.d.ts +36 -0
  143. package/dist/apps/mf-menu/src/components/UnitList.vue.d.ts +6 -0
  144. package/dist/apps/mf-menu/src/components/V3ToV4MigrationBanner.vue.d.ts +6 -0
  145. package/dist/apps/mf-menu/src/components/V3ToV4MigrationConfirmDialog.vue.d.ts +12 -0
  146. package/dist/apps/mf-menu/src/components/VariantList.vue.d.ts +6 -0
  147. package/dist/apps/mf-menu/src/components/catalog/CatalogEditor.vue.d.ts +14 -0
  148. package/dist/apps/mf-menu/src/components/catalog/CatalogLinkProductAction.vue.d.ts +7 -0
  149. package/dist/apps/mf-menu/src/components/catalog/CatalogUsage.vue.d.ts +6 -0
  150. package/dist/apps/mf-menu/src/components/catalog/tableSemantics.d.ts +7 -0
  151. package/dist/apps/mf-menu/src/components/feature/ApplyProduct/ApplyProduct.vue.d.ts +33 -0
  152. package/dist/apps/mf-menu/src/components/feature/CookingGuide/RemoveCookingGuideConfirmation.vue.d.ts +6 -0
  153. package/dist/apps/mf-menu/src/components/feature/EmptyDataTemplate/Icon.vue.d.ts +2 -0
  154. package/dist/apps/mf-menu/src/components/feature/EmptyDataTemplate/index.d.ts +1 -0
  155. package/dist/apps/mf-menu/src/components/feature/EmptyDataTemplate/index.vue.d.ts +18 -0
  156. package/dist/apps/mf-menu/src/components/feature/InventoryBinding/BindingLinkDialog.vue.d.ts +49 -0
  157. package/dist/apps/mf-menu/src/components/feature/InventoryBinding/BindingTable.vue.d.ts +38 -0
  158. package/dist/apps/mf-menu/src/components/feature/LinkProduct/LinkProductSideSheet.vue.d.ts +65 -0
  159. package/dist/apps/mf-menu/src/components/feature/OrderPacing/DeleteOrderPacingConfirmation.vue.d.ts +6 -0
  160. package/dist/apps/mf-menu/src/components/feature/OrderPacing/OrderPacingFields.vue.d.ts +17 -0
  161. package/dist/apps/mf-menu/src/components/feature/PrintRoute/RemoveRouteConfirmation.vue.d.ts +6 -0
  162. package/dist/apps/mf-menu/src/components/feature/TreeEditor/TreeEditorOpenner.vue.d.ts +18 -0
  163. package/dist/apps/mf-menu/src/components/feature/TreeEditor/openner.d.ts +7 -0
  164. package/dist/apps/mf-menu/src/components/info/TextChip.vue.d.ts +13 -0
  165. package/dist/apps/mf-menu/src/components/layout/FlatInlineSort.vue.d.ts +25 -0
  166. package/dist/apps/mf-menu/src/components/layout/FormColumn.vue.d.ts +12 -0
  167. package/dist/apps/mf-menu/src/components/layout/FormItem.vue.d.ts +17 -0
  168. package/dist/apps/mf-menu/src/components/layout/FormRow.vue.d.ts +9 -0
  169. package/dist/apps/mf-menu/src/components/layout/FormSection.vue.d.ts +18 -0
  170. package/dist/apps/mf-menu/src/components/layout/FullScreenForm.vue.d.ts +31 -0
  171. package/dist/apps/mf-menu/src/components/layout/FullWrapper.vue.d.ts +9 -0
  172. package/dist/apps/mf-menu/src/components/layout/LabeledTextField.vue.d.ts +16 -0
  173. package/dist/apps/mf-menu/src/components/layout/ListCountTag.vue.d.ts +5 -0
  174. package/dist/apps/mf-menu/src/components/layout/LottieAnimation.vue.d.ts +39 -0
  175. package/dist/apps/mf-menu/src/components/layout/PageLayout.vue.d.ts +19 -0
  176. package/dist/apps/mf-menu/src/components/layout/ProgressBar.vue.d.ts +9 -0
  177. package/dist/apps/mf-menu/src/components/loading/AppLoading.vue.d.ts +20 -0
  178. package/dist/apps/mf-menu/src/components/loading/PageLoading.vue.d.ts +2 -0
  179. package/dist/apps/mf-menu/src/components/loading/index.d.ts +1 -0
  180. package/dist/apps/mf-menu/src/components/placeholder/PlaceholderView.vue.d.ts +5 -0
  181. package/dist/apps/mf-menu/src/components/preview/MenuPreview.vue.d.ts +13 -0
  182. package/dist/apps/mf-menu/src/components/preview/simulatorPort.d.ts +23 -0
  183. package/dist/apps/mf-menu/src/components/publish/PublishRevertPreview.vue.d.ts +6 -0
  184. package/dist/apps/mf-menu/src/components/publish/PublishScheduleDetails.vue.d.ts +6 -0
  185. package/dist/apps/mf-menu/src/components/publish/publishStatus.d.ts +15 -0
  186. package/dist/apps/mf-menu/src/components/translation/TranslationLanguageSelector.vue.d.ts +21 -0
  187. package/dist/apps/mf-menu/src/components/translation/TranslationViewChip.vue.d.ts +12 -0
  188. package/dist/apps/mf-menu/src/components/translation/localeName.d.ts +11 -0
  189. package/dist/apps/mf-menu/src/components/translation/localeSymbol.d.ts +15 -0
  190. package/dist/apps/mf-menu/src/composable/elementPosition.d.ts +17 -0
  191. package/dist/apps/mf-menu/src/composable/menuNotifier.d.ts +14 -0
  192. package/dist/apps/mf-menu/src/composable/navigator.d.ts +16 -0
  193. package/dist/apps/mf-menu/src/composable/useActionFeedback.d.ts +81 -0
  194. package/dist/apps/mf-menu/src/composable/useEditorValidation.d.ts +21 -0
  195. package/dist/apps/mf-menu/src/init.d.ts +1 -0
  196. package/dist/apps/mf-menu/src/main.d.ts +2 -0
  197. package/dist/apps/mf-menu/src/plugins.d.ts +4 -0
  198. package/dist/apps/mf-menu/src/router/index.d.ts +2 -0
  199. package/dist/apps/mf-menu/src/router/shared.d.ts +65 -0
  200. package/dist/apps/mf-menu/src/sdk/host.d.ts +9 -0
  201. package/dist/apps/mf-menu/src/sdk/import-export.d.ts +9 -0
  202. package/dist/apps/mf-menu/src/sdk/provide.d.ts +33 -0
  203. package/dist/apps/mf-menu/src/sdk/useReadModel.d.ts +16 -0
  204. package/dist/apps/mf-menu/src/sdk/useSdkMessage.d.ts +11 -0
  205. package/dist/apps/mf-menu/src/stores/app.d.ts +17 -0
  206. package/dist/apps/mf-menu/src/utils/ruleValueKey.d.ts +12 -0
  207. package/dist/apps/mf-menu/src/utils/worker-loader.d.ts +12 -0
  208. package/dist/apps/mf-menu/src/utils/worker.d.ts +4 -0
  209. package/dist/apps/mf-menu/src/views/Catalog/Catalog.vue.d.ts +2 -0
  210. package/dist/apps/mf-menu/src/views/Catalog/Edit/CatalogEditTabs.vue.d.ts +2 -0
  211. package/dist/apps/mf-menu/src/views/Catalog/Edit/Category.vue.d.ts +2 -0
  212. package/dist/apps/mf-menu/src/views/Catalog/Edit/Group.vue.d.ts +2 -0
  213. package/dist/apps/mf-menu/src/views/Catalog/Edit/MainSetting.vue.d.ts +2 -0
  214. package/dist/apps/mf-menu/src/views/Catalog/Edit/NamedSetting.vue.d.ts +5 -0
  215. package/dist/apps/mf-menu/src/views/Catalog/Edit/Product.vue.d.ts +2 -0
  216. package/dist/apps/mf-menu/src/views/Catalog/Edit/Setting.vue.d.ts +2 -0
  217. package/dist/apps/mf-menu/src/views/Catalog/Edit/Takeaway.vue.d.ts +2 -0
  218. package/dist/apps/mf-menu/src/views/Catalog/Edit/[id].vue.d.ts +2 -0
  219. package/dist/apps/mf-menu/src/views/CatalogBinding/CatalogBinding.vue.d.ts +2 -0
  220. package/dist/apps/mf-menu/src/views/Category/Category.vue.d.ts +2 -0
  221. package/dist/apps/mf-menu/src/views/CookingGuide/CookingGuide.vue.d.ts +2 -0
  222. package/dist/apps/mf-menu/src/views/Group/Group.vue.d.ts +2 -0
  223. package/dist/apps/mf-menu/src/views/ImportExport/ImportDiffPreview.vue.d.ts +25 -0
  224. package/dist/apps/mf-menu/src/views/ImportExport/ImportExport.vue.d.ts +9 -0
  225. package/dist/apps/mf-menu/src/views/ImportExport/ImportV3DiffPreview.vue.d.ts +26 -0
  226. package/dist/apps/mf-menu/src/views/ImportExport/PreviewImportTable.vue.d.ts +30 -0
  227. package/dist/apps/mf-menu/src/views/Ingredient/Ingredient.vue.d.ts +2 -0
  228. package/dist/apps/mf-menu/src/views/MenuManagementEditor/CategoryRenameDialog.vue.d.ts +26 -0
  229. package/dist/apps/mf-menu/src/views/MenuManagementEditor/DetailPane.vue.d.ts +23 -0
  230. package/dist/apps/mf-menu/src/views/MenuManagementEditor/EditorHistoryControls.vue.d.ts +22 -0
  231. package/dist/apps/mf-menu/src/views/MenuManagementEditor/MenuManagementEditor.vue.d.ts +10 -0
  232. package/dist/apps/mf-menu/src/views/MenuManagementEditor/RestaurantAttributesFilter.vue.d.ts +2 -0
  233. package/dist/apps/mf-menu/src/views/MenuManagementEditor/ScopeSwitcher.vue.d.ts +2 -0
  234. package/dist/apps/mf-menu/src/views/MenuManagementEditor/TreeFilter.vue.d.ts +2 -0
  235. package/dist/apps/mf-menu/src/views/MenuManagementEditor/TreePanel.vue.d.ts +9 -0
  236. package/dist/apps/mf-menu/src/views/MenuManagementEditor/TreeRow.vue.d.ts +25 -0
  237. package/dist/apps/mf-menu/src/views/MenuSetting/MenuSetting.vue.d.ts +2 -0
  238. package/dist/apps/mf-menu/src/views/OrderPacing/OrderPacing.vue.d.ts +2 -0
  239. package/dist/apps/mf-menu/src/views/Preview/Preview.vue.d.ts +2 -0
  240. package/dist/apps/mf-menu/src/views/PrintRoute/PrintRoute.vue.d.ts +2 -0
  241. package/dist/apps/mf-menu/src/views/Product/ProductInternalTools.vue.d.ts +2 -0
  242. package/dist/apps/mf-menu/src/views/Product/Products.vue.d.ts +2 -0
  243. package/dist/apps/mf-menu/src/views/Publish/Publish.vue.d.ts +2 -0
  244. package/dist/apps/mf-menu/src/views/Recipe/Recipe.vue.d.ts +2 -0
  245. package/dist/apps/mf-menu/src/views/Scheduler/Scheduler.vue.d.ts +2 -0
  246. package/dist/apps/mf-menu/src/views/ServingSequence/ServingSequence.vue.d.ts +2 -0
  247. package/dist/apps/mf-menu/src/views/Subcategory/Subcategory.vue.d.ts +2 -0
  248. package/dist/apps/mf-menu/src/views/Takeaway/Takeaway.vue.d.ts +2 -0
  249. package/dist/apps/mf-menu/src/views/Unit/Unit.vue.d.ts +2 -0
  250. package/dist/apps/mf-menu/src/views/Variant/Variant.vue.d.ts +2 -0
  251. package/dist/apps/mf-menu/src/workers/menu-compute.d.ts +1 -0
  252. package/dist/apps/mf-menu/src/workers/validate-menu.d.ts +1 -0
  253. package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -0
  254. package/dist/assets/menu-compute-okel5FLc.js +260 -0
  255. package/dist/assets/validate-menu-DEFGpnQh.js +130 -0
  256. package/dist/index.vue_vue_type_script_setup_true_lang-CGPDazqs.js +57 -0
  257. package/dist/mf-menu-portal.css +1 -0
  258. package/dist/provide-Tmjfji09.js +190840 -0
  259. package/dist/ruleValueKey-BF52PuHb.js +10 -0
  260. package/dist/tableSemantics-C9WFO_I_.js +22 -0
  261. package/dist/useActionFeedback-DoFeBFpl.js +95 -0
  262. package/dist/useEditorValidation-Ctef5Bxt.js +63 -0
  263. package/package.json +79 -3
@@ -0,0 +1,25 @@
1
+ interface SortItem {
2
+ readonly id: string;
3
+ readonly label: string;
4
+ }
5
+ type __VLS_Props = {
6
+ items: readonly SortItem[];
7
+ handle: string;
8
+ lockLast?: boolean;
9
+ };
10
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ reorder: (ids: string[]) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ onReorder?: ((ids: string[]) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
15
+ item?: ((props: {
16
+ element: any;
17
+ index: any;
18
+ }) => any) | undefined;
19
+ }>;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,12 @@
1
+ interface Props {
2
+ shrinkable?: boolean;
3
+ }
4
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
5
+ default?: ((props: {}) => any) | undefined;
6
+ }>;
7
+ export default _default;
8
+ type __VLS_WithSlots<T, S> = T & {
9
+ new (): {
10
+ $slots: S;
11
+ };
12
+ };
@@ -0,0 +1,17 @@
1
+ interface Props {
2
+ label?: string;
3
+ description?: string;
4
+ }
5
+ declare var __VLS_1: {}, __VLS_3: {};
6
+ type __VLS_Slots = {} & {
7
+ append?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ default?: (props: typeof __VLS_3) => any;
10
+ };
11
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, __VLS_Slots>;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,9 @@
1
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
2
+ default?: ((props: {}) => any) | undefined;
3
+ }>;
4
+ export default _default;
5
+ type __VLS_WithSlots<T, S> = T & {
6
+ new (): {
7
+ $slots: S;
8
+ };
9
+ };
@@ -0,0 +1,18 @@
1
+ interface Props {
2
+ title?: string;
3
+ subTitle?: string;
4
+ shrinkable?: boolean;
5
+ }
6
+ declare var __VLS_1: {}, __VLS_6: {};
7
+ type __VLS_Slots = {} & {
8
+ 'append-title'?: (props: typeof __VLS_1) => any;
9
+ } & {
10
+ default?: (props: typeof __VLS_6) => any;
11
+ };
12
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, __VLS_Slots>;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,31 @@
1
+ interface FullScreenFormProps {
2
+ show: boolean;
3
+ title: string;
4
+ primaryAction: {
5
+ label: string;
6
+ disabled?: boolean;
7
+ };
8
+ secondaryActions: {
9
+ label: string;
10
+ click?: () => void;
11
+ }[];
12
+ }
13
+ declare var __VLS_20: {}, __VLS_34: {};
14
+ type __VLS_Slots = {} & {
15
+ 'append-title'?: (props: typeof __VLS_20) => any;
16
+ } & {
17
+ default?: (props: typeof __VLS_34) => any;
18
+ };
19
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<FullScreenFormProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
20
+ [x: string]: any;
21
+ } & {
22
+ [x: string]: any;
23
+ }, string, import("vue").PublicProps, Readonly<FullScreenFormProps> & Readonly<{
24
+ [x: `on${Capitalize<any>}`]: ((...args: any[] | unknown[]) => any) | undefined;
25
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, __VLS_Slots>;
26
+ export default _default;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
@@ -0,0 +1,9 @@
1
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
2
+ default?: ((props: {}) => any) | undefined;
3
+ }>;
4
+ export default _default;
5
+ type __VLS_WithSlots<T, S> = T & {
6
+ new (): {
7
+ $slots: S;
8
+ };
9
+ };
@@ -0,0 +1,16 @@
1
+ type __VLS_Props = {
2
+ label?: string;
3
+ };
4
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<__VLS_Props, {
5
+ inputEl: import("vue").ComputedRef<HTMLInputElement | null>;
6
+ focus: () => void | undefined;
7
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
8
+ [x: string]: ((props: any) => any) | undefined;
9
+ [x: number]: ((props: any) => any) | undefined;
10
+ }>;
11
+ export default _default;
12
+ type __VLS_WithSlots<T, S> = T & {
13
+ new (): {
14
+ $slots: S;
15
+ };
16
+ };
@@ -0,0 +1,5 @@
1
+ type __VLS_Props = {
2
+ value: number | string;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ export default _default;
@@ -0,0 +1,39 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ link: {
3
+ type: StringConstructor;
4
+ default: undefined;
5
+ };
6
+ json: {
7
+ type: ObjectConstructor;
8
+ default: undefined;
9
+ };
10
+ width: {
11
+ type: NumberConstructor;
12
+ required: true;
13
+ };
14
+ height: {
15
+ type: NumberConstructor;
16
+ required: true;
17
+ };
18
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
19
+ link: {
20
+ type: StringConstructor;
21
+ default: undefined;
22
+ };
23
+ json: {
24
+ type: ObjectConstructor;
25
+ default: undefined;
26
+ };
27
+ width: {
28
+ type: NumberConstructor;
29
+ required: true;
30
+ };
31
+ height: {
32
+ type: NumberConstructor;
33
+ required: true;
34
+ };
35
+ }>> & Readonly<{}>, {
36
+ link: string;
37
+ json: Record<string, any>;
38
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
39
+ export default _default;
@@ -0,0 +1,19 @@
1
+ interface Props {
2
+ heading: string;
3
+ subheading?: string;
4
+ }
5
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
6
+ type __VLS_Slots = {} & {
7
+ 'prepend-heading'?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ 'append-heading'?: (props: typeof __VLS_3) => any;
10
+ } & {
11
+ default?: (props: typeof __VLS_5) => any;
12
+ };
13
+ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, __VLS_Slots>;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ /** 0–100. Values outside the range are clamped. */
3
+ percent: number;
4
+ variant?: 'neutral' | 'warning' | 'success' | 'error';
5
+ }
6
+ declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
7
+ variant: "error" | "success" | "warning" | "neutral";
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ export default _default;
@@ -0,0 +1,20 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ width: {
3
+ type: NumberConstructor;
4
+ required: true;
5
+ };
6
+ height: {
7
+ type: NumberConstructor;
8
+ required: true;
9
+ };
10
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
11
+ width: {
12
+ type: NumberConstructor;
13
+ required: true;
14
+ };
15
+ height: {
16
+ type: NumberConstructor;
17
+ required: true;
18
+ };
19
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
20
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1 @@
1
+ export declare const withLoading: (loader: () => Promise<any>) => any;
@@ -0,0 +1,5 @@
1
+ type __VLS_Props = {
2
+ module: string;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import type { MenuPreviewModule } from '@feedmepos/menu-sdk';
2
+ type MenuPreviewPageSdk = {
3
+ preview: Pick<MenuPreviewModule, 'open'>;
4
+ };
5
+ type __VLS_Props = {
6
+ sdk: MenuPreviewPageSdk;
7
+ /** The deployed simulator; null where this environment has none. */
8
+ simulatorUrl: string | null;
9
+ /** This page's origin, which the simulator posts back to. */
10
+ parentOrigin?: string;
11
+ };
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import type { MenuPreviewSimulatorPort } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * Where the simulator iframe points, and the origin every message to and from
4
+ * it must carry.
5
+ *
6
+ * The simulator posts only to the origin named in `?parent=` and refuses one
7
+ * that is not on its allowlist (`feedmepos/menu-simulator` `src/lib/contract.ts`
8
+ * and `public/_headers`), so this page's own origin goes there.
9
+ */
10
+ export declare function simulatorFrame(simulatorUrl: string, parentOrigin: string): {
11
+ readonly src: string;
12
+ readonly origin: string;
13
+ };
14
+ /**
15
+ * The host side of the simulator iframe, handed to the SDK's preview session.
16
+ *
17
+ * Only the window plumbing lives here: posting to the frame at the simulator's
18
+ * exact origin (never `'*'`), and passing on a `message` event only when both
19
+ * its origin and its source are that frame — an origin check alone would let a
20
+ * same-origin frame elsewhere on the page speak for it. Every message itself,
21
+ * handshake to acknowledgement, is the SDK's.
22
+ */
23
+ export declare function createSimulatorPort(frame: () => HTMLIFrameElement | null, origin: string, host?: Pick<Window, 'addEventListener' | 'removeEventListener'>): MenuPreviewSimulatorPort;
@@ -0,0 +1,6 @@
1
+ import type { PublishRevertPreviewSession } from '@feedmepos/menu-sdk';
2
+ type __VLS_Props = {
3
+ session: PublishRevertPreviewSession;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { PublishScheduleDetailsSession } from '@feedmepos/menu-sdk';
2
+ type __VLS_Props = {
3
+ session: PublishScheduleDetailsSession;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import type { PublishJobStatus } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * Presentation mapping for the publish job lifecycle, shared by the progress
4
+ * side sheet and the publish-details dialog so the two cannot disagree.
5
+ *
6
+ * Legacy kept the same table (`portal views/Publish/PublishProgressView.vue:33-55`)
7
+ * but paired each token text class with a raw hex background for its progress
8
+ * bar (`#E0E0DE`, `#FFB800`, `#34C759`, `#FF3B30`). Those are ADR-0003 §2
9
+ * violations, so the bar takes a semantic `variant` and resolves its own token
10
+ * class instead.
11
+ */
12
+ export declare const PUBLISH_STATUS_TEXT_CLASS: Record<PublishJobStatus, string>;
13
+ export declare const PUBLISH_STATUS_BAR_VARIANT: Record<PublishJobStatus, 'neutral' | 'warning' | 'success' | 'error'>;
14
+ export declare const PUBLISH_STATUS_LABEL_KEY: Record<PublishJobStatus, string>;
15
+ export declare const PUBLISH_JOB_STATUSES: readonly PublishJobStatus[];
@@ -0,0 +1,21 @@
1
+ type __VLS_Props = {
2
+ selected: readonly {
3
+ code: string;
4
+ name: string;
5
+ }[];
6
+ available: readonly {
7
+ code: string;
8
+ name: string;
9
+ }[];
10
+ menuZIndex?: number;
11
+ };
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
13
+ add: (code: string) => any;
14
+ remove: (code: string) => any;
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
+ onAdd?: ((code: string) => any) | undefined;
17
+ onRemove?: ((code: string) => any) | undefined;
18
+ }>, {
19
+ menuZIndex: number;
20
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
21
+ export default _default;
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ nameLocale: Readonly<Record<string, string>>;
3
+ /**
4
+ * How many locales badge individually before the rest collapse into one
5
+ * `+N` chip. Omitted — every host but the product list — keeps legacy's
6
+ * other branch: one chip per locale, each with its own tooltip
7
+ * (`portal .../translation/TranslationViewChip.vue:25-46`).
8
+ */
9
+ showNumber?: number;
10
+ };
11
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,11 @@
1
+ /** The display name for a locale code, or the code itself when unmapped. */
2
+ export declare function localeFullName(code: string): string;
3
+ /** Every locale this app can name, in legacy's table order. */
4
+ export declare function localeVocabulary(): readonly {
5
+ code: string;
6
+ name: string;
7
+ }[];
8
+ export declare function defaultTranslationLocales(): readonly {
9
+ code: string;
10
+ name: string;
11
+ }[];
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Legacy's `getLocaleIcon`: the mapped icon, else the REGION segment
3
+ * uppercased — `ar-AE` badges as `AE`, not `AR` and not `ar-AE`
4
+ * (`portal .../utils/translation.ts:62-65`, observed as
5
+ * `translation-editor/display/unknown-locale-fallback`).
6
+ *
7
+ * The fallback is why this is shared rather than written per surface: three
8
+ * surfaces had each derived it, and two of them took the LANGUAGE segment,
9
+ * which badges `zh-CN` as `ZH` where legacy badges it 简. The icons are the
10
+ * same string in every bundle — a constant table rendered as text rather than
11
+ * copy — but they stay in the locale files, which is where every migrated
12
+ * surface already reads them from, and each key is written whole so the i18n
13
+ * gate can see it.
14
+ */
15
+ export declare function useLocaleSymbol(): (code: string) => string;
@@ -0,0 +1,17 @@
1
+ import { type Ref } from 'vue';
2
+ export declare function useElementPosition(el: Ref<HTMLElement | null>, watched?: any): Ref<{
3
+ top: number;
4
+ bottom: number;
5
+ left: number;
6
+ right: number;
7
+ }, {
8
+ top: number;
9
+ bottom: number;
10
+ left: number;
11
+ right: number;
12
+ } | {
13
+ top: number;
14
+ bottom: number;
15
+ left: number;
16
+ right: number;
17
+ }>;
@@ -0,0 +1,14 @@
1
+ import type { MenuSdk } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * Posts the Publish navigation badge from the app root, as legacy's notifier
4
+ * does (`portal App.vue:225`), so the badge is on screen — and follows every
5
+ * menu save — before Publish is ever opened. The SDK owns the count; this only
6
+ * renders it into the legacy window-message contract the sidebar listens to.
7
+ *
8
+ * Legacy's notifier also posts `menu-version-notifier` (`{ isV4 }`). That is
9
+ * deliberately not migrated: its only listener was legacy mf-menu's own
10
+ * `router/shared.ts`, which toggled the V4-only navigation items — here the
11
+ * router reads the SDK's `moduleRoutes` capability instead — and ADR-0002
12
+ * forbids `mf-menu` from receiving a menu-version value at all.
13
+ */
14
+ export declare function useMenuNotifier(sdk: MenuSdk): void;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Legacy window-message contract for updating route badges from menu publish state.
3
+ * The notifier that produces this message must reuse this constant.
4
+ */
5
+ export declare const PUBLISH_NOTIFIER = "publish-notifier";
6
+ interface NavigatorStatus {
7
+ [key: string]: {
8
+ icon?: string;
9
+ badge?: number;
10
+ };
11
+ }
12
+ export declare function useMenuNavigatorStatus(): {
13
+ navigatorStatus: import("vue").Ref<NavigatorStatus, NavigatorStatus>;
14
+ stop: () => void;
15
+ };
16
+ export {};
@@ -0,0 +1,81 @@
1
+ import type { MenuActionOutcome } from '@feedmepos/menu-sdk';
2
+ export interface ActionFeedbackConfig<T = unknown> {
3
+ /**
4
+ * Localized text shown in a bottom snackbar when the action succeeds.
5
+ *
6
+ * A function receives the outcome's value, for the case where the text names
7
+ * something only the write knows — a duplicate reports the *clone's* name,
8
+ * and that name is a domain rule the SDK owns. Recomputing it in the caller
9
+ * would put a second copy of that rule on the wrong side of the boundary
10
+ * (ADR-0002 §2), so the SDK hands it back and the caller only renders it.
11
+ */
12
+ successMessage?: string | ((value: T) => string);
13
+ /**
14
+ * Legacy's scheduled-publish cancellation bypasses its loading helper and
15
+ * writes a regular-weight snackbar message directly. Other settled writes
16
+ * retain the helper's semibold title convention.
17
+ */
18
+ successPresentation?: 'title' | 'message';
19
+ /** Localized text shown with a spinner while the action is in flight. */
20
+ loadingMessage?: string;
21
+ /**
22
+ * Optional semibold heading for an in-flight action. Legacy publish revert
23
+ * names its restaurant in this slot and keeps the generic loading copy below.
24
+ */
25
+ loadingTitle?: string;
26
+ /**
27
+ * Whether the in-flight spinner is shown at all. Defaults to `true`.
28
+ *
29
+ * Set it to `false` where an action can settle without a backend round trip —
30
+ * a required-field rejection is decided locally, and flashing a loading toast
31
+ * for it shows the user an indicator the legacy never had. Turn it off only
32
+ * with an approved baseline that says so; it is not a matter of taste.
33
+ *
34
+ * Pass a FUNCTION when the answer is derived from editor status. `run` calls
35
+ * it after the action has been started, so a `status === 'submitting'` gate
36
+ * reads the status the SDK published synchronously rather than the `idle` it
37
+ * still held when the config object was built. A plain boolean is evaluated
38
+ * by the caller as before and stays valid.
39
+ */
40
+ showLoading?: boolean | (() => boolean);
41
+ /**
42
+ * Render field-associated rejections through the shared snackbar as well.
43
+ *
44
+ * Most editors keep field issues next to their inputs. Legacy scheduled
45
+ * publish is the exception: its combined date-and-restaurants guard presents
46
+ * one error toast and leaves the composer otherwise unchanged.
47
+ */
48
+ toastFieldIssues?: boolean;
49
+ /**
50
+ * Overrides the client-origin rejection weight (normally `message`,
51
+ * regular-weight — see the `rejected` branch below). Legacy is not uniform
52
+ * here: most client-side guards open the snackbar directly with `message`
53
+ * (`portal .../manager/menu/memberPricing.ts:63-71`), but a raw caught
54
+ * parser exception goes through `snackbar.open({ title: err.message })`
55
+ * instead (`portal apps/mf-menu/src/views/Catalog/Edit/ImportProductDialog.vue:227-233`).
56
+ * Pass `'title'` only when the call site's own citation shows the latter
57
+ * shape; otherwise the origin-based default already matches legacy.
58
+ */
59
+ rejectedPresentation?: 'title' | 'message';
60
+ /**
61
+ * Some legacy actions catch server errors directly with `message`, bypassing
62
+ * the loading helper (ManageImageDrawer.vue runForRatio). Opt into that
63
+ * regular-weight, default-position presentation; other callers keep titles.
64
+ */
65
+ errorPresentation?: 'title' | 'message';
66
+ /** Exact approved legacy failures that settle without a snackbar. */
67
+ silentFailureCodes?: readonly string[];
68
+ }
69
+ /**
70
+ * Cross-cutting write feedback (ADR-0003 §1 "Toast / notification" ->
71
+ * `useSnackbar`). A module forwards its SDK `MenuActionOutcome` here and this
72
+ * composable owns the loading indicator and the success / rejected / failure
73
+ * snackbar. An exact approved `silentFailureCodes` entry can preserve a
74
+ * measured legacy failure with no settled feedback.
75
+ *
76
+ * The snackbar host is mounted once by the `FeedMeUI` plugin in `main.ts`; this
77
+ * composable only opens and closes toasts, it renders nothing itself.
78
+ */
79
+ export declare function useActionFeedback(): {
80
+ run<T>(action: () => Promise<MenuActionOutcome<T>>, config?: ActionFeedbackConfig<T>): Promise<MenuActionOutcome<T>>;
81
+ };
@@ -0,0 +1,21 @@
1
+ import type { FieldIssues, Issue, MenuActionOutcome } from '@feedmepos/menu-sdk';
2
+ /**
3
+ * When an editor's field issues are shown. The SDK derives what the draft
4
+ * would be rejected for on every change (`fieldIssues`); this decides only
5
+ * visibility, the way FmForm rules did in legacy: a field's issue appears once
6
+ * it has been edited or blurred, and every issue appears after a submit.
7
+ */
8
+ export declare function useEditorValidation(session: () => unknown): {
9
+ field: <T>(name: string, update: (value: T) => void) => {
10
+ ref: (instance: unknown) => void;
11
+ 'onUpdate:modelValue': (value: T) => void;
12
+ onFocusChanged: (focused: boolean) => void;
13
+ };
14
+ issue: <F extends string>(fieldIssues: Readonly<Partial<Record<F, readonly Issue[]>>>, name: F) => Issue | null;
15
+ issues: <F_1 extends string>(fieldIssues: Readonly<Partial<Record<F_1, readonly Issue[]>>>, name: F_1) => readonly Issue[];
16
+ removeRow: (prefix: string, index: number) => void;
17
+ submit: <T_1 extends MenuActionOutcome<unknown>>(action: () => Promise<T_1>) => Promise<T_1>;
18
+ touch: (name: string) => void;
19
+ };
20
+ /** The visibility layer one editor shares with the field components it renders. */
21
+ export type EditorValidation = ReturnType<typeof useEditorValidation>;
@@ -0,0 +1 @@
1
+ export declare function initFirebase(): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import './assets/main.css';
2
+ import '@feedmepos/mf-common/style.css';
@@ -0,0 +1,4 @@
1
+ /** Only legacy category thumbnails still live in Firebase Storage. */
2
+ export declare const firebaseStorage: {
3
+ delete(url: string, bucketUrl?: string): Promise<void>;
4
+ };
@@ -0,0 +1,2 @@
1
+ declare const router: import("vue-router").Router;
2
+ export default router;
@@ -0,0 +1,65 @@
1
+ import type { RouteLocationNormalized, RouteLocationRaw, RouteRecordRaw } from 'vue-router';
2
+ import type { Capability, MenuRouteCapabilities } from '@feedmepos/menu-sdk';
3
+ export declare function setMenuRouteCapabilities(next: MenuRouteCapabilities): void;
4
+ export declare function setMenuPublishCapability(next: Capability): void;
5
+ export declare function setMenuCatalogBindingCapability(next: Capability): void;
6
+ export declare let appReady: Promise<void>;
7
+ export declare function resetAppReady(): void;
8
+ export declare function signalAppReady(): void;
9
+ /** What a shell publishes about its scope for the gated route guards. */
10
+ export interface ShellScope {
11
+ routes: MenuRouteCapabilities;
12
+ publish: Capability;
13
+ catalogBinding: Capability;
14
+ /** The session is terminal, so a gated guard can decide on `routes`. */
15
+ settled: boolean;
16
+ }
17
+ export interface AttachedShell {
18
+ /**
19
+ * Whether this is still the latest shell (reactive). Only it may decide a
20
+ * route: a replaced shell would pair its own settled session with the
21
+ * capabilities the newer shell publishes, provisional ones included.
22
+ */
23
+ isCurrent(): boolean;
24
+ /** Publishes this shell's scope; ignored once a newer shell has attached. */
25
+ publish(scope: ShellScope): void;
26
+ detach(): void;
27
+ }
28
+ /**
29
+ * Called by the shell when it is set up. The latest shell owns readiness and
30
+ * the capabilities the guards read: one set up before an earlier shell
31
+ * unmounts (a transition, a keyed remount, HMR) must not have its scope
32
+ * overwritten by a late update from that earlier shell, nor lose its
33
+ * attachment or its signal to that earlier shell's detach.
34
+ */
35
+ export declare function attachShell(): AttachedShell;
36
+ /**
37
+ * Where the settled scope sends `route`, or `null` to stay: its `scopeRedirect`
38
+ * target, else Catalog when its `scopeGuard` fails. The one rule both the
39
+ * route guard and the shell apply to a scope-gated route.
40
+ */
41
+ export declare function scopeRedirectTarget(route: Pick<RouteLocationNormalized, 'meta' | 'query'>): RouteLocationRaw | null;
42
+ /** Keeps businessId/country on the URL so the query-state plugin need not redirect again. */
43
+ export declare function withQuery(target: RouteLocationRaw, from: Pick<RouteLocationNormalized, 'query'>): RouteLocationRaw;
44
+ export declare enum RouteName {
45
+ OVERVIEW = "$menu-overview",
46
+ CATALOG = "$menu-catalog",
47
+ EDIT_CATALOG = "$menu-catalog-edit",
48
+ EDIT_CATALOG_PRODUCT = "$menu-catalog-edit-product",
49
+ EDIT_CATALOG_CATEGORY = "$menu-catalog-edit-category",
50
+ EDIT_CATALOG_GROUP = "$menu-catalog-edit-group",
51
+ EDIT_CATALOG_TAKEAWAY = "$menu-catalog-edit-takeaway",
52
+ EDIT_CATALOG_SETTING = "$menu-catalog-edit-setting",
53
+ SCHEDULER = "$menu-scheduler",
54
+ VARIANT = "$menu-variant",
55
+ ORDER_PACING = "$menu-order-pacing",
56
+ COOKING_GUIDE = "$menu-cooking-guide",
57
+ PRINT_ROUTE = "$menu-print-route",
58
+ PUBLISH = "$menu-publish",
59
+ PREVIEW = "$menu-preview",
60
+ CATALOG_BINDING = "$menu-catalog-binding",
61
+ PRODUCT_INTERNAL_TOOLS = "$menu-product-internal-tools"
62
+ }
63
+ declare const routers: Array<RouteRecordRaw>;
64
+ export { routers };
65
+ export declare const catalogRoutes: Array<RouteRecordRaw>;