@quantabit/search-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/services/searchApi.js","../src/components/SearchInput.jsx","../src/components/CommandPalette.jsx","../src/hooks/useSearch.js","../src/i18n/index.js","../src/components/Search.jsx","../src/components/SearchBox.jsx","../src/types/index.js","../src/index.js"],"sourcesContent":["/**\n * Search SDK - API 客户端\n * 搜索系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 搜索 API 客户端\n */\nexport class SearchApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/search', config);\n }\n\n // ============ 搜索 ============\n\n /**\n * 全局搜索\n * @param {string} query - 搜索关键词\n * @param {Object} options - 搜索选项\n */\n async search(query, options = {}) {\n return this.get('/', { q: query, ...options });\n }\n\n /**\n * 搜索用户\n * @param {string} query - 搜索关键词\n * @param {Object} options - 搜索选项\n */\n async searchUsers(query, options = {}) {\n return this.get('/users', { q: query, ...options });\n }\n\n /**\n * 搜索内容\n * @param {string} query - 搜索关键词\n * @param {Object} options - 搜索选项\n */\n async searchContent(query, options = {}) {\n return this.get('/content', { q: query, ...options });\n }\n\n /**\n * 搜索商品\n * @param {string} query - 搜索关键词\n * @param {Object} options - 搜索选项\n */\n async searchProducts(query, options = {}) {\n return this.get('/products', { q: query, ...options });\n }\n\n /**\n * 搜索话题\n * @param {string} query - 搜索关键词\n * @param {Object} options - 搜索选项\n */\n async searchTopics(query, options = {}) {\n return this.get('/topics', { q: query, ...options });\n }\n\n // ============ 搜索建议 ============\n\n /**\n * 获取搜索建议\n * @param {string} query - 输入内容\n * @param {number} limit - 返回数量\n */\n async getSuggestions(query, limit = 10) {\n return this.get('/suggestions', { q: query, limit });\n }\n\n /**\n * 获取热门搜索\n * @param {number} limit - 返回数量\n */\n async getHotSearches(limit = 10) {\n return this.get('/hot', { limit });\n }\n\n /**\n * 获取搜索发现\n */\n async getDiscovery() {\n return this.get('/discovery');\n }\n\n // ============ 搜索历史 ============\n\n /**\n * 获取搜索历史\n * @param {number} limit - 返回数量\n */\n async getHistory(limit = 20) {\n return this.get('/history', { limit });\n }\n\n /**\n * 清除搜索历史\n */\n async clearHistory() {\n return this.delete('/history');\n }\n\n /**\n * 删除单条历史\n * @param {string} historyId - 历史记录 ID\n */\n async deleteHistoryItem(historyId) {\n return this.delete(`/history/${historyId}`);\n }\n\n // ============ 高级搜索 ============\n\n /**\n * 高级搜索\n * @param {Object} filters - 过滤条件\n */\n async advancedSearch(filters) {\n return this.post('/advanced', filters);\n }\n\n /**\n * 筛选搜索\n * @param {string} query - 搜索关键词\n * @param {Object} filters - 过滤条件\n */\n async filterSearch(query, filters = {}) {\n return this.post('/filter', { q: query, filters });\n }\n\n // ============ 索引管理(管理员)============\n\n /**\n * 获取索引状态\n */\n async getIndexStatus() {\n return this.get('/admin/index/status');\n }\n\n /**\n * 重建索引\n * @param {string} indexType - 索引类型\n */\n async rebuildIndex(indexType) {\n return this.post(`/admin/index/${indexType}/rebuild`);\n }\n\n /**\n * 获取搜索统计\n * @param {Object} params - 统计参数\n */\n async getStats(params = {}) {\n return this.get('/admin/stats', params);\n }\n\n // ============ 隐私合规 ============\n\n /**\n * 清除所有搜索数据 — GDPR 第17条\n * 删除搜索历史 + 个性化搜索偏好\n * @returns {Promise<object>} 清除结果\n */\n async clearAllUserData() {\n const results = {};\n try {\n results.history = await this.clearHistory();\n } catch (e) {\n results.historyError = e.message;\n }\n try {\n results.preferences = await this.delete('/preferences');\n } catch (e) {\n results.preferencesError = e.message;\n }\n return { cleared: true, timestamp: new Date().toISOString(), ...results };\n }\n\n /**\n * 导出搜索数据 — GDPR 第20条\n */\n async exportSearchData() {\n try {\n const history = await this.getHistory(100);\n return {\n exportDate: new Date().toISOString(),\n format: 'QBit Search Export (GDPR Art. 20)',\n searchHistory: history?.data || [],\n };\n } catch (e) {\n return { error: e.message, exportDate: new Date().toISOString() };\n }\n }\n\n /**\n * 获取隐私数据声明\n */\n getDataDisclosure() {\n return {\n sdk: '@quantabit/search-sdk',\n privacyLevel: 'functional',\n consentRequired: false,\n collected: [\n { type: 'search_queries', description: 'User search keywords', retention: '90 days', anonymizedAfter: '30 days' },\n { type: 'search_history', description: 'Search history records', retention: 'Until cleared by user' },\n { type: 'search_preferences', description: 'Personalized search settings', retention: 'Until cleared' },\n ],\n gdprCapabilities: ['delete', 'export'],\n note: 'Search queries are anonymized after 30 days. Users can clear history anytime.',\n };\n }\n}\n\n// 创建默认实例\nexport const searchApi = new SearchApiClient();\n\n\n\nexport default searchApi;\n","import React,{useState,useRef,useEffect}from'react';\nexport function SearchInput({placeholder='Search...',suggestions=[],onSearch,onSelect,debounce=300,\n shortcut='mod+k',showIcon=true,size='medium',className=''}){\n const[query,setQuery]=useState('');const[open,setOpen]=useState(false);const[active,setActive]=useState(-1);\n const inputRef=useRef(null);const timerRef=useRef(null);\n const sz={small:{pad:'6px 10px',font:13},medium:{pad:'8px 14px',font:14},large:{pad:'10px 16px',font:15}};\n const s=sz[size]||sz.medium;\n const filtered=query?suggestions.filter(s=>{const label=typeof s==='string'?s:s.label;return label.toLowerCase().includes(query.toLowerCase());}):[];\n const handleChange=e=>{const v=e.target.value;setQuery(v);setActive(-1);clearTimeout(timerRef.current);\n timerRef.current=setTimeout(()=>onSearch?.(v),debounce);setOpen(!!v);};\n const handleSelect=item=>{const label=typeof item==='string'?item:item.label;setQuery(label);setOpen(false);onSelect?.(item);};\n const handleKey=e=>{if(e.key==='ArrowDown'){e.preventDefault();setActive(a=>Math.min(a+1,filtered.length-1));}\n else if(e.key==='ArrowUp'){e.preventDefault();setActive(a=>Math.max(a-1,-1));}\n else if(e.key==='Enter'&&active>=0){handleSelect(filtered[active]);}\n else if(e.key==='Escape'){setOpen(false);}};\n return(<div className={`qsr-search ${className}`} style={{position:'relative',width:'100%'}}>\n <div style={{display:'flex',alignItems:'center',gap:8,padding:s.pad,border:'1px solid #e4e4e7',borderRadius:10,\n background:'#fff',transition:'all 0.2s',fontSize:s.font}} className=\"qsr-input-wrap\">\n {showIcon&&<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a1a1aa\" strokeWidth=\"2\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>}\n <input ref={inputRef} value={query} onChange={handleChange} onKeyDown={handleKey} onFocus={()=>query&&setOpen(true)}\n placeholder={placeholder} style={{border:'none',outline:'none',flex:1,fontSize:s.font,background:'transparent'}}/>\n {query&&<button onClick={()=>{setQuery('');setOpen(false);onSearch?.('');}} style={{border:'none',background:'none',cursor:'pointer',color:'#a1a1aa',fontSize:16,padding:0}}>✕</button>}\n </div>\n {open&&filtered.length>0&&<div className=\"qsr-dropdown\" style={{position:'absolute',top:'100%',left:0,right:0,marginTop:4,\n background:'#fff',borderRadius:10,border:'1px solid #e4e4e7',boxShadow:'0 8px 32px rgba(0,0,0,0.1)',\n maxHeight:280,overflowY:'auto',padding:4,zIndex:9999}}>\n {filtered.map((item,i)=>{const label=typeof item==='string'?item:item.label;const desc=item.description;\n return(<button key={i} onClick={()=>handleSelect(item)} className={`qsr-option ${i===active?'qsr-active':''}`}\n style={{display:'block',width:'100%',padding:'8px 12px',borderRadius:6,border:'none',\n background:i===active?'rgba(59,130,246,0.06)':'transparent',cursor:'pointer',textAlign:'left',\n fontSize:13,color:'#18181b',transition:'all 0.1s'}}>\n <div style={{fontWeight:i===active?600:400}}>{label}</div>\n {desc&&<div style={{fontSize:11,color:'#a1a1aa',marginTop:2}}>{desc}</div>}\n </button>);})}\n </div>}\n </div>);\n}\n","import React,{useState,useEffect,useRef}from'react';\nexport function CommandPalette({visible,onClose,commands=[],placeholder='Type a command...',className=''}){\n const[query,setQuery]=useState('');const[active,setActive]=useState(0);const inputRef=useRef(null);\n const filtered=commands.filter(c=>c.label.toLowerCase().includes(query.toLowerCase()));\n useEffect(()=>{if(visible){setQuery('');setActive(0);setTimeout(()=>inputRef.current?.focus(),50);}\n },[visible]);\n useEffect(()=>{if(!visible)return;const h=e=>{if(e.key==='Escape')onClose?.();};\n document.addEventListener('keydown',h);return()=>document.removeEventListener('keydown',h);},[visible,onClose]);\n const handleKey=e=>{if(e.key==='ArrowDown'){e.preventDefault();setActive(a=>(a+1)%filtered.length);}\n else if(e.key==='ArrowUp'){e.preventDefault();setActive(a=>(a-1+filtered.length)%filtered.length);}\n else if(e.key==='Enter'&&filtered[active]){filtered[active].action?.();onClose?.();}};\n if(!visible)return null;\n return(<div onClick={onClose} style={{position:'fixed',inset:0,zIndex:99999,background:'rgba(0,0,0,0.5)',\n backdropFilter:'blur(4px)',display:'flex',justifyContent:'center',paddingTop:'20vh'}}>\n <div onClick={e=>e.stopPropagation()} className={`qsr-palette ${className}`}\n style={{width:520,maxHeight:400,background:'#fff',borderRadius:16,boxShadow:'0 24px 80px rgba(0,0,0,0.2)',overflow:'hidden',\n animation:'qsr-scale-in 0.15s ease-out'}}>\n <div style={{display:'flex',alignItems:'center',gap:8,padding:'12px 16px',borderBottom:'1px solid #f4f4f5'}}>\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#a1a1aa\" strokeWidth=\"2\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/></svg>\n <input ref={inputRef} value={query} onChange={e=>{setQuery(e.target.value);setActive(0);}} onKeyDown={handleKey}\n placeholder={placeholder} style={{border:'none',outline:'none',flex:1,fontSize:15,background:'transparent'}}/>\n </div>\n <div style={{maxHeight:300,overflowY:'auto',padding:4}}>\n {filtered.map((cmd,i)=>(<button key={i} onClick={()=>{cmd.action?.();onClose?.();}}\n style={{display:'flex',alignItems:'center',gap:10,width:'100%',padding:'10px 12px',borderRadius:8,border:'none',\n background:i===active?'rgba(59,130,246,0.06)':'transparent',cursor:'pointer',textAlign:'left',\n fontSize:14,color:'#18181b',transition:'all 0.1s'}}>\n {cmd.icon&&<span style={{width:20,height:20,display:'flex',flexShrink:0,color:'#71717a'}}>{cmd.icon}</span>}\n <span style={{flex:1,fontWeight:i===active?600:400}}>{cmd.label}</span>\n {cmd.shortcut&&<kbd style={{fontSize:11,padding:'2px 6px',borderRadius:4,background:'rgba(128,128,128,0.08)',color:'#a1a1aa',border:'1px solid rgba(128,128,128,0.1)'}}>{cmd.shortcut}</kbd>}\n </button>))}\n </div>\n </div>\n </div>);\n}\n","/**\n * Search SDK - React Hooks\n * 搜索系统相关的状态管理\n */\n\nimport { useState, useEffect, useCallback, useMemo, useRef } from 'react';\nimport { searchApi } from '../services/searchApi.js';\n\n/**\n * 搜索功能\n */\nexport function useSearch(options = {}) {\n const [query, setQuery] = useState('');\n const [results, setResults] = useState([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n const [pagination, setPagination] = useState({ page: 1, total: 0, hasMore: false });\n\n // Handle options with fallback to old opts naming/keys\n const type = options.type || 'all';\n const sort = options.sort || 'relevance';\n const limit = options.limit || 20;\n const debounce = options.debounce !== undefined ? options.debounce : (options.debounceMs !== undefined ? options.debounceMs : 300);\n\n const debounceRef = useRef(null);\n\n const search = useCallback(async (searchQuery, page = 1) => {\n const q = searchQuery !== undefined ? searchQuery : query;\n if (!q || !q.trim()) {\n setResults([]);\n setLoading(false);\n return;\n }\n\n try {\n setLoading(true);\n setError(null);\n \n const response = await searchApi.search(q, {\n type,\n sort,\n page,\n limit,\n });\n\n const items = response?.data || response?.items || response || [];\n\n if (page === 1) {\n setResults(items);\n } else {\n setResults(prev => [...prev, ...items]);\n }\n\n setPagination({\n page,\n total: response?.total || items.length,\n hasMore: !!response?.hasMore,\n });\n } catch (err) {\n setError(err?.message || String(err));\n } finally {\n setLoading(false);\n }\n }, [type, sort, limit, query]);\n\n // 带防抖的搜索\n const debouncedSearch = useCallback((value) => {\n setQuery(value);\n \n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n search(value, 1);\n }, debounce);\n }, [search, debounce]);\n\n // 清理\n useEffect(() => {\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n };\n }, []);\n\n const loadMore = useCallback(() => {\n if (!loading && pagination.hasMore) {\n search(query, pagination.page + 1);\n }\n }, [loading, pagination, search, query]);\n\n const clear = useCallback(() => {\n setQuery('');\n setResults([]);\n setPagination({ page: 1, total: 0, hasMore: false });\n setLoading(false);\n }, []);\n\n return {\n query,\n setQuery: debouncedSearch,\n results,\n loading,\n error,\n pagination,\n search: (q) => search(q !== undefined ? q : query, 1),\n loadMore,\n clear,\n };\n}\n\n/**\n * 搜索建议\n */\nexport function useSuggestions(query, limit = 10) {\n const [suggestions, setSuggestions] = useState([]);\n const [loading, setLoading] = useState(false);\n const debounceRef = useRef(null);\n\n useEffect(() => {\n if (!query || query.length < 2) {\n setSuggestions([]);\n return;\n }\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(async () => {\n try {\n setLoading(true);\n const response = await searchApi.getSuggestions(query, limit);\n setSuggestions(response?.data || response?.suggestions || response || []);\n } catch (err) {\n console.error('Get suggestions error:', err);\n } finally {\n setLoading(false);\n }\n }, 200);\n\n return () => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n };\n }, [query, limit]);\n\n return { suggestions, loading };\n}\n\n/**\n * 带输入状态的搜索建议\n */\nexport function useSearchSuggestions(limit = 10) {\n const [query, setQuery] = useState('');\n const { suggestions, loading } = useSuggestions(query, limit);\n return { query, setQuery, suggestions, loading };\n}\n\n/**\n * 搜索历史\n */\nexport function useSearchHistory(storageKey = 'eco-search-history') {\n const [history, setHistory] = useState([]);\n const maxItems = 10;\n\n // 初始化\n useEffect(() => {\n if (typeof localStorage === 'undefined') return;\n const saved = localStorage.getItem(storageKey);\n if (saved) {\n try {\n const parsed = JSON.parse(saved);\n // Ensure items are normalized as objects { query }\n const normalized = parsed.map(item => typeof item === 'string' ? { query: item } : item);\n setHistory(normalized);\n } catch {\n setHistory([]);\n }\n }\n }, [storageKey]);\n\n const addToHistory = useCallback((item) => {\n const queryStr = typeof item === 'string' ? item : item?.query || '';\n if (!queryStr || !queryStr.trim()) return;\n \n setHistory(prev => {\n const filtered = prev.filter(entry => (typeof entry === 'string' ? entry : entry.query) !== queryStr);\n const newHistory = [{ query: queryStr }, ...filtered].slice(0, maxItems);\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(storageKey, JSON.stringify(newHistory));\n }\n return newHistory;\n });\n }, [storageKey]);\n\n const removeFromHistory = useCallback((item) => {\n const queryStr = typeof item === 'string' ? item : item?.query || '';\n setHistory(prev => {\n const filtered = prev.filter(entry => (typeof entry === 'string' ? entry : entry.query) !== queryStr);\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(storageKey, JSON.stringify(filtered));\n }\n return filtered;\n });\n }, [storageKey]);\n\n const clearHistory = useCallback(() => {\n setHistory([]);\n if (typeof localStorage !== 'undefined') {\n localStorage.removeItem(storageKey);\n }\n }, [storageKey]);\n\n return { history, addToHistory, removeFromHistory, clearHistory };\n}\n\n/**\n * 热门搜索\n */\nexport function useTrendingSearches(limit = 10) {\n const [trending, setTrending] = useState([]);\n const [loading, setLoading] = useState(true);\n\n const fetchTrending = useCallback(async () => {\n try {\n setLoading(true);\n const response = await searchApi.getHotSearches(limit);\n setTrending(response?.data || response?.keywords || response || []);\n } catch (err) {\n console.error('Get trending error:', err);\n } finally {\n setLoading(false);\n }\n }, [limit]);\n\n useEffect(() => {\n fetchTrending();\n }, [fetchTrending]);\n\n return { trending, loading, refresh: fetchTrending };\n}\n\n/**\n * 筛选器\n */\nexport function useSearchFilters(initialFilters = {}) {\n const [filters, setFilters] = useState(initialFilters);\n\n const updateFilter = useCallback((key, value) => {\n setFilters(prev => ({ ...prev, [key]: value }));\n }, []);\n\n const setFilter = updateFilter;\n\n const clearFilters = useCallback(() => {\n setFilters({});\n }, []);\n\n const hasFilters = useMemo(() => {\n return Object.values(filters).some(v => v !== null && v !== undefined && v !== '');\n }, [filters]);\n\n const activeCount = useMemo(() => {\n return Object.values(filters).filter(v => v !== null && v !== undefined && v !== '').length;\n }, [filters]);\n\n return { filters, updateFilter, setFilter, clearFilters, hasFilters, activeCount };\n}\n\n/**\n * 语音搜索\n */\nexport function useVoiceSearch(onResult) {\n const [isListening, setIsListening] = useState(false);\n const [isSupported, setIsSupported] = useState(false);\n const recognitionRef = useRef(null);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;\n if (SpeechRecognition) {\n setIsSupported(true);\n const rec = new SpeechRecognition();\n rec.continuous = false;\n rec.interimResults = false;\n\n rec.onresult = (event) => {\n const transcript = event.results?.[0]?.[0]?.transcript || '';\n onResult?.(transcript);\n };\n\n rec.onend = () => {\n setIsListening(false);\n };\n recognitionRef.current = rec;\n }\n }, [onResult]);\n\n const startListening = useCallback(() => {\n if (recognitionRef.current && !isListening) {\n try {\n recognitionRef.current.start();\n setIsListening(true);\n } catch (err) {\n console.error('Speech recognition start error:', err);\n }\n }\n }, [isListening]);\n\n const stopListening = useCallback(() => {\n if (recognitionRef.current && isListening) {\n try {\n recognitionRef.current.stop();\n } catch (err) {\n console.error('Speech recognition stop error:', err);\n }\n setIsListening(false);\n }\n }, [isListening]);\n\n return { isListening, isSupported, startListening, stopListening };\n}\n","export const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n en: {\n 'search.placeholder': 'Search...',\n 'search.noResults': 'No results found',\n 'search.recent': 'Recent Searches',\n 'search.clear': 'Clear',\n },\n zh: {\n 'search.placeholder': '搜索...',\n 'search.noResults': '未找到结果',\n 'search.recent': '最近搜索',\n 'search.clear': '清空',\n },\n ja: {\n 'search.placeholder': '検索...',\n 'search.noResults': '結果が見つかりません',\n 'search.recent': '最近の検索',\n 'search.clear': 'クリア',\n },\n ko: {\n 'search.placeholder': '검색...',\n 'search.noResults': '결과가 없습니다',\n 'search.recent': '최근 검색',\n 'search.clear': '지우기',\n }\n};\n\nlet currentLang = 'en';\n\nexport function setLanguage(l) {\n if (SUPPORTED_LANGUAGES.includes(l)) currentLang = l;\n}\n\nexport function getLanguage() {\n return currentLang;\n}\n\nexport function t(k, params = {}) {\n let text = messages[currentLang]?.[k] || messages.en?.[k] || k;\n Object.entries(params).forEach(([key, val]) => {\n text = text.replace(new RegExp(`\\\\{${key}\\\\}`, 'g'), val);\n });\n return text;\n}\n","/**\n * Search SDK - React 组件\n * 搜索系统可视化组件\n */\n\nimport React, { useState, useCallback, useRef, useEffect } from 'react';\nimport {\n useSearch,\n useSuggestions,\n useSearchHistory,\n useTrendingSearches,\n useVoiceSearch,\n} from '../hooks/useSearch';\nimport { t } from '../i18n';\nimport './Search.css';\n\n/**\n * 搜索输入框\n */\nexport function SearchInput({ value, onChange, onSearch, onFocus, onBlur, placeholder }) {\n const inputRef = useRef(null);\n\n const handleKeyDown = useCallback((e) => {\n if (e.key === 'Enter') {\n onSearch?.();\n }\n }, [onSearch]);\n\n const handleClear = useCallback(() => {\n onChange?.('');\n inputRef.current?.focus();\n }, [onChange]);\n\n return (\n <div className=\"eco-search-input\">\n <span className=\"eco-search-icon\">🔍</span>\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n placeholder={placeholder || t('searchPlaceholder')}\n />\n {value && (\n <button className=\"eco-search-clear\" onClick={handleClear}>\n ×\n </button>\n )}\n </div>\n );\n}\n\n/**\n * 搜索建议下拉\n */\nexport function SearchSuggestions({ query, onSelect }) {\n const { suggestions, loading } = useSuggestions(query);\n const { history, addToHistory, removeFromHistory, clearHistory } = useSearchHistory();\n const { trending } = useTrendingSearches();\n\n const handleSelect = useCallback((item) => {\n addToHistory(item);\n onSelect?.(item);\n }, [addToHistory, onSelect]);\n\n // 没有输入时显示历史和热门\n if (!query || query.length < 2) {\n return (\n <div className=\"eco-search-dropdown\">\n {history.length > 0 && (\n <div className=\"eco-search-section\">\n <div className=\"eco-search-section-header\">\n <span>{t('recentSearches')}</span>\n <button onClick={clearHistory}>{t('clearHistory')}</button>\n </div>\n <div className=\"eco-search-list\">\n {history.map((item, qbit) => {\n const queryText = typeof item === 'string' ? item : item?.query || '';\n return (\n <div key={qbit} className=\"eco-search-item\">\n <span className=\"eco-search-item-icon\">🕐</span>\n <span className=\"eco-search-item-text\" onClick={() => handleSelect(queryText)}>\n {queryText}\n </span>\n <button\n className=\"eco-search-item-remove\"\n onClick={() => removeFromHistory(queryText)}\n >\n ×\n </button>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {trending.length > 0 && (\n <div className=\"eco-search-section\">\n <div className=\"eco-search-section-header\">\n <span>{t('trending')}</span>\n </div>\n <div className=\"eco-search-tags\">\n {trending.map((item, qbit) => (\n <button\n key={qbit}\n className=\"eco-search-tag\"\n onClick={() => handleSelect(item.keyword)}\n >\n <span className=\"eco-search-tag-rank\">{qbit + 1}</span>\n {item.keyword}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n\n // 显示搜索建议\n return (\n <div className=\"eco-search-dropdown\">\n {loading ? (\n <div className=\"eco-search-loading\">\n <div className=\"eco-search-spinner\" />\n </div>\n ) : suggestions.length > 0 ? (\n <div className=\"eco-search-list\">\n {suggestions.map((item, qbit) => (\n <div\n key={qbit}\n className=\"eco-search-item\"\n onClick={() => handleSelect(item.text)}\n >\n <span className=\"eco-search-item-icon\">🔍</span>\n <span className=\"eco-search-item-text\">\n <HighlightedText text={item.text} highlight={query} />\n </span>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"eco-search-no-suggestions\">\n {t('noResults')}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 高亮匹配文本\n */\nfunction HighlightedText({ text, highlight }) {\n if (!highlight) return text;\n \n const parts = text.split(new RegExp(`(${highlight})`, 'gi'));\n return parts.map((part, qbit) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <mark key={qbit}>{part}</mark>\n ) : (\n part\n )\n );\n}\n\n/**\n * 搜索结果项\n */\nexport function SearchResultItem({ result, onClick }) {\n return (\n <div className=\"eco-search-result\" onClick={() => onClick?.(result)}>\n {result.image && (\n <img className=\"eco-search-result-image\" src={result.image} alt={result.title} />\n )}\n <div className=\"eco-search-result-content\">\n <h4 className=\"eco-search-result-title\">{result.title}</h4>\n {result.description && (\n <p className=\"eco-search-result-desc\">{result.description}</p>\n )}\n <span className=\"eco-search-result-type\">{result.type}</span>\n </div>\n </div>\n );\n}\n\n/**\n * 搜索结果列表\n */\nexport function SearchResults({ results, loading, total, onResultClick, onLoadMore, hasMore }) {\n if (loading && results.length === 0) {\n return (\n <div className=\"eco-search-results eco-search-loading-full\">\n <div className=\"eco-search-spinner\" />\n <span>{t('searching')}</span>\n </div>\n );\n }\n\n if (results.length === 0) {\n return (\n <div className=\"eco-search-results eco-search-empty\">\n <span className=\"eco-search-empty-icon\">🔍</span>\n <span>{t('noResults')}</span>\n </div>\n );\n }\n\n return (\n <div className=\"eco-search-results\">\n <div className=\"eco-search-results-header\">\n {t('found')} {total} {t('items')}\n </div>\n \n <div className=\"eco-search-results-list\">\n {results.map((result, qbit) => (\n <SearchResultItem\n key={result.id || qbit}\n result={result}\n onClick={onResultClick}\n />\n ))}\n </div>\n\n {hasMore && (\n <button className=\"eco-search-load-more\" onClick={onLoadMore} disabled={loading}>\n {loading ? '...' : t('loading')}\n </button>\n )}\n </div>\n );\n}\n\n/**\n * 语音搜索按钮\n */\nexport function VoiceSearchButton({ onResult }) {\n const { isListening, isSupported, startListening, stopListening } = useVoiceSearch(onResult);\n\n if (!isSupported) return null;\n\n return (\n <button\n className={`eco-search-voice ${isListening ? 'listening' : ''}`}\n onClick={isListening ? stopListening : startListening}\n >\n {isListening ? '🔴' : '🎤'}\n </button>\n );\n}\n\n/**\n * 类型筛选tabs\n */\nexport function SearchTypeTabs({ active, onChange }) {\n const types = [\n { key: 'all', label: t('all') },\n { key: 'products', label: t('products') },\n { key: 'users', label: t('users') },\n { key: 'posts', label: t('posts') },\n { key: 'nfts', label: t('nfts') },\n ];\n\n return (\n <div className=\"eco-search-type-tabs\">\n {types.map((type) => (\n <button\n key={type.key}\n className={`eco-search-type-tab ${active === type.key ? 'active' : ''}`}\n onClick={() => onChange(type.key)}\n >\n {type.label}\n </button>\n ))}\n </div>\n );\n}\n\n/**\n * 完整搜索组件\n */\nexport function SearchBox({ onSearch, onResultClick }) {\n const { query, setQuery, results, loading, pagination, search, loadMore } = useSearch();\n const [isFocused, setIsFocused] = useState(false);\n const containerRef = useRef(null);\n\n // 点击外部关闭\n useEffect(() => {\n const handleClickOutside = (e) => {\n if (containerRef.current && !containerRef.current.contains(e.target)) {\n setIsFocused(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleSelect = useCallback((text) => {\n setQuery(text);\n setIsFocused(false);\n onSearch?.(text);\n }, [setQuery, onSearch]);\n\n return (\n <div ref={containerRef} className=\"eco-search-box\">\n <div className=\"eco-search-bar\">\n <SearchInput\n value={query}\n onChange={setQuery}\n onSearch={search}\n onFocus={() => setIsFocused(true)}\n />\n <VoiceSearchButton onResult={handleSelect} />\n </div>\n\n {isFocused && (\n <SearchSuggestions query={query} onSelect={handleSelect} />\n )}\n\n {results.length > 0 && !isFocused && (\n <SearchResults\n results={results}\n loading={loading}\n total={pagination.total}\n hasMore={pagination.hasMore}\n onResultClick={onResultClick}\n onLoadMore={loadMore}\n />\n )}\n </div>\n );\n}\n\n","/**\n * Search SDK - React 组件\n * 搜索服务可视化组件\n */\n\nimport React, { useState, useRef, useEffect, useCallback } from 'react';\nimport {\n useSearch,\n useSearchSuggestions,\n useSearchHistory,\n useTrendingSearches,\n useSearchFilters,\n} from '../hooks/useSearch';\nimport { t } from '../i18n';\nimport './SearchBox.css';\n\n/**\n * 搜索框\n */\nexport function SearchBox({\n placeholder,\n onSearch,\n onSelect,\n showSuggestions = true,\n showHistory = true,\n autoFocus = false,\n}) {\n const [isOpen, setIsOpen] = useState(false);\n const inputRef = useRef(null);\n \n const { query, setQuery, suggestions, loading: loadingSuggestions } = useSearchSuggestions();\n const { history, addToHistory, removeFromHistory, clearHistory } = useSearchHistory();\n const { trending } = useTrendingSearches();\n\n const handleSubmit = (e) => {\n e?.preventDefault();\n if (query.trim()) {\n addToHistory(query);\n onSearch?.(query);\n setIsOpen(false);\n }\n };\n\n const handleSelect = (value) => {\n setQuery(value);\n addToHistory(value);\n onSelect?.(value);\n onSearch?.(value);\n setIsOpen(false);\n };\n\n const handleFocus = () => {\n setIsOpen(true);\n };\n\n const handleBlur = () => {\n // 延迟关闭,允许点击建议项\n setTimeout(() => setIsOpen(false), 200);\n };\n\n useEffect(() => {\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, [autoFocus]);\n\n // 键盘事件\n useEffect(() => {\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n inputRef.current?.blur();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, []);\n\n return (\n <div className=\"eco-search-box\">\n <form className=\"eco-search-form\" onSubmit={handleSubmit}>\n <span className=\"eco-search-icon\">🔍</span>\n <input\n ref={inputRef}\n type=\"text\"\n className=\"eco-search-input\"\n placeholder={placeholder || t('searchPlaceholder')}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n {query && (\n <button\n type=\"button\"\n className=\"eco-search-clear\"\n onClick={() => setQuery('')}\n >\n ×\n </button>\n )}\n {loadingSuggestions && (\n <span className=\"eco-search-loading\">\n <span className=\"eco-search-spinner\" />\n </span>\n )}\n </form>\n\n {isOpen && (showSuggestions || showHistory) && (\n <div className=\"eco-search-dropdown\">\n {/* 搜索建议 */}\n {showSuggestions && suggestions.length > 0 && (\n <div className=\"eco-search-section\">\n <div className=\"eco-search-section-header\">\n {t('suggestions')}\n </div>\n <ul className=\"eco-search-list\">\n {suggestions.map((item, index) => (\n <li\n key={index}\n className=\"eco-search-item\"\n onClick={() => handleSelect(item.text || item)}\n >\n <span className=\"eco-search-item-icon\">🔍</span>\n <span className=\"eco-search-item-text\">\n <HighlightedText text={item.text || item} highlight={query} />\n </span>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* 搜索历史 */}\n {showHistory && history.length > 0 && !query && (\n <div className=\"eco-search-section\">\n <div className=\"eco-search-section-header\">\n <span>{t('recentSearches')}</span>\n <button\n className=\"eco-search-clear-btn\"\n onClick={clearHistory}\n >\n {t('clearHistory')}\n </button>\n </div>\n <ul className=\"eco-search-list\">\n {history.map((item, index) => (\n <li\n key={index}\n className=\"eco-search-item\"\n onClick={() => handleSelect(item.query)}\n >\n <span className=\"eco-search-item-icon\">🕒</span>\n <span className=\"eco-search-item-text\">{item.query}</span>\n <button\n className=\"eco-search-item-remove\"\n onClick={(e) => {\n e.stopPropagation();\n removeFromHistory(item.query);\n }}\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* 热门搜索 */}\n {trending.length > 0 && !query && (\n <div className=\"eco-search-section\">\n <div className=\"eco-search-section-header\">\n 🔥 {t('trending')}\n </div>\n <div className=\"eco-search-tags\">\n {trending.map((item, index) => (\n <button\n key={index}\n className=\"eco-search-tag\"\n onClick={() => handleSelect(item.keyword || item)}\n >\n {item.keyword || item}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * 搜索结果列表\n */\nexport function SearchResults({ results, loading, total, query, onItemClick }) {\n if (loading) {\n return (\n <div className=\"eco-search-results eco-search-loading\">\n <div className=\"eco-search-spinner-lg\" />\n <span>{t('loading')}</span>\n </div>\n );\n }\n\n if (!results || results.length === 0) {\n return (\n <div className=\"eco-search-results eco-search-empty\">\n <span className=\"eco-search-empty-icon\">🔍</span>\n <span>{t('noResults')}</span>\n </div>\n );\n }\n\n return (\n <div className=\"eco-search-results\">\n {total > 0 && (\n <div className=\"eco-search-results-count\">\n {t('resultCount', { count: total })}\n </div>\n )}\n <ul className=\"eco-search-results-list\">\n {results.map((item, index) => (\n <SearchResultItem\n key={item.id || index}\n item={item}\n query={query}\n onClick={() => onItemClick?.(item)}\n />\n ))}\n </ul>\n </div>\n );\n}\n\n/**\n * 搜索结果项\n */\nexport function SearchResultItem({ item, query, onClick }) {\n return (\n <li className=\"eco-search-result-item\" onClick={onClick}>\n {item.image && (\n <img\n className=\"eco-search-result-image\"\n src={item.image}\n alt={item.title}\n />\n )}\n <div className=\"eco-search-result-content\">\n <h4 className=\"eco-search-result-title\">\n <HighlightedText text={item.title} highlight={query} />\n </h4>\n {item.description && (\n <p className=\"eco-search-result-desc\">\n <HighlightedText text={item.description} highlight={query} />\n </p>\n )}\n <div className=\"eco-search-result-meta\">\n {item.type && (\n <span className=\"eco-search-result-type\">{t(item.type)}</span>\n )}\n {item.date && (\n <span className=\"eco-search-result-date\">{item.date}</span>\n )}\n </div>\n </div>\n </li>\n );\n}\n\n/**\n * 筛选侧边栏\n */\nexport function SearchFilters({ config, onChange }) {\n const { filters, setFilter, clearFilters, activeCount } = useSearchFilters();\n\n useEffect(() => {\n onChange?.(filters);\n }, [filters, onChange]);\n\n return (\n <div className=\"eco-search-filters\">\n <div className=\"eco-search-filters-header\">\n <h4>{t('filters')}</h4>\n {activeCount > 0 && (\n <button className=\"eco-search-filters-clear\" onClick={clearFilters}>\n {t('clearFilters')}\n </button>\n )}\n </div>\n\n {config?.map((group) => (\n <div key={group.key} className=\"eco-search-filter-group\">\n <h5>{group.label}</h5>\n <div className=\"eco-search-filter-options\">\n {group.options.map((option) => (\n <label key={option.value} className=\"eco-search-filter-option\">\n <input\n type={group.type === 'radio' ? 'radio' : 'checkbox'}\n name={group.key}\n checked={\n group.type === 'radio'\n ? filters[group.key] === option.value\n : (filters[group.key] || []).includes(option.value)\n }\n onChange={() => {\n if (group.type === 'radio') {\n setFilter(group.key, option.value);\n } else {\n const current = filters[group.key] || [];\n const exists = current.includes(option.value);\n setFilter(\n group.key,\n exists\n ? current.filter(v => v !== option.value)\n : [...current, option.value]\n );\n }\n }}\n />\n <span>{option.label}</span>\n {option.count !== undefined && (\n <span className=\"eco-search-filter-count\">({option.count})</span>\n )}\n </label>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * 分页控件\n */\nexport function SearchPagination({ page, totalPages, onPageChange }) {\n if (totalPages <= 1) return null;\n\n const getPageNumbers = () => {\n const pages = [];\n const showPages = 5;\n let start = Math.max(1, page - Math.floor(showPages / 2));\n let end = Math.min(totalPages, start + showPages - 1);\n \n if (end - start < showPages - 1) {\n start = Math.max(1, end - showPages + 1);\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n return pages;\n };\n\n return (\n <div className=\"eco-search-pagination\">\n <button\n className=\"eco-search-page-btn\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n >\n {t('prevPage')}\n </button>\n\n <div className=\"eco-search-page-numbers\">\n {getPageNumbers().map((p) => (\n <button\n key={p}\n className={`eco-search-page-num ${p === page ? 'active' : ''}`}\n onClick={() => onPageChange(p)}\n >\n {p}\n </button>\n ))}\n </div>\n\n <button\n className=\"eco-search-page-btn\"\n disabled={page >= totalPages}\n onClick={() => onPageChange(page + 1)}\n >\n {t('nextPage')}\n </button>\n </div>\n );\n}\n\n/**\n * 排序选择器\n */\nexport function SortSelector({ value, onChange, options }) {\n const defaultOptions = [\n { value: 'relevance', label: t('relevance') },\n { value: 'newest', label: t('newest') },\n { value: 'oldest', label: t('oldest') },\n { value: 'popular', label: t('popular') },\n ];\n\n return (\n <div className=\"eco-search-sort\">\n <span className=\"eco-search-sort-label\">{t('sortBy')}:</span>\n <select\n className=\"eco-search-sort-select\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n >\n {(options || defaultOptions).map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n\n/**\n * 高亮文本\n */\nfunction HighlightedText({ text, highlight }) {\n if (!highlight || !text) return <>{text}</>;\n\n const regex = new RegExp(`(${highlight})`, 'gi');\n const parts = text.split(regex);\n\n return (\n <>\n {parts.map((part, i) =>\n regex.test(part) ? (\n <mark key={i} className=\"eco-search-highlight\">{part}</mark>\n ) : (\n part\n )\n )}\n </>\n );\n}\n\n","/**\n * Search SDK - 类型定义\n */\n\n// 搜索类型\nexport const SearchType = {\n ALL: 'all',\n CONTENT: 'content',\n USER: 'user',\n PRODUCT: 'product',\n TAG: 'tag',\n CATEGORY: 'category',\n};\n\n// 排序方式\nexport const SortBy = {\n RELEVANCE: 'relevance',\n LATEST: 'latest',\n OLDEST: 'oldest',\n POPULAR: 'popular',\n ALPHABETICAL: 'alphabetical',\n};\n\n// 过滤类型\nexport const FilterType = {\n TERM: 'term',\n RANGE: 'range',\n DATE_RANGE: 'date_range',\n GEO: 'geo',\n EXISTS: 'exists',\n};\n\n// 高亮配置\nexport const HighlightStyle = {\n BOLD: 'bold',\n MARK: 'mark',\n CUSTOM: 'custom',\n};\n\n// 建议类型\nexport const SuggestionType = {\n COMPLETION: 'completion',\n PHRASE: 'phrase',\n TERM: 'term',\n HISTORY: 'history',\n};\n\nexport default {\n SearchType,\n SortBy,\n FilterType,\n HighlightStyle,\n SuggestionType,\n};\n","/**\n * @quantabit/search-sdk\n * \n * QuantaBit Search SDK — 全局搜索组件\n */\n\nimport { searchApi } from './services/searchApi.js';\n\n// React Components\nexport { SearchInput } from './components/SearchInput.jsx';\nexport { CommandPalette } from './components/CommandPalette.jsx';\nexport {\n SearchSuggestions,\n SearchResultItem,\n SearchResults,\n VoiceSearchButton,\n SearchTypeTabs,\n} from './components/Search.jsx';\nexport { SearchBox, SearchFilters, SearchPagination, SortSelector } from './components/SearchBox.jsx';\n\n// React Hooks\nexport {\n useSearch,\n useSuggestions,\n useSearchSuggestions,\n useSearchHistory,\n useTrendingSearches,\n useSearchFilters,\n useVoiceSearch,\n} from './hooks/useSearch.js';\n\n// API Client\nexport { searchApi, SearchApiClient } from './services/searchApi.js';\n\n// Types\nexport { SearchType, SortBy, FilterType, HighlightStyle, SuggestionType } from './types/index.js';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n/index.js';\n\n// Shortcut Methods\nexport const search = searchApi.search.bind(searchApi);\nexport const getSuggestions = searchApi.getSuggestions.bind(searchApi);\nexport const getTrending = searchApi.getHotSearches.bind(searchApi);\n\n// Styles\nimport './styles/search.css';\n"],"names":["SearchApiClient","BaseApiClient","constructor","config","search","query","options","get","q","searchUsers","searchContent","searchProducts","searchTopics","getSuggestions","limit","getHotSearches","getDiscovery","getHistory","clearHistory","delete","deleteHistoryItem","historyId","advancedSearch","filters","post","filterSearch","getIndexStatus","rebuildIndex","indexType","getStats","params","clearAllUserData","results","history","e","historyError","message","preferences","preferencesError","cleared","timestamp","Date","toISOString","exportSearchData","exportDate","format","searchHistory","data","error","getDataDisclosure","sdk","privacyLevel","consentRequired","collected","type","description","retention","anonymizedAfter","gdprCapabilities","note","searchApi","SearchInput","placeholder","suggestions","onSearch","onSelect","debounce","shortcut","showIcon","size","className","setQuery","useState","open","setOpen","active","setActive","inputRef","useRef","timerRef","sz","small","pad","font","medium","large","s","filtered","filter","label","toLowerCase","includes","handleChange","v","target","value","clearTimeout","current","setTimeout","handleSelect","item","handleKey","key","preventDefault","a","Math","min","length","max","React","createElement","style","position","width","display","alignItems","gap","padding","border","borderRadius","background","transition","fontSize","height","viewBox","fill","stroke","strokeWidth","cx","cy","r","d","ref","onChange","onKeyDown","onFocus","outline","flex","onClick","cursor","color","top","left","right","marginTop","boxShadow","maxHeight","overflowY","zIndex","map","i","desc","textAlign","fontWeight","CommandPalette","visible","onClose","commands","c","useEffect","focus","h","document","addEventListener","removeEventListener","action","inset","backdropFilter","justifyContent","paddingTop","stopPropagation","overflow","animation","borderBottom","cmd","icon","flexShrink","useSearch","setResults","loading","setLoading","setError","pagination","setPagination","page","total","hasMore","sort","undefined","debounceMs","debounceRef","useCallback","searchQuery","trim","response","items","prev","err","String","debouncedSearch","loadMore","clear","useSuggestions","setSuggestions","console","useSearchSuggestions","useSearchHistory","storageKey","setHistory","maxItems","localStorage","saved","getItem","parsed","JSON","parse","normalized","addToHistory","queryStr","entry","newHistory","slice","setItem","stringify","removeFromHistory","removeItem","useTrendingSearches","trending","setTrending","fetchTrending","keywords","refresh","useSearchFilters","initialFilters","setFilters","updateFilter","setFilter","clearFilters","hasFilters","useMemo","Object","values","some","activeCount","useVoiceSearch","onResult","isListening","setIsListening","isSupported","setIsSupported","recognitionRef","window","SpeechRecognition","webkitSpeechRecognition","rec","continuous","interimResults","onresult","event","transcript","onend","startListening","start","stopListening","stop","SUPPORTED_LANGUAGES","messages","en","zh","ja","ko","currentLang","setLanguage","l","getLanguage","t","k","text","entries","forEach","val","replace","RegExp","SearchSuggestions","qbit","queryText","keyword","HighlightedText","highlight","parts","split","part","SearchResultItem","result","image","src","alt","title","SearchResults","onResultClick","onLoadMore","id","disabled","VoiceSearchButton","SearchTypeTabs","types","SearchBox","showSuggestions","showHistory","autoFocus","isOpen","setIsOpen","loadingSuggestions","handleSubmit","handleFocus","handleBlur","handleKeyDown","blur","onSubmit","onBlur","index","SearchFilters","group","option","name","checked","exists","count","SearchPagination","totalPages","onPageChange","getPageNumbers","pages","showPages","floor","end","push","p","SortSelector","defaultOptions","opt","Fragment","regex","test","SearchType","ALL","CONTENT","USER","PRODUCT","TAG","CATEGORY","SortBy","RELEVANCE","LATEST","OLDEST","POPULAR","ALPHABETICAL","FilterType","TERM","RANGE","DATE_RANGE","GEO","EXISTS","HighlightStyle","BOLD","MARK","CUSTOM","SuggestionType","COMPLETION","PHRASE","HISTORY","bind","getTrending"],"mappings":"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"}