@hashicorp/design-system-components 5.2.0-rc-20260108162959 → 5.2.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 (42) hide show
  1. package/declarations/components.d.ts +0 -2
  2. package/declarations/services.d.ts +0 -1
  3. package/declarations/template-registry.d.ts +0 -6
  4. package/dist/components.js +0 -2
  5. package/dist/components.js.map +1 -1
  6. package/dist/services.js +1 -1
  7. package/dist/styles/@hashicorp/design-system-components.css +320 -501
  8. package/dist/styles/@hashicorp/design-system-components.scss +62 -4
  9. package/dist/styles/@hashicorp/design-system-components.scss.map +1 -0
  10. package/dist/styles/components/badge-count.scss +76 -26
  11. package/dist/styles/components/badge.scss +131 -26
  12. package/dist/styles/components/button.scss +0 -5
  13. package/dist/styles/components/dropdown.scss +5 -3
  14. package/dist/styles/components/form/file-input.scss +2 -2
  15. package/dist/styles/components/form/key-value-inputs.scss +4 -2
  16. package/dist/styles/mixins/_button.scss +129 -82
  17. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  18. package/package.json +4 -8
  19. package/declarations/components/hds/theme-context/index.d.ts +0 -24
  20. package/declarations/components/hds/theme-context/types.d.ts +0 -19
  21. package/declarations/components/hds/theme-switcher/index.d.ts +0 -43
  22. package/declarations/services/hds-theming.d.ts +0 -57
  23. package/dist/_app_/components/hds/theme-context.js +0 -1
  24. package/dist/_app_/components/hds/theme-switcher.js +0 -1
  25. package/dist/_app_/services/hds-theming.js +0 -1
  26. package/dist/components/hds/theme-context/index.js +0 -45
  27. package/dist/components/hds/theme-context/index.js.map +0 -1
  28. package/dist/components/hds/theme-context/types.js +0 -27
  29. package/dist/components/hds/theme-context/types.js.map +0 -1
  30. package/dist/components/hds/theme-switcher/index.js +0 -100
  31. package/dist/components/hds/theme-switcher/index.js.map +0 -1
  32. package/dist/services/hds-theming.js +0 -214
  33. package/dist/services/hds-theming.js.map +0 -1
  34. package/dist/styles/@hashicorp/design-system-components-common.css +0 -9588
  35. package/dist/styles/@hashicorp/design-system-components-common.css.map +0 -1
  36. package/dist/styles/@hashicorp/design-system-components-common.scss +0 -24
  37. package/dist/styles/@hashicorp/design-system-components.css.map +0 -1
  38. package/dist/styles/@hashicorp/design-system-power-select-overrides.css +0 -229
  39. package/dist/styles/@hashicorp/design-system-power-select-overrides.css.map +0 -1
  40. package/dist/styles/components/index.scss +0 -52
  41. package/dist/styles/components/theme-context.scss +0 -12
  42. package/dist/styles/mixins/_carbonization.scss +0 -31
@@ -6,11 +6,60 @@
6
6
  @use "sass:map";
7
7
 
8
8
  $hds-button-sizes: ("small", "medium", "large");
9
+ $hds-button-border-radius: var(--token-border-radius-small);
10
+ $hds-button-border-width: 1px;
11
+ $hds-button-focus-border-width: 3px;
12
+
13
+ // these values later may come from the design tokens
14
+ $hds-button-size-props: (
15
+ "small": (
16
+ // 13px = 0.8125rem
17
+ "font-size": 0.8125rem,
18
+ // 14px = 0.875rem; we need to make it even (so we set it slighly larger than the font-size; notice: in Figma is 12px but this would cut some ascendants/descendants)
19
+ "line-height": 0.875rem,
20
+ // 28px = 1.75rem
21
+ "min-height": 1.75rem,
22
+ // 6px = 0.375rem; here we're taking into account the 1px border
23
+ "padding-vertical": 0.375rem,
24
+ // 11px = 0.6875rem; here we're taking into account the 1px border
25
+ "padding-horizontal": 0.6875rem,
26
+ // 12px = 0.75rem
27
+ "icon-size": 0.75rem,
28
+ ),
29
+ "medium": (
30
+ // 14px = 0.875rem
31
+ "font-size": 0.875rem,
32
+ // 16px = 1rem
33
+ "line-height": 1rem,
34
+ // 36px = 2.25rem
35
+ "min-height": 2.25rem,
36
+ // 9px = 0.5625rem; here we're taking into account the 1px border
37
+ "padding-vertical": 0.5625rem,
38
+ // 15px = 0.9375rem; here we're taking into account the 1px border
39
+ "padding-horizontal": 0.9375rem,
40
+ // 16px
41
+ "icon-size": 1rem,
42
+ ),
43
+ "large": (
44
+ // 16px = 1rem
45
+ "font-size": 1rem,
46
+ // 24px = 1.5rem
47
+ "line-height": 1.5rem,
48
+ // 48px = 3rem
49
+ "min-height": 3rem,
50
+ // 11px = 0.6875rem; here we're taking into account the 1px border
51
+ "padding-vertical": 0.6875rem,
52
+ // 19px = 1.1875rem; here we're taking into account the 1px border
53
+ "padding-horizontal": 1.1875rem,
54
+ // 24px = 1.5rem
55
+ "icon-size": 1.5rem,
56
+ ),
57
+ );
9
58
 
10
59
  @mixin hds-button() {
11
60
  position: relative;
12
61
  display: flex;
13
- gap: var(--token-button-gap);
62
+ gap: 0.375rem;
14
63
  align-items: center;
15
64
  justify-content: center;
16
65
  width: auto;
@@ -22,17 +71,17 @@ $hds-button-sizes: ("small", "medium", "large");
22
71
  font-weight: var(--token-typography-font-weight-regular);
23
72
  font-family: var(--token-typography-font-stack-text);
24
73
  text-decoration: none;
25
- border: var(--token-button-border-width) solid transparent; // We need this to be transparent for a11y
26
- border-radius: var(--token-button-border-radius);
74
+ border: $hds-button-border-width solid transparent; // We need this to be transparent for a11y
75
+ border-radius: $hds-button-border-radius;
27
76
  outline-style: solid; // used to avoid double outline+focus-ring in Safari (see https://github.com/hashicorp/design-system-components/issues/161#issuecomment-1031548656)
28
77
  outline-color: transparent; // We need this to be transparent for a11y
29
78
  isolation: isolate;
30
79
  }
31
80
 
32
81
  @mixin hds-button-state-disabled() {
33
- color: var(--token-button-foreground-color-disabled);
34
- background-color: var(--token-button-surface-color-disabled);
35
- border-color: var(--token-button-border-color-disabled);
82
+ color: var(--token-color-foreground-disabled);
83
+ background-color: var(--token-color-surface-faint);
84
+ border-color: var(--token-color-border-primary);
36
85
  box-shadow: none;
37
86
  cursor: not-allowed;
38
87
  }
@@ -43,60 +92,58 @@ $hds-button-sizes: ("small", "medium", "large");
43
92
  &::before {
44
93
  // the position absolute of an element is computed from the inside of the border of the container
45
94
  // so we have to take in account the border width of the pseudo-element container itself
46
- $shift: calc(-1 * (var(--token-button-border-width) + var(--token-button-focus-border-width)));
47
- $radius: calc(var(--token-button-border-radius) + var(--token-button-focus-border-width));
95
+ $shift: $hds-button-border-width + $hds-button-focus-border-width;
48
96
  position: absolute;
49
- top: $shift;
50
- right: $shift;
51
- bottom: $shift;
52
- left: $shift;
97
+ top: -$shift;
98
+ right: -$shift;
99
+ bottom: -$shift;
100
+ left: -$shift;
53
101
  z-index: -1;
54
- border: var(--token-button-focus-border-width) solid transparent;
55
- border-radius: $radius;
102
+ border: $hds-button-focus-border-width solid transparent;
103
+ border-radius: calc(#{$hds-button-border-radius} + #{$hds-button-focus-border-width});
56
104
  content: "";
57
105
  }
58
106
  }
59
107
 
60
108
  @mixin hds-button-color-primary() {
61
- color: var(--token-button-foreground-color-primary-default);
62
- background-color: var(--token-button-surface-color-primary-default);
63
- border-color: var(--token-button-border-color-primary-default);
109
+ color: var(--token-color-foreground-high-contrast);
110
+ background-color: var(--token-color-palette-blue-200);
111
+ border-color: var(--token-color-palette-blue-300);
64
112
  box-shadow: var(--token-elevation-low-box-shadow);
65
113
 
66
114
  &:hover,
67
115
  &.mock-hover {
68
- color: var(--token-button-foreground-color-primary-hover);
69
- background-color: var(--token-button-surface-color-primary-hover);
70
- border-color: var(--token-button-border-color-primary-hover);
116
+ color: var(--token-color-foreground-high-contrast);
117
+ background-color: var(--token-color-palette-blue-300);
118
+ border-color: var(--token-color-palette-blue-400);
71
119
  cursor: pointer;
72
120
  }
73
121
 
74
122
  &:focus,
75
123
  &.mock-focus {
76
- color: var(--token-button-foreground-color-primary-focus);
77
- background-color: var(--token-button-surface-color-primary-focus);
78
- border-color: var(--token-button-border-color-primary-focus-internal);
124
+ color: var(--token-color-foreground-high-contrast);
125
+ background-color: var(--token-color-palette-blue-200);
126
+ border-color: var(--token-color-focus-action-internal);
79
127
 
80
128
  &::before {
81
129
  // the position absolute of an element is computed from the inside of the border of the container
82
130
  // so we have to take in account the border width of the pseudo-element container itself
83
131
  // plus for the primary button we want to have a 2px gap between the button and the focus
84
- $shift: calc(-1 * (var(--token-button-border-width) + var(--token-button-focus-border-width) + 2px));
85
- $radius: calc(var(--token-button-border-radius) + var(--token-button-focus-border-width) + 2px);
86
- top: $shift;
87
- right: $shift;
88
- bottom: $shift;
89
- left: $shift;
90
- border-color: var(--token-button-border-color-primary-focus-external);
91
- border-radius: $radius;
132
+ $shift: $hds-button-border-width + $hds-button-focus-border-width + 2px;
133
+ top: -$shift;
134
+ right: -$shift;
135
+ bottom: -$shift;
136
+ left: -$shift;
137
+ border-color: var(--token-color-focus-action-external);
138
+ border-radius: calc(#{$hds-button-border-radius} + #{$hds-button-focus-border-width} + 2px);
92
139
  }
93
140
  }
94
141
 
95
142
  &:active,
96
143
  &.mock-active {
97
- color: var(--token-button-foreground-color-primary-active);
98
- background-color: var(--token-button-surface-color-primary-active);
99
- border-color: var(--token-button-border-color-primary-active);
144
+ color: var(--token-color-foreground-high-contrast);
145
+ background-color: var(--token-color-palette-blue-400);
146
+ border-color: var(--token-color-palette-blue-400);
100
147
  box-shadow: none;
101
148
 
102
149
  &::before {
@@ -106,35 +153,35 @@ $hds-button-sizes: ("small", "medium", "large");
106
153
  }
107
154
 
108
155
  @mixin hds-button-color-secondary() {
109
- color: var(--token-button-foreground-color-secondary-default);
110
- background-color: var(--token-button-surface-color-secondary-default);
111
- border-color: var(--token-button-border-color-secondary-default);
156
+ color: var(--token-color-foreground-primary);
157
+ background-color: var(--token-color-surface-faint);
158
+ border-color: var(--token-color-border-strong);
112
159
  box-shadow: var(--token-elevation-low-box-shadow);
113
160
 
114
161
  &:hover,
115
162
  &.mock-hover {
116
- color: var(--token-button-foreground-color-secondary-hover);
117
- background-color: var(--token-button-surface-color-secondary-hover);
118
- border-color: var(--token-button-border-color-secondary-hover);
163
+ color: var(--token-color-foreground-primary);
164
+ background-color: var(--token-color-surface-primary);
165
+ border-color: var(--token-color-border-strong);
119
166
  cursor: pointer;
120
167
  }
121
168
 
122
169
  &:focus,
123
170
  &.mock-focus {
124
- color: var(--token-button-foreground-color-secondary-focus);
125
- background-color: var(--token-button-surface-color-secondary-focus);
126
- border-color: var(--token-button-border-color-secondary-focus-internal);
171
+ color: var(--token-color-foreground-primary);
172
+ background-color: var(--token-color-surface-faint);
173
+ border-color: var(--token-color-focus-action-internal);
127
174
 
128
175
  &::before {
129
- border-color: var(--token-button-border-color-secondary-focus-external);
176
+ border-color: var(--token-color-focus-action-external);
130
177
  }
131
178
  }
132
179
 
133
180
  &:active,
134
181
  &.mock-active {
135
- color: var(--token-button-foreground-color-secondary-active);
136
- background-color: var(--token-button-surface-color-secondary-active);
137
- border-color: var(--token-button-border-color-secondary-active);
182
+ color: var(--token-color-foreground-primary);
183
+ background-color: var(--token-color-surface-interactive-active);
184
+ border-color: var(--token-color-border-strong);
138
185
  box-shadow: none;
139
186
 
140
187
  &::before {
@@ -144,34 +191,33 @@ $hds-button-sizes: ("small", "medium", "large");
144
191
  }
145
192
 
146
193
  @mixin hds-button-color-tertiary() {
147
- color: var(--token-button-foreground-color-tertiary-default);
148
- background-color: var(--token-button-surface-color-tertiary-default);
149
- border-color: var(--token-button-border-color-tertiary-default);
194
+ color: var(--token-color-foreground-action);
195
+ background-color: transparent;
196
+ border-color: transparent;
150
197
 
151
198
  &:hover,
152
199
  &.mock-hover {
153
- color: var(--token-button-foreground-color-tertiary-hover);
154
- background-color: var(--token-button-surface-color-tertiary-hover);
155
- border-color: var(--token-button-border-color-tertiary-hover);
200
+ color: var(--token-color-foreground-action-hover);
201
+ background-color: var(--token-color-surface-primary);
202
+ border-color: var(--token-color-border-strong);
156
203
  cursor: pointer;
157
204
  }
158
205
 
159
206
  &:focus,
160
207
  &.mock-focus {
161
- color: var(--token-button-foreground-color-tertiary-focus);
162
- background-color: var(--token-button-surface-color-tertiary-focus);
163
- border-color: var(--token-button-border-color-tertiary-focus-internal);
208
+ color: var(--token-color-foreground-action);
209
+ border-color: var(--token-color-focus-action-internal);
164
210
 
165
211
  &::before {
166
- border-color: var(--token-button-border-color-tertiary-focus-external);
212
+ border-color: var(--token-color-focus-action-external);
167
213
  }
168
214
  }
169
215
 
170
216
  &:active,
171
217
  &.mock-active {
172
- color: var(--token-button-foreground-color-tertiary-active);
173
- background-color: var(--token-button-surface-color-tertiary-active);
174
- border-color: var(--token-button-border-color-tertiary-active);
218
+ color: var(--token-color-foreground-action-active);
219
+ background-color: var(--token-color-surface-interactive-active);
220
+ border-color: var(--token-color-border-strong);
175
221
  box-shadow: none;
176
222
 
177
223
  &::before {
@@ -203,35 +249,35 @@ $hds-button-sizes: ("small", "medium", "large");
203
249
  }
204
250
 
205
251
  @mixin hds-button-color-critical() {
206
- color: var(--token-button-foreground-color-critical-default);
207
- background-color: var(--token-button-surface-color-critical-default);
208
- border-color: var(--token-button-border-color-critical-default);
252
+ color: var(--token-color-foreground-critical-on-surface);
253
+ background-color: var(--token-color-surface-critical);
254
+ border-color: var(--token-color-foreground-critical-on-surface);
209
255
  box-shadow: var(--token-elevation-low-box-shadow);
210
256
 
211
257
  &:hover,
212
258
  &.mock-hover {
213
- color: var(--token-button-foreground-color-critical-hover);
214
- background-color: var(--token-button-surface-color-critical-hover);
215
- border-color: var(--token-button-border-color-critical-hover);
259
+ color: var(--token-color-foreground-high-contrast);
260
+ background-color: var(--token-color-palette-red-300);
261
+ border-color: var(--token-color-palette-red-400);
216
262
  cursor: pointer;
217
263
  }
218
264
 
219
265
  &:focus,
220
266
  &.mock-focus {
221
- color: var(--token-button-foreground-color-critical-focus);
222
- background-color: var(--token-button-surface-color-critical-focus);
223
- border-color: var(--token-button-border-color-critical-focus-internal);
267
+ color: var(--token-color-foreground-critical-on-surface);
268
+ background-color: var(--token-color-surface-critical);
269
+ border-color: var(--token-color-focus-critical-internal);
224
270
 
225
271
  &::before {
226
- border-color: var(--token-button-border-color-critical-focus-external);
272
+ border-color: var(--token-color-focus-critical-external);
227
273
  }
228
274
  }
229
275
 
230
276
  &:active,
231
277
  &.mock-active {
232
- color: var(--token-button-foreground-color-critical-active);
233
- background-color: var(--token-button-surface-color-critical-active);
234
- border-color: var(--token-button-border-color-critical-active);
278
+ color: var(--token-color-foreground-high-contrast);
279
+ background-color: var(--token-color-palette-red-400);
280
+ border-color: var(--token-color-palette-red-400);
235
281
  box-shadow: none;
236
282
 
237
283
  &::before {
@@ -243,24 +289,25 @@ $hds-button-sizes: ("small", "medium", "large");
243
289
  @mixin hds-button-size-classes($blockName) {
244
290
  @each $size in $hds-button-sizes {
245
291
  .#{$blockName}--size-#{$size} {
246
- min-height: var(--token-button-height-#{$size});
247
- padding: var(--token-button-padding-vertical-#{$size}) var(--token-button-padding-horizontal-#{$size});
292
+ min-height: map.get($hds-button-size-props, $size, "min-height");
293
+ padding: map.get($hds-button-size-props, $size, "padding-vertical")
294
+ map.get($hds-button-size-props, $size, "padding-horizontal");
248
295
 
249
296
  .#{$blockName}__icon {
250
- width: var(--token-button-icon-size-#{$size});
251
- height: var(--token-button-icon-size-#{$size});
297
+ width: map.get($hds-button-size-props, $size, "icon-size");
298
+ height: map.get($hds-button-size-props, $size, "icon-size");
252
299
  }
253
300
 
254
301
  .#{$blockName}__text {
255
- font-size: var(--token-button-typography-font-size-#{$size});
256
- line-height: var(--token-button-typography-line-height-#{$size});
302
+ font-size: map.get($hds-button-size-props, $size, "font-size");
303
+ line-height: map.get($hds-button-size-props, $size, "line-height");
257
304
  }
258
305
 
259
306
  &.#{$blockName}--is-icon-only {
260
307
  // overrides to have the icon-only button squared
261
- min-width: var(--token-button-height-#{$size});
262
- padding-right: var(--token-button-padding-vertical-#{$size});
263
- padding-left: var(--token-button-padding-vertical-#{$size});
308
+ min-width: map.get($hds-button-size-props, $size, "min-height");
309
+ padding-right: map.get($hds-button-size-props, $size, "padding-vertical");
310
+ padding-left: map.get($hds-button-size-props, $size, "padding-vertical");
264
311
  }
265
312
  }
266
313
  }
@@ -35,7 +35,7 @@ $hds-interactive-dark-theme-focus-ring-action-box-shadow:
35
35
  // general dark theme tokens
36
36
  color: var(--token-color-foreground-high-contrast);
37
37
  background-color: var(--token-color-palette-neutral-700);
38
- border-radius: var(--token-button-border-radius);
38
+ border-radius: $hds-button-border-radius; // We don't have a button border-radius token so we use the button mixin sass variable
39
39
  }
40
40
 
41
41
  // Hover:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hashicorp/design-system-components",
3
- "version": "5.2.0-rc-20260108162959",
3
+ "version": "5.2.0",
4
4
  "description": "Helios Design System Components",
5
5
  "keywords": [
6
6
  "hashicorp",
@@ -35,8 +35,8 @@
35
35
  "@embroider/macros": "^1.18.1",
36
36
  "@embroider/util": "^1.13.4",
37
37
  "@floating-ui/dom": "^1.6.12",
38
- "@hashicorp/design-system-tokens": "4.0.0-rc-20260108162959",
39
- "@hashicorp/flight-icons": "4.1.1-rc-20260108162959",
38
+ "@hashicorp/design-system-tokens": "^3.0.0",
39
+ "@hashicorp/flight-icons": "^4.1.1",
40
40
  "@lezer/highlight": "^1.2.1",
41
41
  "@nullvoxpopuli/ember-composable-helpers": "^5.2.11",
42
42
  "clipboard-polyfill": "^4.1.1",
@@ -341,8 +341,6 @@
341
341
  "./components/hds/text/code.js": "./dist/_app_/components/hds/text/code.js",
342
342
  "./components/hds/text/display.js": "./dist/_app_/components/hds/text/display.js",
343
343
  "./components/hds/text.js": "./dist/_app_/components/hds/text.js",
344
- "./components/hds/theme-context.js": "./dist/_app_/components/hds/theme-context.js",
345
- "./components/hds/theme-switcher.js": "./dist/_app_/components/hds/theme-switcher.js",
346
344
  "./components/hds/time.js": "./dist/_app_/components/hds/time.js",
347
345
  "./components/hds/time/range.js": "./dist/_app_/components/hds/time/range.js",
348
346
  "./components/hds/time/single.js": "./dist/_app_/components/hds/time/single.js",
@@ -371,7 +369,6 @@
371
369
  "./modifiers/hds-register-event.js": "./dist/_app_/modifiers/hds-register-event.js",
372
370
  "./modifiers/hds-tooltip.js": "./dist/_app_/modifiers/hds-tooltip.js",
373
371
  "./services/hds-intl.js": "./dist/_app_/services/hds-intl.js",
374
- "./services/hds-theming.js": "./dist/_app_/services/hds-theming.js",
375
372
  "./services/hds-time.js": "./dist/_app_/services/hds-time.js"
376
373
  }
377
374
  },
@@ -419,7 +416,6 @@
419
416
  "lint:js": "eslint . --cache",
420
417
  "lint:js:fix": "eslint . --fix",
421
418
  "lint:types": "glint",
422
- "start": "rollup --config --watch --environment development",
423
- "test:dist-files": "node scripts/check-dist-files.js"
419
+ "start": "rollup --config --watch --environment development"
424
420
  }
425
421
  }
@@ -1,24 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
- import Component from '@glimmer/component';
6
- import type Owner from '@ember/owner';
7
- import type { HdsThemeContexts } from './types.ts';
8
- import type { HdsThemes, HdsModes } from '../../../services/hds-theming.ts';
9
- export interface HdsThemeContextSignature {
10
- Args: {
11
- context: HdsThemeContexts;
12
- };
13
- Blocks: {
14
- default: [];
15
- };
16
- Element: HTMLElement;
17
- }
18
- export declare const CONTEXTUAL_THEMES: HdsThemes[];
19
- export declare const CONTEXTUAL_MODES: HdsModes[];
20
- export declare const CONTEXTUAL_VALUES: HdsThemeContexts[];
21
- export default class HdsThemeContext extends Component<HdsThemeContextSignature> {
22
- constructor(owner: Owner, args: HdsThemeContextSignature['Args']);
23
- get classNames(): string;
24
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
- import { HdsThemeValues, HdsModesLightValues, HdsModesDarkValues } from '../../../services/hds-theming.ts';
6
- import type { HdsThemes, HdsModes } from '../../../services/hds-theming.ts';
7
- export declare const HdsThemeContextThemesValues: {
8
- readonly Default: HdsThemeValues.Default;
9
- readonly System: HdsThemeValues.System;
10
- readonly Light: HdsThemeValues.Light;
11
- readonly Dark: HdsThemeValues.Dark;
12
- };
13
- export declare const HdsThemeContextModesValues: {
14
- readonly CdsG0: HdsModesLightValues.CdsG0;
15
- readonly CdsG10: HdsModesLightValues.CdsG10;
16
- readonly CdsG90: HdsModesDarkValues.CdsG90;
17
- readonly CdsG100: HdsModesDarkValues.CdsG100;
18
- };
19
- export type HdsThemeContexts = HdsThemes | Exclude<HdsModes, 'default'>;
@@ -1,43 +0,0 @@
1
- /**
2
- * Copyright (c) HashiCorp, Inc.
3
- * SPDX-License-Identifier: MPL-2.0
4
- */
5
- import Component from '@glimmer/component';
6
- import type { HdsDropdownSignature } from '../dropdown/index.ts';
7
- import type { HdsDropdownToggleButtonSignature } from '../dropdown/toggle/button.ts';
8
- import type { HdsIconSignature } from '../icon/index.ts';
9
- import type HdsThemingService from '../../../services/hds-theming.ts';
10
- import type { HdsThemes, HdsOnSetThemeCallback } from '../../../services/hds-theming.ts';
11
- interface ThemeOption {
12
- theme: HdsThemes | undefined;
13
- icon: HdsIconSignature['Args']['name'];
14
- label: string;
15
- }
16
- export interface HdsThemeSwitcherSignature {
17
- Args: {
18
- toggleSize?: HdsDropdownToggleButtonSignature['Args']['size'];
19
- toggleIsFullWidth?: HdsDropdownToggleButtonSignature['Args']['isFullWidth'];
20
- hasDefaultOption?: boolean;
21
- hasSystemOption?: boolean;
22
- onSetTheme?: HdsOnSetThemeCallback;
23
- };
24
- Element: HdsDropdownSignature['Element'];
25
- }
26
- export default class HdsThemeSwitcher extends Component<HdsThemeSwitcherSignature> {
27
- readonly hdsTheming: HdsThemingService;
28
- get toggleSize(): "small" | "medium";
29
- get toggleIsFullWidth(): boolean;
30
- get toggleContent(): {
31
- label: string;
32
- icon: "type" | "map" | "filter" | "code" | "link" | "menu" | "search" | "video" | "circle" | "image" | "path" | "tag" | "repeat" | "hash" | "queue" | "shuffle" | "chevron-up" | "chevron-down" | "unfold-open" | "unfold-close" | "arrow-down" | "arrow-up" | "swap-vertical" | "top" | "key" | "move" | "change" | "pause" | "play" | "move-horizontal" | "loading" | "loading-static" | "running" | "running-static" | "apple" | "apple-color" | "alibaba" | "alibaba-color" | "amazon-ecs" | "amazon-ecs-color" | "amazon-eks" | "amazon-eks-color" | "ansible-community" | "ansible-community-color" | "ansible-automation-platform" | "ansible-automation-platform-color" | "auth0" | "auth0-color" | "aws" | "aws-color" | "aws-cdk" | "aws-cdk-color" | "aws-cloudwatch" | "aws-cloudwatch-color" | "aws-ec2" | "aws-ec2-color" | "aws-lambda" | "aws-lambda-color" | "aws-s3" | "aws-s3-color" | "azure" | "azure-color" | "azure-aks" | "azure-aks-color" | "azure-blob-storage" | "azure-blob-storage-color" | "azure-devops" | "azure-devops-color" | "azure-vms" | "azure-vms-color" | "bitbucket" | "bitbucket-color" | "bridgecrew" | "bridgecrew-color" | "cisco" | "cisco-color" | "codepen" | "codepen-color" | "confluence" | "confluence-color" | "confluent" | "confluent-color" | "datadog" | "datadog-color" | "digital-ocean" | "digital-ocean-color" | "docker" | "docker-color" | "duo" | "duo-color" | "elastic-observability" | "elastic-observability-color" | "f5" | "f5-color" | "facebook" | "facebook-color" | "figma" | "figma-color" | "gcp" | "gcp-color" | "git" | "git-color" | "gitlab" | "gitlab-color" | "github" | "github-color" | "google" | "google-color" | "google-docs" | "google-docs-color" | "google-drive" | "google-drive-color" | "google-forms" | "google-forms-color" | "google-sheets" | "google-sheets-color" | "google-slides" | "google-slides-color" | "grafana" | "grafana-color" | "helm" | "helm-color" | "infracost" | "infracost-color" | "jenkins" | "jenkins-color" | "jfrog" | "jfrog-color" | "jira" | "jira-color" | "jwt" | "jwt-color" | "kubernetes" | "kubernetes-color" | "lightlytics" | "lightlytics-color" | "linkedin" | "linkedin-color" | "linode" | "linode-color" | "linux" | "linux-color" | "loom" | "loom-color" | "meetup" | "meetup-color" | "microsoft" | "microsoft-color" | "microsoft-teams" | "microsoft-teams-color" | "minio" | "minio-color" | "mongodb" | "mongodb-color" | "new-relic" | "new-relic-color" | "okta" | "okta-color" | "oracle" | "oracle-color" | "opa" | "opa-color" | "openid" | "openid-color" | "openstack" | "openstack-color" | "pack" | "pack-color" | "pager-duty" | "pager-duty-color" | "ping-identity " | "ping-identity-color" | "postgres" | "postgres-color" | "rabbitmq" | "rabbitmq-color" | "saml" | "saml-color" | "service-now" | "service-now-color" | "slack" | "slack-color" | "snyk" | "snyk-color" | "splunk" | "splunk-color" | "twilio" | "twilio-color" | "twitch" | "twitch-color" | "twitter" | "twitter-color" | "twitter-x" | "twitter-x-color" | "vantage" | "vantage-color" | "venafi" | "venafi-color" | "vercel" | "vercel-color" | "vmware" | "vmware-color" | "youtube" | "youtube-color" | "boundary" | "boundary-color" | "boundary-fill" | "boundary-fill-color" | "boundary-square" | "boundary-square-color" | "consul" | "consul-color" | "consul-fill" | "consul-fill-color" | "consul-square" | "consul-square-color" | "nomad" | "nomad-color" | "nomad-fill" | "nomad-fill-color" | "nomad-square" | "nomad-square-color" | "packer" | "packer-color" | "packer-fill" | "packer-fill-color" | "packer-square" | "packer-square-color" | "terraform" | "terraform-color" | "terraform-fill" | "terraform-fill-color" | "terraform-square" | "terraform-square-color" | "vagrant" | "vagrant-color" | "vagrant-fill" | "vagrant-fill-color" | "vagrant-square" | "vagrant-square-color" | "vault" | "vault-color" | "vault-fill" | "vault-fill-color" | "vault-square" | "vault-square-color" | "vault-radar" | "vault-radar-color" | "vault-radar-fill" | "vault-radar-fill-color" | "vault-radar-square" | "vault-radar-square-color" | "vault-secrets" | "vault-secrets-color" | "vault-secrets-fill" | "vault-secrets-fill-color" | "vault-secrets-square" | "vault-secrets-square-color" | "waypoint" | "waypoint-color" | "waypoint-fill" | "waypoint-fill-color" | "waypoint-square" | "waypoint-square-color" | "hashicorp" | "hashicorp-color" | "hashicorp-fill" | "hashicorp-fill-color" | "hashicorp-square" | "hashicorp-square-color" | "hcp" | "hcp-color" | "hcp-fill" | "hcp-fill-color" | "hcp-square" | "hcp-square-color" | "accessibility" | "folder-users" | "frown" | "identity-service" | "identity-user" | "meh" | "robot" | "smile" | "user" | "user-check" | "user-circle" | "user-circle-fill" | "user-minus" | "user-plus" | "user-x" | "users" | "ampersand" | "beaker" | "bucket" | "bulb" | "circle-dot" | "circle-fill" | "circle-half" | "diamond" | "diamond-fill" | "disc" | "dot" | "dot-half" | "droplet" | "flag" | "gift" | "government" | "handshake" | "hexagon" | "hexagon-fill" | "labyrinth" | "layers" | "moon" | "octagon" | "outline" | "random" | "rocket" | "sparkle" | "square" | "square-fill" | "sun" | "triangle" | "triangle-fill" | "truck" | "wand" | "zap" | "zap-off" | "docs" | "docs-download" | "docs-link" | "guide" | "guide-link" | "help" | "info" | "info-fill" | "learn" | "learn-link" | "support" | "alert-circle" | "alert-circle-fill" | "alert-diamond" | "alert-diamond-fill" | "alert-octagon" | "alert-octagon-fill" | "alert-triangle" | "alert-triangle-fill" | "check" | "check-circle" | "check-circle-fill" | "check-diamond" | "check-diamond-fill" | "check-hexagon" | "check-hexagon-fill" | "check-square" | "check-square-fill" | "skip" | "x" | "x-circle" | "x-circle-fill" | "x-diamond" | "x-diamond-fill" | "x-hexagon" | "x-hexagon-fill" | "x-square" | "x-square-fill" | "bug" | "certificate" | "eye" | "eye-off" | "fingerprint" | "keychain" | "lock" | "lock-fill" | "lock-off" | "shield" | "shield-alert" | "shield-check" | "shield-off" | "shield-x" | "token" | "unlock" | "verified" | "wall" | "minus" | "minus-circle" | "minus-circle-fill" | "minus-plus" | "minus-plus-circle" | "minus-plus-square" | "minus-square" | "minus-square-fill" | "plus" | "plus-circle" | "plus-circle-fill" | "plus-square" | "camera" | "camera-off" | "cast" | "closed-caption" | "fast-forward" | "film" | "headphones" | "music" | "pause-circle" | "play-circle" | "radio" | "rewind" | "rss" | "skip-back" | "skip-forward" | "speaker" | "stop-circle" | "volume" | "volume-down" | "volume-up" | "volume-x" | "wifi" | "wifi-off" | "compass" | "crosshair" | "map-pin" | "navigation" | "navigation-alt" | "redirect" | "target" | "align-center" | "align-justify" | "align-left" | "align-right" | "battery" | "battery-charging" | "bookmark" | "bookmark-add" | "bookmark-add-fill" | "bookmark-fill" | "bookmark-remove" | "bookmark-remove-fill" | "bottom" | "command" | "crop" | "dashboard" | "delete" | "download" | "edit" | "end" | "entry-point" | "exit-point" | "external-link" | "filter-circle" | "filter-fill" | "grid" | "grid-alt" | "home" | "jump-link" | "layout" | "list" | "maximize" | "maximize-alt" | "minimize" | "minimize-alt" | "more-horizontal" | "more-vertical" | "mouse-pointer" | "paperclip" | "pen-tool" | "pencil-tool" | "pin" | "pin-off" | "power" | "printer" | "reload" | "resize-column" | "rotate-cw" | "rotate-ccw" | "share" | "sidebar" | "sidebar-hide" | "sidebar-show" | "sign-in" | "sign-out" | "slash" | "slash-square" | "sort-asc" | "sort-desc" | "start" | "switcher" | "sync" | "sync-alert" | "sync-reverse" | "text-wrap" | "toggle-left" | "toggle-right" | "trash" | "upload" | "zoom-in" | "zoom-out" | "archive" | "clipboard" | "clipboard-checked" | "clipboard-copy" | "clipboard-x" | "file" | "file-change" | "file-check" | "file-diff" | "file-minus" | "file-plus" | "file-source" | "file-text" | "file-x" | "files" | "folder" | "folder-fill" | "folder-minus" | "folder-minus-fill" | "folder-plus" | "folder-plus-fill" | "folder-star" | "inbox" | "api" | "auto-apply" | "build" | "change-circle" | "change-square" | "channel" | "cloud" | "cloud-check" | "cloud-download" | "cloud-lightning" | "cloud-lock" | "cloud-off" | "cloud-upload" | "cloud-x" | "connection" | "connection-gateway" | "cpu" | "duplicate" | "gateway" | "git-branch" | "git-commit" | "git-merge" | "git-pull-request" | "git-repo" | "hammer" | "key-values" | "mainframe" | "mesh" | "module" | "monitor" | "network" | "network-alt" | "node" | "pipeline" | "plug" | "replication-direct" | "replication-perf" | "scissors" | "server" | "server-cluster" | "serverless" | "service" | "settings" | "sliders" | "smartphone" | "socket" | "step" | "tablet" | "terminal" | "terminal-screen" | "test" | "tools" | "transform-data" | "tv" | "webhook" | "wrench" | "calendar" | "clock" | "clock-filled" | "delay" | "event" | "history" | "hourglass" | "watch" | "bar-chart" | "bar-chart-alt" | "box" | "collections" | "database" | "hard-drive" | "line-chart" | "line-chart-up" | "logs" | "package" | "pie-chart" | "save" | "trend-down" | "trend-up" | "activity" | "at-sign" | "award" | "bell" | "bell-active" | "bell-active-fill" | "bell-off" | "discussion-circle" | "discussion-square" | "heart" | "heart-fill" | "heart-off" | "mail" | "mail-open" | "message-circle" | "message-circle-fill" | "message-square" | "message-square-fill" | "mic" | "mic-off" | "newspaper" | "phone" | "phone-call" | "phone-off" | "send" | "star" | "star-circle" | "star-fill" | "star-off" | "thumbs-down" | "thumbs-up" | "video-off" | "bank-vault" | "briefcase" | "credit-card" | "dollar-sign" | "enterprise" | "globe" | "globe-private" | "org" | "provider" | "shopping-bag" | "shopping-cart" | "arrow-down-circle" | "arrow-down-left" | "arrow-down-right" | "arrow-left" | "arrow-left-circle" | "arrow-right" | "arrow-right-circle" | "arrow-up-circle" | "arrow-up-left" | "arrow-up-right" | "caret" | "chevron-left" | "chevron-right" | "chevrons-down" | "chevrons-left" | "chevrons-right" | "chevrons-up" | "corner-down-left" | "corner-down-right" | "corner-left-down" | "corner-left-up" | "corner-right-down" | "corner-right-up" | "corner-up-left" | "corner-up-right" | "load-balancer" | "migrate" | "swap-horizontal";
33
- } | {
34
- label: string;
35
- icon: undefined;
36
- };
37
- get hasDefaultOption(): boolean;
38
- get hasSystemOption(): boolean;
39
- get _options(): Partial<Record<"default" | "light" | "dark" | "system", ThemeOption>>;
40
- get currentTheme(): "default" | "light" | "dark" | "system" | undefined;
41
- onSelectTheme(theme: HdsThemes | undefined): void;
42
- }
43
- export {};
@@ -1,57 +0,0 @@
1
- import Service from '@ember/service';
2
- export declare enum HdsThemeValues {
3
- Default = "default",
4
- System = "system",
5
- Light = "light",
6
- Dark = "dark"
7
- }
8
- export declare enum HdsModesBaseValues {
9
- Default = "default"
10
- }
11
- export declare enum HdsModesLightValues {
12
- CdsG0 = "cds-g0",
13
- CdsG10 = "cds-g10"
14
- }
15
- export declare enum HdsModesDarkValues {
16
- CdsG90 = "cds-g90",
17
- CdsG100 = "cds-g100"
18
- }
19
- export type HdsThemes = `${HdsThemeValues}`;
20
- export type HdsModes = `${HdsModesBaseValues}` | `${HdsModesLightValues}` | `${HdsModesDarkValues}`;
21
- export type HdsModesLight = `${HdsModesLightValues}`;
22
- export type HdsModesDark = `${HdsModesDarkValues}`;
23
- type HdsThemingOptions = {
24
- lightTheme: HdsModesLight;
25
- darkTheme: HdsModesDark;
26
- };
27
- type SetThemeArgs = {
28
- theme: HdsThemes | undefined;
29
- options?: HdsThemingOptions;
30
- onSetTheme?: HdsOnSetThemeCallback;
31
- };
32
- export type HdsOnSetThemeCallbackArgs = {
33
- currentTheme: HdsThemes | undefined;
34
- currentMode: HdsModes | undefined;
35
- };
36
- export type HdsOnSetThemeCallback = (args: HdsOnSetThemeCallbackArgs) => void;
37
- export declare const THEMES: HdsThemes[];
38
- export declare const MODES_LIGHT: HdsModesLight[];
39
- export declare const MODES_DARK: HdsModesDark[];
40
- export declare const MODES: HdsModes[];
41
- export declare const HDS_THEMING_LOCALSTORAGE_DATA = "hds-theming-data";
42
- export declare const DEFAULT_THEMING_OPTION_LIGHT_THEME = HdsModesLightValues.CdsG0;
43
- export declare const DEFAULT_THEMING_OPTION_DARK_THEME = HdsModesDarkValues.CdsG100;
44
- export default class HdsThemingService extends Service {
45
- _currentTheme: HdsThemes | undefined;
46
- _currentMode: HdsModes | undefined;
47
- _currentLightTheme: HdsModesLight;
48
- _currentDarkTheme: HdsModesDark;
49
- globalOnSetTheme: HdsOnSetThemeCallback | undefined;
50
- initializeTheme(): void;
51
- setTheme({ theme, options, onSetTheme }: SetThemeArgs): void;
52
- get currentTheme(): HdsThemes | undefined;
53
- get currentMode(): HdsModes | undefined;
54
- get currentLightTheme(): HdsModesLight;
55
- get currentDarkTheme(): HdsModesDark;
56
- }
57
- export {};
@@ -1 +0,0 @@
1
- export { default } from "@hashicorp/design-system-components/components/hds/theme-context/index";
@@ -1 +0,0 @@
1
- export { default } from "@hashicorp/design-system-components/components/hds/theme-switcher/index";
@@ -1 +0,0 @@
1
- export { default } from "@hashicorp/design-system-components/services/hds-theming";
@@ -1,45 +0,0 @@
1
- import Component from '@glimmer/component';
2
- import { assert } from '@ember/debug';
3
- import { HdsThemeContextThemesValues, HdsThemeContextModesValues } from './types.js';
4
- import { precompileTemplate } from '@ember/template-compilation';
5
- import { setComponentTemplate } from '@ember/component';
6
-
7
- var TEMPLATE = precompileTemplate("{{!\n Copyright (c) HashiCorp, Inc.\n SPDX-License-Identifier: MPL-2.0\n}}\n<div class={{this.classNames}} ...attributes>{{yield}}</div>");
8
-
9
- /**
10
- * Copyright (c) HashiCorp, Inc.
11
- * SPDX-License-Identifier: MPL-2.0
12
- */
13
-
14
- const CONTEXTUAL_THEMES = Object.values(HdsThemeContextThemesValues);
15
- const CONTEXTUAL_MODES = Object.values(HdsThemeContextModesValues);
16
- const CONTEXTUAL_VALUES = [...CONTEXTUAL_THEMES, ...CONTEXTUAL_MODES];
17
- class HdsThemeContext extends Component {
18
- constructor(owner, args) {
19
- super(owner, args);
20
- const {
21
- context
22
- } = args;
23
- assert(`@context for "Hds::ThemeContext" must be one of the following: ${CONTEXTUAL_VALUES.join(', ')}; received: ${context}`, CONTEXTUAL_VALUES.includes(context));
24
- }
25
-
26
- // Get the class names to apply to the component.
27
- get classNames() {
28
- const classes = ['hds-theme-context'];
29
- const {
30
- context
31
- } = this.args;
32
-
33
- // add "theme" or "mode" classes based on the @context arguments
34
- if (CONTEXTUAL_THEMES.includes(context)) {
35
- classes.push(`hds-theme-${context}`);
36
- } else if (CONTEXTUAL_MODES.includes(context)) {
37
- classes.push(`hds-mode-${context}`);
38
- }
39
- return classes.join(' ');
40
- }
41
- }
42
- setComponentTemplate(TEMPLATE, HdsThemeContext);
43
-
44
- export { CONTEXTUAL_MODES, CONTEXTUAL_THEMES, CONTEXTUAL_VALUES, HdsThemeContext as default };
45
- //# sourceMappingURL=index.js.map