ui-soxo-bootstrap-core 2.6.41 → 2.6.42

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.
@@ -526,7 +526,7 @@ function panelActions(item, model, setSelectedRecord, setDrawerTitle, setDrawerV
526
526
  <EditOutlined />
527
527
  </Button>
528
528
  )}
529
- <Button
529
+ {/* <Button
530
530
  size="small"
531
531
  type="default"
532
532
  onClick={() => {
@@ -536,7 +536,7 @@ function panelActions(item, model, setSelectedRecord, setDrawerTitle, setDrawerV
536
536
  }}
537
537
  >
538
538
  <CopyOutlined />
539
- </Button>
539
+ </Button> */}
540
540
  <Popconfirm title="Are you sure?" onConfirm={() => deleteRecord(item)}>
541
541
  <Button danger size="small" type="default">
542
542
  <DeleteOutlined />
@@ -1290,7 +1290,27 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1290
1290
  </div>
1291
1291
  )} */}
1292
1292
 
1293
- <div className="steps-top-bar">
1293
+ <div className={`steps-top-bar${isStepFullscreen ? ' is-fullscreen' : ''}`}>
1294
+ {/*
1295
+ Full-screen toggle is anchored to the far left of the bar so the
1296
+ step tabs can stretch across the middle and the primary CTA sits
1297
+ flush right (see design).
1298
+ */}
1299
+ <Button
1300
+ className="steps-fullscreen-toggle"
1301
+ type="dashed"
1302
+ icon={isStepFullscreen ? <CompressOutlined /> : <ExpandOutlined />}
1303
+ onClick={toggleStepFullscreen}
1304
+ aria-label={isStepFullscreen ? 'Exit Full Screen' : 'Full Screen'}
1305
+ title={isStepFullscreen ? 'Exit Full Screen' : 'Full Screen'}
1306
+ >
1307
+ {isStepFullscreen ? 'Exit Full Screen' : 'Full Screen'}
1308
+ </Button>
1309
+
1310
+ {/*
1311
+ Breadcrumb strip stays visible in fullscreen mode too so the
1312
+ user keeps the step timeline / navigation while presenting.
1313
+ */}
1294
1314
  <div className="steps-breadcrumb-strip">
1295
1315
  {steps.length ? (
1296
1316
  steps.map((stepItem, stepIndex) => {
@@ -1315,10 +1335,6 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1315
1335
  </div>
1316
1336
 
1317
1337
  <div className="steps-nav-actions">
1318
- <Button type="dashed" icon={isStepFullscreen ? <CompressOutlined /> : <ExpandOutlined />} onClick={toggleStepFullscreen}>
1319
- {isStepFullscreen ? 'Exit Full Screen' : 'Full Screen'}
1320
- </Button>
1321
-
1322
1338
  {/*
1323
1339
  Previous-process button.
1324
1340
  - Only relevant at the start of a process (`activeStep === 0`)
@@ -1333,7 +1349,13 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1333
1349
  )}
1334
1350
 
1335
1351
  {activeStep > 0 && (
1336
- <Button type="default" icon={<ArrowLeftOutlined />} onClick={handlePrevious}>
1352
+ <Button
1353
+ type="default"
1354
+ icon={<ArrowLeftOutlined />}
1355
+ onClick={handlePrevious}
1356
+ aria-label="Back"
1357
+ title="Back"
1358
+ >
1337
1359
  Back
1338
1360
  </Button>
1339
1361
  )}
@@ -1366,7 +1388,13 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1366
1388
  )}
1367
1389
  </>
1368
1390
  ) : (
1369
- <Button type="primary" disabled={!isStepCompleted} onClick={handleNext}>
1391
+ <Button
1392
+ type="primary"
1393
+ disabled={!isStepCompleted}
1394
+ onClick={handleNext}
1395
+ aria-label={activeStep === 0 ? (FIRST_STEP_LABELS[processName?.trim().toLowerCase()] ?? 'Next') : 'Next'}
1396
+ title={activeStep === 0 ? (FIRST_STEP_LABELS[processName?.trim().toLowerCase()] ?? 'Next') : 'Next'}
1397
+ >
1370
1398
  {/*
1371
1399
  First-step label is resolved via FIRST_STEP_LABELS using
1372
1400
  the process name (lowercased + trimmed) as the key. Known
@@ -1464,10 +1492,10 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1464
1492
  </button>
1465
1493
  </>
1466
1494
  ) : null}
1467
- <div
1495
+ {/* <div
1468
1496
  key={`${currentProcessId}_${activeStep}`}
1469
1497
  className={`steps-chat-step-card ${stepSlideDirection === 'backward' ? 'slide-backward' : 'slide-forward'}`}
1470
- >
1498
+ > */}
1471
1499
  {/* <div className="steps-chat-step-top">
1472
1500
  <span className="steps-index-pill">
1473
1501
  Step {Math.min(activeStep + 1, steps.length || 1)} of {steps.length || 1}
@@ -1476,15 +1504,15 @@ export default function ProcessStepsPage({ match, CustomComponents = {}, ...prop
1476
1504
  {currentStep?.step_description ? <p className="steps-description">{currentStep.step_description}</p> : null}
1477
1505
  </div> */}
1478
1506
 
1479
- <div className="steps-chat-step-component">
1507
+ {/* <div className="steps-chat-step-component"> */}
1480
1508
  {loading ? (
1481
1509
  <div className="steps-chat-loading">
1482
1510
  <Spin />
1483
1511
  </div>
1484
1512
  ) : null}
1485
1513
  {!loading ? renderDynamicStep() : null}
1486
- </div>
1487
- </div>
1514
+ {/* </div> */}
1515
+ {/* </div> */}
1488
1516
  </div>
1489
1517
  </div>
1490
1518
 
@@ -159,16 +159,19 @@
159
159
  flex: 0 0 auto;
160
160
  display: flex;
161
161
  align-items: center;
162
- gap: 8px;
163
- padding: 6px 12px;
164
- border-bottom: 1px solid #e8eef8;
165
- background: #f8fbff;
166
- min-height: 50px;
162
+ gap: 12px;
163
+ padding: 0 24px;
164
+ min-height: 70px;
167
165
  width: 100%;
168
166
  max-width: 100%;
169
167
  min-width: 0;
170
168
  box-sizing: border-box;
171
169
  overflow: hidden;
170
+ position: relative;
171
+ /* Clean solid header on the soft sage → ivory gradient (no glass/frost).
172
+ Matches the onboarding reference without the frosted-glass treatment. */
173
+ border-bottom: 1px solid rgba(255, 255, 255, 0.4);
174
+ background: linear-gradient(180deg, #a7c2c6 0%, #eff3e3 100%);
172
175
  }
173
176
 
174
177
  .steps-breadcrumb-strip {
@@ -176,13 +179,45 @@
176
179
  min-width: 0;
177
180
  display: flex;
178
181
  align-items: center;
179
- gap: 6px;
182
+ justify-content: center;
183
+ gap: 52px;
180
184
  overflow-x: auto;
181
185
  overflow-y: hidden;
182
186
  white-space: nowrap;
183
- scrollbar-width: thin;
184
- scrollbar-color: #d0dff5 transparent;
185
- padding-bottom: 2px;
187
+ scrollbar-width: none;
188
+ padding: 0 8px;
189
+ }
190
+
191
+ .steps-breadcrumb-strip::-webkit-scrollbar {
192
+ height: 0;
193
+ display: none;
194
+ }
195
+
196
+ /* Full-screen toggle — grey frosted pill anchored to the far left. */
197
+ .steps-fullscreen-toggle {
198
+ flex: 0 0 auto;
199
+ }
200
+
201
+ .steps-fullscreen-toggle.ant-btn,
202
+ .steps-fullscreen-toggle.ant-btn-dashed {
203
+ height: 38px;
204
+ padding: 0 18px;
205
+ border-radius: 999px;
206
+ background: #07232E33;
207
+ border: 1px solid #dbe3e6;
208
+ color: #ffffff;
209
+ font-size: 13px;
210
+ font-weight: 500;
211
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
212
+ transition: all 0.2s ease;
213
+ }
214
+
215
+ .steps-fullscreen-toggle.ant-btn:hover,
216
+ .steps-fullscreen-toggle.ant-btn:focus {
217
+ background: #ffffff;
218
+ border-color: #ffffff;
219
+ color: #000000;
220
+ transform: translateY(-1px);
186
221
  }
187
222
 
188
223
  .steps-nav-actions {
@@ -190,20 +225,40 @@
190
225
  display: flex;
191
226
  align-items: center;
192
227
  gap: 6px;
228
+ /*
229
+ Anchors the Back + primary CTA to the far right. In fullscreen the
230
+ breadcrumb strip is not rendered, so this margin keeps the group pinned
231
+ right with only the Full Screen toggle sitting on the left.
232
+ */
233
+ margin-left: auto;
193
234
  }
194
235
 
195
236
  .steps-nav-actions .ant-btn {
196
- min-height: 34px;
197
- border-radius: 8px;
198
- padding: 0 14px;
237
+ min-height: 40px;
238
+ border-radius: 999px;
239
+ padding: 0 18px;
199
240
  font-size: 13px;
200
241
  font-weight: 600;
201
242
  touch-action: manipulation;
202
243
  -webkit-tap-highlight-color: transparent;
203
- transition: all 0.15s ease;
244
+ transition: all 0.2s ease;
204
245
  white-space: nowrap;
205
246
  }
206
247
 
248
+ /* Secondary (Back / previous-process) — solid white pill. */
249
+ .steps-nav-actions .ant-btn-default {
250
+ background: #ffffff;
251
+ border-color: #dbe3e6;
252
+ color: #4a5a68;
253
+ }
254
+
255
+ .steps-nav-actions .ant-btn-default:hover,
256
+ .steps-nav-actions .ant-btn-default:focus {
257
+ background: #f4f7f8;
258
+ border-color: #c3ccd0;
259
+ color: #253a5b;
260
+ }
261
+
207
262
  .steps-nav-actions .ant-btn:active {
208
263
  transform: scale(0.97);
209
264
  }
@@ -253,17 +308,23 @@
253
308
  }
254
309
 
255
310
  .steps-breadcrumb-item {
311
+ /* Compact, natural-width steps that sit centered with connector lines
312
+ between them — matching the onboarding reference. */
313
+ position: relative;
314
+ flex: 0 0 auto;
315
+ min-width: 0;
256
316
  display: inline-flex;
257
317
  align-items: center;
258
- gap: 7px;
259
- border: 1.5px solid #dce6f5;
260
- background: #f8fbff;
318
+ justify-content: flex-start;
319
+ gap: 8px;
320
+ border: none;
321
+ background: transparent;
261
322
  border-radius: 999px;
262
- padding: 6px 14px;
323
+ padding: 4px;
263
324
  cursor: pointer;
264
- transition: all 0.18s ease;
265
- color: #475569;
266
- font-size: 12px;
325
+ transition: all 0.2s ease;
326
+ color: #7a8792;
327
+ font-size: 13px;
267
328
  font-weight: 500;
268
329
  white-space: nowrap;
269
330
  min-height: 34px;
@@ -271,56 +332,109 @@
271
332
  -webkit-tap-highlight-color: transparent;
272
333
  }
273
334
 
274
- .steps-breadcrumb-item:hover {
275
- background: #eef5ff;
276
- border-color: #c8d9f6;
277
- color: #1d4ed8;
335
+ /* Thin connecting line drawn into the gap toward the next step. */
336
+ .steps-breadcrumb-item:not(:last-child)::after {
337
+ content: '';
338
+ position: absolute;
339
+ left: 100%;
340
+ top: 50%;
341
+ width: 52px;
342
+ height: 1px;
343
+ background: rgba(37, 58, 91, 0.2);
344
+ transform: translateY(-50%);
278
345
  }
279
346
 
280
347
  .steps-breadcrumb-item:active {
281
- transform: scale(0.96);
348
+ transform: scale(0.97);
349
+ }
350
+
351
+ /* Number bubble — default (upcoming) solid muted circle. */
352
+ .steps-breadcrumb-index {
353
+ width: 26px;
354
+ height: 26px;
355
+ border-radius: 50%;
356
+ display: inline-flex;
357
+ align-items: center;
358
+ justify-content: center;
359
+ font-size: 12px;
360
+ font-weight: 600;
361
+ background: #ffffff;
362
+ border: 1px solid #d3dbdf;
363
+ color: #8a97a2;
364
+ flex: 0 0 auto;
365
+ transition: all 0.2s ease;
366
+ }
367
+
368
+ .steps-breadcrumb-item:hover .steps-breadcrumb-index {
369
+ border-color: rgba(37, 58, 91, 0.35);
370
+ color: #253a5b;
282
371
  }
283
372
 
373
+ /* Label is shown only for the active step (upcoming steps are circle-only,
374
+ as in the reference). */
375
+ .steps-breadcrumb-label {
376
+ display: none;
377
+ font-size: 13px;
378
+ font-weight: 500;
379
+ color: inherit;
380
+ min-width: 0;
381
+ overflow: hidden;
382
+ text-overflow: ellipsis;
383
+ white-space: nowrap;
384
+ }
385
+
386
+ /* ACTIVE — solid white rounded pill with dark navy text. */
284
387
  .steps-breadcrumb-item.active {
285
- background: #1e3a8a;
286
- border-color: #1e3a8a;
287
- color: #ffffff;
388
+ background: #ffffff;
389
+ padding: 4px 16px 4px 6px;
390
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.06);
391
+ color: #253a5b;
288
392
  font-weight: 600;
289
393
  }
290
394
 
291
- .steps-breadcrumb-item.completed {
292
- border-color: #86efac;
293
- background: #f0fdf4;
294
- color: #15803d;
395
+ .steps-breadcrumb-item.active .steps-breadcrumb-index {
396
+ background: #ffffff;
397
+ border-color: rgba(37, 58, 91, 0.25);
398
+ color: #253a5b;
399
+ }
400
+
401
+ .steps-breadcrumb-item.active .steps-breadcrumb-label {
402
+ display: inline;
403
+ color: #253a5b;
295
404
  }
296
405
 
406
+ /* COMPLETED — filled navy circle. */
297
407
  .steps-breadcrumb-item.completed .steps-breadcrumb-index {
298
- background: #16a34a;
408
+ background: #253a5b;
409
+ border-color: #253a5b;
299
410
  color: #ffffff;
300
411
  }
301
412
 
302
- .steps-breadcrumb-item.active .steps-breadcrumb-index {
303
- background: rgba(255, 255, 255, 0.22);
304
- color: #ffffff;
413
+ /* Primary CTA (Start / Verify Profile / Next / Finish) — dark navy pill. */
414
+ .steps-nav-actions .ant-btn-primary {
415
+ background: #253a5b;
416
+ border-color: #253a5b;
417
+ border-radius: 999px;
418
+ padding: 0 30px;
419
+ min-height: 40px;
420
+ box-shadow: 0 8px 20px rgba(37, 58, 91, 0.28);
305
421
  }
306
422
 
307
- .steps-breadcrumb-index {
308
- width: 20px;
309
- height: 20px;
310
- border-radius: 50%;
311
- display: inline-flex;
312
- align-items: center;
313
- justify-content: center;
314
- font-size: 11px;
315
- font-weight: 700;
316
- background: #e2e8f4;
317
- color: #1e293b;
318
- flex: 0 0 auto;
423
+ .steps-nav-actions .ant-btn-primary:hover,
424
+ .steps-nav-actions .ant-btn-primary:focus {
425
+ background: #1d3054;
426
+ border-color: #1d3054;
427
+ transform: translateY(-1px);
428
+ box-shadow: 0 12px 26px rgba(37, 58, 91, 0.36);
319
429
  }
320
430
 
321
- .steps-breadcrumb-label {
322
- font-size: 12px;
323
- font-weight: 600;
431
+ .steps-nav-actions .ant-btn-primary:disabled,
432
+ .steps-nav-actions .ant-btn-primary[disabled] {
433
+ background: #c8d0e0;
434
+ border-color: #c8d0e0;
435
+ color: #ffffff;
436
+ box-shadow: none;
437
+ transform: none;
324
438
  }
325
439
 
326
440
  .steps-breadcrumb-empty {
@@ -347,8 +461,8 @@
347
461
  padding: 10px 14px;
348
462
  box-sizing: border-box;
349
463
  position: relative;
464
+ background: linear-gradient(180deg, #a7c2c6 0%, #eff3e3 100%);
350
465
  }
351
-
352
466
  .steps-stage-body.is-swipe-enabled {
353
467
  touch-action: pan-y;
354
468
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ui-soxo-bootstrap-core",
3
- "version": "2.6.41",
3
+ "version": "2.6.42",
4
4
  "description": "All the Core Components for you to start",
5
5
  "keywords": [
6
6
  "all in one"