@hashicorp/design-system-components 5.2.0-rc-20260107211222 → 5.2.0-rc-20260108162959

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 (96) 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-intl.d.ts +4 -3
  6. package/declarations/services/hds-theming.d.ts +57 -0
  7. package/declarations/services.d.ts +1 -0
  8. package/declarations/template-registry.d.ts +6 -0
  9. package/dist/_app_/components/hds/theme-context.js +1 -0
  10. package/dist/_app_/components/hds/theme-switcher.js +1 -0
  11. package/dist/_app_/services/hds-theming.js +1 -0
  12. package/dist/components/hds/advanced-table/index.js.map +1 -1
  13. package/dist/components/hds/advanced-table/models/column.js.map +1 -1
  14. package/dist/components/hds/advanced-table/models/row.js.map +1 -1
  15. package/dist/components/hds/advanced-table/models/table.js.map +1 -1
  16. package/dist/components/hds/advanced-table/td.js.map +1 -1
  17. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  18. package/dist/components/hds/advanced-table/th-reorder-drop-target.js.map +1 -1
  19. package/dist/components/hds/advanced-table/th-resize-handle.js.map +1 -1
  20. package/dist/components/hds/advanced-table/th-selectable.js.map +1 -1
  21. package/dist/components/hds/advanced-table/th-sort.js.map +1 -1
  22. package/dist/components/hds/advanced-table/th.js.map +1 -1
  23. package/dist/components/hds/alert/index.js.map +1 -1
  24. package/dist/components/hds/app-header/index.js.map +1 -1
  25. package/dist/components/hds/app-side-nav/index.js.map +1 -1
  26. package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
  27. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
  28. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  29. package/dist/components/hds/code-block/index.js.map +1 -1
  30. package/dist/components/hds/code-editor/index.js.map +1 -1
  31. package/dist/components/hds/copy/button/index.js.map +1 -1
  32. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  33. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  34. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  35. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  36. package/dist/components/hds/flyout/index.js.map +1 -1
  37. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  38. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  39. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  40. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  41. package/dist/components/hds/form/text-input/field.js.map +1 -1
  42. package/dist/components/hds/interactive/index.js.map +1 -1
  43. package/dist/components/hds/modal/index.js.map +1 -1
  44. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  45. package/dist/components/hds/pagination/info/index.js.map +1 -1
  46. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  47. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  48. package/dist/components/hds/side-nav/index.js.map +1 -1
  49. package/dist/components/hds/side-nav/list/index.js.map +1 -1
  50. package/dist/components/hds/side-nav/portal/target.js.map +1 -1
  51. package/dist/components/hds/stepper/list/index.js.map +1 -1
  52. package/dist/components/hds/stepper/nav/index.js.map +1 -1
  53. package/dist/components/hds/table/index.js.map +1 -1
  54. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  55. package/dist/components/hds/table/th-selectable.js.map +1 -1
  56. package/dist/components/hds/tabs/index.js.map +1 -1
  57. package/dist/components/hds/tag/index.js.map +1 -1
  58. package/dist/components/hds/theme-context/index.js +45 -0
  59. package/dist/components/hds/theme-context/index.js.map +1 -0
  60. package/dist/components/hds/theme-context/types.js +27 -0
  61. package/dist/components/hds/theme-context/types.js.map +1 -0
  62. package/dist/components/hds/theme-switcher/index.js +100 -0
  63. package/dist/components/hds/theme-switcher/index.js.map +1 -0
  64. package/dist/components/hds/time/index.js.map +1 -1
  65. package/dist/components/hds/time/range.js.map +1 -1
  66. package/dist/components.js +2 -0
  67. package/dist/components.js.map +1 -1
  68. package/dist/helpers/hds-t.js.map +1 -1
  69. package/dist/modifiers/hds-code-editor.js.map +1 -1
  70. package/dist/services/hds-intl.js.map +1 -1
  71. package/dist/services/hds-theming.js +214 -0
  72. package/dist/services/hds-theming.js.map +1 -0
  73. package/dist/services/hds-time.js.map +1 -1
  74. package/dist/services.js +1 -1
  75. package/dist/styles/@hashicorp/design-system-components-common.css +9588 -0
  76. package/dist/styles/@hashicorp/design-system-components-common.css.map +1 -0
  77. package/dist/styles/@hashicorp/design-system-components-common.scss +24 -0
  78. package/dist/styles/@hashicorp/design-system-components.css +501 -320
  79. package/dist/styles/@hashicorp/design-system-components.css.map +1 -0
  80. package/dist/styles/@hashicorp/design-system-components.scss +4 -62
  81. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +229 -0
  82. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +1 -0
  83. package/dist/styles/components/badge-count.scss +26 -76
  84. package/dist/styles/components/badge.scss +26 -131
  85. package/dist/styles/components/button.scss +5 -0
  86. package/dist/styles/components/dropdown.scss +3 -5
  87. package/dist/styles/components/form/file-input.scss +2 -2
  88. package/dist/styles/components/form/key-value-inputs.scss +2 -4
  89. package/dist/styles/components/index.scss +52 -0
  90. package/dist/styles/components/theme-context.scss +12 -0
  91. package/dist/styles/mixins/_button.scss +82 -129
  92. package/dist/styles/mixins/_carbonization.scss +31 -0
  93. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  94. package/dist/utils/hds-aria-described-by.js.map +1 -1
  95. package/package.json +10 -6
  96. 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
+ }