@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.57 → 2.0.0-next.59

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 (185) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +6585 -4581
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +1047 -83
  4. package/dist/alert-severity.d.ts +38 -0
  5. package/dist/alert-severity.d.ts.map +1 -0
  6. package/dist/alert-severity.js +176 -0
  7. package/dist/alert-severity.js.map +1 -0
  8. package/dist/ar/building-blocks/poi-header/poi-header.css.js +38 -7
  9. package/dist/ar/building-blocks/poi-header/poi-header.css.js.map +1 -1
  10. package/dist/ar/building-blocks/poi-header/poi-header.d.ts +7 -2
  11. package/dist/ar/building-blocks/poi-header/poi-header.d.ts.map +1 -1
  12. package/dist/ar/building-blocks/poi-header/poi-header.js +5 -0
  13. package/dist/ar/building-blocks/poi-header/poi-header.js.map +1 -1
  14. package/dist/ar/poi-button/poi-button.css.js +110 -32
  15. package/dist/ar/poi-button/poi-button.css.js.map +1 -1
  16. package/dist/ar/poi-button/poi-button.d.ts +7 -2
  17. package/dist/ar/poi-button/poi-button.d.ts.map +1 -1
  18. package/dist/ar/poi-button/poi-button.js +15 -0
  19. package/dist/ar/poi-button/poi-button.js.map +1 -1
  20. package/dist/ar/types.d.ts +6 -1
  21. package/dist/ar/types.d.ts.map +1 -1
  22. package/dist/ar/types.js +5 -0
  23. package/dist/ar/types.js.map +1 -1
  24. package/dist/automation/automation-badge/automation-badge.d.ts +9 -1
  25. package/dist/automation/automation-badge/automation-badge.d.ts.map +1 -1
  26. package/dist/automation/automation-badge/automation-badge.js +119 -12
  27. package/dist/automation/automation-badge/automation-badge.js.map +1 -1
  28. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.d.ts +25 -1
  29. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.d.ts.map +1 -1
  30. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.js +7 -2
  31. package/dist/automation/automation-button/abstract-automation-button-storybook-helpers.js.map +1 -1
  32. package/dist/automation/automation-button/abstract-automation-button.d.ts +10 -3
  33. package/dist/automation/automation-button/abstract-automation-button.d.ts.map +1 -1
  34. package/dist/automation/automation-button/abstract-automation-button.js +23 -2
  35. package/dist/automation/automation-button/abstract-automation-button.js.map +1 -1
  36. package/dist/automation/automation-button/automation-button.css.js +9 -4
  37. package/dist/automation/automation-button/automation-button.css.js.map +1 -1
  38. package/dist/automation/automation-button/automation-button.d.ts +4 -2
  39. package/dist/automation/automation-button/automation-button.d.ts.map +1 -1
  40. package/dist/automation/automation-button/automation-button.js +24 -6
  41. package/dist/automation/automation-button/automation-button.js.map +1 -1
  42. package/dist/automation/automation-tank/automation-tank.d.ts +3 -2
  43. package/dist/automation/automation-tank/automation-tank.d.ts.map +1 -1
  44. package/dist/automation/automation-tank/automation-tank.js +13 -2
  45. package/dist/automation/automation-tank/automation-tank.js.map +1 -1
  46. package/dist/building-blocks/instrument-radial/instrument-radial.d.ts +10 -0
  47. package/dist/building-blocks/instrument-radial/instrument-radial.d.ts.map +1 -1
  48. package/dist/building-blocks/instrument-radial/instrument-radial.js +86 -21
  49. package/dist/building-blocks/instrument-radial/instrument-radial.js.map +1 -1
  50. package/dist/components/accordion-card/accordion-card.css.js +34 -0
  51. package/dist/components/accordion-card/accordion-card.css.js.map +1 -1
  52. package/dist/components/accordion-card/accordion-card.d.ts +3 -2
  53. package/dist/components/accordion-card/accordion-card.d.ts.map +1 -1
  54. package/dist/components/accordion-card/accordion-card.js +4 -3
  55. package/dist/components/accordion-card/accordion-card.js.map +1 -1
  56. package/dist/components/alert-button/alert-button.css.js +744 -7
  57. package/dist/components/alert-button/alert-button.css.js.map +1 -1
  58. package/dist/components/alert-button/alert-button.d.ts +3 -1
  59. package/dist/components/alert-button/alert-button.d.ts.map +1 -1
  60. package/dist/components/alert-button/alert-button.js +33 -31
  61. package/dist/components/alert-button/alert-button.js.map +1 -1
  62. package/dist/components/alert-frame/alert-frame.css.js +116 -29
  63. package/dist/components/alert-frame/alert-frame.css.js.map +1 -1
  64. package/dist/components/alert-frame/alert-frame.d.ts +42 -15
  65. package/dist/components/alert-frame/alert-frame.d.ts.map +1 -1
  66. package/dist/components/alert-frame/alert-frame.js +68 -17
  67. package/dist/components/alert-frame/alert-frame.js.map +1 -1
  68. package/dist/components/alert-frame/critical-badge.d.ts +12 -0
  69. package/dist/components/alert-frame/critical-badge.d.ts.map +1 -0
  70. package/dist/components/alert-frame/critical-badge.js +47 -0
  71. package/dist/components/alert-frame/critical-badge.js.map +1 -0
  72. package/dist/components/alert-frame/diagnostic-badge.d.ts +12 -0
  73. package/dist/components/alert-frame/diagnostic-badge.d.ts.map +1 -0
  74. package/dist/components/alert-frame/diagnostic-badge.js +60 -0
  75. package/dist/components/alert-frame/diagnostic-badge.js.map +1 -0
  76. package/dist/components/alert-icon/alert-icon.d.ts +6 -1
  77. package/dist/components/alert-icon/alert-icon.d.ts.map +1 -1
  78. package/dist/components/alert-icon/alert-icon.js +96 -38
  79. package/dist/components/alert-icon/alert-icon.js.map +1 -1
  80. package/dist/components/alert-icon/icons/icon-critical.d.ts +3 -0
  81. package/dist/components/alert-icon/icons/icon-critical.d.ts.map +1 -0
  82. package/dist/components/alert-icon/icons/icon-critical.js +26 -0
  83. package/dist/components/alert-icon/icons/icon-critical.js.map +1 -0
  84. package/dist/components/alert-list-details/alert-list-details.d.ts.map +1 -1
  85. package/dist/components/alert-list-details/alert-list-details.js +6 -7
  86. package/dist/components/alert-list-details/alert-list-details.js.map +1 -1
  87. package/dist/components/badge/badge.css.js +50 -2
  88. package/dist/components/badge/badge.css.js.map +1 -1
  89. package/dist/components/badge/badge.d.ts +13 -2
  90. package/dist/components/badge/badge.d.ts.map +1 -1
  91. package/dist/components/badge/badge.js +54 -0
  92. package/dist/components/badge/badge.js.map +1 -1
  93. package/dist/index.js +2 -1
  94. package/dist/manual-icon/icon-alerts-critical-twotone.d.ts +30 -0
  95. package/dist/manual-icon/icon-alerts-critical-twotone.d.ts.map +1 -0
  96. package/dist/manual-icon/icon-alerts-critical-twotone.js +55 -0
  97. package/dist/manual-icon/icon-alerts-critical-twotone.js.map +1 -0
  98. package/dist/manual-icon/icon-alerts-diagnostic-twotone.d.ts +30 -0
  99. package/dist/manual-icon/icon-alerts-diagnostic-twotone.d.ts.map +1 -0
  100. package/dist/manual-icon/icon-alerts-diagnostic-twotone.js +55 -0
  101. package/dist/manual-icon/icon-alerts-diagnostic-twotone.js.map +1 -0
  102. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js +99 -0
  103. package/dist/navigation-instruments/gauge-radial/gauge-radial.css.js.map +1 -0
  104. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts +42 -7
  105. package/dist/navigation-instruments/gauge-radial/gauge-radial.d.ts.map +1 -1
  106. package/dist/navigation-instruments/gauge-radial/gauge-radial.js +178 -31
  107. package/dist/navigation-instruments/gauge-radial/gauge-radial.js.map +1 -1
  108. package/dist/navigation-instruments/readout/readout.css.js +7 -18
  109. package/dist/navigation-instruments/readout/readout.css.js.map +1 -1
  110. package/dist/navigation-instruments/readout/readout.d.ts +6 -7
  111. package/dist/navigation-instruments/readout/readout.d.ts.map +1 -1
  112. package/dist/navigation-instruments/readout/readout.js +54 -52
  113. package/dist/navigation-instruments/readout/readout.js.map +1 -1
  114. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js +9 -36
  115. package/dist/navigation-instruments/readout-list-item/readout-list-item.css.js.map +1 -1
  116. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts +8 -8
  117. package/dist/navigation-instruments/readout-list-item/readout-list-item.d.ts.map +1 -1
  118. package/dist/navigation-instruments/readout-list-item/readout-list-item.js +49 -42
  119. package/dist/navigation-instruments/readout-list-item/readout-list-item.js.map +1 -1
  120. package/dist/navigation-instruments/watch/tickmark.d.ts +2 -1
  121. package/dist/navigation-instruments/watch/tickmark.d.ts.map +1 -1
  122. package/dist/navigation-instruments/watch/tickmark.js +24 -4
  123. package/dist/navigation-instruments/watch/tickmark.js.map +1 -1
  124. package/dist/navigation-instruments/watch/watch.d.ts +23 -1
  125. package/dist/navigation-instruments/watch/watch.d.ts.map +1 -1
  126. package/dist/navigation-instruments/watch/watch.js +48 -20
  127. package/dist/navigation-instruments/watch/watch.js.map +1 -1
  128. package/dist/openbridge.css +155 -0
  129. package/dist/types.d.ts +7 -1
  130. package/dist/types.d.ts.map +1 -1
  131. package/dist/types.js +18 -7
  132. package/dist/types.js.map +1 -1
  133. package/package.json +1 -1
  134. package/src/alert-severity.ts +225 -0
  135. package/src/ar/building-blocks/poi-header/poi-header.css +38 -7
  136. package/src/ar/building-blocks/poi-header/poi-header.ts +6 -1
  137. package/src/ar/poi-button/poi-button.css +126 -32
  138. package/src/ar/poi-button/poi-button.ts +16 -1
  139. package/src/ar/types.ts +5 -0
  140. package/src/automation/automation-badge/automation-badge.ts +124 -17
  141. package/src/automation/automation-button/abstract-automation-button-storybook-helpers.ts +5 -0
  142. package/src/automation/automation-button/abstract-automation-button.ts +21 -3
  143. package/src/automation/automation-button/automation-button.css +9 -4
  144. package/src/automation/automation-button/automation-button.ts +25 -7
  145. package/src/automation/automation-tank/automation-tank.stories.ts +22 -0
  146. package/src/automation/automation-tank/automation-tank.ts +12 -3
  147. package/src/building-blocks/instrument-radial/instrument-radial.stories.ts +21 -0
  148. package/src/building-blocks/instrument-radial/instrument-radial.ts +118 -21
  149. package/src/components/accordion-card/accordion-card.css +33 -0
  150. package/src/components/accordion-card/accordion-card.stories.ts +2 -1
  151. package/src/components/accordion-card/accordion-card.ts +3 -4
  152. package/src/components/alert-button/alert-button.css +89 -5
  153. package/src/components/alert-button/alert-button.stories.ts +43 -0
  154. package/src/components/alert-button/alert-button.ts +43 -32
  155. package/src/components/alert-frame/alert-frame.css +116 -29
  156. package/src/components/alert-frame/alert-frame.stories.ts +63 -3
  157. package/src/components/alert-frame/alert-frame.ts +114 -23
  158. package/src/components/alert-frame/critical-badge.ts +39 -0
  159. package/src/components/alert-frame/diagnostic-badge.ts +52 -0
  160. package/src/components/alert-icon/alert-icon.stories.ts +41 -0
  161. package/src/components/alert-icon/alert-icon.ts +101 -38
  162. package/src/components/alert-icon/icons/icon-critical.ts +23 -0
  163. package/src/components/alert-list-details/alert-list-details.stories.ts +67 -0
  164. package/src/components/alert-list-details/alert-list-details.ts +11 -10
  165. package/src/components/badge/badge.css +52 -2
  166. package/src/components/badge/badge.stories.ts +75 -0
  167. package/src/components/badge/badge.ts +70 -2
  168. package/src/main.css +1 -0
  169. package/src/manual-icon/icon-alerts-critical-twotone.ts +60 -0
  170. package/src/manual-icon/icon-alerts-diagnostic-twotone.ts +60 -0
  171. package/src/mixins/alert.css +29 -0
  172. package/src/navigation-instruments/gauge-radial/gauge-radial.css +85 -0
  173. package/src/navigation-instruments/gauge-radial/gauge-radial.stories.ts +149 -7
  174. package/src/navigation-instruments/gauge-radial/gauge-radial.ts +212 -33
  175. package/src/navigation-instruments/readout/readout.css +7 -24
  176. package/src/navigation-instruments/readout/readout.stories.ts +57 -4
  177. package/src/navigation-instruments/readout/readout.ts +69 -63
  178. package/src/navigation-instruments/readout-list-item/readout-list-item.css +9 -42
  179. package/src/navigation-instruments/readout-list-item/readout-list-item.stories.ts +57 -14
  180. package/src/navigation-instruments/readout-list-item/readout-list-item.ts +54 -44
  181. package/src/navigation-instruments/watch/tickmark.ts +33 -6
  182. package/src/navigation-instruments/watch/watch.ts +60 -25
  183. package/src/palettes/critical.md +95 -0
  184. package/src/palettes/manual.css +165 -0
  185. package/src/types.ts +20 -3
@@ -97,3 +97,44 @@ export const AlarmOutline: Story = {
97
97
  outline: true,
98
98
  },
99
99
  };
100
+
101
+ export const IsaCritical: Story = {
102
+ args: {
103
+ type: AlertType.IsaCritical,
104
+ acknowledged: false,
105
+ active: true,
106
+ outline: true,
107
+ },
108
+ };
109
+
110
+ export const IsaHigh: Story = {
111
+ args: {
112
+ type: AlertType.IsaHigh,
113
+ acknowledged: false,
114
+ active: true,
115
+ },
116
+ };
117
+
118
+ export const IsaMedium: Story = {
119
+ args: {
120
+ type: AlertType.IsaMedium,
121
+ acknowledged: false,
122
+ active: true,
123
+ },
124
+ };
125
+
126
+ export const IsaLow: Story = {
127
+ args: {
128
+ type: AlertType.IsaLow,
129
+ acknowledged: false,
130
+ active: true,
131
+ },
132
+ };
133
+
134
+ export const IsaDiagnostic: Story = {
135
+ args: {
136
+ type: AlertType.IsaDiagnostic,
137
+ acknowledged: false,
138
+ active: true,
139
+ },
140
+ };
@@ -1,4 +1,4 @@
1
- import {LitElement, html, css, TemplateResult} from 'lit';
1
+ import {LitElement, html, css, TemplateResult, nothing} from 'lit';
2
2
  import {property} from 'lit/decorators.js';
3
3
  import {classMap} from 'lit/directives/class-map.js';
4
4
  import {alarmRectifiedA} from './icons/icon-alarm-rectified.js';
@@ -13,9 +13,19 @@ import {warningUnackA, warningUnackB} from './icons/icon-warning-unack.js';
13
13
  import '../../icons/icon-caution-color-iec.js';
14
14
  import {customElement} from '../../decorator.js';
15
15
  import {AlertType} from '../../types.js';
16
+ import {
17
+ getAlertBadgeComponent,
18
+ AlertBadgeComponent,
19
+ getAlertBlinkMode,
20
+ getBamAlertTypeForBlinking,
21
+ supportsBlinking,
22
+ } from '../../alert-severity.js';
16
23
  import '../../icons/icon-alarm-badge-outline.js';
17
24
  import '../../icons/icon-warning-badge-outline.js';
18
25
  import '../../icons/icon-caution-badge-outline.js';
26
+ import '../alert-frame/critical-badge.js';
27
+ import '../alert-frame/diagnostic-badge.js';
28
+ import {criticalA, criticalB} from './icons/icon-critical.js';
19
29
 
20
30
  enum AlertIconName {
21
31
  AlarmSilenced = 'alarm-silenced',
@@ -24,6 +34,7 @@ enum AlertIconName {
24
34
  WarningUnack = 'warning-unack',
25
35
  WarningRectified = 'warning-rectified',
26
36
  WarningSilenced = 'warning-silenced',
37
+ Critical = 'critical',
27
38
  }
28
39
 
29
40
  const mapping = {
@@ -51,6 +62,10 @@ const mapping = {
51
62
  a: warningSilencedA,
52
63
  b: warningSilencedB,
53
64
  },
65
+ [AlertIconName.Critical]: {
66
+ a: criticalA,
67
+ b: criticalB,
68
+ },
54
69
  };
55
70
  /**
56
71
  * `obc-alert-icon` – Animated alert icon for signaling alarm and warning states.
@@ -92,8 +107,14 @@ export class ObcAlertIcon extends LitElement {
92
107
  @property({type: Boolean}) active!: boolean;
93
108
  @property({type: Boolean}) outline!: boolean;
94
109
 
110
+ private get bamType(): AlertType {
111
+ return getBamAlertTypeForBlinking(this.type);
112
+ }
113
+
95
114
  get icon() {
96
- if (this.type === AlertType.Alarm) {
115
+ if (this.type === AlertType.IsaCritical) {
116
+ return mapping[AlertIconName.Critical];
117
+ } else if (this.bamType === AlertType.Alarm) {
97
118
  if (this.active === false) {
98
119
  return mapping[AlertIconName.AlarmRectified];
99
120
  } else if (this.acknowledged) {
@@ -101,7 +122,7 @@ export class ObcAlertIcon extends LitElement {
101
122
  } else {
102
123
  return mapping[AlertIconName.AlarmUnack];
103
124
  }
104
- } else {
125
+ } else if (this.bamType === AlertType.Warning) {
105
126
  if (this.active === false) {
106
127
  return mapping[AlertIconName.WarningRectified];
107
128
  } else if (this.acknowledged) {
@@ -110,45 +131,65 @@ export class ObcAlertIcon extends LitElement {
110
131
  return mapping[AlertIconName.WarningUnack];
111
132
  }
112
133
  }
134
+
135
+ return null;
136
+ }
137
+
138
+ private renderOutlineIcon(): TemplateResult {
139
+ switch (getAlertBadgeComponent(this.type)) {
140
+ case AlertBadgeComponent.Critical:
141
+ return html`<obi-critical-badge></obi-critical-badge>`;
142
+ case AlertBadgeComponent.Warning:
143
+ return html`<obi-warning-badge-outline></obi-warning-badge-outline>`;
144
+ case AlertBadgeComponent.Caution:
145
+ return html`<obi-caution-badge-outline></obi-caution-badge-outline>`;
146
+ case AlertBadgeComponent.Diagnostic:
147
+ return html`<obi-diagnostic-badge
148
+ style="color: var(--alert-diagnostic-color);"
149
+ ></obi-diagnostic-badge>`;
150
+ default:
151
+ return html`<obi-alarm-badge-outline></obi-alarm-badge-outline>`;
152
+ }
153
+ }
154
+
155
+ private renderStaticIcon(): TemplateResult | typeof nothing {
156
+ if (this.type === AlertType.Caution || this.type === AlertType.IsaLow) {
157
+ return html`<obi-caution-color-iec usecsscolor></obi-caution-color-iec>`;
158
+ }
159
+ if (this.type === AlertType.IsaDiagnostic) {
160
+ return html`<obi-diagnostic-badge
161
+ style="color: var(--alert-diagnostic-color);"
162
+ ></obi-diagnostic-badge>`;
163
+ }
164
+ return nothing;
113
165
  }
114
166
 
115
167
  override render() {
116
168
  if (!this.type) {
117
169
  return html`<div>No alarm</div>`;
118
170
  }
119
- let icon: TemplateResult | undefined;
120
171
  if (this.outline) {
121
- switch (this.type) {
122
- case AlertType.Alarm:
123
- icon = html`<obi-alarm-badge-outline></obi-alarm-badge-outline>`;
124
- break;
125
- case AlertType.Warning:
126
- icon = html`<obi-warning-badge-outline></obi-warning-badge-outline>`;
127
- break;
128
- case AlertType.Caution:
129
- icon = html`<obi-caution-badge-outline></obi-caution-badge-outline>`;
130
- break;
131
- }
132
- } else if (this.type === AlertType.Caution) {
133
- icon = html`<obi-caution-color-iec usecsscolor></obi-caution-color-iec>`;
134
- } else if ([AlertType.Alarm, AlertType.Warning].includes(this.type)) {
172
+ return html`<div class="wrapper">${this.renderOutlineIcon()}</div>`;
173
+ }
174
+ if (supportsBlinking(this.type) && !(this.type === AlertType.IsaLow)) {
135
175
  const icons = this.icon;
136
- const isWarning = this.type === AlertType.Warning;
176
+ if (!icons) {
177
+ throw new Error('No icon found');
178
+ }
179
+ const blinkMode = getAlertBlinkMode(this.type);
137
180
  return html`
138
181
  <div
139
182
  class=${classMap({
140
183
  wrapper: true,
141
- warning: isWarning,
184
+ [`blink-${blinkMode}`]: true,
142
185
  })}
143
186
  >
144
187
  <span class="a">${icons.a}</span>
145
188
  <span class="b">${icons.b}</span>
146
189
  </div>
147
190
  `;
148
- } else {
149
- return html`<div>No alarm</div>`;
150
191
  }
151
- return html`<div class="wrapper">${icon}</div>`;
192
+ return html`<div class="wrapper">${this.renderStaticIcon()}</div>`;
152
193
  }
153
194
 
154
195
  static override styles = css`
@@ -156,33 +197,55 @@ export class ObcAlertIcon extends LitElement {
156
197
  height: 100%;
157
198
  width: 100%;
158
199
  position: relative;
159
- }
160
- .wrapper svg {
161
- height: 100%;
162
- width: 100%;
163
- position: absolute;
164
- top: 0;
165
- left: 0;
166
- }
167
200
 
168
- :not(.warning) {
169
- .a {
201
+ obi-diagnostic-badge,
202
+ obi-critical-badge {
203
+ display: block;
204
+ height: 100%;
205
+ width: 100%;
206
+ position: absolute;
207
+ top: 0;
208
+ left: 0;
209
+ }
210
+
211
+ svg {
212
+ height: 100%;
213
+ width: 100%;
214
+ position: absolute;
215
+ top: 0;
216
+ left: 0;
217
+ }
218
+ &.blink-alarm .a {
170
219
  opacity: var(--alarm-blink-on);
171
220
  }
172
221
 
173
- .b {
222
+ &.blink-alarm .b {
174
223
  opacity: var(--alarm-blink-off);
175
224
  }
176
- }
177
225
 
178
- .warning {
179
- .a {
226
+ &.blink-critical .a {
227
+ opacity: var(--critical-blink-on);
228
+ }
229
+
230
+ &.blink-critical .b {
231
+ opacity: var(--critical-blink-off);
232
+ }
233
+
234
+ &.blink-warning .a {
180
235
  opacity: var(--warning-blink-on);
181
236
  }
182
237
 
183
- .b {
238
+ &.blink-warning .b {
184
239
  opacity: var(--warning-blink-off);
185
240
  }
241
+
242
+ &.blink-low .a {
243
+ opacity: var(--low-blink-on);
244
+ }
245
+
246
+ &.blink-low .b {
247
+ opacity: var(--low-blink-off);
248
+ }
186
249
  }
187
250
  `;
188
251
  }
@@ -0,0 +1,23 @@
1
+ import {svg} from 'lit';
2
+
3
+ export const criticalA = svg`<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
4
+ <path d="M 22,12
5
+ L 17,20.66
6
+ L 7,20.66
7
+ L 2,12
8
+ L 7,3.34
9
+ L 17,3.34
10
+ Z"
11
+ fill="var(--alert-critical-color)" stroke="var(--alert-critical-outline-color)" />
12
+ </svg>`;
13
+
14
+ export const criticalB = svg`<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
15
+ <path d="M 22,12
16
+ L 17,20.66
17
+ L 7,20.66
18
+ L 2,12
19
+ L 7,3.34
20
+ L 17,3.34
21
+ Z"
22
+ fill="none" stroke="var(--element-active-color)" />
23
+ </svg>`;
@@ -187,3 +187,70 @@ export const OneItem: Story = {
187
187
  </obc-alert-list-details>`;
188
188
  },
189
189
  };
190
+
191
+ export const IsaCategories: Story = {
192
+ args: {
193
+ alerts: [
194
+ {
195
+ id: 'isa-1',
196
+ tagId: 'CRIT-01',
197
+ source: 'PCS',
198
+ text: 'Emergency shutdown condition detected',
199
+ acknowledged: false,
200
+ active: true,
201
+ type: AlertType.IsaCritical,
202
+ time: new Date('2024-01-15T14:32:15Z'),
203
+ },
204
+ {
205
+ id: 'isa-2',
206
+ tagId: 'HIGH-02',
207
+ source: 'ME 1',
208
+ text: 'Main engine overspeed',
209
+ acknowledged: false,
210
+ active: true,
211
+ type: AlertType.IsaHigh,
212
+ time: new Date('2024-01-15T14:30:00Z'),
213
+ },
214
+ {
215
+ id: 'isa-3',
216
+ tagId: 'MED-03',
217
+ source: 'Tank 1',
218
+ text: 'Tank level approaching high limit',
219
+ acknowledged: false,
220
+ active: true,
221
+ type: AlertType.IsaMedium,
222
+ time: new Date('2024-01-15T14:28:00Z'),
223
+ },
224
+ {
225
+ id: 'isa-4',
226
+ tagId: 'LOW-04',
227
+ source: 'HVAC',
228
+ text: 'Filter maintenance due',
229
+ acknowledged: false,
230
+ active: true,
231
+ type: AlertType.IsaLow,
232
+ time: new Date('2024-01-15T14:25:00Z'),
233
+ },
234
+ {
235
+ id: 'isa-5',
236
+ tagId: 'DIAG-05',
237
+ source: 'Network',
238
+ text: 'Redundant link diagnostic message',
239
+ acknowledged: false,
240
+ active: true,
241
+ type: AlertType.IsaDiagnostic,
242
+ time: new Date('2024-01-15T14:20:00Z'),
243
+ },
244
+ ],
245
+ },
246
+ render: (args) => {
247
+ return html` <obc-alert-list-details
248
+ @ack-click=${handleAck}
249
+ .selectedMode=${args.selectedMode}
250
+ .alerts=${args.alerts}
251
+ .showTime=${args.showTime}
252
+ style="height: 100vh; display: block;"
253
+ >
254
+ </obc-alert-list-details>`;
255
+ },
256
+ };
@@ -16,13 +16,17 @@ import '../../icons/icon-warning-noack-iec.js';
16
16
  import '../alert-icon/alert-icon.js';
17
17
  import {
18
18
  Alert,
19
- AlertType,
20
19
  comparePriorityAlerts,
21
20
  isActive,
22
21
  isAcknowledged,
23
22
  isBlocked,
24
23
  isShelved,
25
24
  } from '../../types.js';
25
+ import {
26
+ excludedFromUnackedFilter,
27
+ requiresAcknowledgement,
28
+ usesAlarmNoAckIcon,
29
+ } from '../../alert-severity.js';
26
30
  import {
27
31
  ObcTable,
28
32
  ObcTableCellClickEvent,
@@ -68,7 +72,7 @@ export function getAlertListModeData(selectedMode: AlertListMode) {
68
72
  filter: (alert: Alert) =>
69
73
  !isAcknowledged(alert) &&
70
74
  isActive(alert) &&
71
- alert.type !== AlertType.Caution &&
75
+ !excludedFromUnackedFilter(alert.type) &&
72
76
  !isShelved(alert),
73
77
  };
74
78
  else if (selectedMode === AlertListMode.SHELVED)
@@ -102,7 +106,7 @@ export function canAckFilter(filter: (alert: Alert) => boolean) {
102
106
  return (alert: Alert) =>
103
107
  !isAcknowledged(alert) &&
104
108
  !alert.noAck &&
105
- alert.type !== AlertType.Caution &&
109
+ !excludedFromUnackedFilter(alert.type) &&
106
110
  filter(alert);
107
111
  }
108
112
 
@@ -254,15 +258,12 @@ export class ObcAlertListDetails extends LitElement {
254
258
  if (
255
259
  !isAcknowledged(alert) &&
256
260
  isActive(alert) &&
257
- [AlertType.Alarm, AlertType.Warning].includes(alert.type)
261
+ requiresAcknowledgement(alert.type)
258
262
  ) {
259
263
  if (alert.noAck) {
260
- const icon =
261
- alert.type === AlertType.Alarm
262
- ? html`<obi-alarm-noack-iec usecsscolor></obi-alarm-noack-iec>`
263
- : html`<obi-warning-noack-iec
264
- usecsscolor
265
- ></obi-warning-noack-iec>`;
264
+ const icon = usesAlarmNoAckIcon(alert.type)
265
+ ? html`<obi-alarm-noack-iec usecsscolor></obi-alarm-noack-iec>`
266
+ : html`<obi-warning-noack-iec usecsscolor></obi-warning-noack-iec>`;
266
267
  action = {
267
268
  type: ObcTableCellType.Regular,
268
269
  largeIcon: true,
@@ -91,12 +91,37 @@
91
91
  color: var(--on-warning-color);
92
92
  }
93
93
 
94
- &.type-caution {
94
+ &.type-caution,
95
+ &.type-isa-low {
95
96
  background-color: var(--alert-caution-color);
96
97
  border-color: var(--alert-caution-outline-color);
97
98
  color: var(--on-caution-color);
98
99
  }
99
100
 
101
+ &.type-isa-critical {
102
+ background-color: var(--critical-enabled-background-color);
103
+ border-color: var(--critical-enabled-border-color);
104
+ color: var(--on-critical-color);
105
+ }
106
+
107
+ &.type-isa-high {
108
+ background-color: var(--alert-alarm-color);
109
+ border-color: var(--alert-alarm-outline-color);
110
+ color: var(--on-alarm-color);
111
+ }
112
+
113
+ &.type-isa-medium {
114
+ background-color: var(--alert-warning-color);
115
+ border-color: var(--alert-warning-outline-color);
116
+ color: var(--on-warning-color);
117
+ }
118
+
119
+ &.type-isa-diagnostic {
120
+ background-color: var(--notification-enabled-background-color);
121
+ border-color: var(--notification-enabled-border-color);
122
+ color: var(--on-notification-active-color);
123
+ }
124
+
100
125
  &.type-running {
101
126
  background-color: var(--alert-running-color);
102
127
  border-color: var(--alert-running-color);
@@ -147,12 +172,37 @@
147
172
  border-color: var(--alert-warning-outline-color);
148
173
  background: none;
149
174
  }
150
- .icon.type-caution {
175
+ .icon.type-caution,
176
+ .icon.type-isa-low {
151
177
  color: unset;
152
178
  border-color: var(--alert-caution-outline-color);
153
179
  background: none;
154
180
  }
155
181
 
182
+ .icon.type-isa-critical {
183
+ color: unset;
184
+ border-color: var(--critical-enabled-border-color);
185
+ background: none;
186
+ }
187
+
188
+ .icon.type-isa-high {
189
+ color: unset;
190
+ border-color: var(--alert-alarm-outline-color);
191
+ background: none;
192
+ }
193
+
194
+ .icon.type-isa-medium {
195
+ color: unset;
196
+ border-color: var(--alert-warning-outline-color);
197
+ background: none;
198
+ }
199
+
200
+ .icon.type-isa-diagnostic {
201
+ color: unset;
202
+ border-color: var(--notification-enabled-border-color);
203
+ background: none;
204
+ }
205
+
156
206
  .icon.type-regular {
157
207
  color: unset;
158
208
  border-color: var(--normal-enabled-border-color);
@@ -199,6 +199,81 @@ export const Caution: Story = {
199
199
  },
200
200
  };
201
201
 
202
+ export const IsaCritical: Story = {
203
+ args: {type: BadgeType.isaCritical, showIcon: true},
204
+ render(args) {
205
+ return html`<obc-badge
206
+ number=${args.number}
207
+ size=${args.size}
208
+ type=${args.type}
209
+ variant=${args.variant}
210
+ .showNumber=${args.showNumber}
211
+ ?showIcon=${args.showIcon}
212
+ >
213
+ </obc-badge>`;
214
+ },
215
+ };
216
+
217
+ export const IsaHigh: Story = {
218
+ args: {type: BadgeType.isaHigh, showIcon: true},
219
+ render(args) {
220
+ return html`<obc-badge
221
+ number=${args.number}
222
+ size=${args.size}
223
+ type=${args.type}
224
+ variant=${args.variant}
225
+ .showNumber=${args.showNumber}
226
+ ?showIcon=${args.showIcon}
227
+ >
228
+ </obc-badge>`;
229
+ },
230
+ };
231
+
232
+ export const IsaMedium: Story = {
233
+ args: {type: BadgeType.isaMedium, showIcon: true},
234
+ render(args) {
235
+ return html`<obc-badge
236
+ number=${args.number}
237
+ size=${args.size}
238
+ type=${args.type}
239
+ variant=${args.variant}
240
+ .showNumber=${args.showNumber}
241
+ ?showIcon=${args.showIcon}
242
+ >
243
+ </obc-badge>`;
244
+ },
245
+ };
246
+
247
+ export const IsaLow: Story = {
248
+ args: {type: BadgeType.isaLow, showIcon: true},
249
+ render(args) {
250
+ return html`<obc-badge
251
+ number=${args.number}
252
+ size=${args.size}
253
+ type=${args.type}
254
+ variant=${args.variant}
255
+ .showNumber=${args.showNumber}
256
+ ?showIcon=${args.showIcon}
257
+ >
258
+ </obc-badge>`;
259
+ },
260
+ };
261
+
262
+ export const IsaDiagnostic: Story = {
263
+ args: {type: BadgeType.isaDiagnostic, showIcon: true},
264
+ render(args) {
265
+ return html`<obc-badge
266
+ number=${args.number}
267
+ size=${args.size}
268
+ type=${args.type}
269
+ variant=${args.variant}
270
+ .showNumber=${args.showNumber}
271
+ ?showIcon=${args.showIcon}
272
+ >
273
+ </obc-badge>`;
274
+ },
275
+ };
276
+
202
277
  export const Running: Story = {
203
278
  args: {type: BadgeType.running, showIcon: true},
204
279
  render(args) {
@@ -25,6 +25,11 @@ export enum BadgeSize {
25
25
  * - `alarm`: Indicates a critical or urgent state.
26
26
  * - `warning`: Indicates a warning or cautionary state.
27
27
  * - `caution`: Indicates a less severe caution.
28
+ * - `isa-critical`: ISA highest-severity state (critical).
29
+ * - `isa-high`: ISA high-severity state (alarm-equivalent styling).
30
+ * - `isa-medium`: ISA medium-severity state (warning-equivalent styling).
31
+ * - `isa-low`: ISA low-severity state (caution-equivalent styling).
32
+ * - `isa-diagnostic`: ISA diagnostic/notification state.
28
33
  * - `running`: Indicates an active or running state.
29
34
  * - `notification`: Used for general notifications.
30
35
  * - `enhance`: Used for enhanced or secondary notifications.
@@ -37,6 +42,11 @@ export enum BadgeType {
37
42
  alarm = 'alarm',
38
43
  warning = 'warning',
39
44
  caution = 'caution',
45
+ isaCritical = 'isa-critical',
46
+ isaHigh = 'isa-high',
47
+ isaMedium = 'isa-medium',
48
+ isaLow = 'isa-low',
49
+ isaDiagnostic = 'isa-diagnostic',
40
50
  running = 'running',
41
51
  notification = 'notification',
42
52
  enhance = 'enhance',
@@ -70,6 +80,7 @@ export enum BadgeVariant {
70
80
  * - `alarm`: Highlights critical or urgent states.
71
81
  * - `warning`: Indicates caution or warning.
72
82
  * - `caution`: Used for less severe caution.
83
+ * - `isa-critical`, `isa-high`, `isa-medium`, `isa-low`, `isa-diagnostic`: ISA severity levels, styled to match their legacy equivalents (critical, alarm, warning, caution, notification).
73
84
  * - `running`: Represents active or running states.
74
85
  * - `notification`: For general notifications.
75
86
  * - `enhance`: For secondary notifications or emphasis.
@@ -159,7 +170,7 @@ export class ObcBadge extends LitElement {
159
170
  /**
160
171
  * Visual style/type of the badge.
161
172
  *
162
- * Possible values: `regular`, `alarm`, `warning`, `caution`, `running`, `notification`, `enhance`, `automation`, `outline`, `empty`.
173
+ * Possible values: `regular`, `alarm`, `warning`, `caution`, `isa-critical`, `isa-high`, `isa-medium`, `isa-low`, `isa-diagnostic`, `running`, `notification`, `enhance`, `automation`, `outline`, `empty`.
163
174
  *
164
175
  * Defaults to `regular`.
165
176
  */
@@ -183,7 +194,7 @@ export class ObcBadge extends LitElement {
183
194
  /**
184
195
  * Whether to show an icon in the badge.
185
196
  *
186
- * For built-in types (`alarm`, `warning`, `caution`, `running`), a contextual icon is shown automatically.
197
+ * For built-in types (`alarm`, `warning`, `caution`, the `isa-*` severities, and `running`), a contextual icon is shown automatically.
187
198
  * For other types, provide a custom icon in the `badge-icon` slot.
188
199
  */
189
200
  @property({type: Boolean}) showIcon = false;
@@ -233,6 +244,63 @@ export class ObcBadge extends LitElement {
233
244
  />
234
245
  </svg>
235
246
  `;
247
+ case BadgeType.isaHigh:
248
+ return html`
249
+ <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">
250
+ <path
251
+ d="M5.29694 1.72622L1.05702 9.32693C0.838739 9.71823 0.729598 9.91388 0.748108 10.0741C0.764257 10.2138 0.83853 10.3403 0.952704 10.4225C1.08357 10.5167 1.3076 10.5167 1.75567 10.5167H10.233C10.6809 10.5167 10.9049 10.5167 11.0357 10.4225C11.1499 10.3403 11.2242 10.2139 11.2404 10.0741C11.2589 9.914 11.1498 9.71837 10.9317 9.3271L6.69433 1.7264C6.46616 1.31712 6.35207 1.11247 6.20181 1.04447C6.07082 0.985194 5.92064 0.985175 5.78964 1.04442C5.63936 1.11238 5.52522 1.317 5.29694 1.72622Z"
252
+ fill=${isFlat ? 'var(--alert-alarm-color)' : 'currentColor'}
253
+ />
254
+ </svg>
255
+ `;
256
+ case BadgeType.isaMedium:
257
+ return html`
258
+ <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">
259
+ <circle
260
+ cx="6"
261
+ cy="6"
262
+ r="4.5"
263
+ fill=${isFlat ? 'var(--alert-warning-color)' : 'currentColor'}
264
+ stroke=${isFlat
265
+ ? 'var(--alert-warning-outline-color)'
266
+ : 'currentColor'}
267
+ />
268
+ </svg>
269
+ `;
270
+ case BadgeType.isaLow:
271
+ return html`
272
+ <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">
273
+ <path
274
+ d="M2.2998 2H9.7002C9.848 2 9.92907 2.00015 9.9873 2.00488C9.98955 2.00507 9.99213 2.0047 9.99414 2.00488C9.99436 2.0072 9.9949 2.01006 9.99512 2.0127C9.99985 2.07093 10 2.152 10 2.2998V9.7002C10 9.848 9.99985 9.92907 9.99512 9.9873C9.99493 9.98958 9.99433 9.9921 9.99414 9.99414C9.9921 9.99433 9.98958 9.99493 9.9873 9.99512C9.92907 9.99985 9.848 10 9.7002 10H2.2998C2.152 10 2.07093 9.99985 2.0127 9.99512C2.01006 9.9949 2.0072 9.99436 2.00488 9.99414C2.0047 9.99213 2.00507 9.98955 2.00488 9.9873C2.00015 9.92907 2 9.848 2 9.7002V2.2998L2.00488 2.0127C2.0051 2.01009 2.00467 2.00718 2.00488 2.00488C2.00718 2.00467 2.01009 2.0051 2.0127 2.00488L2.2998 2Z"
275
+ fill=${isFlat ? 'var(--alert-caution-color)' : 'currentColor'}
276
+ stroke=${isFlat
277
+ ? 'var(--alert-caution-outline-color)'
278
+ : 'currentColor'}
279
+ />
280
+ </svg>
281
+ `;
282
+ case BadgeType.isaCritical:
283
+ return html`
284
+ <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">
285
+ <path
286
+ d="M11 6L8.5 10.33H3.5L1 6L3.5 1.67H8.5L11 6Z"
287
+ fill=${isFlat
288
+ ? 'var(--critical-enabled-background-color)'
289
+ : 'currentColor'}
290
+ />
291
+ </svg>
292
+ `;
293
+ case BadgeType.isaDiagnostic:
294
+ return html`
295
+ <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">
296
+ <path
297
+ d="M5.25 1H6.75V5.7L9.955 3.85L10.705 5.15L7.5 7L10.705 8.85L9.955 10.15L6.75 8.3V11H5.25V8.3L2.045 10.15L1.295 8.85L4.5 7L1.295 5.15L2.045 3.85L5.25 5.7V1Z"
298
+ fill=${isFlat
299
+ ? 'var(--notification-enabled-background-color)'
300
+ : 'currentColor'}
301
+ />
302
+ </svg>
303
+ `;
236
304
  case BadgeType.running:
237
305
  return html`
238
306
  <svg width="100%" height="100%" viewBox="0 0 12 12" fill="none">