@posiwise/core-styles 1.0.17 → 1.0.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posiwise/core-styles",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -421,15 +421,20 @@
421
421
  }
422
422
  }
423
423
 
424
- // Collapsed Action column (Linear/Notion pattern, codified 2026-05-21).
425
- // The Action column reserves no horizontal space at rest — header text
426
- // is hidden, th + td collapse to 0 width, and the <ul> floats over the
427
- // row's right edge on row hover. Soft 80ms exit delay so quick row-to-row
428
- // mouse movements don't flicker the strip in/out.
424
+ // Collapsed Action column (Linear/Notion pattern, codified 2026-05-21;
425
+ // made OPT-IN 2026-05-22). The platform DEFAULT is the classic, always-
426
+ // visible inline icon strip (pre-2026-05-21 behaviour) it needs no rules
427
+ // here, it's just the natural table rendering plus the `.actions-list-*`
428
+ // min-widths below. A view OPTS IN to this collapsed/hover-float treatment
429
+ // by adding `.actions-collapsed` to its `.primeng-datatable-container`.
430
+ // When opted in, the Action column reserves no horizontal space at rest —
431
+ // header text is hidden, th + td collapse to 0 width, and the <ul> floats
432
+ // over the row's right edge on row hover. Soft 80ms exit delay so quick
433
+ // row-to-row mouse movements don't flicker the strip in/out.
429
434
  //
430
435
  // Covers all `actions-list-{two,three,four}` variants. Per-view local
431
436
  // SCSS should NOT redeclare this — pattern lives in `admin-list-view.md`.
432
- .primeng-datatable-container {
437
+ .primeng-datatable-container.actions-collapsed {
433
438
  th[class*='actions-list-'],
434
439
  td[data-head='Action'] {
435
440
  width: 0 !important;
@@ -446,6 +451,19 @@
446
451
  // header bar. (Updated 2026-05-21 — prior transparent bg
447
452
  // produced a visible gap after DELETED in admin lists.)
448
453
  border-color: transparent !important;
454
+ // Clip the (now hidden) header label. The font-size:0 above is
455
+ // routinely defeated by a per-view `th { font-size: 11px !important }`
456
+ // override (admin density tables), so the transparent "Actions"
457
+ // text still lays out ~53px wide and spills out of this 0-width
458
+ // cell — producing a phantom horizontal scroll on
459
+ // .p-datatable-table-container even when every column already fits
460
+ // (the residual scroll then also induces a small vertical one).
461
+ // Clipping here guarantees the collapsed header contributes zero
462
+ // width regardless of any font-size override. The body
463
+ // td[data-head='Action'] deliberately keeps overflow:visible (its
464
+ // floating action <ul> must escape the cell) — only the header is
465
+ // clipped. (Added 2026-05-22.)
466
+ overflow: hidden !important;
449
467
  }
450
468
 
451
469
  td[data-head='Action'] {
@@ -548,6 +566,46 @@
548
566
  }
549
567
  }
550
568
 
569
+ // Touch fallback (AI52) — devices with no hover capability never fire
570
+ // tr:hover, so the collapsed/floating action strip above stays invisible
571
+ // and Edit/Delete become unreachable. On no-hover pointers, un-collapse
572
+ // the Action column and render the icon strip INLINE (static, always
573
+ // visible) so the actions are tappable. The strip is no longer a floating
574
+ // overlay here, so it doesn't cover row content. The table already scrolls
575
+ // horizontally below 1200px (admin-list-view.md T-7), so the reserved
576
+ // column width simply joins that scroll. Codified 2026-05-21.
577
+ @media (hover: none) {
578
+ .primeng-datatable-container.actions-collapsed {
579
+ th[class*='actions-list-'],
580
+ td[data-head='Action'],
581
+ td[data-head='Action'][data-head],
582
+ th[class*='actions-list-'][class*='actions-list-'] {
583
+ width: auto !important;
584
+ min-width: auto !important;
585
+ max-width: none !important;
586
+ padding: 6px 10px !important;
587
+ border-width: 1px !important;
588
+ }
589
+
590
+ td[data-head='Action'] ul {
591
+ position: static;
592
+ opacity: 1;
593
+ transform: none;
594
+ background: transparent;
595
+ box-shadow: none;
596
+ border-radius: 0;
597
+ padding: 0 !important;
598
+ // keep icons on one line; the table scroller handles overflow
599
+ flex-wrap: nowrap;
600
+ white-space: nowrap;
601
+ // the ul stretches full-width in the stacked cell, so right-pack
602
+ // its icons to line up with the value column (the data-head
603
+ // label sits left).
604
+ justify-content: flex-end;
605
+ }
606
+ }
607
+ }
608
+
551
609
  // Active-sort column background: PrimeNG's preset uses its own
552
610
  // hardcoded primary; bind it to --first so the sorted column tracks
553
611
  // the tenant accent (consistent with .p-datatable-thead default bg).
@@ -630,6 +688,20 @@
630
688
  }
631
689
  }
632
690
 
691
+ // Warning categorical ramp — mirrors the blue-grey ramp above. The bare
692
+ // `.bg-warning` flat rule stays the semantic amber (Unsub, status chips);
693
+ // only the indexed `bg-warning-N` variants that appDynamicBadge emits for
694
+ // multi-value columns (e.g. product Category, app versions) get a distinct
695
+ // calm tint per value. Without this, the flat `[class*='bg-warning']` rule
696
+ // collapses every distinct value to one fill platform-wide — the regression
697
+ // the dense restyle introduced for warning-family categorical badges.
698
+ @for $i from 1 through 24 {
699
+ .primeng-datatable-container .badge.bg-warning-#{$i} {
700
+ background-color: hsl($i * 15, 18%, 92%) !important;
701
+ color: hsl($i * 15, 32%, 35%) !important;
702
+ }
703
+ }
704
+
633
705
  // Shape dot per B-2 — accessibility beyond colour alone.
634
706
  .primeng-datatable-container .badge[class*='bg-success']::before,
635
707
  .primeng-datatable-container .badge[class*='bg-danger']::before,
@@ -750,6 +822,14 @@
750
822
 
751
823
  > div {
752
824
  flex: 1 1 auto;
825
+ // Zero the intrinsic Bootstrap .col gutter padding (~5px) that
826
+ // surfaces only in the stacked mobile layout. The dropdowns sit
827
+ // in `.col-*` (padded) while the search box sits in a bare
828
+ // `.text-end` (no padding), so without this they render at
829
+ // different widths and misalign. Edge-align all three at full
830
+ // width instead.
831
+ padding-left: 0;
832
+ padding-right: 0;
753
833
  }
754
834
  }
755
835
  }
@@ -54,6 +54,17 @@ button:hover {
54
54
  }
55
55
  }
56
56
 
57
+ // Date-picker / input-group trailing toggle: match the platform's 36px input
58
+ // height so the calendar trigger stays flush with the adjacent .form-control.
59
+ // (_dynamic-styles colours `.input-group-append .btn` brand-blue but never sizes
60
+ // it, so the button rendered shorter than the input.)
61
+ .input-group-append .btn {
62
+ min-height: 36px;
63
+ display: inline-flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ }
67
+
57
68
  .btn-group,
58
69
  .input-group {
59
70
  span {
@@ -34,10 +34,6 @@
34
34
  .primeng-datatable-container {
35
35
  padding: 0 !important;
36
36
 
37
- .fa-search {
38
- display: none;
39
- }
40
-
41
37
  .col-4,
42
38
  .col-8 {
43
39
  display: block;
@@ -5129,6 +5129,18 @@ body {
5129
5129
  margin: 15px 0;
5130
5130
  padding: 5px;
5131
5131
 
5132
+ // Kill the trackpad rubber-band overscroll on the horizontal table
5133
+ // scrollers. With the default `auto`, scrolling a wide table to its right
5134
+ // edge lets you push a few px further and bounce back — reads as a "wiggle".
5135
+ // `none` suppresses the overscroll affordance entirely (`contain` would only
5136
+ // stop scroll-chaining, keeping the local bounce). Applies to the outer
5137
+ // `.table-responsive` (narrow viewports) and PrimeNG's inner
5138
+ // `.p-datatable-table-container` (the real scroller on wide views).
5139
+ &,
5140
+ .p-datatable-table-container {
5141
+ overscroll-behavior-x: none;
5142
+ }
5143
+
5132
5144
  // Used across CRM/Admin tables for MRR + totals cells
5133
5145
  .expected-mrr,
5134
5146
  .mrr-header {
@@ -5196,11 +5208,12 @@ body {
5196
5208
  }
5197
5209
 
5198
5210
  // Apply the right-corner radius to whichever cell visually sits at the
5199
- // right edge: if the last <th> is an actions-list-* (collapsed to 0px),
5200
- // the visible right edge is the previous header cell. Targeting both
5201
- // covers tables with and without the actions column.
5211
+ // right edge. In the default (classic) mode the action <th> is visible and
5212
+ // IS the last child, so `th:last-child` rounds it. Only when a view opts in
5213
+ // to `.actions-collapsed` (last <th> collapsed to 0px) does the visible right
5214
+ // edge become the previous header cell — round that one then.
5202
5215
  .primeng-datatable-container table thead tr:first-child th:last-child,
5203
- .primeng-datatable-container
5216
+ .primeng-datatable-container.actions-collapsed
5204
5217
  table
5205
5218
  thead
5206
5219
  tr:first-child