@carbon-labs/react-ui-shell 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/es/components/SharkFinIcon.d.ts +24 -0
  2. package/es/components/SharkFinIcon.js +59 -0
  3. package/es/components/SideNav.js +8 -4
  4. package/es/components/SideNavFlyoutMenu.d.ts +141 -0
  5. package/es/components/SideNavFlyoutMenu.js +365 -0
  6. package/es/components/SideNavMenu.d.ts +4 -0
  7. package/es/components/SideNavMenu.js +96 -75
  8. package/es/components/SideNavMenuItem.d.ts +4 -0
  9. package/es/components/SideNavMenuItem.js +17 -4
  10. package/es/components/SideNavToggle.d.ts +4 -0
  11. package/es/components/SideNavToggle.js +9 -1
  12. package/es/index.d.ts +1 -0
  13. package/es/index.js +1 -0
  14. package/es/internal/keyboard/keys.js +13 -1
  15. package/es/internal/setupGetInstanceId.d.ts +11 -0
  16. package/es/internal/setupGetInstanceId.js +19 -0
  17. package/es/internal/useId.d.ts +21 -0
  18. package/es/internal/useId.js +100 -0
  19. package/es/internal/useIdPrefix.d.ts +12 -0
  20. package/es/internal/useIdPrefix.js +19 -0
  21. package/es/internal/usePrefix.d.ts +5 -0
  22. package/es/internal/usePrefix.js +6 -0
  23. package/lib/components/SharkFinIcon.d.ts +24 -0
  24. package/lib/components/SharkFinIcon.js +61 -0
  25. package/lib/components/SideNav.js +8 -4
  26. package/lib/components/SideNavFlyoutMenu.d.ts +141 -0
  27. package/lib/components/SideNavFlyoutMenu.js +367 -0
  28. package/lib/components/SideNavMenu.d.ts +4 -0
  29. package/lib/components/SideNavMenu.js +96 -75
  30. package/lib/components/SideNavMenuItem.d.ts +4 -0
  31. package/lib/components/SideNavMenuItem.js +17 -4
  32. package/lib/components/SideNavToggle.d.ts +4 -0
  33. package/lib/components/SideNavToggle.js +9 -1
  34. package/lib/index.d.ts +1 -0
  35. package/lib/index.js +2 -0
  36. package/lib/internal/keyboard/keys.js +14 -0
  37. package/lib/internal/setupGetInstanceId.d.ts +11 -0
  38. package/lib/internal/setupGetInstanceId.js +23 -0
  39. package/lib/internal/useId.d.ts +21 -0
  40. package/lib/internal/useId.js +103 -0
  41. package/lib/internal/useIdPrefix.d.ts +12 -0
  42. package/lib/internal/useIdPrefix.js +22 -0
  43. package/lib/internal/usePrefix.d.ts +5 -0
  44. package/lib/internal/usePrefix.js +6 -0
  45. package/package.json +2 -2
  46. package/scss/styles/_shark-fin-icon.scss +14 -0
  47. package/scss/styles/_side-nav.scss +158 -0
  48. package/scss/ui-shell.scss +1 -0
@@ -6,6 +6,7 @@
6
6
  */
7
7
 
8
8
  @use '@carbon/styles/scss/utilities/convert' as convert;
9
+ @use '@carbon/styles/scss/utilities/custom-property' as custom-property;
9
10
  @use '@carbon/styles/scss/utilities/button-reset' as button-reset;
10
11
  @use '@carbon/styles/scss/utilities/focus-outline' as *;
11
12
  @use '@carbon/styles/scss/theme' as *;
@@ -119,6 +120,7 @@ div:has(.#{$prefix}--header)
119
120
 
120
121
  .#{$prefix}--side-nav__items {
121
122
  display: flex;
123
+ overflow: visible;
122
124
  flex-direction: column;
123
125
  }
124
126
 
@@ -172,12 +174,138 @@ div:has(.#{$prefix}--header)
172
174
  text-align: start;
173
175
  }
174
176
 
177
+ &:hover {
178
+ .#{$prefix}--side-nav__items {
179
+ overflow: visible;
180
+ }
181
+ }
182
+
183
+ .#{$prefix}--popover-container {
184
+ display: block;
185
+ inline-size: 100%;
186
+ }
187
+
188
+ // SharkFinIcon container styles
189
+ .#{$prefix}--side-nav__submenu {
190
+ position: relative;
191
+
192
+ .#{$prefix}--side-nav--panel-submenu-caret-container {
193
+ position: absolute;
194
+ block-size: 100%;
195
+ inline-size: 100%;
196
+ }
197
+
198
+ .#{$prefix}--side-nav--panel-submenu-caret {
199
+ position: absolute;
200
+ inset-block-end: 4px;
201
+ inset-inline-end: 4px;
202
+ }
203
+ }
204
+
205
+ // Focused FlyoutMenu button
206
+ .#{$prefix}--flyout-menu-clicked
207
+ .#{$prefix}--side-nav--panel-submenu-caret
208
+ svg {
209
+ fill: $icon-primary;
210
+ }
211
+
212
+ // menu icon svg
213
+ .#{$prefix}--flyout-menu-clicked .#{$prefix}--side-nav__icon svg,
214
+ .#{$prefix}--flyout-menu-selected .#{$prefix}--side-nav__icon svg,
215
+ .#{$prefix}--flyout-menu-selected
216
+ .#{$prefix}--side-nav--panel-submenu-caret
217
+ svg {
218
+ fill: $icon-primary;
219
+ }
220
+
221
+ // Change SharkFinIcon color when clicked
222
+ .#{$prefix}--flyout-menu-clicked .#{$prefix}--side-nav__submenu {
223
+ background-color: $background-hover;
224
+
225
+ .#{$prefix}-shark-fin-icon {
226
+ fill: $icon-primary;
227
+ }
228
+ }
229
+
230
+ // Selected + click
231
+ .#{$prefix}--flyout-menu-selected.#{$prefix}--flyout-menu-clicked
232
+ .#{$prefix}--side-nav__submenu {
233
+ background-color: $background-active;
234
+
235
+ .#{$prefix}-shark-fin-icon {
236
+ fill: $icon-primary;
237
+ }
238
+ }
239
+
240
+ // Selected Panel FlyoutMenuItem styles (checkmark icon)
241
+ .#{$prefix}--flyout-menu-selected
242
+ .#{$prefix}--side-nav__menu-item--flyout-menu-item {
243
+ .#{$prefix}--side-nav__icon {
244
+ margin-inline-end: $spacing-04;
245
+ }
246
+
247
+ .#{$prefix}--side-nav__link--active {
248
+ padding-inline-start: $spacing-04;
249
+ }
250
+ }
251
+
252
+ .#{$prefix}--flyout-menu-selected .#{$prefix}--side-nav__submenu {
253
+ background-color: $background-selected;
254
+ }
255
+
256
+ // flyout on focus, only displays title
257
+ .#{$prefix}--flyout-tooltip-content {
258
+ padding-block: 1px;
259
+ }
260
+
261
+ // make caret smaller in tooltip mode
262
+ .#{$prefix}--flyout-menu-focused .#{$prefix}--popover-caret {
263
+ @include custom-property.declaration('popover-caret-width', 0.5rem);
264
+ @include custom-property.declaration('popover-caret-height', 0.25rem);
265
+ }
266
+
267
+ // Flyout menu content styles
268
+ .#{$prefix}--side-nav-menu--popover-content {
269
+ padding: 4px 0;
270
+
271
+ .#{$prefix}--label {
272
+ color: $text-secondary;
273
+ padding-inline-start: $spacing-05;
274
+ }
275
+
276
+ .#{$prefix}--side-nav__link {
277
+ @include type-style('body-compact-01');
278
+
279
+ padding-inline: $spacing-08;
280
+ }
281
+
282
+ .#{$prefix}--side-nav__link:hover {
283
+ background-color: $background-hover;
284
+ }
285
+ }
286
+
287
+ // Flyout menu link on hover styles
288
+ .#{$prefix}--side-nav-menu--popover-content
289
+ .#{$prefix}--side-nav__link:hover {
290
+ .#{$prefix}--side-nav__link-text {
291
+ color: $text-primary;
292
+ }
293
+ }
294
+
175
295
  // Side Nav Link Popover
176
296
  .#{$prefix}--side-nav-link-popover.#{$prefix}--btn--icon-only {
177
297
  padding: 0;
178
298
  block-size: $spacing-07;
179
299
  min-block-size: initial;
180
300
 
301
+ svg {
302
+ fill: $icon-secondary;
303
+ }
304
+
305
+ &:hover svg {
306
+ fill: $icon-primary;
307
+ }
308
+
181
309
  .#{$prefix}--side-nav__icon:not(.#{$prefix}--side-nav__submenu-chevron) {
182
310
  margin-inline-end: 0;
183
311
  }
@@ -188,3 +316,33 @@ div:has(.#{$prefix}--header)
188
316
  color: $text-primary;
189
317
  }
190
318
  }
319
+
320
+ // panel expanded styles
321
+ .#{$prefix}--side-nav--panel.#{$prefix}--side-nav--expanded {
322
+ overflow: hidden;
323
+
324
+ &:hover {
325
+ .#{$prefix}--side-nav__items {
326
+ overflow-y: auto;
327
+ }
328
+ }
329
+
330
+ .#{$prefix}--side-nav__items {
331
+ overflow-y: auto;
332
+ }
333
+
334
+ .#{$prefix}--side-nav__item {
335
+ overflow: visible;
336
+ }
337
+ }
338
+
339
+ .#{$prefix}--side-nav__toggle-container {
340
+ position: absolute;
341
+ background: $background;
342
+ inline-size: 100%;
343
+ inset-block-end: 0;
344
+
345
+ .#{$prefix}--side-nav__toggle.#{$prefix}--side-nav__toggle--collapsed:hover {
346
+ background: $background-hover;
347
+ }
348
+ }
@@ -8,3 +8,4 @@
8
8
  @use 'styles/header';
9
9
  @use 'styles/side-nav';
10
10
  @use 'styles/content';
11
+ @use 'styles/shark-fin-icon.scss';