Skip to content

Theme editor

The theme editor at /app/theme offers five templates: Gallery, Classic, Editorial, Compact and Catalog. A rules-based suggestion runs off your menu’s size and photo coverage: 120 items or more suggests Catalog, 20 or fewer suggests Compact, 80% or more of items with a photo suggests Gallery, a fine-dining or hotel venue type (or few photos with long descriptions) suggests Editorial, and everything else defaults to Classic. Editorial always turns image mode off, since its layout is text-led.

Menu previews are illustrations of your draft. Tab focuses the preview frame so you can scroll it with the keyboard, then moves to the next real control. Miniature menu links and buttons inside the preview do not take focus; template selection and Apply controls remain outside the preview.

Upload a logo and pick one of three presets — Neutral, Warm or Forest — or set the six colors yourself (primary, accent, background, surface, text, muted, each for light and dark mode separately). Dark mode itself can be set to auto, always on or always off.

Five font pairs are available, each pairing a Latin and an Arabic typeface: Inter/Tajawal (neutral, casual dining), IBM Plex Sans/IBM Plex Sans Arabic (technical, modern), Manrope/Cairo (rounded, cafés), DM Sans/Almarai (clean, fast casual), and Playfair Display/Noto Naskh Arabic (editorial, fine dining).

Saving a palette that fails WCAG AA (a 4.5:1 contrast ratio) against text, muted text or the primary button is refused, with the exact pairs and ratios that failed and a corrected set of colors offered as a one-tap fix. In the dashboard, that’s the only way past it — a failing palette can’t be saved there, only corrected or changed.

A theme’s language_mode controls how the two languages appear on the public page: single shows only the primary language, dual stacked shows both languages on separate lines, and dual columns shows them side by side. primary_lang picks which language leads, and dual_fields chooses which parts of an item — name, description, section — carry the second language when dual mode is on.

The Free plan includes only the Classic and Compact templates and the default font pair; every other plan unlocks all five templates. Font pairs beyond the default are part of the Pro plan and up. A theme change only reaches the public page after you publish, and a plan downgrade republishes the venue automatically with these limits applied — your saved settings aren’t lost, just not shown on the public page until you upgrade again.

Switch to the Editorial template, set the font pair to Playfair Display, and use the Forest preset

calls set_theme with the template, font_pair_id: 'naskh-playfair' and the Forest colors — a color pair below WCAG AA comes back as an error with the fixed colors, so resend with those or add force: true to save anyway; a forced save still returns contrast_warnings on the saved theme, so your agent knows what it overrode. Ask for get_theme_suggestions to see which template your current menu best fits, and open the suggested theme-preview widget to see it rendered before you publish.

See Publishing and undo for how a saved theme change reaches the public page.