"connectionFailed":"Could not connect to printer",
"testPrint":"Test print",
"printerSettings":"Printer settings",
"receiptPrinter":"Receipt printer",
"kitchenPrinter":"Kitchen printer",
"paperWidth":"Paper width",
"autoCut":"Auto cut",
"port":"Port",
"receiptHeader":"Receipt header",
"receiptFooter":"Receipt footer",
"wifiOnReceipt":"WiFi password on receipt",
"saveSettings":"Save settings",
"settingsSaved":"Printer settings saved",
"noBranchForPrinter":"Add a branch before configuring printers.",
"testPageHint":"Sends a test ticket to your saved printers. Configure IP and port under Printer settings first.",
"testPrintReceipt":"Test receipt printer",
"testPrintKitchen":"Test kitchen printer",
"configurePrinters":"Open printer settings",
"posDeviceSection":"Card POS terminal",
"posDeviceHint":"On card payment, the amount is sent via HTTP (POST /pay) to the device on your LAN.",
"posDeviceIp":"POS device IP address"
},
"receipt":{
"table":"Table",
"order":"Order",
"guest":"Guest",
"total":"Total",
"print":"Print",
"close":"Close",
"thankYou":"Thank you for your visit",
"kitchenTitle":"Kitchen / bar ticket",
"billTitle":"Customer bill",
"kitchenFooter":"— For kitchen —",
"payment":{
"cash":"Cash",
"card":"Card",
"credit":"Credit"
}
},
"crm":{
"title":"Customers",
"searchPlaceholder":"Name, phone, or national ID...",
"addCustomer":"Add customer",
"name":"Name",
"phone":"Phone",
"nationalId":"National ID",
"birthDate":"Birth date (Jalali)",
"group":"Group",
"loyaltyPoints":"Points",
"noCustomers":"No customers found",
"groups":{
"Regular":"Regular",
"Vip":"VIP",
"New":"New",
"Employee":"Employee"
},
"wizard":{
"titleCreate":"Add customer",
"titleEdit":"Edit customer",
"stepOf":"Step {current} of {total}",
"steps":{
"contact":"Contact",
"profile":"Profile",
"loyalty":"Group & points",
"confirm":"Review"
},
"back":"Back",
"next":"Next",
"birthHint":"Jalali format, e.g. 1400/01/01",
"referredBy":"Referred by (optional)",
"loyaltyCreateHint":"Loyalty points can be adjusted after the customer is created.",
"errors":{
"duplicatePhone":"This phone number is already registered.",
"generic":"Could not save. Please try again."
}
}
},
"coupons":{
"title":"Coupons",
"addCoupon":"New coupon",
"code":"Code",
"type":"Type",
"value":"Value",
"usage":"Usage",
"active":"Active",
"inactive":"Inactive",
"types":{
"Percentage":"Percentage",
"FixedAmount":"Fixed amount",
"FreeItem":"Free item"
},
"noCoupons":"No coupons yet"
},
"hr":{
"title":"Human resources",
"tabs":{
"attendance":"Attendance",
"leave":"Leave",
"payroll":"Payroll"
},
"myAttendance":"My attendance",
"clockIn":"Clock in",
"clockOut":"Clock out",
"approve":"Approve",
"noLeave":"No pending leave requests",
"paid":"Paid",
"markPaid":"Mark paid",
"employeeCount":"Employees",
"monthYear":"Payroll month"
},
"reviews":{
"title":"Customer reviews",
"summary":"Average rating",
"reviewCount":"{count} reviews",
"empty":"No reviews yet.",
"ownerReply":"Cafe reply",
"reply":"Reply",
"replyPlaceholder":"Write your reply..."
},
"sms":{
"title":"SMS marketing",
"message":"Message",
"messagePlaceholder":"Write your SMS text...",
"targetGroup":"Target group",
"allCustomers":"All customers",
"send":"Send",
"usage":"Usage this month",
"unlimited":"Unlimited",
"sent":"Sent",
"failed":"Failed"
},
"reports":{
"title":"Reports & analytics",
"subtitle":"Sales summary from daily snapshots",
"exportCsv":"Download CSV",
"fromDate":"From",
"toDate":"To",
"branch":"Branch",
"allBranches":"All branches",
"preset":{
"7d":"7 days",
"30d":"30 days",
"90d":"90 days"
},
"kpiTotalRevenue":"Total revenue",
"kpiTotalOrders":"Orders",
"kpiAvgOrder":"Avg. order value",
"kpiNetIncome":"Net income",
"kpiTotalExpenses":"Total expenses",
"vsPrevious":"vs previous period",
"revenueChartTitle":"Daily revenue trend",
"paymentMixTitle":"Payment methods",
"branchCompareTitle":"Branch comparison",
"topProductsTitle":"Top products",
"colProduct":"Product",
"colQuantity":"Qty",
"colRevenue":"Revenue",
"revenue":"Revenue",
"cash":"Cash",
"card":"Card",
"credit":"Credit",
"noData":"No data",
"loading":"Loading...",
"csvDate":"Date",
"csvBranch":"Branch",
"csvTotalRevenue":"Total revenue",
"csvTotalOrders":"Orders",
"csvAvgOrder":"Avg order",
"csvCash":"Cash",
"csvCard":"Card",
"csvCredit":"Credit",
"csvNetIncome":"Net income",
"csvVoids":"Voids",
"csvVoidAmount":"Void amount",
"csvExpenses":"Expenses"
},
"shifts":{
"title":"Cash shift",
"subtitle":"Open and close the register daily",
"branch":"Branch",
"openShift":"Open shift",
"shiftOpen":"Shift is open",
"startShift":"Start shift",
"closeShift":"Close shift",
"confirmClose":"Confirm close",
"openingCash":"Opening float",
"expectedCash":"Expected cash",
"countedCash":"Counted cash",
"opened":"Shift opened",
"closed":"Shift closed"
},
"expenses":{
"title":"Expenses",
"subtitle":"Log and track branch expenses",
"addExpense":"Log expense",
"listTitle":"Expense log",
"branch":"Branch",
"fromDate":"From",
"toDate":"To",
"periodTotal":"Period total",
"category":"Category",
"amount":"Amount",
"note":"Note",
"notePlaceholder":"Optional",
"linkOpenShift":"Deduct from open register (cash withdrawal)",
"noOpenShift":"No open shift — expense will not link to a register",
"colDate":"Date",
"colCategory":"Category",
"colNote":"Note",
"colAmount":"Amount",
"loading":"Loading...",
"empty":"No expenses logged",
"rowCount":"{count} rows",
"categories":{
"Supplies":"Supplies",
"Utilities":"Utilities",
"Salary":"Salary",
"Rent":"Rent",
"Maintenance":"Maintenance",
"Other":"Other"
}
},
"queue":{
"title":"Daily queue",
"subtitle":"Ticket numbers restart at 1 each day (Iran calendar)",
"nowServing":"Now serving",
"lastIssued":"Last issued",
"waitingCount":"{count} waiting",
"issueNext":"New number",
"callNext":"Call next",
"customerLabelPlaceholder":"Guest name (optional)",
"dailyResetHint":"Numbers reset at midnight Iran time.",
"empty":"No tickets issued today yet.",
"issuedOnOrder":"Queue #{number}",
"openDisplay":"TV display",
"displayMode":"Fullscreen",
"exitDisplay":"Back to panel",
"displayWaitingLabel":"In queue",
"displayUpNext":"Up next",
"status":{
"Waiting":"Waiting",
"Called":"Called",
"Done":"Done",
"Cancelled":"Cancelled"
}
},
"kds":{
"title":"Kitchen display",
"pending":"Pending",
"preparing":"Preparing",
"ready":"Ready",
"table":"Table",
"noOrders":"No orders",
"loading":"Loading...",
"live":"Live",
"polling":"Polling",
"advance":"Next step",
"status":{
"Pending":"Pending",
"Confirmed":"Confirmed",
"Preparing":"Preparing",
"Ready":"Ready",
"Delivered":"Delivered",
"Cancelled":"Cancelled"
},
"advanceTo":{
"Confirmed":"Confirm order",
"Preparing":"Start preparing",
"Ready":"Mark ready",
"Delivered":"Mark delivered"
}
},
"tables":{
"title":"Table management",
"addTable":"Add table",
"number":"Table number",
"capacity":"Capacity",
"floor":"Floor",
"floorPlan":"Floor plan",
"empty":"No tables yet.",
"emptyBranch":"No tables for this branch.",
"allBranches":"All branches",
"branchFilter":"Branch filter",
"branch":"Branch",
"branchUnassigned":"No branch",
"branchHint":"Tables belong to your café; branch is optional for POS and reports.",
"tableLabel":"Table {number}",
"meta":"Cap. {capacity} · Floor {floor}",
"status":{
"Free":"Free",
"Busy":"Occupied",
"Reserved":"Reserved",
"Cleaning":"Cleaning",
"free":"Available",
"occupied":"Occupied",
"reserved":"Reserved",
"cleaning":"Cleaning"
},
"markCleaning":"Needs cleaning",
"markReady":"Ready for guests",
"activeOrder":"Active order",
"reserved":"Reserved",
"printQr":"Print QR",
"qrMenuUrl":"Guest menu link",
"openQrUrl":"Open",
"copyQrUrl":"Copy link",
"qrUrlCopied":"Link copied",
"qrUrlCopyFailed":"Could not copy link",
"reprintHint":"Lost QR? Same button — code never changes.",
"deactivate":"Deactivate",
"inactive":"Inactive",
"edit":"Edit",
"editTable":"Edit table",
"reactivate":"Reactivate",
"saveTable":"Save table",
"media":"Table image & video",
"section":"Section",
"sections":"Sections",
"addSection":"Add section",
"noSection":"No section",
"noSectionsYet":"No sections defined yet.",
"sectionTableCount":"{count} tables",
"sectionHasTables":"This section has tables and cannot be deleted",
"tableHasOpenOrder":"This table has an open order",
"deleteTable":"Delete table",
"deleteTableConfirm":"Permanently delete this table? (Only when it has no open order)",
"deleteError":"Could not delete table",
"createError":"Could not add table",
"cleaningError":"Could not update cleaning status"
},
"menuAdmin":{
"title":"Menu management",
"subtitle":"Images, prices, and per-item discounts",
"categories":"Categories",
"items":"Items",
"addCategory":"New category",
"addItem":"Add item",
"name":"Name",
"nameEn":"English name (for international guests)",
"price":"Price (T)",
"category":"Category",
"available":"Available",
"unavailable":"Unavailable",
"discountPercent":"Discount (%)",
"discountBadge":"off",
"uploadImage":"Upload image",
"imageReady":"Image ready",
"empty":"No menu items yet.",
"editItem":"Edit",
"editCategory":"Edit category",
"categoryIcon":"Icon (emoji)",
"categoryImage":"Category image",
"iconTabPreset":"Preset icons",
"iconTabEmoji":"Emoji",
"iconTabImage":"Upload image",
"iconStyleLabel":"Design style",
"iconPreview":"Preview:",
"clearIconPreset":"Clear icon",
"clearIconEmoji":"Clear emoji",
"categoryIconCustom":"Or custom emoji",
"iconPresetGroupDrinks":"Drinks",
"iconPresetGroupFood":"Food",
"iconStyles":{
"flat":"Flat",
"modern":"Modern",
"real":"Real",
"minimal":"Minimal",
"outline":"Outline",
"soft":"Soft",
"bold":"Bold",
"gradient":"Gradient",
"pastel":"Pastel",
"duotone":"Duotone"
},
"iconEmojiGroups":{
"hotDrinks":"Hot drinks",
"coldDrinks":"Cold drinks",
"breakfast":"Breakfast",
"mains":"Main dishes",
"pastaPizza":"Pasta & pizza",
"desserts":"Desserts",
"salads":"Salads",
"seafoodGrill":"Grill & seafood",
"snacks":"Snacks & fast food",
"vegan":"Plant-based",
"specials":"Specials",
"general":"General"
},
"iconPresets":{
"drinks-hot":"Hot coffee",
"drinks-cold":"Cold drinks",
"drinks-tea":"Tea",
"drinks-juice":"Juice",
"drinks-milkshake":"Milk & smoothies",
"drinks-alcohol":"Wine",
"drinks-beer":"Beer",
"breakfast":"Breakfast",
"food-mains":"Main dishes",
"food-fastfood":"Fast food",
"food-rice":"Rice dishes",
"pasta-pizza":"Pasta & pizza",
"dessert":"Dessert",
"ice-cream":"Ice cream",
"bakery":"Bakery",
"salad":"Salad",
"grill":"Grill",
"seafood":"Seafood",
"snacks":"Sandwich",
"snacks-sweet":"Pastries",
"appetizers":"Appetizers",
"vegan":"Plant-based",
"fruits":"Fruits",
"specials":"Specials",
"chef-special":"Chef's pick",
"generic":"General"
},
"media":"Image & video",
"tabCatalog":"Catalog",
"tabBranch":"Branch settings",
"selectBranchForOverrides":"Select a branch above to manage its menu overrides."
},
"branchMenu":{
"title":"Branch Menu",
"name":"Name",
"masterPrice":"Master Price",
"branchPrice":"Branch Price",
"availability":"Status",
"available":"Active",
"unavailable":"Hidden",
"resetOverride":"Reset",
"savePrice":"Save",
"actions":"Actions",
"priceOverridePro":"Price overrides require Pro plan",
"overrideActive":"Branch override active",
"confirmReset":"Reset this item to catalog defaults?",
"loading":"Loading..."
},
"media":{
"uploadImage":"Upload image",
"uploadVideo":"Upload video",
"removeImage":"Remove image",
"removeVideo":"Remove video",
"upload3dTitle":"3D view (optional)",
"upload3dHint":"GLB file up to {maxMb} MB — guests can rotate the item on touch",
"upload3dPhotoCount":"Besides cover photo: one GLB is enough. For photo-based 360° (future): {min}–{ideal} photos from different angles",
"upload3d":"Upload 3D model",
"remove3d":"Remove model",
"upload3dReady":"3D model will show on the QR menu",
"ai3dTitle":"AI 3D generation",
"ai3dHint":"Build a GLB from the product photo for the QR menu (Business plan and above).",
"ai3dGenerate":"Generate 3D with AI",
"ai3dGenerating":"Generating…",
"ai3dUsage":"Monthly quota: {used} of {limit}",
"ai3dSuccess":"3D model generated.",
"ai3dFailed":"3D generation failed.",
"ai3dLimitReached":"Monthly AI quota (100) is used up.",
"ai3dNoImage":"Upload a product photo first."
},
"taxes":{
"title":"Taxes",
"subtitle":"Rates applied to menu categories",
"addTax":"Add tax",
"name":"Name (e.g. VAT)",
"rate":"Rate (%)",
"hint":"Default tax applies to new categories. Taraz submission is in Settings.",
"empty":"No taxes defined.",
"default":"Default",
"setDefault":"Set default",
"delete":"Remove",
"deleteConfirm":"Remove \"{name}\" from the list? Menu categories using this tax will switch to the next default tax (or no tax).",
"required":"Required",
"optional":"Optional",
"ownerOnly":"Only the café owner can change taxes."
},
"branches":{
"label":"Branch"
},
"inventory":{
"title":"Inventory",
"subtitle":"Materials, menu recipes, and auto-deduction on orders",
"description":"Track ingredient quantities and reorder levels.",
"tabMaterials":"Materials",
"tabRecipes":"Menu recipes",
"addIngredient":"New ingredient",
"name":"Name",
"unit":"Unit",
"unitHint":"g, ml, pcs...",
"unitCustom":"Other (custom)",
"unitCustomPlaceholder":"e.g. cup, shot",
"unitsHelp":"Unit for stock and recipes: pcs, g, ml, etc. Change on-hand qty with +/- on each card.",
"units":{
"piece":"Piece (pcs)",
"gram":"Gram (g)",
"kilogram":"Kilogram (kg)",
"milliliter":"Milliliter (ml)",
"liter":"Liter (l)",
"cc":"cc",
"pack":"Pack",
"can":"Can",
"bag":"Bag"
},
"editIngredient":"Edit material",
"updated":"Material updated",
"quantityEditHint":"on-hand qty changes via +/- on this card only",
"quantity":"On hand",
"parLevel":"Full stock (e.g. 500 g)",
"unitCost":"Unit cost (Toman)",
"warningPercent":"Warning %",
"reorderLevel":"Reorder level",
"reorder":"Reorder at",
"warningAt":"Warn below",
"stockValue":"Stock value",
"lowStock":"Low",
"lowStockAlert":"Below warning level — refill these materials",
"adjust":"Apply",
"adjustDelta":"+/- qty",
"adjustNote":"Manual adjustment",
"adjusted":"Stock updated",
"created":"Ingredient added",
"empty":"No ingredients yet.",
"defaultUnit":"pcs",
"selectMenuItem":"Menu item",
"selectMenuItemPlaceholder":"Select...",
"recipeLines":"Per sold unit",
"perUnit":"Qty",
"pickIngredient":"Ingredient",
"addLine":"Add",
"saveRecipe":"Save recipe",
"recipeSaved":"Recipe saved",
"materialCostPerUnit":"Material cost / unit",
"recipeHint":"Example: 10 g coffee per espresso — 10 orders use 100 g.",
"totalPaid":"Amount paid (Toman)",
"impliedUnitCost":"Calculated unit cost",
"purchaseNote":"Stock purchase",
"purchaseHint":"For stock in (+), enter amount paid — recorded in expenses and reports.",
"purchaseRequired":"Amount paid and branch are required to add stock.",
"purchasesThisMonth":"Material purchases this month",
"purchaseCount":"{count} purchases",
"viewInExpenses":"View in expenses",
"selectBranchForPurchases":"Select a branch in the top bar to record warehouse purchases."
},
"qr":{
"brand":"Meezi",
"notFound":"Table not found",
"loadError":"Failed to load",
"tableLabel":"Table {number}",
"hint":"Open the Meezi app to order, or ask at the counter.",
"discoverCta":"Discover cafés on Meezi"
},
"qrMenu":{
"loading":"Loading...",
"welcome":"Welcome",
"tableLabel":"Table",
"tableNotFound":"Table not found or menu unavailable",
"tableCleaning":"This table is being cleaned — please ask staff",
"loadError":"Could not load menu",
"scanAgain":"Please scan the QR code again",
"addToCart":"Add",
"viewCart":"View cart",
"cartTitle":"Your cart",
"placeOrder":"Place order",
"orderPlaced":"Order placed!",
"orderNumber":"Order #: {number}",
"orderHint":"Staff will prepare your order shortly",
"guestName":"Your name (optional)",
"guestPhone":"Mobile (optional)",
"addMoreItems":"Add more items",
"orderError":"Could not place order. Try again.",
"rateLimited":"Too many requests — please wait a few minutes",
"captchaRequired":"Please complete the security check",
"cafeUnavailable":"This café is temporarily unavailable",
"subtotal":"Total",
"searchPlaceholder":"Search menu...",
"allCategories":"All",
"searchNoResults":"No items match your search",
"clearSearch":"Clear search",
"emptyCategory":"No items in this category",
"view3d":"3D",
"view3dHint":"Drag to rotate — model spins live",
"close3d":"Close",
"emptyMenu":"This branch menu is empty or unavailable",
"guestQrBadge":"QR guest",
"tabMenu":"Menu",
"tabOrders":"My orders",
"callWaiter":"Call waiter",
"callWaiterSent":"Waiter is on the way!",
"callWaiterCooldown":"Please wait 60 seconds",
"callWaiterError":"Error — please try again",
"myOrders":"Orders at this table",
"noOrders":"No orders yet",
"tracking":{
"back":"Back to menu",
"orderNumber":"Order number",
"table":"Table",
"loadError":"Could not load tracking",
"currentStep":"In progress",
"readyHint":"Your order is ready — pick it up at the counter or table",
"status":{
"pending":"Waiting for the café",
"seen":"Seen by staff",
"preparing":"Kitchen is preparing",
"ready":"Ready for pickup",
"done":"Delivered",
"cancelled":"Cancelled"
},
"steps":{
"submitted":"Order submitted",
"seen":"Seen by restaurant",
"preparing":"Preparing",
"ready":"Ready",
"done":"Completed",
"cancelled":"Cancelled"
}
}
},
"notifications":{
"title":"Notifications",
"pageTitle":"Notifications",
"empty":"No notifications",
"emptyUnread":"No unread notifications",
"markAllRead":"Mark all read",
"unreadCount":"{count} unread",
"filterLabel":"Filter notifications",
"filterAll":"All",
"filterUnread":"Unread",
"loading":"Loading...",
"refreshing":"Updating...",
"backToList":"Back to list"
},
"reservations":{
"title":"Reservations",
"guest":"Guest",
"phone":"Phone",
"date":"Date",
"time":"Time",
"party":"Guests",
"table":"Table",
"tableOptional":"No specific table",
"tableNumber":"Table {number}",
"notes":"Notes",
"confirm":"Confirm",
"cancel":"Cancel",
"create":"Create reservation",
"newReservation":"Manual reservation",
"newReservationHint":"Pick table and time. When the guest arrives, use “Order & pay” at POS.",
"openPos":"Order & pay",
"markCompleted":"Mark completed",
"empty":"No reservations",
"status":{
"Pending":"Pending",
"Confirmed":"Confirmed",
"Cancelled":"Cancelled",
"Seated":"Seated",
"Completed":"Completed"
}
},
"branchesPage":{
"title":"Branches",
"subtitle":"Each branch has its own login mobile under the café master plan",
"listTitle":"Branch list",
"newName":"Branch name",
"loginPhone":"Branch login mobile",
"managerName":"Branch manager name",
"managerNamePlaceholder":"Optional — defaults to branch name",
"addSection":"New branch",
"add":"Add branch",
"empty":"No branches yet.",
"created":"Branch and login account created.",
"createError":"Could not add branch (duplicate phone or plan limit)",
"branchSelectHint":"Pick the active branch on POS and queue.",
"masterPlanHint":"Billing and taxes are managed only by the café owner.",
"ownerOnly":"Only the café owner can manage branches.",
"delete":"Delete branch",
"deleteTitle":"Delete this branch?",
"deleteWarning":"Tables, staff, branch menu overrides, and related data will be removed. You can restore within 7 days; after that the branch is permanently deleted.",
"deleteConfirm":"Yes, delete branch",
"deleteScheduled":"Branch scheduled for deletion. You can restore it within 7 days.",
"deleteError":"Could not delete branch (maybe it is the last active branch).",
"restore":"Restore",
"restored":"Branch restored.",
"restoreError":"Could not restore branch.",
"pendingTitle":"Pending permanent deletion",
"pendingHint":"These branches are inactive. They will be permanently removed when the timer ends.",
"purgeInDays":"Permanent delete in {days} days",
"purgeInOneDay":"Permanent delete tomorrow",
"purgeToday":"Permanent delete today",
"review":"Review",
"reviewTitle":"Branch details",
"location":"Location"
},
"subscription":{
"title":"Plan & billing",
"subtitle":"Current plan, usage, and upgrades",
"currentPlan":"Current plan",
"expires":"Expires",
"noExpiry":"—",
"refresh":"Refresh",
"ordersToday":"Orders today",
"customers":"Customers",
"smsUsage":"SMS this month",
"paymentSuccess":"Payment successful. Your plan was updated.",
"paymentFailed":"Payment failed.",
"loading":"Loading...",
"ownerOnly":"Only the café owner can manage billing. Branches use the master café plan.",
"paymentMethod":"Payment method",
"planExpired":"Subscription expired",
"featureMenu3d":"3D menu",
"featureDiscover":"Discover profile (AI)",
"featureOn":"Enabled",
"featureOff":"Not included — upgrade",
"featureMenu3dUpgrade":"3D menu is available on Pro and higher plans.",
"featureMenuAi3d":"AI 3D generation",
"featureMenuAi3dUpgrade":"AI 3D generation is on Business and Enterprise (100 per month)."
},
"settings":{
"title":"Settings",
"subtitle":"Shop profile, printers, and integrations",
"terminals":{
"title":"Active terminals",
"hint":"Your plan allows up to {max} concurrent terminals.",
"thisDevice":"This device",
"empty":"No terminals registered",
"revoke":"Remove",
"revoked":"Terminal removed",
"loading":"Loading…"
},
"nav":{
"aria":"Settings menu",
"shop":"Shop & café",
"shopGeneral":"Profile & integrations",
"shopAppearance":"Appearance & colors",
"printer":"Printer",
"printerSettings":"Printer settings",
"printTest":"Print test page",
"shopDiscover":"Discover & AI"
},
"appearance":{
"paletteSection":"Color palette",
"paletteTitle":"Choose a preset palette",
"paletteHint":"Palette colors apply to the dashboard and the guest QR menu.",
"dashboardSection":"Dashboard",
"dashboardTitle":"Dashboard look",
"dashboardDesc":"How admin pages look (POS, inventory, reports) — separate from the table QR menu.",
"dashboardPreviewSection":"Preview",
"dashboardPreviewTitle":"Dashboard sample",
"dashboardPreviewHint":"Sample sidebar and item card in this panel; updates with panel style, density, and corners.",
"panelStyle":"Dashboard panel style",
"guestMenuStyle":"QR menu layout",
"menuTexture":"QR menu background texture",
"guestMenuSection":"Table QR menu",
"guestMenuTitle":"Guest menu template",
"guestMenuDesc":"What guests see when scanning the table QR — separate from your dashboard.",