novo-elements 13.2.0 → 13.3.0

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.
Files changed (119) hide show
  1. package/elements/breadcrumbs/Breadcrumb.scss +1 -1
  2. package/elements/button/styles/button-dialogue.scss +12 -0
  3. package/elements/button/styles/button-icon.scss +20 -0
  4. package/elements/button/styles/button-primary.scss +16 -1
  5. package/elements/button/styles/button-secondary.scss +14 -1
  6. package/elements/button/styles/button-standard.scss +14 -0
  7. package/elements/button/styles/button.scss +11 -0
  8. package/elements/card/Card.scss +80 -19
  9. package/elements/card/CardContent.scss +3 -0
  10. package/elements/card/CardHeader.scss +23 -0
  11. package/elements/card/index.d.ts +5 -3
  12. package/elements/category-dropdown/CategoryDropdown.scss +1 -1
  13. package/elements/checkbox/CheckList.scss +69 -0
  14. package/elements/checkbox/Checkbox.scss +104 -0
  15. package/elements/chips/Chip.scss +3 -1
  16. package/elements/common/index.d.ts +14 -4
  17. package/elements/common/option/option.component.scss +11 -0
  18. package/elements/data-table/data-table.component.scss +81 -3
  19. package/elements/data-table/pagination/data-table-pagination.component.scss +73 -0
  20. package/elements/date-picker/DatePicker.scss +1 -6
  21. package/elements/date-time-picker/_DateTimePicker.scss +1 -1
  22. package/elements/dropdown/Dropdown.scss +17 -1
  23. package/elements/field/field.scss +10 -6
  24. package/elements/field/hint/hint.scss +6 -0
  25. package/elements/form/ControlGroup.scss +13 -0
  26. package/elements/form/Form.scss +46 -0
  27. package/elements/header/Header.scss +45 -3
  28. package/elements/layout/index.d.ts +10 -2
  29. package/elements/list/list-item-content.scss +11 -10
  30. package/elements/menu/menu-content.component.scss +1 -0
  31. package/elements/modal/modal.component.scss +3 -13
  32. package/elements/modal/notification.component.scss +1 -6
  33. package/elements/picker/extras/picker-results/PickerResults.scss +51 -0
  34. package/elements/progress/Progress.scss +8 -0
  35. package/elements/progress/ProgressBar.scss +4 -1
  36. package/elements/search/SearchBox.scss +53 -0
  37. package/elements/search/index.d.ts +19 -9
  38. package/elements/select/Select.scss +1 -0
  39. package/elements/simple-table/table.scss +1 -1
  40. package/elements/stepper/stepper.component.scss +4 -4
  41. package/elements/switch/Switch.scss +39 -3
  42. package/elements/tabbed-group-picker/TabbedGroupPicker.scss +47 -0
  43. package/elements/tabs/tab.scss +17 -14
  44. package/elements/tiles/Tiles.scss +24 -2
  45. package/elements/time-picker/TimePicker.scss +2 -2
  46. package/elements/tip-well/TipWell.scss +34 -0
  47. package/elements/tip-well/index.d.ts +5 -1
  48. package/elements/toolbar/toolbar.component.scss +15 -0
  49. package/elements/tooltip/Tooltip.scss +1 -6
  50. package/fesm2022/novo-elements-elements-breadcrumbs.mjs +3 -3
  51. package/fesm2022/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  52. package/fesm2022/novo-elements-elements-button.mjs +2 -2
  53. package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
  54. package/fesm2022/novo-elements-elements-card.mjs +27 -21
  55. package/fesm2022/novo-elements-elements-card.mjs.map +1 -1
  56. package/fesm2022/novo-elements-elements-category-dropdown.mjs +2 -2
  57. package/fesm2022/novo-elements-elements-category-dropdown.mjs.map +1 -1
  58. package/fesm2022/novo-elements-elements-checkbox.mjs +4 -4
  59. package/fesm2022/novo-elements-elements-checkbox.mjs.map +1 -1
  60. package/fesm2022/novo-elements-elements-chips.mjs +2 -2
  61. package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
  62. package/fesm2022/novo-elements-elements-common.mjs +48 -17
  63. package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
  64. package/fesm2022/novo-elements-elements-data-table.mjs +4 -4
  65. package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
  66. package/fesm2022/novo-elements-elements-date-picker.mjs +2 -2
  67. package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
  68. package/fesm2022/novo-elements-elements-date-time-picker.mjs +2 -2
  69. package/fesm2022/novo-elements-elements-date-time-picker.mjs.map +1 -1
  70. package/fesm2022/novo-elements-elements-dropdown.mjs +2 -2
  71. package/fesm2022/novo-elements-elements-dropdown.mjs.map +1 -1
  72. package/fesm2022/novo-elements-elements-field.mjs +4 -4
  73. package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
  74. package/fesm2022/novo-elements-elements-form.mjs +7 -7
  75. package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
  76. package/fesm2022/novo-elements-elements-header.mjs +2 -2
  77. package/fesm2022/novo-elements-elements-header.mjs.map +1 -1
  78. package/fesm2022/novo-elements-elements-layout.mjs +29 -13
  79. package/fesm2022/novo-elements-elements-layout.mjs.map +1 -1
  80. package/fesm2022/novo-elements-elements-list.mjs +2 -2
  81. package/fesm2022/novo-elements-elements-list.mjs.map +1 -1
  82. package/fesm2022/novo-elements-elements-menu.mjs +2 -2
  83. package/fesm2022/novo-elements-elements-menu.mjs.map +1 -1
  84. package/fesm2022/novo-elements-elements-modal.mjs +4 -4
  85. package/fesm2022/novo-elements-elements-modal.mjs.map +1 -1
  86. package/fesm2022/novo-elements-elements-picker.mjs +4 -4
  87. package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
  88. package/fesm2022/novo-elements-elements-progress.mjs +4 -4
  89. package/fesm2022/novo-elements-elements-progress.mjs.map +1 -1
  90. package/fesm2022/novo-elements-elements-search.mjs +63 -17
  91. package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
  92. package/fesm2022/novo-elements-elements-select.mjs +2 -2
  93. package/fesm2022/novo-elements-elements-select.mjs.map +1 -1
  94. package/fesm2022/novo-elements-elements-simple-table.mjs +4 -4
  95. package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
  96. package/fesm2022/novo-elements-elements-stepper.mjs +6 -6
  97. package/fesm2022/novo-elements-elements-stepper.mjs.map +1 -1
  98. package/fesm2022/novo-elements-elements-switch.mjs +2 -2
  99. package/fesm2022/novo-elements-elements-switch.mjs.map +1 -1
  100. package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs +2 -2
  101. package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  102. package/fesm2022/novo-elements-elements-tabs.mjs +4 -4
  103. package/fesm2022/novo-elements-elements-tabs.mjs.map +1 -1
  104. package/fesm2022/novo-elements-elements-tiles.mjs +2 -2
  105. package/fesm2022/novo-elements-elements-tiles.mjs.map +1 -1
  106. package/fesm2022/novo-elements-elements-time-picker.mjs +2 -2
  107. package/fesm2022/novo-elements-elements-time-picker.mjs.map +1 -1
  108. package/fesm2022/novo-elements-elements-tip-well.mjs +26 -6
  109. package/fesm2022/novo-elements-elements-tip-well.mjs.map +1 -1
  110. package/fesm2022/novo-elements-elements-toolbar.mjs +2 -2
  111. package/fesm2022/novo-elements-elements-toolbar.mjs.map +1 -1
  112. package/fesm2022/novo-elements-elements-tooltip.mjs +2 -2
  113. package/fesm2022/novo-elements-elements-tooltip.mjs.map +1 -1
  114. package/fesm2022/novo-elements-utils.mjs +4822 -364
  115. package/fesm2022/novo-elements-utils.mjs.map +1 -1
  116. package/package.json +1 -1
  117. package/styles/content/links.scss +4 -0
  118. package/styles/themes/bh2026.scss +131 -53
  119. package/utils/index.d.ts +2 -2
@@ -618,11 +618,89 @@ novo-data-table {
618
618
  }
619
619
  }
620
620
 
621
- // bh2026: stronger, subtler column headers
621
+ // bh2026: banded rows, horizontal borders, modern spacing
622
622
  [data-theme='bh2026'] {
623
623
  .novo-data-table-header-cell,
624
624
  .novo-data-table-header-cell > label {
625
- font-weight: 600;
626
- color: var(--color-content-subtle, #8ca1b9);
625
+ font-weight: var(--typography-font-weight-600);
626
+ font-size: var(--font-size-caption);
627
+ color: var(--color-text-subtle);
628
+ }
629
+
630
+ .novo-data-table-row,
631
+ .novo-data-table-header-row {
632
+ border-bottom: var(--border-width-border-default) solid var(--color-border-subtle);
633
+ }
634
+
635
+ .novo-data-table-cell,
636
+ .novo-data-table-header-cell {
637
+ padding: var(--spacing-padding-sm) var(--spacing-padding-md);
638
+ color: var(--color-text-body);
639
+ }
640
+
641
+ // Restore zero vertical padding on action/control cells — the general rule above overrides
642
+ // the base .button-cell / .dropdown-cell padding: 0 5px, putting 8px above/below the button.
643
+ .novo-data-table-cell {
644
+ &.button-cell,
645
+ &.dropdown-cell,
646
+ &.expand-cell,
647
+ &.checkbox-cell {
648
+ padding-top: 0;
649
+ padding-bottom: 0;
650
+ }
651
+ }
652
+
653
+ .novo-data-table-cell.clickable {
654
+ color: var(--color-text-link);
655
+ }
656
+
657
+ cdk-table {
658
+ > .novo-data-table-row:nth-of-type(odd) {
659
+ .novo-data-table-cell,
660
+ .novo-data-table-button-cell,
661
+ .novo-data-table-dropdown-cell,
662
+ .novo-data-table-expand-cell,
663
+ .novo-data-table-checkbox-cell {
664
+ // To enable every-other "banded" styling change to --color-background-muted
665
+ background-color: var(--background-body);
666
+ }
667
+ + .novo-data-table-detail-row {
668
+ // To enable every-other "banded" styling change to --color-background-muted
669
+ background-color: var(--background-body);
670
+ }
671
+ }
672
+ > .novo-data-table-row:nth-of-type(even) {
673
+ .novo-data-table-cell,
674
+ .novo-data-table-button-cell,
675
+ .novo-data-table-dropdown-cell,
676
+ .novo-data-table-expand-cell,
677
+ .novo-data-table-checkbox-cell {
678
+ background-color: var(--background-body);
679
+ }
680
+ + .novo-data-table-detail-row {
681
+ background-color: var(--background-body);
682
+ }
683
+ }
684
+ > .novo-data-table-row:hover {
685
+ .novo-data-table-cell,
686
+ .novo-data-table-button-cell,
687
+ .novo-data-table-dropdown-cell,
688
+ .novo-data-table-expand-cell,
689
+ .novo-data-table-checkbox-cell {
690
+ background-color: var(--color-background-subtle);
691
+ }
692
+ }
693
+ > .novo-data-table-row.active {
694
+ .novo-data-table-cell,
695
+ .novo-data-table-button-cell,
696
+ .novo-data-table-dropdown-cell,
697
+ .novo-data-table-expand-cell,
698
+ .novo-data-table-checkbox-cell {
699
+ background-color: var(--color-utility-blue-100);
700
+ }
701
+ + .novo-data-table-detail-row {
702
+ background-color: var(--color-utility-blue-100);
703
+ }
704
+ }
627
705
  }
628
706
  }
@@ -107,6 +107,7 @@ $breakpoint: 1000px;
107
107
  font-size: var(--font-size-text);
108
108
  border-radius: var(--border-radius-xsm, 2px);
109
109
  list-style-type: none;
110
+ margin-top: 3px;
110
111
  cursor: pointer;
111
112
  color: var(--color-company);
112
113
  &.disabled {
@@ -126,3 +127,75 @@ $breakpoint: 1000px;
126
127
  }
127
128
  }
128
129
  }
130
+
131
+ :host-context([data-theme='bh2026']) {
132
+ &.standard {
133
+ align-items: center;
134
+ border-top: 1px solid var(--pagination-color-border-default, var(--border));
135
+ padding: var(--spacing-padding-sm) var(--spacing-padding-sm) 0 var(--spacing-padding-md);
136
+
137
+ > * {
138
+ margin: 0;
139
+ }
140
+
141
+ h5.rows {
142
+ color: var(--pagination-color-content-label, var(--text-muted));
143
+ font-size: var(--typography-font-size-12);
144
+ font-weight: var(--typography-meta-sm-font-weight);
145
+ letter-spacing: var(--typography-meta-sm-letter-spacing);
146
+ line-height: var(--typography-meta-sm-line-height);
147
+ margin-right: var(--spacing-gap-sm);
148
+ opacity: 1;
149
+ padding: 0;
150
+ text-transform: uppercase;
151
+ white-space: nowrap;
152
+ }
153
+
154
+ novo-select {
155
+ color: var(--text-muted);
156
+ max-width: 60px;
157
+ min-width: 60px;
158
+ margin-right: var(--spacing-gap-sm);
159
+
160
+ ::ng-deep .novo-select-trigger {
161
+ height: var(--spacing-padding-xlg);
162
+ width: 5rem;
163
+
164
+ i.bhi-collapse::before {
165
+ content: "\f226"; // bhi-sort-desc - all code points are fixed in bullhorn-icons
166
+ }
167
+
168
+ span.text-ellipsis {
169
+ color: var(--button-color-select-color-content-value, var(--text-secondary));
170
+ font-size: var(--typography-button-default-font-size, var(--font-size-body));
171
+ font-weight: var(--typography-button-default-font-weight, var(--typography-body-default-font-weight));
172
+ letter-spacing: var(--typography-button-default-letter-spacing, var(--typography-body-default-letter-spacing));
173
+ line-height: var(--typography-button-default-line-height, var(--typography-line-height-20));
174
+ }
175
+ }
176
+ }
177
+
178
+ .novo-data-table-of-total-amount {
179
+ color: var(--pagination-color-content-label, var(--text-muted));
180
+ font-size: var(--typography-font-size-12);
181
+ font-weight: var(--typography-meta-sm-font-weight);
182
+ }
183
+
184
+ .pager {
185
+ gap: var(--data-table-spacing-gap, 0);
186
+
187
+ .page {
188
+ border-radius: var(--border-radius-xsm);
189
+ color: var(--pagination-color-content-label, var(--text-muted));
190
+ font-size: var(--typography-font-size-12);
191
+ font-weight: var(--typography-meta-sm-font-weight);
192
+
193
+ &.active {
194
+ background: var(--color-background-subtle, var(--background-muted));
195
+ border: 1px solid var(--pagination-color-border-default, var(--border));
196
+ opacity: 1;
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
@@ -3,7 +3,7 @@
3
3
  :host {
4
4
  display: block;
5
5
  .date-picker-container {
6
- border-radius: var(--border-radius-default, 4px);
6
+ border-radius: var(--border-radius-sm, 4px);
7
7
  width: min-content;
8
8
  text-align: center;
9
9
  background: var(--background-main);
@@ -219,8 +219,3 @@
219
219
  display: block;
220
220
  }
221
221
  }
222
-
223
- // bh2026: rounder calendar
224
- :host-context([data-theme='bh2026']) .date-picker-container {
225
- border-radius: var(--calendar-radius, 0.8rem);
226
- }
@@ -6,7 +6,7 @@ $time-select-height: 45px;
6
6
  display: block;
7
7
  width: min-content;
8
8
  overflow: hidden;
9
- border-radius: var(--border-radius-default, 4px);
9
+ border-radius: var(--border-radius-sm, 4px);
10
10
  background-color: var(--background-bright);
11
11
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15), 0 2px 7px rgba(0, 0, 0, 0.1);
12
12
  z-index: z(max);
@@ -16,13 +16,29 @@
16
16
  font-size: 0.8em !important;
17
17
  width: 1em !important;
18
18
  height: 1em !important;
19
- margin: 0 0.5em;
19
+ margin: 0 var(--button-icon-margin, 0.5em);
20
20
  }
21
21
  }
22
22
  }
23
23
 
24
+ // bh2026: swap out the collapse icon for the sort-desc icon and style to ensure proper placement
25
+ :host-context([data-theme='bh2026']) {
26
+ ::ng-deep .novo-button-icon {
27
+ font-size: 1em !important;
28
+ }
29
+ ::ng-deep i.bhi-collapse {
30
+ display: inline-flex !important;
31
+ align-items: center;
32
+ justify-content: center;
33
+ }
34
+ ::ng-deep i.bhi-collapse::before {
35
+ content: "\f226"; // bhi-sort-desc - all code points are fixed in bullhorn-icons
36
+ }
37
+ }
38
+
24
39
  .dropdown-container {
25
40
  background-color: var(--background-bright, $color-bright);
41
+ border-radius: var(--border-radius-sm);
26
42
  list-style: none;
27
43
  margin: 0;
28
44
  padding: 0;
@@ -109,15 +109,19 @@
109
109
  }
110
110
  }
111
111
 
112
- // bh2026: lighter label
112
+ // bh2026: uppercase label + tighter value typography per Figma "Value - Finalized" spec
113
113
  :host-context([data-theme='bh2026']) {
114
114
  .novo-field-label {
115
- font-weight: 600;
116
- font-size: 1rem;
117
- color: var(--color-content-subtle, #8ca1b9);
115
+ text-transform: var(--typography-input-label-sm-text-transform);
116
+ ::ng-deep novo-label {
117
+ font-weight: var(--typography-input-label-sm-font-weight);
118
+ font-size: var(--typography-input-label-sm-font-size);
119
+ letter-spacing: var(--typography-input-label-sm-letter-spacing);
120
+ color: var(--color-text-body);
121
+ }
118
122
  }
119
123
  .novo-field-input ::ng-deep .novo-input-element {
120
- font-size: 1.4rem;
121
- font-weight: 500;
124
+ font-size: var(--typography-input-value-default-font-size);
125
+ font-weight: var(--typography-input-value-default-font-weight);
122
126
  }
123
127
  }
@@ -16,3 +16,9 @@
16
16
  justify-content: flex-end;
17
17
  }
18
18
  }
19
+
20
+ :host-context([data-theme='bh2026']) {
21
+ font-size: var(--typography-input-value-sm-font-size);
22
+ font-weight: var(--typography-input-value-sm-font-weight);
23
+ color: var(--color-text-subtle);
24
+ }
@@ -50,6 +50,19 @@ novo-control-group {
50
50
  }
51
51
  }
52
52
 
53
+ // bh2026: description text and column-header labels match decoration weight/size of hint and field-message
54
+ [data-theme='bh2026'] & {
55
+ .novo-section-header label.novo-control-group-description {
56
+ font-size: var(--typography-input-value-sm-font-size);
57
+ font-weight: var(--typography-input-value-sm-font-weight);
58
+ color: var(--color-text-subtle);
59
+ }
60
+ .novo-control-group-labels .novo-control-group-control-label > span {
61
+ font-size: var(--typography-input-value-sm-font-size);
62
+ font-weight: var(--typography-input-value-sm-font-weight);
63
+ }
64
+ }
65
+
53
66
  .novo-control-group-controls {
54
67
  display: flex;
55
68
  flex-wrap: nowrap;
@@ -819,3 +819,49 @@ control-prompt-modal {
819
819
  min-width: 110px;
820
820
  }
821
821
  }
822
+
823
+ // bh2026: uppercase label + tighter value typography per Figma "Value - Finalized" spec
824
+ // ViewEncapsulation.None: use plain selectors (not :host-context which is Shadow DOM only)
825
+ :root[data-theme='bh2026'] {
826
+ label.novo-control-label {
827
+ &.novo-control-filled,
828
+ &.novo-control-focused,
829
+ &.novo-control-always-active {
830
+ font-weight: var(--typography-input-label-sm-font-weight) !important;
831
+ font-size: var(--typography-input-label-sm-font-size) !important;
832
+ letter-spacing: var(--typography-input-label-sm-letter-spacing);
833
+ text-transform: var(--typography-input-label-sm-text-transform);
834
+ color: var(--color-text-body) !important;
835
+ }
836
+ }
837
+ .novo-form-control-label {
838
+ font-weight: var(--typography-input-label-sm-font-weight) !important;
839
+ font-size: var(--typography-input-label-sm-font-size) !important;
840
+ letter-spacing: var(--typography-input-label-sm-letter-spacing);
841
+ text-transform: var(--typography-input-label-sm-text-transform);
842
+ color: var(--color-text-body) !important;
843
+ }
844
+ .novo-control-outer-container input:not([type='checkbox']):not([type='radio']) {
845
+ font-size: var(--typography-input-value-default-font-size) !important;
846
+ font-weight: var(--typography-input-value-default-font-weight) !important;
847
+ }
848
+ .field-message,
849
+ novo-tip-well.active {
850
+ font-size: var(--typography-input-value-sm-font-size);
851
+ font-weight: var(--typography-input-value-sm-font-weight);
852
+ color: var(--color-text-subtle);
853
+
854
+ // $grey is a compile-time SCSS variable — explicit selectors required to override
855
+ .character-count,
856
+ .record-count {
857
+ font-size: var(--typography-input-value-sm-font-size);
858
+ color: var(--color-text-subtle);
859
+ }
860
+ }
861
+ .error-message {
862
+ .character-count {
863
+ font-size: var(--typography-input-value-sm-font-size);
864
+ color: var(--color-text-subtle);
865
+ }
866
+ }
867
+ }
@@ -152,9 +152,51 @@
152
152
  }
153
153
  }
154
154
 
155
- // bh2026: soften the entity-accent underline
155
+ // bh2026: frosted translucent header + entity squircle icon
156
156
  :host-context([data-theme='bh2026']) {
157
- &[class*='novo-accent-'] > section:first-of-type {
158
- border-bottom: 1px solid var(--color-border-default, #f0f5f9);
157
+ & > section {
158
+ gap: var(--spacing-gap-lg);
159
+ }
160
+
161
+ .header-actions {
162
+ gap: var(--spacing-gap-sm);
163
+ }
164
+
165
+ ::ng-deep utils,
166
+ ::ng-deep novo-utils {
167
+ gap: var(--spacing-gap-sm);
168
+ }
169
+
170
+ &[class*='novo-accent-'] {
171
+ background: var(--header-background, var(--color-transparency-white-90));
172
+ backdrop-filter: blur(12px);
173
+ box-shadow: 0 1px 2px var(--color-transparency-black-10);
174
+ padding-top: var(--spacing-md);
175
+ padding-left: var(--spacing-lg);
176
+ padding-right: var(--spacing-lg);
177
+
178
+ & > section:first-of-type {
179
+ border-bottom: none;
180
+ }
181
+
182
+ utils {
183
+ color: var(--color-text-subtle);
184
+ }
185
+ }
186
+
187
+ @each $entity, $color in $entity-colors {
188
+ &.novo-accent-#{$entity} {
189
+ ::ng-deep .header-icon i {
190
+ color: var(--color-white);
191
+ background: $color;
192
+ border-radius: var(--border-radius-sm);
193
+ width: var(--typography-font-size-40);
194
+ height: var(--typography-font-size-40);
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: center;
198
+ }
199
+ }
159
200
  }
201
+ background-color: transparent;
160
202
  }
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterContentInit, ChangeDetectorRef, ElementRef, NgZone, DestroyRef, InjectionToken, AfterContentChecked, OnDestroy, EventEmitter, DoCheck, QueryList } from '@angular/core';
2
+ import { ElementRef, AfterContentInit, ChangeDetectorRef, NgZone, DestroyRef, InjectionToken, AfterContentChecked, OnDestroy, EventEmitter, DoCheck, QueryList } from '@angular/core';
3
3
  import { Directionality } from '@angular/cdk/bidi';
4
4
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
5
5
  import { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/overlay';
@@ -20,9 +20,16 @@ declare class NovoCollapsibleNavComponent {
20
20
  expandedWidth: i0.InputSignal<string>;
21
21
  /** Width of the panel when collapsed to the icon rail. */
22
22
  collapsedWidth: i0.InputSignal<string>;
23
+ /** Time in ms to delay between the user entering the nav region, and expanding it */
24
+ expandDelay: i0.InputSignal<number>;
23
25
  /** When true, hovering a collapsed panel temporarily expands it as an overlay without affecting layout. */
24
26
  overlayOnHover: i0.InputSignal<boolean>;
27
+ hoveredChange: i0.OutputEmitterRef<boolean>;
28
+ readonly element: ElementRef<any>;
29
+ private readonly destroyRef;
25
30
  private readonly isHovered;
31
+ private readonly isHoveredDebounced$;
32
+ private readonly isEffectiveHovered;
26
33
  private readonly effectiveCollapsed;
27
34
  constructor();
28
35
  onMouseEnter(): void;
@@ -34,12 +41,13 @@ declare class NovoCollapsibleNavComponent {
34
41
  collapsedWidth: string;
35
42
  };
36
43
  };
44
+ private debounceHover;
37
45
  get isCollapsed(): boolean;
38
46
  toggle(): void;
39
47
  expand(): void;
40
48
  collapse(): void;
41
49
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoCollapsibleNavComponent, never>;
42
- static ɵcmp: i0.ɵɵComponentDeclaration<NovoCollapsibleNavComponent, "novo-collapsible-nav", ["novoCollapsibleNav"], { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "overlayOnHover": { "alias": "overlayOnHover"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["[novo-collapsible-nav-header]", "[novo-collapsible-nav-body]", "[novo-collapsible-nav-footer]"], false, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<NovoCollapsibleNavComponent, "novo-collapsible-nav", ["novoCollapsibleNav"], { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "expandDelay": { "alias": "expandDelay"; "required": false; "isSignal": true; }; "overlayOnHover": { "alias": "overlayOnHover"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "hoveredChange": "hoveredChange"; }, never, ["[novo-collapsible-nav-header]", "[novo-collapsible-nav-body]", "[novo-collapsible-nav-footer]"], false, never>;
43
51
  }
44
52
 
45
53
  declare class NovoLayoutContent extends CdkScrollable implements AfterContentInit {
@@ -1,10 +1,10 @@
1
1
  @import "../../styles/variables.scss";
2
2
 
3
3
  @include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
4
- :host-context([theme="#{$name}"]) {
5
- &.novo-item-content > ::ng-deep * {
6
- color: rgba(#fff, 0.65);
7
- }
4
+ // Wonky deprecation: For 2026, stringently avoid using * selectors to apply font/color changes - prefer inherit functionality
5
+ // This setup made it very hard to provide overrides.
6
+ :host-context([theme="#{$name}"]).novo-item-content {
7
+ color: rgba(#fff, 0.65);
8
8
  }
9
9
  }
10
10
 
@@ -15,13 +15,14 @@
15
15
  :host {
16
16
  display: flex;
17
17
  margin-left: 0.2em;
18
- &.novo-item-content > ::ng-deep * {
18
+
19
+ &.novo-item-content {
19
20
  color: rgba(#434343, 0.85);
20
- }
21
- &.novo-item-content ::ng-deep i {
22
- @include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
23
- &.#{$name} {
24
- color: getCssVarname($name);
21
+ ::ng-deep i {
22
+ @include theme-colors() using ($name, $color, $contrast, $tint, $shade, $pale) {
23
+ &.#{$name} {
24
+ color: getCssVarname($name);
25
+ }
25
26
  }
26
27
  }
27
28
  }
@@ -16,6 +16,7 @@
16
16
  cursor: default;
17
17
  list-style: none;
18
18
  background-color: var(--background-bright);
19
+ border-radius: var(--border-radius-sm);
19
20
  padding-inline-start: 0px !important;
20
21
  box-shadow: $shadow-multi;
21
22
  :hover {
@@ -3,7 +3,7 @@
3
3
  :host {
4
4
  display: block;
5
5
  background-color: var(--background-bright);
6
- border-radius: var(--border-radius-default, 4px);
6
+ border-radius: var(--border-radius-md, 4px);
7
7
  box-shadow: 0 1px 7px rgba(0, 0, 0, 0.09), 0 1px 3px rgba(0, 0, 0, 0.2);
8
8
  z-index: z(modal);
9
9
  position: relative;
@@ -17,8 +17,8 @@
17
17
  }
18
18
 
19
19
  > ::ng-deep header {
20
- border-top-left-radius: 4px;
21
- border-top-right-radius: 4px;
20
+ border-top-left-radius: var(--border-radius-md, 4px);
21
+ border-top-right-radius: var(--border-radius-md, 4px);
22
22
  overflow: hidden;
23
23
 
24
24
  h1,
@@ -44,13 +44,3 @@
44
44
  }
45
45
  }
46
46
  }
47
-
48
- // bh2026: rounded modal and header top corners.
49
- :host-context([data-theme='bh2026']) {
50
- border-radius: var(--border-radius-md, 1.6rem);
51
-
52
- > ::ng-deep header {
53
- border-top-left-radius: var(--border-radius-md, 1.6rem);
54
- border-top-right-radius: var(--border-radius-md, 1.6rem);
55
- }
56
- }
@@ -4,7 +4,7 @@
4
4
  text-align: center;
5
5
  display: block;
6
6
  background-color: var(--background-bright);
7
- border-radius: var(--border-radius-default, 4px);
7
+ border-radius: var(--border-radius-md, 4px);
8
8
  box-shadow: 0 1px 7px rgba(0, 0, 0, 0.09), 0 1px 3px rgba(0, 0, 0, 0.2);
9
9
  z-index: z(modal);
10
10
  position: relative;
@@ -106,8 +106,3 @@
106
106
  }
107
107
  }
108
108
  }
109
-
110
- // bh2026: rounded notifications
111
- :host-context([data-theme='bh2026']) {
112
- border-radius: var(--border-radius-md, 1.6rem);
113
- }
@@ -44,6 +44,10 @@ entity-picker-results {
44
44
  color: black;
45
45
  }
46
46
 
47
+ > p {
48
+ margin: 0;
49
+ }
50
+
47
51
  picker-error,
48
52
  picker-loader,
49
53
  picker-null-recent-results,
@@ -167,6 +171,7 @@ entity-picker-results {
167
171
  background: $white;
168
172
  width: 100%;
169
173
  min-width: 250px;
174
+ display: block;
170
175
  novo-list {
171
176
  background: $white;
172
177
  min-width: 30rem;
@@ -300,3 +305,49 @@ distribution-list-picker-results {
300
305
  }
301
306
  }
302
307
 
308
+ // bh2026: border belongs on the host (border is not clipped by overflow:hidden),
309
+ // not on children (where overflow:hidden + border-radius clips the corners)
310
+ :root[data-theme='bh2026'] {
311
+ picker-results,
312
+ entity-picker-results {
313
+ border: 1px solid var(--color-border-default);
314
+ margin-block: var(--spacing-gap-sm);
315
+ background: var(--background-bright);
316
+
317
+ .novo-list,
318
+ novo-list,
319
+ ul {
320
+ border: none;
321
+ box-shadow: none;
322
+ }
323
+
324
+ picker-error,
325
+ picker-loader,
326
+ picker-null-recent-results,
327
+ picker-null-results,
328
+ .picker-error,
329
+ .picker-loader,
330
+ .picker-null-recent-results,
331
+ .picker-null-results {
332
+ border: none;
333
+ box-shadow: none;
334
+ }
335
+
336
+ > p {
337
+ margin: 0;
338
+ padding: var(--spacing-padding-md) var(--spacing-padding-lg);
339
+ }
340
+ }
341
+
342
+ workers-comp-codes-picker-results,
343
+ distribution-list-picker-results {
344
+ color: var(--text-secondary);
345
+ background: var(--background-body);
346
+ border-radius: var(--border-radius-sm);
347
+
348
+ .novo-list-item {
349
+ border-radius: var(--border-radius-sm);
350
+ }
351
+ }
352
+ }
353
+
@@ -36,3 +36,11 @@
36
36
  width: 100%;
37
37
  }
38
38
  }
39
+
40
+ :host-context([data-theme='bh2026']) {
41
+ &.linear {
42
+ border-radius: var(--border-radius-pill);
43
+ background-color: var(--color-background-subtle-hover);
44
+ border-color: var(--color-border-default);
45
+ }
46
+ }
@@ -106,8 +106,11 @@
106
106
  100% { transform: translateX(0%) }
107
107
  }
108
108
 
109
- // bh2026: pill progress bar ends (fill color rides on the deferred accent).
109
+ // bh2026: pill ends; default fill uses primary blue only when no explicit color is set
110
110
  :host-context([data-theme='bh2026']) {
111
+ &.linear:not([color]) {
112
+ background-color: var(--button-primary-background);
113
+ }
111
114
  &.linear:first-child {
112
115
  border-radius: 999px 0 0 999px;
113
116
  }