@brainfish-ai/components 0.19.3 → 0.19.5

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 (32) hide show
  1. package/dist/convos.d.ts +4 -0
  2. package/dist/esm/chunks/{ChatSearch.C6nUXNy4.js → ChatSearch.DOH90EUx.js} +3 -306
  3. package/dist/esm/chunks/ChatSearch.DOH90EUx.js.map +1 -0
  4. package/dist/esm/chunks/blue.CNWYlAkf.js +17 -0
  5. package/dist/esm/chunks/blue.CNWYlAkf.js.map +1 -0
  6. package/dist/esm/chunks/{generating-star.CozjECmM.js → generating-star.BMQgTqs7.js} +13 -5
  7. package/dist/esm/chunks/{generating-star.CozjECmM.js.map → generating-star.BMQgTqs7.js.map} +1 -1
  8. package/dist/esm/chunks/hooks.B9tkXVNJ.js +309 -0
  9. package/dist/esm/chunks/hooks.B9tkXVNJ.js.map +1 -0
  10. package/dist/esm/colors.js +1 -15
  11. package/dist/esm/colors.js.map +1 -1
  12. package/dist/esm/components/chat-search.js +1 -1
  13. package/dist/esm/components/convos.js +14 -7
  14. package/dist/esm/components/convos.js.map +1 -1
  15. package/dist/esm/components/generating-star.js +1 -1
  16. package/dist/esm/components/metric-card.js +3 -1
  17. package/dist/esm/components/metric-card.js.map +1 -1
  18. package/dist/esm/components/sidebar.js +380 -0
  19. package/dist/esm/components/sidebar.js.map +1 -0
  20. package/dist/esm/components/ui/accordion.js +1 -1
  21. package/dist/esm/components/ui/accordion.js.map +1 -1
  22. package/dist/esm/convos.css +1 -1
  23. package/dist/esm/global.css +1 -1
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/tailwind.preset.js +3 -1
  26. package/dist/esm/tailwind.preset.js.map +1 -1
  27. package/dist/generating-star.d.ts +1 -1
  28. package/dist/sidebar.d.ts +56 -0
  29. package/dist/stats.html +1 -1
  30. package/package.json +2 -1
  31. package/tailwind.preset.ts +2 -0
  32. package/dist/esm/chunks/ChatSearch.C6nUXNy4.js.map +0 -1
@@ -0,0 +1,309 @@
1
+ import { useState, useCallback, useEffect } from 'react';
2
+ import { createId } from '@paralleldrive/cuid2';
3
+
4
+ const defaultRetryOptions = {
5
+ maxRetries: 3,
6
+ baseDelay: 1e3,
7
+ shouldRetry: (error) => {
8
+ if (error instanceof TypeError) {
9
+ return true;
10
+ }
11
+ const apiError = error;
12
+ return apiError.status ? apiError.status >= 500 : false;
13
+ }
14
+ };
15
+ const defaultFallbackConfig = {
16
+ emptyResponse: "I apologize, but I couldn't generate an answer at this time. Please try again.",
17
+ errorResponse: "I encountered an error while processing your request. Please try again."
18
+ };
19
+ let globalRetryOptions = { ...defaultRetryOptions };
20
+ let globalFallbackConfig = { ...defaultFallbackConfig };
21
+ async function delay(ms) {
22
+ return new Promise((resolve) => setTimeout(resolve, ms));
23
+ }
24
+ async function makeRequest(url, config = {}) {
25
+ const { retry = {}, headers = {}, body, isStream = false, fallback = {}, ...fetchConfig } = config;
26
+ const retryOptions = {
27
+ ...globalRetryOptions,
28
+ ...retry
29
+ };
30
+ const fallbackOptions = {
31
+ ...globalFallbackConfig,
32
+ ...fallback
33
+ };
34
+ let attempt = 1;
35
+ while (true) {
36
+ try {
37
+ const response = await fetch(url, {
38
+ ...fetchConfig,
39
+ headers: {
40
+ "Content-Type": "application/json",
41
+ ...headers
42
+ },
43
+ body: body ? JSON.stringify(body) : void 0
44
+ });
45
+ if (response.ok) {
46
+ if (isStream) {
47
+ if (!response.ok) {
48
+ throw new Error("Failed to fetch answer");
49
+ }
50
+ return response;
51
+ }
52
+ const data = await response.json();
53
+ if (!data || typeof data === "object" && Object.keys(data).length === 0) {
54
+ const emptyError = new Error(fallbackOptions.emptyResponse);
55
+ emptyError.name = "EmptyResponseError";
56
+ throw emptyError;
57
+ }
58
+ return data;
59
+ }
60
+ const error = new Error(fallbackOptions.errorResponse);
61
+ error.status = response.status;
62
+ error.data = await response.json().catch(() => void 0);
63
+ throw error;
64
+ } catch (error) {
65
+ const shouldAttemptRetry = await Promise.resolve(retryOptions.shouldRetry(error, attempt));
66
+ if (attempt >= retryOptions.maxRetries || !shouldAttemptRetry) {
67
+ if (error instanceof Error && error.name === "EmptyResponseError") {
68
+ return { message: error.message };
69
+ }
70
+ throw error;
71
+ }
72
+ console.warn(`Request failed, attempt ${attempt} of ${retryOptions.maxRetries}. Retrying...`);
73
+ const jitter = Math.random() * 0.3 + 0.85;
74
+ await delay(retryOptions.baseDelay * Math.pow(2, attempt - 1) * jitter);
75
+ attempt++;
76
+ }
77
+ }
78
+ }
79
+
80
+ const searchRetryConfig = {
81
+ maxRetries: 3,
82
+ baseDelay: 300,
83
+ // Start with 300ms delay
84
+ shouldRetry: (error) => {
85
+ if (error instanceof TypeError) {
86
+ return true;
87
+ }
88
+ const apiError = error;
89
+ return apiError.status ? apiError.status >= 500 || apiError.status === 429 : false;
90
+ }
91
+ };
92
+ const answerRetryConfig = {
93
+ maxRetries: 3,
94
+ baseDelay: 500,
95
+ // Start with 500ms delay for streaming responses
96
+ shouldRetry: (error) => {
97
+ if (error instanceof TypeError) {
98
+ return true;
99
+ }
100
+ const apiError = error;
101
+ return apiError.status ? apiError.status >= 500 : false;
102
+ }
103
+ };
104
+ async function searchApi({
105
+ endpoint,
106
+ query,
107
+ collectionId,
108
+ headers,
109
+ conversationId,
110
+ attributes,
111
+ secretAttributes,
112
+ allowedRegions,
113
+ source
114
+ }) {
115
+ const payload = await makeRequest(endpoint, {
116
+ method: "POST",
117
+ headers,
118
+ retry: searchRetryConfig,
119
+ body: {
120
+ query,
121
+ limit: 5,
122
+ ...collectionId && collectionId !== "all" && { collectionId },
123
+ ...conversationId && { conversationId },
124
+ ...attributes && { attributes },
125
+ ...secretAttributes && { secretAttributes },
126
+ ...allowedRegions && { allowedRegions },
127
+ ...source && { source }
128
+ }
129
+ });
130
+ return {
131
+ results: payload?.data,
132
+ searchQueryId: payload?.searchQuery?.id,
133
+ isAgenticResponse: payload?.isAgenticResponse
134
+ };
135
+ }
136
+ async function fetchAnswerStream({
137
+ endpoint,
138
+ headers,
139
+ body
140
+ }) {
141
+ return makeRequest(endpoint, {
142
+ method: "POST",
143
+ headers,
144
+ retry: answerRetryConfig,
145
+ isStream: true,
146
+ fallback: {
147
+ emptyResponse: "I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.",
148
+ errorResponse: "I encountered an issue while generating the answer. Please try again in a moment."
149
+ },
150
+ body
151
+ });
152
+ }
153
+ function createConversationId() {
154
+ return createId();
155
+ }
156
+ async function sendFeedback({
157
+ endpoint,
158
+ searchQueryId,
159
+ response,
160
+ headers,
161
+ conversationId
162
+ }) {
163
+ await makeRequest(endpoint, {
164
+ method: "POST",
165
+ headers,
166
+ body: {
167
+ searchQueryId,
168
+ response,
169
+ ...conversationId && { conversationId }
170
+ }
171
+ });
172
+ }
173
+ async function sendFeedbackReason({
174
+ endpoint,
175
+ searchQueryId,
176
+ reason,
177
+ headers
178
+ }) {
179
+ await makeRequest(endpoint, {
180
+ method: "POST",
181
+ headers,
182
+ body: {
183
+ searchQueryId,
184
+ reason
185
+ }
186
+ });
187
+ }
188
+ async function loadConversation({
189
+ endpoint,
190
+ conversationId,
191
+ headers,
192
+ signal
193
+ }) {
194
+ const payload = await makeRequest(endpoint, {
195
+ method: "POST",
196
+ headers,
197
+ body: { conversationId },
198
+ signal
199
+ });
200
+ return { data: payload.data };
201
+ }
202
+ async function fetchFollowUpQuestions({
203
+ endpoint,
204
+ searchQueryId,
205
+ headers,
206
+ conversationId
207
+ }) {
208
+ const data = await makeRequest(endpoint, {
209
+ method: "POST",
210
+ headers,
211
+ body: {
212
+ searchQueryId,
213
+ ...conversationId
214
+ }
215
+ });
216
+ return data.questions;
217
+ }
218
+ async function fetchAutocomplete({
219
+ endpoint,
220
+ query,
221
+ collectionId,
222
+ headers,
223
+ conversationId,
224
+ allowedRegions
225
+ }) {
226
+ const data = await makeRequest(endpoint, {
227
+ method: "POST",
228
+ headers,
229
+ retry: searchRetryConfig,
230
+ body: {
231
+ query,
232
+ ...collectionId && collectionId !== "all" && { collectionId },
233
+ ...conversationId && { conversationId },
234
+ ...allowedRegions && { allowedRegions }
235
+ }
236
+ });
237
+ return data;
238
+ }
239
+
240
+ function useDebounce(value, delay) {
241
+ const [debouncedValue, setDebouncedValue] = useState(value);
242
+ useEffect(() => {
243
+ const handler = setTimeout(() => {
244
+ setDebouncedValue(value);
245
+ }, delay);
246
+ return () => {
247
+ clearTimeout(handler);
248
+ };
249
+ }, [value, delay]);
250
+ return debouncedValue;
251
+ }
252
+ function useAutocomplete({
253
+ query,
254
+ endpoint,
255
+ allowedRegions,
256
+ collectionId,
257
+ headers,
258
+ conversationId,
259
+ delay = 300
260
+ }) {
261
+ const [suggestions, setSuggestions] = useState([]);
262
+ const [isLoading, setIsLoading] = useState(false);
263
+ const [error, setError] = useState();
264
+ const debouncedQuery = useDebounce(query, delay);
265
+ const fetchSuggestions = useCallback(async () => {
266
+ if (!debouncedQuery.trim()) {
267
+ setSuggestions([]);
268
+ return;
269
+ }
270
+ setIsLoading(true);
271
+ setError(void 0);
272
+ try {
273
+ const payload = await fetchAutocomplete({
274
+ endpoint,
275
+ query: debouncedQuery,
276
+ collectionId,
277
+ headers,
278
+ conversationId,
279
+ allowedRegions
280
+ });
281
+ if (payload?.response?.results) {
282
+ const lowerCaseQuery = debouncedQuery.toLowerCase();
283
+ const sortedSuggestions = payload.response.results.sort((a, b) => {
284
+ const aStartsWithQuery = a.question.toLowerCase().startsWith(lowerCaseQuery);
285
+ const bStartsWithQuery = b.question.toLowerCase().startsWith(lowerCaseQuery);
286
+ if (aStartsWithQuery && !bStartsWithQuery) return -1;
287
+ if (!aStartsWithQuery && bStartsWithQuery) return 1;
288
+ return 0;
289
+ });
290
+ setSuggestions(sortedSuggestions);
291
+ } else {
292
+ setSuggestions([]);
293
+ }
294
+ } catch (err) {
295
+ console.error("Error fetching autocomplete suggestions:", err);
296
+ setError(err instanceof Error ? err.message : "Failed to fetch suggestions");
297
+ setSuggestions([]);
298
+ } finally {
299
+ setIsLoading(false);
300
+ }
301
+ }, [debouncedQuery, endpoint, collectionId, headers, conversationId, allowedRegions]);
302
+ useEffect(() => {
303
+ void fetchSuggestions();
304
+ }, [fetchSuggestions]);
305
+ return { suggestions, isLoading, error };
306
+ }
307
+
308
+ export { useAutocomplete as a, sendFeedback as b, createConversationId as c, searchApi as d, fetchFollowUpQuestions as e, fetchAnswerStream as f, loadConversation as l, sendFeedbackReason as s, useDebounce as u };
309
+ //# sourceMappingURL=hooks.B9tkXVNJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.B9tkXVNJ.js","sources":["../../../src/lib/fetchClient.ts","../../../src/lib/api.ts","../../../src/lib/hooks.ts"],"sourcesContent":["interface RetryOptions {\n maxRetries?: number;\n baseDelay?: number;\n shouldRetry?: (error: Error, attempt: number) => boolean | Promise<boolean>;\n}\n\ninterface FallbackConfig {\n emptyResponse?: string;\n errorResponse?: string;\n}\n\ninterface RequestConfig<T> extends Omit<RequestInit, 'body'> {\n retry?: RetryOptions;\n body?: T;\n isStream?: boolean;\n fallback?: FallbackConfig;\n}\n\ninterface APIError extends Error {\n status?: number;\n data?: unknown;\n}\n\nconst defaultRetryOptions: Required<RetryOptions> = {\n maxRetries: 3,\n baseDelay: 1000,\n shouldRetry: (error: Error) => {\n // By default, retry on network errors and 5xx server errors\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n\n const apiError = error as APIError;\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\nconst defaultFallbackConfig: Required<FallbackConfig> = {\n emptyResponse: \"I apologize, but I couldn't generate an answer at this time. Please try again.\",\n errorResponse: 'I encountered an error while processing your request. Please try again.',\n};\n\nlet globalRetryOptions: Required<RetryOptions> = { ...defaultRetryOptions };\nlet globalFallbackConfig: Required<FallbackConfig> = { ...defaultFallbackConfig };\n\nexport function configureRetry(options: RetryOptions): void {\n globalRetryOptions = {\n ...defaultRetryOptions,\n ...options,\n };\n}\n\nexport function configureFallback(config: FallbackConfig): void {\n globalFallbackConfig = {\n ...defaultFallbackConfig,\n ...config,\n };\n}\n\nasync function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function makeRequest<TResponse, TBody = unknown>(url: string | URL, config: RequestConfig<TBody> = {}): Promise<TResponse> {\n const { retry = {}, headers = {}, body, isStream = false, fallback = {}, ...fetchConfig } = config;\n const retryOptions = {\n ...globalRetryOptions,\n ...retry,\n };\n const fallbackOptions = {\n ...globalFallbackConfig,\n ...fallback,\n };\n\n let attempt = 1;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n try {\n const response = await fetch(url, {\n ...fetchConfig,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (response.ok) {\n // For streaming responses, return the response object directly\n if (isStream) {\n if (!response.ok) {\n throw new Error('Failed to fetch answer');\n }\n\n return response as unknown as TResponse;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = await response.json();\n // Check for empty response in JSON\n if (!data || (typeof data === 'object' && Object.keys(data).length === 0)) {\n const emptyError = new Error(fallbackOptions.emptyResponse);\n emptyError.name = 'EmptyResponseError';\n throw emptyError;\n }\n\n return data as TResponse;\n }\n\n const error = new Error(fallbackOptions.errorResponse) as APIError;\n error.status = response.status;\n error.data = await response.json().catch(() => undefined);\n throw error;\n } catch (error) {\n const shouldAttemptRetry = await Promise.resolve(retryOptions.shouldRetry(error as Error, attempt));\n\n if (attempt >= retryOptions.maxRetries || !shouldAttemptRetry) {\n if (error instanceof Error && error.name === 'EmptyResponseError') {\n return { message: error.message } as TResponse;\n }\n throw error;\n }\n\n console.warn(`Request failed, attempt ${attempt} of ${retryOptions.maxRetries}. Retrying...`);\n\n // Exponential backoff with jitter to prevent thundering herd\n const jitter = Math.random() * 0.3 + 0.85; // Random between 0.85-1.15\n await delay(retryOptions.baseDelay * Math.pow(2, attempt - 1) * jitter);\n attempt++;\n }\n }\n}\n","import { createId } from '@paralleldrive/cuid2';\n\nimport { makeRequest } from './fetchClient';\n\nimport {\n SearchResponse,\n FeedbackResponse,\n APIFeedbackResponse,\n SearchResult,\n ActionInputs,\n ClientExecutionResult,\n SearchQueryAttributes,\n} from '@/components/chat-search/types';\n\n// Retry configurations for different endpoints\nconst searchRetryConfig = {\n maxRetries: 3,\n baseDelay: 300, // Start with 300ms delay\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Retry on server errors (5xx) and rate limits (429)\n\n return apiError.status ? apiError.status >= 500 || apiError.status === 429 : false;\n },\n};\n\nconst answerRetryConfig = {\n maxRetries: 3,\n baseDelay: 500, // Start with 500ms delay for streaming responses\n shouldRetry: (error: Error) => {\n if (error instanceof TypeError) {\n return true; // Network errors\n }\n const apiError = error as { status?: number };\n // Only retry on server errors, not on client errors\n\n return apiError.status ? apiError.status >= 500 : false;\n },\n};\n\ninterface APISearchResponse {\n data: Array<{\n id: string;\n title: string;\n url: string;\n }>;\n searchQuery: {\n id: string;\n };\n isAgenticResponse?: boolean;\n}\n\nexport async function searchApi({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n attributes,\n secretAttributes,\n allowedRegions,\n source,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n attributes?: SearchQueryAttributes;\n secretAttributes?: string;\n allowedRegions?: string[];\n source?: string;\n}): Promise<SearchResponse> {\n const payload = await makeRequest<\n APISearchResponse,\n {\n query: string;\n limit: number;\n collectionId?: string;\n conversationId?: string;\n source?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n limit: 5,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(attributes && { attributes }),\n ...(secretAttributes && { secretAttributes }),\n ...(allowedRegions && { allowedRegions }),\n ...(source && { source }),\n },\n });\n\n return {\n results: payload?.data,\n searchQueryId: payload?.searchQuery?.id,\n isAgenticResponse: payload?.isAgenticResponse,\n };\n}\n\nexport async function fetchAnswer({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<Response> {\n return makeRequest<\n Response,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function fetchAnswerStream({\n endpoint,\n headers,\n body,\n}: {\n endpoint: string;\n headers?: Record<string, string>;\n body:\n | {\n type: 'generate-for-query';\n conversationId?: string;\n searchQueryId: string;\n profileId?: string;\n context?: { type: 'text'; text: string }[];\n }\n | {\n type: 'invoke-action';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n parameters: ActionInputs;\n profileId?: string;\n }\n | {\n type: 'client-execution-result';\n conversationId?: string;\n searchQueryId: string;\n searchIntentId: string;\n actionId: string;\n results: ClientExecutionResult;\n profileId?: string;\n };\n}): Promise<Response> {\n return makeRequest<Response, typeof body>(endpoint, {\n method: 'POST',\n headers,\n retry: answerRetryConfig,\n isStream: true,\n fallback: {\n emptyResponse: \"I apologize, but I couldn't generate an answer for your query. Please try rephrasing your question.\",\n errorResponse: 'I encountered an issue while generating the answer. Please try again in a moment.',\n },\n body,\n });\n}\n\n// Helper function to generate conversation ID\nexport function createConversationId(): string {\n return createId();\n}\n\nexport async function sendFeedback({\n endpoint,\n searchQueryId,\n response,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n response: FeedbackResponse;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n response: FeedbackResponse;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n response,\n ...(conversationId && { conversationId }),\n },\n });\n}\n\nexport async function sendFeedbackReason({\n endpoint,\n searchQueryId,\n reason,\n headers,\n}: {\n endpoint: string;\n searchQueryId: string;\n reason: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<void> {\n await makeRequest<\n void,\n {\n searchQueryId: string;\n reason: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n reason,\n },\n });\n}\n\nexport interface ConversationResponse {\n data: Array<{\n question: string;\n answer: string;\n searchQueryId: string;\n searchResults?: SearchResult[];\n searchIntentId?: string;\n feedback?: APIFeedbackResponse;\n }>;\n}\n\nexport async function loadConversation({\n endpoint,\n conversationId,\n headers,\n signal,\n}: {\n endpoint: string;\n conversationId: string;\n headers?: Record<string, string>;\n signal?: AbortSignal;\n}): Promise<{ data: ConversationResponse['data'] }> {\n const payload = await makeRequest<\n ConversationResponse,\n {\n conversationId: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: { conversationId },\n signal,\n });\n\n return { data: payload.data };\n}\n\ninterface FollowUpQuestionsResponse {\n questions: string[];\n}\n\nexport async function fetchFollowUpQuestions({\n endpoint,\n searchQueryId,\n headers,\n conversationId,\n}: {\n endpoint: string;\n searchQueryId: string;\n headers?: Record<string, string>;\n conversationId?: string;\n}): Promise<string[]> {\n const data = await makeRequest<\n FollowUpQuestionsResponse,\n {\n searchQueryId: string;\n conversationId?: string;\n }\n >(endpoint, {\n method: 'POST',\n headers,\n body: {\n searchQueryId,\n ...(conversationId && { conversationId }),\n },\n });\n\n return data.questions;\n}\n\ninterface AutocompleteResponse {\n response: {\n results: Array<{\n id: string;\n question: string;\n }>;\n };\n}\n\nexport async function fetchAutocomplete({\n endpoint,\n query,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n}: {\n endpoint: string;\n query: string;\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n allowedRegions?: string[];\n}): Promise<AutocompleteResponse> {\n const data = await makeRequest<\n AutocompleteResponse,\n {\n query: string;\n collectionId?: string;\n conversationId?: string;\n allowedRegions?: string[];\n }\n >(endpoint, {\n method: 'POST',\n headers,\n retry: searchRetryConfig,\n body: {\n query,\n ...(collectionId && collectionId !== 'all' && { collectionId }),\n ...(conversationId && { conversationId }),\n ...(allowedRegions && { allowedRegions }),\n },\n });\n\n return data;\n}\n","import { useState, useEffect, useCallback } from 'react';\n\nimport { fetchAutocomplete } from './api';\n\nimport type { Suggestion } from '@/components/chat-search/types';\n\nexport function useDebounce<T>(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport function useAutocomplete({\n query,\n endpoint,\n allowedRegions,\n collectionId,\n headers,\n conversationId,\n delay = 300,\n}: {\n query: string;\n endpoint: string;\n allowedRegions?: string[];\n collectionId?: string;\n headers?: Record<string, string>;\n conversationId?: string;\n delay?: number;\n}) {\n const [suggestions, setSuggestions] = useState<Suggestion[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string>();\n\n const debouncedQuery = useDebounce(query, delay);\n\n const fetchSuggestions = useCallback(async () => {\n if (!debouncedQuery.trim()) {\n setSuggestions([]);\n\n return;\n }\n\n setIsLoading(true);\n setError(undefined);\n\n try {\n const payload = await fetchAutocomplete({\n endpoint,\n query: debouncedQuery,\n collectionId,\n headers,\n conversationId,\n allowedRegions,\n });\n if (payload?.response?.results) {\n // move suggestions that don't prefix with the debounced question to the bottom\n const lowerCaseQuery = debouncedQuery.toLowerCase();\n const sortedSuggestions = payload.response.results.sort((a: { question: string }, b: { question: string }) => {\n const aStartsWithQuery = a.question.toLowerCase().startsWith(lowerCaseQuery);\n const bStartsWithQuery = b.question.toLowerCase().startsWith(lowerCaseQuery);\n\n if (aStartsWithQuery && !bStartsWithQuery) return -1;\n if (!aStartsWithQuery && bStartsWithQuery) return 1;\n\n return 0; // preserve original order for items in same category\n });\n\n setSuggestions(sortedSuggestions);\n } else {\n setSuggestions([]);\n }\n } catch (err) {\n console.error('Error fetching autocomplete suggestions:', err);\n setError(err instanceof Error ? err.message : 'Failed to fetch suggestions');\n setSuggestions([]);\n } finally {\n setIsLoading(false);\n }\n }, [debouncedQuery, endpoint, collectionId, headers, conversationId, allowedRegions]);\n\n useEffect(() => {\n void fetchSuggestions();\n }, [fetchSuggestions]);\n\n return { suggestions, isLoading, error };\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { p as primary } from './chunks/primary.CtiRZbqq.js';
2
2
  import { d as dark } from './chunks/dark.Cl9Z44CU.js';
3
+ import { b as blue } from './chunks/blue.CNWYlAkf.js';
3
4
 
4
5
  const orange = {
5
6
  100: "var(--bfc-v2-color-orange-100, #fff3eb)",
@@ -61,21 +62,6 @@ const green = {
61
62
  // 700
62
63
  };
63
64
 
64
- const blue = {
65
- 100: "var(--bfc-v2-color-blue-100, #e9f2fe)",
66
- 200: "var(--bfc-v2-color-blue-200, #cfe1fd)",
67
- 300: "var(--bfc-v2-color-blue-300, #8fb8f6)",
68
- 400: "var(--bfc-v2-color-blue-400, #669df1)",
69
- 500: "var(--bfc-v2-color-blue-500, #4688ec)",
70
- 600: "var(--bfc-v2-color-blue-600, #357de8)",
71
- 700: "var(--bfc-v2-color-blue-700, #1868db)",
72
- 800: "var(--bfc-v2-color-blue-800, #1558bc)",
73
- 900: "var(--bfc-v2-color-blue-900, #123263)",
74
- 1e3: "var(--bfc-v2-color-blue-1000, #1c2b42)",
75
- DEFAULT: "var(--bfc-v2-color-blue-700, #1868db)"
76
- // 700
77
- };
78
-
79
65
  const teal = {
80
66
  100: "var(--bfc-v2-color-teal-100, #e7f9ff)",
81
67
  200: "var(--bfc-v2-color-teal-200, #c6edfb)",
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sources":["../../src/colors/orange.ts","../../src/colors/yellow.ts","../../src/colors/lime.ts","../../src/colors/green.ts","../../src/colors/blue.ts","../../src/colors/teal.ts","../../src/colors/purple.ts","../../src/colors/magenta.ts","../../src/colors/pink.ts","../../src/colors/red.ts","../../src/colors/index.ts"],"sourcesContent":["export const orange = {\n 100: 'var(--bfc-v2-color-orange-100, #fff3eb)',\n 200: 'var(--bfc-v2-color-orange-200, #fedec8)',\n 300: 'var(--bfc-v2-color-orange-300, #fec195)',\n 400: 'var(--bfc-v2-color-orange-400, #fea362)',\n 500: 'var(--bfc-v2-color-orange-500, #f38a3f)',\n 600: 'var(--bfc-v2-color-orange-600, #e56910)',\n 700: 'var(--bfc-v2-color-orange-700, #c25100)',\n 800: 'var(--bfc-v2-color-orange-800, #a54800)',\n 900: 'var(--bfc-v2-color-orange-900, #702e00)',\n 1000: 'var(--bfc-v2-color-orange-1000, #38291e)',\n DEFAULT: 'var(--bfc-v2-color-orange-700, #c25100)', // 700\n};\n","export const yellow = {\n 100: 'var(--bfc-v2-color-yellow-100, #fef7c8)',\n 200: 'var(--bfc-v2-color-yellow-200, #ffdf84)',\n 300: 'var(--bfc-v2-color-yellow-300, #fed153)',\n 400: 'var(--bfc-v2-color-yellow-400, #fbbf25)',\n 500: 'var(--bfc-v2-color-yellow-500, #e5ad1d)',\n 600: 'var(--bfc-v2-color-yellow-600, #c59109)',\n 700: 'var(--bfc-v2-color-yellow-700, #977007)',\n 800: 'var(--bfc-v2-color-yellow-800, #7f5f01)',\n 900: 'var(--bfc-v2-color-yellow-900, #533f04)',\n 1000: 'var(--bfc-v2-color-yellow-1000, #332e1b)',\n DEFAULT: 'var(--bfc-v2-color-yellow-700, #946f00)', // 700\n};\n","export const lime = {\n 100: 'var(--bfc-v2-color-lime-100, #e9fec8)',\n 200: 'var(--bfc-v2-color-lime-200, #d6f589)',\n 300: 'var(--bfc-v2-color-lime-300, #b3ee2b)',\n 400: 'var(--bfc-v2-color-lime-400, #a3e635)',\n 500: 'var(--bfc-v2-color-lime-500, #91cf02)',\n 600: 'var(--bfc-v2-color-lime-600, #83b300)',\n 700: 'var(--bfc-v2-color-lime-700, #647f01)',\n 800: 'var(--bfc-v2-color-lime-800, #546c00)',\n 900: 'var(--bfc-v2-color-lime-900, #3f5304)',\n 1000: 'var(--bfc-v2-color-lime-1000, #2b331b)',\n DEFAULT: 'var(--bfc-v2-color-lime-700, #647f01)', // 700\n};\n","export const green = {\n 100: 'var(--bfc-v2-color-green-100, #dcfff1)',\n 200: 'var(--bfc-v2-color-green-200, #baf3db)',\n 300: 'var(--bfc-v2-color-green-300, #7ee2b8)',\n 400: 'var(--bfc-v2-color-green-400, #4bce97)',\n 500: 'var(--bfc-v2-color-green-500, #2abb7f)',\n 600: 'var(--bfc-v2-color-green-600, #22a06b)',\n 700: 'var(--bfc-v2-color-green-700, #1f845a)',\n 800: 'var(--bfc-v2-color-green-800, #216e4e)',\n 900: 'var(--bfc-v2-color-green-900, #164b35)',\n 1000: 'var(--bfc-v2-color-green-1000, #1c3329)',\n DEFAULT: 'var(--bfc-v2-color-green-700, #1f845a)', // 700\n};\n","export const blue = {\n 100: 'var(--bfc-v2-color-blue-100, #e9f2fe)',\n 200: 'var(--bfc-v2-color-blue-200, #cfe1fd)',\n 300: 'var(--bfc-v2-color-blue-300, #8fb8f6)',\n 400: 'var(--bfc-v2-color-blue-400, #669df1)',\n 500: 'var(--bfc-v2-color-blue-500, #4688ec)',\n 600: 'var(--bfc-v2-color-blue-600, #357de8)',\n 700: 'var(--bfc-v2-color-blue-700, #1868db)',\n 800: 'var(--bfc-v2-color-blue-800, #1558bc)',\n 900: 'var(--bfc-v2-color-blue-900, #123263)',\n 1000: 'var(--bfc-v2-color-blue-1000, #1c2b42)',\n DEFAULT: 'var(--bfc-v2-color-blue-700, #1868db)', // 700\n};\n","export const teal = {\n 100: 'var(--bfc-v2-color-teal-100, #e7f9ff)',\n 200: 'var(--bfc-v2-color-teal-200, #c6edfb)',\n 300: 'var(--bfc-v2-color-teal-300, #9dd9ee)',\n 400: 'var(--bfc-v2-color-teal-400, #6cc3e0)',\n 500: 'var(--bfc-v2-color-teal-500, #42b2d7)',\n 600: 'var(--bfc-v2-color-teal-600, #2898bd)',\n 700: 'var(--bfc-v2-color-teal-700, #227d9b)',\n 800: 'var(--bfc-v2-color-teal-800, #206a83)',\n 900: 'var(--bfc-v2-color-teal-900, #164555)',\n 1000: 'var(--bfc-v2-color-teal-1000, #1e3137)',\n DEFAULT: 'var(--bfc-v2-color-teal-700, #227d9b)', // 700\n};\n","export const purple = {\n 100: 'var(--bfc-v2-color-purple-100, #f8eefe)',\n 200: 'var(--bfc-v2-color-purple-200, #dfd8fd)',\n 300: 'var(--bfc-v2-color-purple-300, #b8acf6)',\n 400: 'var(--bfc-v2-color-purple-400, #9f8fef)',\n 500: 'var(--bfc-v2-color-purple-500, #8f7ee7)',\n 600: 'var(--bfc-v2-color-purple-600, #8270db)',\n 700: 'var(--bfc-v2-color-purple-700, #6e5dc6)',\n 800: 'var(--bfc-v2-color-purple-800, #5e4db2)',\n 900: 'var(--bfc-v2-color-purple-900, #352c63)',\n 1000: 'var(--bfc-v2-color-purple-1000, #2b273f)',\n DEFAULT: 'var(--bfc-v2-color-purple-700, #6e5dc6)', // 700\n};\n","export const magenta = {\n 100: 'var(--bfc-v2-color-magenta-100, #ffecf8)',\n 200: 'var(--bfc-v2-color-magenta-200, #fdd0ec)',\n 300: 'var(--bfc-v2-color-magenta-300, #f797d2)',\n 400: 'var(--bfc-v2-color-magenta-400, #e774bb)',\n 500: 'var(--bfc-v2-color-magenta-500, #da62ac)',\n 600: 'var(--bfc-v2-color-magenta-600, #cd519d)',\n 700: 'var(--bfc-v2-color-magenta-700, #ae4787)',\n 800: 'var(--bfc-v2-color-magenta-800, #943d73)',\n 900: 'var(--bfc-v2-color-magenta-900, #50253f)',\n 1000: 'var(--bfc-v2-color-magenta-1000, #3d2232)',\n DEFAULT: 'var(--bfc-v2-color-magenta-700, #ae4787)', // 700\n};\n","export const pink = {\n 50: 'var(--bfc-v2-color-pink-50, #F5F4FF)',\n 100: 'var(--bfc-v2-color-pink-100, #FAE9FF)',\n 200: 'var(--bfc-v2-color-pink-200, #F5D1FE)',\n 300: 'var(--bfc-v2-color-pink-300, #F0ACFC)',\n 400: 'var(--bfc-v2-color-pink-400, #E87AF9)',\n 500: 'var(--bfc-v2-color-pink-500, #D947EF)',\n 600: 'var(--bfc-v2-color-pink-600, #C027D3)',\n 700: 'var(--bfc-v2-color-pink-700, #A21DAF)',\n 800: 'var(--bfc-v2-color-pink-800, #861A8F)',\n 900: 'var(--bfc-v2-color-pink-900, #701B75)',\n DEFAULT: 'var(--bfc-v2-color-pink-400, #E87AF9)', // 400\n};\n","export const red = {\n 100: 'var(--bfc-v2-color-red-100, #ffeceb)',\n 200: 'var(--bfc-v2-color-red-200, #ffd5d2)',\n 300: 'var(--bfc-v2-color-red-300, #fd9891)',\n 400: 'var(--bfc-v2-color-red-400, #f87168)',\n 500: 'var(--bfc-v2-color-red-500, #f15b50)',\n 600: 'var(--bfc-v2-color-red-600, #e2483d)',\n 700: 'var(--bfc-v2-color-red-700, #c9372c)',\n 800: 'var(--bfc-v2-color-red-800, #ae2e24)',\n 900: 'var(--bfc-v2-color-red-900, #5d1f1a)',\n 1000: 'var(--bfc-v2-color-red-1000, #42221f)',\n DEFAULT: 'var(--bfc-v2-color-red-700, #c9372c)', // 700\n};\n","import { primary } from './primary';\nimport { dark } from './dark';\nimport { orange } from './orange';\nimport { yellow } from './yellow';\nimport { lime } from './lime';\nimport { green } from './green';\nimport { blue } from './blue';\nimport { teal } from './teal';\nimport { purple } from './purple';\nimport { magenta } from './magenta';\nimport { pink } from './pink';\nimport { red } from './red';\n\nexport const BrainfishColors = {\n primary,\n dark,\n orange,\n yellow,\n lime,\n green,\n blue,\n teal,\n purple,\n magenta,\n pink,\n red,\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"colors.js","sources":["../../src/colors/orange.ts","../../src/colors/yellow.ts","../../src/colors/lime.ts","../../src/colors/green.ts","../../src/colors/teal.ts","../../src/colors/purple.ts","../../src/colors/magenta.ts","../../src/colors/pink.ts","../../src/colors/red.ts","../../src/colors/index.ts"],"sourcesContent":["export const orange = {\n 100: 'var(--bfc-v2-color-orange-100, #fff3eb)',\n 200: 'var(--bfc-v2-color-orange-200, #fedec8)',\n 300: 'var(--bfc-v2-color-orange-300, #fec195)',\n 400: 'var(--bfc-v2-color-orange-400, #fea362)',\n 500: 'var(--bfc-v2-color-orange-500, #f38a3f)',\n 600: 'var(--bfc-v2-color-orange-600, #e56910)',\n 700: 'var(--bfc-v2-color-orange-700, #c25100)',\n 800: 'var(--bfc-v2-color-orange-800, #a54800)',\n 900: 'var(--bfc-v2-color-orange-900, #702e00)',\n 1000: 'var(--bfc-v2-color-orange-1000, #38291e)',\n DEFAULT: 'var(--bfc-v2-color-orange-700, #c25100)', // 700\n};\n","export const yellow = {\n 100: 'var(--bfc-v2-color-yellow-100, #fef7c8)',\n 200: 'var(--bfc-v2-color-yellow-200, #ffdf84)',\n 300: 'var(--bfc-v2-color-yellow-300, #fed153)',\n 400: 'var(--bfc-v2-color-yellow-400, #fbbf25)',\n 500: 'var(--bfc-v2-color-yellow-500, #e5ad1d)',\n 600: 'var(--bfc-v2-color-yellow-600, #c59109)',\n 700: 'var(--bfc-v2-color-yellow-700, #977007)',\n 800: 'var(--bfc-v2-color-yellow-800, #7f5f01)',\n 900: 'var(--bfc-v2-color-yellow-900, #533f04)',\n 1000: 'var(--bfc-v2-color-yellow-1000, #332e1b)',\n DEFAULT: 'var(--bfc-v2-color-yellow-700, #946f00)', // 700\n};\n","export const lime = {\n 100: 'var(--bfc-v2-color-lime-100, #e9fec8)',\n 200: 'var(--bfc-v2-color-lime-200, #d6f589)',\n 300: 'var(--bfc-v2-color-lime-300, #b3ee2b)',\n 400: 'var(--bfc-v2-color-lime-400, #a3e635)',\n 500: 'var(--bfc-v2-color-lime-500, #91cf02)',\n 600: 'var(--bfc-v2-color-lime-600, #83b300)',\n 700: 'var(--bfc-v2-color-lime-700, #647f01)',\n 800: 'var(--bfc-v2-color-lime-800, #546c00)',\n 900: 'var(--bfc-v2-color-lime-900, #3f5304)',\n 1000: 'var(--bfc-v2-color-lime-1000, #2b331b)',\n DEFAULT: 'var(--bfc-v2-color-lime-700, #647f01)', // 700\n};\n","export const green = {\n 100: 'var(--bfc-v2-color-green-100, #dcfff1)',\n 200: 'var(--bfc-v2-color-green-200, #baf3db)',\n 300: 'var(--bfc-v2-color-green-300, #7ee2b8)',\n 400: 'var(--bfc-v2-color-green-400, #4bce97)',\n 500: 'var(--bfc-v2-color-green-500, #2abb7f)',\n 600: 'var(--bfc-v2-color-green-600, #22a06b)',\n 700: 'var(--bfc-v2-color-green-700, #1f845a)',\n 800: 'var(--bfc-v2-color-green-800, #216e4e)',\n 900: 'var(--bfc-v2-color-green-900, #164b35)',\n 1000: 'var(--bfc-v2-color-green-1000, #1c3329)',\n DEFAULT: 'var(--bfc-v2-color-green-700, #1f845a)', // 700\n};\n","export const teal = {\n 100: 'var(--bfc-v2-color-teal-100, #e7f9ff)',\n 200: 'var(--bfc-v2-color-teal-200, #c6edfb)',\n 300: 'var(--bfc-v2-color-teal-300, #9dd9ee)',\n 400: 'var(--bfc-v2-color-teal-400, #6cc3e0)',\n 500: 'var(--bfc-v2-color-teal-500, #42b2d7)',\n 600: 'var(--bfc-v2-color-teal-600, #2898bd)',\n 700: 'var(--bfc-v2-color-teal-700, #227d9b)',\n 800: 'var(--bfc-v2-color-teal-800, #206a83)',\n 900: 'var(--bfc-v2-color-teal-900, #164555)',\n 1000: 'var(--bfc-v2-color-teal-1000, #1e3137)',\n DEFAULT: 'var(--bfc-v2-color-teal-700, #227d9b)', // 700\n};\n","export const purple = {\n 100: 'var(--bfc-v2-color-purple-100, #f8eefe)',\n 200: 'var(--bfc-v2-color-purple-200, #dfd8fd)',\n 300: 'var(--bfc-v2-color-purple-300, #b8acf6)',\n 400: 'var(--bfc-v2-color-purple-400, #9f8fef)',\n 500: 'var(--bfc-v2-color-purple-500, #8f7ee7)',\n 600: 'var(--bfc-v2-color-purple-600, #8270db)',\n 700: 'var(--bfc-v2-color-purple-700, #6e5dc6)',\n 800: 'var(--bfc-v2-color-purple-800, #5e4db2)',\n 900: 'var(--bfc-v2-color-purple-900, #352c63)',\n 1000: 'var(--bfc-v2-color-purple-1000, #2b273f)',\n DEFAULT: 'var(--bfc-v2-color-purple-700, #6e5dc6)', // 700\n};\n","export const magenta = {\n 100: 'var(--bfc-v2-color-magenta-100, #ffecf8)',\n 200: 'var(--bfc-v2-color-magenta-200, #fdd0ec)',\n 300: 'var(--bfc-v2-color-magenta-300, #f797d2)',\n 400: 'var(--bfc-v2-color-magenta-400, #e774bb)',\n 500: 'var(--bfc-v2-color-magenta-500, #da62ac)',\n 600: 'var(--bfc-v2-color-magenta-600, #cd519d)',\n 700: 'var(--bfc-v2-color-magenta-700, #ae4787)',\n 800: 'var(--bfc-v2-color-magenta-800, #943d73)',\n 900: 'var(--bfc-v2-color-magenta-900, #50253f)',\n 1000: 'var(--bfc-v2-color-magenta-1000, #3d2232)',\n DEFAULT: 'var(--bfc-v2-color-magenta-700, #ae4787)', // 700\n};\n","export const pink = {\n 50: 'var(--bfc-v2-color-pink-50, #F5F4FF)',\n 100: 'var(--bfc-v2-color-pink-100, #FAE9FF)',\n 200: 'var(--bfc-v2-color-pink-200, #F5D1FE)',\n 300: 'var(--bfc-v2-color-pink-300, #F0ACFC)',\n 400: 'var(--bfc-v2-color-pink-400, #E87AF9)',\n 500: 'var(--bfc-v2-color-pink-500, #D947EF)',\n 600: 'var(--bfc-v2-color-pink-600, #C027D3)',\n 700: 'var(--bfc-v2-color-pink-700, #A21DAF)',\n 800: 'var(--bfc-v2-color-pink-800, #861A8F)',\n 900: 'var(--bfc-v2-color-pink-900, #701B75)',\n DEFAULT: 'var(--bfc-v2-color-pink-400, #E87AF9)', // 400\n};\n","export const red = {\n 100: 'var(--bfc-v2-color-red-100, #ffeceb)',\n 200: 'var(--bfc-v2-color-red-200, #ffd5d2)',\n 300: 'var(--bfc-v2-color-red-300, #fd9891)',\n 400: 'var(--bfc-v2-color-red-400, #f87168)',\n 500: 'var(--bfc-v2-color-red-500, #f15b50)',\n 600: 'var(--bfc-v2-color-red-600, #e2483d)',\n 700: 'var(--bfc-v2-color-red-700, #c9372c)',\n 800: 'var(--bfc-v2-color-red-800, #ae2e24)',\n 900: 'var(--bfc-v2-color-red-900, #5d1f1a)',\n 1000: 'var(--bfc-v2-color-red-1000, #42221f)',\n DEFAULT: 'var(--bfc-v2-color-red-700, #c9372c)', // 700\n};\n","import { primary } from './primary';\nimport { dark } from './dark';\nimport { orange } from './orange';\nimport { yellow } from './yellow';\nimport { lime } from './lime';\nimport { green } from './green';\nimport { blue } from './blue';\nimport { teal } from './teal';\nimport { purple } from './purple';\nimport { magenta } from './magenta';\nimport { pink } from './pink';\nimport { red } from './red';\n\nexport const BrainfishColors = {\n primary,\n dark,\n orange,\n yellow,\n lime,\n green,\n blue,\n teal,\n purple,\n magenta,\n pink,\n red,\n};\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { C as ChatSearch, a as ChatSearchProvider, u as useChatSearch, b as useIsChatSearchDirty } from '../chunks/ChatSearch.C6nUXNy4.js';
1
+ export { C as ChatSearch, a as ChatSearchProvider, u as useChatSearch, b as useIsChatSearchDirty } from '../chunks/ChatSearch.DOH90EUx.js';
2
2
  //# sourceMappingURL=chat-search.js.map
@@ -14,12 +14,11 @@ import { Tooltip, TooltipTrigger, TooltipContent } from './ui/tooltip.js';
14
14
  import { DivButton } from './ui/div-button.js';
15
15
  import { ScrollArea } from './ui/scroll-area.js';
16
16
  import { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription } from './ui/sheet.js';
17
- import { G as GeneratingStar } from '../chunks/generating-star.CozjECmM.js';
17
+ import { G as GeneratingStar } from '../chunks/generating-star.BMQgTqs7.js';
18
18
  import { Item, ItemHeader, ItemTitle, ItemContent, ItemDescription } from './ui/item.js';
19
19
  import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from './ui/accordion.js';
20
20
  import { createId } from '@paralleldrive/cuid2';
21
21
  import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './ui/table.js';
22
- import { d as dark } from '../chunks/dark.Cl9Z44CU.js';
23
22
  import '../global.css';import '../convos.css';/* empty css */
24
23
  import '@radix-ui/react-collapsible';
25
24
  import './ui/dropdown-menu.js';
@@ -30,12 +29,16 @@ import './ui/command.js';
30
29
  import './ui/dialog.js';
31
30
  import './ui/card.js';
32
31
  import './ui/progress.js';
32
+ import '@radix-ui/react-accordion';
33
+ import 'clsx';
34
+ import 'tailwind-merge';
33
35
  import './ui/alert-dialog.js';
34
36
  import './ui/alert.js';
35
37
  import './ui/button-group.js';
36
38
  import './ui/calendar.js';
37
39
  import './ui/icon.js';
38
40
  import './ui/separator.js';
41
+ import { d as dark } from '../chunks/dark.Cl9Z44CU.js';
39
42
 
40
43
  const StatusBadge = React__default.forwardRef(({ className, suffix, children, ...props }, ref) => {
41
44
  return /* @__PURE__ */ React__default.createElement("div", { ref, className: cn("flex items-center gap-1 rounded-md p-1", suffix && "bg-dark-300", className) }, /* @__PURE__ */ React__default.createElement(Badge, { ...props }, /* @__PURE__ */ React__default.createElement("div", { className: "flex items-center gap-1" }, /* @__PURE__ */ React__default.createElement(Circle, { weight: "fill", size: 8, className: "!size-2" }), children)), suffix && /* @__PURE__ */ React__default.createElement("span", { className: "text-xs text-default" }, suffix));
@@ -370,7 +373,7 @@ function Message(props) {
370
373
  )));
371
374
  }
372
375
  const feedback = isFeedback(props) ? props.feedback : null;
373
- return /* @__PURE__ */ React__default.createElement("li", { className: "relative list-none before-line--user after-line--user" }, /* @__PURE__ */ React__default.createElement(Item, { className: "message-item" }, /* @__PURE__ */ React__default.createElement(ItemHeader, { className: "basis-0" }, /* @__PURE__ */ React__default.createElement(UserCircle, { weight: "fill", size: 24 })), /* @__PURE__ */ React__default.createElement(ItemContent, { className: "message-user-content" }, isUserQuestion(props) && /* @__PURE__ */ React__default.createElement("div", { className: "message-header" }, /* @__PURE__ */ React__default.createElement(FormattedMessage, { message: { content } }), /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp" }, formattedDate)), isFeedback(props) && feedback && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: "message-header" }, /* @__PURE__ */ React__default.createElement("div", { className: "message-feedback-text" }, feedback === "positive" /* Positive */ ? "Upvoted as helpful" : "Downvoted as not helpful"), /* @__PURE__ */ React__default.createElement("div", { className: "message-meta" }, /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp-simple" }, formattedDate), /* @__PURE__ */ React__default.createElement(StatusBadge, { variant: feedback === "positive" /* Positive */ ? "success" : "destructive" }, feedback === "positive" /* Positive */ ? "Answered" : "Unable to help"))), content && /* @__PURE__ */ React__default.createElement("div", { className: "text-base" }, content)), isAction(props) && /* @__PURE__ */ React__default.createElement("div", { className: "message-header" }, /* @__PURE__ */ React__default.createElement("span", { className: "text-subtle text-sm italic" }, content), /* @__PURE__ */ React__default.createElement("div", { className: "message-meta" }, /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp-simple" }, formattedDate), /* @__PURE__ */ React__default.createElement(StatusBadge, { variant: "warning" }, "Action"))))));
376
+ return /* @__PURE__ */ React__default.createElement("li", { className: "relative list-none before-line--user after-line--user" }, /* @__PURE__ */ React__default.createElement(Item, { className: "message-item" }, /* @__PURE__ */ React__default.createElement(ItemHeader, { className: "basis-0" }, /* @__PURE__ */ React__default.createElement(UserCircle, { weight: "fill", size: 24 })), /* @__PURE__ */ React__default.createElement(ItemContent, { className: "message-user-content" }, isUserQuestion(props) && /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React__default.createElement(FormattedMessage, { message: { content } }), /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp" }, formattedDate)), isFeedback(props) && feedback && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("div", { className: "message-header" }, /* @__PURE__ */ React__default.createElement("div", { className: "message-feedback-text" }, feedback === "positive" /* Positive */ ? "Upvoted as helpful" : "Downvoted as not helpful"), /* @__PURE__ */ React__default.createElement("div", { className: "message-meta" }, /* @__PURE__ */ React__default.createElement(StatusBadge, { variant: feedback === "positive" /* Positive */ ? "success" : "destructive" }, feedback === "positive" /* Positive */ ? "Answered" : "Unable to help"))), content && /* @__PURE__ */ React__default.createElement("div", { className: "text-base mb-1" }, content), /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp-simple" }, formattedDate)), isAction(props) && /* @__PURE__ */ React__default.createElement("div", { className: "message-header" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React__default.createElement("span", { className: "text-subtle text-sm italic" }, content), /* @__PURE__ */ React__default.createElement("span", { className: "message-timestamp-simple" }, formattedDate)), /* @__PURE__ */ React__default.createElement("div", { className: "message-meta" }, /* @__PURE__ */ React__default.createElement(StatusBadge, { variant: "warning" }, "Action"))))));
374
377
  }
375
378
 
376
379
  function sortAttributeKeys(attributes) {
@@ -399,7 +402,7 @@ function AttributesDialog({ conversationId, open, onOpenChange, ...args }) {
399
402
  if (!attributes?.length) {
400
403
  return null;
401
404
  }
402
- return /* @__PURE__ */ React__default.createElement(Sheet, { modal: false, open, onOpenChange, ...args }, /* @__PURE__ */ React__default.createElement(SheetTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), onKeyUp: (e) => e.stopPropagation() }, /* @__PURE__ */ React__default.createElement(
405
+ return /* @__PURE__ */ React__default.createElement(Sheet, { modal: false, open, onOpenChange, ...args }, /* @__PURE__ */ React__default.createElement(Tooltip, null, /* @__PURE__ */ React__default.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React__default.createElement(SheetTrigger, { asChild: true, onClick: (e) => e.stopPropagation(), onKeyUp: (e) => e.stopPropagation() }, /* @__PURE__ */ React__default.createElement(
403
406
  DivButton,
404
407
  {
405
408
  variant: "ghost",
@@ -408,7 +411,7 @@ function AttributesDialog({ conversationId, open, onOpenChange, ...args }) {
408
411
  "aria-label": "Open Custom attributes dialog"
409
412
  },
410
413
  /* @__PURE__ */ React__default.createElement(UserFocus, { size: 24 })
411
- )), /* @__PURE__ */ React__default.createElement(SheetContent, { className: "space-y-4" }, /* @__PURE__ */ React__default.createElement(SheetHeader, null, /* @__PURE__ */ React__default.createElement(SheetTitle, { className: "heading-sm m-0" }, "Custom attributes"), /* @__PURE__ */ React__default.createElement(SheetDescription, { className: "sr-only" }, "Custom attributes are used to store additional information about the conversation.")), sortedAttributesKeys && /* @__PURE__ */ React__default.createElement(ScrollArea, { className: "h-[calc(100vh-8rem)]" }, " ", /* @__PURE__ */ React__default.createElement(Table, { className: "bg-surface", "data-test-id": "attributes-table" }, /* @__PURE__ */ React__default.createElement(TableHeader, null, /* @__PURE__ */ React__default.createElement(TableRow, null, sortedAttributesKeys.map((key) => /* @__PURE__ */ React__default.createElement(TableHead, { key, className: "capitalize font-bold" }, key)))), /* @__PURE__ */ React__default.createElement(TableBody, null, attributes.map((record) => /* @__PURE__ */ React__default.createElement(TableRow, { key: record?.id ?? createId(), className: "border-none" }, sortedAttributesKeys.map((key) => /* @__PURE__ */ React__default.createElement(TableCell, { key, "data-title": key }, record[key])))))))));
414
+ ))), /* @__PURE__ */ React__default.createElement(TooltipContent, null, "Customer attributes")), /* @__PURE__ */ React__default.createElement(SheetContent, { className: "space-y-4" }, /* @__PURE__ */ React__default.createElement(SheetHeader, null, /* @__PURE__ */ React__default.createElement(SheetTitle, { className: "heading-sm m-0" }, "Custom attributes"), /* @__PURE__ */ React__default.createElement(SheetDescription, { className: "sr-only" }, "Custom attributes are used to store additional information about the conversation.")), sortedAttributesKeys && /* @__PURE__ */ React__default.createElement(ScrollArea, { className: "h-[calc(100vh-8rem)]" }, " ", /* @__PURE__ */ React__default.createElement(Table, { className: "bg-surface", "data-test-id": "attributes-table" }, /* @__PURE__ */ React__default.createElement(TableHeader, null, /* @__PURE__ */ React__default.createElement(TableRow, null, sortedAttributesKeys.map((key) => /* @__PURE__ */ React__default.createElement(TableHead, { key, className: "capitalize font-bold" }, key)))), /* @__PURE__ */ React__default.createElement(TableBody, null, attributes.map((record) => /* @__PURE__ */ React__default.createElement(TableRow, { key: record?.id ?? createId(), className: "border-none" }, sortedAttributesKeys.map((key) => /* @__PURE__ */ React__default.createElement(TableCell, { key, "data-title": key }, record[key])))))))));
412
415
  }
413
416
 
414
417
  const StreamBadge = React__default.forwardRef(
@@ -485,7 +488,7 @@ function Convo({
485
488
  {
486
489
  value: queryId,
487
490
  className: cn(
488
- 'border border-dark-200 hover:border-dark-300 rounded-lg bg-dark-100 [&[data-state="open"]]:bg-surface [&[data-state="open"]]:border-dark-300',
491
+ 'border border-dark-200 hover:border-dark-300 rounded-lg bg-dark-100 [&[data-state="open"]]:bg-surface [&[data-state="open"]]:border-dark-100',
489
492
  { "shadow-md shadow-dark-300": isAnyDialogOpen },
490
493
  className
491
494
  ),
@@ -598,5 +601,9 @@ function Convos({
598
601
  ))));
599
602
  }
600
603
 
601
- export { Convo, Convos, ConvosProvider, Feedback, Message, MessageType, StatusBadge, isAIAnswer, isAction, isFeedback, isUserQuestion, useConvosContext };
604
+ const EmptyConvos = ({ children }) => {
605
+ return /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col items-center justify-center h-full w-full mt-40 gap-2" }, /* @__PURE__ */ React__default.createElement(GeneratingStar, { className: "size-8", variant: "disabled" }), /* @__PURE__ */ React__default.createElement("div", { className: "text-subtlest text-sm w-96 text-center leading-5" }, children));
606
+ };
607
+
608
+ export { Convo, Convos, ConvosProvider, EmptyConvos, Feedback, Message, MessageType, StatusBadge, isAIAnswer, isAction, isFeedback, isUserQuestion, useConvosContext };
602
609
  //# sourceMappingURL=convos.js.map