interview-widget 0.0.9 → 0.1.1
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/README.md +243 -58
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -127,11 +127,6 @@ export default function App() {
|
|
|
127
127
|
| `onInterviewEnd` | `() => void` | `undefined` | Called when the interview completes or the user exits |
|
|
128
128
|
| `className` | `string` | `""` | Additional CSS classes applied to the outer widget container |
|
|
129
129
|
|
|
130
|
-
Notes:
|
|
131
|
-
|
|
132
|
-
- Internally uses an InterviewController that orchestrates the full flow using the configured API/STT/TTS/Timer.
|
|
133
|
-
- The interview id is currently derived internally; integrate with your backend by configuring the API base and auth.
|
|
134
|
-
|
|
135
130
|
### <InterviewWidgetProvider />
|
|
136
131
|
|
|
137
132
|
Wrap your app (or the widget) to provide configuration. See full config reference below.
|
|
@@ -148,71 +143,261 @@ Pass this object to `InterviewWidgetProvider` via the `config` prop. Tables list
|
|
|
148
143
|
|
|
149
144
|
### Top-level
|
|
150
145
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
146
|
+
<table width="100%">
|
|
147
|
+
<thead>
|
|
148
|
+
<tr>
|
|
149
|
+
<th>Prop</th>
|
|
150
|
+
<th>Type</th>
|
|
151
|
+
<th>Default</th>
|
|
152
|
+
<th>Description</th>
|
|
153
|
+
</tr>
|
|
154
|
+
</thead>
|
|
155
|
+
<tbody>
|
|
156
|
+
<tr>
|
|
157
|
+
<td>api</td>
|
|
158
|
+
<td><code>object</code></td>
|
|
159
|
+
<td>see below</td>
|
|
160
|
+
<td>Backend/API configuration</td>
|
|
161
|
+
</tr>
|
|
162
|
+
<tr>
|
|
163
|
+
<td>ui</td>
|
|
164
|
+
<td><code>object</code></td>
|
|
165
|
+
<td>see below</td>
|
|
166
|
+
<td>UI customization tokens</td>
|
|
167
|
+
</tr>
|
|
168
|
+
<tr>
|
|
169
|
+
<td>interview</td>
|
|
170
|
+
<td><code>object</code></td>
|
|
171
|
+
<td>see below</td>
|
|
172
|
+
<td>Interview behavior settings (timers, STT, TTS)</td>
|
|
173
|
+
</tr>
|
|
174
|
+
</tbody>
|
|
175
|
+
</table>
|
|
156
176
|
|
|
157
177
|
### api
|
|
158
178
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
179
|
+
<table width="100%">
|
|
180
|
+
<thead>
|
|
181
|
+
<tr>
|
|
182
|
+
<th>Prop</th>
|
|
183
|
+
<th>Type</th>
|
|
184
|
+
<th>Default</th>
|
|
185
|
+
<th>Description</th>
|
|
186
|
+
</tr>
|
|
187
|
+
</thead>
|
|
188
|
+
<tbody>
|
|
189
|
+
<tr>
|
|
190
|
+
<td>baseUrl</td>
|
|
191
|
+
<td><code>string</code></td>
|
|
192
|
+
<td>"/api"</td>
|
|
193
|
+
<td>Base URL for backend endpoints</td>
|
|
194
|
+
</tr>
|
|
195
|
+
<tr>
|
|
196
|
+
<td>authToken</td>
|
|
197
|
+
<td><code>string</code></td>
|
|
198
|
+
<td>undefined</td>
|
|
199
|
+
<td>Optional bearer token appended as Authorization header</td>
|
|
200
|
+
</tr>
|
|
201
|
+
<tr>
|
|
202
|
+
<td>retryConfig</td>
|
|
203
|
+
<td><code>object</code></td>
|
|
204
|
+
<td>see below</td>
|
|
205
|
+
<td>Retry policy for fetch calls</td>
|
|
206
|
+
</tr>
|
|
207
|
+
</tbody>
|
|
208
|
+
</table>
|
|
164
209
|
|
|
165
210
|
retryConfig
|
|
166
211
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
212
|
+
<table width="100%">
|
|
213
|
+
<thead>
|
|
214
|
+
<tr>
|
|
215
|
+
<th>Prop</th>
|
|
216
|
+
<th>Type</th>
|
|
217
|
+
<th>Default</th>
|
|
218
|
+
<th>Description</th>
|
|
219
|
+
</tr>
|
|
220
|
+
</thead>
|
|
221
|
+
<tbody>
|
|
222
|
+
<tr>
|
|
223
|
+
<td>attempts</td>
|
|
224
|
+
<td><code>number</code></td>
|
|
225
|
+
<td>3</td>
|
|
226
|
+
<td>Number of retry attempts</td>
|
|
227
|
+
</tr>
|
|
228
|
+
<tr>
|
|
229
|
+
<td>backoff</td>
|
|
230
|
+
<td><code>"fixed" | "exponential"</code></td>
|
|
231
|
+
<td>"exponential"</td>
|
|
232
|
+
<td>Backoff strategy</td>
|
|
233
|
+
</tr>
|
|
234
|
+
<tr>
|
|
235
|
+
<td>baseDelay</td>
|
|
236
|
+
<td><code>number (ms)</code></td>
|
|
237
|
+
<td>1000</td>
|
|
238
|
+
<td>Base delay between retries in milliseconds</td>
|
|
239
|
+
</tr>
|
|
240
|
+
</tbody>
|
|
241
|
+
</table>
|
|
172
242
|
|
|
173
243
|
### ui
|
|
174
244
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
245
|
+
<table width="100%">
|
|
246
|
+
<thead>
|
|
247
|
+
<tr>
|
|
248
|
+
<th>Prop</th>
|
|
249
|
+
<th>Type</th>
|
|
250
|
+
<th>Default</th>
|
|
251
|
+
<th>Description</th>
|
|
252
|
+
</tr>
|
|
253
|
+
</thead>
|
|
254
|
+
<tbody>
|
|
255
|
+
<tr>
|
|
256
|
+
<td>baseColor</td>
|
|
257
|
+
<td><code>string (hex)</code></td>
|
|
258
|
+
<td>"#3B82F6"</td>
|
|
259
|
+
<td>Primary brand color used by the widget</td>
|
|
260
|
+
</tr>
|
|
261
|
+
<tr>
|
|
262
|
+
<td>borderRadius</td>
|
|
263
|
+
<td><code>string (CSS)</code></td>
|
|
264
|
+
<td>"8px"</td>
|
|
265
|
+
<td>Global corner radius for components</td>
|
|
266
|
+
</tr>
|
|
267
|
+
</tbody>
|
|
268
|
+
</table>
|
|
179
269
|
|
|
180
270
|
### interview
|
|
181
271
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
272
|
+
<table width="100%">
|
|
273
|
+
<thead>
|
|
274
|
+
<tr>
|
|
275
|
+
<th>Prop</th>
|
|
276
|
+
<th>Type</th>
|
|
277
|
+
<th>Default</th>
|
|
278
|
+
<th>Description</th>
|
|
279
|
+
</tr>
|
|
280
|
+
</thead>
|
|
281
|
+
<tbody>
|
|
282
|
+
<tr>
|
|
283
|
+
<td>timers</td>
|
|
284
|
+
<td><code>object</code></td>
|
|
285
|
+
<td>see below</td>
|
|
286
|
+
<td>Per-phase and global timing configuration</td>
|
|
287
|
+
</tr>
|
|
288
|
+
<tr>
|
|
289
|
+
<td>stt</td>
|
|
290
|
+
<td><code>object</code></td>
|
|
291
|
+
<td>see below</td>
|
|
292
|
+
<td>Speech-to-Text provider settings</td>
|
|
293
|
+
</tr>
|
|
294
|
+
<tr>
|
|
295
|
+
<td>tts</td>
|
|
296
|
+
<td><code>object</code></td>
|
|
297
|
+
<td>see below</td>
|
|
298
|
+
<td>Text-to-Speech provider settings</td>
|
|
299
|
+
</tr>
|
|
300
|
+
</tbody>
|
|
301
|
+
</table>
|
|
302
|
+
|
|
303
|
+
#### timers
|
|
304
|
+
|
|
305
|
+
<table width="100%">
|
|
306
|
+
<thead>
|
|
307
|
+
<tr>
|
|
308
|
+
<th>Prop</th>
|
|
309
|
+
<th>Type</th>
|
|
310
|
+
<th>Default</th>
|
|
311
|
+
<th>Description</th>
|
|
312
|
+
</tr>
|
|
313
|
+
</thead>
|
|
314
|
+
<tbody>
|
|
315
|
+
<tr>
|
|
316
|
+
<td>thinkingDuration</td>
|
|
317
|
+
<td><code>number (s)</code></td>
|
|
318
|
+
<td>30</td>
|
|
319
|
+
<td>Timebox for the Thinking phase</td>
|
|
320
|
+
</tr>
|
|
321
|
+
<tr>
|
|
322
|
+
<td>answeringDuration</td>
|
|
323
|
+
<td><code>number (s)</code></td>
|
|
324
|
+
<td>120</td>
|
|
325
|
+
<td>Timebox for the Answering phase</td>
|
|
326
|
+
</tr>
|
|
327
|
+
<tr>
|
|
328
|
+
<td>editingDuration</td>
|
|
329
|
+
<td><code>number (s)</code></td>
|
|
330
|
+
<td>30</td>
|
|
331
|
+
<td>Timebox for the Editing phase</td>
|
|
332
|
+
</tr>
|
|
333
|
+
<tr>
|
|
334
|
+
<td>totalInterviewDuration</td>
|
|
335
|
+
<td><code>number (s)</code></td>
|
|
336
|
+
<td>600</td>
|
|
337
|
+
<td>Overall interview time cap</td>
|
|
338
|
+
</tr>
|
|
339
|
+
<tr>
|
|
340
|
+
<td>minimumTimeForNextQuestion</td>
|
|
341
|
+
<td><code>number (s)</code></td>
|
|
342
|
+
<td>120</td>
|
|
343
|
+
<td>Minimum time required to allow starting the next question</td>
|
|
344
|
+
</tr>
|
|
345
|
+
</tbody>
|
|
346
|
+
</table>
|
|
347
|
+
|
|
348
|
+
#### stt
|
|
349
|
+
|
|
350
|
+
<table width="100%">
|
|
351
|
+
<thead>
|
|
352
|
+
<tr>
|
|
353
|
+
<th>Prop</th>
|
|
354
|
+
<th>Type</th>
|
|
355
|
+
<th>Default</th>
|
|
356
|
+
<th>Description</th>
|
|
357
|
+
</tr>
|
|
358
|
+
</thead>
|
|
359
|
+
<tbody>
|
|
360
|
+
<tr>
|
|
361
|
+
<td>provider</td>
|
|
362
|
+
<td><code>"groq" | "deepgram"</code></td>
|
|
363
|
+
<td>"groq"</td>
|
|
364
|
+
<td>STT vendor to use</td>
|
|
365
|
+
</tr>
|
|
366
|
+
<tr>
|
|
367
|
+
<td>model</td>
|
|
368
|
+
<td><code>"whisper-large-v3-turbo" | string</code></td>
|
|
369
|
+
<td>"whisper-large-v3-turbo"</td>
|
|
370
|
+
<td>STT model identifier</td>
|
|
371
|
+
</tr>
|
|
372
|
+
<tr>
|
|
373
|
+
<td>language</td>
|
|
374
|
+
<td><code>string</code></td>
|
|
375
|
+
<td>"en"</td>
|
|
376
|
+
<td>Language code passed to the STT engine</td>
|
|
377
|
+
</tr>
|
|
378
|
+
</tbody>
|
|
379
|
+
</table>
|
|
380
|
+
|
|
381
|
+
#### tts
|
|
382
|
+
|
|
383
|
+
<table width="100%">
|
|
384
|
+
<thead>
|
|
385
|
+
<tr>
|
|
386
|
+
<th>Prop</th>
|
|
387
|
+
<th>Type</th>
|
|
388
|
+
<th>Default</th>
|
|
389
|
+
<th>Description</th>
|
|
390
|
+
</tr>
|
|
391
|
+
</thead>
|
|
392
|
+
<tbody>
|
|
393
|
+
<tr>
|
|
394
|
+
<td>provider</td>
|
|
395
|
+
<td><code>"piper"</code></td>
|
|
396
|
+
<td>"piper"</td>
|
|
397
|
+
<td>TTS vendor to use</td>
|
|
398
|
+
</tr>
|
|
399
|
+
</tbody>
|
|
400
|
+
</table>
|
|
216
401
|
|
|
217
402
|
## How it works
|
|
218
403
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "interview-widget",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.1.1",
|
|
5
5
|
"description": "Advanced React interview widget with STT, TTS, camera access, and ML-powered analysis",
|
|
6
6
|
"main": "dist/widget.umd.js",
|
|
7
7
|
"module": "dist/widget.es.js",
|
|
@@ -54,11 +54,12 @@
|
|
|
54
54
|
},
|
|
55
55
|
"keywords": [
|
|
56
56
|
"react",
|
|
57
|
-
"
|
|
57
|
+
"interview",
|
|
58
58
|
"widget",
|
|
59
59
|
"cdn",
|
|
60
|
-
"embed"
|
|
60
|
+
"embed",
|
|
61
|
+
"interview-widget"
|
|
61
62
|
],
|
|
62
|
-
"author": "
|
|
63
|
+
"author": "Jaber Hossain Pranto",
|
|
63
64
|
"license": "MIT"
|
|
64
65
|
}
|