@posiwise/core-styles 1.0.21 → 1.0.22

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.21",
3
+ "version": "1.0.22",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -951,7 +951,12 @@
951
951
  outline: none;
952
952
  }
953
953
 
954
- .input-group-append .btn {
954
+ /* Brand-colour the trailing toggle (calendar / search) of an .input-group.
955
+ Migrated off the BS4 .input-group-append wrapper to BS5 direct-child
956
+ markup 2026-05-22; scoped to .btn-primary so neighbouring .btn-outline-*
957
+ buttons sharing an .input-group (e.g. account API-token Show/Hide) keep
958
+ their own colours. */
959
+ .input-group > .btn-primary {
955
960
  background: var(--first) !important;
956
961
  border: 1px solid var(--first) !important;
957
962
  color: #fff !important;
@@ -1386,6 +1391,59 @@
1386
1391
  }
1387
1392
  }
1388
1393
 
1394
+ /* Dropdown fields (.ui-fluid.skills-modal — Country, Owner, and every
1395
+ other p-autoComplete/p-multiselect) use a bare <span.pw-label-style>
1396
+ label instead of the pw-input-container wrapper. As an inline span it
1397
+ ignores its mb-2 utility and has no height lock, so the control drifts
1398
+ vertically vs sibling pw-input-container fields on the same row. Mirror
1399
+ the hard-locked .pw-input-container-label box model (18px label +
1400
+ 8px gap) so these dropdowns baseline-align with every other field.
1401
+ (Fixed 2026-05-22.) */
1402
+ .ui-fluid.skills-modal .pw-label-style {
1403
+ display: block;
1404
+ height: 18px;
1405
+ line-height: 18px;
1406
+ margin-bottom: 8px !important;
1407
+ }
1408
+
1409
+ /* CRM contact form: Potential, Labels and Source use a bare
1410
+ <span.pw-label-style> + p-select/p-multiselect WITHOUT the
1411
+ .ui-fluid.skills-modal wrapper, so the rule above misses them and their
1412
+ controls baseline-drift vs the pw-input-container fields on the same row.
1413
+ Apply the same hard-locked label box model (18px label + 8px gap, mirrors
1414
+ .pw-input-container-label). Component-scoped so it can't disturb other
1415
+ modules' bare-label workarounds (e.g. admin subscription-details
1416
+ .pw-label-style + p-multiselect margin-top). (Fixed 2026-05-22.) */
1417
+ pw-smart-crm-contact-details .pw-label-style {
1418
+ display: block;
1419
+ height: 18px;
1420
+ line-height: 18px;
1421
+ margin-bottom: 8px !important;
1422
+ }
1423
+
1424
+ /* CRM opportunity detail form: same bare-<span.pw-label-style> baseline-drift
1425
+ as the contact form (Win Chance / Currency / Categories / Stage / Features),
1426
+ BUT these labels carry the .info-circle (i) tooltip whose ::after icon is
1427
+ absolutely positioned at right:-20px relative to the label box. A full-width
1428
+ `display:block` label would push that icon to the far right edge, so use
1429
+ `display:inline-block` here — it hugs the text width (icon stays beside the
1430
+ label) while still locking the 18px label + 8px gap box model for baseline
1431
+ alignment. (Fixed 2026-05-22.) */
1432
+ pw-smart-crm-opportunities-details .pw-label-style {
1433
+ display: inline-block;
1434
+ height: 18px;
1435
+ line-height: 18px;
1436
+ margin-bottom: 8px !important;
1437
+ }
1438
+
1439
+ /* The global .pw-label-style.info-circle::after lifts the (i) icon to
1440
+ top:-7px — tuned for the old un-height-locked inline label. With the 18px
1441
+ line-height lock above, -7px floats the icon above the text; nudge it back
1442
+ onto the label's text line. (Fixed 2026-05-22.) */
1443
+ pw-smart-crm-opportunities-details .pw-label-style.info-circle::after {
1444
+ top: 1px;
1445
+ }
1446
+
1389
1447
  .toast-container {
1390
1448
  position: fixed !important;
1391
1449
  }
@@ -54,11 +54,13 @@ 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 {
57
+ // Date-picker / input-group trailing toggle: floor the brand toggle at the
58
+ // platform's 36px input height. Migrated off the BS4 `.input-group-append`
59
+ // wrapper to BS5 direct-child markup (2026-05-22): BS5 handles the flush seam
60
+ // (negative margin + squared inner corners) natively for direct `.input-group`
61
+ // children, so only the height floor remains here. Scoped to `.btn-primary` so
62
+ // neighbouring `.btn-outline-*` buttons sharing an `.input-group` are untouched.
63
+ .input-group > .btn-primary {
62
64
  min-height: 36px;
63
65
  display: inline-flex;
64
66
  align-items: center;
@@ -1,5 +1,19 @@
1
1
  @use 'sass:color';
2
2
  @use 'sass:map';
3
+
4
+ // Unified placeholder hint color for EVERY `.form-control` — not only those
5
+ // inside a `<form>`. Vanilla Bootstrap's `.form-control::placeholder`
6
+ // (`var(--bs-secondary-color)`, dark) otherwise wins on standalone inputs such
7
+ // as the CRM "Search location" field; the `body` prefix lifts specificity above
8
+ // it deterministically (independent of import order). Matches PrimeNG
9
+ // `$placeHolder` (#a8afbc) so navbar, PrimeNG, and Bootstrap inputs read alike.
10
+ body .form-control::placeholder {
11
+ color: #a8afbc; // N400 — hint, lighter than the value text
12
+ font-weight: 400;
13
+ font-style: normal;
14
+ opacity: 1; // honor color as-is (Firefox defaults placeholder opacity to 0.54)
15
+ }
16
+
3
17
  form {
4
18
  .form-text {
5
19
  display: block;
@@ -27,25 +41,9 @@ form {
27
41
  min-height: 36px; // align with p-select / p-multiselect heights
28
42
  color: rgb(128 128 128);
29
43
 
30
- /* &::input-placeholder {
31
- color: color.adjust($body-bg, $lightness: -20%);
32
- } */
33
-
34
- &:placeholder {
35
- /* Firefox 18- */
36
- color: #a8afbc; // N400 — unified with PrimeNG $placeHolder (lighter than text to read as hint, not value)
37
- }
38
-
39
- &::placeholder {
40
- /* Firefox 19+ */
41
- color: #a8afbc; // N400 — unified with PrimeNG $placeHolder (lighter than text to read as hint, not value)
42
- font-weight: 400;
43
- font-style: normal;
44
- }
45
-
46
- /* &:input-placeholder {
47
- color: color.adjust($body-bg, $lightness: -20%);
48
- } */
44
+ // Placeholder color is unified for ALL `.form-control` at file top
45
+ // (`body .form-control::placeholder`) so it also reaches inputs that
46
+ // aren't wrapped in a `<form>`. Don't re-scope it here.
49
47
 
50
48
  &:focus:not([readonly]):not(:disabled) {
51
49
  border-color: rgb(0 0 0);
@@ -388,10 +388,15 @@ body {
388
388
 
389
389
  .p-autocomplete-multiple-container,
390
390
  .ui-fluid.skills-modal p-autocomplete {
391
- background: transparent;
392
-
391
+ // `.skills-modal` autocompletes historically forced a transparent fill —
392
+ // a chip-picker hack so a multi-select input blended into its chip
393
+ // container — which also leaked onto single-selects, making them read as
394
+ // "see-through" next to white sibling fields (e.g. CloudOlive
395
+ // accounts/add CRM-account vs vendor-account). The transparent override is
396
+ // removed so both single- and multi-select render on the standard PrimeNG
397
+ // field background, matching every other p-select / p-inputtext /
398
+ // autocomplete on screen.
393
399
  .p-autocomplete-input {
394
- background: transparent;
395
400
  border: 1px solid rgb(128 128 128);
396
401
  }
397
402