@susilkumar006/widgets-test 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 (107) hide show
  1. package/README.md +445 -0
  2. package/dist/api/FacePeApiClient.d.cts +74 -0
  3. package/dist/api/FacePeApiClient.d.ts +74 -0
  4. package/dist/api/FacePeApiContext.d.cts +8 -0
  5. package/dist/api/FacePeApiContext.d.ts +8 -0
  6. package/dist/api/decoders.d.cts +48 -0
  7. package/dist/api/decoders.d.ts +48 -0
  8. package/dist/api/index.d.cts +8 -0
  9. package/dist/api/index.d.ts +8 -0
  10. package/dist/api/json.d.cts +5 -0
  11. package/dist/api/json.d.ts +5 -0
  12. package/dist/api/useFacePeResource.d.cts +21 -0
  13. package/dist/api/useFacePeResource.d.ts +21 -0
  14. package/dist/components/Avatar/FacePeAvatar.d.cts +23 -0
  15. package/dist/components/Avatar/FacePeAvatar.d.ts +23 -0
  16. package/dist/components/Avatar/engines.d.cts +30 -0
  17. package/dist/components/Avatar/engines.d.ts +30 -0
  18. package/dist/components/Avatar/index.d.cts +1 -0
  19. package/dist/components/Avatar/index.d.ts +1 -0
  20. package/dist/components/Form/FacePeForm.d.cts +19 -0
  21. package/dist/components/Form/FacePeForm.d.ts +19 -0
  22. package/dist/components/Form/index.d.cts +1 -0
  23. package/dist/components/Form/index.d.ts +1 -0
  24. package/dist/components/Picker/FacePePicker.d.cts +22 -0
  25. package/dist/components/Picker/FacePePicker.d.ts +22 -0
  26. package/dist/components/Picker/index.d.cts +1 -0
  27. package/dist/components/Picker/index.d.ts +1 -0
  28. package/dist/components/Placement/FacePeOverlay.d.cts +13 -0
  29. package/dist/components/Placement/FacePeOverlay.d.ts +13 -0
  30. package/dist/components/Placement/FacePePage.d.cts +10 -0
  31. package/dist/components/Placement/FacePePage.d.ts +10 -0
  32. package/dist/components/Placement/index.d.cts +2 -0
  33. package/dist/components/Placement/index.d.ts +2 -0
  34. package/dist/components/Timeline/FacePeTimeline.d.cts +23 -0
  35. package/dist/components/Timeline/FacePeTimeline.d.ts +23 -0
  36. package/dist/components/Timeline/index.d.cts +1 -0
  37. package/dist/components/Timeline/index.d.ts +1 -0
  38. package/dist/components/shared/FacePeErrorBoundary.d.cts +28 -0
  39. package/dist/components/shared/FacePeErrorBoundary.d.ts +28 -0
  40. package/dist/components/shared/surface.d.cts +6 -0
  41. package/dist/components/shared/surface.d.ts +6 -0
  42. package/dist/context/FacePeContext.d.cts +22 -0
  43. package/dist/context/FacePeContext.d.ts +22 -0
  44. package/dist/context/avatar.d.cts +6 -0
  45. package/dist/context/avatar.d.ts +6 -0
  46. package/dist/context/index.d.cts +5 -0
  47. package/dist/context/index.d.ts +5 -0
  48. package/dist/context/navigation.d.cts +10 -0
  49. package/dist/context/navigation.d.ts +10 -0
  50. package/dist/events/FacePeEventEmitter.d.cts +59 -0
  51. package/dist/events/FacePeEventEmitter.d.ts +59 -0
  52. package/dist/events/createCorrelationId.d.cts +9 -0
  53. package/dist/events/createCorrelationId.d.ts +9 -0
  54. package/dist/events/index.d.cts +8 -0
  55. package/dist/events/index.d.ts +8 -0
  56. package/dist/events/telemetry.d.cts +11 -0
  57. package/dist/events/telemetry.d.ts +11 -0
  58. package/dist/events/useFacePeEmitter.d.cts +15 -0
  59. package/dist/events/useFacePeEmitter.d.ts +15 -0
  60. package/dist/index.cjs +1925 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.cts +26 -0
  63. package/dist/index.d.ts +26 -0
  64. package/dist/index.js +1903 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/schemas/FacePeCustomerPayload.schema.json +31 -0
  67. package/dist/schemas/FacePeError.schema.json +63 -0
  68. package/dist/schemas/FacePeEventMeta.schema.json +53 -0
  69. package/dist/schemas/FacePeFormValues.schema.json +27 -0
  70. package/dist/schemas/FacePeNavigationRequest.schema.json +33 -0
  71. package/dist/schemas/FacePePickerOption.schema.json +34 -0
  72. package/dist/schemas/FacePePickerOptionsPayload.schema.json +49 -0
  73. package/dist/schemas/FacePeTelemetryEvent.schema.json +66 -0
  74. package/dist/schemas/FacePeTimelineItem.schema.json +91 -0
  75. package/dist/schemas/FacePeTimelinePayload.schema.json +109 -0
  76. package/dist/styles.css +887 -0
  77. package/dist/types/api.d.cts +60 -0
  78. package/dist/types/api.d.ts +60 -0
  79. package/dist/types/avatar.d.cts +102 -0
  80. package/dist/types/avatar.d.ts +102 -0
  81. package/dist/types/common.d.cts +42 -0
  82. package/dist/types/common.d.ts +42 -0
  83. package/dist/types/components.d.cts +53 -0
  84. package/dist/types/components.d.ts +53 -0
  85. package/dist/types/config.d.cts +27 -0
  86. package/dist/types/config.d.ts +27 -0
  87. package/dist/types/events.d.cts +85 -0
  88. package/dist/types/events.d.ts +85 -0
  89. package/dist/types/form.d.cts +83 -0
  90. package/dist/types/form.d.ts +83 -0
  91. package/dist/types/index.d.cts +18 -0
  92. package/dist/types/index.d.ts +18 -0
  93. package/dist/types/picker.d.cts +82 -0
  94. package/dist/types/picker.d.ts +82 -0
  95. package/dist/types/placement.d.cts +69 -0
  96. package/dist/types/placement.d.ts +69 -0
  97. package/dist/types/provider.d.cts +75 -0
  98. package/dist/types/provider.d.ts +75 -0
  99. package/dist/types/results.d.cts +28 -0
  100. package/dist/types/results.d.ts +28 -0
  101. package/dist/types/telemetry.d.cts +38 -0
  102. package/dist/types/telemetry.d.ts +38 -0
  103. package/dist/types/timeline.d.cts +103 -0
  104. package/dist/types/timeline.d.ts +103 -0
  105. package/dist/version.d.cts +2 -0
  106. package/dist/version.d.ts +2 -0
  107. package/package.json +71 -0
@@ -0,0 +1,887 @@
1
+ /*
2
+ * Shared by every component root (classes picked in surface.ts).
3
+ *
4
+ * The package hard-codes no colours and no fonts (architecture §7.1). Each
5
+ * value reads a documented --fp-* variable; left unset, it inherits from the
6
+ * host page (text colour, font, size) or is derived from the inherited text
7
+ * colour (borders, muted text), and surfaces stay transparent. The --fpi-*
8
+ * names are internal shorthands, not part of the contract.
9
+ */
10
+
11
+ ._root_ho4ob_11 {
12
+ --fpi-text: var(--fp-color-text, currentColor);
13
+ --fpi-surface: var(--fp-color-surface, transparent);
14
+ --fpi-surface-muted: var(--fp-color-surface-muted, color-mix(in srgb, var(--fpi-text) 5%, transparent));
15
+ --fpi-muted: var(--fp-color-muted, color-mix(in srgb, var(--fpi-text) 68%, transparent));
16
+ --fpi-border: var(--fp-color-border, color-mix(in srgb, var(--fpi-text) 22%, transparent));
17
+ --fpi-accent: var(--fp-color-accent, var(--fpi-text));
18
+ --fpi-danger: var(--fp-color-danger, var(--fpi-text));
19
+ --fpi-success: var(--fp-color-success, var(--fpi-text));
20
+ --fpi-space: var(--fp-spacing, 0.25rem);
21
+ --fpi-radius: var(--fp-radius, 0.375rem);
22
+
23
+ box-sizing: border-box;
24
+ font-family: var(--fp-font-family, inherit);
25
+ font-size: var(--fp-font-size, inherit);
26
+ line-height: 1.5;
27
+ color: var(--fpi-text);
28
+ text-align: start;
29
+ /* Children adapt to the space the host gives, not to the viewport. */
30
+ container-type: inline-size;
31
+ }
32
+
33
+ ._root_ho4ob_11 *,
34
+ ._root_ho4ob_11 *::before,
35
+ ._root_ho4ob_11 *::after {
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ /* Emphasis (rung L2). Inside an overlay the dialog is the frame, so it sets
40
+ --fpi-frame-border/--fpi-frame-shadow to drop the component's own. */
41
+ ._subtle_ho4ob_41 {
42
+ background: transparent;
43
+ }
44
+
45
+ ._framed_ho4ob_45,
46
+ ._elevated_ho4ob_46 {
47
+ background: var(--fpi-surface);
48
+ border: var(--fpi-frame-border, 1px solid var(--fpi-border));
49
+ border-radius: calc(var(--fpi-radius) * 1.5);
50
+ }
51
+
52
+ ._elevated_ho4ob_46 {
53
+ box-shadow: var(
54
+ --fpi-frame-shadow,
55
+ var(--fp-shadow, 0 2px 4px color-mix(in srgb, var(--fpi-text) 6%, transparent),
56
+ 0 8px 24px color-mix(in srgb, var(--fpi-text) 10%, transparent))
57
+ );
58
+ }
59
+
60
+ /* Size (rung L2): scales the type, and with it every em-based measure. */
61
+ ._small_ho4ob_61 {
62
+ font-size: calc(var(--fp-font-size, 1em) * 0.875);
63
+ }
64
+
65
+ ._medium_ho4ob_65 {
66
+ font-size: var(--fp-font-size, inherit);
67
+ }
68
+
69
+ ._large_ho4ob_69 {
70
+ font-size: calc(var(--fp-font-size, 1em) * 1.125);
71
+ }
72
+ /* Shown in place of a component that failed: the same frame, with a
73
+ danger-coloured edge. */
74
+ ._fallback_1rdem_3 {
75
+ margin: 0;
76
+ padding: calc(var(--fpi-space) * 3.5) calc(var(--fpi-space) * 4);
77
+ color: var(--fpi-danger);
78
+ border-color: var(--fpi-danger);
79
+ }
80
+ /* The form's layout. Scoped by CSS Modules; no global selectors; every
81
+ colour, font, spacing and radius comes from the documented --fp-* variables
82
+ (through the shared --fpi-* shorthands), inheriting from the host when unset. */
83
+
84
+ ._form_1clyx_5 {
85
+ display: flex;
86
+ flex-direction: column;
87
+ width: 100%;
88
+ max-width: var(--fp-content-max-width, 32rem);
89
+ }
90
+
91
+ ._comfortable_1clyx_12 {
92
+ --fpi-gap: calc(var(--fpi-space) * 4.5);
93
+ gap: var(--fpi-gap);
94
+ padding: calc(var(--fpi-space) * 6);
95
+ }
96
+
97
+ ._compact_1clyx_18 {
98
+ --fpi-gap: calc(var(--fpi-space) * 3);
99
+ gap: var(--fpi-gap);
100
+ padding: calc(var(--fpi-space) * 4);
101
+ }
102
+
103
+ ._field_1clyx_24 {
104
+ display: flex;
105
+ flex-direction: column;
106
+ gap: calc(var(--fpi-space) * 1.5);
107
+ min-width: 0;
108
+ }
109
+
110
+ /* Variant 'stacked' (default, rung L2): one field per row. */
111
+ ._stacked_1clyx_32 {
112
+ flex-direction: column;
113
+ }
114
+
115
+ /* Variant 'inline' (rung L2): name and email side by side once the form's
116
+ own width allows (a container query, never the viewport); stacked below. */
117
+ ._inline_1clyx_38 {
118
+ flex-flow: row wrap;
119
+ align-items: flex-start;
120
+ }
121
+
122
+ ._inline_1clyx_38 > * {
123
+ flex: 1 1 100%;
124
+ }
125
+
126
+ @container (min-width: 26rem) {
127
+ ._inline_1clyx_38 > ._half_1clyx_48 {
128
+ flex-basis: calc((100% - var(--fpi-gap)) / 2);
129
+ }
130
+ }
131
+
132
+ ._label_1clyx_53 {
133
+ font-size: 0.875em;
134
+ font-weight: 600;
135
+ }
136
+
137
+ ._control_1clyx_58 {
138
+ width: 100%;
139
+ margin: 0;
140
+ padding: calc(var(--fpi-space) * 2.5) calc(var(--fpi-space) * 3);
141
+ font: inherit;
142
+ line-height: 1.4;
143
+ color: inherit;
144
+ background: var(--fpi-surface);
145
+ border: 1px solid var(--fpi-border);
146
+ border-radius: var(--fpi-radius);
147
+ }
148
+
149
+ textarea._control_1clyx_58 {
150
+ min-height: 5.5em;
151
+ resize: vertical;
152
+ }
153
+
154
+ ._control_1clyx_58::placeholder {
155
+ color: var(--fpi-muted);
156
+ }
157
+
158
+ ._control_1clyx_58:hover {
159
+ border-color: var(--fpi-muted);
160
+ }
161
+
162
+ ._control_1clyx_58:focus-visible {
163
+ outline: 2px solid var(--fpi-accent);
164
+ outline-offset: 1px;
165
+ }
166
+
167
+ ._control_1clyx_58[readonly] {
168
+ background: var(--fpi-surface-muted);
169
+ border-style: dashed;
170
+ }
171
+
172
+ ._control_1clyx_58:disabled {
173
+ cursor: not-allowed;
174
+ opacity: 0.7;
175
+ }
176
+
177
+ /* Invalid is also announced (aria-invalid) and spelled out in text. */
178
+ ._invalid_1clyx_99,
179
+ ._invalid_1clyx_99:hover {
180
+ border-color: var(--fpi-danger);
181
+ border-width: 2px;
182
+ }
183
+
184
+ ._error_1clyx_105 {
185
+ margin: 0;
186
+ font-size: 0.8125em;
187
+ color: var(--fpi-danger);
188
+ }
189
+
190
+ ._formError_1clyx_111 {
191
+ margin: 0;
192
+ padding: calc(var(--fpi-space) * 2.5) calc(var(--fpi-space) * 3);
193
+ font-size: 0.875em;
194
+ color: var(--fpi-danger);
195
+ border: 1px solid currentColor;
196
+ border-radius: var(--fpi-radius);
197
+ }
198
+
199
+ ._actions_1clyx_120 {
200
+ display: flex;
201
+ flex-wrap: wrap;
202
+ justify-content: flex-end;
203
+ gap: calc(var(--fpi-space) * 2.5);
204
+ margin-top: var(--fpi-space);
205
+ }
206
+
207
+ ._primary_1clyx_128,
208
+ ._secondary_1clyx_129 {
209
+ padding: calc(var(--fpi-space) * 2.5) calc(var(--fpi-space) * 4.5);
210
+ font: inherit;
211
+ font-weight: 600;
212
+ line-height: 1.25;
213
+ border-radius: var(--fpi-radius);
214
+ cursor: pointer;
215
+ }
216
+
217
+ /* Always explicit, never the browser default: host resets such as Tailwind's
218
+ Preflight make default button backgrounds transparent. Without an accent
219
+ token the primary action is outlined in the text colour. */
220
+ ._primary_1clyx_128 {
221
+ color: var(--fp-color-on-accent, inherit);
222
+ background: var(--fp-color-accent, transparent);
223
+ border: 2px solid var(--fpi-accent);
224
+ }
225
+
226
+ ._secondary_1clyx_129 {
227
+ color: inherit;
228
+ background: transparent;
229
+ border: 1px solid var(--fpi-border);
230
+ }
231
+
232
+ ._primary_1clyx_128:hover:not(:disabled) {
233
+ filter: brightness(0.92);
234
+ }
235
+
236
+ ._secondary_1clyx_129:hover:not(:disabled) {
237
+ background: var(--fpi-surface-muted);
238
+ }
239
+
240
+ ._primary_1clyx_128:focus-visible,
241
+ ._secondary_1clyx_129:focus-visible {
242
+ outline: 2px solid var(--fpi-accent);
243
+ outline-offset: 2px;
244
+ }
245
+
246
+ ._primary_1clyx_128:disabled,
247
+ ._secondary_1clyx_129:disabled {
248
+ cursor: not-allowed;
249
+ opacity: 0.55;
250
+ }
251
+ /* The picker's layout: a group of option rows. Scoped by CSS Modules; no
252
+ global selectors; colours, fonts, spacing and radius from the documented
253
+ --fp-* variables, inheriting from the host when unset. Selection is shown
254
+ by the radio's dot and a thicker outline, never by colour alone. */
255
+
256
+ ._picker_2easv_11 {
257
+ width: 100%;
258
+ min-width: 0;
259
+ max-width: var(--fp-content-max-width, 32rem);
260
+ margin: 0;
261
+ }
262
+
263
+ /* Floated so the legend sits inside the frame rather than on its border. */
264
+ ._legend_2easv_27 {
265
+ float: left;
266
+ width: 100%;
267
+ padding: 0;
268
+ font-size: 1em;
269
+ font-weight: 600;
270
+ }
271
+
272
+ ._legend_2easv_27 ~ * {
273
+ clear: both;
274
+ }
275
+
276
+ ._comfortable_2easv_51 {
277
+ --fpi-gap: calc(var(--fpi-space) * 2.5);
278
+ padding: calc(var(--fpi-space) * 6);
279
+ }
280
+
281
+ ._comfortable_2easv_51 ._legend_2easv_27 {
282
+ margin-bottom: calc(var(--fpi-space) * 4);
283
+ }
284
+
285
+ ._comfortable_2easv_51 ._option_2easv_69 {
286
+ padding: calc(var(--fpi-space) * 3.5) calc(var(--fpi-space) * 4);
287
+ }
288
+
289
+ ._compact_2easv_77 {
290
+ --fpi-gap: calc(var(--fpi-space) * 1.5);
291
+ padding: calc(var(--fpi-space) * 4);
292
+ }
293
+
294
+ ._compact_2easv_77 ._legend_2easv_27 {
295
+ margin-bottom: calc(var(--fpi-space) * 2.5);
296
+ }
297
+
298
+ ._compact_2easv_77 ._option_2easv_69 {
299
+ padding: calc(var(--fpi-space) * 2) calc(var(--fpi-space) * 3);
300
+ }
301
+
302
+ ._options_2easv_103 {
303
+ display: grid;
304
+ grid-template-columns: minmax(0, 1fr);
305
+ gap: var(--fpi-gap);
306
+ }
307
+
308
+ /* Variant 'list' (default, rung L2): one option per row, at any width. */
309
+ ._list_2easv_117 ._options_2easv_103 {
310
+ grid-auto-flow: row;
311
+ }
312
+
313
+ /* Variant 'grid': as many columns as the picker's own width allows. A
314
+ container query, so it follows the space the host gives, not the viewport. */
315
+ @container (min-width: 28rem) {
316
+ ._grid_2easv_131 ._options_2easv_103 {
317
+ grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
318
+ }
319
+ }
320
+
321
+ ._option_2easv_69 {
322
+ display: flex;
323
+ align-items: flex-start;
324
+ gap: calc(var(--fpi-space) * 3);
325
+ background: var(--fpi-surface);
326
+ border: 1px solid var(--fpi-border);
327
+ border-radius: var(--fpi-radius);
328
+ cursor: pointer;
329
+ }
330
+
331
+ ._option_2easv_69:hover {
332
+ border-color: var(--fpi-muted);
333
+ }
334
+
335
+ ._selected_2easv_169,
336
+ ._selected_2easv_169:hover {
337
+ border-color: var(--fpi-accent);
338
+ box-shadow: inset 0 0 0 1px var(--fpi-accent);
339
+ }
340
+
341
+ ._disabled_2easv_181,
342
+ ._disabled_2easv_181:hover {
343
+ cursor: not-allowed;
344
+ color: var(--fpi-muted);
345
+ background: var(--fpi-surface-muted);
346
+ border-color: var(--fpi-border);
347
+ border-style: dashed;
348
+ }
349
+
350
+ ._input_2easv_199 {
351
+ flex: none;
352
+ width: 1em;
353
+ height: 1em;
354
+ margin: 0.2em 0 0;
355
+ accent-color: var(--fp-color-accent, auto);
356
+ cursor: inherit;
357
+ }
358
+
359
+ ._input_2easv_199:focus-visible {
360
+ outline: 2px solid var(--fpi-accent);
361
+ outline-offset: 2px;
362
+ }
363
+
364
+ ._text_2easv_227 {
365
+ display: flex;
366
+ flex-direction: column;
367
+ gap: calc(var(--fpi-space) * 0.5);
368
+ min-width: 0;
369
+ }
370
+
371
+ ._label_2easv_241 {
372
+ font-weight: 500;
373
+ line-height: 1.35;
374
+ }
375
+
376
+ ._selected_2easv_169 ._label_2easv_241 {
377
+ font-weight: 600;
378
+ }
379
+
380
+ ._description_2easv_259 {
381
+ font-size: 0.875em;
382
+ font-weight: 400;
383
+ color: var(--fpi-muted);
384
+ }
385
+
386
+ ._empty_2easv_271 p {
387
+ margin: 0;
388
+ color: var(--fpi-muted);
389
+ }
390
+ /* The timeline's layout. Scoped by CSS Modules; no global selectors;
391
+ colours, fonts, spacing and radius from the documented --fp-* variables,
392
+ inheriting from the host when unset. Status is
393
+ carried by the marker's shape and the text label; colour only reinforces
394
+ it. No fixed widths: the timeline fills its container. */
395
+
396
+ ._timeline_plcgb_13 {
397
+ width: 100%;
398
+ min-width: 0;
399
+ overflow-wrap: anywhere;
400
+ }
401
+
402
+ ._heading_plcgb_25 {
403
+ margin: 0;
404
+ font-size: 1em;
405
+ font-weight: 600;
406
+ color: inherit;
407
+ }
408
+
409
+ ._message_plcgb_39 p,
410
+ p._message_plcgb_39 {
411
+ margin: 0;
412
+ color: var(--fpi-muted);
413
+ }
414
+
415
+ ._list_plcgb_51 {
416
+ list-style: none;
417
+ margin: 0;
418
+ padding: 0;
419
+ }
420
+
421
+ ._item_plcgb_63 {
422
+ position: relative;
423
+ display: flex;
424
+ gap: calc(var(--fpi-space) * 3.5);
425
+ }
426
+
427
+ /* The connecting line, drawn between markers. */
428
+ ._item_plcgb_63:not(:last-child)::before {
429
+ content: '';
430
+ position: absolute;
431
+ left: calc(var(--fpi-marker) / 2 - 1px);
432
+ top: var(--fpi-marker);
433
+ bottom: 0;
434
+ border-left: 2px solid var(--fpi-border);
435
+ }
436
+
437
+ ._marker_plcgb_95 {
438
+ position: relative;
439
+ flex: none;
440
+ display: inline-flex;
441
+ align-items: center;
442
+ justify-content: center;
443
+ width: var(--fpi-marker);
444
+ height: var(--fpi-marker);
445
+ font-size: 0.75em;
446
+ font-weight: 700;
447
+ line-height: 1;
448
+ color: var(--fpi-muted);
449
+ background: var(--fpi-surface);
450
+ border: 2px solid var(--fpi-muted);
451
+ border-radius: 50%;
452
+ }
453
+
454
+ ._completed_plcgb_129 ._marker_plcgb_95 {
455
+ color: var(--fpi-success);
456
+ background: var(--fpi-surface);
457
+ border-color: var(--fpi-success);
458
+ }
459
+
460
+ ._completed_plcgb_129 ._status_plcgb_141 {
461
+ color: var(--fpi-success);
462
+ }
463
+
464
+ ._current_plcgb_149 ._marker_plcgb_95 {
465
+ color: var(--fpi-accent);
466
+ background: var(--fpi-surface);
467
+ border-color: var(--fpi-accent);
468
+ border-width: 3px;
469
+ }
470
+
471
+ ._current_plcgb_149 ._status_plcgb_141 {
472
+ color: var(--fpi-accent);
473
+ }
474
+
475
+ ._pending_plcgb_171 ._marker_plcgb_95 {
476
+ border-style: dashed;
477
+ }
478
+
479
+ ._error_plcgb_179 ._marker_plcgb_95 {
480
+ color: var(--fpi-danger);
481
+ background: var(--fpi-surface);
482
+ border-color: var(--fpi-danger);
483
+ }
484
+
485
+ ._error_plcgb_179 ._status_plcgb_141 {
486
+ color: var(--fpi-danger);
487
+ }
488
+
489
+ ._body_plcgb_199 {
490
+ flex: 1;
491
+ min-width: 0;
492
+ display: flex;
493
+ flex-direction: column;
494
+ gap: calc(var(--fpi-space) * 0.5);
495
+ }
496
+
497
+ ._title_plcgb_215 {
498
+ margin: 0;
499
+ padding: 0;
500
+ font: inherit;
501
+ font-weight: 600;
502
+ color: inherit;
503
+ text-align: start;
504
+ background: none;
505
+ border: 0;
506
+ }
507
+
508
+ button._title_plcgb_215 {
509
+ cursor: pointer;
510
+ text-decoration: underline;
511
+ text-decoration-color: var(--fpi-border);
512
+ text-decoration-thickness: 1px;
513
+ text-underline-offset: 0.2em;
514
+ }
515
+
516
+ button._title_plcgb_215:hover {
517
+ color: var(--fpi-accent);
518
+ text-decoration-color: currentColor;
519
+ }
520
+
521
+ button._title_plcgb_215:focus-visible,
522
+ ._link_plcgb_265:focus-visible {
523
+ outline: 2px solid var(--fpi-accent);
524
+ outline-offset: 2px;
525
+ border-radius: calc(var(--fpi-radius) / 3);
526
+ }
527
+
528
+ /* "View details": a navigation request, styled as a text link. */
529
+ ._link_plcgb_265 {
530
+ align-self: flex-start;
531
+ margin-top: var(--fpi-space);
532
+ padding: 0;
533
+ font: inherit;
534
+ font-size: 0.875em;
535
+ font-weight: 500;
536
+ color: var(--fpi-accent);
537
+ background: none;
538
+ border: 0;
539
+ cursor: pointer;
540
+ text-decoration: underline;
541
+ text-underline-offset: 0.2em;
542
+ }
543
+
544
+ ._link_plcgb_265:hover {
545
+ filter: brightness(0.85);
546
+ }
547
+
548
+ ._selected_plcgb_317 button._title_plcgb_215 {
549
+ color: var(--fpi-accent);
550
+ text-decoration-color: currentColor;
551
+ text-decoration-thickness: 2px;
552
+ }
553
+
554
+ ._selected_plcgb_317 ._body_plcgb_199 {
555
+ padding-left: calc(var(--fpi-space) * 2.5);
556
+ border-left: 3px solid var(--fpi-accent);
557
+ }
558
+
559
+ ._meta_plcgb_339 {
560
+ margin: 0;
561
+ font-size: 0.875em;
562
+ color: var(--fpi-muted);
563
+ }
564
+
565
+ ._status_plcgb_141 {
566
+ font-weight: 600;
567
+ }
568
+
569
+ ._description_plcgb_359 {
570
+ margin: 0.125rem 0 0;
571
+ color: inherit;
572
+ }
573
+
574
+ ._metadata_plcgb_369 {
575
+ display: flex;
576
+ flex-wrap: wrap;
577
+ gap: var(--fpi-space) calc(var(--fpi-space) * 4);
578
+ margin: var(--fpi-space) 0 0;
579
+ font-size: 0.875em;
580
+ color: var(--fpi-muted);
581
+ }
582
+
583
+ ._metadataEntry_plcgb_387 {
584
+ display: flex;
585
+ gap: calc(var(--fpi-space) * 1.5);
586
+ }
587
+
588
+ ._metadataEntry_plcgb_387 dt {
589
+ font-weight: 600;
590
+ }
591
+
592
+ ._metadataEntry_plcgb_387 dt::after {
593
+ content: ':';
594
+ }
595
+
596
+ ._metadataEntry_plcgb_387 dd {
597
+ margin: 0;
598
+ color: inherit;
599
+ }
600
+
601
+ ._comfortable_plcgb_423 {
602
+ --fpi-marker: 1.75em;
603
+ padding: calc(var(--fpi-space) * 6);
604
+ }
605
+
606
+ ._comfortable_plcgb_423 ._heading_plcgb_25 {
607
+ margin-bottom: calc(var(--fpi-space) * 4);
608
+ }
609
+
610
+ ._comfortable_plcgb_423 ._item_plcgb_63 {
611
+ padding-bottom: calc(var(--fpi-space) * 5);
612
+ }
613
+
614
+ ._compact_plcgb_449 {
615
+ --fpi-marker: 1.25em;
616
+ padding: calc(var(--fpi-space) * 4);
617
+ }
618
+
619
+ ._compact_plcgb_449 ._heading_plcgb_25 {
620
+ margin-bottom: calc(var(--fpi-space) * 2);
621
+ }
622
+
623
+ ._compact_plcgb_449 ._item_plcgb_63 {
624
+ padding-bottom: calc(var(--fpi-space) * 3);
625
+ }
626
+
627
+ /* In a narrow container the metadata lists stack, one entry per line. */
628
+ @container (max-width: 22rem) {
629
+ ._metadata_plcgb_369 {
630
+ flex-direction: column;
631
+ }
632
+ }
633
+ /* The avatar's layout: the video stage, captions and controls. Scoped by CSS
634
+ Modules; no global selectors; colours, fonts, spacing and radius from the
635
+ documented --fp-* variables, inheriting from the host when unset. */
636
+
637
+ ._avatar_1ugh0_9 {
638
+ display: flex;
639
+ flex-direction: column;
640
+ width: 100%;
641
+ min-width: 0;
642
+ max-width: var(--fp-content-max-width, 32rem);
643
+ }
644
+
645
+ ._comfortable_1ugh0_25 {
646
+ gap: calc(var(--fpi-space) * 4);
647
+ padding: calc(var(--fpi-space) * 6);
648
+ }
649
+
650
+ ._compact_1ugh0_35 {
651
+ gap: calc(var(--fpi-space) * 2.5);
652
+ padding: calc(var(--fpi-space) * 4);
653
+ }
654
+
655
+ /* The picture fills the width the host gives; portrait, like the kiosk. */
656
+ ._stage_1ugh0_47 {
657
+ position: relative;
658
+ width: 100%;
659
+ aspect-ratio: 3 / 4;
660
+ overflow: hidden;
661
+ background: var(--fpi-surface-muted);
662
+ border-radius: var(--fpi-radius);
663
+ }
664
+
665
+ /* Wider containers get a less tall stage. */
666
+ @container (min-width: 36rem) {
667
+ ._stage_1ugh0_47 {
668
+ aspect-ratio: 4 / 3;
669
+ }
670
+ }
671
+
672
+ ._video_1ugh0_79 {
673
+ display: block;
674
+ width: 100%;
675
+ height: 100%;
676
+ object-fit: cover;
677
+ }
678
+
679
+ /* The portrait (or initials) covers the stage whenever nothing is streaming. */
680
+ ._portrait_1ugh0_95 {
681
+ position: absolute;
682
+ inset: 0;
683
+ width: 100%;
684
+ height: 100%;
685
+ object-fit: cover;
686
+ }
687
+
688
+ ._initials_1ugh0_111 {
689
+ position: absolute;
690
+ inset: 0;
691
+ display: grid;
692
+ place-items: center;
693
+ font-size: 3em;
694
+ font-weight: 700;
695
+ color: var(--fpi-muted);
696
+ }
697
+
698
+ ._overlay_1ugh0_131 {
699
+ position: absolute;
700
+ inset: auto 0 0;
701
+ margin: 0;
702
+ padding: calc(var(--fpi-space) * 3) calc(var(--fpi-space) * 4);
703
+ font-weight: 600;
704
+ color: var(--fpi-text);
705
+ background: var(--fpi-surface);
706
+ border-top: 1px solid var(--fpi-border);
707
+ }
708
+
709
+ ._problem_1ugh0_153 {
710
+ margin: 0;
711
+ font-size: 0.875em;
712
+ color: var(--fpi-danger);
713
+ }
714
+
715
+ ._captions_1ugh0_165 {
716
+ display: flex;
717
+ flex-direction: column;
718
+ gap: calc(var(--fpi-space) * 1.5);
719
+ font-size: 0.9375em;
720
+ }
721
+
722
+ ._captions_1ugh0_165 p {
723
+ margin: 0;
724
+ }
725
+
726
+ ._speaker_1ugh0_187 {
727
+ font-weight: 600;
728
+ }
729
+
730
+ ._user_1ugh0_195 {
731
+ color: var(--fpi-muted);
732
+ }
733
+
734
+ ._assistant_1ugh0_203 {
735
+ color: inherit;
736
+ }
737
+
738
+ ._controls_1ugh0_211 {
739
+ display: flex;
740
+ flex-wrap: wrap;
741
+ justify-content: center;
742
+ gap: calc(var(--fpi-space) * 2.5);
743
+ }
744
+
745
+ ._primary_1ugh0_225,
746
+ ._secondary_1ugh0_227,
747
+ ._danger_1ugh0_229 {
748
+ padding: calc(var(--fpi-space) * 2.5) calc(var(--fpi-space) * 4.5);
749
+ font: inherit;
750
+ font-weight: 600;
751
+ line-height: 1.25;
752
+ border-radius: var(--fpi-radius);
753
+ cursor: pointer;
754
+ }
755
+
756
+ /* Explicit backgrounds: host resets (e.g. Tailwind Preflight) clear button defaults. */
757
+ ._primary_1ugh0_225 {
758
+ color: var(--fp-color-on-accent, inherit);
759
+ background: var(--fp-color-accent, transparent);
760
+ border: 2px solid var(--fpi-accent);
761
+ }
762
+
763
+ ._secondary_1ugh0_227 {
764
+ color: inherit;
765
+ background: transparent;
766
+ border: 1px solid var(--fpi-border);
767
+ }
768
+
769
+ ._danger_1ugh0_229 {
770
+ color: var(--fpi-danger);
771
+ background: transparent;
772
+ border: 2px solid var(--fpi-danger);
773
+ }
774
+
775
+ ._primary_1ugh0_225:focus-visible,
776
+ ._secondary_1ugh0_227:focus-visible,
777
+ ._danger_1ugh0_229:focus-visible {
778
+ outline: 2px solid var(--fpi-accent);
779
+ outline-offset: 2px;
780
+ }
781
+
782
+ ._primary_1ugh0_225:disabled,
783
+ ._secondary_1ugh0_227:disabled {
784
+ cursor: not-allowed;
785
+ opacity: 0.55;
786
+ }
787
+
788
+ /* The user's avatars to choose from (only when the host names none). */
789
+ ._choices_1ugh0_313 {
790
+ display: flex;
791
+ flex-wrap: wrap;
792
+ justify-content: center;
793
+ gap: calc(var(--fpi-space) * 2);
794
+ }
795
+
796
+ ._choice_1ugh0_313 {
797
+ display: inline-flex;
798
+ align-items: center;
799
+ gap: calc(var(--fpi-space) * 2);
800
+ padding: var(--fpi-space) calc(var(--fpi-space) * 3) var(--fpi-space) var(--fpi-space);
801
+ font: inherit;
802
+ font-size: 0.875em;
803
+ color: inherit;
804
+ background: transparent;
805
+ border: 1px solid var(--fpi-border);
806
+ border-radius: 999px;
807
+ cursor: pointer;
808
+ }
809
+
810
+ ._choice_1ugh0_313[aria-checked="true"] {
811
+ font-weight: 600;
812
+ border-color: var(--fpi-accent);
813
+ box-shadow: inset 0 0 0 1px var(--fpi-accent);
814
+ }
815
+
816
+ ._choice_1ugh0_313:focus-visible {
817
+ outline: 2px solid var(--fpi-accent);
818
+ outline-offset: 2px;
819
+ }
820
+
821
+ ._choice_1ugh0_313:disabled {
822
+ cursor: not-allowed;
823
+ opacity: 0.55;
824
+ }
825
+
826
+ ._thumb_1ugh0_387 {
827
+ display: inline-grid;
828
+ place-items: center;
829
+ width: 2em;
830
+ height: 2em;
831
+ object-fit: cover;
832
+ font-weight: 700;
833
+ color: var(--fpi-muted);
834
+ background: var(--fpi-surface-muted);
835
+ border-radius: 50%;
836
+ }
837
+ /* Display-mode containers. Scoped; no global selectors. Both lift the
838
+ components' default width limit (--fp-content-max-width) so the component
839
+ fills the space the host gives it, and are size containers so components
840
+ adapt to them rather than to the viewport. */
841
+
842
+ ._page_1q0su_11 {
843
+ display: block;
844
+ width: 100%;
845
+ container-type: inline-size;
846
+ --fp-content-max-width: none;
847
+ }
848
+
849
+ /* The dialog is the frame; components inside drop their own border and
850
+ shadow so there is no frame within a frame. Its surface falls back to the
851
+ system Canvas colours (what a native dialog uses), never a fixed colour. */
852
+ ._overlay_1q0su_31 {
853
+ max-height: calc(100% - 2rem);
854
+ padding: 0;
855
+ overflow: auto;
856
+ color: var(--fp-color-text, CanvasText);
857
+ background: var(--fp-color-surface, Canvas);
858
+ border: 0;
859
+ /* The dimmed backdrop already sets it apart; a host may add --fp-shadow. */
860
+ box-shadow: var(--fp-shadow, none);
861
+ container-type: inline-size;
862
+ --fp-content-max-width: none;
863
+ --fpi-frame-border: 0;
864
+ --fpi-frame-shadow: none;
865
+ }
866
+
867
+ /* A dimmer is always dark: the light scheme's CanvasText is the system's
868
+ near-black, whatever scheme the host has switched the overlay to. */
869
+ ._overlay_1q0su_31::backdrop {
870
+ color-scheme: light;
871
+ background: color-mix(in srgb, CanvasText 45%, transparent);
872
+ }
873
+
874
+ ._modal_1q0su_75 {
875
+ width: min(36rem, calc(100% - 2rem));
876
+ border-radius: calc(var(--fp-radius, 0.375rem) * 1.5);
877
+ }
878
+
879
+ /* A side drawer: full height at the inline end of the viewport. */
880
+ ._drawer_1q0su_87 {
881
+ width: min(28rem, 100%);
882
+ height: 100%;
883
+ max-height: none;
884
+ margin-block: 0;
885
+ margin-inline: auto 0;
886
+ border-radius: 0;
887
+ }