@hashicorp/design-system-components 5.2.0 → 5.2.1-rc-20260109114755

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 (42) hide show
  1. package/declarations/components/hds/theme-context/index.d.ts +24 -0
  2. package/declarations/components/hds/theme-context/types.d.ts +19 -0
  3. package/declarations/components/hds/theme-switcher/index.d.ts +43 -0
  4. package/declarations/components.d.ts +2 -0
  5. package/declarations/services/hds-theming.d.ts +57 -0
  6. package/declarations/services.d.ts +1 -0
  7. package/declarations/template-registry.d.ts +6 -0
  8. package/dist/_app_/components/hds/theme-context.js +1 -0
  9. package/dist/_app_/components/hds/theme-switcher.js +1 -0
  10. package/dist/_app_/services/hds-theming.js +1 -0
  11. package/dist/components/hds/theme-context/index.js +45 -0
  12. package/dist/components/hds/theme-context/index.js.map +1 -0
  13. package/dist/components/hds/theme-context/types.js +27 -0
  14. package/dist/components/hds/theme-context/types.js.map +1 -0
  15. package/dist/components/hds/theme-switcher/index.js +100 -0
  16. package/dist/components/hds/theme-switcher/index.js.map +1 -0
  17. package/dist/components.js +2 -0
  18. package/dist/components.js.map +1 -1
  19. package/dist/services/hds-theming.js +214 -0
  20. package/dist/services/hds-theming.js.map +1 -0
  21. package/dist/services.js +1 -1
  22. package/dist/styles/@hashicorp/design-system-components-common.css +9588 -0
  23. package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -0
  24. package/dist/styles/@hashicorp/design-system-components-common.scss +24 -0
  25. package/dist/styles/@hashicorp/design-system-components.css +501 -320
  26. package/dist/styles/@hashicorp/design-system-components.css.map +1 -0
  27. package/dist/styles/@hashicorp/design-system-components.scss +4 -62
  28. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +229 -0
  29. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +1 -0
  30. package/dist/styles/components/badge-count.scss +26 -76
  31. package/dist/styles/components/badge.scss +26 -131
  32. package/dist/styles/components/button.scss +5 -0
  33. package/dist/styles/components/dropdown.scss +3 -5
  34. package/dist/styles/components/form/file-input.scss +2 -2
  35. package/dist/styles/components/form/key-value-inputs.scss +2 -4
  36. package/dist/styles/components/index.scss +52 -0
  37. package/dist/styles/components/theme-context.scss +12 -0
  38. package/dist/styles/mixins/_button.scss +82 -129
  39. package/dist/styles/mixins/_carbonization.scss +31 -0
  40. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  41. package/package.json +7 -3
  42. 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;
@@ -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
+ }