@ui5/webcomponents-fiori 2.19.2 → 2.20.0-rc.1

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 (218) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/DynamicPage.js +8 -2
  4. package/dist/DynamicPage.js.map +1 -1
  5. package/dist/ShellBar.d.ts +231 -304
  6. package/dist/ShellBar.js +506 -980
  7. package/dist/ShellBar.js.map +1 -1
  8. package/dist/ShellBarItem.d.ts +15 -31
  9. package/dist/ShellBarItem.js +36 -25
  10. package/dist/ShellBarItem.js.map +1 -1
  11. package/dist/ShellBarItemTemplate.d.ts +2 -0
  12. package/dist/ShellBarItemTemplate.js +11 -0
  13. package/dist/ShellBarItemTemplate.js.map +1 -0
  14. package/dist/ShellBarTemplate.js +53 -55
  15. package/dist/ShellBarTemplate.js.map +1 -1
  16. package/dist/UserMenu.d.ts +10 -1
  17. package/dist/UserMenu.js +9 -1
  18. package/dist/UserMenu.js.map +1 -1
  19. package/dist/UserMenuAccount.js +0 -2
  20. package/dist/UserMenuAccount.js.map +1 -1
  21. package/dist/UserMenuItem.d.ts +0 -1
  22. package/dist/UserMenuItem.js +0 -1
  23. package/dist/UserMenuItem.js.map +1 -1
  24. package/dist/UserMenuItemGroup.d.ts +0 -1
  25. package/dist/UserMenuItemGroup.js +0 -1
  26. package/dist/UserMenuItemGroup.js.map +1 -1
  27. package/dist/UserMenuTemplate.js +3 -1
  28. package/dist/UserMenuTemplate.js.map +1 -1
  29. package/dist/UserSettingsAccountView.js +0 -2
  30. package/dist/UserSettingsAccountView.js.map +1 -1
  31. package/dist/UserSettingsAppearanceView.js +0 -2
  32. package/dist/UserSettingsAppearanceView.js.map +1 -1
  33. package/dist/UserSettingsAppearanceViewGroup.d.ts +0 -1
  34. package/dist/UserSettingsAppearanceViewGroup.js +0 -1
  35. package/dist/UserSettingsAppearanceViewGroup.js.map +1 -1
  36. package/dist/UserSettingsAppearanceViewItem.js +0 -2
  37. package/dist/UserSettingsAppearanceViewItem.js.map +1 -1
  38. package/dist/UserSettingsDialog.d.ts +0 -1
  39. package/dist/UserSettingsDialog.js +0 -1
  40. package/dist/UserSettingsDialog.js.map +1 -1
  41. package/dist/UserSettingsItem.d.ts +0 -1
  42. package/dist/UserSettingsItem.js +0 -1
  43. package/dist/UserSettingsItem.js.map +1 -1
  44. package/dist/UserSettingsView.d.ts +0 -1
  45. package/dist/UserSettingsView.js +0 -1
  46. package/dist/UserSettingsView.js.map +1 -1
  47. package/dist/css/themes/ShellBar.css +1 -1
  48. package/dist/css/themes/ShellBarItem.css +1 -0
  49. package/dist/css/themes/ShellBarLegacy.css +1 -0
  50. package/dist/css/themes/ShellBarSearchLegacy.css +1 -0
  51. package/dist/custom-elements-internal.json +363 -750
  52. package/dist/custom-elements.json +324 -609
  53. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  54. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  55. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  56. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  57. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  58. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  59. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  60. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  61. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  62. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  63. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  64. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  65. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  66. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  67. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  68. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  69. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  70. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  71. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  72. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  73. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  74. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  76. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  104. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  105. package/dist/generated/i18n/i18n-defaults.js +2 -1
  106. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  107. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  108. package/dist/generated/themes/ShellBar.css.js +1 -1
  109. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  110. package/dist/generated/themes/ShellBarItem.css.d.ts +2 -0
  111. package/dist/generated/themes/ShellBarItem.css.js +8 -0
  112. package/dist/generated/themes/ShellBarItem.css.js.map +1 -0
  113. package/dist/generated/themes/ShellBarLegacy.css.d.ts +2 -0
  114. package/dist/generated/themes/ShellBarLegacy.css.js +8 -0
  115. package/dist/generated/themes/ShellBarLegacy.css.js.map +1 -0
  116. package/dist/generated/themes/ShellBarSearchLegacy.css.d.ts +2 -0
  117. package/dist/generated/themes/ShellBarSearchLegacy.css.js +8 -0
  118. package/dist/generated/themes/ShellBarSearchLegacy.css.js.map +1 -0
  119. package/dist/shellbar/IShellBarSearchController.d.ts +28 -0
  120. package/dist/shellbar/IShellBarSearchController.js +2 -0
  121. package/dist/shellbar/IShellBarSearchController.js.map +1 -0
  122. package/dist/shellbar/ShellBarAccessibility.d.ts +42 -0
  123. package/dist/shellbar/ShellBarAccessibility.js +50 -0
  124. package/dist/shellbar/ShellBarAccessibility.js.map +1 -0
  125. package/dist/shellbar/ShellBarItemNavigation.d.ts +18 -0
  126. package/dist/shellbar/ShellBarItemNavigation.js +86 -0
  127. package/dist/shellbar/ShellBarItemNavigation.js.map +1 -0
  128. package/dist/shellbar/ShellBarLegacy.d.ts +46 -0
  129. package/dist/shellbar/ShellBarLegacy.js +138 -0
  130. package/dist/shellbar/ShellBarLegacy.js.map +1 -0
  131. package/dist/shellbar/ShellBarOverflow.d.ts +51 -0
  132. package/dist/shellbar/ShellBarOverflow.js +159 -0
  133. package/dist/shellbar/ShellBarOverflow.js.map +1 -0
  134. package/dist/shellbar/ShellBarSearch.d.ts +59 -0
  135. package/dist/shellbar/ShellBarSearch.js +145 -0
  136. package/dist/shellbar/ShellBarSearch.js.map +1 -0
  137. package/dist/shellbar/ShellBarSearchLegacy.d.ts +65 -0
  138. package/dist/shellbar/ShellBarSearchLegacy.js +116 -0
  139. package/dist/shellbar/ShellBarSearchLegacy.js.map +1 -0
  140. package/dist/shellbar/templates/ShellBarLegacyTemplate.d.ts +20 -0
  141. package/dist/shellbar/templates/ShellBarLegacyTemplate.js +71 -0
  142. package/dist/shellbar/templates/ShellBarLegacyTemplate.js.map +1 -0
  143. package/dist/shellbar/templates/ShellBarSearchLegacyTemplate.d.ts +5 -0
  144. package/dist/shellbar/templates/ShellBarSearchLegacyTemplate.js +18 -0
  145. package/dist/shellbar/templates/ShellBarSearchLegacyTemplate.js.map +1 -0
  146. package/dist/shellbar/templates/ShellBarSearchTemplate.d.ts +4 -0
  147. package/dist/shellbar/templates/ShellBarSearchTemplate.js +17 -0
  148. package/dist/shellbar/templates/ShellBarSearchTemplate.js.map +1 -0
  149. package/dist/vscode.html-custom-data.json +29 -79
  150. package/dist/web-types.json +75 -239
  151. package/package.json +8 -8
  152. package/src/ShellBarItemTemplate.tsx +36 -0
  153. package/src/ShellBarTemplate.tsx +222 -300
  154. package/src/UserMenuTemplate.tsx +11 -3
  155. package/src/i18n/messagebundle.properties +3 -0
  156. package/src/i18n/messagebundle_ar.properties +2 -0
  157. package/src/i18n/messagebundle_bg.properties +6 -4
  158. package/src/i18n/messagebundle_ca.properties +2 -0
  159. package/src/i18n/messagebundle_cnr.properties +2 -0
  160. package/src/i18n/messagebundle_cs.properties +2 -0
  161. package/src/i18n/messagebundle_cy.properties +2 -0
  162. package/src/i18n/messagebundle_da.properties +2 -0
  163. package/src/i18n/messagebundle_de.properties +2 -0
  164. package/src/i18n/messagebundle_el.properties +2 -0
  165. package/src/i18n/messagebundle_en.properties +2 -0
  166. package/src/i18n/messagebundle_en_GB.properties +2 -0
  167. package/src/i18n/messagebundle_en_US_sappsd.properties +2 -0
  168. package/src/i18n/messagebundle_en_US_saprigi.properties +2 -0
  169. package/src/i18n/messagebundle_en_US_saptrc.properties +2 -0
  170. package/src/i18n/messagebundle_es.properties +2 -0
  171. package/src/i18n/messagebundle_es_MX.properties +2 -0
  172. package/src/i18n/messagebundle_et.properties +2 -0
  173. package/src/i18n/messagebundle_fi.properties +2 -0
  174. package/src/i18n/messagebundle_fr.properties +2 -0
  175. package/src/i18n/messagebundle_fr_CA.properties +2 -0
  176. package/src/i18n/messagebundle_hi.properties +2 -0
  177. package/src/i18n/messagebundle_hr.properties +2 -0
  178. package/src/i18n/messagebundle_hu.properties +2 -0
  179. package/src/i18n/messagebundle_id.properties +3 -1
  180. package/src/i18n/messagebundle_it.properties +2 -0
  181. package/src/i18n/messagebundle_iw.properties +2 -0
  182. package/src/i18n/messagebundle_ja.properties +2 -0
  183. package/src/i18n/messagebundle_kk.properties +2 -0
  184. package/src/i18n/messagebundle_ko.properties +2 -0
  185. package/src/i18n/messagebundle_lt.properties +2 -0
  186. package/src/i18n/messagebundle_lv.properties +2 -0
  187. package/src/i18n/messagebundle_mk.properties +2 -0
  188. package/src/i18n/messagebundle_ms.properties +2 -0
  189. package/src/i18n/messagebundle_nl.properties +2 -0
  190. package/src/i18n/messagebundle_no.properties +2 -0
  191. package/src/i18n/messagebundle_pl.properties +2 -0
  192. package/src/i18n/messagebundle_pt.properties +2 -0
  193. package/src/i18n/messagebundle_pt_PT.properties +2 -0
  194. package/src/i18n/messagebundle_ro.properties +2 -0
  195. package/src/i18n/messagebundle_ru.properties +2 -0
  196. package/src/i18n/messagebundle_sh.properties +2 -0
  197. package/src/i18n/messagebundle_sk.properties +2 -0
  198. package/src/i18n/messagebundle_sl.properties +2 -0
  199. package/src/i18n/messagebundle_sr.properties +2 -0
  200. package/src/i18n/messagebundle_sv.properties +2 -0
  201. package/src/i18n/messagebundle_th.properties +2 -0
  202. package/src/i18n/messagebundle_tr.properties +2 -0
  203. package/src/i18n/messagebundle_uk.properties +2 -0
  204. package/src/i18n/messagebundle_vi.properties +2 -0
  205. package/src/i18n/messagebundle_zh_CN.properties +2 -0
  206. package/src/i18n/messagebundle_zh_TW.properties +2 -0
  207. package/src/shellbar/templates/ShellBarLegacyTemplate.tsx +190 -0
  208. package/src/shellbar/templates/ShellBarSearchLegacyTemplate.tsx +61 -0
  209. package/src/shellbar/templates/ShellBarSearchTemplate.tsx +40 -0
  210. package/src/themes/NavigationLayout.css +1 -0
  211. package/src/themes/ShellBar.css +189 -372
  212. package/src/themes/ShellBarItem.css +43 -0
  213. package/src/themes/ShellBarLegacy.css +174 -0
  214. package/src/themes/ShellBarSearchLegacy.css +44 -0
  215. package/dist/ShellBarPopoverTemplate.d.ts +0 -2
  216. package/dist/ShellBarPopoverTemplate.js +0 -9
  217. package/dist/ShellBarPopoverTemplate.js.map +0 -1
  218. package/src/ShellBarPopoverTemplate.tsx +0 -50
@@ -1,4 +1,9 @@
1
1
  @import "./InvisibleTextStyles.css";
2
+ @import "./ShellBarSearchLegacy.css";
3
+
4
+ /* ============================================================================
5
+ HOST & CSS VARIABLES
6
+ ============================================================================ */
2
7
 
3
8
  :host(:not([hidden])) {
4
9
  display: inline-block;
@@ -6,376 +11,180 @@
6
11
  max-width: 100%;
7
12
  background: var(--sapShellColor);
8
13
  box-sizing: border-box;
9
- }
10
-
11
- :host {
12
- box-shadow: inset 0 -0.0625rem 0 0 var(--sapPageHeader_BorderColor);
13
- }
14
+ box-shadow: inset 0 -.0625rem 0 0 var(--sapPageHeader_BorderColor);
14
15
 
15
- ::slotted([ui5-input]) {
16
- --_ui5_input_placeholder_color: var(--sapShell_InteractiveTextColor);
17
- --_ui5_input_border_radius: var(--_ui5_shellbar_input_border_radius);
18
- --_ui5_input_focus_border_radius: var(--_ui5_shellbar_input_focus_border_radius);
19
- --_ui5_input_background_color: var(--_ui5_shellbar_input_background_color);
20
- --_ui5_input_focus_outline_color: var(--_ui5_shellbar_input_focus_outline_color);
21
- --_ui5_input_margin_top_bottom: 0;
22
- }
23
-
24
- ::slotted([ui5-button]),
25
- [ui5-button],
26
- ::slotted([ui5-toggle-button]),
27
- [ui5-toggle-button] {
28
- /* Overwrite the default button styles to fulfill no "compact" mode of ui5-shellbar */
29
- --_ui5_button_base_min_width: 2.25rem;
30
- --_ui5_button_base_padding: 0.5625rem;
16
+ /* CSS variable overrides for ui5-button */
31
17
  --_ui5_button_base_height: var(--sapElement_Height);
18
+ --_ui5_button_base_padding: 0.5625rem;
19
+ --_ui5_button_base_min_width: 2.25rem;
32
20
  --_ui5-button-badge-diameter: 0.75rem;
21
+
22
+ /* ShellBar-specific variables */
23
+ --_ui5-shellbar_separator-color: var(--sapGroup_ContentBorderColor);
24
+ --_ui5-shellbar-separator-height: 2rem;
25
+ --_ui5_shellbar_search_field_width: 25rem;
26
+
27
+ --ui5_shellbar_gap: 0.5rem;
33
28
  }
34
29
 
30
+ /* ============================================================================
31
+ ROOT CONTAINER
32
+ ============================================================================ */
33
+
35
34
  .ui5-shellbar-root {
36
- position: relative;
37
35
  display: flex;
38
- justify-content: space-between;
39
36
  align-items: center;
40
37
  height: var(--_ui5_shellbar_root_height);
41
- font-family: var(--sapFontFamily);
38
+ position: relative;
42
39
  font-size: var(--sapFontSize);
43
40
  font-weight: normal;
44
- box-sizing: border-box;
45
41
  }
46
42
 
47
- .ui5-shellbar-menu-button,
48
- .ui5-shellbar-button,
49
- .ui5-shellbar-image-button,
50
- ::slotted([ui5-toggle-button]:not([slot^="content"])),
51
- ::slotted([ui5-button]:not([slot^="content"])) {
43
+ /* ============================================================================
44
+ SLOTTED BUTTONS (General Styles) Assistant and Start Button slots
45
+ ============================================================================ */
46
+
47
+ ::slotted([ui5-button]:not([slot^="content"])),
48
+ ::slotted([ui5-toggle-button]:not([slot^="content"])) {
52
49
  height: 2.25rem;
50
+ width: 2.25rem;
53
51
  padding: 0;
54
- margin-inline-start: var(--_ui5-shellbar-overflow-button-margin);
55
52
  border: 0.0625rem solid var(--sapButton_Lite_BorderColor);
56
53
  background: var(--sapButton_Lite_Background);
57
- outline-color: var(--_ui5_shellbar_logo_outline_color);
58
54
  color: var(--sapShell_TextColor);
59
55
  box-sizing: border-box;
60
- cursor: pointer;
61
56
  border-radius: var(--_ui5_shellbar_button_border_radius);
62
- position: relative;
63
57
  font-weight: bold;
64
- white-space: initial;
65
- overflow: initial;
66
- text-overflow: initial;
67
- line-height: inherit;
68
- letter-spacing: inherit;
69
- word-spacing: inherit;
70
- }
71
-
72
- ::slotted([ui5-toggle-button][slot="assistant"]) {
73
- margin-inline-start: 0;
74
- }
75
-
76
- .ui5-shellbar-assistant-button {
77
- margin-inline-start: var(--_ui5-shellbar-overflow-button-margin);
78
- }
79
-
80
- ::slotted([ui5-button][slot="startButton"]) {
81
- margin-inline-start: 0;
82
58
  }
83
59
 
84
- ::slotted([ui5-toggle-button]:hover),
85
- ::slotted([ui5-button]:hover),
86
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:hover,
87
- .ui5-shellbar-button:hover,
88
- .ui5-shellbar-image-button:hover,
89
- ::slotted([ui5-button][slot="midContent"]:hover) {
60
+ /* Button States - Hover */
61
+ ::slotted([ui5-button]:not([slot^="content"]):not([disabled]):hover),
62
+ ::slotted([ui5-toggle-button]:not([slot^="content"]):not([disabled]):hover) {
90
63
  background: var(--sapShell_Hover_Background);
91
64
  border-color: var(--sapButton_Lite_Hover_BorderColor);
92
65
  color: var(--sapShell_TextColor);
93
66
  }
94
67
 
95
- ::slotted([ui5-toggle-button][slot="assistant"][pressed]),
96
- ::slotted([ui5-toggle-button][slot="assistant"][pressed]:hover:not([active])) {
97
- color: var(--sapShell_Assistant_ForegroundColor);
98
- }
99
-
100
- ::slotted([ui5-toggle-button][active]),
101
- ::slotted([ui5-button][active]),
102
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:active,
103
- .ui5-shellbar-button[active],
104
- .ui5-shellbar-image-button:active {
68
+ /* Button States - Active */
69
+ ::slotted([ui5-button]:not([slot^="content"]):not([disabled])[active]),
70
+ ::slotted([ui5-toggle-button]:not([slot^="content"]):not([disabled])[active]) {
105
71
  background: var(--sapShell_Active_Background);
106
72
  border-color: var(--sapButton_Lite_Active_BorderColor);
107
73
  color: var(--_ui5_shellbar_button_active_color);
108
74
  }
109
75
 
110
- :host([desktop]) .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:focus,
111
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:focus-visible {
112
- outline: var(--_ui5_shellbar_logo_outline);
113
- outline-offset: var(--_ui5_shellbar_outline_offset);
76
+ /* Button States - Focus */
77
+ ::slotted([ui5-button]:not([slot^="content"])),
78
+ ::slotted([ui5-toggle-button]:not([slot^="content"])) {
79
+ --_ui5_button_focused_border: var(--_ui5_shellbar_button_focused_border);
114
80
  }
115
81
 
116
- slot[name="profile"] {
117
- min-width: 0;
118
- }
82
+ /* ============================================================================
83
+ ACTION BUTTONS (Items & Internal Actions)
84
+ ============================================================================ */
119
85
 
120
- ::slotted([ui5-avatar][slot="profile"]) {
121
- display: block;
122
- width: 2rem;
123
- height: 2rem;
124
- min-width: 0;
125
- min-height: 2rem;
126
- font-size: var(--_ui5_avatar_fontsize_XS);
127
- font-weight: normal;
86
+ .ui5-shellbar-action-button {
87
+ color: var(--sapShell_TextColor);
128
88
  }
129
89
 
130
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive::-moz-focus-inner {
131
- border: none;
90
+ .ui5-shellbar-action-button:hover {
91
+ color: var(--sapShell_TextColor);
132
92
  }
133
93
 
134
- .ui5-shellbar-menu-button-arrow,
135
- .ui5-shellbar-menu-button-title,
136
- .ui5-shellbar-title {
137
- display: inline-block;
138
- font-family: var(--sapFontSemiboldDuplexFamily);
139
- margin: 0;
140
- font-size: var(--_ui5_shellbar_menu_button_title_font_size);
141
- white-space: nowrap;
142
- overflow: hidden;
143
- text-overflow: ellipsis;
144
- color: var(--sapShell_SubBrand_TextColor);
94
+ .ui5-shellbar-action-button[active] {
95
+ color: var(--_ui5_shellbar_button_active_color);
145
96
  }
146
97
 
147
- :host(:not([primary-title])) .ui5-shellbar-menu-button {
148
- min-width: 2.25rem;
149
- justify-content: center;
98
+ ::slotted([ui5-toggle-button][slot="assistant"]) {
99
+ color: var(--sapShell_TextColor);
150
100
  }
151
101
 
152
- .ui5-shellbar-secondary-title {
153
- display: inline-block;
154
- font-size: var(--sapFontSmallSize);
102
+ ::slotted([ui5-toggle-button][slot="assistant"]:hover) {
155
103
  color: var(--sapShell_TextColor);
156
- font-weight: normal;
157
- text-overflow: ellipsis;
158
- white-space: nowrap;
159
- overflow: hidden;
160
- margin: 0;
161
- text-align: start;
162
104
  }
163
105
 
164
- .ui5-shellbar-headings {
165
- display: flex;
166
- flex-direction: column;
167
- justify-content: center;
168
- height: 100%;
169
- overflow: hidden;
170
- margin-inline-start: 0.25rem;
106
+ ::slotted([ui5-toggle-button][slot="assistant"][active]) {
107
+ color: var(--_ui5_shellbar_button_active_color);
171
108
  }
172
109
 
173
- .ui5-shellbar-menu-button--interactive .ui5-shellbar-menu-button-arrow {
174
- margin-inline-start: 0.375rem;
175
- }
110
+ /* ============================================================================
111
+ START AREA (Start Button, Branding)
112
+ ============================================================================ */
176
113
 
177
- .ui5-shellbar-overflow-container {
114
+ .ui5-shellbar-start-button {
115
+ flex-shrink: 0;
178
116
  display: flex;
179
- justify-content: center;
180
117
  align-items: center;
181
- height: 100%;
182
- overflow: hidden;
183
118
  }
184
119
 
185
- .ui5-shellbar-overflow-container-middle {
186
- align-self: flex-start;
187
- height: var(--_ui5_shellbar_overflow_container_middle_height);
188
- width: 0;
120
+ .ui5-shellbar-branding-area {
189
121
  flex-shrink: 0;
190
- }
191
-
192
- .ui5-shellbar-mid-content {
193
- height: var(--_ui5_shellbar_overflow_container_middle_height);
194
- }
195
-
196
-
197
- :host([breakpoint-size="S"]) .ui5-shellbar-menu-button {
198
- margin-inline-start: 0;
199
- }
200
-
201
- :host([breakpoint-size="S"]) {
202
- padding: 0 1rem;
203
- }
204
-
205
- :host([breakpoint-size="S"]) .ui5-shellbar-search-full-width-wrapper {
206
- padding: 0 1rem;
207
- }
208
-
209
- :host([breakpoint-size="M"]) {
210
- padding: 0 2rem;
211
- }
212
-
213
- :host([breakpoint-size="M"]) .ui5-shellbar-search-full-width-wrapper {
214
- padding: 0 2rem;
215
- }
216
-
217
- :host([breakpoint-size="L"]) {
218
- padding: 0 2rem;
219
- }
220
-
221
- :host([breakpoint-size="XL"]) {
222
- padding: 0 3rem;
223
- }
224
-
225
- :host([breakpoint-size="XXL"]) {
226
- padding: 0 3rem;
227
- }
228
-
229
- .ui5-shellbar-logo {
230
- overflow: hidden;
231
- cursor: pointer;
232
- }
233
-
234
- .ui5-shellbar-logo-area {
235
- overflow: hidden;
236
122
  display: flex;
237
123
  align-items: center;
238
- padding: .25rem .5rem .25rem .25rem;
239
- box-sizing: border-box;
240
- cursor: pointer;
241
- background: var(--sapButton_Lite_Background);
242
- border: 1px solid var(--sapButton_Lite_BorderColor);
243
- color: var(--sapShell_TextColor);
244
- /* fix cutting of the focus outline */
245
- margin-inline-start: 0.125rem;
246
124
  }
247
125
 
248
- .ui5-shellbar-logo:focus,
249
- .ui5-shellbar-logo-area:focus {
250
- outline: var(--_ui5_shellbar_logo_outline);
251
- outline-offset: calc(-1 * var(--sapContent_FocusWidth));
252
- border-radius: var(--_ui5_shellbar_logo_border_radius);
253
- }
254
-
255
- .ui5-shellbar-overflow-container>.ui5-shellbar-logo:hover,
256
- .ui5-shellbar-logo-area:hover {
257
- box-shadow: var(--_ui5_shellbar_button_box_shadow);
258
- border-radius: var(--_ui5_shellbar_logo_border_radius);
259
- }
126
+ /* ============================================================================
127
+ OVERFLOW CONTAINER
128
+ ============================================================================ */
260
129
 
261
- .ui5-shellbar-logo-area:active:focus {
262
- background: var(--sapShell_Active_Background);
263
- border: 1px solid var(--sapButton_Lite_Active_BorderColor);
264
- color: var(--sapShell_Active_TextColor);
265
- }
266
-
267
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:hover {
268
- box-shadow: var(--_ui5_shellbar_button_box_shadow);
269
- }
270
-
271
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:active {
272
- box-shadow: var(--_ui5_shellbar_button_box_shadow_active);
273
- }
274
-
275
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:active .ui5-shellbar-menu-button-arrow,
276
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive:active .ui5-shellbar-menu-button-title {
277
- color: var(--sapShell_Active_TextColor);
278
- }
279
-
280
- .ui5-shellbar-menu-button .ui5-shellbar-logo:hover {
281
- box-shadow: none;
282
- }
283
-
284
- .ui5-shellbar-button {
285
- width: 2.5rem;
286
- box-sizing: border-box;
287
- }
288
-
289
- .ui5-shellbar-button,
290
- ::slotted([ui5-button][slot="startButton"]) {
291
- --_ui5_button_focused_border: var(--_ui5_shellbar_button_focused_border);
292
- }
293
-
294
- .ui5-shellbar-cancel-button {
295
- color: var(--_ui5-shellbar_cancel-button-color);
296
- }
297
-
298
- .ui5-shellbar-cancel-button:hover {
299
- color: var(--_ui5-shellbar_cancel-button-color);
300
- }
301
-
302
- .ui5-shellbar-image-button {
130
+ .ui5-shellbar-overflow-container {
131
+ /* makes the container grow on the left side thus preventing search from flickering */
132
+ flex-direction: row-reverse;
133
+ height: 100%;
134
+ flex: 1;
303
135
  display: flex;
304
- justify-content: center;
305
136
  align-items: center;
306
- min-width: auto;
307
- height: 2.5rem;
308
- --_ui5_button_focused_border_radius: var(--_ui5_shellbar_image_button_border_radius);
309
- border-radius: var(--_ui5_shellbar_image_button_border_radius);
137
+ min-width: 0;
138
+ overflow: hidden;
139
+ position: relative;
310
140
  }
311
141
 
312
- .ui5-shellbar-overflow-container-left {
313
- padding: 0;
314
- justify-content: flex-start;
315
- max-width: 75%;
142
+ .ui5-shellbar-overflow-container-inner {
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: end;
316
146
  flex-shrink: 0;
147
+ min-width: 100%;
317
148
  }
318
149
 
319
- .ui5-shellbar-overflow-container-left> :nth-child(n) {
320
- margin-inline-end: 0.5rem;
321
- }
322
-
323
- /* :host([breakpoint-size="XXL"]) .ui5-shellbar-with-searchfield .ui5-shellbar-overflow-container-left {
324
- flex-basis: 50%;
325
- max-width: calc(50% - 18.25rem);
326
- } */
150
+ /* ============================================================================
151
+ SEARCH AREA
152
+ ============================================================================ */
327
153
 
328
- .ui5-shellbar-menu-button {
329
- white-space: nowrap;
330
- overflow: hidden;
154
+ .ui5-shellbar-search-field-area {
155
+ flex: 0 1 auto;
156
+ min-width: 0;
331
157
  display: flex;
332
158
  align-items: center;
333
- padding: 0.25rem 0.5rem;
334
- cursor: text;
335
- -webkit-user-select: text;
336
- -moz-user-select: text;
337
- user-select: text;
338
- }
339
-
340
- .ui5-shellbar-menu-button.ui5-shellbar-menu-button--interactive {
341
- -webkit-user-select: none;
342
- -moz-user-select: none;
343
- user-select: none;
344
- cursor: pointer;
345
- background: var(--sapButton_Lite_Background);
346
- border: var(--_ui5_shellbar_button_border);
347
- color: var(--sapShell_TextColor);
159
+ margin-left: auto;
160
+ /* goes to the most right when no content is present */
161
+ }
162
+
163
+ /* this width is only applied when not in full screen mode as
164
+ in full screen the search fills the available space */
165
+ :host([show-search-field]:not([show-full-width-search])) ::slotted([slot="searchField"]),
166
+ /* Search field displays in full mode if there's not enough space in bar.
167
+ Once in full screen mode the search field is rendered in another DOM.
168
+ To account for correct measurements in overflow, we should keep the min width
169
+ of the search field container in the bar even when the search is in full mode. */
170
+ :host([show-full-width-search]) .ui5-shellbar-search-field-area {
171
+ min-width: var(--_ui5_shellbar_search_field_width);
348
172
  }
349
173
 
350
- :host(:not([with-logo])) .ui5-shellbar-menu-button {
351
- margin-inline-start: 0;
352
- }
174
+ /* ============================================================================
175
+ CONTENT AREA (Items, Spacer, Separator)
176
+ ============================================================================ */
353
177
 
354
- .ui5-shellbar-overflow-container-right {
178
+ .ui5-shellbar-content-area {
355
179
  flex-grow: 1;
356
- justify-content: flex-end;
357
- }
358
-
359
- .ui5-shellbar-overflow-container-right .ui5-shellbar-overflow-container-right-child {
360
180
  display: flex;
361
- justify-content: flex-end;
362
- height: inherit;
363
181
  align-items: center;
364
182
  }
365
183
 
366
- .ui5-shellbar-overflow-container-right-inner {
367
- display: flex;
368
- flex-grow: 1;
369
- }
370
-
371
- .ui5-shellbar-content-items {
184
+ .ui5-shellbar-content-item {
185
+ flex-shrink: 0;
372
186
  display: flex;
373
- justify-content: center;
374
187
  align-items: center;
375
- flex-grow: 1;
376
- /* max-content prevents the container from overflowing
377
- which is needed for the responsive logic */
378
- min-width: max-content;
379
188
  }
380
189
 
381
190
  .ui5-shellbar-spacer {
@@ -393,55 +202,82 @@ slot[name="profile"] {
393
202
  background-color: var(--_ui5-shellbar_separator-color);
394
203
  }
395
204
 
396
- .ui5-shellbar-separator-end {
397
- margin-inline-start: 0.5rem;
205
+ /* ============================================================================
206
+ CUSTOM ITEMS
207
+ ============================================================================ */
208
+
209
+ .ui5-shellbar-custom-item {
210
+ /* having width here is important to ensure item can be measured even when it is in overflow */
211
+ width: 2.25rem;
212
+ flex-shrink: 0;
213
+ display: flex;
214
+ align-items: center;
398
215
  }
399
216
 
400
- :host([breakpoint-size="S"]) .ui5-shellbar-overflow-container-right {
401
- padding-inline-start: 0;
217
+ .ui5-shellbar-custom-item.ui5-shellbar-hidden {
218
+ display: none;
402
219
  }
403
220
 
404
- ::slotted([hidden]) {
405
- visibility: hidden;
406
- order: -1;
407
- position: absolute;
221
+
222
+ /* ============================================================================
223
+ ACTION BUTTONS (Notifications, Assistant, Profile)
224
+ ============================================================================ */
225
+
226
+ .ui5-shellbar-action-button {
227
+ white-space: initial;
228
+ overflow: initial;
229
+ text-overflow: initial;
230
+ line-height: inherit;
231
+ letter-spacing: inherit;
232
+ word-spacing: inherit;
233
+ width: 2.25rem;
234
+ height: 2.25rem;
235
+ box-sizing: border-box;
408
236
  }
409
237
 
410
- .ui5-shellbar-content-item {
238
+ .ui5-shellbar-image-button {
411
239
  display: flex;
240
+ justify-content: center;
412
241
  align-items: center;
413
- flex-shrink: 0;
414
- padding-inline-start: var(--_ui5-shellbar-content-margin-start);
242
+ width: 2.25rem;
243
+ height: 2.25rem;
244
+ min-width: auto;
245
+ box-sizing: border-box;
246
+ --_ui5_button_focused_border_radius: var(--_ui5_shellbar_image_button_border_radius);
247
+ border-radius: var(--_ui5_shellbar_image_button_border_radius);
415
248
  }
416
249
 
417
- .ui5-shellbar-overflow-container-right-child .ui5-shellbar-bell-button [slot="badge"] {
418
- inset-inline-end: var(--_ui5_shellbar_notification_btn_count_offset);
250
+ .ui5-shellbar-assistant-button {
251
+ display: flex;
252
+ align-items: center;
419
253
  }
420
254
 
421
- .ui5-shellbar-overflow-container-right-child .ui5-shellbar-custom-item [slot="badge"] {
422
- inset-inline-end: var(--_ui5_shellbar_notification_btn_count_offset);
255
+ ::slotted([ui5-toggle-button][slot="assistant"]) {
256
+ margin-inline-start: 0;
423
257
  }
424
258
 
425
- .ui5-shellbar-menu-button {
426
- margin-inline-start: 0.5rem;
259
+ ::slotted([ui5-toggle-button][slot="assistant"][pressed]),
260
+ ::slotted([ui5-toggle-button][slot="assistant"][pressed]:hover:not([active])) {
261
+ color: var(--sapShell_Assistant_ForegroundColor);
427
262
  }
428
263
 
429
- .ui5-shellbar-search-field {
430
- padding-inline-start: var(--_ui5-shellbar-content-margin-start);
431
- min-width: var(--_ui5_shellbar_search_field_width);
432
- align-items: center;
433
- flex-grow: 1;
434
- margin-inline-start: 0.5rem;
264
+ slot[name="profile"] {
265
+ min-width: 0;
435
266
  }
436
267
 
437
- .ui5-shellbar-overflow-container-right-child> :first-child {
438
- margin-inline-start: 0;
268
+ ::slotted([ui5-avatar][slot="profile"]) {
269
+ display: block;
270
+ width: 2rem;
271
+ height: 2rem;
272
+ min-width: 0;
273
+ min-height: 2rem;
274
+ font-size: var(--_ui5_avatar_fontsize_XS);
275
+ font-weight: normal;
439
276
  }
440
277
 
441
- .ui5-shellbar-search-full-width-wrapper .ui5-shellbar-search-full-field {
442
- height: 2.25rem;
443
- width: 100%;
444
- }
278
+ /* ============================================================================
279
+ FULL-SCREEN SEARCH OVERLAY
280
+ ============================================================================ */
445
281
 
446
282
  .ui5-shellbar-search-full-width-wrapper {
447
283
  position: absolute;
@@ -454,85 +290,66 @@ slot[name="profile"] {
454
290
  display: flex;
455
291
  align-items: center;
456
292
  box-sizing: border-box;
293
+ padding: 0 1rem;
457
294
  }
458
295
 
459
- .ui5-shellbar-search-full-width-wrapper .ui5-shellbar-button {
460
- width: auto;
296
+ .ui5-shellbar-search-full-width-wrapper .ui5-shellbar-search-full-field {
297
+ height: 2.25rem;
298
+ width: 100%;
299
+ flex: 1;
461
300
  }
462
301
 
463
302
  .ui5-shellbar-search-full-width-wrapper ::slotted([ui5-shellbar-search]) {
464
303
  max-width: unset;
465
- }
466
-
467
- ::slotted([ui5-input]) {
468
- background: var(--_ui5_shellbar_search_field_background);
469
- border: var(--_ui5_shellbar_search_field_border);
470
- box-shadow: var(--_ui5_shellbar_search_field_box_shadow);
471
- color: var(--_ui5_shellbar_search_field_color);
472
- height: 2.25rem;
473
304
  width: 100%;
474
- min-width: var(--_ui5_shellbar_search_field_width);
475
305
  }
476
306
 
477
- :host([breakpoint-size="M"]) ::slotted([ui5-input]),
478
- :host([breakpoint-size="S"]) ::slotted([ui5-input]) {
479
- min-width: 1rem;
480
- }
307
+ /* ============================================================================
308
+ BREAKPOINTS
309
+ ============================================================================ */
481
310
 
482
- :host([breakpoint-size="M"][show-search-field]) .ui5-shellbar-overflow-container-right-child {
483
- flex-grow: 1;
311
+ /* Responsive padding per breakpoint */
312
+ :host([breakpoint-size="S"]) {
313
+ padding: 0 1rem;
484
314
  }
485
315
 
486
- ::slotted([ui5-input]:hover) {
487
- background: var(--_ui5_shellbar_search_field_background_hover);
488
- box-shadow: var(--_ui5_shellbar_search_field_box_shadow_hover);
316
+ :host([breakpoint-size="M"]) {
317
+ padding: 0 2rem;
489
318
  }
490
319
 
491
- ::slotted([ui5-input][focused]) {
492
- outline: var(--_ui5_shellbar_search_field_outline_focused);
320
+ :host([breakpoint-size="L"]) {
321
+ padding: 0 2rem;
493
322
  }
494
323
 
495
- ::slotted([slot="logo"]) {
496
- max-height: 2rem;
497
- vertical-align: middle;
324
+ :host([breakpoint-size="XL"]) {
325
+ padding: 0 3rem;
498
326
  }
499
327
 
500
- ::slotted([slot="logo"]):active {
501
- pointer-events: none;
328
+ :host([breakpoint-size="XXL"]) {
329
+ padding: 0 3rem;
502
330
  }
503
331
 
504
- .ui5-shellbar-co-pilot-placeholder {
505
- width: 2.75rem;
506
- height: 2.75rem;
332
+ /* Search overlay padding per breakpoint */
333
+ :host([breakpoint-size="S"]) .ui5-shellbar-search-full-width-wrapper {
334
+ padding: 0 1rem;
507
335
  }
508
336
 
509
- .ui5-shellbar-coPilot-pressed,
510
- .ui5-shellbar-coPilot-pressed:hover {
511
- color: var(--sapShell_Assistant_ForegroundColor);
337
+ :host([breakpoint-size="M"]) .ui5-shellbar-search-full-width-wrapper {
338
+ padding: 0 2rem;
512
339
  }
513
340
 
514
- ::slotted([ui5-button][slot="startButton"]) {
515
- margin-inline: 0 0.5rem;
516
- justify-content: center;
517
- align-items: center;
341
+ /* ============================================================================
342
+ Utilities (Keep these at the end of the file to avoid specificity issues)
343
+ ============================================================================ */
344
+
345
+ .ui5-shellbar-gap-start {
346
+ margin-inline-start: var(--ui5_shellbar_gap);
518
347
  }
519
348
 
520
- ::slotted([ui5-button][data-profile-btn]) {
521
- width: auto;
349
+ .ui5-shellbar-gap-end {
350
+ margin-inline-end: var(--ui5_shellbar_gap);
522
351
  }
523
352
 
524
- /* if class contains ui5-shellbar-hidden-button */
525
- ::slotted(.ui5-shellbar-hidden-button),
526
- .ui5-shellbar-hidden-button,
527
- .ui5-shellbar-invisible-button {
528
- visibility: hidden;
529
- order: -1;
530
- opacity: 0;
531
- min-width: 0;
532
- width: 0;
533
- margin: 0;
534
- padding: 0;
535
- padding-inline-start: 0;
536
- border: 0;
537
- margin-inline-start: 0;
353
+ .ui5-shellbar-hidden {
354
+ display: none !important;
538
355
  }