wgp-next-shop-ui-lib
Version:
Библиотека UI-компонентов для Next-Shop с поддержкой e-commerce функций
161 lines (145 loc) • 3.53 kB
JavaScript
// События
export const EVENTS = {
CART_UPDATED: 'cartUpdated',
USER_LOGIN: 'userLogin',
USER_LOGOUT: 'userLogout',
SEARCH_PERFORMED: 'searchPerformed',
FILTER_CHANGED: 'filterChanged'
};
// Ключи localStorage
export const STORAGE_KEYS = {
CART: 'wgp-shop-cart',
USER: 'wgp-shop-user',
FAVORITES: 'wgp-shop-favorites',
RECENT_SEARCHES: 'wgp-shop-recent-searches',
FILTERS: 'wgp-shop-filters'
};
// Статусы товаров
export const PRODUCT_STATUS = {
IN_STOCK: 'in_stock',
OUT_OF_STOCK: 'out_of_stock',
LIMITED_STOCK: 'limited_stock',
PRE_ORDER: 'pre_order'
};
// Типы бейджей
export const BADGE_TYPES = {
SALE: 'sale',
NEW: 'new',
HOT: 'hot',
LIMITED: 'limited',
BESTSELLER: 'bestseller'
};
// Типы сортировки
export const SORT_OPTIONS = {
POPULARITY: 'popularity',
PRICE_LOW_TO_HIGH: 'price_asc',
PRICE_HIGH_TO_LOW: 'price_desc',
NEWEST: 'newest',
RATING: 'rating',
NAME_A_TO_Z: 'name_asc',
NAME_Z_TO_A: 'name_desc'
};
// Размеры для изображений
export const IMAGE_SIZES = {
THUMBNAIL: { width: 150, height: 150 },
SMALL: { width: 300, height: 300 },
MEDIUM: { width: 600, height: 600 },
LARGE: { width: 1200, height: 1200 }
};
// Размеры компонентов
export const COMPONENT_SIZES = {
SMALL: 'sm',
MEDIUM: 'md',
LARGE: 'lg',
EXTRA_LARGE: 'xl'
};
// Варианты цветов
export const COLOR_VARIANTS = {
PRIMARY: 'primary',
SECONDARY: 'secondary',
SUCCESS: 'success',
DANGER: 'danger',
WARNING: 'warning',
INFO: 'info',
LIGHT: 'light',
DARK: 'dark'
};
// Типы уведомлений
export const NOTIFICATION_TYPES = {
SUCCESS: 'success',
ERROR: 'error',
WARNING: 'warning',
INFO: 'info'
};
// Брейкпоинты
export const BREAKPOINTS = {
SM: 640,
MD: 768,
LG: 1024,
XL: 1280,
'2XL': 1536
};
// Дефолтные настройки пагинации
export const PAGINATION_DEFAULTS = {
PAGE_SIZE: 20,
MAX_VISIBLE_PAGES: 5
};
// Дефолтные настройки слайдера
export const SLIDER_DEFAULTS = {
AUTOPLAY_INTERVAL: 3000,
TRANSITION_DURATION: 500
};
// Валидационные правила
export const VALIDATION_RULES = {
EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
PHONE: /^[\+]?[1-9][\d]{0,15}$/,
PASSWORD_MIN_LENGTH: 6
};
// API endpoints (базовые)
export const API_ENDPOINTS = {
PRODUCTS: '/api/products',
CATEGORIES: '/api/categories',
SEARCH: '/api/search',
CART: '/api/cart',
USER: '/api/user',
ORDERS: '/api/orders'
};
// Состояния загрузки
export const LOADING_STATES = {
IDLE: 'idle',
LOADING: 'loading',
SUCCESS: 'success',
ERROR: 'error'
};
// Форматы валют
export const CURRENCY_FORMATS = {
RUB: {
symbol: '₽',
position: 'after', // before | after
separator: ' ',
decimals: 0
},
USD: {
symbol: '$',
position: 'before',
separator: '',
decimals: 2
},
EUR: {
symbol: '€',
position: 'after',
separator: ' ',
decimals: 2
}
};
// Дефолтные тексты
export const DEFAULT_TEXTS = {
ADD_TO_CART: 'В корзину',
OUT_OF_STOCK: 'Нет в наличии',
LOADING: 'Загрузка...',
ERROR: 'Произошла ошибка',
NO_RESULTS: 'Ничего не найдено',
SHOW_MORE: 'Показать ещё',
SEARCH_PLACEHOLDER: 'Поиск товаров...',
EMPTY_CART: 'Корзина пуста'
};