@keenmate/pure-admin-core 1.5.0 → 1.5.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 +89 -0
- package/dist/css/main.css +431 -0
- package/package.json +1 -1
- package/src/scss/core-components/_cards.scss +23 -0
- package/src/scss/core-components/_data-display.scss +514 -19
- package/src/scss/core-components/_detail-panel.scss +6 -0
- package/src/scss/core-components/_tables.scss +7 -0
- package/src/scss/utilities.scss +13 -0
- package/src/scss/variables/_components.scss +98 -1
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
opacity: $field-label-opacity;
|
|
22
22
|
line-height: $line-height-tight;
|
|
23
23
|
text-transform: uppercase;
|
|
24
|
-
letter-spacing:
|
|
24
|
+
letter-spacing: $field-label-letter-spacing;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
&__value {
|
|
@@ -50,17 +50,17 @@
|
|
|
50
50
|
|
|
51
51
|
.pa-field__copy {
|
|
52
52
|
flex-shrink: 0;
|
|
53
|
-
padding:
|
|
53
|
+
padding: $field-copy-padding;
|
|
54
54
|
background: transparent;
|
|
55
55
|
border: none;
|
|
56
56
|
border-radius: $border-radius;
|
|
57
57
|
cursor: pointer;
|
|
58
|
-
opacity:
|
|
59
|
-
transition: opacity
|
|
58
|
+
opacity: $field-copy-opacity;
|
|
59
|
+
transition: opacity $field-copy-transition, background $field-copy-transition;
|
|
60
60
|
|
|
61
61
|
&:hover {
|
|
62
|
-
opacity:
|
|
63
|
-
background:
|
|
62
|
+
opacity: $field-copy-hover-opacity;
|
|
63
|
+
background: $field-copy-hover-bg;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -69,10 +69,10 @@
|
|
|
69
69
|
&--copy-click {
|
|
70
70
|
.pa-field__value {
|
|
71
71
|
cursor: pointer;
|
|
72
|
-
transition: opacity
|
|
72
|
+
transition: opacity $field-copy-transition;
|
|
73
73
|
|
|
74
74
|
&:hover {
|
|
75
|
-
opacity:
|
|
75
|
+
opacity: $field-copy-click-hover-opacity;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
&::after {
|
|
@@ -80,11 +80,11 @@
|
|
|
80
80
|
font-size: $font-size-2xs;
|
|
81
81
|
opacity: 0;
|
|
82
82
|
margin-inline-start: $spacing-sm; // RTL: flips to right
|
|
83
|
-
transition: opacity
|
|
83
|
+
transition: opacity $field-copy-transition;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
&:hover::after {
|
|
87
|
-
opacity:
|
|
87
|
+
opacity: $field-copy-hint-opacity;
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -99,21 +99,21 @@
|
|
|
99
99
|
|
|
100
100
|
.pa-field__copy {
|
|
101
101
|
flex-shrink: 0;
|
|
102
|
-
padding:
|
|
102
|
+
padding: $field-copy-padding;
|
|
103
103
|
background: transparent;
|
|
104
104
|
border: none;
|
|
105
105
|
border-radius: $border-radius;
|
|
106
106
|
cursor: pointer;
|
|
107
107
|
opacity: 0;
|
|
108
|
-
transition: opacity
|
|
108
|
+
transition: opacity $field-copy-transition, background $field-copy-transition;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
&:hover .pa-field__copy {
|
|
112
|
-
opacity:
|
|
112
|
+
opacity: $field-copy-opacity;
|
|
113
113
|
|
|
114
114
|
&:hover {
|
|
115
|
-
opacity:
|
|
116
|
-
background:
|
|
115
|
+
opacity: $field-copy-hover-opacity;
|
|
116
|
+
background: $field-copy-hover-bg;
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -158,6 +158,14 @@
|
|
|
158
158
|
margin-top: $field-group-spacing;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// Container wrapper for responsive fields
|
|
163
|
+
// ============================================================================
|
|
164
|
+
|
|
165
|
+
.pa-fields-container {
|
|
166
|
+
container-type: inline-size;
|
|
167
|
+
}
|
|
168
|
+
|
|
161
169
|
// ============================================================================
|
|
162
170
|
// FIELD CONTAINER (.pa-fields)
|
|
163
171
|
// Container for multiple .pa-field items
|
|
@@ -184,6 +192,14 @@
|
|
|
184
192
|
&--cols-3 { grid-template-columns: repeat(3, 1fr); }
|
|
185
193
|
&--cols-4 { grid-template-columns: repeat(4, 1fr); }
|
|
186
194
|
|
|
195
|
+
@container (max-width: #{$mobile-breakpoint}) {
|
|
196
|
+
&--cols-2,
|
|
197
|
+
&--cols-3,
|
|
198
|
+
&--cols-4 {
|
|
199
|
+
grid-template-columns: 1fr;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
187
203
|
@media (max-width: $mobile-breakpoint) {
|
|
188
204
|
&--cols-2,
|
|
189
205
|
&--cols-3,
|
|
@@ -204,8 +220,8 @@
|
|
|
204
220
|
|
|
205
221
|
.pa-field__label {
|
|
206
222
|
flex: 0 0 auto;
|
|
207
|
-
min-width:
|
|
208
|
-
max-width:
|
|
223
|
+
min-width: $field-horizontal-label-min-width;
|
|
224
|
+
max-width: $field-horizontal-label-max-width;
|
|
209
225
|
}
|
|
210
226
|
|
|
211
227
|
.pa-field__value {
|
|
@@ -226,8 +242,8 @@
|
|
|
226
242
|
|
|
227
243
|
.pa-field__label {
|
|
228
244
|
flex: 0 0 auto;
|
|
229
|
-
min-width:
|
|
230
|
-
max-width:
|
|
245
|
+
min-width: $field-horizontal-label-min-width;
|
|
246
|
+
max-width: $field-horizontal-label-max-width;
|
|
231
247
|
}
|
|
232
248
|
|
|
233
249
|
.pa-field__value {
|
|
@@ -308,6 +324,10 @@
|
|
|
308
324
|
min-width: 0;
|
|
309
325
|
}
|
|
310
326
|
|
|
327
|
+
@container (max-width: #{$mobile-breakpoint}) {
|
|
328
|
+
flex-direction: column;
|
|
329
|
+
}
|
|
330
|
+
|
|
311
331
|
@media (max-width: $mobile-breakpoint) {
|
|
312
332
|
flex-direction: column;
|
|
313
333
|
}
|
|
@@ -344,4 +364,479 @@
|
|
|
344
364
|
border-inline-start: none; // RTL: flips to right
|
|
345
365
|
padding-inline-start: 0; // RTL: flips to right
|
|
346
366
|
}
|
|
367
|
+
|
|
368
|
+
// ------------------------------------------------------------------
|
|
369
|
+
// LINEAR: ultra-clean side-by-side, weight + color contrast only
|
|
370
|
+
// ------------------------------------------------------------------
|
|
371
|
+
&--linear {
|
|
372
|
+
gap: $fields-linear-gap;
|
|
373
|
+
border-inline-start: none;
|
|
374
|
+
padding-inline-start: 0;
|
|
375
|
+
|
|
376
|
+
.pa-field {
|
|
377
|
+
flex-direction: row;
|
|
378
|
+
align-items: center;
|
|
379
|
+
gap: $fields-linear-field-gap;
|
|
380
|
+
font-size: $fields-linear-font-size;
|
|
381
|
+
line-height: $line-height-base;
|
|
382
|
+
min-height: $fields-linear-min-height;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.pa-field__label {
|
|
386
|
+
flex: 0 0 $fields-linear-label-width;
|
|
387
|
+
font-size: $fields-linear-font-size;
|
|
388
|
+
text-transform: none;
|
|
389
|
+
letter-spacing: normal;
|
|
390
|
+
opacity: 1;
|
|
391
|
+
font-weight: $font-weight-normal;
|
|
392
|
+
color: var(--pa-text-color-2);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.pa-field__value {
|
|
396
|
+
flex: 1;
|
|
397
|
+
min-width: 0;
|
|
398
|
+
font-size: $fields-linear-font-size;
|
|
399
|
+
font-weight: $font-weight-medium;
|
|
400
|
+
color: var(--pa-text-color-1);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// ------------------------------------------------------------------
|
|
405
|
+
// CHIPS: inline flow, values displayed as pills/chips
|
|
406
|
+
// ------------------------------------------------------------------
|
|
407
|
+
&--chips {
|
|
408
|
+
flex-direction: row;
|
|
409
|
+
flex-wrap: wrap;
|
|
410
|
+
gap: $fields-chips-gap-v $fields-chips-gap-h;
|
|
411
|
+
padding: $fields-chips-padding-v 0;
|
|
412
|
+
border-inline-start: none;
|
|
413
|
+
padding-inline-start: 0;
|
|
414
|
+
|
|
415
|
+
.pa-field {
|
|
416
|
+
flex-direction: row;
|
|
417
|
+
align-items: center;
|
|
418
|
+
gap: $fields-chips-field-gap;
|
|
419
|
+
font-size: $fields-chips-font-size;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
.pa-field__label {
|
|
423
|
+
font-size: $fields-chips-font-size;
|
|
424
|
+
text-transform: none;
|
|
425
|
+
letter-spacing: normal;
|
|
426
|
+
opacity: 1;
|
|
427
|
+
font-weight: $font-weight-normal;
|
|
428
|
+
color: var(--pa-text-color-2);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.pa-field__value {
|
|
432
|
+
background: $fields-chips-value-bg;
|
|
433
|
+
color: var(--pa-text-color-1);
|
|
434
|
+
font-weight: $fields-chips-value-font-weight;
|
|
435
|
+
padding: $fields-chips-value-padding-v $fields-chips-value-padding-h;
|
|
436
|
+
border-radius: $fields-chips-value-border-radius;
|
|
437
|
+
font-size: $fields-chips-value-font-size;
|
|
438
|
+
|
|
439
|
+
&--success {
|
|
440
|
+
background: var(--pa-success-bg-light, rgba(0, 200, 80, 0.12));
|
|
441
|
+
color: var(--pa-success-color, #28a745);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
&--warning {
|
|
445
|
+
background: var(--pa-warning-bg-light, rgba(255, 165, 0, 0.12));
|
|
446
|
+
color: var(--pa-warning-color, #e68a00);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
&--danger {
|
|
450
|
+
background: var(--pa-danger-bg-light, rgba(255, 0, 0, 0.12));
|
|
451
|
+
color: var(--pa-danger-color, #dc3545);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// ============================================================================
|
|
458
|
+
// Container wrapper for responsive desc-tables
|
|
459
|
+
// Add to a parent element (e.g. card body) so desc-tables collapse in narrow spaces
|
|
460
|
+
// ============================================================================
|
|
461
|
+
|
|
462
|
+
.pa-desc-container {
|
|
463
|
+
container-type: inline-size;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// ============================================================================
|
|
467
|
+
// DESCRIPTIONS TABLE (.pa-desc-table)
|
|
468
|
+
// Ant Design style — flat grid with label/value cells, label cells get tint
|
|
469
|
+
// ============================================================================
|
|
470
|
+
|
|
471
|
+
.pa-desc-table {
|
|
472
|
+
display: grid;
|
|
473
|
+
grid-template-columns: repeat($desc-table-cols, auto 1fr);
|
|
474
|
+
border: $border-width-thin solid var(--pa-border-color);
|
|
475
|
+
border-radius: $border-radius;
|
|
476
|
+
overflow: hidden;
|
|
477
|
+
|
|
478
|
+
&--cols-2 {
|
|
479
|
+
grid-template-columns: repeat(2, auto 1fr);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// Fixed label width: uses --label-width custom property (default from SCSS var)
|
|
483
|
+
// Override per-instance: style="--label-width: 20rem"
|
|
484
|
+
// Uses minmax(0, ...) so label columns shrink gracefully when container is narrow
|
|
485
|
+
&--fixed {
|
|
486
|
+
grid-template-columns: repeat($desc-table-cols, minmax(0, var(--label-width, #{$desc-table-label-fixed-width})) minmax(0, 1fr));
|
|
487
|
+
|
|
488
|
+
&.pa-desc-table--cols-2 {
|
|
489
|
+
grid-template-columns: repeat(2, minmax(0, var(--label-width, #{$desc-table-label-fixed-width})) minmax(0, 1fr));
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
&__label,
|
|
494
|
+
&__value {
|
|
495
|
+
padding: $desc-table-cell-padding-v $desc-table-cell-padding-h;
|
|
496
|
+
border-bottom: $border-width-thin solid var(--pa-border-color);
|
|
497
|
+
font-size: $desc-table-font-size;
|
|
498
|
+
line-height: $line-height-base;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
&__label {
|
|
502
|
+
background: $desc-table-label-bg;
|
|
503
|
+
color: var(--pa-text-color-2);
|
|
504
|
+
font-weight: $font-weight-normal;
|
|
505
|
+
white-space: nowrap;
|
|
506
|
+
border-inline-end: $border-width-thin solid var(--pa-border-color);
|
|
507
|
+
|
|
508
|
+
&::after {
|
|
509
|
+
content: ':';
|
|
510
|
+
margin-inline-start: $desc-table-label-colon-spacing;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
&__value {
|
|
515
|
+
color: var(--pa-text-color-1);
|
|
516
|
+
font-weight: $desc-table-value-font-weight;
|
|
517
|
+
border-inline-end: $border-width-thin solid var(--pa-border-color);
|
|
518
|
+
min-width: 0;
|
|
519
|
+
|
|
520
|
+
&--full {
|
|
521
|
+
grid-column: 2 / -1;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
// Middle: cells stretch to fill the grid row, content centered inside
|
|
526
|
+
&--middle &__label,
|
|
527
|
+
&--middle &__value {
|
|
528
|
+
display: flex;
|
|
529
|
+
align-items: center;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// Label horizontal alignment
|
|
533
|
+
&--label-end &__label {
|
|
534
|
+
text-align: end;
|
|
535
|
+
justify-content: flex-end; // when --middle makes it flex
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
&--label-center &__label {
|
|
539
|
+
text-align: center;
|
|
540
|
+
justify-content: center; // when --middle makes it flex
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// Truncate: single-line ellipsis on labels and values
|
|
544
|
+
&--truncate &__label,
|
|
545
|
+
&--truncate &__value {
|
|
546
|
+
overflow: hidden;
|
|
547
|
+
text-overflow: ellipsis;
|
|
548
|
+
white-space: nowrap;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
// Responsive: collapse to single label-value pair per row
|
|
552
|
+
// Selectors must match compound specificity of &--fixed#{&}--cols-2 (0,2,0)
|
|
553
|
+
// Container query (responds to parent container width, e.g. card body)
|
|
554
|
+
@container (max-width: #{$mobile-breakpoint}) {
|
|
555
|
+
&, &--cols-2 {
|
|
556
|
+
grid-template-columns: auto 1fr;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
&--fixed, &--fixed#{&}--cols-2 {
|
|
560
|
+
grid-template-columns: minmax(0, var(--label-width, #{$desc-table-label-fixed-width})) minmax(0, 1fr);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
.pa-desc-table__value--full {
|
|
564
|
+
grid-column: 2;
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// Media fallback (for desc-tables outside a container context)
|
|
569
|
+
@media (max-width: $mobile-breakpoint) {
|
|
570
|
+
&, &--cols-2 {
|
|
571
|
+
grid-template-columns: auto 1fr;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
&--fixed, &--fixed#{&}--cols-2 {
|
|
575
|
+
grid-template-columns: minmax(0, var(--label-width, #{$desc-table-label-fixed-width})) minmax(0, 1fr);
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
.pa-desc-table__value--full {
|
|
579
|
+
grid-column: 2;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
// ============================================================================
|
|
585
|
+
// DOT LEADERS (.pa-dot-leaders)
|
|
586
|
+
// Restaurant menu / invoice style — dotted line connects label to value
|
|
587
|
+
// ============================================================================
|
|
588
|
+
|
|
589
|
+
.pa-dot-leaders {
|
|
590
|
+
display: flex;
|
|
591
|
+
flex-direction: column;
|
|
592
|
+
gap: 0;
|
|
593
|
+
|
|
594
|
+
&__item {
|
|
595
|
+
display: flex;
|
|
596
|
+
align-items: baseline;
|
|
597
|
+
padding: $dot-leaders-item-padding-v 0;
|
|
598
|
+
|
|
599
|
+
&--total {
|
|
600
|
+
margin-top: $dot-leaders-total-margin-top;
|
|
601
|
+
padding-top: $dot-leaders-total-padding-top;
|
|
602
|
+
border-top: $dot-leaders-total-border-width solid var(--pa-text-color-1);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
&__label {
|
|
607
|
+
font-size: $dot-leaders-font-size;
|
|
608
|
+
font-weight: $dot-leaders-label-font-weight;
|
|
609
|
+
color: var(--pa-text-color-2);
|
|
610
|
+
white-space: nowrap;
|
|
611
|
+
flex-shrink: 0;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
&__leader {
|
|
615
|
+
flex: 1;
|
|
616
|
+
border-bottom: $dot-leaders-leader-width dotted var(--pa-border-color);
|
|
617
|
+
margin: 0 $dot-leaders-leader-margin;
|
|
618
|
+
margin-bottom: 0.25em;
|
|
619
|
+
min-width: $dot-leaders-leader-min-width;
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
&__value {
|
|
623
|
+
font-size: $dot-leaders-font-size;
|
|
624
|
+
font-weight: $dot-leaders-value-font-weight;
|
|
625
|
+
color: var(--pa-text-color-1);
|
|
626
|
+
white-space: nowrap;
|
|
627
|
+
text-align: end;
|
|
628
|
+
font-variant-numeric: tabular-nums;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
&__item--total &__label {
|
|
632
|
+
font-weight: $dot-leaders-total-font-weight;
|
|
633
|
+
color: var(--pa-text-color-1);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
&__item--total &__value {
|
|
637
|
+
font-size: $dot-leaders-total-font-size;
|
|
638
|
+
font-weight: $dot-leaders-total-font-weight;
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// ============================================================================
|
|
643
|
+
// PROPERTY CARD (.pa-prop-card)
|
|
644
|
+
// Bordered card with header + rows, thin dividers between rows
|
|
645
|
+
// ============================================================================
|
|
646
|
+
|
|
647
|
+
.pa-prop-card {
|
|
648
|
+
border: $border-width-thin solid var(--pa-border-color);
|
|
649
|
+
border-radius: $prop-card-border-radius;
|
|
650
|
+
overflow: hidden;
|
|
651
|
+
|
|
652
|
+
&__header {
|
|
653
|
+
padding: $prop-card-header-padding-v $prop-card-header-padding-h;
|
|
654
|
+
font-weight: $prop-card-header-font-weight;
|
|
655
|
+
font-size: $prop-card-header-font-size;
|
|
656
|
+
text-transform: uppercase;
|
|
657
|
+
letter-spacing: $prop-card-header-letter-spacing;
|
|
658
|
+
color: var(--pa-text-color-2);
|
|
659
|
+
background: $prop-card-header-bg;
|
|
660
|
+
border-bottom: $border-width-thin solid var(--pa-border-color);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
&__row {
|
|
664
|
+
display: flex;
|
|
665
|
+
justify-content: space-between;
|
|
666
|
+
align-items: center;
|
|
667
|
+
padding: $prop-card-row-padding-v $prop-card-row-padding-h;
|
|
668
|
+
border-bottom: $border-width-thin solid $prop-card-row-divider-color;
|
|
669
|
+
font-size: $prop-card-row-font-size;
|
|
670
|
+
gap: $prop-card-row-gap;
|
|
671
|
+
|
|
672
|
+
&:last-child {
|
|
673
|
+
border-bottom: none;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
&__label {
|
|
678
|
+
color: var(--pa-text-color-2);
|
|
679
|
+
font-weight: $font-weight-normal;
|
|
680
|
+
flex-shrink: 0;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
&__value {
|
|
684
|
+
color: var(--pa-text-color-1);
|
|
685
|
+
font-weight: $font-weight-medium;
|
|
686
|
+
text-align: end;
|
|
687
|
+
overflow-wrap: anywhere;
|
|
688
|
+
|
|
689
|
+
&--bold {
|
|
690
|
+
font-weight: $font-weight-bold;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
// ============================================================================
|
|
696
|
+
// Container wrapper for responsive banded rows
|
|
697
|
+
// ============================================================================
|
|
698
|
+
|
|
699
|
+
.pa-banded-container {
|
|
700
|
+
container-type: inline-size;
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
// ============================================================================
|
|
704
|
+
// BANDED ROWS (.pa-banded)
|
|
705
|
+
// Full-width rows with fixed-width tinted label column
|
|
706
|
+
// ============================================================================
|
|
707
|
+
|
|
708
|
+
.pa-banded {
|
|
709
|
+
border: $border-width-thin solid var(--pa-border-color);
|
|
710
|
+
border-radius: $border-radius;
|
|
711
|
+
overflow: hidden;
|
|
712
|
+
|
|
713
|
+
&__row {
|
|
714
|
+
display: flex;
|
|
715
|
+
border-bottom: $border-width-thin solid var(--pa-border-color);
|
|
716
|
+
font-size: $banded-font-size;
|
|
717
|
+
align-items: stretch;
|
|
718
|
+
|
|
719
|
+
&:last-child {
|
|
720
|
+
border-bottom: none;
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
&__label {
|
|
725
|
+
flex: 0 0 auto;
|
|
726
|
+
width: $banded-label-width;
|
|
727
|
+
padding: $banded-label-padding-v $banded-label-padding-h;
|
|
728
|
+
background: $banded-label-bg;
|
|
729
|
+
color: var(--pa-text-color-2);
|
|
730
|
+
font-weight: $banded-label-font-weight;
|
|
731
|
+
border-inline-end: $border-width-thin solid var(--pa-border-color);
|
|
732
|
+
display: flex;
|
|
733
|
+
align-items: flex-start;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
&__value {
|
|
737
|
+
flex: 1;
|
|
738
|
+
padding: $banded-value-padding-v $banded-value-padding-h;
|
|
739
|
+
color: var(--pa-text-color-1);
|
|
740
|
+
font-weight: $font-weight-normal;
|
|
741
|
+
display: flex;
|
|
742
|
+
align-items: flex-start;
|
|
743
|
+
overflow-wrap: anywhere;
|
|
744
|
+
min-width: 0;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
// Width variants
|
|
748
|
+
&--narrow &__label { width: $banded-label-width-narrow; }
|
|
749
|
+
&--wide &__label { width: $banded-label-width-wide; }
|
|
750
|
+
|
|
751
|
+
// Middle: vertically center labels and values
|
|
752
|
+
&--middle &__label,
|
|
753
|
+
&--middle &__value {
|
|
754
|
+
align-items: center;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
// Label horizontal alignment
|
|
758
|
+
&--label-end &__label { justify-content: flex-end; }
|
|
759
|
+
&--label-center &__label { justify-content: center; }
|
|
760
|
+
|
|
761
|
+
// Truncate: single-line ellipsis on both labels and values
|
|
762
|
+
&--truncate &__label,
|
|
763
|
+
&--truncate &__value {
|
|
764
|
+
overflow: hidden;
|
|
765
|
+
text-overflow: ellipsis;
|
|
766
|
+
white-space: nowrap;
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
// Responsive: stack label above value in narrow containers
|
|
770
|
+
// Uses & &__label (0,2,0) + !important to beat wr-* utilities (0,1,0 + !important)
|
|
771
|
+
@container (max-width: #{$mobile-breakpoint}) {
|
|
772
|
+
&__row {
|
|
773
|
+
flex-direction: column;
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
& &__label {
|
|
777
|
+
width: auto !important;
|
|
778
|
+
border-inline-end: none;
|
|
779
|
+
border-bottom: $border-width-thin solid var(--pa-border-color);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
& &__label,
|
|
783
|
+
& &__value {
|
|
784
|
+
display: block; // override flex so text-overflow: ellipsis works
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
@media (max-width: $mobile-breakpoint) {
|
|
789
|
+
&__row {
|
|
790
|
+
flex-direction: column;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
& &__label {
|
|
794
|
+
width: auto !important;
|
|
795
|
+
border-inline-end: none;
|
|
796
|
+
border-bottom: $border-width-thin solid var(--pa-border-color);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
& &__label,
|
|
800
|
+
& &__value {
|
|
801
|
+
display: block;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
// ============================================================================
|
|
807
|
+
// ACCENT GRID (.pa-accent-grid)
|
|
808
|
+
// Grid of items with color-coded left borders
|
|
809
|
+
// ============================================================================
|
|
810
|
+
|
|
811
|
+
.pa-accent-grid {
|
|
812
|
+
display: grid;
|
|
813
|
+
grid-template-columns: repeat(auto-fill, minmax($accent-grid-min-col, 1fr));
|
|
814
|
+
gap: $accent-grid-gap;
|
|
815
|
+
|
|
816
|
+
&__item {
|
|
817
|
+
padding: $accent-grid-item-padding-v $accent-grid-item-padding-h;
|
|
818
|
+
padding-inline-start: $accent-grid-item-padding-start;
|
|
819
|
+
border-inline-start: $accent-grid-border-width solid var(--pa-accent, #3b82f6);
|
|
820
|
+
|
|
821
|
+
&--success { border-inline-start-color: var(--pa-success-color, #28a745); }
|
|
822
|
+
&--warning { border-inline-start-color: var(--pa-warning-color, #e68a00); }
|
|
823
|
+
&--danger { border-inline-start-color: var(--pa-danger-color, #dc3545); }
|
|
824
|
+
&--info { border-inline-start-color: var(--pa-info-color, #17a2b8); }
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
&__label {
|
|
828
|
+
font-size: $accent-grid-label-font-size;
|
|
829
|
+
font-weight: $accent-grid-label-font-weight;
|
|
830
|
+
color: var(--pa-text-color-2);
|
|
831
|
+
margin-bottom: $accent-grid-label-margin-bottom;
|
|
832
|
+
text-transform: uppercase;
|
|
833
|
+
letter-spacing: $accent-grid-label-letter-spacing;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
&__value {
|
|
837
|
+
font-size: $accent-grid-value-font-size;
|
|
838
|
+
font-weight: $accent-grid-value-font-weight;
|
|
839
|
+
color: var(--pa-text-color-1);
|
|
840
|
+
line-height: $accent-grid-value-line-height;
|
|
841
|
+
}
|
|
347
842
|
}
|
|
@@ -127,6 +127,11 @@
|
|
|
127
127
|
background-color: var(--pa-card-bg);
|
|
128
128
|
position: relative;
|
|
129
129
|
|
|
130
|
+
// Bordered modifier: adds top and bottom borders
|
|
131
|
+
&--bordered {
|
|
132
|
+
border-block: $border-width-base solid var(--pa-border-color);
|
|
133
|
+
}
|
|
134
|
+
|
|
130
135
|
// In overlay mode: slide-in from end side (right in LTR, left in RTL)
|
|
131
136
|
.pa-detail-panel--overlay & {
|
|
132
137
|
position: absolute;
|
|
@@ -237,6 +242,7 @@
|
|
|
237
242
|
.pa-detail-panel__body {
|
|
238
243
|
flex: 1;
|
|
239
244
|
overflow-y: auto;
|
|
245
|
+
overscroll-behavior: contain; // Prevent scroll chaining to parent
|
|
240
246
|
padding: $detail-panel-body-padding-v $detail-panel-body-padding-h;
|
|
241
247
|
}
|
|
242
248
|
|
|
@@ -84,6 +84,13 @@
|
|
|
84
84
|
.pa-table-card__body {
|
|
85
85
|
position: relative;
|
|
86
86
|
overflow: hidden; // Clip detail panel to card boundaries
|
|
87
|
+
display: flex;
|
|
88
|
+
flex-direction: column;
|
|
89
|
+
|
|
90
|
+
// Detail view stretches to fill body
|
|
91
|
+
.pa-detail-view {
|
|
92
|
+
flex: 1;
|
|
93
|
+
}
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
|
package/src/scss/utilities.scss
CHANGED
|
@@ -456,6 +456,11 @@ $spacers: (
|
|
|
456
456
|
.minhr-40 { min-height: 40rem !important; }
|
|
457
457
|
.minhr-45 { min-height: 45rem !important; }
|
|
458
458
|
.minhr-50 { min-height: 50rem !important; }
|
|
459
|
+
.minhr-60 { min-height: 60rem !important; }
|
|
460
|
+
.minhr-70 { min-height: 70rem !important; }
|
|
461
|
+
.minhr-80 { min-height: 80rem !important; }
|
|
462
|
+
.minhr-90 { min-height: 90rem !important; }
|
|
463
|
+
.minhr-100 { min-height: 100rem !important; }
|
|
459
464
|
|
|
460
465
|
// Max-height (rem)
|
|
461
466
|
.maxhr-1 { max-height: 1rem !important; }
|
|
@@ -725,4 +730,12 @@ $spacers: (
|
|
|
725
730
|
|
|
726
731
|
.shadow-lg {
|
|
727
732
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
// ============================================================================
|
|
736
|
+
// Container queries
|
|
737
|
+
// ============================================================================
|
|
738
|
+
|
|
739
|
+
.pa-cq {
|
|
740
|
+
container-type: inline-size;
|
|
728
741
|
}
|