@seekora-ai/ui-sdk-react 0.2.14 → 0.2.16
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.
- package/dist/components/CurrentRefinements.d.ts.map +1 -1
- package/dist/components/CurrentRefinements.js +69 -9
- package/dist/components/FacetDropdown.d.ts +94 -0
- package/dist/components/FacetDropdown.d.ts.map +1 -0
- package/dist/components/FacetDropdown.js +396 -0
- package/dist/components/Facets.d.ts +30 -0
- package/dist/components/Facets.d.ts.map +1 -1
- package/dist/components/Facets.js +215 -7
- package/dist/components/FederatedDropdown.d.ts.map +1 -1
- package/dist/components/FederatedDropdown.js +45 -31
- package/dist/components/InfiniteHits.d.ts +0 -7
- package/dist/components/InfiniteHits.d.ts.map +1 -1
- package/dist/components/InfiniteHits.js +2 -13
- package/dist/components/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination.js +27 -9
- package/dist/components/QuerySuggestions.d.ts +0 -4
- package/dist/components/QuerySuggestions.d.ts.map +1 -1
- package/dist/components/QuerySuggestions.js +1 -17
- package/dist/components/QuerySuggestionsDropdown.d.ts +0 -4
- package/dist/components/QuerySuggestionsDropdown.d.ts.map +1 -1
- package/dist/components/QuerySuggestionsDropdown.js +32 -33
- package/dist/components/RangeInput.d.ts.map +1 -1
- package/dist/components/RangeInput.js +6 -6
- package/dist/components/RangeSlider.d.ts.map +1 -1
- package/dist/components/RangeSlider.js +54 -32
- package/dist/components/Recommendations.d.ts +0 -7
- package/dist/components/Recommendations.d.ts.map +1 -1
- package/dist/components/Recommendations.js +3 -23
- package/dist/components/RichQuerySuggestions.d.ts +0 -4
- package/dist/components/RichQuerySuggestions.d.ts.map +1 -1
- package/dist/components/RichQuerySuggestions.js +40 -35
- package/dist/components/SearchBar.d.ts +0 -4
- package/dist/components/SearchBar.d.ts.map +1 -1
- package/dist/components/SearchBar.js +17 -11
- package/dist/components/SearchBarWithSuggestions.js +4 -4
- package/dist/components/SearchLayout.d.ts.map +1 -1
- package/dist/components/SearchLayout.js +22 -17
- package/dist/components/SearchProvider.d.ts.map +1 -1
- package/dist/components/SearchProvider.js +1 -3
- package/dist/components/SearchResults.d.ts +0 -6
- package/dist/components/SearchResults.d.ts.map +1 -1
- package/dist/components/SearchResults.js +38 -39
- package/dist/components/primitives/ActionButtons.d.ts.map +1 -1
- package/dist/components/primitives/ActionButtons.js +34 -10
- package/dist/components/primitives/BadgeList.d.ts.map +1 -1
- package/dist/components/primitives/BadgeList.js +33 -13
- package/dist/components/primitives/ImageDisplay.d.ts.map +1 -1
- package/dist/components/primitives/ImageDisplay.js +32 -19
- package/dist/components/primitives/ImageZoom.d.ts.map +1 -1
- package/dist/components/primitives/ImageZoom.js +85 -30
- package/dist/components/primitives/VariantSelector.js +10 -10
- package/dist/components/primitives/VariantSwatches.d.ts.map +1 -1
- package/dist/components/primitives/VariantSwatches.js +28 -13
- package/dist/components/product-page/ProductGallery.d.ts +8 -1
- package/dist/components/product-page/ProductGallery.d.ts.map +1 -1
- package/dist/components/product-page/ProductGallery.js +2 -2
- package/dist/components/section-primitives/SectionItemGrid.d.ts +1 -3
- package/dist/components/section-primitives/SectionItemGrid.d.ts.map +1 -1
- package/dist/components/section-primitives/SectionItemGrid.js +1 -4
- package/dist/components/section-primitives/SectionSearchProvider.d.ts +3 -1
- package/dist/components/section-primitives/SectionSearchProvider.d.ts.map +1 -1
- package/dist/components/section-primitives/SectionSearchProvider.js +3 -2
- package/dist/components/section-primitives/index.d.ts +0 -1
- package/dist/components/section-primitives/index.d.ts.map +1 -1
- package/dist/components/section-primitives/index.js +0 -1
- package/dist/components/suggestions/AmazonDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/AmazonDropdown.js +3 -21
- package/dist/components/suggestions/GoogleDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/GoogleDropdown.js +3 -20
- package/dist/components/suggestions/MinimalDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/MinimalDropdown.js +2 -2
- package/dist/components/suggestions/MobileSheetDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/MobileSheetDropdown.js +78 -78
- package/dist/components/suggestions/PinterestDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/PinterestDropdown.js +41 -41
- package/dist/components/suggestions/ShopifyDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/ShopifyDropdown.js +40 -41
- package/dist/components/suggestions/SpotlightDropdown.d.ts.map +1 -1
- package/dist/components/suggestions/SpotlightDropdown.js +2 -3
- package/dist/components/suggestions/SuggestionSearchBar.d.ts.map +1 -1
- package/dist/components/suggestions/SuggestionSearchBar.js +2 -15
- package/dist/components/suggestions/types.d.ts +0 -6
- package/dist/components/suggestions/types.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/DropdownPanel.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/DropdownPanel.js +15 -2
- package/dist/components/suggestions-primitives/ItemCard.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/ItemCard.js +48 -11
- package/dist/components/suggestions-primitives/ItemGrid.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/ItemGrid.js +18 -5
- package/dist/components/suggestions-primitives/ProductCard.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/ProductCard.js +36 -12
- package/dist/components/suggestions-primitives/ProductCardLayouts.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/ProductCardLayouts.js +52 -20
- package/dist/components/suggestions-primitives/ProductGrid.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/ProductGrid.js +8 -3
- package/dist/components/suggestions-primitives/RecentSearchesList.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/RecentSearchesList.js +12 -5
- package/dist/components/suggestions-primitives/SearchInput.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/SearchInput.js +29 -10
- package/dist/components/suggestions-primitives/SuggestionItem.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/SuggestionItem.js +8 -3
- package/dist/components/suggestions-primitives/SuggestionList.d.ts +1 -8
- package/dist/components/suggestions-primitives/SuggestionList.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/SuggestionList.js +1 -7
- package/dist/components/suggestions-primitives/TrendingList.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/TrendingList.js +14 -7
- package/dist/components/suggestions-primitives/index.d.ts +1 -3
- package/dist/components/suggestions-primitives/index.d.ts.map +1 -1
- package/dist/components/suggestions-primitives/index.js +1 -2
- package/dist/docsearch/components/DocSearch.d.ts.map +1 -1
- package/dist/docsearch/components/DocSearch.js +1 -1
- package/dist/docsearch/components/Results.d.ts +1 -3
- package/dist/docsearch/components/Results.d.ts.map +1 -1
- package/dist/docsearch/components/Results.js +1 -9
- package/dist/docsearch/components/SearchBox.d.ts +1 -2
- package/dist/docsearch/components/SearchBox.d.ts.map +1 -1
- package/dist/docsearch/components/SearchBox.js +4 -6
- package/dist/docsearch/hooks/useSeekoraSearch.d.ts.map +1 -1
- package/dist/docsearch/hooks/useSeekoraSearch.js +6 -0
- package/dist/docsearch/types.d.ts +0 -1
- package/dist/docsearch/types.d.ts.map +1 -1
- package/dist/docsearch.css +2 -5
- package/dist/hooks/useClickTracking.d.ts.map +1 -1
- package/dist/hooks/useClickTracking.js +4 -11
- package/dist/hooks/useExperiment.d.ts.map +1 -1
- package/dist/hooks/useExperiment.js +10 -33
- package/dist/hooks/useFilters.d.ts +27 -0
- package/dist/hooks/useFilters.d.ts.map +1 -0
- package/dist/hooks/useFilters.js +66 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.umd.js +1 -1
- package/dist/src/index.d.ts +166 -81
- package/dist/src/index.esm.js +2141 -1048
- package/dist/src/index.esm.js.map +1 -1
- package/dist/src/index.js +2142 -1049
- package/dist/src/index.js.map +1 -1
- package/dist/utils/responsive.d.ts +130 -0
- package/dist/utils/responsive.d.ts.map +1 -0
- package/dist/utils/responsive.js +231 -0
- package/package.json +7 -7
- package/src/docsearch/docsearch.css +2 -5
|
@@ -21,7 +21,6 @@ export interface RecommendationTheme {
|
|
|
21
21
|
content?: string;
|
|
22
22
|
name?: string;
|
|
23
23
|
price?: string;
|
|
24
|
-
loading?: string;
|
|
25
24
|
empty?: string;
|
|
26
25
|
}
|
|
27
26
|
interface BaseRecommendationProps {
|
|
@@ -51,8 +50,6 @@ export interface RelatedProductsProps extends BaseRecommendationProps {
|
|
|
51
50
|
items?: RecommendationItem[];
|
|
52
51
|
/** Loading state */
|
|
53
52
|
loading?: boolean;
|
|
54
|
-
/** Show loading state when fetching and no previous items (default false: show previous results until new render) */
|
|
55
|
-
showLoadingState?: boolean;
|
|
56
53
|
}
|
|
57
54
|
export declare const RelatedProducts: React.FC<RelatedProductsProps>;
|
|
58
55
|
export interface TrendingItemsProps extends BaseRecommendationProps {
|
|
@@ -60,8 +57,6 @@ export interface TrendingItemsProps extends BaseRecommendationProps {
|
|
|
60
57
|
items?: RecommendationItem[];
|
|
61
58
|
/** Loading state */
|
|
62
59
|
loading?: boolean;
|
|
63
|
-
/** Show loading state when fetching and no previous items (default false: show previous results until new render) */
|
|
64
|
-
showLoadingState?: boolean;
|
|
65
60
|
/** Facet name for trending (if using facet data) */
|
|
66
61
|
facetName?: string;
|
|
67
62
|
}
|
|
@@ -73,8 +68,6 @@ export interface FrequentlyBoughtTogetherProps extends BaseRecommendationProps {
|
|
|
73
68
|
items?: RecommendationItem[];
|
|
74
69
|
/** Loading state */
|
|
75
70
|
loading?: boolean;
|
|
76
|
-
/** Show loading state when fetching and no previous items (default false: show previous results until new render) */
|
|
77
|
-
showLoadingState?: boolean;
|
|
78
71
|
/** Show "Add all to cart" button */
|
|
79
72
|
showAddAllButton?: boolean;
|
|
80
73
|
/** Callback when "Add all" is clicked */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../src/components/Recommendations.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"Recommendations.d.ts","sourceRoot":"","sources":["../../src/components/Recommendations.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,16 +10,12 @@
|
|
|
10
10
|
import React, { useEffect, useState, useMemo } from 'react';
|
|
11
11
|
import { useSearchContext } from './SearchProvider';
|
|
12
12
|
import { clsx } from 'clsx';
|
|
13
|
-
export const RelatedProducts = ({ productId, items: itemsProp, loading: loadingProp = false,
|
|
13
|
+
export const RelatedProducts = ({ productId, items: itemsProp, loading: loadingProp = false, title = 'Related Products', maxItems = 6, renderItem, onItemClick, className, style, theme: customTheme, layout = 'horizontal', currencySymbol = '$', }) => {
|
|
14
14
|
const { theme } = useSearchContext();
|
|
15
15
|
const recommendationTheme = customTheme || {};
|
|
16
16
|
// If items are provided, use them directly
|
|
17
17
|
const items = itemsProp?.slice(0, maxItems) || [];
|
|
18
18
|
const loading = loadingProp;
|
|
19
|
-
if (loading && items.length === 0 && showLoadingState) {
|
|
20
|
-
return (React.createElement("div", { className: clsx(recommendationTheme.root, className), style: style },
|
|
21
|
-
React.createElement("div", { className: recommendationTheme.loading, style: getLoadingStyle(theme) }, "Loading related products...")));
|
|
22
|
-
}
|
|
23
19
|
if (loading && items.length === 0)
|
|
24
20
|
return null;
|
|
25
21
|
if (items.length === 0) {
|
|
@@ -27,15 +23,11 @@ export const RelatedProducts = ({ productId, items: itemsProp, loading: loadingP
|
|
|
27
23
|
}
|
|
28
24
|
return (React.createElement(RecommendationSection, { title: title, items: items, renderItem: renderItem, onItemClick: onItemClick, className: className, style: style, theme: customTheme, layout: layout, currencySymbol: currencySymbol }));
|
|
29
25
|
};
|
|
30
|
-
export const TrendingItems = ({ items: itemsProp, loading: loadingProp = false,
|
|
26
|
+
export const TrendingItems = ({ items: itemsProp, loading: loadingProp = false, title = 'Trending Now', maxItems = 8, renderItem, onItemClick, className, style, theme: customTheme, layout = 'horizontal', currencySymbol = '$', }) => {
|
|
31
27
|
const { theme } = useSearchContext();
|
|
32
28
|
const recommendationTheme = customTheme || {};
|
|
33
29
|
const items = itemsProp?.slice(0, maxItems) || [];
|
|
34
30
|
const loading = loadingProp;
|
|
35
|
-
if (loading && items.length === 0 && showLoadingState) {
|
|
36
|
-
return (React.createElement("div", { className: clsx(recommendationTheme.root, className), style: style },
|
|
37
|
-
React.createElement("div", { className: recommendationTheme.loading, style: getLoadingStyle(theme) }, "Loading trending items...")));
|
|
38
|
-
}
|
|
39
31
|
if (loading && items.length === 0)
|
|
40
32
|
return null;
|
|
41
33
|
if (items.length === 0) {
|
|
@@ -43,7 +35,7 @@ export const TrendingItems = ({ items: itemsProp, loading: loadingProp = false,
|
|
|
43
35
|
}
|
|
44
36
|
return (React.createElement(RecommendationSection, { title: title, items: items, renderItem: renderItem, onItemClick: onItemClick, className: className, style: style, theme: customTheme, layout: layout, currencySymbol: currencySymbol }));
|
|
45
37
|
};
|
|
46
|
-
export const FrequentlyBoughtTogether = ({ productId, items: itemsProp, loading: loadingProp = false,
|
|
38
|
+
export const FrequentlyBoughtTogether = ({ productId, items: itemsProp, loading: loadingProp = false, title = 'Frequently Bought Together', maxItems = 4, renderItem, onItemClick, className, style, theme: customTheme, layout = 'horizontal', currencySymbol = '$', showAddAllButton = true, onAddAll, }) => {
|
|
47
39
|
const { theme } = useSearchContext();
|
|
48
40
|
const recommendationTheme = customTheme || {};
|
|
49
41
|
const items = itemsProp?.slice(0, maxItems) || [];
|
|
@@ -56,10 +48,6 @@ export const FrequentlyBoughtTogether = ({ productId, items: itemsProp, loading:
|
|
|
56
48
|
return sum + price;
|
|
57
49
|
}, 0);
|
|
58
50
|
}, [items]);
|
|
59
|
-
if (loading && items.length === 0 && showLoadingState) {
|
|
60
|
-
return (React.createElement("div", { className: clsx(recommendationTheme.root, className), style: style },
|
|
61
|
-
React.createElement("div", { className: recommendationTheme.loading, style: getLoadingStyle(theme) }, "Loading recommendations...")));
|
|
62
|
-
}
|
|
63
51
|
if (loading && items.length === 0)
|
|
64
52
|
return null;
|
|
65
53
|
if (items.length === 0) {
|
|
@@ -266,11 +254,3 @@ const DefaultRecommendationItem = ({ item, theme: recommendationTheme, currencyS
|
|
|
266
254
|
currencySymbol,
|
|
267
255
|
typeof price === 'number' ? price.toFixed(2) : price)))));
|
|
268
256
|
};
|
|
269
|
-
// Helper function
|
|
270
|
-
function getLoadingStyle(theme) {
|
|
271
|
-
return {
|
|
272
|
-
padding: theme.spacing.large,
|
|
273
|
-
textAlign: 'center',
|
|
274
|
-
color: theme.colors.textSecondary,
|
|
275
|
-
};
|
|
276
|
-
}
|
|
@@ -57,10 +57,6 @@ export interface RichQuerySuggestionsProps extends QuerySuggestionsEventHandlers
|
|
|
57
57
|
header?: React.ReactNode;
|
|
58
58
|
/** Custom footer content */
|
|
59
59
|
footer?: React.ReactNode;
|
|
60
|
-
/** Show loading overlay when fetching (default false: show previous results until new results render) */
|
|
61
|
-
showLoadingOverlay?: boolean;
|
|
62
|
-
/** Custom render for loading overlay (only when showLoadingOverlay is true) */
|
|
63
|
-
renderLoading?: () => React.ReactNode;
|
|
64
60
|
/** Dropdown width */
|
|
65
61
|
width?: string | number;
|
|
66
62
|
/** Dropdown max height */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichQuerySuggestions.d.ts","sourceRoot":"","sources":["../../src/components/RichQuerySuggestions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAQN,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EAGd,kBAAkB,EAClB,0BAA0B,EAC1B,6BAA6B,EAE7B,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"RichQuerySuggestions.d.ts","sourceRoot":"","sources":["../../src/components/RichQuerySuggestions.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,20 @@ import React, { useState, useRef, useCallback, useMemo, forwardRef, useImperativ
|
|
|
14
14
|
import { useSearchContext } from './SearchProvider';
|
|
15
15
|
import { useQuerySuggestionsEnhanced } from '../hooks/useQuerySuggestionsEnhanced';
|
|
16
16
|
import { clsx } from 'clsx';
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Constants
|
|
19
|
+
// ============================================================================
|
|
20
|
+
const TRANSITIONS = {
|
|
21
|
+
fast: '150ms ease-in-out',
|
|
22
|
+
normal: '200ms ease-in-out',
|
|
23
|
+
slow: '300ms ease-in-out',
|
|
24
|
+
};
|
|
25
|
+
const BORDER_RADIUS = {
|
|
26
|
+
sm: 4,
|
|
27
|
+
md: 6,
|
|
28
|
+
lg: 8,
|
|
29
|
+
full: 9999,
|
|
30
|
+
};
|
|
17
31
|
// Default section order
|
|
18
32
|
const DEFAULT_SECTIONS = [
|
|
19
33
|
{ id: 'recent', title: 'Recent Searches', maxItems: 5, enabled: true, order: 1 },
|
|
@@ -26,16 +40,16 @@ const DEFAULT_SECTIONS = [
|
|
|
26
40
|
// ============================================================================
|
|
27
41
|
const styles = {
|
|
28
42
|
container: {
|
|
29
|
-
backgroundColor: 'var(--seekora-bg-surface,
|
|
30
|
-
border: '1px solid var(--seekora-border-color,
|
|
31
|
-
borderRadius:
|
|
43
|
+
backgroundColor: 'var(--seekora-bg-surface, transparent)',
|
|
44
|
+
border: '1px solid var(--seekora-border-color, rgba(128,128,128,0.2))',
|
|
45
|
+
borderRadius: `var(--seekora-border-radius-lg, ${BORDER_RADIUS.lg * 1.5}px)`,
|
|
32
46
|
boxShadow: 'var(--seekora-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04))',
|
|
33
47
|
overflow: 'hidden',
|
|
34
48
|
},
|
|
35
49
|
header: {
|
|
36
50
|
padding: '12px 16px',
|
|
37
|
-
borderBottom: '1px solid var(--seekora-border-color,
|
|
38
|
-
backgroundColor: 'var(--seekora-bg-secondary,
|
|
51
|
+
borderBottom: '1px solid var(--seekora-border-color, rgba(128,128,128,0.2))',
|
|
52
|
+
backgroundColor: 'var(--seekora-bg-secondary, rgba(255, 255, 255, 0.1))',
|
|
39
53
|
},
|
|
40
54
|
content: {
|
|
41
55
|
overflowY: 'auto',
|
|
@@ -70,7 +84,7 @@ const styles = {
|
|
|
70
84
|
alignItems: 'flex-start',
|
|
71
85
|
padding: '10px 16px',
|
|
72
86
|
cursor: 'pointer',
|
|
73
|
-
transition:
|
|
87
|
+
transition: `background-color ${TRANSITIONS.fast}`,
|
|
74
88
|
gap: '12px',
|
|
75
89
|
},
|
|
76
90
|
itemActive: {
|
|
@@ -89,7 +103,7 @@ const styles = {
|
|
|
89
103
|
},
|
|
90
104
|
itemQuery: {
|
|
91
105
|
fontSize: '14px',
|
|
92
|
-
color: 'var(--seekora-text-primary,
|
|
106
|
+
color: 'var(--seekora-text-primary, inherit)',
|
|
93
107
|
fontWeight: 500,
|
|
94
108
|
margin: 0,
|
|
95
109
|
overflow: 'hidden',
|
|
@@ -98,7 +112,7 @@ const styles = {
|
|
|
98
112
|
},
|
|
99
113
|
itemMeta: {
|
|
100
114
|
fontSize: '12px',
|
|
101
|
-
color: 'var(--seekora-text-secondary,
|
|
115
|
+
color: 'var(--seekora-text-secondary, inherit)',
|
|
102
116
|
marginTop: '2px',
|
|
103
117
|
},
|
|
104
118
|
itemCount: {
|
|
@@ -119,11 +133,11 @@ const styles = {
|
|
|
119
133
|
padding: '3px 8px',
|
|
120
134
|
fontSize: '11px',
|
|
121
135
|
fontWeight: 500,
|
|
122
|
-
color: 'var(--seekora-text-secondary,
|
|
123
|
-
backgroundColor: 'var(--seekora-bg-tertiary,
|
|
124
|
-
borderRadius:
|
|
136
|
+
color: 'var(--seekora-text-secondary, inherit)',
|
|
137
|
+
backgroundColor: 'var(--seekora-bg-tertiary, rgba(255, 255, 255, 0.1))',
|
|
138
|
+
borderRadius: `${BORDER_RADIUS.lg * 1.5}px`,
|
|
125
139
|
cursor: 'pointer',
|
|
126
|
-
transition:
|
|
140
|
+
transition: `all ${TRANSITIONS.fast}`,
|
|
127
141
|
},
|
|
128
142
|
categoryPillHover: {
|
|
129
143
|
backgroundColor: 'var(--seekora-primary-light, #dbeafe)',
|
|
@@ -145,12 +159,12 @@ const styles = {
|
|
|
145
159
|
padding: '6px 12px',
|
|
146
160
|
fontSize: '13px',
|
|
147
161
|
fontWeight: 500,
|
|
148
|
-
color: 'var(--seekora-text-primary,
|
|
149
|
-
backgroundColor: 'var(--seekora-bg-secondary,
|
|
150
|
-
border: '1px solid var(--seekora-border-color,
|
|
151
|
-
borderRadius:
|
|
162
|
+
color: 'var(--seekora-text-primary, inherit)',
|
|
163
|
+
backgroundColor: 'var(--seekora-bg-secondary, rgba(255, 255, 255, 0.1))',
|
|
164
|
+
border: '1px solid var(--seekora-border-color, rgba(128,128,128,0.2))',
|
|
165
|
+
borderRadius: `${BORDER_RADIUS.full}px`,
|
|
152
166
|
cursor: 'pointer',
|
|
153
|
-
transition:
|
|
167
|
+
transition: `all ${TRANSITIONS.fast}`,
|
|
154
168
|
},
|
|
155
169
|
trendingChipHover: {
|
|
156
170
|
borderColor: 'var(--seekora-primary, #3b82f6)',
|
|
@@ -164,7 +178,7 @@ const styles = {
|
|
|
164
178
|
trendingRank: {
|
|
165
179
|
width: '18px',
|
|
166
180
|
height: '18px',
|
|
167
|
-
borderRadius:
|
|
181
|
+
borderRadius: `${BORDER_RADIUS.full}px`,
|
|
168
182
|
backgroundColor: 'var(--seekora-primary, #3b82f6)',
|
|
169
183
|
color: 'white',
|
|
170
184
|
fontSize: '10px',
|
|
@@ -176,38 +190,30 @@ const styles = {
|
|
|
176
190
|
removeButton: {
|
|
177
191
|
padding: '4px',
|
|
178
192
|
marginLeft: 'auto',
|
|
179
|
-
borderRadius:
|
|
193
|
+
borderRadius: `${BORDER_RADIUS.sm}px`,
|
|
180
194
|
border: 'none',
|
|
181
195
|
background: 'transparent',
|
|
182
196
|
cursor: 'pointer',
|
|
183
197
|
color: 'var(--seekora-text-tertiary, #9ca3af)',
|
|
184
198
|
opacity: 0,
|
|
185
|
-
transition:
|
|
199
|
+
transition: `opacity ${TRANSITIONS.fast}`,
|
|
186
200
|
},
|
|
187
201
|
divider: {
|
|
188
202
|
height: '1px',
|
|
189
|
-
backgroundColor: 'var(--seekora-border-color,
|
|
203
|
+
backgroundColor: 'var(--seekora-border-color, rgba(128,128,128,0.2))',
|
|
190
204
|
margin: '4px 16px',
|
|
191
205
|
},
|
|
192
206
|
footer: {
|
|
193
207
|
padding: '12px 16px',
|
|
194
|
-
borderTop: '1px solid var(--seekora-border-color,
|
|
195
|
-
backgroundColor: 'var(--seekora-bg-secondary,
|
|
208
|
+
borderTop: '1px solid var(--seekora-border-color, rgba(128,128,128,0.2))',
|
|
209
|
+
backgroundColor: 'var(--seekora-bg-secondary, rgba(255, 255, 255, 0.1))',
|
|
196
210
|
fontSize: '12px',
|
|
197
|
-
color: 'var(--seekora-text-secondary,
|
|
198
|
-
},
|
|
199
|
-
loadingOverlay: {
|
|
200
|
-
position: 'absolute',
|
|
201
|
-
inset: 0,
|
|
202
|
-
display: 'flex',
|
|
203
|
-
alignItems: 'center',
|
|
204
|
-
justifyContent: 'center',
|
|
205
|
-
backgroundColor: 'rgba(255, 255, 255, 0.8)',
|
|
211
|
+
color: 'var(--seekora-text-secondary, inherit)',
|
|
206
212
|
},
|
|
207
213
|
emptyState: {
|
|
208
214
|
padding: '32px 16px',
|
|
209
215
|
textAlign: 'center',
|
|
210
|
-
color: 'var(--seekora-text-secondary,
|
|
216
|
+
color: 'var(--seekora-text-secondary, inherit)',
|
|
211
217
|
},
|
|
212
218
|
highlight: {
|
|
213
219
|
backgroundColor: 'var(--seekora-highlight-bg, #fef9c3)',
|
|
@@ -233,7 +239,7 @@ const CloseIcon = () => (React.createElement("svg", { viewBox: "0 0 20 20", fill
|
|
|
233
239
|
// Component
|
|
234
240
|
// ============================================================================
|
|
235
241
|
export const RichQuerySuggestions = forwardRef(function RichQuerySuggestions(props, ref) {
|
|
236
|
-
const { query, isOpen = true, sections = DEFAULT_SECTIONS, maxSuggestionsPerSection = 8, minQueryLength = 0, debounceMs = 200, includeDropdownRecommendations = true, includeDropdownProductList = true, includeFilteredTabs = true, includeCategories = true, maxCategories = 3, showCounts = true, showCategoryCounts = true, showSectionHeaders = true, classNames = {}, style, renderSuggestion, renderCategory, renderTrendingItem, renderRecentItem, header, footer, width = '100%', maxHeight = '480px', zIndex = 1000, ariaLabel = 'Search suggestions', analyticsTags, onSuggestionSelect, onCategoryClick, onRecentSearchClick, onRecentSearchRemove, onViewAllClick, onOpen, onClose,
|
|
242
|
+
const { query, isOpen = true, sections = DEFAULT_SECTIONS, maxSuggestionsPerSection = 8, minQueryLength = 0, debounceMs = 200, includeDropdownRecommendations = true, includeDropdownProductList = true, includeFilteredTabs = true, includeCategories = true, maxCategories = 3, showCounts = true, showCategoryCounts = true, showSectionHeaders = true, classNames = {}, style, renderSuggestion, renderCategory, renderTrendingItem, renderRecentItem, header, footer, width = '100%', maxHeight = '480px', zIndex = 1000, ariaLabel = 'Search suggestions', analyticsTags, onSuggestionSelect, onCategoryClick, onRecentSearchClick, onRecentSearchRemove, onViewAllClick, onOpen, onClose, } = props;
|
|
237
243
|
const { client } = useSearchContext();
|
|
238
244
|
const containerRef = useRef(null);
|
|
239
245
|
const [activeIndex, setActiveIndex] = useState(-1);
|
|
@@ -452,7 +458,6 @@ export const RichQuerySuggestions = forwardRef(function RichQuerySuggestions(pro
|
|
|
452
458
|
} },
|
|
453
459
|
header && React.createElement("div", { style: styles.header }, header),
|
|
454
460
|
React.createElement("div", { style: { ...styles.content, maxHeight } },
|
|
455
|
-
loading && showLoadingOverlay && (React.createElement("div", { style: styles.loadingOverlay }, renderLoading ? renderLoading() : React.createElement("span", null, "Loading..."))),
|
|
456
461
|
enabledSections.map((section, index) => {
|
|
457
462
|
let content = null;
|
|
458
463
|
switch (section.id) {
|
|
@@ -14,7 +14,6 @@ export interface SearchBarTheme {
|
|
|
14
14
|
suggestionItem?: string;
|
|
15
15
|
suggestionItemHover?: string;
|
|
16
16
|
suggestionItemActive?: string;
|
|
17
|
-
loadingIndicator?: string;
|
|
18
17
|
searchIcon?: string;
|
|
19
18
|
clearButton?: string;
|
|
20
19
|
submitButton?: string;
|
|
@@ -37,10 +36,7 @@ export interface SearchBarProps {
|
|
|
37
36
|
className?: string;
|
|
38
37
|
style?: React.CSSProperties;
|
|
39
38
|
theme?: SearchBarTheme;
|
|
40
|
-
/** Show loading state when fetching and no previous suggestions (default false: show previous results until new render) */
|
|
41
|
-
showLoadingState?: boolean;
|
|
42
39
|
renderSuggestion?: (suggestion: string, index: number) => React.ReactNode;
|
|
43
|
-
renderLoading?: () => React.ReactNode;
|
|
44
40
|
/** Custom render for the search icon. If not provided, a default magnifying glass SVG is rendered. */
|
|
45
41
|
renderSearchIcon?: () => React.ReactNode;
|
|
46
42
|
/** Whether to show a clear button when the query is non-empty (default: true) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../src/components/SearchBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../src/components/SearchBar.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAMxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAU5D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/F,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1E,sGAAsG;IACtG,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACzC,iFAAiF;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACxC,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IAC3C,yEAAyE;IACzE,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAgED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAib9C,CAAC"}
|
|
@@ -9,6 +9,13 @@ import { useSearchState } from '../hooks/useSearchState';
|
|
|
9
9
|
import { useQuerySuggestions } from '../hooks/useQuerySuggestions';
|
|
10
10
|
import { log } from '@seekora-ai/ui-sdk-core';
|
|
11
11
|
import { clsx } from 'clsx';
|
|
12
|
+
// Z-index scale for consistent layering
|
|
13
|
+
const Z_INDEX = {
|
|
14
|
+
dropdown: 100,
|
|
15
|
+
modal: 200,
|
|
16
|
+
overlay: 300,
|
|
17
|
+
tooltip: 50,
|
|
18
|
+
};
|
|
12
19
|
const SIZE_CONFIG = {
|
|
13
20
|
small: {
|
|
14
21
|
padding: '0.375rem 0.5rem',
|
|
@@ -44,7 +51,7 @@ const DefaultSearchIcon = ({ size = 18 }) => (React.createElement("svg", { width
|
|
|
44
51
|
const DefaultClearIcon = ({ size = 14 }) => (React.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
45
52
|
React.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
46
53
|
React.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })));
|
|
47
|
-
export const SearchBar = ({ placeholder = '
|
|
54
|
+
export const SearchBar = ({ placeholder = 'Powered by Seekora', showSuggestions = true, debounceMs = 300, minQueryLength = 2, maxSuggestions = 10, onSearch, onQueryChange, onSuggestionSelect, onSearchStateChange, searchOptions, className, style, theme: customTheme, renderSuggestion, renderSearchIcon, showClearButton = true, renderClearIcon, showSubmitButton = false, renderSubmitButton, size = 'medium', }) => {
|
|
48
55
|
const { client, theme, enableAnalytics, autoTrackSearch } = useSearchContext();
|
|
49
56
|
const { query, setQuery, search: triggerSearch, results, loading: searchLoading, error: searchError } = useSearchState();
|
|
50
57
|
const [isFocused, setIsFocused] = useState(false);
|
|
@@ -174,12 +181,11 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
174
181
|
}, 200);
|
|
175
182
|
}, []);
|
|
176
183
|
const defaultRenderSuggestion = (suggestion, index) => (React.createElement("div", { key: index }, suggestion));
|
|
177
|
-
const defaultRenderLoading = () => (React.createElement("div", { style: { padding: theme.spacing.medium, textAlign: 'center' } }, "Loading suggestions..."));
|
|
178
184
|
const searchBarTheme = customTheme || {};
|
|
179
185
|
const isLoading = suggestionsLoading || searchLoading;
|
|
180
186
|
// Show list when we have suggestions (including previous while loading) or when loading and showLoadingState
|
|
181
187
|
const hasSuggestions = displayedSuggestions.length > 0;
|
|
182
|
-
const showSuggestionsList = isFocused && showSuggestions && query.length >= minQueryLength &&
|
|
188
|
+
const showSuggestionsList = isFocused && showSuggestions && query.length >= minQueryLength && hasSuggestions;
|
|
183
189
|
// Get processing time from results
|
|
184
190
|
const res = results;
|
|
185
191
|
const processingTime = res?.processingTimeMS
|
|
@@ -195,9 +201,9 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
195
201
|
const inputPaddingLeft = hasSearchIcon ? sizeConfig.iconPaddingLeft : sizeConfig.padding.split(' ')[1] || sizeConfig.padding;
|
|
196
202
|
const inputPaddingRight = hasClearBtn ? sizeConfig.iconPaddingRight : sizeConfig.padding.split(' ')[1] || sizeConfig.padding;
|
|
197
203
|
const borderRadius = typeof theme.borderRadius === 'string' ? theme.borderRadius : theme.borderRadius.medium;
|
|
198
|
-
const focusBorderColor = isFocused ? theme.colors.focus : theme.colors.border
|
|
204
|
+
const focusBorderColor = isFocused ? `var(--seekora-border-focus, ${theme.colors.focus})` : `var(--seekora-border, ${theme.colors.border})`;
|
|
199
205
|
const focusRingShadow = isFocused
|
|
200
|
-
? `0 0 0 3px ${theme.colors.focus}33`
|
|
206
|
+
? `0 0 0 3px var(--seekora-border-focus-alpha, ${theme.colors.focus}33)`
|
|
201
207
|
: undefined;
|
|
202
208
|
const handleClear = useCallback(() => {
|
|
203
209
|
setQuery('', false);
|
|
@@ -231,7 +237,7 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
231
237
|
justifyContent: 'center',
|
|
232
238
|
pointerEvents: 'none',
|
|
233
239
|
color: 'var(--seekora-searchbar-icon-color)',
|
|
234
|
-
zIndex:
|
|
240
|
+
zIndex: 2,
|
|
235
241
|
} }, renderSearchIcon ? renderSearchIcon() : React.createElement(DefaultSearchIcon, { size: sizeConfig.iconSize }))),
|
|
236
242
|
React.createElement("input", { ref: inputRef, type: "text", value: query, onChange: handleInputChange, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, placeholder: placeholder, className: clsx(searchBarTheme.input, isFocused && searchBarTheme.inputFocused), style: {
|
|
237
243
|
width: '100%',
|
|
@@ -267,7 +273,7 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
267
273
|
borderRadius: '50%',
|
|
268
274
|
color: 'var(--seekora-searchbar-icon-color)',
|
|
269
275
|
transition: theme.transitions?.fast || '150ms ease-in-out',
|
|
270
|
-
zIndex:
|
|
276
|
+
zIndex: 2,
|
|
271
277
|
}, onMouseDown: (e) => {
|
|
272
278
|
// Prevent input blur so the clear action doesn't race with blur handler
|
|
273
279
|
e.preventDefault();
|
|
@@ -278,8 +284,8 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
278
284
|
fontSize: sizeConfig.fontSize,
|
|
279
285
|
fontFamily: theme.typography.fontFamily,
|
|
280
286
|
fontWeight: theme.typography.fontWeight?.medium ?? 500,
|
|
281
|
-
backgroundColor: theme.colors.primary
|
|
282
|
-
color: '#ffffff',
|
|
287
|
+
backgroundColor: `var(--seekora-primary, ${theme.colors.primary})`,
|
|
288
|
+
color: 'var(--seekora-primary-text, #ffffff)',
|
|
283
289
|
border: 'none',
|
|
284
290
|
borderRadius: 'var(--seekora-searchbar-radius)',
|
|
285
291
|
cursor: 'pointer',
|
|
@@ -307,9 +313,9 @@ export const SearchBar = ({ placeholder = 'Search...', showSuggestions = true, d
|
|
|
307
313
|
boxShadow: theme.shadows.medium,
|
|
308
314
|
maxHeight: '400px',
|
|
309
315
|
overflowY: 'auto',
|
|
310
|
-
zIndex:
|
|
316
|
+
zIndex: Z_INDEX.dropdown,
|
|
317
|
+
boxSizing: 'border-box',
|
|
311
318
|
} },
|
|
312
|
-
isLoading && displayedSuggestions.length === 0 && showLoadingState && (renderLoading ? renderLoading() : defaultRenderLoading()),
|
|
313
319
|
displayedSuggestions.length > 0 && (React.createElement(React.Fragment, null, displayedSuggestions.map((suggestion, index) => {
|
|
314
320
|
const isSelected = index === selectedIndex;
|
|
315
321
|
const renderFn = renderSuggestion || defaultRenderSuggestion;
|
|
@@ -29,8 +29,8 @@ const styles = {
|
|
|
29
29
|
transition: 'border-color 150ms ease, box-shadow 150ms ease',
|
|
30
30
|
},
|
|
31
31
|
inputWrapperFocused: {
|
|
32
|
-
borderColor: 'var(--seekora-primary, #3b82f6)',
|
|
33
|
-
boxShadow: '0 0 0 3px var(--seekora-primary-light, rgba(59, 130, 246, 0.1))',
|
|
32
|
+
borderColor: 'var(--seekora-border-focus, var(--seekora-primary, #3b82f6))',
|
|
33
|
+
boxShadow: '0 0 0 3px var(--seekora-border-focus-alpha, var(--seekora-primary-light, rgba(59, 130, 246, 0.1)))',
|
|
34
34
|
},
|
|
35
35
|
input: {
|
|
36
36
|
flex: 1,
|
|
@@ -73,7 +73,7 @@ const styles = {
|
|
|
73
73
|
margin: '4px',
|
|
74
74
|
border: 'none',
|
|
75
75
|
backgroundColor: 'var(--seekora-primary, #3b82f6)',
|
|
76
|
-
color: 'white',
|
|
76
|
+
color: 'var(--seekora-primary-text, white)',
|
|
77
77
|
borderRadius: 'var(--seekora-border-radius, 6px)',
|
|
78
78
|
fontSize: '14px',
|
|
79
79
|
fontWeight: 600,
|
|
@@ -92,7 +92,7 @@ const ClearIcon = () => (React.createElement("svg", { viewBox: "0 0 20 20", fill
|
|
|
92
92
|
// Component
|
|
93
93
|
// ============================================================================
|
|
94
94
|
export const SearchBarWithSuggestions = forwardRef(function SearchBarWithSuggestions(props, ref) {
|
|
95
|
-
const { variant = 'classic', placeholder = '
|
|
95
|
+
const { variant = 'classic', placeholder = 'Powered by Seekora', initialQuery = '', value, onQueryChange, onSearch, onSuggestionSelect, onProductClick, showSearchButton = false, searchButtonText = 'Search', showClearButton = true, autoFocus = false, minQueryLength = 1, maxSuggestions = 8, maxProducts = 8, debounceMs = 200, showRecentSearches = true, showTrendingOnEmpty = true, includeDropdownRecommendations = false, filteredTabs, enableAnalytics = true, analyticsTags, includeFacets, includeCategories, dropdownWidth, dropdownMaxHeight, classNames = {}, style, inputStyle, ariaLabel = 'Search', } = props;
|
|
96
96
|
const { client } = useSearchContext();
|
|
97
97
|
const inputRef = useRef(null);
|
|
98
98
|
const dropdownRef = useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchLayout.d.ts","sourceRoot":"","sources":["../../src/components/SearchLayout.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchLayout.d.ts","sourceRoot":"","sources":["../../src/components/SearchLayout.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yDAAyD;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,mBAAmB;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoGpD,CAAC"}
|
|
@@ -3,53 +3,58 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides a layout structure for search interfaces with sidebar and main content
|
|
5
5
|
*/
|
|
6
|
-
import React
|
|
6
|
+
import React from 'react';
|
|
7
7
|
import { useSearchContext } from './SearchProvider';
|
|
8
8
|
import { clsx } from 'clsx';
|
|
9
|
+
import { useIsMobile, useResponsivePadding, useResponsiveGap } from '../utils/responsive';
|
|
9
10
|
export const SearchLayout = ({ sidebar, children, header, footer, sidebarWidth = '300px', className, style, theme: customTheme, showSidebarOnMobile = false, }) => {
|
|
10
11
|
const { theme } = useSearchContext();
|
|
11
12
|
const layoutTheme = customTheme || {};
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
setIsMobile(window.innerWidth <= 768);
|
|
16
|
-
};
|
|
17
|
-
checkMobile();
|
|
18
|
-
window.addEventListener('resize', checkMobile);
|
|
19
|
-
return () => window.removeEventListener('resize', checkMobile);
|
|
20
|
-
}, []);
|
|
13
|
+
const isMobile = useIsMobile();
|
|
14
|
+
const responsivePadding = useResponsivePadding(parseInt(theme.spacing.medium) || 16);
|
|
15
|
+
const responsiveGap = useResponsiveGap(parseInt(theme.spacing.large) || 24);
|
|
21
16
|
return (React.createElement("div", { className: clsx(layoutTheme.container, className), style: {
|
|
22
17
|
display: 'flex',
|
|
23
18
|
flexDirection: 'column',
|
|
24
19
|
minHeight: '100vh',
|
|
20
|
+
width: '100%',
|
|
21
|
+
maxWidth: '100%',
|
|
25
22
|
backgroundColor: theme.colors.background,
|
|
26
23
|
...style,
|
|
27
24
|
} },
|
|
28
25
|
header && (React.createElement("header", { className: layoutTheme.header, style: {
|
|
29
|
-
padding:
|
|
26
|
+
padding: responsivePadding,
|
|
30
27
|
borderBottom: `1px solid ${theme.colors.border}`,
|
|
31
28
|
backgroundColor: theme.colors.background,
|
|
32
29
|
} }, header)),
|
|
33
30
|
React.createElement("div", { style: {
|
|
34
31
|
display: 'flex',
|
|
35
32
|
flex: 1,
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
width: '100%',
|
|
34
|
+
maxWidth: '100%',
|
|
35
|
+
flexDirection: isMobile ? 'column' : 'row',
|
|
36
|
+
gap: responsiveGap,
|
|
37
|
+
padding: responsivePadding,
|
|
38
38
|
backgroundColor: theme.colors.background,
|
|
39
39
|
color: theme.colors.text,
|
|
40
|
+
overflow: isMobile ? 'visible' : 'hidden',
|
|
40
41
|
} },
|
|
41
42
|
sidebar && (!isMobile || showSidebarOnMobile) && (React.createElement("aside", { className: layoutTheme.sidebar, style: {
|
|
42
|
-
width: sidebarWidth,
|
|
43
|
-
minWidth: sidebarWidth,
|
|
43
|
+
width: isMobile ? '100%' : sidebarWidth,
|
|
44
|
+
minWidth: isMobile ? '100%' : sidebarWidth,
|
|
45
|
+
flexShrink: 0,
|
|
44
46
|
} }, sidebar)),
|
|
45
47
|
React.createElement("main", { className: layoutTheme.main, style: {
|
|
46
48
|
flex: 1,
|
|
47
|
-
minWidth: 0,
|
|
49
|
+
minWidth: 0,
|
|
50
|
+
width: '100%',
|
|
51
|
+
maxWidth: '100%',
|
|
48
52
|
backgroundColor: theme.colors.background,
|
|
49
53
|
color: theme.colors.text,
|
|
54
|
+
overflow: 'auto',
|
|
50
55
|
} }, children)),
|
|
51
56
|
footer && (React.createElement("footer", { className: layoutTheme.footer, style: {
|
|
52
|
-
padding:
|
|
57
|
+
padding: responsivePadding,
|
|
53
58
|
borderTop: `1px solid ${theme.colors.border}`,
|
|
54
59
|
backgroundColor: theme.colors.background,
|
|
55
60
|
} }, footer))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchProvider.d.ts","sourceRoot":"","sources":["../../src/components/SearchProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA6B,SAAS,EAAsB,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAO,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI1D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"SearchProvider.d.ts","sourceRoot":"","sources":["../../src/components/SearchProvider.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA6B,SAAS,EAAsB,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAO,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAI1D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,kBAAkB,CAAC;CAClC;AAID,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkDxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,kBAQnC,CAAC"}
|
|
@@ -30,9 +30,7 @@ export const SearchProvider = ({ client, theme: themeConfig, enableAnalytics = t
|
|
|
30
30
|
useEffect(() => {
|
|
31
31
|
if (abTestId !== undefined || abVariant !== undefined) {
|
|
32
32
|
stateManager.setAbTest(abTestId, abVariant);
|
|
33
|
-
|
|
34
|
-
client.setAbTest(abTestId, abVariant);
|
|
35
|
-
}
|
|
33
|
+
client.setAbTest(abTestId, abVariant);
|
|
36
34
|
}
|
|
37
35
|
}, [stateManager, client, abTestId, abVariant]);
|
|
38
36
|
const value = useMemo(() => ({
|
|
@@ -18,7 +18,6 @@ export interface SearchResultsTheme {
|
|
|
18
18
|
resultImage?: string;
|
|
19
19
|
resultPrice?: string;
|
|
20
20
|
emptyState?: string;
|
|
21
|
-
loadingState?: string;
|
|
22
21
|
errorState?: string;
|
|
23
22
|
pagination?: string;
|
|
24
23
|
/** Custom min-height class override */
|
|
@@ -33,9 +32,6 @@ export interface SearchResultsProps {
|
|
|
33
32
|
onResultClick?: (result: ResultItem, index: number) => void;
|
|
34
33
|
renderResult?: (result: ResultItem, index: number, isActive?: boolean) => React.ReactNode;
|
|
35
34
|
renderEmpty?: () => React.ReactNode;
|
|
36
|
-
/** Show loading state when fetching and no previous results (default false: show previous results until new render) */
|
|
37
|
-
showLoadingState?: boolean;
|
|
38
|
-
renderLoading?: () => React.ReactNode;
|
|
39
35
|
renderError?: (error: Error) => React.ReactNode;
|
|
40
36
|
className?: string;
|
|
41
37
|
style?: React.CSSProperties;
|
|
@@ -56,8 +52,6 @@ export interface SearchResultsProps {
|
|
|
56
52
|
minHeight?: string;
|
|
57
53
|
/** Minimum width to prevent container shrinking (default: '100%') */
|
|
58
54
|
minWidth?: string;
|
|
59
|
-
/** Opacity applied to results while loading new results (default: 0.7, set to 1 to disable) */
|
|
60
|
-
loadingOpacity?: number;
|
|
61
55
|
}
|
|
62
56
|
export declare const SearchResults: React.FC<SearchResultsProps>;
|
|
63
57
|
//# sourceMappingURL=SearchResults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../src/components/SearchResults.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"SearchResults.d.ts","sourceRoot":"","sources":["../../src/components/SearchResults.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1F,WAAW,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gFAAgF;IAChF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;IAC1C,+DAA+D;IAC/D,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAoBD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqlBtD,CAAC"}
|