ui-soxo-bootstrap-core 2.6.1-dev.3 → 2.6.1-dev.31

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 (68) hide show
  1. package/core/components/extra-info/extra-info-details.js +2 -2
  2. package/core/components/index.js +2 -11
  3. package/core/components/landing-api/landing-api.js +216 -18
  4. package/core/components/landing-api/landing-api.scss +22 -0
  5. package/core/components/license-management/license-alert.js +97 -0
  6. package/core/lib/Store.js +8 -4
  7. package/core/lib/components/global-header/global-header.js +217 -242
  8. package/core/lib/components/index.js +2 -2
  9. package/core/lib/components/sidemenu/sidemenu.js +19 -13
  10. package/core/lib/components/sidemenu/sidemenu.scss +1 -1
  11. package/core/lib/elements/basic/country-phone-input/country-phone-input.js +14 -9
  12. package/core/lib/elements/basic/dragabble-wrapper/draggable-wrapper.js +1 -1
  13. package/core/lib/elements/basic/menu-tree/menu-tree.js +26 -13
  14. package/core/lib/models/forms/components/form-creator/form-creator.js +525 -468
  15. package/core/lib/models/forms/components/form-creator/form-creator.scss +30 -26
  16. package/core/lib/models/menus/components/menu-list/menu-list.js +424 -467
  17. package/core/lib/models/process/components/process-dashboard/process-dashboard.js +469 -3
  18. package/core/lib/models/process/components/process-dashboard/process-dashboard.scss +4 -0
  19. package/core/lib/modules/generic/generic-list/ExportReactCSV.js +28 -2
  20. package/core/lib/pages/change-password/change-password.js +17 -24
  21. package/core/lib/pages/change-password/change-password.scss +45 -48
  22. package/core/lib/pages/login/commnication-mode-selection.js +2 -2
  23. package/core/lib/pages/login/login.js +53 -64
  24. package/core/lib/pages/login/login.scss +9 -0
  25. package/core/lib/pages/login/reset-password.js +17 -17
  26. package/core/lib/pages/login/reset-password.scss +10 -1
  27. package/core/lib/pages/profile/themes.json +4 -4
  28. package/core/lib/utils/api/api.utils.js +53 -45
  29. package/core/lib/utils/common/common.utils.js +49 -35
  30. package/core/lib/utils/generic/generic.utils.js +2 -1
  31. package/core/lib/utils/http/http.utils.js +33 -4
  32. package/core/lib/utils/index.js +4 -1
  33. package/core/models/base/base.js +7 -3
  34. package/core/models/core-scripts/core-scripts.js +147 -126
  35. package/core/models/doctor/components/doctor-add/doctor-add.js +9 -4
  36. package/core/models/menus/components/menu-add/menu-add.js +1 -1
  37. package/core/models/menus/components/menu-lists/menu-lists.js +53 -54
  38. package/core/models/menus/menus.js +49 -2
  39. package/core/models/roles/components/role-add/role-add.js +92 -59
  40. package/core/models/roles/components/role-list/role-list.js +1 -1
  41. package/core/models/staff/components/staff-add/staff-add.js +20 -32
  42. package/core/models/users/components/assign-role/assign-role.js +145 -50
  43. package/core/models/users/components/assign-role/assign-role.scss +209 -45
  44. package/core/models/users/components/assign-role/avatar-props.js +45 -0
  45. package/core/models/users/components/user-add/user-add.js +46 -55
  46. package/core/models/users/components/user-add/user-edit.js +25 -4
  47. package/core/models/users/users.js +9 -1
  48. package/core/modules/dashboard/components/dashboard-card/menu-dashboard-card.js +1 -1
  49. package/core/modules/reporting/components/reporting-dashboard/README.md +316 -0
  50. package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.js +174 -0
  51. package/core/modules/reporting/components/reporting-dashboard/adavance-search/advance-search.scss +76 -0
  52. package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.js +90 -0
  53. package/core/modules/reporting/components/reporting-dashboard/display-columns/build-display-columns.test.js +74 -0
  54. package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.js +448 -0
  55. package/core/modules/reporting/components/reporting-dashboard/display-columns/display-cell-renderer.test.js +199 -0
  56. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.js +195 -822
  57. package/core/modules/reporting/components/reporting-dashboard/reporting-dashboard.scss +43 -0
  58. package/core/modules/reporting/components/reporting-dashboard/reporting-table.js +517 -0
  59. package/core/modules/steps/action-buttons.js +30 -16
  60. package/core/modules/steps/action-buttons.scss +55 -9
  61. package/core/modules/steps/chat-assistant.js +141 -0
  62. package/core/modules/steps/openai-realtime.js +275 -0
  63. package/core/modules/steps/readme.md +167 -0
  64. package/core/modules/steps/steps.js +1286 -60
  65. package/core/modules/steps/steps.scss +703 -86
  66. package/core/modules/steps/timeline.js +21 -19
  67. package/core/modules/steps/voice-navigation.js +709 -0
  68. package/package.json +2 -1
@@ -1,159 +1,776 @@
1
- .timeline-card .ant-card-body {
2
- // padding: 20px;
3
- border: none;
4
- min-height: 400px;
5
- // position: fixed; /* For positioning the arrow */
1
+ /* ── Page shell ─────────────────────────────────────────── */
2
+
3
+ .process-steps-page {
4
+ display: flex;
5
+ flex-direction: column;
6
+ height: 100%;
7
+ min-height: 0;
8
+ width: 100%;
9
+ max-width: 100%;
10
+ overflow: hidden;
11
+ box-sizing: border-box;
6
12
  }
7
13
 
8
- .timeline-sidebar {
14
+ .steps-viewport {
9
15
  display: flex;
10
16
  flex-direction: column;
11
- gap: 20px;
12
- transition: all 0.3s ease;
17
+ flex: 1 1 auto;
18
+ width: 100%;
19
+ max-width: 100%;
20
+ height: 100%;
21
+ min-height: 0;
22
+ min-width: 0;
23
+ overflow: hidden;
24
+ box-sizing: border-box;
13
25
  }
14
26
 
15
- .timeline-step {
27
+ .steps-main-card {
16
28
  display: flex;
17
- cursor: pointer;
29
+ flex: 1 1 auto;
30
+ width: 100%;
31
+ max-width: 100%;
32
+ height: 100%;
33
+ min-height: 0;
34
+ min-width: 0;
35
+ overflow: hidden;
36
+ box-sizing: border-box;
37
+
38
+ .ant-card-body {
39
+ display: flex;
40
+ flex-direction: column;
41
+ flex: 1 1 auto;
42
+ min-height: 0;
43
+ min-width: 0;
44
+ width: 100%;
45
+ padding: 0;
46
+ background: #ffffff;
47
+ overflow: hidden;
48
+ }
18
49
  }
19
50
 
20
- .timeline-step.active .step-number {
21
- background: #3b82f6;
22
- color: white;
51
+ /* ── Patient info bar ───────────────────────────────────── */
52
+
53
+ .steps-patient-bar {
54
+ flex: 0 0 auto;
55
+ padding: 0;
56
+ background: #f8fbff;
57
+ border-bottom: 1px solid #e8eef8;
58
+ overflow-x: auto;
59
+ overflow-y: hidden;
60
+ scrollbar-width: none;
61
+ }
62
+
63
+ .steps-patient-bar::-webkit-scrollbar {
64
+ display: none;
23
65
  }
24
66
 
25
- .timeline-step.completed .step-number {
26
- background: #22c55e;
27
- color: white;
67
+ /* Transform GuestInfoComponent into a single-row horizontal strip */
68
+
69
+ .steps-patient-bar .guest-info {
70
+ margin: 0 !important;
71
+ border: none !important;
72
+ box-shadow: none !important;
73
+ background: transparent !important;
74
+ border-radius: 0 !important;
75
+ width: 100%;
28
76
  }
29
77
 
30
- .step-marker {
78
+ .steps-patient-bar .guest-info > .ant-card-body,
79
+ .steps-patient-bar .guest-info > div > .ant-card-body,
80
+ .steps-patient-bar .guest-info > div {
81
+ padding: 0 !important;
82
+ }
83
+
84
+ .steps-patient-bar .guest-info .ant-row {
85
+ display: flex !important;
86
+ flex-direction: row !important;
87
+ flex-wrap: nowrap !important;
88
+ margin: 0 !important;
89
+ gap: 0 !important;
90
+ row-gap: 0 !important;
91
+ align-items: stretch !important;
92
+ width: max-content !important;
93
+ min-width: 100% !important;
94
+ }
95
+
96
+ .steps-patient-bar .guest-info .ant-row > [class*='ant-col'] {
97
+ flex: 0 0 auto !important;
98
+ max-width: none !important;
99
+ width: auto !important;
100
+ padding: 0 !important;
101
+ }
102
+
103
+ .steps-patient-bar .guest-info .information {
104
+ display: flex !important;
105
+ flex-direction: column !important;
106
+ justify-content: center !important;
107
+ padding: 6px 16px !important;
108
+ border: none !important;
109
+ border-radius: 0 !important;
110
+ background: transparent !important;
111
+ height: 100% !important;
112
+ min-height: 40px !important;
113
+ box-shadow: none !important;
114
+ border-right: 1px solid #dde5f0 !important;
115
+ white-space: nowrap !important;
116
+ }
117
+
118
+ .steps-patient-bar .guest-info .ant-row > [class*='ant-col']:first-child .information {
119
+ padding-left: 16px !important;
120
+ }
121
+
122
+ .steps-patient-bar .guest-info .ant-row > [class*='ant-col']:last-child .information {
123
+ border-right: none !important;
124
+ }
125
+
126
+ /* Label */
127
+ .steps-patient-bar .guest-info .information label,
128
+ .steps-patient-bar .guest-info .information .label,
129
+ .steps-patient-bar .guest-info .information small,
130
+ .steps-patient-bar .guest-info .information > span:first-child {
131
+ font-size: 10px !important;
132
+ font-weight: 600 !important;
133
+ text-transform: uppercase !important;
134
+ letter-spacing: 0.07em !important;
135
+ color: #9eafc2 !important;
136
+ line-height: 1 !important;
137
+ margin: 0 0 3px !important;
138
+ display: block !important;
139
+ }
140
+
141
+ /* Value */
142
+ .steps-patient-bar .guest-info .information strong,
143
+ .steps-patient-bar .guest-info .information h4,
144
+ .steps-patient-bar .guest-info .information h5,
145
+ .steps-patient-bar .guest-info .information .value,
146
+ .steps-patient-bar .guest-info .information > span:last-child,
147
+ .steps-patient-bar .guest-info .information p {
148
+ font-size: 13px !important;
149
+ font-weight: 700 !important;
150
+ color: #1e293b !important;
151
+ margin: 0 !important;
152
+ line-height: 1.3 !important;
153
+ white-space: nowrap !important;
154
+ }
155
+
156
+ /* ── Top bar (breadcrumbs + nav actions) ────────────────── */
157
+
158
+ .steps-top-bar {
159
+ flex: 0 0 auto;
31
160
  display: flex;
32
- flex-direction: column;
33
161
  align-items: center;
34
- margin-right: 14px;
162
+ gap: 8px;
163
+ padding: 6px 12px;
164
+ border-bottom: 1px solid #e8eef8;
165
+ background: #f8fbff;
166
+ min-height: 50px;
167
+ width: 100%;
168
+ max-width: 100%;
169
+ min-width: 0;
170
+ box-sizing: border-box;
171
+ overflow: hidden;
35
172
  }
36
173
 
37
- .step-number {
38
- width: 28px;
39
- height: 28px;
40
- border-radius: 50%;
41
- background: #d9d9d9;
174
+ .steps-breadcrumb-strip {
175
+ flex: 1 1 auto;
176
+ min-width: 0;
42
177
  display: flex;
43
178
  align-items: center;
44
- justify-content: center;
179
+ gap: 6px;
180
+ overflow-x: auto;
181
+ overflow-y: hidden;
182
+ white-space: nowrap;
183
+ scrollbar-width: thin;
184
+ scrollbar-color: #d0dff5 transparent;
185
+ padding-bottom: 2px;
186
+ }
187
+
188
+ .steps-nav-actions {
189
+ flex: 0 0 auto;
190
+ display: flex;
191
+ align-items: center;
192
+ gap: 6px;
193
+ }
194
+
195
+ .steps-nav-actions .ant-btn {
196
+ min-height: 34px;
197
+ border-radius: 8px;
198
+ padding: 0 14px;
199
+ font-size: 13px;
45
200
  font-weight: 600;
201
+ touch-action: manipulation;
202
+ -webkit-tap-highlight-color: transparent;
203
+ transition: all 0.15s ease;
204
+ white-space: nowrap;
205
+ }
206
+
207
+ .steps-nav-actions .ant-btn:active {
208
+ transform: scale(0.97);
209
+ }
210
+
211
+ .steps-breadcrumb-strip::-webkit-scrollbar {
212
+ height: 3px;
46
213
  }
47
214
 
48
- .vertical-line {
49
- width: 2px;
215
+ .steps-breadcrumb-strip::-webkit-scrollbar-track {
216
+ background: transparent;
217
+ }
218
+
219
+ .steps-breadcrumb-strip::-webkit-scrollbar-thumb {
220
+ background: #d0dff5;
221
+ border-radius: 4px;
222
+ }
223
+
224
+ .steps-breadcrumb-item {
225
+ display: inline-flex;
226
+ align-items: center;
227
+ gap: 7px;
228
+ border: 1.5px solid #dce6f5;
229
+ background: #f8fbff;
230
+ border-radius: 999px;
231
+ padding: 6px 14px;
232
+ cursor: pointer;
233
+ transition: all 0.18s ease;
234
+ color: #475569;
235
+ font-size: 12px;
236
+ font-weight: 500;
237
+ white-space: nowrap;
238
+ min-height: 34px;
239
+ touch-action: manipulation;
240
+ -webkit-tap-highlight-color: transparent;
241
+ }
242
+
243
+ .steps-breadcrumb-item:hover {
244
+ background: #eef5ff;
245
+ border-color: #c8d9f6;
246
+ color: #1d4ed8;
247
+ }
248
+
249
+ .steps-breadcrumb-item:active {
250
+ transform: scale(0.96);
251
+ }
252
+
253
+ .steps-breadcrumb-item.active {
254
+ background: #1e3a8a;
255
+ border-color: #1e3a8a;
256
+ color: #ffffff;
257
+ font-weight: 600;
258
+ }
259
+
260
+ .steps-breadcrumb-item.completed {
261
+ border-color: #86efac;
262
+ background: #f0fdf4;
263
+ color: #15803d;
264
+ }
265
+
266
+ .steps-breadcrumb-item.completed .steps-breadcrumb-index {
267
+ background: #16a34a;
268
+ color: #ffffff;
269
+ }
270
+
271
+ .steps-breadcrumb-item.active .steps-breadcrumb-index {
272
+ background: rgba(255, 255, 255, 0.22);
273
+ color: #ffffff;
274
+ }
275
+
276
+ .steps-breadcrumb-index {
277
+ width: 20px;
50
278
  height: 20px;
51
- background: #d9d9d9;
279
+ border-radius: 50%;
280
+ display: inline-flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ font-size: 11px;
284
+ font-weight: 700;
285
+ background: #e2e8f4;
286
+ color: #1e293b;
287
+ flex: 0 0 auto;
288
+ }
289
+
290
+ .steps-breadcrumb-label {
291
+ font-size: 12px;
292
+ font-weight: 600;
52
293
  }
53
294
 
54
- .step-info {
295
+ .steps-breadcrumb-empty {
296
+ color: #64748b;
297
+ font-size: 12px;
298
+ }
299
+
300
+ /* ── Content area ───────────────────────────────────────── */
301
+
302
+ .steps-content-panel {
303
+ flex: 1 1 auto;
304
+ min-height: 0;
55
305
  display: flex;
56
306
  flex-direction: column;
57
- justify-content: center;
307
+ overflow: hidden;
58
308
  }
59
309
 
60
- .step-title {
61
- font-size: 13px;
62
- font-weight: 500;
310
+ .steps-stage-body {
311
+ flex: 1 1 auto;
312
+ min-height: 0;
313
+ display: flex;
314
+ flex-direction: column;
315
+ overflow: hidden;
316
+ padding: 10px 14px;
317
+ box-sizing: border-box;
318
+ position: relative;
63
319
  }
64
320
 
65
- .step-main {
66
- font-size: 15px;
67
- font-weight: 600;
321
+ .steps-stage-body.is-swipe-enabled {
322
+ touch-action: pan-y;
68
323
  }
69
324
 
70
- .toggle-arrow {
325
+ /* ── Touch-device floating nav arrows ───────────────────── */
326
+
327
+ .steps-touch-nav {
71
328
  position: absolute;
72
329
  top: 50%;
73
- right: -12px; /* Position it just outside the card body padding */
74
- transform: translateY(-50%);
75
- width: 24px;
76
- height: 24px;
77
- background: #fff;
78
- border: 1px solid #f0f0f0;
79
- border-radius: 50%;
80
- display: flex;
330
+ z-index: 6;
331
+ width: 48px;
332
+ height: 48px;
333
+ display: inline-flex;
81
334
  align-items: center;
82
335
  justify-content: center;
336
+ padding: 0;
337
+ border: none;
338
+ border-radius: 50%;
339
+ background: rgba(30, 58, 138, 0.88);
340
+ color: #ffffff;
341
+ font-size: 18px;
83
342
  cursor: pointer;
84
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);
85
- z-index: 10;
86
- transition: all 0.3s ease;
343
+ box-shadow: 0 6px 18px rgba(15, 23, 42, 0.22);
344
+ opacity: 0;
345
+ visibility: hidden;
346
+ transform: translateY(-50%) scale(0.85);
347
+ transition: opacity 220ms ease, transform 220ms ease, visibility 0s linear 220ms, background-color 160ms ease;
348
+ -webkit-tap-highlight-color: transparent;
349
+ touch-action: manipulation;
350
+ }
351
+
352
+ .steps-touch-nav:hover:not(:disabled),
353
+ .steps-touch-nav:focus-visible:not(:disabled) {
354
+ background: rgba(30, 58, 138, 1);
355
+ outline: none;
356
+ }
357
+
358
+ .steps-touch-nav:active:not(:disabled) {
359
+ transform: translateY(-50%) scale(0.9);
360
+ }
361
+
362
+ .steps-touch-nav:disabled {
363
+ background: rgba(148, 163, 184, 0.7);
364
+ cursor: not-allowed;
365
+ box-shadow: 0 3px 10px rgba(15, 23, 42, 0.1);
366
+ }
367
+
368
+ .steps-touch-nav-left {
369
+ left: 10px;
370
+ }
371
+
372
+ .steps-touch-nav-right {
373
+ right: 10px;
374
+ }
375
+
376
+ .steps-touch-nav.is-visible {
377
+ opacity: 1;
378
+ visibility: visible;
379
+ transform: translateY(-50%) scale(1);
380
+ transition: opacity 220ms ease, transform 220ms ease, visibility 0s linear 0s, background-color 160ms ease;
381
+ }
382
+
383
+ @media (prefers-reduced-motion: reduce) {
384
+ .steps-touch-nav {
385
+ transition: opacity 120ms linear, visibility 0s linear 120ms;
386
+ transform: translateY(-50%);
387
+ }
87
388
 
88
- &:hover {
89
- background: #f5f5f5;
389
+ .steps-touch-nav.is-visible {
390
+ transform: translateY(-50%);
391
+ transition: opacity 120ms linear, visibility 0s linear 0s;
90
392
  }
91
393
  }
92
394
 
93
- /* ============================
94
- MOBILE & TABLET VIEW FIXES
95
- ============================ */
395
+ .steps-stage-body::-webkit-scrollbar {
396
+ width: 5px;
397
+ }
96
398
 
97
-
399
+ .steps-stage-body::-webkit-scrollbar-track {
400
+ background: #f4f8ff;
401
+ border-radius: 4px;
402
+ }
98
403
 
99
- @media (max-width: 992px) { // iPad & tablets
100
- .timeline-card .ant-card-body {
101
- padding: 12px;
102
- min-height: auto;
404
+ .steps-stage-body::-webkit-scrollbar-thumb {
405
+ background: #c5d5ee;
406
+ border-radius: 4px;
407
+ }
408
+
409
+ .steps-stage-body::-webkit-scrollbar-thumb:hover {
410
+ background: #93b4e0;
411
+ }
412
+
413
+ .steps-chat-step-card {
414
+ width: 100%;
415
+ max-width: 100%;
416
+ min-width: 0;
417
+ flex: 1 1 auto;
418
+ min-height: 0;
419
+ display: flex;
420
+ flex-direction: column;
421
+ border: 1px solid #e8eef8;
422
+ border-radius: 10px;
423
+ padding: 14px 16px;
424
+ background: #ffffff;
425
+ box-shadow: 0 1px 6px rgba(15, 23, 42, 0.04);
426
+ box-sizing: border-box;
427
+ overflow: hidden;
428
+ }
429
+
430
+ /* Step card animations */
431
+
432
+ .steps-chat-step-card.slide-forward {
433
+ animation: step-slide-forward 300ms ease;
434
+ }
435
+
436
+ .steps-chat-step-card.slide-backward {
437
+ animation: step-slide-backward 300ms ease;
438
+ }
439
+
440
+ .steps-chat-step-card.slide-forward .steps-index-pill,
441
+ .steps-chat-step-card.slide-backward .steps-index-pill,
442
+ .steps-chat-step-card.slide-forward .steps-title,
443
+ .steps-chat-step-card.slide-backward .steps-title,
444
+ .steps-chat-step-card.slide-forward .steps-description,
445
+ .steps-chat-step-card.slide-backward .steps-description,
446
+ .steps-chat-step-card.slide-forward .steps-chat-step-component,
447
+ .steps-chat-step-card.slide-backward .steps-chat-step-component {
448
+ opacity: 0;
449
+ animation: step-text-reveal 460ms ease forwards;
450
+ }
451
+
452
+ .steps-chat-step-card.slide-forward .steps-index-pill,
453
+ .steps-chat-step-card.slide-backward .steps-index-pill {
454
+ animation-delay: 40ms;
455
+ }
456
+
457
+ .steps-chat-step-card.slide-forward .steps-title,
458
+ .steps-chat-step-card.slide-backward .steps-title {
459
+ animation-delay: 100ms;
460
+ }
461
+
462
+ .steps-chat-step-card.slide-forward .steps-description,
463
+ .steps-chat-step-card.slide-backward .steps-description {
464
+ animation-delay: 160ms;
465
+ }
466
+
467
+ .steps-chat-step-card.slide-forward .steps-chat-step-component,
468
+ .steps-chat-step-card.slide-backward .steps-chat-step-component {
469
+ animation-delay: 220ms;
470
+ }
471
+
472
+ @keyframes step-slide-forward {
473
+ from {
474
+ opacity: 0;
475
+ transform: translateX(24px);
103
476
  }
104
477
 
105
- .timeline-sidebar {
106
- flex-direction: row !important;
107
- overflow-x: auto;
108
- gap: 12px;
109
- padding-bottom: 10px;
110
- border-bottom: 1px solid #eee;
478
+ to {
479
+ opacity: 1;
480
+ transform: translateX(0);
111
481
  }
482
+ }
112
483
 
113
- .timeline-step {
114
- flex-direction: column;
115
- align-items: center;
484
+ @keyframes step-slide-backward {
485
+ from {
486
+ opacity: 0;
487
+ transform: translateX(-24px);
116
488
  }
117
489
 
118
- .step-marker {
119
- margin-right: 0;
490
+ to {
491
+ opacity: 1;
492
+ transform: translateX(0);
120
493
  }
494
+ }
121
495
 
122
- .step-info {
123
- text-align: center;
496
+ @keyframes step-text-reveal {
497
+ from {
498
+ opacity: 0;
499
+ transform: translateY(-8px);
124
500
  }
125
501
 
126
- .toggle-arrow {
127
- display: none !important; /* Hide collapse icon */
502
+ to {
503
+ opacity: 1;
504
+ transform: translateY(0);
128
505
  }
129
506
  }
130
507
 
131
- @media (max-width: 768px) { // mobile screens
132
- .timeline-sidebar {
133
- gap: 8px;
508
+ .steps-chat-step-top {
509
+ flex: 0 0 auto;
510
+ padding-bottom: 10px;
511
+ border-bottom: 1px solid #f1f5fb;
512
+ }
513
+
514
+ .steps-index-pill {
515
+ display: inline-flex;
516
+ align-items: center;
517
+ padding: 2px 8px;
518
+ border-radius: 999px;
519
+ background: #eaf2ff;
520
+ color: #1d4ed8;
521
+ font-size: 10px;
522
+ font-weight: 600;
523
+ margin-bottom: 6px;
524
+ }
525
+
526
+ .steps-title {
527
+ margin: 0;
528
+ font-size: 16px;
529
+ font-weight: 700;
530
+ color: #111827;
531
+ line-height: 1.3;
532
+ }
533
+
534
+ .steps-description {
535
+ margin: 4px 0 0;
536
+ color: #4b5563;
537
+ line-height: 1.5;
538
+ font-size: 13px;
539
+ }
540
+
541
+ .steps-chat-step-component {
542
+ margin-top: 10px;
543
+ display: flex;
544
+ flex: 1 1 auto;
545
+ flex-direction: column;
546
+ min-height: 0;
547
+ min-width: 0;
548
+ width: 100%;
549
+ max-width: 100%;
550
+ overflow-y: auto;
551
+ overflow-x: hidden;
552
+ scroll-behavior: smooth;
553
+ scrollbar-width: thin;
554
+ scrollbar-color: #c5d5ee #f4f8ff;
555
+ }
556
+
557
+ .steps-chat-step-component::-webkit-scrollbar {
558
+ width: 6px;
559
+ }
560
+
561
+ .steps-chat-step-component::-webkit-scrollbar-track {
562
+ background: #f4f8ff;
563
+ border-radius: 4px;
564
+ }
565
+
566
+ .steps-chat-step-component::-webkit-scrollbar-thumb {
567
+ background: #c5d5ee;
568
+ border-radius: 4px;
569
+ }
570
+
571
+ .steps-chat-step-component::-webkit-scrollbar-thumb:hover {
572
+ background: #93b4e0;
573
+ }
574
+
575
+ .steps-chat-step-component > * {
576
+ flex: 0 0 auto;
577
+ min-width: 0;
578
+ width: 100%;
579
+ max-width: 100%;
580
+ box-sizing: border-box;
581
+ }
582
+
583
+ .steps-chat-loading {
584
+ min-height: 120px;
585
+ display: flex;
586
+ align-items: center;
587
+ justify-content: center;
588
+ }
589
+
590
+ /* ── Narration bar (hidden by default via NARRATION_CONTROLS_ENABLED) ── */
591
+
592
+ .steps-narration-bar {
593
+ flex: 0 0 auto;
594
+ display: flex;
595
+ align-items: center;
596
+ flex-wrap: wrap;
597
+ gap: 8px;
598
+ padding: 8px 16px;
599
+ border-top: 1px solid #e8eef8;
600
+ background: #ffffff;
601
+ }
602
+
603
+ .steps-narration-bar .ant-btn {
604
+ min-height: 34px;
605
+ border-radius: 8px;
606
+ padding: 0 14px;
607
+ font-size: 13px;
608
+ font-weight: 600;
609
+ touch-action: manipulation;
610
+ -webkit-tap-highlight-color: transparent;
611
+ }
612
+
613
+ .steps-voice-provider-select {
614
+ min-width: 140px !important;
615
+ }
616
+
617
+ .steps-voice-select {
618
+ min-width: 180px !important;
619
+ }
620
+
621
+ /* ── Fullscreen ─────────────────────────────────────────── */
622
+
623
+ .steps-viewport:fullscreen,
624
+ .steps-viewport:-webkit-full-screen {
625
+ background: #f7fbff;
626
+ }
627
+
628
+ .steps-viewport:fullscreen .steps-main-card,
629
+ .steps-viewport:-webkit-full-screen .steps-main-card {
630
+ height: 100%;
631
+ border-radius: 0;
632
+ box-shadow: none;
633
+ }
634
+
635
+ .steps-viewport:fullscreen .steps-stage-body,
636
+ .steps-viewport:-webkit-full-screen .steps-stage-body {
637
+ padding: 6px;
638
+ }
639
+
640
+ /* ── Small laptops (13" / 1366px and below) ─────────────── */
641
+
642
+ @media (max-width: 1366px) {
643
+ .steps-top-bar {
644
+ padding: 6px 10px;
645
+ gap: 6px;
646
+ }
647
+
648
+ .steps-nav-actions {
649
+ gap: 4px;
650
+ }
651
+
652
+ .steps-nav-actions .ant-btn {
653
+ min-height: 32px;
654
+ padding: 0 10px;
655
+ font-size: 12px;
656
+ }
657
+
658
+ .steps-breadcrumb-item {
659
+ padding: 5px 10px;
660
+ font-size: 11px;
661
+ min-height: 30px;
662
+ }
663
+
664
+ .steps-breadcrumb-index {
665
+ width: 18px;
666
+ height: 18px;
667
+ font-size: 10px;
668
+ }
669
+
670
+ .steps-stage-body {
671
+ padding: 8px 12px;
672
+ }
673
+
674
+ .steps-chat-step-card {
675
+ padding: 12px 14px;
676
+ }
677
+
678
+ .steps-title {
679
+ font-size: 15px;
680
+ }
681
+
682
+ .steps-description {
683
+ font-size: 12px;
684
+ }
685
+ }
686
+
687
+ /* ── Mobile ─────────────────────────────────────────────── */
688
+
689
+ @media (max-width: 768px) {
690
+ .steps-patient-bar {
691
+ padding: 8px 12px;
692
+ }
693
+
694
+ .steps-patient-bar-sep {
695
+ margin: 0 10px;
696
+ }
697
+
698
+ .steps-patient-field-label {
699
+ font-size: 9px;
700
+ }
701
+
702
+ .steps-patient-field-value {
703
+ font-size: 12px;
704
+ }
705
+
706
+ .steps-top-bar {
707
+ padding: 6px 12px;
708
+ gap: 6px;
134
709
  }
135
710
 
136
- .step-number {
137
- width: 24px;
138
- height: 24px;
711
+ .steps-nav-actions .ant-btn {
712
+ min-height: 36px;
713
+ padding: 0 10px;
139
714
  font-size: 12px;
140
715
  }
141
716
 
142
- .step-title {
717
+ .steps-breadcrumb-item {
718
+ padding: 5px 10px;
143
719
  font-size: 11px;
720
+ min-height: 30px;
144
721
  }
145
722
 
146
- .step-main {
723
+ .steps-stage-body {
724
+ padding: 12px;
725
+ }
726
+
727
+ .steps-chat-step-card {
728
+ padding: 14px 16px;
729
+ border-radius: 10px;
730
+ }
731
+
732
+ .steps-title {
733
+ font-size: 16px;
734
+ }
735
+
736
+ .steps-description {
147
737
  font-size: 13px;
148
738
  }
149
739
 
150
- .vertical-line {
151
- display: none;
740
+ .steps-narration-bar {
741
+ padding: 8px 12px;
152
742
  }
153
743
 
154
- /* Card layout full width */
155
- .timeline-card .ant-card-body {
156
- padding: 10px;
744
+ .steps-touch-nav {
745
+ width: 42px;
746
+ height: 42px;
747
+ font-size: 16px;
748
+ }
749
+
750
+ .steps-touch-nav-left {
751
+ left: 6px;
752
+ }
753
+
754
+ .steps-touch-nav-right {
755
+ right: 6px;
157
756
  }
158
757
  }
159
758
 
759
+ /* ── Reduced motion ─────────────────────────────────────── */
760
+
761
+ @media (prefers-reduced-motion: reduce) {
762
+ .steps-chat-step-card.slide-forward,
763
+ .steps-chat-step-card.slide-backward,
764
+ .steps-chat-step-card.slide-forward .steps-index-pill,
765
+ .steps-chat-step-card.slide-backward .steps-index-pill,
766
+ .steps-chat-step-card.slide-forward .steps-title,
767
+ .steps-chat-step-card.slide-backward .steps-title,
768
+ .steps-chat-step-card.slide-forward .steps-description,
769
+ .steps-chat-step-card.slide-backward .steps-description,
770
+ .steps-chat-step-card.slide-forward .steps-chat-step-component,
771
+ .steps-chat-step-card.slide-backward .steps-chat-step-component {
772
+ animation: none !important;
773
+ opacity: 1 !important;
774
+ transform: none !important;
775
+ }
776
+ }