/**
* **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
*
*
*
*
*
*
*
* {{ result.name }}
*
*
*
* ```
*/
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