This commit is contained in:
2026-01-23 20:35:40 +03:00
parent cf3b0e48ec
commit 66c151653e
137 changed files with 41495 additions and 0 deletions

173
app/lib/constants.ts Normal file
View File

@@ -0,0 +1,173 @@
// Authentication levels
export const AUTH_LEVELS = {
SUPERADMIN: 1,
ADMIN: 2,
USER: 3,
} as const;
export const AUTH_LEVEL_NAMES = {
[AUTH_LEVELS.SUPERADMIN]: 'مدير عام',
[AUTH_LEVELS.ADMIN]: 'مدير',
[AUTH_LEVELS.USER]: 'مستخدم',
} as const;
// User status options
export const USER_STATUS = {
ACTIVE: 'active',
INACTIVE: 'inactive',
} as const;
export const USER_STATUS_NAMES = {
[USER_STATUS.ACTIVE]: 'نشط',
[USER_STATUS.INACTIVE]: 'غير نشط',
} as const;
// Vehicle transmission options
export const TRANSMISSION_TYPES = [
{ value: 'Automatic', label: 'أوتوماتيك' },
{ value: 'Manual', label: 'يدوي' },
] as const;
// Vehicle fuel types
export const FUEL_TYPES = [
{ value: 'Gasoline', label: 'بنزين' },
{ value: 'Diesel', label: 'ديزل' },
{ value: 'Hybrid', label: 'هجين' },
{ value: 'Mild Hybrid', label: 'هجين خفيف' },
{ value: 'Electric', label: 'كهربائي' },
] as const;
// Vehicle use types
export const USE_TYPES = [
{ value: 'personal', label: 'شخصي' },
{ value: 'taxi', label: 'تاكسي' },
{ value: 'apps', label: 'تطبيقات' },
{ value: 'loading', label: 'نقل' },
{ value: 'travel', label: 'سفر' },
] as const;
// Vehicle body types (common in Saudi Arabia)
export const BODY_TYPES = [
{ value: 'سيدان', label: 'سيدان' },
{ value: 'هاتشباك', label: 'هاتشباك' },
{ value: 'SUV', label: 'SUV' },
{ value: 'كروس أوفر', label: 'كروس أوفر' },
{ value: 'بيك أب', label: 'بيك أب' },
{ value: 'كوبيه', label: 'كوبيه' },
{ value: 'كونفرتيبل', label: 'كونفرتيبل' },
{ value: 'فان', label: 'فان' },
{ value: 'شاحنة', label: 'شاحنة' },
] as const;
// Popular car manufacturers in Saudi Arabia
export const MANUFACTURERS = [
{ value: 'تويوتا', label: 'تويوتا' },
{ value: 'هيونداي', label: 'هيونداي' },
{ value: 'نيسان', label: 'نيسان' },
{ value: 'كيا', label: 'كيا' },
{ value: 'هوندا', label: 'هوندا' },
{ value: 'فورد', label: 'فورد' },
{ value: 'شيفروليه', label: 'شيفروليه' },
{ value: ازda', label: ازda' },
{ value: 'ميتسوبيشي', label: 'ميتسوبيشي' },
{ value: 'سوزوكي', label: 'سوزوكي' },
{ value: 'لكزس', label: 'لكزس' },
{ value: 'إنفينيتي', label: 'إنفينيتي' },
{ value: 'جينيسيس', label: 'جينيسيس' },
{ value: 'BMW', label: 'BMW' },
{ value: 'مرسيدس بنز', label: 'مرسيدس بنز' },
{ value: 'أودي', label: 'أودي' },
{ value: 'فولكس واجن', label: 'فولكس واجن' },
{ value: 'جيب', label: 'جيب' },
{ value: 'لاند روفر', label: 'لاند روفر' },
{ value: 'كاديلاك', label: 'كاديلاك' },
{ value: 'لينكولن', label: 'لينكولن' },
{ value: 'جاكوار', label: 'جاكوار' },
{ value: 'بورش', label: 'بورش' },
{ value: 'فيراري', label: 'فيراري' },
{ value: 'لامبورغيني', label: 'لامبورغيني' },
{ value: 'بنتلي', label: 'بنتلي' },
{ value: 'رولز رويس', label: 'رولز رويس' },
{ value: 'أخرى', label: 'أخرى' },
] as const;
// Payment status options
export const PAYMENT_STATUS = {
PENDING: 'pending',
PAID: 'paid',
PARTIAL: 'partial',
CANCELLED: 'cancelled',
} as const;
export const PAYMENT_STATUS_NAMES = {
[PAYMENT_STATUS.PENDING]: 'معلق',
[PAYMENT_STATUS.PAID]: 'مدفوع',
[PAYMENT_STATUS.PARTIAL]: 'مدفوع جزئياً',
[PAYMENT_STATUS.CANCELLED]: 'ملغي',
} as const;
// Maintenance visit delay options (in months)
export const VISIT_DELAY_OPTIONS = [
{ value: 1, label: 'شهر واحد' },
{ value: 2, label: 'شهرين' },
{ value: 3, label: 'ثلاثة أشهر' },
{ value: 4, label: 'أربعة أشهر' },
] as const;
// Common maintenance types
export const MAINTENANCE_TYPES = [
{ value: 'تغيير زيت', label: 'تغيير زيت' },
{ value: 'فحص دوري', label: 'فحص دوري' },
{ value: 'تغيير فلاتر', label: 'تغيير فلاتر' },
{ value: 'فحص فرامل', label: 'فحص فرامل' },
{ value: 'تغيير إطارات', label: 'تغيير إطارات' },
{ value: 'فحص بطارية', label: 'فحص بطارية' },
{ value: 'تنظيف مكيف', label: 'تنظيف مكيف' },
{ value: 'فحص محرك', label: 'فحص محرك' },
{ value: 'تغيير شمعات', label: 'تغيير شمعات' },
{ value: 'فحص ناقل حركة', label: 'فحص ناقل حركة' },
{ value: 'إصلاح عام', label: 'إصلاح عام' },
{ value: 'أخرى', label: 'أخرى' },
] as const;
// Expense categories
export const EXPENSE_CATEGORIES = [
{ value: 'قطع غيار', label: 'قطع غيار' },
{ value: 'أدوات', label: 'أدوات' },
{ value: 'إيجار', label: 'إيجار' },
{ value: 'كهرباء', label: 'كهرباء' },
{ value: 'ماء', label: 'ماء' },
{ value: 'رواتب', label: 'رواتب' },
{ value: 'تأمين', label: 'تأمين' },
{ value: 'وقود', label: 'وقود' },
{ value: 'صيانة معدات', label: 'صيانة معدات' },
{ value: 'تسويق', label: 'تسويق' },
{ value: 'مصاريف إدارية', label: 'مصاريف إدارية' },
{ value: 'أخرى', label: 'أخرى' },
] as const;
// Date format options
export const DATE_FORMATS = {
SHORT: 'dd/MM/yyyy',
LONG: 'dd MMMM yyyy',
WITH_TIME: 'dd/MM/yyyy HH:mm',
} as const;
// Pagination defaults
export const PAGINATION = {
DEFAULT_PAGE_SIZE: 10,
PAGE_SIZE_OPTIONS: [10, 25, 50, 100],
} as const;
// Validation constants
export const VALIDATION = {
MIN_PASSWORD_LENGTH: 6,
MAX_NAME_LENGTH: 100,
MAX_DESCRIPTION_LENGTH: 500,
MIN_YEAR: 1990,
MAX_YEAR: new Date().getFullYear() + 1,
MAX_CYLINDERS: 12,
MAX_ENGINE_DISPLACEMENT: 10.0,
MIN_COST: 0,
MAX_COST: 999999.99,
} as const;