@oicl/openbridge-webcomponents-full-bundle 2.0.0-next.49 → 2.0.0-next.52

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 (254) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +18716 -17343
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +877 -14
  4. package/dist/ar/building-blocks/poi-header/poi-header.css.js +8 -4
  5. package/dist/ar/building-blocks/poi-header/poi-header.css.js.map +1 -1
  6. package/dist/ar/chart-object-vessel-button/chart-object-vessel-button.css.js +7 -7
  7. package/dist/ar/poi-card-header/poi-card-header.css.js +12 -6
  8. package/dist/ar/poi-card-header/poi-card-header.css.js.map +1 -1
  9. package/dist/automation/automation-tank/automation-tank.css.js +166 -28
  10. package/dist/automation/automation-tank/automation-tank.css.js.map +1 -1
  11. package/dist/automation/automation-tank/automation-tank.d.ts +32 -0
  12. package/dist/automation/automation-tank/automation-tank.d.ts.map +1 -1
  13. package/dist/automation/automation-tank/automation-tank.js +28 -0
  14. package/dist/automation/automation-tank/automation-tank.js.map +1 -1
  15. package/dist/building-blocks/alert-list/alert-list.css.js +4 -2
  16. package/dist/building-blocks/alert-list/alert-list.css.js.map +1 -1
  17. package/dist/components/accordion-card/accordion-card.css.js +6 -3
  18. package/dist/components/accordion-card/accordion-card.css.js.map +1 -1
  19. package/dist/components/accordion-item/accordion-item.css.js +4 -2
  20. package/dist/components/accordion-item/accordion-item.css.js.map +1 -1
  21. package/dist/components/advice-button/advice-button.css.js +2 -1
  22. package/dist/components/advice-button/advice-button.css.js.map +1 -1
  23. package/dist/components/alert-button/alert-button.css.js +2 -1
  24. package/dist/components/alert-button/alert-button.css.js.map +1 -1
  25. package/dist/components/alert-frame/alert-frame.css.js +7 -3
  26. package/dist/components/alert-frame/alert-frame.css.js.map +1 -1
  27. package/dist/components/alert-list-details/alert-list-details.css.js +4 -2
  28. package/dist/components/alert-list-details/alert-list-details.css.js.map +1 -1
  29. package/dist/components/alert-menu/alert-menu.css.js +4 -2
  30. package/dist/components/alert-menu/alert-menu.css.js.map +1 -1
  31. package/dist/components/app-button/app-button.css.js +8 -4
  32. package/dist/components/app-button/app-button.css.js.map +1 -1
  33. package/dist/components/attachment-list-item/attachment-list-item.css.js +8 -4
  34. package/dist/components/attachment-list-item/attachment-list-item.css.js.map +1 -1
  35. package/dist/components/badge/badge.css.js +4 -2
  36. package/dist/components/badge/badge.css.js.map +1 -1
  37. package/dist/components/breadcrumb/breadcrumb.css.js +4 -2
  38. package/dist/components/breadcrumb/breadcrumb.css.js.map +1 -1
  39. package/dist/components/brilliance-menu/brilliance-menu.css.js +2 -1
  40. package/dist/components/brilliance-menu/brilliance-menu.css.js.map +1 -1
  41. package/dist/components/calendar/calendar.css.js +5 -3
  42. package/dist/components/calendar/calendar.css.js.map +1 -1
  43. package/dist/components/card/card.css.js +2 -1
  44. package/dist/components/card/card.css.js.map +1 -1
  45. package/dist/components/chat-message/chat-message.css.js +6 -3
  46. package/dist/components/chat-message/chat-message.css.js.map +1 -1
  47. package/dist/components/check-button/check-button.css.js +5 -3
  48. package/dist/components/check-button/check-button.css.js.map +1 -1
  49. package/dist/components/checkbox-item/checkbox-item.css.js +4 -2
  50. package/dist/components/checkbox-item/checkbox-item.css.js.map +1 -1
  51. package/dist/components/clock/clock.css.js +7 -3
  52. package/dist/components/clock/clock.css.js.map +1 -1
  53. package/dist/components/command-menu/command-menu.css.js +6 -3
  54. package/dist/components/command-menu/command-menu.css.js.map +1 -1
  55. package/dist/components/communication-table/communication-table.css.js +10 -5
  56. package/dist/components/communication-table/communication-table.css.js.map +1 -1
  57. package/dist/components/context-menu-input/context-menu-input.css.js +4 -2
  58. package/dist/components/context-menu-input/context-menu-input.css.js.map +1 -1
  59. package/dist/components/date-item/date-item.css.js +16 -8
  60. package/dist/components/date-item/date-item.css.js.map +1 -1
  61. package/dist/components/dropdown-button/dropdown-button.css.js +6 -3
  62. package/dist/components/dropdown-button/dropdown-button.css.js.map +1 -1
  63. package/dist/components/elevated-card/elevated-card.css.js +8 -4
  64. package/dist/components/elevated-card/elevated-card.css.js.map +1 -1
  65. package/dist/components/elevated-card-radio-group/elevated-card-radio-group.css.js +6 -3
  66. package/dist/components/elevated-card-radio-group/elevated-card-radio-group.css.js.map +1 -1
  67. package/dist/components/event-item/event-item.css.js +6 -3
  68. package/dist/components/event-item/event-item.css.js.map +1 -1
  69. package/dist/components/event-list/event-list.css.js +2 -1
  70. package/dist/components/event-list/event-list.css.js.map +1 -1
  71. package/dist/components/filter-chip/filter-chip.css.js +2 -1
  72. package/dist/components/filter-chip/filter-chip.css.js.map +1 -1
  73. package/dist/components/floating-item/floating-item.css.js +6 -3
  74. package/dist/components/floating-item/floating-item.css.js.map +1 -1
  75. package/dist/components/form-container/form-container.css.js +1 -1
  76. package/dist/components/form-group/form-group.css.js +4 -2
  77. package/dist/components/form-group/form-group.css.js.map +1 -1
  78. package/dist/components/form-item/form-item.css.js +4 -2
  79. package/dist/components/form-item/form-item.css.js.map +1 -1
  80. package/dist/components/icon-button/icon-button.css.js +20 -19
  81. package/dist/components/icon-button/icon-button.css.js.map +1 -1
  82. package/dist/components/icon-button/icon-button.d.ts +2 -0
  83. package/dist/components/icon-button/icon-button.d.ts.map +1 -1
  84. package/dist/components/icon-button/icon-button.js.map +1 -1
  85. package/dist/components/icon-check-button/icon-check-button.css.js +4 -2
  86. package/dist/components/icon-check-button/icon-check-button.css.js.map +1 -1
  87. package/dist/components/input-chip/input-chip.css.js +2 -1
  88. package/dist/components/input-chip/input-chip.css.js.map +1 -1
  89. package/dist/components/keyboard-full/keyboard-full.css.js +2 -1
  90. package/dist/components/keyboard-full/keyboard-full.css.js.map +1 -1
  91. package/dist/components/keyboard-numeric/keyboard-numeric.css.js +2 -1
  92. package/dist/components/keyboard-numeric/keyboard-numeric.css.js.map +1 -1
  93. package/dist/components/menu-button/menu-button.css.js +4 -2
  94. package/dist/components/menu-button/menu-button.css.js.map +1 -1
  95. package/dist/components/message-menu-item/message-menu-item.css.js +8 -13
  96. package/dist/components/message-menu-item/message-menu-item.css.js.map +1 -1
  97. package/dist/components/modal-window/modal-window.css.js +2 -1
  98. package/dist/components/modal-window/modal-window.css.js.map +1 -1
  99. package/dist/components/navigation-item/navigation-item.css.js +9 -4
  100. package/dist/components/navigation-item/navigation-item.css.js.map +1 -1
  101. package/dist/components/notification-badge-button/notification-badge-button.css.js +2 -1
  102. package/dist/components/notification-badge-button/notification-badge-button.css.js.map +1 -1
  103. package/dist/components/notification-button/notification-button.css.js +2 -1
  104. package/dist/components/notification-button/notification-button.css.js.map +1 -1
  105. package/dist/components/number-input-field/number-input-field.css.js +4 -2
  106. package/dist/components/number-input-field/number-input-field.css.js.map +1 -1
  107. package/dist/components/pivot-item/pivot-item.css.js +4 -2
  108. package/dist/components/pivot-item/pivot-item.css.js.map +1 -1
  109. package/dist/components/progress-bar/progress-bar.css.js +4 -2
  110. package/dist/components/progress-bar/progress-bar.css.js.map +1 -1
  111. package/dist/components/progress-button/progress-button.css.js +4 -2
  112. package/dist/components/progress-button/progress-button.css.js.map +1 -1
  113. package/dist/components/radio/radio.css.js +4 -2
  114. package/dist/components/radio/radio.css.js.map +1 -1
  115. package/dist/components/rich-button/rich-button.css.js +4 -2
  116. package/dist/components/rich-button/rich-button.css.js.map +1 -1
  117. package/dist/components/sequence-item/sequence-item.css.js +11 -6
  118. package/dist/components/sequence-item/sequence-item.css.js.map +1 -1
  119. package/dist/components/sequence-loading-spinner/sequence-loading-spinner.css.js +3 -3
  120. package/dist/components/sequence-step/sequence-step.css.js +2 -1
  121. package/dist/components/sequence-step/sequence-step.css.js.map +1 -1
  122. package/dist/components/slide-button/slide-button.css.js +2 -1
  123. package/dist/components/slide-button/slide-button.css.js.map +1 -1
  124. package/dist/components/slider-double/slider-double.css.js +2 -1
  125. package/dist/components/slider-double/slider-double.css.js.map +1 -1
  126. package/dist/components/start-stop-switch/start-stop-switch.css.js +16 -8
  127. package/dist/components/start-stop-switch/start-stop-switch.css.js.map +1 -1
  128. package/dist/components/status-indicator/status-indicator.css.js +4 -2
  129. package/dist/components/status-indicator/status-indicator.css.js.map +1 -1
  130. package/dist/components/stepper-box/stepper-box.css.js +2 -1
  131. package/dist/components/stepper-box/stepper-box.css.js.map +1 -1
  132. package/dist/components/system-menu/system-menu.css.js +26 -13
  133. package/dist/components/system-menu/system-menu.css.js.map +1 -1
  134. package/dist/components/tab-item/tab-item.css.js +8 -5
  135. package/dist/components/tab-item/tab-item.css.js.map +1 -1
  136. package/dist/components/tabbed-card/tabbed-card.css.js +4 -2
  137. package/dist/components/tabbed-card/tabbed-card.css.js.map +1 -1
  138. package/dist/components/table/table.css.js +8 -5
  139. package/dist/components/table/table.css.js.map +1 -1
  140. package/dist/components/table-header-item/table-header-item.css.js +2 -1
  141. package/dist/components/table-header-item/table-header-item.css.js.map +1 -1
  142. package/dist/components/tag/tag.css.js +4 -2
  143. package/dist/components/tag/tag.css.js.map +1 -1
  144. package/dist/components/text-input-field/text-input-field.css.js +6 -3
  145. package/dist/components/text-input-field/text-input-field.css.js.map +1 -1
  146. package/dist/components/textarea-field/textarea-field.css.js +6 -3
  147. package/dist/components/textarea-field/textarea-field.css.js.map +1 -1
  148. package/dist/components/title-container/title-container.css.js +3 -2
  149. package/dist/components/title-container/title-container.css.js.map +1 -1
  150. package/dist/components/toggle-button-option/toggle-button-option.css.js +19 -12
  151. package/dist/components/toggle-button-option/toggle-button-option.css.js.map +1 -1
  152. package/dist/components/toggle-button-vertical-option/toggle-button-vertical-option.css.js +4 -2
  153. package/dist/components/toggle-button-vertical-option/toggle-button-vertical-option.css.js.map +1 -1
  154. package/dist/components/toggle-switch/toggle-switch.css.js +6 -3
  155. package/dist/components/toggle-switch/toggle-switch.css.js.map +1 -1
  156. package/dist/components/toggletip/toggletip.css.js +4 -2
  157. package/dist/components/toggletip/toggletip.css.js.map +1 -1
  158. package/dist/components/tooltip/tooltip.css.js +2 -1
  159. package/dist/components/tooltip/tooltip.css.js.map +1 -1
  160. package/dist/components/top-bar/top-bar.css.js +4 -2
  161. package/dist/components/top-bar/top-bar.css.js.map +1 -1
  162. package/dist/components/topbar-message-item/topbar-message-item.css.js +10 -5
  163. package/dist/components/topbar-message-item/topbar-message-item.css.js.map +1 -1
  164. package/dist/components/user-button/user-button.css.js +12 -7
  165. package/dist/components/user-button/user-button.css.js.map +1 -1
  166. package/dist/components/user-menu/user-menu.css.js +4 -2
  167. package/dist/components/user-menu/user-menu.css.js.map +1 -1
  168. package/dist/integration-systems/integration-bar/integration-bar.css.js +97 -0
  169. package/dist/integration-systems/integration-bar/integration-bar.css.js.map +1 -0
  170. package/dist/integration-systems/integration-bar/integration-bar.d.ts +91 -0
  171. package/dist/integration-systems/integration-bar/integration-bar.d.ts.map +1 -0
  172. package/dist/integration-systems/integration-bar/integration-bar.js +279 -0
  173. package/dist/integration-systems/integration-bar/integration-bar.js.map +1 -0
  174. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.css.js +2 -1
  175. package/dist/integration-systems/integration-bar-dropdown/integration-bar-dropdown.css.js.map +1 -1
  176. package/dist/integration-systems/integration-button/integration-button.css.js +472 -156
  177. package/dist/integration-systems/integration-button/integration-button.css.js.map +1 -1
  178. package/dist/integration-systems/integration-button/integration-button.d.ts +37 -1
  179. package/dist/integration-systems/integration-button/integration-button.d.ts.map +1 -1
  180. package/dist/integration-systems/integration-button/integration-button.js +202 -36
  181. package/dist/integration-systems/integration-button/integration-button.js.map +1 -1
  182. package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.css.js +17 -6
  183. package/dist/integration-systems/integration-dropdown-button/integration-dropdown-button.css.js.map +1 -1
  184. package/dist/integration-systems/integration-fleet-button/integration-fleet-button.css.js +12 -6
  185. package/dist/integration-systems/integration-fleet-button/integration-fleet-button.css.js.map +1 -1
  186. package/dist/integration-systems/integration-tabs/integration-tabs.css.js +3 -1
  187. package/dist/integration-systems/integration-tabs/integration-tabs.css.js.map +1 -1
  188. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.css.js +75 -0
  189. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.css.js.map +1 -0
  190. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.d.ts +37 -0
  191. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.d.ts.map +1 -0
  192. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.js +72 -0
  193. package/dist/integration-systems/integration-vessel-menu/integration-vessel-menu.js.map +1 -0
  194. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.css.js +21 -8
  195. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.css.js.map +1 -1
  196. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.d.ts +2 -0
  197. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.d.ts.map +1 -1
  198. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.js +5 -0
  199. package/dist/integration-systems/integration-vessel-selector/integration-vessel-selector.js.map +1 -1
  200. package/dist/navigation-instruments/azimuth-thruster-labeled/azimuth-thruster-labeled.css.js +3 -1
  201. package/dist/navigation-instruments/azimuth-thruster-labeled/azimuth-thruster-labeled.css.js.map +1 -1
  202. package/dist/navigation-instruments/instrument-field/instrument-field.css.js +4 -2
  203. package/dist/navigation-instruments/instrument-field/instrument-field.css.js.map +1 -1
  204. package/dist/navigation-instruments/readout/readout.css.js +4 -2
  205. package/dist/navigation-instruments/readout/readout.css.js.map +1 -1
  206. package/dist/navigation-instruments/watch/watch.css.js +3 -2
  207. package/dist/navigation-instruments/watch/watch.css.js.map +1 -1
  208. package/dist/navigation-instruments/watch-flat/watch-flat.css.js +3 -2
  209. package/dist/navigation-instruments/watch-flat/watch-flat.css.js.map +1 -1
  210. package/dist/openbridge.css +4 -2
  211. package/dist/pages/alert-detail-page/alert-detail-page.css.js +15 -8
  212. package/dist/pages/alert-detail-page/alert-detail-page.css.js.map +1 -1
  213. package/package.json +3 -3
  214. package/postcss.config.mjs +2 -1
  215. package/script/check-css-variables.ts +9 -30
  216. package/src/ar/chart-object-vessel-button/chart-object-vessel-button.css +7 -7
  217. package/src/ar/poi-layer/poi-layer.stories.ts +3 -0
  218. package/src/automation/automation-tank/automation-tank.css +119 -21
  219. package/src/automation/automation-tank/automation-tank.stories.ts +38 -0
  220. package/src/automation/automation-tank/automation-tank.ts +64 -0
  221. package/src/components/calendar/calendar.css +1 -1
  222. package/src/components/check-button/check-button.css +1 -1
  223. package/src/components/icon-button/icon-button.css +1 -1
  224. package/src/components/icon-button/icon-button.ts +2 -0
  225. package/src/components/message-menu-item/message-menu-item.css +2 -5
  226. package/src/components/sequence-item/sequence-item.css +5 -3
  227. package/src/components/sequence-loading-spinner/sequence-loading-spinner.css +3 -3
  228. package/src/components/tab-item/tab-item.css +2 -2
  229. package/src/components/table/table.css +2 -2
  230. package/src/components/toggle-button-option/toggle-button-option.css +1 -3
  231. package/src/integration-systems/integration-app-bar/integration-app-bar.stories.ts +1 -1
  232. package/src/integration-systems/integration-bar/integration-bar.css +86 -0
  233. package/src/integration-systems/integration-bar/integration-bar.stories.ts +479 -0
  234. package/src/integration-systems/integration-bar/integration-bar.ts +301 -0
  235. package/src/integration-systems/integration-bar-dropdown/integration-bar-dropdown.stories.ts +5 -3
  236. package/src/integration-systems/integration-button/integration-button.css +203 -64
  237. package/src/integration-systems/integration-button/integration-button.stories.ts +71 -5
  238. package/src/integration-systems/integration-button/integration-button.ts +242 -43
  239. package/src/integration-systems/integration-dropdown-button/integration-dropdown-button.css +7 -1
  240. package/src/integration-systems/integration-dropdown-button/integration-dropdown-button.stories.ts +1 -1
  241. package/src/integration-systems/integration-fleet-button/integration-fleet-button.stories.ts +1 -1
  242. package/src/integration-systems/integration-tabs/integration-tabs.stories.ts +1 -1
  243. package/src/integration-systems/integration-vessel-menu/integration-vessel-menu.css +59 -0
  244. package/src/integration-systems/integration-vessel-menu/integration-vessel-menu.stories.ts +180 -0
  245. package/src/integration-systems/integration-vessel-menu/integration-vessel-menu.ts +83 -0
  246. package/src/integration-systems/integration-vessel-selector/integration-vessel-selector.css +21 -9
  247. package/src/integration-systems/integration-vessel-selector/integration-vessel-selector.stories.ts +187 -3
  248. package/src/integration-systems/integration-vessel-selector/integration-vessel-selector.ts +5 -0
  249. package/src/mixins/alert.css +0 -29
  250. package/src/mixins/font-extras.css +103 -0
  251. package/src/mixins/fonts.css +26 -96
  252. package/src/navigation-instruments/watch/watch.css +1 -1
  253. package/src/navigation-instruments/watch-flat/watch-flat.css +1 -1
  254. package/src/pages/alert-detail-page/alert-detail-page.css +1 -1
@@ -1,22 +1,30 @@
1
1
  import type {Meta, StoryObj} from '@storybook/web-components-vite';
2
- import {ObcIntegrationButton} from './integration-button.js';
2
+ import {
3
+ IntegrationButtonType,
4
+ IntegrationButtonVariant,
5
+ ObcIntegrationButton,
6
+ } from './integration-button.js';
3
7
  import './integration-button.js';
4
8
  import {html} from 'lit';
5
9
  import '../../icons/icon-placeholder.js';
6
10
 
7
- const meta: Meta<typeof ObcIntegrationButton> = {
11
+ const meta: Meta<ObcIntegrationButton> = {
8
12
  title: 'Integration Systems/Integration Button',
9
- tags: ['6.0'],
13
+ tags: ['alpha'],
10
14
  component: 'obc-integration-button',
11
15
  args: {
12
16
  hasLeadingIcon: true,
13
17
  hasTrailingIcon: true,
14
18
  hasTrailingIcon2: true,
19
+ hasStatus: false,
15
20
  readouts: [
16
21
  {label: 'Readout 1', value: 'Value 1', unit: 'Unit 1'},
17
22
  {label: 'Readout 2', value: 'Value 2', unit: 'Unit 2'},
18
23
  ],
24
+ variant: IntegrationButtonVariant.normal,
25
+ type: IntegrationButtonType.regular,
19
26
  },
27
+
20
28
  globals: {
21
29
  backgrounds: {
22
30
  value: 'integration-container-global-color',
@@ -28,9 +36,12 @@ const meta: Meta<typeof ObcIntegrationButton> = {
28
36
  .hasLeadingIcon=${args.hasLeadingIcon}
29
37
  .hasTrailingIcon=${args.hasTrailingIcon}
30
38
  .hasTrailingIcon2=${args.hasTrailingIcon2}
39
+ .hasStatus=${args.hasStatus}
31
40
  .readouts=${args.readouts}
32
41
  .selected=${args.selected}
33
42
  .disabled=${args.disabled}
43
+ .variant=${args.variant}
44
+ .type=${args.type}
34
45
  >
35
46
  <obi-placeholder slot="leading-icon"></obi-placeholder>
36
47
  <obi-placeholder slot="trailing-icon"></obi-placeholder>
@@ -44,10 +55,65 @@ const meta: Meta<typeof ObcIntegrationButton> = {
44
55
  } satisfies Meta<ObcIntegrationButton>;
45
56
  export default meta;
46
57
 
47
- export const Primary: StoryObj<typeof ObcIntegrationButton> = {};
58
+ export const Primary: StoryObj<ObcIntegrationButton> = {};
59
+
60
+ export const WithStatus: StoryObj<ObcIntegrationButton> = {
61
+ args: {
62
+ hasStatus: true,
63
+ },
64
+ render: (args) => html`
65
+ <obc-integration-button
66
+ style="width: 320px; display: block;"
67
+ .hasLeadingIcon=${args.hasLeadingIcon}
68
+ .hasTrailingIcon=${args.hasTrailingIcon}
69
+ .hasTrailingIcon2=${args.hasTrailingIcon2}
70
+ .readouts=${args.readouts}
71
+ .selected=${args.selected}
72
+ .disabled=${args.disabled}
73
+ .variant=${args.variant}
74
+ .type=${args.type}
75
+ .hasStatus=${args.hasStatus}
76
+ >
77
+ <obi-placeholder slot="leading-icon"></obi-placeholder>
78
+ <obi-placeholder slot="trailing-icon"></obi-placeholder>
79
+ <obi-placeholder slot="trailing-icon2"></obi-placeholder>
80
+ <div slot="label">Label</div>
81
+ <div slot="status">Status</div>
82
+ <div slot="info-label">Info Label</div>
83
+ <div slot="info-status">Info Status</div>
84
+ </obc-integration-button>
85
+ `,
86
+ };
48
87
 
49
- export const Selected: StoryObj<typeof ObcIntegrationButton> = {
88
+ export const Selected: StoryObj<ObcIntegrationButton> = {
50
89
  args: {
51
90
  selected: true,
52
91
  },
53
92
  };
93
+
94
+ export const Flat: StoryObj<ObcIntegrationButton> = {
95
+ args: {
96
+ variant: IntegrationButtonVariant.flat,
97
+ hasTrailingIcon: false,
98
+ },
99
+ };
100
+
101
+ export const Hug: StoryObj<ObcIntegrationButton> = {
102
+ args: {
103
+ type: IntegrationButtonType.hug,
104
+ hasTrailingIcon: false,
105
+ },
106
+ };
107
+
108
+ export const Rich: StoryObj<ObcIntegrationButton> = {
109
+ args: {
110
+ type: IntegrationButtonType.rich,
111
+ },
112
+ };
113
+
114
+ export const Disabled: StoryObj<ObcIntegrationButton> = {
115
+ args: {
116
+ type: IntegrationButtonType.rich,
117
+ disabled: true,
118
+ },
119
+ };
@@ -10,6 +10,17 @@ export interface IntegrationButtonReadout {
10
10
  unit: string;
11
11
  }
12
12
 
13
+ export enum IntegrationButtonVariant {
14
+ normal = 'normal',
15
+ flat = 'flat',
16
+ }
17
+
18
+ export enum IntegrationButtonType {
19
+ hug = 'hug',
20
+ regular = 'regular',
21
+ rich = 'rich',
22
+ }
23
+
13
24
  /**
14
25
  * `<obc-integration-button>` – A button component for integration systems.
15
26
  *
@@ -17,73 +28,261 @@ export interface IntegrationButtonReadout {
17
28
  * @slot trailing-icon - Icon after label (shown when `hasTrailingIcon` is true)
18
29
  * @slot trailing-icon2 - Icon after label (shown when `hasTrailingIcon2` is true)
19
30
  * @slot label - Label text
20
- * @slot status - Status text
31
+ * @slot status - Status/description text (shown when `hasStatus` is true)
21
32
  * @slot info-label - Info label text
22
33
  * @slot info-status - Info status text
34
+ * @slot integration-vessel-menu - Integration vessel menu to be shown when button is in activated state
35
+ *
36
+ * @fires click - Fired when the internal button is activated.
37
+ *
38
+ * @property {boolean} hasTrailingIcon - Shows the `trailing-icon` slot.
39
+ * @property {boolean} hasTrailingIcon2 - Shows the `trailing-icon2` slot.
40
+ * @property {boolean} hasLeadingIcon - Shows the `leading-icon` slot.
41
+ * @property {boolean} hasstatus - Shows the `status` slot.
42
+ * @property {IntegrationButtonReadout[]} readouts - List of readout items shown in the rich type.
43
+ * @property {boolean} disabled - Disables the internal button.
44
+ * @property {boolean} activated - Applies active state styling while a selection is pending.
45
+ * @property {boolean} selected - Applies selected state styling.
46
+ * @property {boolean} dividerBottom - Shows a bottom divider under the button.
47
+ * @property {boolean} dividerRight - Shows a right divider to separate from adjacent buttons.
48
+ * @property {IntegrationButtonVariant} variant - Visual variant (`normal` or `flat`).
49
+ * @property {IntegrationButtonType} type - Layout type (`hug`, `regular`, or `rich`).
23
50
  */
24
51
  @customElement('obc-integration-button')
25
52
  export class ObcIntegrationButton extends LitElement {
26
53
  @property({type: Boolean}) hasTrailingIcon = false;
27
54
  @property({type: Boolean}) hasTrailingIcon2 = false;
28
55
  @property({type: Boolean}) hasLeadingIcon = false;
56
+ @property({type: Boolean}) hasStatus = false;
29
57
  @property({type: Array, attribute: false})
30
58
  readouts: IntegrationButtonReadout[] = [];
31
59
  @property({type: Boolean}) disabled = false;
60
+ @property({type: Boolean}) activated = false;
32
61
  @property({type: Boolean}) selected = false;
33
62
  @property({type: Boolean}) dividerBottom = false;
63
+ @property({type: Boolean}) dividerRight = false;
64
+ @property({type: String}) variant: IntegrationButtonVariant =
65
+ IntegrationButtonVariant.normal;
66
+ @property({type: String}) type: IntegrationButtonType =
67
+ IntegrationButtonType.regular;
34
68
 
35
- override render() {
69
+ private getButtonClasses() {
70
+ return {
71
+ 'touch-target': true,
72
+ selected: this.selected,
73
+ activated: this.activated,
74
+ disabled: this.disabled,
75
+ 'has-description': this.hasStatus,
76
+ ['variant-' + this.variant]: true,
77
+ ['type-' + this.type]: true,
78
+ };
79
+ }
80
+
81
+ private onIntegrationVesselMenuClick(event: Event) {
82
+ event.stopPropagation();
83
+ }
84
+
85
+ renderRich() {
36
86
  return html`
37
- <button
87
+ <div class="button-horizontal-divider-container">
88
+ <div class="button-vertical-divider-container">
89
+ <button
90
+ class=${classMap(this.getButtonClasses())}
91
+ ?disabled=${this.disabled}
92
+ >
93
+ <div class="content-container">
94
+ <div class="main-container">
95
+ ${this.hasLeadingIcon
96
+ ? html`<div class="icon leading">
97
+ <slot name="leading-icon"></slot>
98
+ </div>`
99
+ : nothing}
100
+ <div class="text-container">
101
+ <div class="label"><slot name="label"></slot></div>
102
+ ${this.hasStatus
103
+ ? html`<div class="status">
104
+ <slot name="status"></slot>
105
+ </div>`
106
+ : nothing}
107
+ </div>
108
+ ${this.hasTrailingIcon
109
+ ? html`<div class="icon-container">
110
+ ${this.hasTrailingIcon2
111
+ ? html`<slot
112
+ name="trailing-icon2"
113
+ class="icon trailing"
114
+ ></slot>`
115
+ : nothing}
116
+ <slot name="trailing-icon" class="icon trailing"></slot>
117
+ </div>`
118
+ : nothing}
119
+ </div>
120
+ <div class="info-container">
121
+ <div class="info-item">
122
+ <slot class="info-label" name="info-label"></slot>
123
+ <slot class="info-status" name="info-status"></slot>
124
+ </div>
125
+ ${this.readouts.map(
126
+ (readout) => html`
127
+ <div class="info-readout-item">
128
+ <div class="info-item-label">${readout.label}</div>
129
+ <div class="info-item-value">${readout.value}</div>
130
+ <div class="info-item-unit">${readout.unit}</div>
131
+ </div>
132
+ `
133
+ )}
134
+ </div>
135
+ </div>
136
+ </button>
137
+ ${this.dividerRight
138
+ ? html`<div class="divider-right"></div>`
139
+ : html`<div
140
+ class="divider-right"
141
+ style="visibility: hidden;"
142
+ ></div>`}
143
+ </div>
144
+ ${this.dividerBottom
145
+ ? html`<div class="divider-bottom"></div>`
146
+ : nothing}
147
+ </div>
148
+ <div
38
149
  class=${classMap({
39
- wrapper: true,
40
- selected: this.selected,
150
+ 'integration-vessel-menu-container': true,
151
+ show: this.activated,
41
152
  })}
42
- ?disabled=${this.disabled}
153
+ @click=${this.onIntegrationVesselMenuClick}
43
154
  >
44
- <div class="main-container">
45
- ${this.hasLeadingIcon
46
- ? html`<div class="icon leading">
47
- <slot name="leading-icon"></slot>
48
- </div>`
49
- : nothing}
50
- <div class="text-container">
51
- <div class="label"><slot name="label"></slot></div>
52
- <div class="status"><slot name="status"></slot></div>
155
+ <slot name="integration-vessel-menu"></slot>
156
+ </div>
157
+ `;
158
+ }
159
+
160
+ renderRegular() {
161
+ return html`
162
+ <div class="button-vertical-divider-container">
163
+ <button
164
+ class=${classMap(this.getButtonClasses())}
165
+ ?disabled=${this.disabled}
166
+ >
167
+ <div class="content-container">
168
+ ${this.hasLeadingIcon
169
+ ? html`<div class="icon leading">
170
+ <slot name="leading-icon"></slot>
171
+ </div>`
172
+ : nothing}
173
+ <div class="text-container">
174
+ <div class="label"><slot name="label"></slot></div>
175
+ ${this.hasStatus
176
+ ? html`<div class="status"><slot name="status"></slot></div>`
177
+ : nothing}
178
+ </div>
179
+ ${this.hasTrailingIcon
180
+ ? html`<div class="icon-container">
181
+ ${this.hasTrailingIcon2
182
+ ? html`<slot
183
+ name="trailing-icon2"
184
+ class="icon trailing"
185
+ ></slot>`
186
+ : nothing}
187
+ <slot name="trailing-icon" class="icon trailing"></slot>
188
+ </div>`
189
+ : nothing}
53
190
  </div>
54
- ${this.hasTrailingIcon
55
- ? html`<div class="icon-container">
56
- ${this.hasTrailingIcon2
57
- ? html`<slot
58
- name="trailing-icon2"
59
- class="icon trailing"
60
- ></slot>`
61
- : nothing}
62
- <slot name="trailing-icon" class="icon trailing"></slot>
63
- </div>`
64
- : nothing}
65
- </div>
66
- <div class="info-container">
67
- <div class="info-item">
68
- <slot class="info-label" name="info-label"></slot>
69
- <slot class="info-status" name="info-status"></slot>
191
+ </button>
192
+ ${this.dividerRight
193
+ ? html`<div class="divider-right"></div>`
194
+ : html`<div class="divider-right" style="visibility: hidden;"></div>`}
195
+ </div>
196
+ <div
197
+ class=${classMap({
198
+ 'integration-vessel-menu-container': true,
199
+ show: this.activated,
200
+ })}
201
+ @click=${this.onIntegrationVesselMenuClick}
202
+ >
203
+ <slot name="integration-vessel-menu"></slot>
204
+ </div>
205
+ `;
206
+ }
207
+
208
+ renderHug() {
209
+ return html`
210
+ <div class="button-vertical-divider-container">
211
+ <button
212
+ class=${classMap(this.getButtonClasses())}
213
+ ?disabled=${this.disabled}
214
+ >
215
+ <div class="content-container">
216
+ ${this.hasLeadingIcon
217
+ ? html`<div class="icon leading">
218
+ <slot name="leading-icon"></slot>
219
+ </div>`
220
+ : nothing}
221
+ <div class="text-container">
222
+ <div class="label"><slot name="label"></slot></div>
223
+ ${this.hasStatus
224
+ ? html`<div class="status"><slot name="status"></slot></div>`
225
+ : nothing}
226
+ </div>
227
+ ${this.hasTrailingIcon
228
+ ? html`<div class="icon-container">
229
+ ${this.hasTrailingIcon2
230
+ ? html`<slot
231
+ name="trailing-icon2"
232
+ class="icon trailing"
233
+ ></slot>`
234
+ : nothing}
235
+ <slot name="trailing-icon" class="icon trailing"></slot>
236
+ </div>`
237
+ : nothing}
70
238
  </div>
71
- ${this.readouts.map(
72
- (readout) => html`
73
- <div class="info-readout-item">
74
- <div class="info-item-label">${readout.label}</div>
75
- <div class="info-item-value">${readout.value}</div>
76
- <div class="info-item-unit">${readout.unit}</div>
77
- </div>
78
- `
79
- )}
80
- </div>
81
- </button>
82
- ${this.dividerBottom ? html`<div class="divider-bottom"></div>` : nothing}
239
+ </button>
240
+ ${this.dividerRight
241
+ ? html`<div class="divider-right"></div>`
242
+ : html`<div class="divider-right" style="visibility: hidden;"></div>`}
243
+ </div>
244
+ <div
245
+ class=${classMap({
246
+ 'integration-vessel-menu-container': true,
247
+ show: this.activated,
248
+ })}
249
+ @click=${this.onIntegrationVesselMenuClick}
250
+ >
251
+ <slot name="integration-vessel-menu"></slot>
252
+ </div>
83
253
  `;
84
254
  }
85
255
 
256
+ override render() {
257
+ switch (this.type) {
258
+ case IntegrationButtonType.hug: {
259
+ return this.renderHug();
260
+ }
261
+ case IntegrationButtonType.rich: {
262
+ return this.renderRich();
263
+ }
264
+ case IntegrationButtonType.regular:
265
+ default: {
266
+ return this.renderRegular();
267
+ }
268
+ }
269
+ }
270
+
86
271
  static override styles = unsafeCSS(compentStyle);
272
+
273
+ override updated() {
274
+ let dividerHeight = 40;
275
+ if (this.type === IntegrationButtonType.hug) {
276
+ dividerHeight = 32;
277
+ }
278
+ if (this.type === IntegrationButtonType.rich) {
279
+ dividerHeight = 64;
280
+ }
281
+ this.style.setProperty(
282
+ '--integration-button-divider-height',
283
+ `${dividerHeight}px`
284
+ );
285
+ }
87
286
  }
88
287
 
89
288
  declare global {
@@ -98,7 +98,7 @@
98
98
  border-radius: 12px;
99
99
  background: var(--integration-container-global-color);
100
100
  box-shadow: var(--shadow-floating);
101
- padding: 4px;
101
+ padding: 4px 0;
102
102
 
103
103
  overflow-y: auto;
104
104
  }
@@ -111,6 +111,7 @@
111
111
  min-height: var(
112
112
  --menu-navigation-components-navigation-item-touch-target-size
113
113
  );
114
+ margin: 0 4px;
114
115
  padding: 0px
115
116
  var(--menu-navigation-components-navigation-item-padding-horizontal);
116
117
  border-radius: var(
@@ -187,6 +188,11 @@
187
188
  }
188
189
  }
189
190
 
191
+ slot[name="fleet"] {
192
+ display: flex;
193
+ flex: 1;
194
+ }
195
+
190
196
  .wrapper option.fleet-option {
191
197
  display: flex;
192
198
  align-items: center;
@@ -8,7 +8,7 @@ import '../integration-button/integration-button.js';
8
8
 
9
9
  const meta: Meta<ObcIntegrationDropdownButton> = {
10
10
  title: 'Integration Systems/Integration Dropdown Button',
11
- tags: ['autodocs', '6.0'],
11
+ tags: ['alpha'],
12
12
  component: 'obc-integration-dropdown-button',
13
13
  globals: {
14
14
  backgrounds: {
@@ -6,7 +6,7 @@ import '../../icons/icon-placeholder.js';
6
6
 
7
7
  const meta: Meta<typeof ObcIntegrationFleetButton> = {
8
8
  title: 'Integration Systems/Fleet Button',
9
- tags: ['6.0'],
9
+ tags: ['alpha'],
10
10
  component: 'obc-integration-fleet-button',
11
11
  args: {
12
12
  fleetName: 'Fleet Name',
@@ -5,7 +5,7 @@ import {html} from 'lit';
5
5
 
6
6
  const meta: Meta<typeof ObcIntegrationTabs> = {
7
7
  title: 'Integration Systems/Building Blocks/Integration Tabs',
8
- tags: ['6.0'],
8
+ tags: ['alpha'],
9
9
  component: 'obc-integration-tabs',
10
10
  args: {},
11
11
  globals: {
@@ -0,0 +1,59 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ .wrapper {
6
+ @mixin style style=integration-normal noClick=true;
7
+ display: flex;
8
+ flex-direction: column;
9
+ height: 100%;
10
+ min-width: 788px;
11
+ align-items: center;
12
+ background: var(--container-global-color);
13
+ border-radius: var(
14
+ --app-components-integration-system-dropdown-menu-border-radius
15
+ );
16
+ border: 2px solid var(--integration-border-menu-outline-color);
17
+ box-shadow: var(--shadow-floating-x) var(--shadow-floating-y)
18
+ var(--shadow-floating-blur) var(--shadow-raised-spread)
19
+ var(--shadow-floating-color);
20
+ }
21
+
22
+ .footer-container {
23
+ width: 100%;
24
+ display: flex;
25
+ height: var(
26
+ --app-components-integration-system-dropdown-menu-action-container-height
27
+ );
28
+ padding: 0
29
+ var(--app-components-integration-system-dropdown-menu-padding-horizontal);
30
+ gap: var(--app-components-alert-menu-button-spacing);
31
+ border-top: 1px solid var(--border-divider-color);
32
+ background: var(--container-global-color);
33
+ }
34
+
35
+ .footer-container obc-button {
36
+ flex-grow: 1;
37
+ white-space: nowrap;
38
+ }
39
+
40
+ .content-container {
41
+ display: flex;
42
+ justify-content: center;
43
+ align-items: stretch;
44
+ align-self: stretch;
45
+ min-height: 0;
46
+ flex: 1;
47
+ }
48
+
49
+ .alert-list {
50
+ width: 100%;
51
+ }
52
+
53
+ .leading-icon {
54
+ color: var(--integration-on-normal-neutral-color);
55
+ }
56
+
57
+ .container-title {
58
+ color: var(--integration-on-normal-neutral-color);
59
+ }