@hashicorp/design-system-components 4.13.1 → 4.14.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 (166) hide show
  1. package/declarations/components/hds/app-side-nav/index.d.ts +45 -0
  2. package/declarations/components/hds/app-side-nav/index.d.ts.map +1 -0
  3. package/declarations/components/hds/app-side-nav/list/back-link.d.ts +15 -0
  4. package/declarations/components/hds/app-side-nav/list/back-link.d.ts.map +1 -0
  5. package/declarations/components/hds/app-side-nav/list/index.d.ts +32 -0
  6. package/declarations/components/hds/app-side-nav/list/index.d.ts.map +1 -0
  7. package/declarations/components/hds/app-side-nav/list/item.d.ts +14 -0
  8. package/declarations/components/hds/app-side-nav/list/item.d.ts.map +1 -0
  9. package/declarations/components/hds/app-side-nav/list/link.d.ts +24 -0
  10. package/declarations/components/hds/app-side-nav/list/link.d.ts.map +1 -0
  11. package/declarations/components/hds/app-side-nav/list/title.d.ts +19 -0
  12. package/declarations/components/hds/app-side-nav/list/title.d.ts.map +1 -0
  13. package/declarations/components/hds/app-side-nav/portal/index.d.ts +27 -0
  14. package/declarations/components/hds/app-side-nav/portal/index.d.ts.map +1 -0
  15. package/declarations/components/hds/app-side-nav/portal/target.d.ts +37 -0
  16. package/declarations/components/hds/app-side-nav/portal/target.d.ts.map +1 -0
  17. package/declarations/components/hds/app-side-nav/toggle-button.d.ts +15 -0
  18. package/declarations/components/hds/app-side-nav/toggle-button.d.ts.map +1 -0
  19. package/declarations/components/hds/dropdown/index.d.ts +3 -0
  20. package/declarations/components/hds/dropdown/index.d.ts.map +1 -1
  21. package/declarations/components/hds/form/masked-input/base.d.ts +1 -23
  22. package/declarations/components/hds/form/masked-input/base.d.ts.map +1 -1
  23. package/declarations/components/hds/form/text-input/field.d.ts +2 -16
  24. package/declarations/components/hds/form/text-input/field.d.ts.map +1 -1
  25. package/declarations/components/hds/pagination/compact/index.d.ts.map +1 -1
  26. package/declarations/components/hds/pagination/numbered/index.d.ts +1 -1
  27. package/declarations/components/hds/pagination/numbered/index.d.ts.map +1 -1
  28. package/declarations/components/hds/popover-primitive/index.d.ts +1 -0
  29. package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
  30. package/declarations/components/hds/side-nav/index.d.ts +9 -8
  31. package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
  32. package/declarations/components/hds/side-nav/list/index.d.ts +6 -3
  33. package/declarations/components/hds/side-nav/list/index.d.ts.map +1 -1
  34. package/declarations/components/hds/side-nav/list/title.d.ts +8 -3
  35. package/declarations/components/hds/side-nav/list/title.d.ts.map +1 -1
  36. package/declarations/components/hds/table/index.d.ts +1 -0
  37. package/declarations/components/hds/table/index.d.ts.map +1 -1
  38. package/declarations/components/hds/table/th-selectable.d.ts +1 -0
  39. package/declarations/components/hds/table/th-selectable.d.ts.map +1 -1
  40. package/declarations/components/hds/tabs/index.d.ts.map +1 -1
  41. package/declarations/modifiers/hds-anchored-position.d.ts +1 -0
  42. package/declarations/modifiers/hds-anchored-position.d.ts.map +1 -1
  43. package/declarations/modifiers/hds-clipboard.d.ts.map +1 -1
  44. package/declarations/template-registry.d.ts +36 -0
  45. package/declarations/template-registry.d.ts.map +1 -1
  46. package/dist/components/hds/alert/description.js +2 -2
  47. package/dist/components/hds/app-footer/item.js +2 -2
  48. package/dist/components/hds/app-footer/link.js +2 -2
  49. package/dist/components/hds/app-frame/parts/footer.js +2 -2
  50. package/dist/components/hds/app-frame/parts/header.js +2 -2
  51. package/dist/components/hds/app-frame/parts/main.js +2 -2
  52. package/dist/components/hds/app-frame/parts/modals.js +2 -2
  53. package/dist/components/hds/app-frame/parts/sidebar.js +2 -2
  54. package/dist/components/hds/app-side-nav/index.js +187 -0
  55. package/dist/components/hds/app-side-nav/index.js.map +1 -0
  56. package/dist/components/hds/app-side-nav/list/back-link.js +16 -0
  57. package/dist/components/hds/app-side-nav/list/back-link.js.map +1 -0
  58. package/dist/components/hds/app-side-nav/list/index.js +33 -0
  59. package/dist/components/hds/app-side-nav/list/index.js.map +1 -0
  60. package/dist/components/hds/app-side-nav/list/item.js +16 -0
  61. package/dist/components/hds/app-side-nav/list/item.js.map +1 -0
  62. package/dist/components/hds/app-side-nav/list/link.js +16 -0
  63. package/dist/components/hds/app-side-nav/list/link.js.map +1 -0
  64. package/dist/components/hds/app-side-nav/list/title.js +29 -0
  65. package/dist/components/hds/app-side-nav/list/title.js.map +1 -0
  66. package/dist/components/hds/app-side-nav/portal/index.js +16 -0
  67. package/dist/components/hds/app-side-nav/portal/index.js.map +1 -0
  68. package/dist/components/hds/app-side-nav/portal/target.js +173 -0
  69. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -0
  70. package/dist/components/hds/app-side-nav/toggle-button.js +16 -0
  71. package/dist/components/hds/app-side-nav/toggle-button.js.map +1 -0
  72. package/dist/components/hds/application-state/body.js +2 -2
  73. package/dist/components/hds/application-state/footer.js +2 -2
  74. package/dist/components/hds/application-state/media.js +2 -2
  75. package/dist/components/hds/button-set/index.js +2 -2
  76. package/dist/components/hds/code-block/copy-button.js +2 -2
  77. package/dist/components/hds/code-block/description.js +2 -2
  78. package/dist/components/hds/dialog-primitive/body.js +2 -2
  79. package/dist/components/hds/dialog-primitive/description.js +2 -2
  80. package/dist/components/hds/dialog-primitive/overlay.js +2 -2
  81. package/dist/components/hds/dialog-primitive/wrapper.js +2 -2
  82. package/dist/components/hds/dropdown/footer.js +2 -2
  83. package/dist/components/hds/dropdown/header.js +2 -2
  84. package/dist/components/hds/dropdown/index.js +7 -3
  85. package/dist/components/hds/dropdown/index.js.map +1 -1
  86. package/dist/components/hds/dropdown/list-item/generic.js +2 -2
  87. package/dist/components/hds/dropdown/list-item/separator.js +2 -2
  88. package/dist/components/hds/dropdown/toggle/chevron.js +2 -2
  89. package/dist/components/hds/form/checkbox/base.js +2 -2
  90. package/dist/components/hds/form/checkbox/field.js +2 -2
  91. package/dist/components/hds/form/checkbox/group.js +2 -2
  92. package/dist/components/hds/form/error/message.js +2 -2
  93. package/dist/components/hds/form/file-input/base.js +2 -2
  94. package/dist/components/hds/form/file-input/field.js +2 -2
  95. package/dist/components/hds/form/masked-input/base.js +5 -34
  96. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  97. package/dist/components/hds/form/masked-input/field.js +2 -2
  98. package/dist/components/hds/form/radio/base.js +2 -2
  99. package/dist/components/hds/form/radio/field.js +2 -2
  100. package/dist/components/hds/form/radio/group.js +2 -2
  101. package/dist/components/hds/form/radio-card/description.js +2 -2
  102. package/dist/components/hds/form/radio-card/group.js +2 -2
  103. package/dist/components/hds/form/radio-card/label.js +2 -2
  104. package/dist/components/hds/form/select/field.js +2 -2
  105. package/dist/components/hds/form/super-select/after-options.js +2 -2
  106. package/dist/components/hds/form/super-select/placeholder.js +2 -2
  107. package/dist/components/hds/form/text-input/field.js +10 -33
  108. package/dist/components/hds/form/text-input/field.js.map +1 -1
  109. package/dist/components/hds/form/textarea/field.js +2 -2
  110. package/dist/components/hds/form/toggle/base.js +2 -2
  111. package/dist/components/hds/form/toggle/field.js +2 -2
  112. package/dist/components/hds/form/toggle/group.js +2 -2
  113. package/dist/components/hds/form/visibility-toggle/index.js +2 -2
  114. package/dist/components/hds/page-header/actions.js +2 -2
  115. package/dist/components/hds/page-header/badges.js +2 -2
  116. package/dist/components/hds/page-header/description.js +2 -2
  117. package/dist/components/hds/page-header/index.js +2 -2
  118. package/dist/components/hds/page-header/subtitle.js +2 -2
  119. package/dist/components/hds/page-header/title.js +2 -2
  120. package/dist/components/hds/pagination/compact/index.js +4 -3
  121. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  122. package/dist/components/hds/pagination/nav/ellipsis.js +2 -2
  123. package/dist/components/hds/pagination/numbered/index.js +5 -7
  124. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  125. package/dist/components/hds/popover-primitive/index.js +4 -5
  126. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  127. package/dist/components/hds/segmented-group/index.js +2 -2
  128. package/dist/components/hds/side-nav/base.js +3 -3
  129. package/dist/components/hds/side-nav/base.js.map +1 -1
  130. package/dist/components/hds/side-nav/header/index.js +2 -2
  131. package/dist/components/hds/side-nav/index.js +37 -36
  132. package/dist/components/hds/side-nav/index.js.map +1 -1
  133. package/dist/components/hds/side-nav/list/back-link.js +2 -2
  134. package/dist/components/hds/side-nav/list/index.js +27 -10
  135. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  136. package/dist/components/hds/side-nav/list/item.js +2 -2
  137. package/dist/components/hds/side-nav/list/link.js +2 -2
  138. package/dist/components/hds/side-nav/list/title.js +23 -10
  139. package/dist/components/hds/side-nav/list/title.js.map +1 -1
  140. package/dist/components/hds/side-nav/portal/index.js +2 -2
  141. package/dist/components/hds/side-nav/toggle-button.js +2 -2
  142. package/dist/components/hds/table/index.js +6 -8
  143. package/dist/components/hds/table/index.js.map +1 -1
  144. package/dist/components/hds/table/th-selectable.js +4 -5
  145. package/dist/components/hds/table/th-selectable.js.map +1 -1
  146. package/dist/components/hds/tabs/index.js +2 -3
  147. package/dist/components/hds/tabs/index.js.map +1 -1
  148. package/dist/components/hds/toast/index.js +2 -2
  149. package/dist/components/hds/yield/index.js +2 -2
  150. package/dist/modifiers/hds-anchored-position.js +15 -16
  151. package/dist/modifiers/hds-anchored-position.js.map +1 -1
  152. package/dist/modifiers/hds-clipboard.js +15 -6
  153. package/dist/modifiers/hds-clipboard.js.map +1 -1
  154. package/dist/styles/@hashicorp/design-system-components.css +41 -293
  155. package/dist/styles/@hashicorp/design-system-components.scss +2 -1
  156. package/dist/styles/components/app-side-nav/content.scss +182 -0
  157. package/dist/styles/components/app-side-nav/index.scss +9 -0
  158. package/dist/styles/components/app-side-nav/main.scss +147 -0
  159. package/dist/styles/components/app-side-nav/toggle-button.scss +101 -0
  160. package/dist/styles/components/app-side-nav/vars.scss +36 -0
  161. package/dist/styles/components/dropdown.scss +6 -0
  162. package/dist/styles/components/side-nav/content.scss +5 -0
  163. package/package.json +2 -4
  164. package/dist/_app_/components/hds/app-header/home-link.js +0 -1
  165. package/dist/_app_/components/hds/app-header/index.js +0 -1
  166. package/dist/_app_/components/hds/app-header/menu-button.js +0 -1
@@ -5,7 +5,7 @@
5
5
  */
6
6
  /**
7
7
  * Do not edit directly
8
- * Generated on Tue, 27 Aug 2024 16:41:13 GMT
8
+ * Generated on Fri, 20 Sep 2024 19:02:21 GMT
9
9
  */
10
10
  :root {
11
11
  --token-color-palette-blue-500: #1c345f;
@@ -271,6 +271,30 @@
271
271
  --token-app-header-height: 60px;
272
272
  --token-app-header-home-link-size: 36px;
273
273
  --token-app-header-logo-size: 28px;
274
+ --token-app-side-nav-wrapper-border-width: 1px;
275
+ --token-app-side-nav-wrapper-border-color: var(--token-color-palette-neutral-200);
276
+ --token-app-side-nav-wrapper-padding-horizontal: 16px;
277
+ --token-app-side-nav-wrapper-padding-vertical: 16px;
278
+ --token-app-side-nav-wrapper-padding-horizontal-minimized: 8px;
279
+ --token-app-side-nav-wrapper-padding-vertical-minimized: 22px;
280
+ --token-app-side-nav-toggle-button-border-radius: 5px;
281
+ --token-app-side-nav-header-home-link-padding: 4px;
282
+ --token-app-side-nav-header-home-link-logo-size: 48px;
283
+ --token-app-side-nav-header-home-link-logo-size-minimized: 32px;
284
+ --token-app-side-nav-header-actions-spacing: 8px;
285
+ --token-app-side-nav-body-list-margin-vertical: 24px;
286
+ --token-app-side-nav-body-list-item-height: 36px;
287
+ --token-app-side-nav-body-list-item-padding-horizontal: 8px;
288
+ --token-app-side-nav-body-list-item-padding-vertical: 4px;
289
+ --token-app-side-nav-body-list-item-spacing-vertical: 2px;
290
+ --token-app-side-nav-body-list-item-content-spacing-horizontal: 8px;
291
+ --token-app-side-nav-body-list-item-border-radius: 5px;
292
+ --token-app-side-nav-color-foreground-primary: var(--token-color-foreground-primary);
293
+ --token-app-side-nav-color-foreground-strong: var(--token-color-foreground-primary);
294
+ --token-app-side-nav-color-foreground-faint: var(--token-color-foreground-faint);
295
+ --token-app-side-nav-color-surface-primary: var(--token-color-surface-faint);
296
+ --token-app-side-nav-color-surface-interactive-hover: var(--token-color-surface-interactive-hover);
297
+ --token-app-side-nav-color-surface-interactive-active: var(--token-color-palette-neutral-300);
274
298
  --token-pagination-nav-control-height: 36px;
275
299
  --token-pagination-nav-control-padding-horizontal: 12px;
276
300
  --token-pagination-nav-control-focus-inset: 4px;
@@ -369,7 +393,7 @@
369
393
 
370
394
  /**
371
395
  * Do not edit directly
372
- * Generated on Tue, 27 Aug 2024 16:41:13 GMT
396
+ * Generated on Fri, 20 Sep 2024 19:02:21 GMT
373
397
  */
374
398
  .hds-border-primary {
375
399
  border: 1px solid var(--token-color-border-primary);
@@ -541,7 +565,7 @@
541
565
 
542
566
  /**
543
567
  * Do not edit directly
544
- * Generated on Tue, 27 Aug 2024 16:41:13 GMT
568
+ * Generated on Fri, 20 Sep 2024 19:02:21 GMT
545
569
  */
546
570
  .hds-elevation-high {
547
571
  box-shadow: var(--token-elevation-high-box-shadow);
@@ -597,7 +621,7 @@
597
621
 
598
622
  /**
599
623
  * Do not edit directly
600
- * Generated on Tue, 27 Aug 2024 16:41:13 GMT
624
+ * Generated on Fri, 20 Sep 2024 19:02:21 GMT
601
625
  */
602
626
  .hds-focus-ring-action-box-shadow {
603
627
  box-shadow: var(--token-focus-ring-action-box-shadow);
@@ -609,7 +633,7 @@
609
633
 
610
634
  /**
611
635
  * Do not edit directly
612
- * Generated on Tue, 27 Aug 2024 16:41:13 GMT
636
+ * Generated on Fri, 20 Sep 2024 19:02:21 GMT
613
637
  */
614
638
  .hds-font-family-sans-display {
615
639
  font-family: var(--token-typography-font-stack-display);
@@ -1317,294 +1341,6 @@
1317
1341
  display: none;
1318
1342
  }
1319
1343
 
1320
- /**
1321
- * Copyright (c) HashiCorp, Inc.
1322
- * SPDX-License-Identifier: MPL-2.0
1323
- */
1324
- /**
1325
- * Copyright (c) HashiCorp, Inc.
1326
- * SPDX-License-Identifier: MPL-2.0
1327
- */
1328
- /**
1329
- * Copyright (c) HashiCorp, Inc.
1330
- * SPDX-License-Identifier: MPL-2.0
1331
- */
1332
- .hds-app-header {
1333
- position: relative;
1334
- display: flex;
1335
- gap: 12px;
1336
- align-items: center;
1337
- justify-content: space-between;
1338
- min-height: var(--token-app-header-height);
1339
- padding: 12px 16px 11px 16px;
1340
- color: var(--token-color-foreground-high-contrast);
1341
- background: var(--token-color-palette-neutral-700);
1342
- border-bottom: 1px solid var(--token-color-palette-neutral-500);
1343
- }
1344
- .hds-app-header .ember-a11y-refocus-skip-link {
1345
- top: 10px;
1346
- left: 10px;
1347
- z-index: 20;
1348
- width: max-content;
1349
- padding: 2px 10px 4px;
1350
- color: var(--token-color-foreground-action);
1351
- font-size: var(--token-typography-display-200-font-size);
1352
- font-family: var(--token-typography-display-200-font-family);
1353
- line-height: var(--token-typography-display-200-line-height);
1354
- background-color: var(--token-color-surface-faint);
1355
- border-radius: 3px;
1356
- transform: translateY(-200%);
1357
- transition: 0.6s ease-in-out;
1358
- }
1359
- .hds-app-header .ember-a11y-refocus-skip-link:focus {
1360
- transform: translateY(0);
1361
- }
1362
- .hds-app-header.hds-app-header--is-desktop .hds-app-header__global-actions {
1363
- margin-right: auto;
1364
- }
1365
- .hds-app-header.hds-app-header--is-mobile .hds-app-header__actions {
1366
- position: absolute;
1367
- top: calc(100% + 1px);
1368
- right: 0;
1369
- left: 0;
1370
- }
1371
- .hds-app-header.hds-app-header--is-mobile .hds-app-header__actions {
1372
- flex-wrap: wrap;
1373
- align-content: flex-start;
1374
- padding: 16px;
1375
- overflow: auto;
1376
- background: var(--token-color-palette-neutral-700);
1377
- }
1378
- .hds-app-header.hds-app-header--is-mobile.hds-app-header--menu-is-closed .hds-app-header__actions {
1379
- display: none;
1380
- }
1381
- .hds-app-header.hds-app-header--is-mobile.hds-app-header--menu-is-open .hds-app-header__actions {
1382
- height: calc(100vh - var(--token-app-header-height));
1383
- }
1384
- .hds-app-header.hds-app-header--is-mobile .hds-app-header__global-actions,
1385
- .hds-app-header.hds-app-header--is-mobile .hds-app-header__global-actions .hds-dropdown,
1386
- .hds-app-header.hds-app-header--is-mobile .hds-app-header__global-actions .hds-dropdown-toggle-button {
1387
- width: 100%;
1388
- }
1389
- .hds-app-header .hds-app-header__global-actions,
1390
- .hds-app-header .hds-app-header__utility-actions {
1391
- display: flex;
1392
- gap: inherit;
1393
- }
1394
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *),
1395
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *),
1396
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *) {
1397
- border: 1px solid transparent;
1398
- cursor: pointer;
1399
- border-color: var(--token-color-palette-neutral-500);
1400
- color: var(--token-color-foreground-high-contrast);
1401
- background-color: var(--token-color-palette-neutral-700);
1402
- border-radius: 5px;
1403
- }
1404
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):hover, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-hover,
1405
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):hover,
1406
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-hover,
1407
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):hover,
1408
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-hover {
1409
- border-color: var(--token-color-palette-neutral-500);
1410
- color: var(--token-color-foreground-high-contrast);
1411
- background-color: var(--token-color-palette-neutral-600);
1412
- }
1413
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus,
1414
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus,
1415
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus,
1416
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus,
1417
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus {
1418
- position: relative;
1419
- outline-style: solid;
1420
- outline-color: transparent;
1421
- isolation: isolate;
1422
- color: var(--token-color-foreground-high-contrast);
1423
- background-color: var(--token-color-palette-neutral-700);
1424
- border-color: var(--token-color-focus-action-internal);
1425
- }
1426
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before,
1427
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before,
1428
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before,
1429
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before,
1430
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before {
1431
- position: absolute;
1432
- top: -1px;
1433
- right: -1px;
1434
- bottom: -1px;
1435
- left: -1px;
1436
- z-index: -1;
1437
- border-radius: 5px;
1438
- content: "";
1439
- }
1440
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus::before,
1441
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus::before,
1442
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus::before,
1443
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus::before,
1444
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus::before,
1445
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus::before,
1446
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus::before,
1447
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus::before,
1448
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus::before {
1449
- box-shadow: var(--token-focus-ring-action-box-shadow);
1450
- }
1451
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:not(:focus-visible)::before,
1452
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before,
1453
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:not(:focus-visible)::before,
1454
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before,
1455
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:not(:focus-visible)::before {
1456
- box-shadow: none;
1457
- }
1458
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus-visible::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus-visible::before,
1459
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus-visible::before,
1460
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus-visible::before,
1461
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus-visible::before,
1462
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus-visible::before {
1463
- box-shadow: var(--token-focus-ring-action-box-shadow);
1464
- }
1465
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:active::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus.mock-active::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:active::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus.mock-active::before,
1466
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:active::before,
1467
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus.mock-active::before,
1468
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:active::before,
1469
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus.mock-active::before,
1470
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:active::before,
1471
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus.mock-focus.mock-active::before,
1472
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus:focus:active::before,
1473
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus.mock-focus.mock-active::before {
1474
- box-shadow: none;
1475
- }
1476
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before,
1477
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before,
1478
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before,
1479
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus::before,
1480
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-focus::before {
1481
- color: var(--token-color-foreground-high-contrast);
1482
- border: none;
1483
- box-shadow: var(--token-focus-ring-action-box-shadow);
1484
- }
1485
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before,
1486
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before,
1487
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):focus:focus:not(:focus-visible)::before {
1488
- box-shadow: var(--token-focus-ring-action-box-shadow);
1489
- }
1490
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):active, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-active,
1491
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):active,
1492
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-active,
1493
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):active,
1494
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-active {
1495
- color: var(--token-color-foreground-high-contrast);
1496
- background-color: var(--token-color-palette-neutral-500);
1497
- border-color: var(--token-color-palette-neutral-400);
1498
- }
1499
- .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled], .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:focus, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:focus, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:focus, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:hover, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:hover, .hds-app-header .hds-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:hover,
1500
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled,
1501
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled],
1502
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled,
1503
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:focus,
1504
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:focus,
1505
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:focus,
1506
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:hover,
1507
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:hover,
1508
- .hds-app-header .hds-dropdown-toggle-button:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:hover,
1509
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled,
1510
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled],
1511
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled,
1512
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:focus,
1513
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:focus,
1514
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:focus,
1515
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *):disabled:hover,
1516
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *)[disabled]:hover,
1517
- .hds-app-header .hds-dropdown-toggle-icon:not(.hds-dropdown * *, .ember-basic-dropdown-trigger * *, .ember-basic-dropdown-content * *).mock-disabled:hover {
1518
- color: var(--token-color-foreground-disabled);
1519
- background-color: var(--token-color-palette-neutral-600);
1520
- border-color: var(--token-color-palette-neutral-500);
1521
- }
1522
-
1523
- .hds-app-frame:has(.hds-side-nav--is-not-minimized) .hds-app-header--is-mobile .hds-button,
1524
- .hds-app-frame:has(.hds-side-nav--is-not-minimized) .hds-app-header--is-mobile .hds-dropdown-toggle-button,
1525
- .hds-app-frame:has(.hds-side-nav--is-not-minimized) .hds-app-header--is-mobile .hds-dropdown-toggle-icon,
1526
- .hds-app-frame:has(.hds-side-nav--is-not-minimized) .hds-app-header--is-mobile .hds-app-header__home-link {
1527
- color: var(--token-color-foreground-disabled);
1528
- background-color: var(--token-color-palette-neutral-600);
1529
- border-color: var(--token-color-palette-neutral-500);
1530
- pointer-events: none;
1531
- }
1532
-
1533
- .hds-app-header__home-link {
1534
- border: 1px solid transparent;
1535
- cursor: pointer;
1536
- color: var(--token-color-foreground-high-contrast);
1537
- background-color: var(--token-color-palette-neutral-700);
1538
- border-radius: 5px;
1539
- display: flex;
1540
- align-items: center;
1541
- justify-content: center;
1542
- width: var(--token-app-header-home-link-size);
1543
- height: var(--token-app-header-home-link-size);
1544
- }
1545
- .hds-app-header__home-link:hover, .hds-app-header__home-link.mock-hover {
1546
- color: var(--token-color-foreground-high-contrast);
1547
- background-color: var(--token-color-palette-neutral-600);
1548
- }
1549
- .hds-app-header__home-link:focus, .hds-app-header__home-link.mock-focus {
1550
- position: relative;
1551
- outline-style: solid;
1552
- outline-color: transparent;
1553
- isolation: isolate;
1554
- color: var(--token-color-foreground-high-contrast);
1555
- background-color: var(--token-color-palette-neutral-700);
1556
- }
1557
- .hds-app-header__home-link:focus::before, .hds-app-header__home-link.mock-focus::before {
1558
- position: absolute;
1559
- top: -1px;
1560
- right: -1px;
1561
- bottom: -1px;
1562
- left: -1px;
1563
- z-index: -1;
1564
- border-radius: 5px;
1565
- content: "";
1566
- }
1567
- .hds-app-header__home-link:focus:focus::before, .hds-app-header__home-link:focus.mock-focus::before, .hds-app-header__home-link.mock-focus:focus::before, .hds-app-header__home-link.mock-focus.mock-focus::before {
1568
- box-shadow: var(--token-focus-ring-action-box-shadow);
1569
- }
1570
- .hds-app-header__home-link:focus:focus:not(:focus-visible)::before, .hds-app-header__home-link.mock-focus:focus:not(:focus-visible)::before {
1571
- box-shadow: none;
1572
- }
1573
- .hds-app-header__home-link:focus:focus-visible::before, .hds-app-header__home-link.mock-focus:focus-visible::before {
1574
- box-shadow: var(--token-focus-ring-action-box-shadow);
1575
- }
1576
- .hds-app-header__home-link:focus:focus:active::before, .hds-app-header__home-link:focus.mock-focus.mock-active::before, .hds-app-header__home-link.mock-focus:focus:active::before, .hds-app-header__home-link.mock-focus.mock-focus.mock-active::before {
1577
- box-shadow: none;
1578
- }
1579
- .hds-app-header__home-link:focus::before, .hds-app-header__home-link.mock-focus::before {
1580
- color: var(--token-color-foreground-high-contrast);
1581
- border: none;
1582
- box-shadow: var(--token-focus-ring-action-box-shadow);
1583
- }
1584
- .hds-app-header__home-link:focus:focus:not(:focus-visible)::before {
1585
- box-shadow: var(--token-focus-ring-action-box-shadow);
1586
- }
1587
- .hds-app-header__home-link:active, .hds-app-header__home-link.mock-active {
1588
- color: var(--token-color-foreground-high-contrast);
1589
- background-color: var(--token-color-palette-neutral-500);
1590
- }
1591
- .hds-app-header__home-link:disabled, .hds-app-header__home-link[disabled], .hds-app-header__home-link.mock-disabled, .hds-app-header__home-link:disabled:focus, .hds-app-header__home-link[disabled]:focus, .hds-app-header__home-link.mock-disabled:focus, .hds-app-header__home-link:disabled:hover, .hds-app-header__home-link[disabled]:hover, .hds-app-header__home-link.mock-disabled:hover {
1592
- color: var(--token-color-foreground-disabled);
1593
- background-color: var(--token-color-palette-neutral-600);
1594
- border-color: var(--token-color-palette-neutral-500);
1595
- }
1596
- .hds-app-header__home-link svg {
1597
- width: var(--token-app-header-logo-size);
1598
- height: var(--token-app-header-logo-size);
1599
- }
1600
-
1601
- .hds-app-header__actions-content,
1602
- .hds-app-header__actions {
1603
- display: flex;
1604
- flex: 1;
1605
- gap: inherit;
1606
- }
1607
-
1608
1344
  /**
1609
1345
  * Copyright (c) HashiCorp, Inc.
1610
1346
  * SPDX-License-Identifier: MPL-2.0
@@ -3416,6 +3152,10 @@ button.hds-button[href]::after {
3416
3152
  .hds-dropdown-toggle-button--size-small {
3417
3153
  padding-right: 0.375rem;
3418
3154
  }
3155
+ .hds-dropdown-toggle-button--size-small .hds-dropdown-toggle-chevron .hds-icon {
3156
+ width: 12px;
3157
+ height: 12px;
3158
+ }
3419
3159
 
3420
3160
  .hds-dropdown-toggle-button--size-medium {
3421
3161
  padding-right: 0.5625rem;
@@ -6385,6 +6125,10 @@ button.hds-button[href]::after {
6385
6125
  * Copyright (c) HashiCorp, Inc.
6386
6126
  * SPDX-License-Identifier: MPL-2.0
6387
6127
  */
6128
+ /**
6129
+ * Copyright (c) HashiCorp, Inc.
6130
+ * SPDX-License-Identifier: MPL-2.0
6131
+ */
6388
6132
  .hds-side-nav-header {
6389
6133
  display: flex;
6390
6134
  align-items: center;
@@ -6889,6 +6633,10 @@ button.hds-button[href]::after {
6889
6633
 
6890
6634
  .hds-side-nav__content-panel {
6891
6635
  padding: 0 var(--token-side-nav-wrapper-padding-horizontal);
6636
+ overflow: hidden;
6637
+ }
6638
+ .hds-side-nav__content-panel[aria-hidden=true] {
6639
+ max-height: 0;
6892
6640
  }
6893
6641
 
6894
6642
  .hds-side-nav__list-title {
@@ -16,7 +16,8 @@
16
16
  @use "../components/alert";
17
17
  @use "../components/app-footer";
18
18
  @use "../components/app-frame";
19
- @use "../components/app-header";
19
+ // @use "../components/app-header";
20
+ // @use "../components/app-side-nav";
20
21
  @use "../components/application-state";
21
22
  @use "../components/badge";
22
23
  @use "../components/badge-count";
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ //
7
+ // SIDE-NAV > CONTENT (PORTALS + LISTS OF ITEMS/LINKS)
8
+ //
9
+
10
+ @use "../../mixins/focus-ring" as *;
11
+
12
+
13
+ // PANELS (wrappers used in conjunction with the portal elements)
14
+
15
+ .hds-app-side-nav__content {
16
+ // we use this trick (increasing the container size here, and reducing it at single panel level)
17
+ // to have the panels width match the sidebar extended width (it's used in the animated sliding of the panels)
18
+ margin: 0 calc(var(--token-app-side-nav-wrapper-padding-horizontal) * -1);
19
+
20
+ // we hide the content when the SideNav is collapsed to prevent the vertical scrollbar from being visible
21
+ // when the scrollbar is set to be always visible or a mouse or trackpad force it to be always visible.
22
+ // ideally we would use `display: none` but doing so would disable the fade-in transition when expanding
23
+ .hds-app-side-nav--is-minimized & {
24
+ height: 0;
25
+ overflow: hidden;
26
+ }
27
+ }
28
+
29
+ .hds-app-side-nav__content-panels {
30
+ // see https://codepen.io/didoo/pen/YzOeRPr
31
+ display: grid;
32
+ grid-template-columns: repeat(5, var(--hds-app-side-nav-width-expanded));
33
+ width: 100%;
34
+ }
35
+
36
+ .hds-app-side-nav__content-panel {
37
+ padding: 0 var(--token-app-side-nav-wrapper-padding-horizontal);
38
+ overflow: hidden; // the panel itself does not need to be scrollable
39
+
40
+ &[aria-hidden="true"] {
41
+ max-height: 0; // prevents hidden panels from causing scrolling
42
+ }
43
+ }
44
+
45
+ // (LIST) TITLE
46
+
47
+ .hds-app-side-nav__list-title {
48
+ min-height: var(--token-app-side-nav-body-list-item-height);
49
+ margin-top: var(--token-app-side-nav-body-list-margin-vertical);
50
+ padding: 9px var(--token-app-side-nav-body-list-item-padding-horizontal); // 8px = (min-height - body-100-line-height) / 2
51
+ color: var(--token-app-side-nav-color-foreground-faint);
52
+ overflow-wrap: break-word;
53
+
54
+ // Remove margin from title at top of all list-items & lists
55
+ .hds-app-side-nav__list-wrapper:first-child .hds-app-side-nav__list-item:first-child > & {
56
+ margin-top: 0;
57
+ }
58
+ }
59
+
60
+ // LIST (root elements)
61
+
62
+ .hds-app-side-nav__list-wrapper, // <nav> element
63
+ .hds-app-side-nav__list { // <ul> element
64
+ margin: 0;
65
+ padding: 0;
66
+ }
67
+
68
+
69
+ // ITEM (generic container)
70
+
71
+ .hds-app-side-nav__list-item { // <li> element
72
+ position: relative; // for the "active" state indicator
73
+ list-style-type: none;
74
+
75
+ & + & {
76
+ margin-top: var(--token-app-side-nav-body-list-item-spacing-vertical);
77
+ }
78
+ }
79
+
80
+ .hds-app-side-nav__list-item-link { // <a>/<button> element (via Hds::Interactive)
81
+ display: flex;
82
+ gap: var(--token-app-side-nav-body-list-item-content-spacing-horizontal);
83
+ align-items: center;
84
+ width: 100%;
85
+ min-height: var(--token-app-side-nav-body-list-item-height);
86
+ padding: var(--token-app-side-nav-body-list-item-padding-vertical) var(--token-app-side-nav-body-list-item-padding-horizontal);
87
+ color: var(--token-app-side-nav-color-foreground-primary);
88
+ text-decoration: none;
89
+ // "Link" could render as an HTML button element so this overrides the default border style in that case:
90
+ border-color: transparent;
91
+ border-radius: var(--token-app-side-nav-body-list-item-border-radius);
92
+
93
+ // :Focus
94
+ &:focus,
95
+ &.mock-focus {
96
+ @include hds-focus-ring-with-pseudo-element();
97
+ }
98
+
99
+ // :Hover
100
+ &:hover,
101
+ &.mock-hover {
102
+ background: var(--token-app-side-nav-color-surface-interactive-hover);
103
+ border-color: transparent;
104
+
105
+ .hds-app-side-nav__list-item-text,
106
+ .hds-app-side-nav__list-item-icon-leading,
107
+ .hds-app-side-nav__list-item-icon-trailing {
108
+ color: var(--token-app-side-nav-color-foreground-strong);
109
+ }
110
+ }
111
+
112
+ // :Active
113
+ &:active,
114
+ &.mock-active {
115
+ background: var(--token-color-surface-interactive-active);
116
+ }
117
+
118
+ // ".Active" (current page) link
119
+ // NOTICE: this is necessary to mitigate the flickering of the link when clicked (expecially noticeable with a badge)
120
+ // For details see: https://github.com/hashicorp/design-system/pull/1328
121
+ // &:hover:focus, // This is causing issues with :active state styles not applying, refactored to apply to "active" class
122
+ // notice: this ".active" extra class is used to match the corresponding `active` class assigned automatically
123
+ // by the `<LinkTo>` Ember component (when the link is "current), so that consumers get it for free if they want
124
+ // otherwise they can use the `@isActive` argument to set this visual state directly
125
+ // Important: This element does not doing anything when interacted with so should not change color according to state
126
+ &.active,
127
+ &.active:hover:focus {
128
+ background: var(--token-color-surface-strong);
129
+
130
+ // indicator bar
131
+ &::after {
132
+ position: absolute;
133
+ top: 0;
134
+ bottom: 0;
135
+ left: calc(var(--token-app-side-nav-wrapper-padding-horizontal) * -1);
136
+ width: 4px;
137
+ background: var(--token-color-foreground-action);
138
+ border-radius: 0 2px 2px 0;
139
+ content: "";
140
+ }
141
+
142
+ .hds-app-side-nav__list-item-text,
143
+ .hds-app-side-nav__list-item-icon-leading,
144
+ .hds-app-side-nav__list-item-icon-trailing {
145
+ color: var(--token-color-foreground-action);
146
+ }
147
+ }
148
+ }
149
+
150
+ // special override for the "back-link" element (no visible active state, by design)
151
+ .hds-app-side-nav__list-item-link--back-link {
152
+ &:active,
153
+ &.mock-active {
154
+ background: var(--token-app-side-nav-color-surface-primary);
155
+
156
+ .hds-app-side-nav__list-item-text,
157
+ .hds-app-side-nav__list-item-icon-leading,
158
+ .hds-app-side-nav__list-item-icon-trailing {
159
+ color: var(--token-app-side-nav-color-foreground-primary);
160
+ }
161
+ }
162
+ }
163
+
164
+
165
+ // LIST ITEM > INNER ELEMENTS
166
+
167
+ .hds-app-side-nav__list-item-text {
168
+ min-width: 0;
169
+ max-width: 100%;
170
+ color: var(--token-color-foreground-strong);
171
+ text-align: left;
172
+ overflow-wrap: break-word;
173
+ }
174
+
175
+ .hds-app-side-nav__list-item-icon-leading {
176
+ flex: none;
177
+ }
178
+
179
+ .hds-app-side-nav__list-item-icon-trailing {
180
+ flex: none;
181
+ margin-left: auto;
182
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ @use "./vars.scss";
7
+ @use "./main.scss";
8
+ @use "./content.scss";
9
+ @use "./toggle-button.scss";