chore: format project automatically before starting dev server

This commit is contained in:
2026-09-16 14:14:04 +03:30
parent 7c55b3916c
commit 812029fe84
66 changed files with 2088 additions and 1125 deletions
+182 -39
View File
@@ -3,15 +3,30 @@ import type {OrderStatus, PaymentStatus} from '@/types/account';
export const orderStatusLabels: Record<Locale, Record<OrderStatus, string>> = {
fa: {
registered: 'ثبت‌شده', under_review: 'در حال بررسی', needs_information: 'نیازمند تکمیل اطلاعات',
approved: 'تأییدشده', proforma_issued: 'پیش‌فاکتور صادرشده', awaiting_payment: 'در انتظار پرداخت',
preparing: 'در حال آماده‌سازی', ready_to_ship: 'آماده ارسال', shipped: 'ارسال‌شده',
delivered: 'تحویل‌شده', cancelled: 'لغوشده',
registered: 'ثبت‌شده',
under_review: 'در حال بررسی',
needs_information: 'نیازمند تکمیل اطلاعات',
approved: 'تأییدشده',
proforma_issued: 'پیش‌فاکتور صادرشده',
awaiting_payment: 'در انتظار پرداخت',
preparing: 'در حال آماده‌سازی',
ready_to_ship: 'آماده ارسال',
shipped: 'ارسال‌شده',
delivered: 'تحویل‌شده',
cancelled: 'لغوشده',
},
en: {
registered: 'Registered', under_review: 'Under review', needs_information: 'More information required',
approved: 'Approved', proforma_issued: 'Proforma issued', awaiting_payment: 'Awaiting payment',
preparing: 'Preparing', ready_to_ship: 'Ready to ship', shipped: 'Shipped', delivered: 'Delivered', cancelled: 'Cancelled',
registered: 'Registered',
under_review: 'Under review',
needs_information: 'More information required',
approved: 'Approved',
proforma_issued: 'Proforma issued',
awaiting_payment: 'Awaiting payment',
preparing: 'Preparing',
ready_to_ship: 'Ready to ship',
shipped: 'Shipped',
delivered: 'Delivered',
cancelled: 'Cancelled',
},
};
@@ -21,42 +36,170 @@ export const paymentStatusLabels: Record<Locale, Record<PaymentStatus, string>>
};
const fa = {
login: 'ورود', account: 'حساب کاربری', dashboard: 'داشبورد', profile: 'اطلاعات حساب', orders: 'سفارش‌ها', logout: 'خروج',
robotMasterPanel: 'پنل روبات مستر', otpLogin: 'ورود با کد یک‌بارمصرف', passwordLogin: 'ورود با رمز عبور',
phone: 'شماره موبایل', password: 'رمز عبور', otp: 'کد تأیید', sendOtp: 'دریافت کد', verifyAndLogin: 'تأیید و ورود',
loginButton: 'ورود به حساب', demoTitle: 'اطلاعات ورود آزمایشی', demoOtp: 'کد نمونه: ۱۲۳۴۵', demoPassword: 'شماره ۰۹۱۲۳۴۵۶۷۸۹ و رمز ۱۲۳۴۵۶',
otpSent: 'کد آزمایشی برای این شماره آماده است.', invalidPhone: 'شماره موبایل معتبر وارد کنید.', invalidCredentials: 'شماره یا رمز عبور صحیح نیست.',
protectedTitle: 'برای ادامه وارد حساب شوید', protectedDescription: 'مشاهده جزئیات دستگاه، سبد خرید و داشبورد فقط پس از ورود امکان‌پذیر است.',
openLogin: 'ورود به حساب', welcome: 'خوش آمدید', dashboardDescription: 'اطلاعات حساب و روند سفارش‌های خود را از اینجا مدیریت کنید.',
profileCompletion: 'تکمیل اطلاعات', activeOrders: 'سفارش فعال', totalOrders: 'همه سفارش‌ها', recentOrders: 'آخرین سفارش‌ها', viewAll: 'مشاهده همه',
save: 'ذخیره اطلاعات', saved: 'اطلاعات با موفقیت ذخیره شد.', individual: 'شخص حقیقی', corporate: 'شخص حقوقی', customerType: 'نوع خریدار',
firstName: 'نام', lastName: 'نام خانوادگی', email: 'ایمیل', province: 'استان', city: 'شهر', address: 'نشانی کامل', postalCode: 'کد پستی', preferredCallTime: 'زمان مناسب تماس',
companyName: 'نام شرکت', nationalId: 'شناسه ملی', economicCode: 'کد اقتصادی', verifiedPhone: 'شماره تأییدشده و قابل ویرایش نیست.',
orderNumber: 'شماره سفارش', orderDate: 'تاریخ ثبت', lastUpdate: 'آخرین به‌روزرسانی', orderStatus: 'وضعیت سفارش', paymentStatus: 'وضعیت پرداخت', details: 'مشاهده جزئیات',
orderItems: 'اقلام سفارش', quantity: 'تعداد', unitPrice: 'قیمت واحد', total: 'جمع کل', modules: 'ماژول‌ها و امکانات', timeline: 'روند سفارش',
invoice: 'پیش‌فاکتور', invoicePending: 'پیش‌فاکتور پس از بررسی تلفنی و تأیید ادمین در این بخش قرار می‌گیرد.', downloadPdf: 'دانلود PDF', downloadExcel: 'دانلود Excel', print: 'چاپ',
invoiceNumber: 'شماره پیش‌فاکتور', issueDate: 'تاریخ صدور', validUntil: 'اعتبار تا', buyer: 'خریدار', seller: 'فروشنده', subtotal: 'جمع اقلام', discount: 'تخفیف', shipping: 'هزینه ارسال', tax: 'مالیات', finalTotal: 'مبلغ نهایی',
sellerName: 'شرکت نگین سازان پیشگام رادمهر آتوسا (روبات مارکت)', sellerPhone: 'تلفن سفارش: ۰۹۱۵۱۶۰۱۸۴۷', emptyOrders: 'هنوز سفارشی ثبت نشده است.', backToOrders: 'بازگشت به سفارش‌ها', notFound: 'سفارش پیدا نشد.',
login: 'ورود',
account: 'حساب کاربری',
dashboard: 'داشبورد',
profile: 'اطلاعات حساب',
orders: 'سفارش‌ها',
logout: 'خروج',
robotMasterPanel: 'پنل روبات مستر',
otpLogin: 'ورود با کد یک‌بارمصرف',
passwordLogin: 'ورود با رمز عبور',
phone: 'شماره موبایل',
password: 'رمز عبور',
otp: 'کد تأیید',
sendOtp: 'دریافت کد',
verifyAndLogin: 'تأیید و ورود',
loginButton: 'ورود به حساب',
demoTitle: 'اطلاعات ورود آزمایشی',
demoOtp: 'کد نمونه: ۱۲۳۴۵',
demoPassword: 'شماره ۰۹۱۲۳۴۵۶۷۸۹ و رمز ۱۲۳۴۵۶',
otpSent: 'کد آزمایشی برای این شماره آماده است.',
invalidPhone: 'شماره موبایل معتبر وارد کنید.',
invalidCredentials: 'شماره یا رمز عبور صحیح نیست.',
protectedTitle: 'برای ادامه وارد حساب شوید',
protectedDescription: 'مشاهده جزئیات دستگاه، سبد خرید و داشبورد فقط پس از ورود امکان‌پذیر است.',
openLogin: 'ورود به حساب',
welcome: 'خوش آمدید',
dashboardDescription: 'اطلاعات حساب و روند سفارش‌های خود را از اینجا مدیریت کنید.',
profileCompletion: 'تکمیل اطلاعات',
activeOrders: 'سفارش فعال',
totalOrders: 'همه سفارش‌ها',
recentOrders: 'آخرین سفارش‌ها',
viewAll: 'مشاهده همه',
save: 'ذخیره اطلاعات',
saved: 'اطلاعات با موفقیت ذخیره شد.',
individual: 'شخص حقیقی',
corporate: 'شخص حقوقی',
customerType: 'نوع خریدار',
firstName: 'نام',
lastName: 'نام خانوادگی',
email: 'ایمیل',
province: 'استان',
city: 'شهر',
address: 'نشانی کامل',
postalCode: 'کد پستی',
preferredCallTime: 'زمان مناسب تماس',
companyName: 'نام شرکت',
nationalId: 'شناسه ملی',
economicCode: 'کد اقتصادی',
verifiedPhone: 'شماره تأییدشده و قابل ویرایش نیست.',
orderNumber: 'شماره سفارش',
orderDate: 'تاریخ ثبت',
lastUpdate: 'آخرین به‌روزرسانی',
orderStatus: 'وضعیت سفارش',
paymentStatus: 'وضعیت پرداخت',
details: 'مشاهده جزئیات',
orderItems: 'اقلام سفارش',
quantity: 'تعداد',
unitPrice: 'قیمت واحد',
total: 'جمع کل',
modules: 'ماژول‌ها و امکانات',
timeline: 'روند سفارش',
invoice: 'پیش‌فاکتور',
invoicePending: 'پیش‌فاکتور پس از بررسی تلفنی و تأیید ادمین در این بخش قرار می‌گیرد.',
downloadPdf: 'دانلود PDF',
downloadExcel: 'دانلود Excel',
print: 'چاپ',
invoiceNumber: 'شماره پیش‌فاکتور',
issueDate: 'تاریخ صدور',
validUntil: 'اعتبار تا',
buyer: 'خریدار',
seller: 'فروشنده',
subtotal: 'جمع اقلام',
discount: 'تخفیف',
shipping: 'هزینه ارسال',
tax: 'مالیات',
finalTotal: 'مبلغ نهایی',
sellerName: 'شرکت نگین سازان پیشگام رادمهر آتوسا (روبات مارکت)',
sellerPhone: 'تلفن سفارش: ۰۹۱۵۱۶۰۱۸۴۷',
emptyOrders: 'هنوز سفارشی ثبت نشده است.',
backToOrders: 'بازگشت به سفارش‌ها',
notFound: 'سفارش پیدا نشد.',
};
export const accountCopy: Record<Locale, typeof fa> = {
fa,
en: {
login: 'Login', account: 'Account', dashboard: 'Dashboard', profile: 'Profile', orders: 'Orders', logout: 'Log out',
robotMasterPanel: 'Robot Master Panel', otpLogin: 'Login with OTP', passwordLogin: 'Login with password',
phone: 'Mobile number', password: 'Password', otp: 'Verification code', sendOtp: 'Send code', verifyAndLogin: 'Verify and login',
loginButton: 'Login', demoTitle: 'Demo credentials', demoOtp: 'Demo code: 12345', demoPassword: 'Phone 09123456789 and password 123456',
otpSent: 'The demo code is ready for this number.', invalidPhone: 'Enter a valid Iranian mobile number.', invalidCredentials: 'Incorrect phone number or password.',
protectedTitle: 'Log in to continue', protectedDescription: 'Product details, cart, and dashboard are available after login.',
openLogin: 'Login', welcome: 'Welcome', dashboardDescription: 'Manage your account details and follow your orders.',
profileCompletion: 'Profile completion', activeOrders: 'Active orders', totalOrders: 'All orders', recentOrders: 'Recent orders', viewAll: 'View all',
save: 'Save profile', saved: 'Your profile was saved.', individual: 'Individual', corporate: 'Company', customerType: 'Customer type',
firstName: 'First name', lastName: 'Last name', email: 'Email', province: 'Province', city: 'City', address: 'Full address', postalCode: 'Postal code', preferredCallTime: 'Preferred call time',
companyName: 'Company name', nationalId: 'National ID', economicCode: 'Economic code', verifiedPhone: 'This verified number cannot be edited.',
orderNumber: 'Order number', orderDate: 'Created', lastUpdate: 'Last update', orderStatus: 'Order status', paymentStatus: 'Payment status', details: 'View details',
orderItems: 'Order items', quantity: 'Quantity', unitPrice: 'Unit price', total: 'Total', modules: 'Modules and options', timeline: 'Order progress',
invoice: 'Proforma invoice', invoicePending: 'The invoice appears here after phone review and admin approval.', downloadPdf: 'Download PDF', downloadExcel: 'Download Excel', print: 'Print',
invoiceNumber: 'Invoice number', issueDate: 'Issue date', validUntil: 'Valid until', buyer: 'Buyer', seller: 'Seller', subtotal: 'Subtotal', discount: 'Discount', shipping: 'Shipping', tax: 'Tax', finalTotal: 'Grand total',
sellerName: 'Negin Sazan Pishgam Radmehr Atousa (Robot Market)', sellerPhone: 'Sales: 09151601847', emptyOrders: 'No orders have been registered.', backToOrders: 'Back to orders', notFound: 'Order not found.',
login: 'Login',
account: 'Account',
dashboard: 'Dashboard',
profile: 'Profile',
orders: 'Orders',
logout: 'Log out',
robotMasterPanel: 'Robot Master Panel',
otpLogin: 'Login with OTP',
passwordLogin: 'Login with password',
phone: 'Mobile number',
password: 'Password',
otp: 'Verification code',
sendOtp: 'Send code',
verifyAndLogin: 'Verify and login',
loginButton: 'Login',
demoTitle: 'Demo credentials',
demoOtp: 'Demo code: 12345',
demoPassword: 'Phone 09123456789 and password 123456',
otpSent: 'The demo code is ready for this number.',
invalidPhone: 'Enter a valid Iranian mobile number.',
invalidCredentials: 'Incorrect phone number or password.',
protectedTitle: 'Log in to continue',
protectedDescription: 'Product details, cart, and dashboard are available after login.',
openLogin: 'Login',
welcome: 'Welcome',
dashboardDescription: 'Manage your account details and follow your orders.',
profileCompletion: 'Profile completion',
activeOrders: 'Active orders',
totalOrders: 'All orders',
recentOrders: 'Recent orders',
viewAll: 'View all',
save: 'Save profile',
saved: 'Your profile was saved.',
individual: 'Individual',
corporate: 'Company',
customerType: 'Customer type',
firstName: 'First name',
lastName: 'Last name',
email: 'Email',
province: 'Province',
city: 'City',
address: 'Full address',
postalCode: 'Postal code',
preferredCallTime: 'Preferred call time',
companyName: 'Company name',
nationalId: 'National ID',
economicCode: 'Economic code',
verifiedPhone: 'This verified number cannot be edited.',
orderNumber: 'Order number',
orderDate: 'Created',
lastUpdate: 'Last update',
orderStatus: 'Order status',
paymentStatus: 'Payment status',
details: 'View details',
orderItems: 'Order items',
quantity: 'Quantity',
unitPrice: 'Unit price',
total: 'Total',
modules: 'Modules and options',
timeline: 'Order progress',
invoice: 'Proforma invoice',
invoicePending: 'The invoice appears here after phone review and admin approval.',
downloadPdf: 'Download PDF',
downloadExcel: 'Download Excel',
print: 'Print',
invoiceNumber: 'Invoice number',
issueDate: 'Issue date',
validUntil: 'Valid until',
buyer: 'Buyer',
seller: 'Seller',
subtotal: 'Subtotal',
discount: 'Discount',
shipping: 'Shipping',
tax: 'Tax',
finalTotal: 'Grand total',
sellerName: 'Negin Sazan Pishgam Radmehr Atousa (Robot Market)',
sellerPhone: 'Sales: 09151601847',
emptyOrders: 'No orders have been registered.',
backToOrders: 'Back to orders',
notFound: 'Order not found.',
},
};
+64 -63
View File
@@ -1,70 +1,71 @@
import type {Locale} from '@/types/domain';
const fa = {
allProducts: 'همه محصولات',
featuredProducts: 'محصولات منتخب',
productsDescription: 'دستگاه مناسب خود را انتخاب کنید و مشخصات آن را بررسی کنید.',
category: 'دسته‌بندی محصولات',
allCategories: 'همه دسته‌بندی‌ها',
clearFilters: 'پاک کردن فیلتر',
noProducts: 'محصولی با این دسته‌بندی پیدا نشد.',
unknownCategory: 'دسته‌بندی نامعتبر',
results: 'محصول',
details: 'جزئیات محصول',
increase: 'افزایش تعداد',
decrease: 'کاهش تعداد',
quantity: 'تعداد',
remove: 'حذف از سبد',
continueShopping: 'مشاهده دستگاه‌ها',
cartDescription: 'دستگاه‌های انتخاب‌شده و تعداد آن‌ها را اینجا بررسی کنید.',
summary: 'خلاصه سبد خرید',
unitPrice: 'قیمت هر دستگاه',
lineTotal: 'جمع این دستگاه',
currency: 'ریال',
cartLink: 'مشاهده سبد خرید',
specifications: 'ویژگی‌های دستگاه',
model: 'مدل دستگاه',
gallery: 'تصاویر دستگاه',
baseImage: 'نمای اصلی',
alternateImage: 'نمای جایگزین',
developmentTitle: 'روبات مارکت در حال توسعه است',
developmentMessage: 'به روبات مارکت خوش آمدید. سایت در حال توسعه است و هنوز تمام بخش‌های آن تکمیل نشده‌اند.',
acknowledge: 'متوجه شدم، ادامه می‌دهم',
checkoutUnavailable: 'ثبت نهایی سفارش و پرداخت آنلاین هنوز فعال نیست.',
allProducts: 'همه محصولات',
featuredProducts: 'محصولات منتخب',
productsDescription: 'دستگاه مناسب خود را انتخاب کنید و مشخصات آن را بررسی کنید.',
category: 'دسته‌بندی محصولات',
allCategories: 'همه دسته‌بندی‌ها',
clearFilters: 'پاک کردن فیلتر',
noProducts: 'محصولی با این دسته‌بندی پیدا نشد.',
unknownCategory: 'دسته‌بندی نامعتبر',
results: 'محصول',
details: 'جزئیات محصول',
increase: 'افزایش تعداد',
decrease: 'کاهش تعداد',
quantity: 'تعداد',
remove: 'حذف از سبد',
continueShopping: 'مشاهده دستگاه‌ها',
cartDescription: 'دستگاه‌های انتخاب‌شده و تعداد آن‌ها را اینجا بررسی کنید.',
summary: 'خلاصه سبد خرید',
unitPrice: 'قیمت هر دستگاه',
lineTotal: 'جمع این دستگاه',
currency: 'ریال',
cartLink: 'مشاهده سبد خرید',
specifications: 'ویژگی‌های دستگاه',
model: 'مدل دستگاه',
gallery: 'تصاویر دستگاه',
baseImage: 'نمای اصلی',
alternateImage: 'نمای جایگزین',
developmentTitle: 'روبات مارکت در حال توسعه است',
developmentMessage: 'به روبات مارکت خوش آمدید. سایت در حال توسعه است و هنوز تمام بخش‌های آن تکمیل نشده‌اند.',
acknowledge: 'متوجه شدم، ادامه می‌دهم',
checkoutUnavailable: 'ثبت نهایی سفارش و پرداخت آنلاین هنوز فعال نیست.',
};
export const commerceCopy: Record<Locale, Record<keyof typeof fa, string>> = {
fa,
en: {
allProducts: 'All products',
featuredProducts: 'Featured products',
productsDescription: 'Choose a machine and explore its specifications.',
category: 'Product category',
allCategories: 'All categories',
clearFilters: 'Clear filter',
noProducts: 'No products found in this category.',
unknownCategory: 'Unknown category',
results: 'products',
details: 'Product details',
increase: 'Increase quantity',
decrease: 'Decrease quantity',
quantity: 'Quantity',
remove: 'Remove from cart',
continueShopping: 'Browse machines',
cartDescription: 'Review your selected machines and adjust their quantities.',
summary: 'Cart summary',
unitPrice: 'Unit price',
lineTotal: 'Item total',
currency: 'Rials',
cartLink: 'View cart',
specifications: 'Machine features',
model: 'Machine model',
gallery: 'Machine images',
baseImage: 'Main view',
alternateImage: 'Alternate view',
developmentTitle: 'Robot Market is under development',
developmentMessage: 'Welcome to Robot Market. Our website is still under development and some features are not yet complete. You can explore machines and add them to your cart, but order submission and online payment are not available yet.',
acknowledge: 'Got it, continue',
checkoutUnavailable: 'Order submission and online payment are not available yet.',
},
fa,
en: {
allProducts: 'All products',
featuredProducts: 'Featured products',
productsDescription: 'Choose a machine and explore its specifications.',
category: 'Product category',
allCategories: 'All categories',
clearFilters: 'Clear filter',
noProducts: 'No products found in this category.',
unknownCategory: 'Unknown category',
results: 'products',
details: 'Product details',
increase: 'Increase quantity',
decrease: 'Decrease quantity',
quantity: 'Quantity',
remove: 'Remove from cart',
continueShopping: 'Browse machines',
cartDescription: 'Review your selected machines and adjust their quantities.',
summary: 'Cart summary',
unitPrice: 'Unit price',
lineTotal: 'Item total',
currency: 'Rials',
cartLink: 'View cart',
specifications: 'Machine features',
model: 'Machine model',
gallery: 'Machine images',
baseImage: 'Main view',
alternateImage: 'Alternate view',
developmentTitle: 'Robot Market is under development',
developmentMessage:
'Welcome to Robot Market. Our website is still under development and some features are not yet complete. You can explore machines and add them to your cart, but order submission and online payment are not available yet.',
acknowledge: 'Got it, continue',
checkoutUnavailable: 'Order submission and online payment are not available yet.',
},
};
+48 -34
View File
@@ -56,7 +56,8 @@ const machinesEn: Machine[] = [
shortLabel: '35 Channels',
priceLabel: '4,180,000,000 Rials',
priceNumeric: 4180000000,
description: 'Refrigerated, 35 dedicated channels, powerful cooling system, soft delivery, 24/7 online management.',
description:
'Refrigerated, 35 dedicated channels, powerful cooling system, soft delivery, 24/7 online management.',
highlights: ['Refrigerated', '35 dedicated channels', 'Soft delivery', '24/7 online management'],
image: '/images/machine-35-base.webp',
imageAlt: '/images/machine-35-white.webp',
@@ -96,8 +97,7 @@ export const content: Record<Locale, SiteContent> = {
lang: 'fa',
meta: {
title: 'روبات مارکت | دستگاه‌های وندینگ هوشمند',
description:
'روبات مارکت؛ دستگاه‌های فروش خودکار هوشمند با مدیریت آنلاین، تحویل نرم و طراحی مدرن.',
description: 'روبات مارکت؛ دستگاه‌های فروش خودکار هوشمند با مدیریت آنلاین، تحویل نرم و طراحی مدرن.',
},
nav: {
home: 'خانه',
@@ -140,7 +140,7 @@ export const content: Record<Locale, SiteContent> = {
total: 'جمع کل',
checkout: 'پرداخت / تسویه حساب',
checkoutToast: 'درگاه پرداخت به‌زودی متصل می‌شود.',
addToast: (name) => `${name} به سبد خرید اضافه شد`,
addToast: name => `${name} به سبد خرید اضافه شد`,
},
machineActions: {
addToCart: 'افزودن به سبد خرید',
@@ -148,7 +148,7 @@ export const content: Record<Locale, SiteContent> = {
wishlistRemove: 'حذف از علاقه‌مندی‌ها',
hoverHint: 'نشانگر را روی دستگاه حرکت دهید',
altVariant: 'رنگ جایگزین',
gifAlt: (name) => `نمایش عملکرد ${name}`,
gifAlt: name => `نمایش عملکرد ${name}`,
},
machines: machinesFa,
features: [
@@ -156,25 +156,25 @@ export const content: Record<Locale, SiteContent> = {
id: 'warranty',
icon: 'safety',
title: 'ضمانت کالا',
description: 'کلیه محصولات شرکت دارای یک سال خدمات پس از فروش می‌باشند.'
description: 'کلیه محصولات شرکت دارای یک سال خدمات پس از فروش می‌باشند.',
},
{
id: 'consulting',
icon: 'consulting',
title: 'مشاوره تخصصی و رایگان',
description: 'خدمات مشاوره رایگان در مورد نوع دستگاه و چیدمان محصولات.'
description: 'خدمات مشاوره رایگان در مورد نوع دستگاه و چیدمان محصولات.',
},
{
id: 'installment',
icon: 'installment',
title: 'امکان خرید اقساطی',
description: 'امکان خرید اقساط با شرایط آسان و مناسب جهت کلیه مشاغل.'
description: 'امکان خرید اقساط با شرایط آسان و مناسب جهت کلیه مشاغل.',
},
{
id: 'packaging',
icon: 'packaging',
title: 'بسته‌بندی ایمن',
description: 'با درخواست شما، محصولات با بسته‌بندی باکس پالت با هزینه‌ای اندک ارسال می‌شود.'
description: 'با درخواست شما، محصولات با بسته‌بندی باکس پالت با هزینه‌ای اندک ارسال می‌شود.',
},
],
about: {
@@ -200,43 +200,48 @@ export const content: Record<Locale, SiteContent> = {
id: 'hotels',
icon: 'hotel',
title: 'هتل‌ها و مراکز اقامتی',
description: 'هر جایی که جمعیت زیادی در صف انتظار قرار دارند، به‌جز درآمد، روبات مارکت جزو امکانات رفاهی آن مکان محسوب شده و میزان رضایت مراجعان را نیز افزایش می‌دهد.'
description:
'هر جایی که جمعیت زیادی در صف انتظار قرار دارند، به‌جز درآمد، روبات مارکت جزو امکانات رفاهی آن مکان محسوب شده و میزان رضایت مراجعان را نیز افزایش می‌دهد.',
},
{
id: 'schools',
icon: 'school',
title: 'مراکز آموزشی و مدارس',
description: 'در صورتی که هر یک از دانش‌آموزان و دانشجویان برای خرید مایحتاج خود به خارج از مجموعه مراجعه کنند و خدای‌ناکرده اتفاقی بیفتد، مسئولیت آن مستقیماً به عهده مدیر آموزشگاه است. در نتیجه وجود یک روبات مارکت در هر آموزشگاه ضروری است.'
description:
'در صورتی که هر یک از دانش‌آموزان و دانشجویان برای خرید مایحتاج خود به خارج از مجموعه مراجعه کنند و خدای‌ناکرده اتفاقی بیفتد، مسئولیت آن مستقیماً به عهده مدیر آموزشگاه است. در نتیجه وجود یک روبات مارکت در هر آموزشگاه ضروری است.',
},
{
id: 'pharmacies',
icon: 'pharmacy',
title: 'داروخانه‌ها و سوپرمارکت‌ها',
description: 'برای فروش محصولات جنسی و پیشگیری، ویژه مشتریانی که برای خرید آن معذوریت دارند.'
description: 'برای فروش محصولات جنسی و پیشگیری، ویژه مشتریانی که برای خرید آن معذوریت دارند.',
},
{
id: 'hospitals',
icon: 'hospital',
title: 'بیمارستان‌ها و مراکز درمانی',
description: 'برای فروش محصولات جنسی و پیشگیری، ویژه مشتریانی که برای خرید آن معذوریت دارند.'
description: 'برای فروش محصولات جنسی و پیشگیری، ویژه مشتریانی که برای خرید آن معذوریت دارند.',
},
{
id: 'night-shift',
icon: 'night',
title: 'کشیک شیفت شب',
description: 'امکان تعبیه روبات مارکت پشت شیشه سکوریت مغازه‌ها نیز وجود دارد تا در زمان تعطیلی فروشگاه و حتی نیمه‌شب‌ها، روبات زحمتکش در حال خدمت‌دهی به مشتریان عزیز شما باشد.'
description:
'امکان تعبیه روبات مارکت پشت شیشه سکوریت مغازه‌ها نیز وجود دارد تا در زمان تعطیلی فروشگاه و حتی نیمه‌شب‌ها، روبات زحمتکش در حال خدمت‌دهی به مشتریان عزیز شما باشد.',
},
{
id: 'specialty',
icon: 'specialty',
title: 'محصولات تخصصی',
description: 'اگر تولیدکننده هستید یا نماینده تولیدکننده محصولی خاص هستید، یک روبات مارکت می‌تواند مسئولیت معرفی و عرضه محصولات تخصصی شما را نیز بر عهده بگیرد.'
description:
'اگر تولیدکننده هستید یا نماینده تولیدکننده محصولی خاص هستید، یک روبات مارکت می‌تواند مسئولیت معرفی و عرضه محصولات تخصصی شما را نیز بر عهده بگیرد.',
},
],
},
footer: {
aboutLabel: 'روبات مارکت',
aboutText: 'ارائه‌دهنده دستگاه‌های وندینگ هوشمند برای کسب‌وکارهای مدرن — محصولی از شرکت نگین سازان پیشگام رادمهر آتوسا.',
aboutText:
'ارائه‌دهنده دستگاه‌های وندینگ هوشمند برای کسب‌وکارهای مدرن — محصولی از شرکت نگین سازان پیشگام رادمهر آتوسا.',
quickLinks: 'دسترسی سریع',
contactTitle: 'تماس با ما',
factoryLabel: 'کارخانه',
@@ -246,7 +251,8 @@ export const content: Record<Locale, SiteContent> = {
contactInfo: {
orderPhone: '۰۹۱۵۱۶۰۱۸۴۷',
orderPhoneHref: '09151601847',
factoryAddress: 'مشهد، کیلومتر ۸ جاده مشهد - چناران، دور برگردان اصلی شهرک صنعتی توس به سمت مشهد، بعد از نیروگاه، اولین فرعی سمت راست (خیابان کاله)، اولین کوچه سمت راست، پلاک ۱۱۰، شرکت نگین سازان پیشگام رادمهر آتوسا',
factoryAddress:
'مشهد، کیلومتر ۸ جاده مشهد - چناران، دور برگردان اصلی شهرک صنعتی توس به سمت مشهد، بعد از نیروگاه، اولین فرعی سمت راست (خیابان کاله)، اولین کوچه سمت راست، پلاک ۱۱۰، شرکت نگین سازان پیشگام رادمهر آتوسا',
salesOfficeAddress: 'مشهد، نبش پیامبر اعظم ۷، جنب بیمارستان رضوی، برج نخل، واحد ۴۰۱',
socialLinks: [
{id: 'instagram', label: 'صفحه اینستاگرام', href: 'http://instagram.com/vending_machin_life'},
@@ -305,7 +311,7 @@ export const content: Record<Locale, SiteContent> = {
total: 'Total',
checkout: 'Checkout',
checkoutToast: 'Payment gateway will be connected soon.',
addToast: (name) => `${name} added to cart`,
addToast: name => `${name} added to cart`,
},
machineActions: {
addToCart: 'Add to Cart',
@@ -313,7 +319,7 @@ export const content: Record<Locale, SiteContent> = {
wishlistRemove: 'Remove from Wishlist',
hoverHint: 'Move your cursor over the machine',
altVariant: 'Alternate color',
gifAlt: (name) => `${name} in action`,
gifAlt: name => `${name} in action`,
},
machines: machinesEn,
features: [
@@ -321,25 +327,25 @@ export const content: Record<Locale, SiteContent> = {
id: 'warranty',
icon: 'safety',
title: 'Product Warranty',
description: 'All our products come with one year of after-sales service.'
description: 'All our products come with one year of after-sales service.',
},
{
id: 'consulting',
icon: 'consulting',
title: 'Free Expert Consulting',
description: 'Free consulting on the right machine type and product layout.'
description: 'Free consulting on the right machine type and product layout.',
},
{
id: 'installment',
icon: 'installment',
title: 'Installment Purchase',
description: 'Flexible, easy installment plans suitable for any business.'
description: 'Flexible, easy installment plans suitable for any business.',
},
{
id: 'packaging',
icon: 'packaging',
title: 'Secure Packaging',
description: 'On request, products ship in pallet-box packaging for a small fee.'
description: 'On request, products ship in pallet-box packaging for a small fee.',
},
],
about: {
@@ -350,12 +356,12 @@ export const content: Record<Locale, SiteContent> = {
paragraphs: [
'Negin Sazan Pishgam Radmehr Atousa Co. (registration No. 84094), also known as "Ideh Avaran Pishgam Atousa" (No. 63097) and "Pishgam Gostar Negin Atousa" (No. 73416), began operations in 2017 producing precision saffron-processing machines. After building a nationwide saffron distribution network, in 2022 the company entered the vending-machine industry with saffron-dedicated machines under the "Robot Market" brand.',
'In 2023, cooling capability was added to preserve saffron quality, and Robot Market gained the ability to sell snacks and cold drinks as well. By spring 2024, with the wide rollout of "Robot Market" machines, these robots were introduced as an official retailer of snacks and cold drinks in Iran.',
'Robot Market is not just a name — it is a symbol of a modern, forward-looking way of thinking in the vending industry. What happens inside Robot Market is the result of our engineers\' technical expertise combined with today\'s technology. Every Robot Market machine is a tireless, intelligent assistant that bridges consumer needs and your business goals with precision and speed.',
"Robot Market is not just a name — it is a symbol of a modern, forward-looking way of thinking in the vending industry. What happens inside Robot Market is the result of our engineers' technical expertise combined with today's technology. Every Robot Market machine is a tireless, intelligent assistant that bridges consumer needs and your business goals with precision and speed.",
'Our commitment is to build high-quality machines with modern design and flawless performance, delivering a different experience of shopping and revenue generation. Robot Market stands for trust, innovation, and continuous progress in the vending industry.',
'Hundreds of hours of engineering work and operational testing go into every Robot Market unit. We believe durability and machine lifespan are the most important measures of our customers\' investment. That is why, from selecting the best materials and electronic components to final assembly, we follow strict standards so our machines perform reliably in any condition.',
"Hundreds of hours of engineering work and operational testing go into every Robot Market unit. We believe durability and machine lifespan are the most important measures of our customers' investment. That is why, from selecting the best materials and electronic components to final assembly, we follow strict standards so our machines perform reliably in any condition.",
'Our smart machines offer a simple yet advanced user interface for an enjoyable experience. Secure payment systems and internet connectivity for online management and price monitoring set Robot Market apart from competitors. We have made the purchase process as simple as a few taps, so your customers can access what they need, any time of day, in the shortest time possible. Robot Market is not just a manufacturer — it is a trusted advisor for growing your business, designing automated sales solutions tailored to your needs.',
'Whether you run a large retail chain or manage a small office, our machines let you increase sales without time or location limits, and without worrying about staffing issues.',
'Behind Robot Market\'s specialized, forward-looking products lies technology that replaces foreign alternatives — meeting domestic needs today, and poised to compete meaningfully in export markets in the near future. We take pride in building an Iranian product that competes with global standards — a small but firm step toward self-sufficiency and economic growth.',
"Behind Robot Market's specialized, forward-looking products lies technology that replaces foreign alternatives — meeting domestic needs today, and poised to compete meaningfully in export markets in the near future. We take pride in building an Iranian product that competes with global standards — a small but firm step toward self-sufficiency and economic growth.",
],
},
locations: {
@@ -365,43 +371,50 @@ export const content: Record<Locale, SiteContent> = {
id: 'hotels',
icon: 'hotel',
title: 'Hotels & Accommodations',
description: 'Anywhere large crowds wait in line — beyond the revenue, Robot Market becomes an amenity that increases guest satisfaction.'
description:
'Anywhere large crowds wait in line — beyond the revenue, Robot Market becomes an amenity that increases guest satisfaction.',
},
{
id: 'schools',
icon: 'school',
title: 'Schools & Educational Centers',
description: 'If a student has to leave campus to buy something and, God forbid, an incident occurs, responsibility falls directly on the school administrator. A Robot Market on-site is essential.'
description:
'If a student has to leave campus to buy something and, God forbid, an incident occurs, responsibility falls directly on the school administrator. A Robot Market on-site is essential.',
},
{
id: 'pharmacies',
icon: 'pharmacy',
title: 'Pharmacies & Supermarkets',
description: 'For selling personal/health products discreetly, for customers who prefer not to purchase them in person.'
description:
'For selling personal/health products discreetly, for customers who prefer not to purchase them in person.',
},
{
id: 'hospitals',
icon: 'hospital',
title: 'Hospitals & Medical Centers',
description: 'For selling personal/health products discreetly, for customers who prefer not to purchase them in person.'
description:
'For selling personal/health products discreetly, for customers who prefer not to purchase them in person.',
},
{
id: 'night-shift',
icon: 'night',
title: 'Night-Shift Coverage',
description: 'Robot Market can be installed behind a shop\'s security glass, serving customers even after closing time and in the middle of the night.'
description:
"Robot Market can be installed behind a shop's security glass, serving customers even after closing time and in the middle of the night.",
},
{
id: 'specialty',
icon: 'specialty',
title: 'Specialty Products',
description: 'If you manufacture or represent a specific product line, a Robot Market machine can take on introducing and offering your specialty products too.'
description:
'If you manufacture or represent a specific product line, a Robot Market machine can take on introducing and offering your specialty products too.',
},
],
},
footer: {
aboutLabel: 'Robot Market',
aboutText: 'Smart vending machines for modern businesses — a product of Negin Sazan Pishgam Radmehr Atousa Co.',
aboutText:
'Smart vending machines for modern businesses — a product of Negin Sazan Pishgam Radmehr Atousa Co.',
quickLinks: 'Quick Links',
contactTitle: 'Contact Us',
factoryLabel: 'Factory',
@@ -411,7 +424,8 @@ export const content: Record<Locale, SiteContent> = {
contactInfo: {
orderPhone: '09151601847',
orderPhoneHref: '09151601847',
factoryAddress: 'Mashhad, Mashhad–Chenaran Rd. km 8, main roundabout of Toos Industrial Town toward Mashhad, after the power plant, 1st street on the right (Kaleh St.), 1st alley on the right, No. 110 — Negin Sazan Pishgam Radmehr Atousa Co.',
factoryAddress:
'Mashhad, Mashhad–Chenaran Rd. km 8, main roundabout of Toos Industrial Town toward Mashhad, after the power plant, 1st street on the right (Kaleh St.), 1st alley on the right, No. 110 — Negin Sazan Pishgam Radmehr Atousa Co.',
salesOfficeAddress: 'Mashhad, corner of Payambar-e Azam 7, next to Razavi Hospital, Nakhl Tower, Unit 401',
socialLinks: [
{id: 'instagram', label: 'Instagram', href: 'http://instagram.com/vending_machin_life'},