/** * **BarneoSearchWidget** - Основной компонент поиска * * Компонент предоставляет полнофункциональный поиск с автодополнением, * историей поиска, популярными запросами и быстрыми результатами. * * @component * @example * ```vue * * * * ``` * * @see {@link BarneoSearchWidgetProps} - Props компонента * @see {@link BarneoSearchWidgetEmits} - Events компонента * @see {@link BarneoSearchWidgetSlots} - Slots компонента * @see {@link SearchWidgetConfig} - Конфигурация компонента * @see {@link SearchProduct} - Тип товара * @see {@link SearchHint} - Тип подсказки * @see {@link CatalogSearchResponse} - Ответ API поиска */ import type { BarneoSearchWidgetProps, SearchWidgetEmits } from './components'; import type { BarneoSearchWidgetSlots } from './slots'; import type { SearchWidgetConfig, SearchProduct, SearchHint } from './models'; import type { CatalogSearchResponse } from './responses'; /** * Props компонента BarneoSearchWidget * * @interface BarneoSearchWidgetProps * @description Все доступные props для компонента поиска * * @property {string} [modelValue] - Значение поля поиска (v-model) * @property {string} [placeholder] - Placeholder для поля ввода * @property {number} [debounceMs] - Задержка перед отправкой запроса в мс * @property {number} [minSearchLength] - Минимальная длина для поиска * @property {boolean} [darkMode] - Принудительная темная тема * @property {boolean} [focusMode] - Автофокус при монтировании * @property {boolean} [showClearButton] - Показывать кнопку очистки * @property {boolean} [focus] - Управление фокусом * @property {SearchWidgetConfig} [config] - Локальная конфигурация * @property {SearchApiService} [apiService] - Кастомный API сервис * * @example * ```vue * * ``` */ export type { BarneoSearchWidgetProps }; /** * Events компонента BarneoSearchWidget * * @interface SearchWidgetEmits * @description Все доступные события компонента поиска * * @property {(query: string) => void} search - Выполнен поиск (автоматический или ручной) * @property {(query: string) => void} deepSearch - Выполнен глубокий поиск (Enter или кнопка поиска) * @property {(product: SearchProduct) => void} select - Выбран товар из результатов * @property {(value: string) => void} update:modelValue - Изменение значения поля (v-model) * @property {(results: CatalogSearchResponse) => void} searchResults - Получены результаты поиска * @property {(query: string) => void} historySelect - Выбран запрос из истории * @property {(query: string) => void} popularQuerySelect - Выбран популярный запрос * @property {() => void} clearHistory - Очищена история поиска * @property {() => void} focus - Поле получило фокус * @property {() => void} blur - Поле потеряло фокус * @property {(isLoading: boolean) => void} loading - Изменение состояния загрузки * @property {(error: string) => void} error - Произошла ошибка * @property {(query: string) => void} noResults - Нет результатов для запроса * @property {(value: string) => void} input - Изменение значения поля * * @example * ```vue * * ``` */ export type { SearchWidgetEmits }; /** * Slots компонента BarneoSearchWidget * * @interface BarneoSearchWidgetSlots * @description Все доступные слоты для кастомизации компонента * * @property {Object} searchInput - Кастомное поле ввода * @property {Object} searchHistory - История поиска * @property {Object} searchHints - Поисковые подсказки * @property {Object} popularQueries - Популярные запросы * @property {Object} searchResults - Результаты поиска * @property {Object} noResults - Пустое состояние * @property {Object} popularProducts - Популярные товары * @property {Object} loading - Состояние загрузки * @property {Object} error - Состояние ошибки * * @example * ```vue * * * * * * ``` */ export type { BarneoSearchWidgetSlots }; /** * Конфигурация компонента поиска * * @interface SearchWidgetConfig * @description Настройки компонента поиска * * @property {string} [placeholder] - Placeholder для поля поиска * @property {number} [debounceMs] - Задержка перед отправкой запроса * @property {number} [minSearchLength] - Минимальная длина для поиска * @property {boolean} [darkMode] - Принудительная темная тема * @property {boolean} [showClearButton] - Показывать кнопку очистки * @property {boolean} [focus] - Управление фокусом * @property {boolean} [focusMode] - Автофокус при монтировании * * @example * ```typescript * const config: SearchWidgetConfig = { * placeholder: 'Найти товары...', * debounceMs: 300, * minSearchLength: 2, * darkMode: false, * showClearButton: true, * focusMode: true * } * ``` */ export type { SearchWidgetConfig }; /** * Товар в результатах поиска * * @interface SearchProduct * @description Структура товара в результатах поиска * * @property {string} id - Уникальный идентификатор товара * @property {string} name - Название товара * @property {string} [description] - Описание товара * @property {number} price - Цена товара * @property {string | null} picture - URL изображения товара * @property {string | null} url - URL страницы товара * @property {string} vendor_code - Артикул товара * @property {Array} properties - Свойства товара * @property {Object} [category] - Категория товара * @property {Array} [classification_properties] - Классификационные свойства * * @example * ```typescript * const product: SearchProduct = { * id: '123', * name: 'Сковорода Tefal', * description: 'Антипригарная сковорода', * price: 2500, * picture: 'https://example.com/image.jpg', * url: 'https://example.com/product/123', * vendor_code: 'TEF-001', * properties: [], * category: { id: '1', name: 'Посуда' } * } * ``` */ export type { SearchProduct }; /** * Поисковая подсказка * * @interface SearchHint * @description Структура поисковой подсказки * * @property {string} word - Слово подсказки * @property {string} hint - Текст подсказки * * @example * ```typescript * const hint: SearchHint = { * word: 'сковорода', * hint: 'сковорода антипригарная' * } * ``` */ export type { SearchHint }; /** * Ответ API поиска * * @interface CatalogSearchResponse * @description Структура ответа от API поиска * * @property {SearchProduct[]} full_products - Полные данные товаров * @property {SearchHint[]} hints - Поисковые подсказки * @property {string[]} popular_queries - Популярные запросы * @property {SearchProduct[]} popular_products - Популярные товары * @property {number} total_count - Общее количество результатов * * @example * ```typescript * const response: CatalogSearchResponse = { * full_products: [], // товары * hints: [], // подсказки * popular_queries: ['сковорода', 'кастрюля'], * popular_products: [], // популярные товары * total_count: 150 * } * ``` */ export type { CatalogSearchResponse }; /** * Связанные файлы и типы: * * - {@link BarneoSearchWidget} - Сам компонент * - {@link useSearchWidget} - Composable для поиска * - {@link SearchApiService} - API сервис для поиска * - {@link SearchState} - Состояние поиска * - {@link SearchRequest} - Запрос к API поиска * - {@link SearchResponse} - Ответ от API поиска * * @see {@link https://github.com/denis-muhortov/barneo-search-widget-lib} - Документация библиотеки */ //# sourceMappingURL=BarneoSearchWidget.types.d.ts.map