@posiwise/core-styles 1.0.18 → 1.0.20

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.18",
3
+ "version": "1.0.20",
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'] {
@@ -474,6 +492,23 @@
474
492
  border-width: 0 !important; // collapse the residual 2px from transparent borders
475
493
  }
476
494
 
495
+ // Non-conformant tables: some Action headers use a bare <th> with no
496
+ // `actions-list-*` class, so the rules above leave the "ACTIONS" header
497
+ // visible while the icons still float (the hybrid state). The Action
498
+ // column is always last, so collapse the last header cell of any table
499
+ // that actually has an Action body cell. (Added 2026-05-22.)
500
+ table:has(td[data-head='Action']) thead tr th:last-child {
501
+ width: 0 !important;
502
+ min-width: 0 !important;
503
+ max-width: 0 !important;
504
+ padding: 0 !important;
505
+ font-size: 0 !important;
506
+ color: transparent !important;
507
+ border-color: transparent !important;
508
+ border-width: 0 !important;
509
+ overflow: hidden !important;
510
+ }
511
+
477
512
  td[data-head='Action'] {
478
513
  position: relative;
479
514
  overflow: visible !important;
@@ -557,7 +592,7 @@
557
592
  // horizontally below 1200px (admin-list-view.md T-7), so the reserved
558
593
  // column width simply joins that scroll. Codified 2026-05-21.
559
594
  @media (hover: none) {
560
- .primeng-datatable-container {
595
+ .primeng-datatable-container.actions-collapsed {
561
596
  th[class*='actions-list-'],
562
597
  td[data-head='Action'],
563
598
  td[data-head='Action'][data-head],
@@ -670,6 +705,20 @@
670
705
  }
671
706
  }
672
707
 
708
+ // Warning categorical ramp — mirrors the blue-grey ramp above. The bare
709
+ // `.bg-warning` flat rule stays the semantic amber (Unsub, status chips);
710
+ // only the indexed `bg-warning-N` variants that appDynamicBadge emits for
711
+ // multi-value columns (e.g. product Category, app versions) get a distinct
712
+ // calm tint per value. Without this, the flat `[class*='bg-warning']` rule
713
+ // collapses every distinct value to one fill platform-wide — the regression
714
+ // the dense restyle introduced for warning-family categorical badges.
715
+ @for $i from 1 through 24 {
716
+ .primeng-datatable-container .badge.bg-warning-#{$i} {
717
+ background-color: hsl($i * 15, 18%, 92%) !important;
718
+ color: hsl($i * 15, 32%, 35%) !important;
719
+ }
720
+ }
721
+
673
722
  // Shape dot per B-2 — accessibility beyond colour alone.
674
723
  .primeng-datatable-container .badge[class*='bg-success']::before,
675
724
  .primeng-datatable-container .badge[class*='bg-danger']::before,
@@ -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 {
@@ -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