@seekora-ai/ui-sdk-react 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.
Files changed (169) hide show
  1. package/dist/components/Breadcrumb.d.ts +43 -0
  2. package/dist/components/Breadcrumb.d.ts.map +1 -0
  3. package/dist/components/Breadcrumb.js +119 -0
  4. package/dist/components/ClearRefinements.d.ts +42 -0
  5. package/dist/components/ClearRefinements.d.ts.map +1 -0
  6. package/dist/components/ClearRefinements.js +80 -0
  7. package/dist/components/CurrentRefinements.d.ts +41 -0
  8. package/dist/components/CurrentRefinements.d.ts.map +1 -0
  9. package/dist/components/CurrentRefinements.js +83 -0
  10. package/dist/components/Facets.d.ts +53 -0
  11. package/dist/components/Facets.d.ts.map +1 -0
  12. package/dist/components/Facets.js +195 -0
  13. package/dist/components/FederatedDropdown.d.ts +92 -0
  14. package/dist/components/FederatedDropdown.d.ts.map +1 -0
  15. package/dist/components/FederatedDropdown.js +510 -0
  16. package/dist/components/HierarchicalMenu.d.ts +55 -0
  17. package/dist/components/HierarchicalMenu.d.ts.map +1 -0
  18. package/dist/components/HierarchicalMenu.js +168 -0
  19. package/dist/components/Highlight.d.ts +51 -0
  20. package/dist/components/Highlight.d.ts.map +1 -0
  21. package/dist/components/Highlight.js +155 -0
  22. package/dist/components/HitsPerPage.d.ts +41 -0
  23. package/dist/components/HitsPerPage.d.ts.map +1 -0
  24. package/dist/components/HitsPerPage.js +72 -0
  25. package/dist/components/InfiniteHits.d.ts +56 -0
  26. package/dist/components/InfiniteHits.d.ts.map +1 -0
  27. package/dist/components/InfiniteHits.js +181 -0
  28. package/dist/components/MobileFilters.d.ts +71 -0
  29. package/dist/components/MobileFilters.d.ts.map +1 -0
  30. package/dist/components/MobileFilters.js +242 -0
  31. package/dist/components/Pagination.d.ts +44 -0
  32. package/dist/components/Pagination.d.ts.map +1 -0
  33. package/dist/components/Pagination.js +142 -0
  34. package/dist/components/QuerySuggestions.d.ts +38 -0
  35. package/dist/components/QuerySuggestions.d.ts.map +1 -0
  36. package/dist/components/QuerySuggestions.js +86 -0
  37. package/dist/components/QuerySuggestionsDropdown.d.ts +86 -0
  38. package/dist/components/QuerySuggestionsDropdown.d.ts.map +1 -0
  39. package/dist/components/QuerySuggestionsDropdown.js +395 -0
  40. package/dist/components/RangeInput.d.ts +58 -0
  41. package/dist/components/RangeInput.d.ts.map +1 -0
  42. package/dist/components/RangeInput.js +203 -0
  43. package/dist/components/RangeSlider.d.ts +51 -0
  44. package/dist/components/RangeSlider.d.ts.map +1 -0
  45. package/dist/components/RangeSlider.js +193 -0
  46. package/dist/components/Recommendations.d.ts +90 -0
  47. package/dist/components/Recommendations.d.ts.map +1 -0
  48. package/dist/components/Recommendations.js +270 -0
  49. package/dist/components/RichQuerySuggestions.d.ts +77 -0
  50. package/dist/components/RichQuerySuggestions.d.ts.map +1 -0
  51. package/dist/components/RichQuerySuggestions.js +492 -0
  52. package/dist/components/SearchBar.d.ts +40 -0
  53. package/dist/components/SearchBar.d.ts.map +1 -0
  54. package/dist/components/SearchBar.js +217 -0
  55. package/dist/components/SearchBarWithSuggestions.d.ts +99 -0
  56. package/dist/components/SearchBarWithSuggestions.d.ts.map +1 -0
  57. package/dist/components/SearchBarWithSuggestions.js +275 -0
  58. package/dist/components/SearchLayout.d.ts +35 -0
  59. package/dist/components/SearchLayout.d.ts.map +1 -0
  60. package/dist/components/SearchLayout.js +56 -0
  61. package/dist/components/SearchProvider.d.ts +28 -0
  62. package/dist/components/SearchProvider.d.ts.map +1 -0
  63. package/dist/components/SearchProvider.js +43 -0
  64. package/dist/components/SearchResults.d.ts +51 -0
  65. package/dist/components/SearchResults.d.ts.map +1 -0
  66. package/dist/components/SearchResults.js +485 -0
  67. package/dist/components/SortBy.d.ts +44 -0
  68. package/dist/components/SortBy.d.ts.map +1 -0
  69. package/dist/components/SortBy.js +61 -0
  70. package/dist/components/Stats.d.ts +37 -0
  71. package/dist/components/Stats.d.ts.map +1 -0
  72. package/dist/components/Stats.js +52 -0
  73. package/dist/components/suggestions/AmazonDropdown.d.ts +30 -0
  74. package/dist/components/suggestions/AmazonDropdown.d.ts.map +1 -0
  75. package/dist/components/suggestions/AmazonDropdown.js +529 -0
  76. package/dist/components/suggestions/GoogleDropdown.d.ts +31 -0
  77. package/dist/components/suggestions/GoogleDropdown.d.ts.map +1 -0
  78. package/dist/components/suggestions/GoogleDropdown.js +370 -0
  79. package/dist/components/suggestions/MinimalDropdown.d.ts +24 -0
  80. package/dist/components/suggestions/MinimalDropdown.d.ts.map +1 -0
  81. package/dist/components/suggestions/MinimalDropdown.js +314 -0
  82. package/dist/components/suggestions/MobileSheetDropdown.d.ts +31 -0
  83. package/dist/components/suggestions/MobileSheetDropdown.d.ts.map +1 -0
  84. package/dist/components/suggestions/MobileSheetDropdown.js +485 -0
  85. package/dist/components/suggestions/PinterestDropdown.d.ts +29 -0
  86. package/dist/components/suggestions/PinterestDropdown.d.ts.map +1 -0
  87. package/dist/components/suggestions/PinterestDropdown.js +450 -0
  88. package/dist/components/suggestions/ShopifyDropdown.d.ts +27 -0
  89. package/dist/components/suggestions/ShopifyDropdown.d.ts.map +1 -0
  90. package/dist/components/suggestions/ShopifyDropdown.js +451 -0
  91. package/dist/components/suggestions/SpotlightDropdown.d.ts +33 -0
  92. package/dist/components/suggestions/SpotlightDropdown.d.ts.map +1 -0
  93. package/dist/components/suggestions/SpotlightDropdown.js +547 -0
  94. package/dist/components/suggestions/SuggestionSearchBar.d.ts +123 -0
  95. package/dist/components/suggestions/SuggestionSearchBar.d.ts.map +1 -0
  96. package/dist/components/suggestions/SuggestionSearchBar.js +652 -0
  97. package/dist/components/suggestions/index.d.ts +37 -0
  98. package/dist/components/suggestions/index.d.ts.map +1 -0
  99. package/dist/components/suggestions/index.js +59 -0
  100. package/dist/components/suggestions/styles/index.d.ts +11 -0
  101. package/dist/components/suggestions/styles/index.d.ts.map +1 -0
  102. package/dist/components/suggestions/styles/index.js +289 -0
  103. package/dist/components/suggestions/styles/responsive.d.ts +107 -0
  104. package/dist/components/suggestions/styles/responsive.d.ts.map +1 -0
  105. package/dist/components/suggestions/styles/responsive.js +237 -0
  106. package/dist/components/suggestions/types.d.ts +489 -0
  107. package/dist/components/suggestions/types.d.ts.map +1 -0
  108. package/dist/components/suggestions/types.js +6 -0
  109. package/dist/components/suggestions/utils.d.ts +213 -0
  110. package/dist/components/suggestions/utils.d.ts.map +1 -0
  111. package/dist/components/suggestions/utils.js +514 -0
  112. package/dist/hooks/useAnalytics.d.ts +20 -0
  113. package/dist/hooks/useAnalytics.d.ts.map +1 -0
  114. package/dist/hooks/useAnalytics.js +62 -0
  115. package/dist/hooks/useNaturalLanguageFilters.d.ts +48 -0
  116. package/dist/hooks/useNaturalLanguageFilters.d.ts.map +1 -0
  117. package/dist/hooks/useNaturalLanguageFilters.js +221 -0
  118. package/dist/hooks/useQuerySuggestions.d.ts +21 -0
  119. package/dist/hooks/useQuerySuggestions.d.ts.map +1 -0
  120. package/dist/hooks/useQuerySuggestions.js +68 -0
  121. package/dist/hooks/useQuerySuggestionsEnhanced.d.ts +114 -0
  122. package/dist/hooks/useQuerySuggestionsEnhanced.d.ts.map +1 -0
  123. package/dist/hooks/useQuerySuggestionsEnhanced.js +376 -0
  124. package/dist/hooks/useSearchState.d.ts +35 -0
  125. package/dist/hooks/useSearchState.d.ts.map +1 -0
  126. package/dist/hooks/useSearchState.js +68 -0
  127. package/dist/hooks/useSeekoraSearch.d.ts +20 -0
  128. package/dist/hooks/useSeekoraSearch.d.ts.map +1 -0
  129. package/dist/hooks/useSeekoraSearch.js +63 -0
  130. package/dist/hooks/useSmartSuggestions.d.ts +55 -0
  131. package/dist/hooks/useSmartSuggestions.d.ts.map +1 -0
  132. package/dist/hooks/useSmartSuggestions.js +236 -0
  133. package/dist/hooks/useSuggestionsAnalytics.d.ts +91 -0
  134. package/dist/hooks/useSuggestionsAnalytics.d.ts.map +1 -0
  135. package/dist/hooks/useSuggestionsAnalytics.js +226 -0
  136. package/dist/index.d.ts +80 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +86 -0
  139. package/dist/index.umd.js +1 -0
  140. package/dist/src/index.d.ts +2849 -0
  141. package/dist/src/index.esm.js +11679 -0
  142. package/dist/src/index.esm.js.map +1 -0
  143. package/dist/src/index.js +11761 -0
  144. package/dist/src/index.js.map +1 -0
  145. package/dist/themes/createTheme.d.ts +8 -0
  146. package/dist/themes/createTheme.d.ts.map +1 -0
  147. package/dist/themes/createTheme.js +10 -0
  148. package/dist/themes/dark.d.ts +6 -0
  149. package/dist/themes/dark.d.ts.map +1 -0
  150. package/dist/themes/dark.js +34 -0
  151. package/dist/themes/default.d.ts +6 -0
  152. package/dist/themes/default.d.ts.map +1 -0
  153. package/dist/themes/default.js +71 -0
  154. package/dist/themes/mergeThemes.d.ts +7 -0
  155. package/dist/themes/mergeThemes.d.ts.map +1 -0
  156. package/dist/themes/mergeThemes.js +6 -0
  157. package/dist/themes/minimal.d.ts +6 -0
  158. package/dist/themes/minimal.d.ts.map +1 -0
  159. package/dist/themes/minimal.js +34 -0
  160. package/dist/themes/suggestions.d.ts +216 -0
  161. package/dist/themes/suggestions.d.ts.map +1 -0
  162. package/dist/themes/suggestions.js +546 -0
  163. package/dist/themes/types.d.ts +7 -0
  164. package/dist/themes/types.d.ts.map +1 -0
  165. package/dist/themes/types.js +6 -0
  166. package/dist/types/index.d.ts +33 -0
  167. package/dist/types/index.d.ts.map +1 -0
  168. package/dist/types/index.js +4 -0
  169. package/package.json +65 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Responsive Utilities and Breakpoints
3
+ *
4
+ * Shared responsive design utilities for all dropdown components
5
+ */
6
+ import { useState, useEffect } from 'react';
7
+ // ============================================================================
8
+ // Breakpoints
9
+ // ============================================================================
10
+ export const breakpoints = {
11
+ xs: 0,
12
+ sm: 480,
13
+ md: 768,
14
+ lg: 1024,
15
+ xl: 1280,
16
+ };
17
+ // ============================================================================
18
+ // Media Query Helpers
19
+ // ============================================================================
20
+ export const mediaQueries = {
21
+ xs: `@media (max-width: ${breakpoints.sm - 1}px)`,
22
+ sm: `@media (min-width: ${breakpoints.sm}px) and (max-width: ${breakpoints.md - 1}px)`,
23
+ md: `@media (min-width: ${breakpoints.md}px) and (max-width: ${breakpoints.lg - 1}px)`,
24
+ lg: `@media (min-width: ${breakpoints.lg}px) and (max-width: ${breakpoints.xl - 1}px)`,
25
+ xl: `@media (min-width: ${breakpoints.xl}px)`,
26
+ mobile: `@media (max-width: ${breakpoints.md - 1}px)`,
27
+ tablet: `@media (min-width: ${breakpoints.md}px) and (max-width: ${breakpoints.lg - 1}px)`,
28
+ desktop: `@media (min-width: ${breakpoints.lg}px)`,
29
+ touch: '@media (hover: none) and (pointer: coarse)',
30
+ mouse: '@media (hover: hover) and (pointer: fine)',
31
+ };
32
+ // ============================================================================
33
+ // Touch-Friendly Sizing
34
+ // ============================================================================
35
+ export const touchTargets = {
36
+ /** Minimum touch target size per WCAG guidelines */
37
+ minimum: 44,
38
+ /** Comfortable touch target size */
39
+ comfortable: 48,
40
+ /** Large touch target for primary actions */
41
+ large: 56,
42
+ };
43
+ // ============================================================================
44
+ // Responsive Spacing
45
+ // ============================================================================
46
+ export const responsiveSpacing = {
47
+ mobile: {
48
+ xs: '4px',
49
+ sm: '8px',
50
+ md: '12px',
51
+ lg: '16px',
52
+ xl: '20px',
53
+ },
54
+ desktop: {
55
+ xs: '4px',
56
+ sm: '8px',
57
+ md: '16px',
58
+ lg: '24px',
59
+ xl: '32px',
60
+ },
61
+ };
62
+ // ============================================================================
63
+ // Responsive Typography
64
+ // ============================================================================
65
+ export const responsiveTypography = {
66
+ mobile: {
67
+ xs: '11px',
68
+ sm: '13px',
69
+ md: '15px',
70
+ lg: '17px',
71
+ xl: '20px',
72
+ xxl: '24px',
73
+ },
74
+ desktop: {
75
+ xs: '11px',
76
+ sm: '12px',
77
+ md: '14px',
78
+ lg: '16px',
79
+ xl: '18px',
80
+ xxl: '24px',
81
+ },
82
+ };
83
+ // ============================================================================
84
+ // CSS Generation Helpers
85
+ // ============================================================================
86
+ /**
87
+ * Generate responsive CSS class string
88
+ */
89
+ export const generateResponsiveCSS = (componentName) => `
90
+ /* Base responsive styles for ${componentName} */
91
+ .${componentName} {
92
+ --seekora-touch-target: ${touchTargets.minimum}px;
93
+ --seekora-spacing-mobile: ${responsiveSpacing.mobile.md};
94
+ --seekora-spacing-desktop: ${responsiveSpacing.desktop.md};
95
+ }
96
+
97
+ /* Mobile-first base */
98
+ ${mediaQueries.mobile} {
99
+ .${componentName} {
100
+ width: 100% !important;
101
+ max-width: 100vw !important;
102
+ left: 0 !important;
103
+ right: 0 !important;
104
+ border-radius: 0 !important;
105
+ margin-top: 0 !important;
106
+ }
107
+
108
+ .${componentName} [data-item],
109
+ .${componentName} [role="option"] {
110
+ min-height: var(--seekora-touch-target);
111
+ padding: 12px 16px;
112
+ }
113
+
114
+ .${componentName} button {
115
+ min-height: var(--seekora-touch-target);
116
+ min-width: var(--seekora-touch-target);
117
+ }
118
+ }
119
+
120
+ /* Touch device optimizations */
121
+ ${mediaQueries.touch} {
122
+ .${componentName} [data-item]:active,
123
+ .${componentName} [role="option"]:active {
124
+ background-color: var(--seekora-bg-hover, #f0f0f0) !important;
125
+ }
126
+
127
+ /* Disable hover states on touch */
128
+ .${componentName} [data-item]:hover,
129
+ .${componentName} [role="option"]:hover {
130
+ background-color: transparent;
131
+ }
132
+ }
133
+
134
+ /* Tablet adjustments */
135
+ ${mediaQueries.tablet} {
136
+ .${componentName} {
137
+ max-width: 90vw;
138
+ margin: 8px auto;
139
+ }
140
+ }
141
+
142
+ /* Desktop optimizations */
143
+ ${mediaQueries.desktop} {
144
+ .${componentName} [data-item],
145
+ .${componentName} [role="option"] {
146
+ min-height: 40px;
147
+ }
148
+ }
149
+ `;
150
+ /**
151
+ * Inject responsive styles into document
152
+ */
153
+ export const injectResponsiveStyles = (componentName) => {
154
+ const styleId = `seekora-responsive-${componentName}`;
155
+ // Don't inject if already exists
156
+ if (typeof document !== 'undefined' && document.getElementById(styleId)) {
157
+ return;
158
+ }
159
+ if (typeof document !== 'undefined') {
160
+ const style = document.createElement('style');
161
+ style.id = styleId;
162
+ style.textContent = generateResponsiveCSS(componentName);
163
+ document.head.appendChild(style);
164
+ }
165
+ };
166
+ export const useResponsive = () => {
167
+ const [state, setState] = useState({
168
+ isMobile: false,
169
+ isTablet: false,
170
+ isDesktop: true,
171
+ isTouch: false,
172
+ width: typeof window !== 'undefined' ? window.innerWidth : 1024,
173
+ height: typeof window !== 'undefined' ? window.innerHeight : 768,
174
+ breakpoint: 'lg',
175
+ });
176
+ useEffect(() => {
177
+ if (typeof window === 'undefined')
178
+ return;
179
+ const getBreakpoint = (width) => {
180
+ if (width < breakpoints.sm)
181
+ return 'xs';
182
+ if (width < breakpoints.md)
183
+ return 'sm';
184
+ if (width < breakpoints.lg)
185
+ return 'md';
186
+ if (width < breakpoints.xl)
187
+ return 'lg';
188
+ return 'xl';
189
+ };
190
+ const updateState = () => {
191
+ const width = window.innerWidth;
192
+ const height = window.innerHeight;
193
+ const breakpoint = getBreakpoint(width);
194
+ const isTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
195
+ setState({
196
+ isMobile: width < breakpoints.md,
197
+ isTablet: width >= breakpoints.md && width < breakpoints.lg,
198
+ isDesktop: width >= breakpoints.lg,
199
+ isTouch,
200
+ width,
201
+ height,
202
+ breakpoint,
203
+ });
204
+ };
205
+ updateState();
206
+ window.addEventListener('resize', updateState);
207
+ return () => window.removeEventListener('resize', updateState);
208
+ }, []);
209
+ return state;
210
+ };
211
+ /**
212
+ * Get styles for current breakpoint
213
+ */
214
+ export const getResponsiveStyle = (styles, responsive) => {
215
+ const { isMobile, isTablet } = responsive;
216
+ return {
217
+ ...styles.base,
218
+ ...(isMobile && styles.mobile),
219
+ ...(isTablet && styles.tablet),
220
+ ...(!isMobile && !isTablet && styles.desktop),
221
+ };
222
+ };
223
+ // ============================================================================
224
+ // Safe Area Handling
225
+ // ============================================================================
226
+ export const safeAreaInsets = {
227
+ top: 'env(safe-area-inset-top, 0px)',
228
+ bottom: 'env(safe-area-inset-bottom, 0px)',
229
+ left: 'env(safe-area-inset-left, 0px)',
230
+ right: 'env(safe-area-inset-right, 0px)',
231
+ };
232
+ /**
233
+ * Get padding with safe area insets
234
+ */
235
+ export const getSafeAreaPadding = (position, additionalPadding = '0px') => {
236
+ return `calc(${safeAreaInsets[position]} + ${additionalPadding})`;
237
+ };