@hashicorp/design-system-components 5.1.1-rc-20251209143536 → 5.2.0-rc-20251216140614

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 (66) hide show
  1. package/declarations/components/hds/breadcrumb/item.d.ts +4 -8
  2. package/declarations/components/hds/dropdown/index.d.ts +2 -0
  3. package/declarations/components/hds/icon/index.d.ts +1 -1
  4. package/declarations/components/hds/interactive/index.d.ts +4 -9
  5. package/declarations/components/hds/popover-primitive/index.d.ts +2 -0
  6. package/declarations/components/hds/rich-tooltip/bubble.d.ts +2 -0
  7. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  8. package/declarations/components/hds/theme-context/index.d.ts +24 -0
  9. package/declarations/components/hds/theme-context/types.d.ts +19 -0
  10. package/declarations/components/hds/theme-switcher/index.d.ts +43 -0
  11. package/declarations/components.d.ts +2 -0
  12. package/declarations/modifiers/hds-anchored-position.d.ts +3 -1
  13. package/declarations/services/hds-theming.d.ts +57 -0
  14. package/declarations/services.d.ts +1 -0
  15. package/declarations/template-registry.d.ts +6 -0
  16. package/declarations/utils/hds-resolve-link-to-external.d.ts +12 -0
  17. package/dist/_app_/components/hds/theme-context.js +1 -0
  18. package/dist/_app_/components/hds/theme-switcher.js +1 -0
  19. package/dist/_app_/services/hds-theming.js +1 -0
  20. package/dist/components/hds/breadcrumb/item.js +17 -15
  21. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  22. package/dist/components/hds/dropdown/index.js +3 -2
  23. package/dist/components/hds/dropdown/index.js.map +1 -1
  24. package/dist/components/hds/interactive/index.js +17 -19
  25. package/dist/components/hds/interactive/index.js.map +1 -1
  26. package/dist/components/hds/popover-primitive/index.js +1 -1
  27. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  28. package/dist/components/hds/rich-tooltip/bubble.js +2 -1
  29. package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
  30. package/dist/components/hds/theme-context/index.js +45 -0
  31. package/dist/components/hds/theme-context/index.js.map +1 -0
  32. package/dist/components/hds/theme-context/types.js +27 -0
  33. package/dist/components/hds/theme-context/types.js.map +1 -0
  34. package/dist/components/hds/theme-switcher/index.js +100 -0
  35. package/dist/components/hds/theme-switcher/index.js.map +1 -0
  36. package/dist/components.js +2 -0
  37. package/dist/components.js.map +1 -1
  38. package/dist/modifiers/hds-anchored-position.js +42 -4
  39. package/dist/modifiers/hds-anchored-position.js.map +1 -1
  40. package/dist/services/hds-theming.js +214 -0
  41. package/dist/services/hds-theming.js.map +1 -0
  42. package/dist/services.js +1 -1
  43. package/dist/styles/@hashicorp/design-system-components-common.css +9584 -0
  44. package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -0
  45. package/dist/styles/@hashicorp/design-system-components-common.scss +24 -0
  46. package/dist/styles/@hashicorp/design-system-components.css +544 -337
  47. package/dist/styles/@hashicorp/design-system-components.css.map +1 -0
  48. package/dist/styles/@hashicorp/design-system-components.scss +4 -62
  49. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +229 -0
  50. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +1 -0
  51. package/dist/styles/components/badge-count.scss +26 -76
  52. package/dist/styles/components/badge.scss +26 -131
  53. package/dist/styles/components/button.scss +5 -0
  54. package/dist/styles/components/dropdown.scss +3 -5
  55. package/dist/styles/components/form/file-input.scss +2 -2
  56. package/dist/styles/components/form/key-value-inputs.scss +2 -4
  57. package/dist/styles/components/form/super-select.scss +12 -4
  58. package/dist/styles/components/index.scss +52 -0
  59. package/dist/styles/components/theme-context.scss +12 -0
  60. package/dist/styles/mixins/_button.scss +82 -129
  61. package/dist/styles/mixins/_carbonization.scss +31 -0
  62. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  63. package/dist/utils/hds-resolve-link-to-external.js +33 -0
  64. package/dist/utils/hds-resolve-link-to-external.js.map +1 -0
  65. package/package.json +12 -4
  66. package/dist/styles/@hashicorp/design-system-components.scss.map +0 -1
@@ -7,48 +7,17 @@
7
7
  // BADGE COMPONENT
8
8
  //
9
9
 
10
- @use "sass:map";
11
-
12
- $hds-badge-types: ("flat", "inverted", "outlined");
13
- $hds-badge-colors-accents: ("highlight", "success", "warning", "critical");
14
10
  $hds-badge-sizes: ("small", "medium", "large");
15
- $hds-badge-border-width: 1px;
16
- $hds-badge-colors-props: (
17
- "highlight": (
18
- "inverted-background-color": var(--token-color-palette-purple-200),
19
- "outlined-border-color": var(--token-color-palette-purple-200),
20
- ),
21
- "success": (
22
- "inverted-background-color": var(--token-color-palette-green-200),
23
- "outlined-border-color": var(--token-color-palette-green-200),
24
- ),
25
- "warning": (
26
- "inverted-background-color": var(--token-color-palette-amber-200),
27
- "outlined-border-color": var(--token-color-palette-amber-200),
28
- ),
29
- "critical": (
30
- "inverted-background-color": var(--token-color-palette-red-200),
31
- "outlined-border-color": var(--token-color-palette-red-200),
32
- ),
33
- );
11
+ $hds-badge-colors: ("neutral", "neutral-dark-mode", "highlight", "success", "warning", "critical");
12
+ $hds-badge-types: ("filled", "inverted", "outlined");
34
13
 
35
14
  .hds-badge {
36
- // Redefine color values to increase contrast
37
- --token-color-surface-success: var(--token-color-palette-green-100);
38
- --token-color-foreground-success-on-surface: var(--token-color-palette-green-400);
39
- --token-color-surface-warning: var(--token-color-palette-amber-100);
40
- --token-color-foreground-warning-on-surface: var(--token-color-palette-amber-400);
41
- --token-color-surface-critical: var(--token-color-palette-red-100);
42
- --token-color-foreground-critical-on-surface: var(--token-color-palette-red-400);
43
- --token-color-surface-highlight: var(--token-color-palette-purple-100);
44
- --token-color-foreground-highlight-on-surface: var(--token-color-palette-purple-400);
45
-
46
15
  display: inline-flex;
47
16
  align-items: center;
48
17
  max-width: 100%;
49
18
  vertical-align: middle;
50
- border: $hds-badge-border-width solid transparent;
51
- border-radius: var(--token-border-radius-small);
19
+ border-style: solid;
20
+ border-width: var(--token-badge-border-width);
52
21
  }
53
22
 
54
23
  .hds-badge__icon {
@@ -64,116 +33,42 @@ $hds-badge-colors-props: (
64
33
 
65
34
  // SIZE
66
35
 
67
- // these values later may come from the design tokens
68
- $hds-badge-size-props: (
69
- "small": (
70
- // 13px = 0.8125rem
71
- "font-size": 0.8125rem,
72
- "gap": 0.25rem,
73
- "height": 1.25rem,
74
- "icon-size": 0.75rem,
75
- // 16px = 1.2308
76
- "line-height": 1.2308,
77
- "padding-vertical": 0.125rem,
78
- "padding-horizontal": 0.375rem,
79
- ),
80
- "medium": (
81
- // 13px = 0.8125rem
82
- "font-size": 0.8125rem,
83
- "gap": 0.25rem,
84
- "height": 1.5rem,
85
- "icon-size": 1rem,
86
- // 16px = 1.2308
87
- "line-height": 1.2308,
88
- "padding-vertical": 0.25rem,
89
- "padding-horizontal": 0.5rem,
90
- ),
91
- "large": (
92
- // 16px = 1rem
93
- "font-size": 1rem,
94
- "gap": 0.375rem,
95
- "height": 2rem,
96
- "icon-size": 1rem,
97
- // 24px = 1.5
98
- "line-height": 1.5,
99
- "padding-vertical": 0.25rem,
100
- "padding-horizontal": 0.5rem,
101
- ),
102
- );
103
-
104
36
  @each $size in $hds-badge-sizes {
105
37
  .hds-badge--size-#{$size} {
106
- gap: map.get($hds-badge-size-props, $size, "gap");
107
- min-height: map.get($hds-badge-size-props, $size, "height");
108
- padding: calc(#{map.get($hds-badge-size-props, $size, "padding-vertical")} - #{$hds-badge-border-width})
109
- calc(#{map.get($hds-badge-size-props, $size, "padding-horizontal")} - #{$hds-badge-border-width});
38
+ gap: var(--token-badge-gap-#{$size});
39
+ min-height: var(--token-badge-height-#{$size});
40
+ padding: calc(var(--token-badge-padding-vertical-#{$size}) - var(--token-badge-border-width))
41
+ calc(var(--token-badge-padding-horizontal-#{$size}) - var(--token-badge-border-width));
42
+ border-radius: var(--token-badge-border-radius-#{$size});
110
43
 
111
44
  .hds-badge__icon {
112
- width: map.get($hds-badge-size-props, $size, "icon-size");
113
- height: map.get($hds-badge-size-props, $size, "icon-size");
45
+ width: var(--token-badge-icon-size-#{$size});
46
+ height: var(--token-badge-icon-size-#{$size});
114
47
  }
115
48
 
116
49
  .hds-badge__text {
117
- font-size: map.get($hds-badge-size-props, $size, "font-size");
118
- line-height: map.get($hds-badge-size-props, $size, "line-height");
50
+ font-size: var(--token-badge-typography-font-size-#{$size});
51
+ line-height: var(--token-badge-typography-line-height-#{$size});
119
52
  }
120
53
  }
121
54
  }
122
55
 
123
56
  // COLOR + TYPE COMBINATIONS
124
57
 
125
- .hds-badge--color-neutral {
126
- &.hds-badge--type-filled {
127
- color: var(--token-color-foreground-primary);
128
- background-color: var(--token-color-palette-neutral-200);
129
- }
130
-
131
- &.hds-badge--type-inverted {
132
- color: var(--token-color-foreground-high-contrast);
133
- background-color: var(--token-color-palette-neutral-500);
134
- }
135
-
136
- &.hds-badge--type-outlined {
137
- color: var(--token-color-foreground-primary);
138
- background-color: transparent;
139
- border-color: var(--token-color-palette-neutral-500);
140
- }
141
- }
142
-
143
- .hds-badge--color-neutral-dark-mode {
144
- &.hds-badge--type-filled {
145
- color: var(--token-color-foreground-high-contrast);
146
- background-color: var(--token-color-palette-neutral-500);
147
- }
148
-
149
- &.hds-badge--type-inverted {
150
- color: var(--token-color-foreground-primary);
151
- background-color: var(--token-color-surface-faint);
152
- }
153
-
154
- &.hds-badge--type-outlined {
155
- color: var(--token-color-foreground-high-contrast);
156
- background-color: transparent;
157
- border-color: var(--token-color-palette-neutral-50);
158
- }
159
- }
160
-
161
- @each $color in $hds-badge-colors-accents {
58
+ @each $color in $hds-badge-colors {
162
59
  .hds-badge--color-#{$color} {
163
- &.hds-badge--type-filled {
164
- color: var(--token-color-foreground-#{$color}-on-surface);
165
- background-color: var(--token-color-surface-#{$color});
166
- }
167
-
168
- &.hds-badge--type-inverted {
169
- color: var(--token-color-foreground-high-contrast);
170
- background-color: map.get($hds-badge-colors-props, $color, "inverted-background-color");
171
- }
172
-
173
- &.hds-badge--type-outlined {
174
- color: var(--token-color-foreground-#{$color});
175
- background-color: transparent;
176
- border-color: map.get($hds-badge-colors-props, $color, "outlined-border-color");
60
+ @each $type in $hds-badge-types {
61
+ &.hds-badge--type-#{$type} {
62
+ color: var(--token-badge-foreground-color-#{$color}-#{$type});
63
+
64
+ @if $type == "outlined" {
65
+ background-color: transparent;
66
+ border-color: var(--token-badge-foreground-color-#{$color}-#{$type});
67
+ } @else {
68
+ background-color: var(--token-badge-surface-color-#{$color}-#{$type});
69
+ border-color: transparent;
70
+ }
71
+ }
177
72
  }
178
73
  }
179
74
  }
@@ -10,6 +10,7 @@
10
10
  //
11
11
 
12
12
  @use "../mixins/button" as *;
13
+ @use "../mixins/carbonization" as *;
13
14
 
14
15
  .hds-button {
15
16
  @include hds-button();
@@ -51,6 +52,10 @@
51
52
  width: 100%;
52
53
  max-width: 100%;
53
54
 
55
+ @include hds-apply-only-if-carbon() {
56
+ justify-content: space-between;
57
+ }
58
+
54
59
  .hds-button__text {
55
60
  flex: 0 0 auto;
56
61
  }
@@ -12,8 +12,6 @@
12
12
  @use "../mixins/button" as *;
13
13
  @use "../mixins/focus-ring" as *;
14
14
 
15
- $hds-dropdown-toggle-border-radius: $hds-button-border-radius;
16
-
17
15
  // DROPDOWN
18
16
 
19
17
  .hds-dropdown--is-inline {
@@ -39,7 +37,7 @@ $hds-dropdown-toggle-border-radius: $hds-button-border-radius;
39
37
  color: var(--token-color-foreground-primary);
40
38
  background-color: var(--token-color-surface-faint);
41
39
  border: 1px solid var(--token-color-border-strong);
42
- border-radius: $hds-dropdown-toggle-border-radius;
40
+ border-radius: var(--token-button-border-radius);
43
41
  outline-style: solid; // used to avoid double outline+focus-ring in Safari (see https://github.com/hashicorp/design-system-components/issues/161#issuecomment-1031548656)
44
42
  outline-color: transparent; // We need this to be transparent for a11y
45
43
  isolation: isolate; // used to create a new stacking context (needed to have the pseudo element below text/icon but not the parent container)
@@ -81,8 +79,8 @@ $hds-dropdown-toggle-border-radius: $hds-button-border-radius;
81
79
  align-items: center;
82
80
  justify-content: center;
83
81
  border-radius: calc(
84
- #{$hds-dropdown-toggle-border-radius} - 2px
85
- ); // $hds-dropdown-toggle-border-radius - (1px padding + 1px border) (= 3px)
82
+ var(--token-button-border-radius) - 2px
83
+ ); // var(--token-button-border-radius) - (1px padding + 1px border) (= 3px)
86
84
 
87
85
  img {
88
86
  width: 100%;
@@ -37,8 +37,8 @@
37
37
  background-repeat: no-repeat;
38
38
  background-position: 15px 50%;
39
39
  background-size: var(--token-form-text-input-background-image-size);
40
- border: $hds-button-border-width solid var(--token-color-border-strong);
41
- border-radius: $hds-button-border-radius;
40
+ border: var(--token-button-border-width) solid var(--token-color-border-strong);
41
+ border-radius: var(--token-button-border-radius);
42
42
  box-shadow: var(--token-elevation-low-box-shadow);
43
43
  cursor: pointer;
44
44
  }
@@ -12,9 +12,6 @@
12
12
  @use "../../mixins/button" as *;
13
13
  @use "../../mixins/screen-reader-only" as *;
14
14
 
15
- // this is the width of the icon-only button
16
- $hds-delete-button-width: map.get($hds-button-size-props, "medium", "min-height");
17
-
18
15
  // notice: this is a <fieldset> element
19
16
  .hds-form-key-value-inputs {
20
17
  display: flex;
@@ -43,7 +40,8 @@ $hds-delete-button-width: map.get($hds-button-size-props, "medium", "min-height"
43
40
  @include hds-breakpoint-above("md") {
44
41
  display: grid;
45
42
  flex-grow: 1;
46
- grid-template-columns: var(--hds-key-value-inputs-columns, 1fr 1fr $hds-delete-button-width);
43
+ // `var(--token-button-height-medium)` is the width/height of the icon-only button
44
+ grid-template-columns: var(--hds-key-value-inputs-columns, 1fr 1fr var(--token-button-height-medium));
47
45
  align-items: flex-end;
48
46
  column-gap: 8px;
49
47
  row-gap: 0;
@@ -392,7 +392,10 @@ $hds-super-select-item-height: 36px;
392
392
  // SINGLE
393
393
  .hds-form-super-select-single .ember-basic-dropdown {
394
394
  // Options Item
395
- .ember-power-select-option:not(.ember-power-select-option--no-matches-message) {
395
+ .ember-power-select-option:not(
396
+ .ember-power-select-option--no-matches-message,
397
+ .ember-power-select-option--loading-message
398
+ ) {
396
399
  background-repeat: no-repeat;
397
400
  background-position: 15px 10px;
398
401
  background-size: var(--token-form-select-background-image-size) var(--token-form-select-background-image-size);
@@ -434,7 +437,11 @@ $hds-super-select-item-height: 36px;
434
437
  // MULTIPLE SELECT
435
438
  .hds-form-super-select-multiple .ember-basic-dropdown {
436
439
  // Options Item
437
- .ember-power-select-option:not(.ember-power-select-option--no-matches-message) {
440
+ // We add a pesudo checkbox to each option except those that are for messages (no matches/loading)
441
+ .ember-power-select-option:not(
442
+ .ember-power-select-option--no-matches-message,
443
+ .ember-power-select-option--loading-message
444
+ ) {
438
445
  position: relative;
439
446
 
440
447
  // pseudo checkbox
@@ -517,10 +524,11 @@ $hds-super-select-item-height: 36px;
517
524
  }
518
525
  }
519
526
 
520
- // NO MATCHES MESSAGE
527
+ // NO MATCHES MESSAGE & LOADING MESSAGE
521
528
 
522
529
  .hds-form-super-select .ember-basic-dropdown {
523
- .ember-power-select-option--no-matches-message {
530
+ .ember-power-select-option--no-matches-message,
531
+ .ember-power-select-option--loading-message {
524
532
  padding-left: 12px;
525
533
  cursor: inherit;
526
534
  // hide the hover indicator on messages
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ // Notice: this list can be automatically edited by the Ember blueprint, please don't remove the start/end comments
7
+ // START COMPONENTS CSS FILES IMPORTS
8
+ @use "./accordion";
9
+ @use "./advanced-table";
10
+ @use "./alert";
11
+ @use "./app-footer";
12
+ @use "./app-frame";
13
+ @use "./app-header";
14
+ @use "./app-side-nav";
15
+ @use "./application-state";
16
+ @use "./badge";
17
+ @use "./badge-count";
18
+ @use "./breadcrumb";
19
+ @use "./button";
20
+ @use "./button-set";
21
+ @use "./card";
22
+ @use "./code-block";
23
+ @use "./code-editor";
24
+ @use "./copy";
25
+ @use "./dialog-primitive";
26
+ @use "./disclosure-primitive";
27
+ @use "./dismiss-button";
28
+ @use "./dropdown";
29
+ @use "./flyout";
30
+ @use "./form"; // multiple components
31
+ @use "./icon";
32
+ @use "./icon-tile";
33
+ @use "./layout"; // multiple components
34
+ @use "./link"; // multiple components
35
+ @use "./modal";
36
+ @use "./page-header";
37
+ @use "./pagination";
38
+ @use "./reveal";
39
+ @use "./rich-tooltip";
40
+ @use "./segmented-group";
41
+ @use "./separator";
42
+ @use "./side-nav";
43
+ @use "./stepper";
44
+ @use "./table";
45
+ @use "./tabs";
46
+ @use "./tag";
47
+ @use "./text";
48
+ @use "./theme-context";
49
+ @use "./time";
50
+ @use "./toast";
51
+ @use "./tooltip";
52
+ // END COMPONENT CSS FILES IMPORTS
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ //
7
+ // THEME CONTEXT
8
+ //
9
+
10
+ .hds-theme-context {
11
+ display: contents;
12
+ }