UNPKG

create-ex-den-kit

Version:

Create exam projects with Ex-Den-Kit

165 lines (158 loc) 5.58 kB
// Конфигурация для разных тем экзамена export const themeConfigs = { bookexchange: { name: 'Буквоежка', description: 'Система обмена книгами', icon: '📚', colors: { primary: '#4F46E5', secondary: '#7C3AED', accent: '#EC4899', }, admin: { login: 'admin', password: 'bookworm', }, fields: [ { name: 'author', label: 'Автор книги', type: 'text', required: true }, { name: 'title', label: 'Название книги', type: 'text', required: true }, { name: 'action', label: 'Действие', type: 'radio', required: true, options: ['Готов поделиться', 'Хочу в свою библиотеку'] }, { name: 'publisher', label: 'Издательство', type: 'text', required: false }, { name: 'year', label: 'Год издания', type: 'number', required: false }, { name: 'binding', label: 'Переплет', type: 'text', required: false }, { name: 'condition', label: 'Состояние книги', type: 'text', required: false }, ], statuses: ['new', 'approved', 'rejected'], features: { archive: true, rejectionReason: true, }, }, cargo: { name: 'Грузовозофф', description: 'Система заказа грузоперевозок', icon: '🚚', colors: { primary: '#EA580C', secondary: '#DC2626', accent: '#FBBF24', }, admin: { login: 'admin', password: 'gruzovik2024', }, fields: [ { name: 'date', label: 'Дата перевозки', type: 'date', required: true }, { name: 'time', label: 'Время', type: 'time', required: true }, { name: 'weight', label: 'Вес груза (кг)', type: 'number', required: true }, { name: 'dimensions', label: 'Габариты груза', type: 'text', required: true }, { name: 'cargoType', label: 'Тип груза', type: 'select', required: true, options: ['Хрупкое', 'Скоропортящееся', 'Требует рефрижератор', 'Животные', 'Жидкость', 'Мебель', 'Мусор'] }, { name: 'addressFrom', label: 'Адрес отправления', type: 'text', required: true }, { name: 'addressTo', label: 'Адрес доставки', type: 'text', required: true }, ], statuses: ['new', 'in_work', 'cancelled'], features: { archive: false, rejectionReason: false, }, }, courses: { name: 'Корочки.есть', description: 'Система записи на онлайн курсы', icon: '🎓', colors: { primary: '#059669', secondary: '#0891B2', accent: '#8B5CF6', }, admin: { login: 'admin', password: 'education', }, fields: [ { name: 'courseName', label: 'Название курса', type: 'select', required: true, options: ['Основы алгоритмизации и программирования', 'Основы веб-дизайна', 'Основы проектирования баз данных'] }, { name: 'startDate', label: 'Желаемая дата начала', type: 'date', required: true }, { name: 'paymentMethod', label: 'Способ оплаты', type: 'radio', required: true, options: ['Наличными', 'Переводом на банковский счет'] }, ], statuses: ['new', 'studying', 'completed'], features: { reviews: true, statusRestrictions: { review: ['completed'], // Отзыв только после завершения }, }, }, restaurant: { name: 'Я буду кушац', description: 'Система бронирования столиков', icon: '🍴', colors: { primary: '#DC2626', secondary: '#EA580C', accent: '#FBBF24', }, admin: { login: 'admin', password: 'restaurant', }, fields: [ { name: 'date', label: 'Дата бронирования', type: 'date', required: true }, { name: 'time', label: 'Время', type: 'time', required: true }, { name: 'guests', label: 'Количество гостей', type: 'number', required: true, min: 1, max: 10, }, { name: 'phone', label: 'Контактный телефон', type: 'tel', required: true }, ], statuses: ['new', 'visited', 'cancelled'], features: { reviews: true, statusRestrictions: { review: ['visited'], // Отзыв только после посещения }, }, }, }; // Получаем текущую тему из localStorage или используем дефолтную export const getCurrentTheme = () => { const savedTheme = localStorage.getItem('examTheme'); return savedTheme || 'bookexchange'; }; // Сохраняем выбранную тему export const setCurrentTheme = (theme) => { localStorage.setItem('examTheme', theme); document.documentElement.setAttribute('data-theme', theme); }; // Получаем конфигурацию текущей темы export const getThemeConfig = () => { const currentTheme = getCurrentTheme(); return themeConfigs[currentTheme]; };