ComponentsAdmin & TeamAdmin Menu Manager

Admin & Team

Admin Menu Manager

Admin/owner menu management UI for restaurant apps. Manage dishes and combos in one internal screen with full CRUD, availability toggles, image upload with focal point selection, icon fallback support, and seed actions for quick setup. Intended for runtime admin/owner users, not basic end users.

TabsStarters, Mains, Desserts, Combos

Four working tabs, with the Combos tab optionally hidden by prop.

AccessAdmin/owner runtime focus

Uses requireAdmin (default true) for runtime gating; builder canvas still supports editing/placeholder state.

TierFree

Available on all plans.

What it does

Four things worth knowing

Live + prefetched data loading

If _prefetchedMenuData exists, it hydrates instantly from BuilderDataContext. Otherwise data is fetched through useAdminMenu with runtime backend access.

Dish + combo operations

Supports dish CRUD for starter, main, dessert, plus combo CRUD (starter + main + dessert + optional drink) with active/inactive toggles.

Image + icon fallback priority

Dish visual priority is image first (imageUrl), then icon fallback (iconName or category default). Edit modal keeps the same fallback style for consistency.

Safe cache invalidation after edits

After successful create/update/delete, the component invalidates menuData so dependent menu widgets refresh and stay in sync.

Builder setup

Find it, drop it, publish

Where to find itAdd it to your admin screen

  1. Component picker → Admin & TeamAdmin Menu Manager.
  2. Place it on an internal admin/owner screen.
  3. Use registry key admin-menu-manager for builder placement.

Before you publishFour things to check

  1. Keep the navigation flow admin-only as an extra access layer.
  2. Configure labels, feature toggles, and theme props in the property editor.
  3. Keep backend wiring available (appId + secureApiCall) for live CRUD and image upload.
  4. Publish so runtime gating and live menu data flow are active in AppPlayer.
Category: Admin & TeamComponent: BuilderAdminMenuManagerRegistry key: admin-menu-managerTier: Free
Props

Access, data, and safe editable fields

GroupPropDefaultWhat it controls
AccessrequireAdmin, isAdminUsertrue, runtimeRuntime admin gating and non-admin access denied state.
DataappId, secureApiCall, _prefetchedMenuDataRuntime injectedLive backend CRUD and fast prefetched hydration.
LabelsheaderTitle, addDishLabel, addComboLabel, emptyStateTitle, emptyStateSubtitle, seedMenuLabelComponent defaultsEditable UI copy for header, actions, and empty states.
FeaturesshowCombosTab, showDishToggle, showDishDescription, showDishNutrition, showDishAllergens, showDishIngredients, showDishBadge, showDishImage, showDishOptionsMostly true, options falseToggles visible fields and controls in list cards and editors.
RuntimeisPreview, customWidth, customHeightRuntime injectedBuilder and AppPlayer display context values.
Toggles & colours

Make it yours

All labels, feature visibility, and visual tokens below are safe to edit from Builder without changing core data flow.

PropDefaultWhat it controls
showCombosTabtrueShows or hides the Combos tab.
showDishToggle, showDishDescription, showDishNutrition, showDishAllergens, showDishIngredients, showDishBadge, showDishImagetrueDish field visibility in cards and modals.
showDishOptionsfalseReserved future options editor toggle.
primaryColor, secondaryColor, dangerColor, successColorBrand defaultsAction and semantic state colors.
backgroundColor, cardBackgroundColor, borderColorBrand defaultsSurface and border styling.
titleColor, subtitleColor, headerColorBrand defaultsText hierarchy styling.
borderRadius, fontFamily14, Urbanist-SemiBoldShape and typography.
Tips

Common mistakes to avoid

Keep access admin-only at navigation level

Use protected navigation even when requireAdmin is enabled for clearer runtime separation.

Keep icon fallback aligned in the editor

When no dish image exists, use the same icon fallback logic in both list cards and edit modal preview (editorDishPreviewIcon + color fallback).

Invalidate menu data after mutations

After successful create/update/delete operations, keep builderData.invalidate(‘menuData’) so other menu widgets refresh correctly.

Bundle sync after runtime logic changes

If deployment uses bundled snapshots, run cd app and node collectSourceFiles.js to refresh bundled source files.