@@ -19,6 +19,7 @@ import { cn } from '@/lib/utils';
19
19
import { Card , CardContent , CardHeader , CardTitle } from '@/components/ui/card' ;
20
20
import { Badge } from '@/components/ui/badge' ;
21
21
import { extractDataProviderEndpointsData } from './_utils' ;
22
+ import { ScrollArea } from '@/components/ui/scroll-area' ;
22
23
23
24
const PROVIDER_CONFIG = {
24
25
'linkedin' : {
@@ -147,113 +148,115 @@ export function DataProviderEndpointsToolView({
147
148
</ div >
148
149
</ div >
149
150
) : (
150
- < div className = "p-4 space-y-6" >
151
- < div className = "flex items-center gap-4 p-4 bg-zinc-50 dark:bg-zinc-900/50 rounded-lg border border-zinc-200 dark:border-zinc-800" >
152
- < div className = { cn (
153
- "w-12 h-12 rounded-lg flex items-center justify-center shadow-sm border-2" ,
154
- `bg-gradient-to-br ${ providerConfig . color } ` ,
155
- "border-white/20"
156
- ) } >
157
- < IconComponent className = "h-6 w-6 text-white drop-shadow-sm" />
158
- </ div >
151
+ < ScrollArea className = "h-full w-full" >
152
+ < div className = "p-4 space-y-6" >
153
+ < div className = "flex items-center gap-4 p-4 bg-zinc-50 dark:bg-zinc-900/50 rounded-lg border border-zinc-200 dark:border-zinc-800" >
154
+ < div className = { cn (
155
+ "w-12 h-12 rounded-lg flex items-center justify-center shadow-sm border-2" ,
156
+ `bg-gradient-to-br ${ providerConfig . color } ` ,
157
+ "border-white/20"
158
+ ) } >
159
+ < IconComponent className = "h-6 w-6 text-white drop-shadow-sm" />
160
+ </ div >
159
161
160
- < div className = "flex-1" >
161
- < h3 className = "text-lg font-semibold text-zinc-900 dark:text-zinc-100" >
162
- { providerConfig . name }
163
- </ h3 >
164
- < p className = "text-sm text-zinc-500 dark:text-zinc-400" >
165
- { endpointCount > 0 ? `${ endpointCount } endpoints loaded and ready` : 'Endpoints loaded and ready' }
166
- </ p >
167
- </ div >
162
+ < div className = "flex-1" >
163
+ < h3 className = "text-lg font-semibold text-zinc-900 dark:text-zinc-100" >
164
+ { providerConfig . name }
165
+ </ h3 >
166
+ < p className = "text-sm text-zinc-500 dark:text-zinc-400" >
167
+ { endpointCount > 0 ? `${ endpointCount } endpoints loaded and ready` : 'Endpoints loaded and ready' }
168
+ </ p >
169
+ </ div >
168
170
169
- < Badge
170
- variant = "secondary"
171
- className = { cn (
172
- "text-xs font-medium" ,
173
- actualIsSuccess
174
- ? "bg-emerald-50 text-emerald-700 border-emerald-200 dark:bg-emerald-900/20 dark:text-emerald-300 dark:border-emerald-800"
175
- : "bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-300 dark:border-red-800"
176
- ) }
177
- >
178
- { actualIsSuccess ? (
179
- < CheckCircle className = "h-3 w-3 mr-1" />
180
- ) : (
181
- < AlertTriangle className = "h-3 w-3 mr-1" />
182
- ) }
183
- { actualIsSuccess ? 'Connected' : 'Failed' }
184
- </ Badge >
185
- </ div >
186
- < div className = "space-y-4" >
187
- < div className = "flex items-center gap-2 text-sm font-medium text-zinc-700 dark:text-zinc-300" >
188
- < Database className = "h-4 w-4" />
189
- < span > Provider Status</ span >
190
- < ChevronRight className = "h-3 w-3 text-zinc-400" />
171
+ < Badge
172
+ variant = "secondary"
173
+ className = { cn (
174
+ "text-xs font-medium" ,
175
+ actualIsSuccess
176
+ ? "bg-emerald-50 text-emerald-700 border-emerald-200 dark:bg-emerald-900/20 dark:text-emerald-300 dark:border-emerald-800"
177
+ : "bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-300 dark:border-red-800"
178
+ ) }
179
+ >
180
+ { actualIsSuccess ? (
181
+ < CheckCircle className = "h-3 w-3 mr-1" />
182
+ ) : (
183
+ < AlertTriangle className = "h-3 w-3 mr-1" />
184
+ ) }
185
+ { actualIsSuccess ? 'Connected' : 'Failed' }
186
+ </ Badge >
191
187
</ div >
192
- < div className = "grid gap-3" >
193
- < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
194
- < div className = "flex items-center gap-3" >
195
- < div className = "w-2 h-2 rounded-full bg-emerald-500" > </ div >
196
- < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
197
- Connection Status
198
- </ span >
199
- </ div >
200
- < Badge
201
- variant = "secondary"
202
- className = { cn (
203
- "text-xs font-medium" ,
204
- actualIsSuccess
205
- ? "bg-emerald-50 text-emerald-700 border-emerald-200 dark:bg-emerald-900/20 dark:text-emerald-300 dark:border-emerald-800"
206
- : "bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-300 dark:border-red-800"
207
- ) }
208
- >
209
- { actualIsSuccess ? (
210
- < CheckCircle className = "h-3 w-3 mr-1" />
211
- ) : (
212
- < AlertTriangle className = "h-3 w-3 mr-1" />
213
- ) }
214
- { actualIsSuccess ? 'Active' : 'Inactive' }
215
- </ Badge >
188
+ < div className = "space-y-4" >
189
+ < div className = "flex items-center gap-2 text-sm font-medium text-zinc-700 dark:text-zinc-300" >
190
+ < Database className = "h-4 w-4" />
191
+ < span > Provider Status</ span >
192
+ < ChevronRight className = "h-3 w-3 text-zinc-400" />
216
193
</ div >
194
+ < div className = "grid gap-3" >
195
+ < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
196
+ < div className = "flex items-center gap-3" >
197
+ < div className = "w-2 h-2 rounded-full bg-emerald-500" > </ div >
198
+ < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
199
+ Connection Status
200
+ </ span >
201
+ </ div >
202
+ < Badge
203
+ variant = "secondary"
204
+ className = { cn (
205
+ "text-xs font-medium" ,
206
+ actualIsSuccess
207
+ ? "bg-emerald-50 text-emerald-700 border-emerald-200 dark:bg-emerald-900/20 dark:text-emerald-300 dark:border-emerald-800"
208
+ : "bg-red-50 text-red-700 border-red-200 dark:bg-red-900/20 dark:text-red-300 dark:border-red-800"
209
+ ) }
210
+ >
211
+ { actualIsSuccess ? (
212
+ < CheckCircle className = "h-3 w-3 mr-1" />
213
+ ) : (
214
+ < AlertTriangle className = "h-3 w-3 mr-1" />
215
+ ) }
216
+ { actualIsSuccess ? 'Active' : 'Inactive' }
217
+ </ Badge >
218
+ </ div >
217
219
218
- < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
219
- < div className = "flex items-center gap-3" >
220
- < div className = "w-2 h-2 rounded-full bg-blue-500" > </ div >
221
- < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
222
- Endpoints Available
223
- </ span >
220
+ < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
221
+ < div className = "flex items-center gap-3" >
222
+ < div className = "w-2 h-2 rounded-full bg-blue-500" > </ div >
223
+ < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
224
+ Endpoints Available
225
+ </ span >
226
+ </ div >
227
+ < Badge variant = "outline" className = "text-xs" >
228
+ { endpointCount > 0 ? `${ endpointCount } endpoints` : 'Ready' }
229
+ </ Badge >
224
230
</ div >
225
- < Badge variant = "outline" className = "text-xs" >
226
- { endpointCount > 0 ? `${ endpointCount } endpoints` : 'Ready' }
227
- </ Badge >
228
- </ div >
229
231
230
- < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
231
- < div className = "flex items-center gap-3" >
232
- < div className = "w-2 h-2 rounded-full bg-purple-500" > </ div >
233
- < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
234
- Data Provider
232
+ < div className = "flex items-center justify-between p-3 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-200 dark:border-zinc-800" >
233
+ < div className = "flex items-center gap-3" >
234
+ < div className = "w-2 h-2 rounded-full bg-purple-500" > </ div >
235
+ < span className = "text-sm font-medium text-zinc-900 dark:text-zinc-100" >
236
+ Data Provider
237
+ </ span >
238
+ </ div >
239
+ < span className = "text-sm text-zinc-600 dark:text-zinc-400 font-mono" >
240
+ { serviceName || 'linkedin' }
235
241
</ span >
236
242
</ div >
237
- < span className = "text-sm text-zinc-600 dark:text-zinc-400 font-mono" >
238
- { serviceName || 'linkedin' }
239
- </ span >
240
243
</ div >
241
- </ div >
242
- { actualIsSuccess && (
243
- < div className = "p-4 bg-emerald-50 dark:bg-emerald-900/10 rounded-lg border border-emerald-200 dark:border-emerald-800/50" >
244
- < div className = "flex items-center gap-2 mb-2" >
245
- < CheckCircle className = "h-4 w-4 text-emerald-600 dark:text-emerald-400/70" />
246
- < span className = "text-sm font-medium text-emerald-800 dark:text-emerald-300/70" >
247
- Provider Ready
248
- </ span >
244
+ { actualIsSuccess && (
245
+ < div className = "p-4 bg-emerald-50 dark:bg-emerald-900/10 rounded-lg border border-emerald-200 dark:border-emerald-800/50" >
246
+ < div className = "flex items-center gap-2 mb-2" >
247
+ < CheckCircle className = "h-4 w-4 text-emerald-600 dark:text-emerald-400/70" />
248
+ < span className = "text-sm font-medium text-emerald-800 dark:text-emerald-300/70" >
249
+ Provider Ready
250
+ </ span >
251
+ </ div >
252
+ < p className = "text-xs text-emerald-700 dark:text-emerald-300/70" >
253
+ Data provider endpoints have been loaded successfully and are ready to process requests.
254
+ </ p >
249
255
</ div >
250
- < p className = "text-xs text-emerald-700 dark:text-emerald-300/70" >
251
- Data provider endpoints have been loaded successfully and are ready to process requests.
252
- </ p >
253
- </ div >
254
- ) }
256
+ ) }
257
+ </ div >
255
258
</ div >
256
- </ div >
259
+ </ ScrollArea >
257
260
) }
258
261
</ CardContent >
259
262
0 commit comments