novo-elements 13.2.0 → 13.3.0-next.2

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 (137) hide show
  1. package/addons/ckeditor/CKEditor.scss +8 -0
  2. package/elements/agenda/week/AgendaWeekView.scss +1 -1
  3. package/elements/breadcrumbs/Breadcrumb.scss +1 -1
  4. package/elements/button/styles/button-dialogue.scss +12 -0
  5. package/elements/button/styles/button-icon.scss +20 -0
  6. package/elements/button/styles/button-primary.scss +16 -1
  7. package/elements/button/styles/button-secondary.scss +14 -1
  8. package/elements/button/styles/button-standard.scss +14 -0
  9. package/elements/button/styles/button.scss +12 -1
  10. package/elements/card/Card.scss +80 -19
  11. package/elements/card/CardContent.scss +3 -0
  12. package/elements/card/CardHeader.scss +23 -0
  13. package/elements/card/index.d.ts +5 -3
  14. package/elements/category-dropdown/CategoryDropdown.scss +1 -1
  15. package/elements/checkbox/CheckList.scss +69 -0
  16. package/elements/checkbox/Checkbox.scss +104 -0
  17. package/elements/chips/Chip.scss +47 -1
  18. package/elements/chips/Chips.scss +9 -0
  19. package/elements/common/index.d.ts +14 -4
  20. package/elements/common/option/option.component.scss +11 -0
  21. package/elements/common/typography/text.mixins.scss +1 -1
  22. package/elements/data-table/data-table.component.scss +81 -3
  23. package/elements/data-table/pagination/data-table-pagination.component.scss +73 -0
  24. package/elements/date-picker/DatePicker.scss +1 -6
  25. package/elements/date-picker/DatePickerInput.scss +5 -0
  26. package/elements/date-time-picker/_DateTimePicker.scss +1 -1
  27. package/elements/dropdown/Dropdown.scss +17 -1
  28. package/elements/field/field.scss +10 -6
  29. package/elements/field/hint/hint.scss +6 -0
  30. package/elements/form/ControlGroup.scss +13 -0
  31. package/elements/form/Form.scss +272 -1
  32. package/elements/form/extras/address/Address.scss +77 -0
  33. package/elements/form/fieldset-header.scss +32 -0
  34. package/elements/form/index.d.ts +14 -4
  35. package/elements/header/Header.scss +45 -3
  36. package/elements/layout/index.d.ts +28 -4
  37. package/elements/list/list-item-content.scss +11 -10
  38. package/elements/menu/menu-content.component.scss +1 -0
  39. package/elements/modal/modal.component.scss +3 -13
  40. package/elements/modal/notification.component.scss +1 -6
  41. package/elements/picker/Picker.scss +26 -5
  42. package/elements/picker/extras/picker-results/PickerResults.scss +52 -0
  43. package/elements/progress/Progress.scss +8 -0
  44. package/elements/progress/ProgressBar.scss +4 -1
  45. package/elements/search/SearchBox.scss +53 -0
  46. package/elements/search/index.d.ts +19 -9
  47. package/elements/select/Select.scss +1 -1
  48. package/elements/simple-table/table.scss +1 -1
  49. package/elements/stepper/stepper.component.scss +4 -4
  50. package/elements/switch/Switch.scss +39 -3
  51. package/elements/tabbed-group-picker/TabbedGroupPicker.scss +47 -0
  52. package/elements/tabs/tab.scss +53 -14
  53. package/elements/tiles/Tiles.scss +24 -2
  54. package/elements/time-picker/TimePicker.scss +2 -2
  55. package/elements/time-picker/TimePickerInput.scss +7 -2
  56. package/elements/tip-well/TipWell.scss +53 -0
  57. package/elements/tip-well/index.d.ts +5 -1
  58. package/elements/toolbar/toolbar.component.scss +15 -0
  59. package/elements/tooltip/Tooltip.scss +19 -22
  60. package/elements/tooltip/index.d.ts +2 -1
  61. package/fesm2022/novo-elements-addons-ckeditor.mjs +2 -2
  62. package/fesm2022/novo-elements-addons-ckeditor.mjs.map +1 -1
  63. package/fesm2022/novo-elements-elements-agenda.mjs +2 -2
  64. package/fesm2022/novo-elements-elements-breadcrumbs.mjs +3 -3
  65. package/fesm2022/novo-elements-elements-breadcrumbs.mjs.map +1 -1
  66. package/fesm2022/novo-elements-elements-button.mjs +2 -2
  67. package/fesm2022/novo-elements-elements-button.mjs.map +1 -1
  68. package/fesm2022/novo-elements-elements-card.mjs +27 -21
  69. package/fesm2022/novo-elements-elements-card.mjs.map +1 -1
  70. package/fesm2022/novo-elements-elements-category-dropdown.mjs +2 -2
  71. package/fesm2022/novo-elements-elements-category-dropdown.mjs.map +1 -1
  72. package/fesm2022/novo-elements-elements-checkbox.mjs +4 -4
  73. package/fesm2022/novo-elements-elements-checkbox.mjs.map +1 -1
  74. package/fesm2022/novo-elements-elements-chips.mjs +6 -6
  75. package/fesm2022/novo-elements-elements-chips.mjs.map +1 -1
  76. package/fesm2022/novo-elements-elements-common.mjs +52 -21
  77. package/fesm2022/novo-elements-elements-common.mjs.map +1 -1
  78. package/fesm2022/novo-elements-elements-data-table.mjs +4 -4
  79. package/fesm2022/novo-elements-elements-data-table.mjs.map +1 -1
  80. package/fesm2022/novo-elements-elements-date-picker.mjs +4 -4
  81. package/fesm2022/novo-elements-elements-date-picker.mjs.map +1 -1
  82. package/fesm2022/novo-elements-elements-date-time-picker.mjs +2 -2
  83. package/fesm2022/novo-elements-elements-date-time-picker.mjs.map +1 -1
  84. package/fesm2022/novo-elements-elements-dropdown.mjs +2 -2
  85. package/fesm2022/novo-elements-elements-dropdown.mjs.map +1 -1
  86. package/fesm2022/novo-elements-elements-field.mjs +4 -4
  87. package/fesm2022/novo-elements-elements-field.mjs.map +1 -1
  88. package/fesm2022/novo-elements-elements-form.mjs +145 -92
  89. package/fesm2022/novo-elements-elements-form.mjs.map +1 -1
  90. package/fesm2022/novo-elements-elements-header.mjs +2 -2
  91. package/fesm2022/novo-elements-elements-header.mjs.map +1 -1
  92. package/fesm2022/novo-elements-elements-layout.mjs +73 -14
  93. package/fesm2022/novo-elements-elements-layout.mjs.map +1 -1
  94. package/fesm2022/novo-elements-elements-list.mjs +2 -2
  95. package/fesm2022/novo-elements-elements-list.mjs.map +1 -1
  96. package/fesm2022/novo-elements-elements-menu.mjs +2 -2
  97. package/fesm2022/novo-elements-elements-menu.mjs.map +1 -1
  98. package/fesm2022/novo-elements-elements-modal.mjs +4 -4
  99. package/fesm2022/novo-elements-elements-modal.mjs.map +1 -1
  100. package/fesm2022/novo-elements-elements-multi-picker.mjs +2 -2
  101. package/fesm2022/novo-elements-elements-multi-picker.mjs.map +1 -1
  102. package/fesm2022/novo-elements-elements-picker.mjs +6 -6
  103. package/fesm2022/novo-elements-elements-picker.mjs.map +1 -1
  104. package/fesm2022/novo-elements-elements-progress.mjs +4 -4
  105. package/fesm2022/novo-elements-elements-progress.mjs.map +1 -1
  106. package/fesm2022/novo-elements-elements-search.mjs +63 -17
  107. package/fesm2022/novo-elements-elements-search.mjs.map +1 -1
  108. package/fesm2022/novo-elements-elements-select.mjs +2 -2
  109. package/fesm2022/novo-elements-elements-select.mjs.map +1 -1
  110. package/fesm2022/novo-elements-elements-simple-table.mjs +4 -4
  111. package/fesm2022/novo-elements-elements-simple-table.mjs.map +1 -1
  112. package/fesm2022/novo-elements-elements-stepper.mjs +6 -6
  113. package/fesm2022/novo-elements-elements-stepper.mjs.map +1 -1
  114. package/fesm2022/novo-elements-elements-switch.mjs +2 -2
  115. package/fesm2022/novo-elements-elements-switch.mjs.map +1 -1
  116. package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs +2 -2
  117. package/fesm2022/novo-elements-elements-tabbed-group-picker.mjs.map +1 -1
  118. package/fesm2022/novo-elements-elements-tabs.mjs +4 -4
  119. package/fesm2022/novo-elements-elements-tabs.mjs.map +1 -1
  120. package/fesm2022/novo-elements-elements-tiles.mjs +2 -2
  121. package/fesm2022/novo-elements-elements-tiles.mjs.map +1 -1
  122. package/fesm2022/novo-elements-elements-time-picker.mjs +4 -4
  123. package/fesm2022/novo-elements-elements-time-picker.mjs.map +1 -1
  124. package/fesm2022/novo-elements-elements-tip-well.mjs +26 -6
  125. package/fesm2022/novo-elements-elements-tip-well.mjs.map +1 -1
  126. package/fesm2022/novo-elements-elements-toolbar.mjs +2 -2
  127. package/fesm2022/novo-elements-elements-toolbar.mjs.map +1 -1
  128. package/fesm2022/novo-elements-elements-tooltip.mjs +8 -4
  129. package/fesm2022/novo-elements-elements-tooltip.mjs.map +1 -1
  130. package/fesm2022/novo-elements-utils.mjs +4822 -364
  131. package/fesm2022/novo-elements-utils.mjs.map +1 -1
  132. package/package.json +2 -2
  133. package/styles/content/links.scss +4 -0
  134. package/styles/themes/bh2026.scss +131 -53
  135. package/styles/typography.scss +6 -0
  136. package/styles/variables.scss +2 -0
  137. package/utils/index.d.ts +2 -2
@@ -39,6 +39,14 @@
39
39
  }
40
40
  }
41
41
 
42
+ :host-context(:root[data-theme='bh2026']) {
43
+ ::ng-deep .cke {
44
+ border: 1px solid var(--card-color-border-default, #dee0e3);
45
+ border-radius: var(--field-border-radius-default, 0.4rem);
46
+ overflow: hidden;
47
+ }
48
+ }
49
+
42
50
  :host-context(.theme-dark) {
43
51
  ::ng-deep .cke_button {
44
52
  filter: invert(1);
@@ -59,7 +59,7 @@
59
59
  text-overflow: ellipsis;
60
60
  }
61
61
  .cal-event-description {
62
- font-size: var(--font-size-xs);
62
+ font-size: var(--font-size-sm);
63
63
  line-height: 13px;
64
64
  padding: 0px 0px 0px 10px;
65
65
  overflow: hidden;
@@ -11,5 +11,5 @@
11
11
 
12
12
  // bh2026: subtle breadcrumb text.
13
13
  :host-context([data-theme='bh2026']) {
14
- color: var(--color-content-subtle, #8ca1b9);
14
+ color: var(--color-text-subtle);
15
15
  }
@@ -28,3 +28,15 @@
28
28
  }
29
29
  }
30
30
  }
31
+
32
+ :host-context([data-theme='bh2026']) {
33
+ &[theme="dialogue"] {
34
+ box-shadow: none;
35
+ &:hover,
36
+ &:focus,
37
+ &:active {
38
+ background: var(--button-dialogue-hover-background);
39
+ box-shadow: none;
40
+ }
41
+ }
42
+ }
@@ -39,3 +39,23 @@
39
39
  }
40
40
  }
41
41
  }
42
+
43
+ :host-context([data-theme='bh2026']) {
44
+ &[theme="icon"] {
45
+ height: var(--button-height);
46
+ min-width: var(--button-height);
47
+ border-radius: var(--border-radius-sm);
48
+ color: var(--color-text-subtle);
49
+ box-shadow: none;
50
+
51
+ &:focus,
52
+ &:hover {
53
+ background: var(--color-background-subtle);
54
+ box-shadow: none;
55
+ }
56
+ &:active {
57
+ background: var(--color-background-subtle-hover);
58
+ box-shadow: none;
59
+ }
60
+ }
61
+ }
@@ -11,7 +11,6 @@
11
11
 
12
12
  &:hover,
13
13
  &:focus {
14
-
15
14
  filter: brightness(1.15);
16
15
  box-shadow: var(--shadow-2), var(--shadow-1);
17
16
  }
@@ -41,3 +40,19 @@
41
40
  }
42
41
  }
43
42
  }
43
+
44
+ :host-context([data-theme='bh2026']) {
45
+ &[theme="primary"] {
46
+ &:hover,
47
+ &:focus {
48
+ filter: none;
49
+ background: var(--button-primary-background-hover);
50
+ box-shadow: var(--button-shadow-hover);
51
+ }
52
+ &:active {
53
+ filter: none;
54
+ background: var(--button-primary-background-hover);
55
+ box-shadow: var(--button-shadow-active);
56
+ }
57
+ }
58
+ }
@@ -11,7 +11,6 @@
11
11
  background: var(--color-white);
12
12
  color: var(--button-secondary-text, var(--color-positive));
13
13
  border: var(--button-secondary-border, 1px solid $positive);
14
- padding: 0 calc(#{var(--spacing-md)} - 1px);
15
14
 
16
15
  i.loading {
17
16
  margin-left: 0.8rem;
@@ -50,3 +49,17 @@
50
49
  }
51
50
  }
52
51
  }
52
+
53
+ :host-context([data-theme='bh2026']) {
54
+ &[theme="secondary"] {
55
+ &:hover,
56
+ &:focus {
57
+ border: var(--button-secondary-border-hover);
58
+ box-shadow: var(--button-shadow-hover);
59
+ }
60
+ &:active {
61
+ border: var(--button-secondary-border-hover);
62
+ box-shadow: var(--button-shadow-active);
63
+ }
64
+ }
65
+ }
@@ -15,3 +15,17 @@
15
15
  }
16
16
  }
17
17
  }
18
+
19
+ :host-context([data-theme='bh2026']) {
20
+ &[theme="standard"] {
21
+ background: var(--button-background);
22
+ &:hover {
23
+ background: var(--button-hover-background);
24
+ box-shadow: var(--button-shadow-hover);
25
+ }
26
+ &:active {
27
+ background: var(--button-hover-background);
28
+ box-shadow: var(--button-shadow-active);
29
+ }
30
+ }
31
+ }
@@ -42,7 +42,7 @@
42
42
 
43
43
  &[size="small"],
44
44
  &[size="sm"] {
45
- font-size: var(--font-size-xs);
45
+ font-size: var(--font-size-sm);
46
46
  padding: 0 var(--spacing-md);
47
47
  height: 2.4rem;
48
48
  gap: var(--spacing-sm);
@@ -115,3 +115,14 @@
115
115
  transform: rotate(360deg);
116
116
  }
117
117
  }
118
+
119
+ :host-context([data-theme='bh2026']) {
120
+ box-shadow: var(--button-shadow);
121
+
122
+ &:hover {
123
+ box-shadow: var(--button-shadow-hover);
124
+ }
125
+ &:active {
126
+ box-shadow: var(--button-shadow-active);
127
+ }
128
+ }
@@ -8,6 +8,9 @@
8
8
  border-radius: var(--border-radius-round);
9
9
  position: relative;
10
10
  overflow-x: hidden;
11
+ :root[data-theme=bh2026] & {
12
+ --spacing-md: var(--spacing-padding-md);
13
+ }
11
14
 
12
15
  &.loading {
13
16
  min-height: 200px;
@@ -57,11 +60,11 @@
57
60
  text-overflow: ellipsis;
58
61
  i {
59
62
  font-size: 1.2em;
60
- &.bhi-info {
61
- color: $light;
62
- }
63
63
  }
64
64
  }
65
+ :root:not([data-theme='bh2026']) & i.bhi-info {
66
+ color: $light;
67
+ }
65
68
  }
66
69
  .actions {
67
70
  color: brightenLive('--color-dark', 15);
@@ -117,37 +120,95 @@
117
120
  }
118
121
  }
119
122
 
120
- // bh2026: roomier, rounder card, larger title
123
+ // bh2026: rounder card, grippy on hover
121
124
  :host-context([data-theme='bh2026']) {
122
- border-radius: var(--border-radius-md, 1.6rem);
123
- border: 1px solid var(--color-border-default, #f0f5f9);
124
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
125
+ border-radius: var(--border-radius-md);
126
+ border: 1px solid var(--color-border-default);
127
+ box-shadow: 0 1px 2px var(--color-transparency-charcoal-08);
125
128
 
126
129
  div.card-loading-container {
127
- border-radius: var(--border-radius-md, 1.6rem);
130
+ border-radius: var(--border-radius-md);
128
131
  }
129
132
 
130
133
  header {
131
- padding: var(--spacing-md, 1.6rem);
132
- margin-left: var(--spacing-md);
134
+ padding: var(--spacing-padding-md) var(--spacing-padding-lg) var(--spacing-padding-md) 0;
135
+ border-bottom: 1px solid var(--color-border-default);
133
136
 
134
137
  .title {
135
- ::ng-deep i.bhi-move {
136
- display: none;
137
- }
138
-
138
+ padding-inline: var(--spacing-gutter);
139
139
  h1,
140
140
  h2,
141
141
  h3 {
142
- font-size: 1.8rem;
143
- font-weight: 500;
142
+ font-size: var(--typography-card-header-font-size, var(--typography-font-size-18));
143
+ font-weight: var(--typography-card-header-font-weight, var(--typography-font-weight-500));
144
+ ::ng-deep .card-flag-icon {
145
+ font-size: var(--font-size-lg);
146
+ vertical-align: 10%;
147
+ }
144
148
  }
149
+
150
+ ::ng-deep i {
151
+ margin: 0;
152
+ }
153
+ }
154
+
155
+ .card-move-handle {
156
+ position: absolute;
157
+ left: var(--spacing-padding-xxsm);
158
+ color: var(--color-content-icon, #89909A);
159
+ }
160
+
161
+ .actions {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: var(--spacing-gap-sm);
145
165
  }
146
166
 
147
167
  novo-button {
148
- color: rgba(var(--text-secondary), 0.7);
149
- margin-left: var(--spacing-sm);
150
- margin-right: var(--spacing-sm);
168
+ color: var(--color-text-subtle);
169
+ }
170
+ ::ng-deep .novo-card-header-text {
171
+ padding-inline-start: var(--spacing-padding-sm);
172
+ }
173
+ }
174
+ :host {
175
+ ::ng-deep .card-flag-icon {
176
+ color: var(--color-content-subtle, #5d7798);
177
+ }
178
+ &.icon-color-auto header .title ::ng-deep .card-flag-icon {
179
+ color: var(--page-entity-color, var(--color-content-subtle, #5d7798));
180
+ @each $entity, $color in $entity-colors {
181
+ &.bhi-#{$entity} {
182
+ @if ($entity == 'person') {
183
+ color: var(--color-entity-contact);
184
+ } @else if ($entity == 'notes') {
185
+ color: var(--color-entity-note);
186
+ } @else {
187
+ color: var(--color-entity-#{$entity});
188
+ }
189
+ }
190
+ }
191
+ }
192
+ &.icon-color-parent ::ng-deep .card-flag-icon {
193
+ color: var(--page-entity-color);
194
+ }
195
+ .novo-card-header {
196
+ padding-inline-start: var(--spacing-gutter);
197
+ }
198
+ // ng-deep in case this is declared within title bar implementation.
199
+ ::ng-deep .card-move-handle {
200
+ position: absolute;
201
+ left: var(--spacing-padding-xxsm);
202
+ color: var(--color-content-icon, #89909A);
203
+ transition: color 0.3s ease-in-out;
204
+ }
205
+ header ::ng-deep, ::ng-deep .novo-card-header {
206
+ &:not(:hover) .card-move-handle {
207
+ color: transparent;
208
+ }
209
+ .novo-icon.card-move-handle i {
210
+ color: inherit;
211
+ }
151
212
  }
152
213
  }
153
214
  }
@@ -4,5 +4,8 @@
4
4
  display: block;
5
5
  &:not(.condensed) {
6
6
  padding: var(--spacing-md);
7
+ :root[data-theme=bh2026] & {
8
+ padding-inline: var(--spacing-gutter);
9
+ }
7
10
  }
8
11
  }
@@ -7,8 +7,31 @@
7
7
  flex-direction: row;
8
8
  align-items: center;
9
9
  gap: var(--spacing-md);
10
+ :root[data-theme=bh2026] & {
11
+ padding: var(--spacing-padding-md) var(--spacing-padding-md) 0 var(--spacing-gutter);
12
+ gap: 0;
13
+ .card-move-handle {
14
+ transition: color 0.3s ease-in-out;
15
+ }
16
+ &:not(:hover) {
17
+ .card-move-handle {
18
+ color: transparent;
19
+ }
20
+ }
21
+ .novo-card-header-text {
22
+ font-size: var(--typography-card-header-font-size, 1.8rem);
23
+ font-weight: var(--typography-card-header-font-weight, 500);
24
+ ::ng-deep novo-title {
25
+ font: inherit;
26
+ }
27
+ }
28
+ }
29
+
10
30
 
11
31
  .novo-card-header-text {
12
32
  flex: 1 1 0px;
33
+ :root[data-theme=bh2026] & {
34
+ padding-inline-start: var(--spacing-padding-sm);
35
+ }
13
36
  }
14
37
  }
@@ -6,6 +6,7 @@ import * as i3 from 'novo-elements/elements/icon';
6
6
  import * as i4 from 'novo-elements/elements/button';
7
7
  import * as i5 from 'novo-elements/elements/loading';
8
8
  import * as i6 from 'novo-elements/elements/tooltip';
9
+ import * as i7 from 'novo-elements/elements/common';
9
10
 
10
11
  declare class CardActionsElement {
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<CardActionsElement, never>;
@@ -37,6 +38,7 @@ declare class CardElement implements OnChanges, OnInit {
37
38
  message: string;
38
39
  messageIcon: string;
39
40
  icon: string;
41
+ iconColorClass: 'icon-color-auto' | 'icon-color-parent' | undefined;
40
42
  iconTooltip: string;
41
43
  refresh: boolean;
42
44
  close: boolean;
@@ -44,7 +46,7 @@ declare class CardElement implements OnChanges, OnInit {
44
46
  loading: boolean;
45
47
  inline: boolean;
46
48
  inset: string;
47
- get hbInset(): string;
49
+ get cardClass(): string;
48
50
  onClose: EventEmitter<void>;
49
51
  onRefresh: EventEmitter<void>;
50
52
  cardAutomationId: string;
@@ -57,12 +59,12 @@ declare class CardElement implements OnChanges, OnInit {
57
59
  toggleClose(): void;
58
60
  toggleRefresh(): void;
59
61
  static ɵfac: i0.ɵɵFactoryDeclaration<CardElement, never>;
60
- static ɵcmp: i0.ɵɵComponentDeclaration<CardElement, "novo-card", never, { "padding": { "alias": "padding"; "required": false; }; "config": { "alias": "config"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageIcon": { "alias": "messageIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconTooltip": { "alias": "iconTooltip"; "required": false; }; "refresh": { "alias": "refresh"; "required": false; }; "close": { "alias": "close"; "required": false; }; "move": { "alias": "move"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "inset": { "alias": "inset"; "required": false; }; }, { "onClose": "onClose"; "onRefresh": "onRefresh"; }, never, ["novo-card-actions", "*", "footer,novo-card-footer,[novo-card-footer],[novoCardFooter]"], false, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<CardElement, "novo-card", never, { "padding": { "alias": "padding"; "required": false; }; "config": { "alias": "config"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageIcon": { "alias": "messageIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconColorClass": { "alias": "iconColorClass"; "required": false; }; "iconTooltip": { "alias": "iconTooltip"; "required": false; }; "refresh": { "alias": "refresh"; "required": false; }; "close": { "alias": "close"; "required": false; }; "move": { "alias": "move"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "inset": { "alias": "inset"; "required": false; }; }, { "onClose": "onClose"; "onRefresh": "onRefresh"; }, never, ["novo-card-actions", "*", "footer,novo-card-footer,[novo-card-footer],[novoCardFooter]"], false, never>;
61
63
  }
62
64
 
63
65
  declare class NovoCardModule {
64
66
  static ɵfac: i0.ɵɵFactoryDeclaration<NovoCardModule, never>;
65
- static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCardModule, [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement], [typeof i2.CommonModule, typeof i3.NovoIconModule, typeof i4.NovoButtonModule, typeof i5.NovoLoadingModule, typeof i6.NovoTooltipModule], [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement]>;
67
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NovoCardModule, [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement], [typeof i2.CommonModule, typeof i3.NovoIconModule, typeof i4.NovoButtonModule, typeof i5.NovoLoadingModule, typeof i6.NovoTooltipModule, typeof i7.NovoCommonModule], [typeof CardElement, typeof CardActionsElement, typeof CardContentElement, typeof CardHeaderElement, typeof CardFooterElement]>;
66
68
  static ɵinj: i0.ɵɵInjectorDeclaration<NovoCardModule>;
67
69
  }
68
70
 
@@ -15,7 +15,7 @@
15
15
  min-width: 400px;
16
16
  display: block;
17
17
  z-index: z("max");
18
- border-radius: var(--border-radius-xsm, 2px);
18
+ border-radius: var(--border-radius-sm, 2px);
19
19
  top: 100%;
20
20
  margin-top: 5px;
21
21
  }
@@ -88,3 +88,72 @@
88
88
  }
89
89
  }
90
90
  }
91
+
92
+ // bh2026: CSS-based checkbox rendering — replaces icon font glyphs
93
+ :host-context([data-theme='bh2026']) {
94
+ .novo-checkbox-group {
95
+ label i.bhi-checkbox-empty,
96
+ label i.bhi-checkbox-filled {
97
+ font-size: 0;
98
+ display: inline-flex;
99
+ align-self: center;
100
+ width: 16px;
101
+ height: 16px;
102
+ position: relative;
103
+ flex-shrink: 0;
104
+ }
105
+
106
+ label i.bhi-checkbox-empty {
107
+ &::before {
108
+ content: '';
109
+ position: absolute;
110
+ inset: 0;
111
+ border: 1px solid var(--color-border-control);
112
+ border-radius: 2px;
113
+ background: white;
114
+ }
115
+ }
116
+
117
+ label i.bhi-checkbox-filled {
118
+ &::before {
119
+ content: '';
120
+ position: absolute;
121
+ inset: 0;
122
+ background: var(--color-background-utility-positive);
123
+ border: 1px solid var(--color-utility-blue-600);
124
+ border-radius: 2px;
125
+ }
126
+ &::after {
127
+ content: '';
128
+ position: absolute;
129
+ left: 3px;
130
+ top: 4px;
131
+ width: 9px;
132
+ height: 5px;
133
+ border-left: 2px solid var(--color-utility-blue-600);
134
+ border-bottom: 2px solid var(--color-utility-blue-600);
135
+ transform: rotate(-45deg);
136
+ }
137
+ }
138
+
139
+ &.disabled {
140
+ label {
141
+ opacity: 1;
142
+ }
143
+ label i.bhi-checkbox-empty {
144
+ &::before {
145
+ background: var(--color-background-utility-positive);
146
+ border-color: var(--color-border-input-disabled);
147
+ }
148
+ }
149
+ label i.bhi-checkbox-filled {
150
+ &::before {
151
+ border-color: var(--color-border-input-disabled);
152
+ }
153
+ &::after {
154
+ border-color: var(--color-border-input-disabled);
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
@@ -91,3 +91,107 @@
91
91
  }
92
92
  }
93
93
  }
94
+
95
+ // bh2026: CSS-based checkbox rendering — replaces icon font glyphs
96
+ :host-context([data-theme='bh2026']) {
97
+ .novo-checkbox-group {
98
+ // Suppress glyph and establish box dimensions for all box-style states
99
+ label i.bhi-checkbox-empty,
100
+ label i.bhi-checkbox-filled,
101
+ label i.bhi-checkbox-indeterminate {
102
+ font-size: 0;
103
+ display: inline-flex;
104
+ align-self: center;
105
+ width: 16px;
106
+ height: 16px;
107
+ position: relative;
108
+ flex-shrink: 0;
109
+ }
110
+
111
+ // Unchecked: white box with gray border
112
+ label i.bhi-checkbox-empty {
113
+ &::before {
114
+ content: '';
115
+ position: absolute;
116
+ inset: 0;
117
+ border: 1px solid var(--color-border-control);
118
+ border-radius: 2px;
119
+ background: white;
120
+ }
121
+ }
122
+
123
+ // Checked: light-blue box with brand-blue border and checkmark
124
+ label i.bhi-checkbox-filled {
125
+ &::before {
126
+ content: '';
127
+ position: absolute;
128
+ inset: 0;
129
+ background: var(--color-background-utility-positive);
130
+ border: 1px solid var(--color-utility-blue-600);
131
+ border-radius: 2px;
132
+ }
133
+ &::after {
134
+ content: '';
135
+ position: absolute;
136
+ left: 3px;
137
+ top: 4px;
138
+ width: 9px;
139
+ height: 5px;
140
+ border-left: 2px solid var(--color-utility-blue-600);
141
+ border-bottom: 2px solid var(--color-utility-blue-600);
142
+ transform: rotate(-45deg);
143
+ }
144
+ }
145
+
146
+ // Indeterminate: light-blue box with brand-blue border and dash
147
+ label i.bhi-checkbox-indeterminate {
148
+ &::before {
149
+ content: '';
150
+ position: absolute;
151
+ inset: 0;
152
+ background: var(--color-background-utility-positive);
153
+ border: 1px solid var(--color-utility-blue-600);
154
+ border-radius: 2px;
155
+ }
156
+ &::after {
157
+ content: '';
158
+ position: absolute;
159
+ left: 4px;
160
+ top: 50%;
161
+ transform: translateY(-50%);
162
+ width: 8px;
163
+ height: 2px;
164
+ background: var(--color-utility-blue-600);
165
+ }
166
+ }
167
+
168
+ // Disabled: override the base opacity:0.4 and use explicit muted colors
169
+ &.disabled {
170
+ label {
171
+ opacity: 1;
172
+ }
173
+ label i.bhi-checkbox-empty {
174
+ &::before {
175
+ background: var(--color-background-utility-positive);
176
+ border-color: var(--color-border-input-disabled);
177
+ }
178
+ }
179
+ label i.bhi-checkbox-filled {
180
+ &::before {
181
+ border-color: var(--color-border-input-disabled);
182
+ }
183
+ &::after {
184
+ border-color: var(--color-border-input-disabled);
185
+ }
186
+ }
187
+ label i.bhi-checkbox-indeterminate {
188
+ &::before {
189
+ border-color: var(--color-border-input-disabled);
190
+ }
191
+ &::after {
192
+ background: var(--color-border-input-disabled);
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
@@ -46,7 +46,9 @@ $chip-spacing: (
46
46
  @include novo-body-text();
47
47
  background: var(--background-main);
48
48
  border: 1px solid transparent;
49
- transition: all 200ms ease-in-out;
49
+ transition-duration: 0.2s;
50
+ transition-timing-function: ease-in-out;
51
+ transition-property: color, opacity, border-color, border-width, background-color;
50
52
  display: inline-flex;
51
53
  align-items: center;
52
54
  cursor: default;
@@ -185,3 +187,47 @@ $chip-spacing: (
185
187
  }
186
188
  }
187
189
  }
190
+
191
+ :root[data-theme='bh2026'] {
192
+ .novo-chip {
193
+ background: var(--chip-color-background-default-default);
194
+ border: var(--chip-border-width) solid var(--chip-color-border-default-default);
195
+ border-radius: var(--chip-border-radius);
196
+ color: var(--chip-color-content-default);
197
+ gap: var(--chip-spacing-md-gap);
198
+ padding: var(--chip-spacing-md-padding-vertical) var(--chip-spacing-md-padding-horizontal);
199
+ max-height: var(--chip-spacing-md-max-height);
200
+ font-size: var(--typography-meta-default-font-size);
201
+ font-weight: var(--typography-meta-default-font-weight);
202
+ line-height: var(--typography-meta-default-line-height);
203
+
204
+ &:hover:not(.novo-chip-disabled) {
205
+ background: var(--chip-color-background-default-hover);
206
+ border-color: var(--chip-color-border-default-hover);
207
+ color: var(--chip-color-content-hover);
208
+ }
209
+
210
+ &.novo-chip-selectable:focus {
211
+ outline: none;
212
+ background: var(--chip-color-background-default-focus);
213
+ border-width: var(--chip-border-focus-width);
214
+ border-color: var(--chip-color-border-default-focus);
215
+ color: var(--chip-color-content-focus);
216
+ &::after {
217
+ opacity: 0;
218
+ }
219
+ }
220
+
221
+ &.novo-chip-disabled {
222
+ background: var(--chip-color-background-default-disabled);
223
+ border-color: var(--chip-color-border-default-disabled);
224
+ color: var(--chip-color-content-disabled);
225
+ opacity: 1;
226
+ }
227
+
228
+ .novo-chip-remove,
229
+ .novo-chip-trailing-icon {
230
+ color: inherit;
231
+ }
232
+ }
233
+ }
@@ -68,6 +68,11 @@
68
68
  cursor: pointer;
69
69
  display: flex;
70
70
  align-items: center;
71
+
72
+ [data-theme='bh2026'] & {
73
+ bottom: -27px;
74
+ }
75
+
71
76
  i {
72
77
  font-size: 0.7rem;
73
78
  padding-bottom: 2px;
@@ -80,6 +85,10 @@
80
85
  right: 0;
81
86
  font-size: 1.1em;
82
87
  color: var(--font-color-base);
88
+
89
+ [data-theme='bh2026'] & {
90
+ bottom: 4px;
91
+ }
83
92
  }
84
93
 
85
94
  & + i {