@stream-io/video-styling 2.0.0-beta.0 → 2.0.0-beta.1

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 (90) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/css/embedded.css +2592 -1498
  3. package/dist/css/embedded.css.map +1 -1
  4. package/dist/css/styles.css +2388 -1222
  5. package/dist/css/styles.css.map +1 -1
  6. package/index.scss +4 -2
  7. package/package.json +1 -1
  8. package/project.json +1 -1
  9. package/src/AudioBlockedNotification/AudioBlockedNotification-layout.scss +9 -9
  10. package/src/AudioBlockedNotification/AudioBlockedNotification-theme.scss +6 -11
  11. package/src/Avatar/Avatar-layout.scss +21 -5
  12. package/src/Avatar/Avatar-theme.scss +33 -9
  13. package/src/Badge/Badge-layout.scss +52 -0
  14. package/src/Badge/Badge-theme.scss +39 -0
  15. package/src/Badge/index.scss +2 -0
  16. package/src/Button/Button-layout.scss +62 -89
  17. package/src/Button/Button-theme.scss +79 -144
  18. package/src/Button/CompositeButton.scss +125 -0
  19. package/src/Button/index.scss +1 -0
  20. package/src/CallControls/CallControls-layout.scss +27 -63
  21. package/src/CallControls/CancelCallButton.scss +39 -85
  22. package/src/CallLayout/LivestreamLayout-layout.scss +80 -77
  23. package/src/CallLayout/LivestreamLayout-theme.scss +23 -0
  24. package/src/CallLayout/PaginatedGridLayout-layout.scss +8 -8
  25. package/src/CallLayout/PipLayout-layout.scss +26 -20
  26. package/src/CallLayout/PipLayout-theme.scss +2 -1
  27. package/src/CallLayout/SpeakerLayout-layout.scss +13 -13
  28. package/src/CallLayout/index.scss +1 -0
  29. package/src/CallParticipantList/CallParticiantListingItem-layout.scss +6 -8
  30. package/src/CallParticipantList/CallParticiantListingItem-theme.scss +19 -17
  31. package/src/CallParticipantList/CallParticipantList-layout.scss +25 -19
  32. package/src/CallRecodingList/CallRecordingList-layout.scss +46 -27
  33. package/src/CallRecodingList/CallRecordingList-theme.scss +25 -37
  34. package/src/DeviceSettings/DeviceSettings-layout.scss +154 -69
  35. package/src/DropdownSelect/DropdownSelect.scss +62 -52
  36. package/src/Embedded/_base.scss +2 -2
  37. package/src/Embedded/call/CallLayout-layout.scss +22 -12
  38. package/src/Embedded/call/CallLayout-theme.scss +2 -2
  39. package/src/Embedded/livestream/Livestream-layout.scss +28 -41
  40. package/src/Embedded/livestream/Livestream-theme.scss +12 -34
  41. package/src/Embedded/shared/BlurToggleButton/BlurToggleButton-layout.scss +8 -20
  42. package/src/Embedded/shared/BlurToggleButton/BlurToggleButton-theme.scss +1 -19
  43. package/src/Embedded/shared/CallControls/CallControls-layout.scss +10 -11
  44. package/src/Embedded/shared/CallControls/CallControls-theme.scss +5 -7
  45. package/src/Embedded/shared/ConnectionNotification/ConnectionNotification-layout.scss +1 -1
  46. package/src/Embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.scss +2 -2
  47. package/src/Embedded/shared/ErrorScreen/ErrorScreen-layout.scss +3 -3
  48. package/src/Embedded/shared/Feedback/CallFeedback-layout.scss +21 -36
  49. package/src/Embedded/shared/Feedback/CallFeedback-theme.scss +11 -33
  50. package/src/Embedded/shared/Icons.scss +6 -8
  51. package/src/Embedded/shared/JoinError/JoinError-layout.scss +7 -3
  52. package/src/Embedded/shared/JoinError/JoinError-theme.scss +3 -3
  53. package/src/Embedded/shared/LoadingScreen/LoadingScreen-layout.scss +4 -4
  54. package/src/Embedded/shared/Lobby/Lobby-layout.scss +66 -55
  55. package/src/Embedded/shared/Lobby/Lobby-theme.scss +20 -15
  56. package/src/Icon/Icon-layout.scss +3 -2
  57. package/src/Icon/Icon-theme.scss +59 -20
  58. package/src/LoadingIndicator/LoadingIndicator-layout.scss +5 -0
  59. package/src/LoadingIndicator/LoadingIndicator-theme.scss +4 -3
  60. package/src/Menu/GenericMenu-layout.scss +56 -29
  61. package/src/Menu/Menu-theme.scss +3 -3
  62. package/src/Menu/Portal-layout.scss +1 -1
  63. package/src/Notification/Notification-layout.scss +13 -8
  64. package/src/Notification/Notification-theme.scss +8 -14
  65. package/src/ParticipantView/ParticipantView-layout.scss +80 -77
  66. package/src/ParticipantView/ParticipantView-theme.scss +28 -0
  67. package/src/ParticipantView/index.scss +1 -0
  68. package/src/Permissions/Permissions-layout.scss +16 -23
  69. package/src/Reaction/Reaction-layout.scss +3 -3
  70. package/src/RingingCall/RingingCall-layout.scss +8 -7
  71. package/src/RingingCall/RingingCall-theme.scss +17 -16
  72. package/src/ScreenShareOverlay/ScreenShareOverlay-layout.scss +6 -14
  73. package/src/ScreenShareOverlay/ScreenShareOverlay-theme.scss +6 -11
  74. package/src/Search/SearchInput-layout.scss +16 -10
  75. package/src/Search/SearchInput-theme.scss +41 -21
  76. package/src/StreamCall.scss +4 -4
  77. package/src/Tooltip/Tooltip-layout.scss +11 -3
  78. package/src/Tooltip/Tooltip-theme.scss +8 -25
  79. package/src/Video/Video-theme.scss +1 -1
  80. package/src/Video/VideoPlaceholder-layout.scss +0 -14
  81. package/src/Video/VideoPlaceholder-theme.scss +2 -13
  82. package/src/VideoPreview/VideoPreview-layout.scss +2 -3
  83. package/src/VideoPreview/VideoPreview-theme.scss +22 -15
  84. package/src/_icons.scss +56 -0
  85. package/src/_shadows.scss +13 -0
  86. package/src/_variable-tokens.scss +10 -0
  87. package/src/tokens/generated/dark.scss +167 -0
  88. package/src/tokens/generated/light.scss +853 -0
  89. package/src/CallStats.scss +0 -118
  90. package/src/_global-theme-variables.scss +0 -167
@@ -1,3 +1,11 @@
1
+ .str-video__call-recording-list__header {
2
+ display: flex;
3
+ flex-direction: row;
4
+ align-items: center;
5
+ justify-content: space-between;
6
+ gap: var(--str-video__spacing-md);
7
+ }
8
+
1
9
  .str-video__call-recording-list__list {
2
10
  display: flex;
3
11
  flex-direction: column;
@@ -7,7 +15,11 @@
7
15
 
8
16
  &:first-of-type {
9
17
  .str-video__call-recording-list__item {
10
- font-weight: 600;
18
+ background-color: var(--str-video__background-core-surface-card);
19
+ font-size: var(--str-video__typography-font-size-xs);
20
+ line-height: var(--str-video__typography-line-height-tight);
21
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
22
+ color: var(--str-video__text-secondary);
11
23
  }
12
24
  }
13
25
  }
@@ -15,46 +27,53 @@
15
27
  .str-video__call-recording-list__item {
16
28
  display: flex;
17
29
  flex-direction: row;
18
- justify-content: space-between;
19
30
  align-items: center;
20
- font-size: var(--str-video__font-size-xs);
21
- border-bottom: 1px solid var(--str-video__base-color2);
22
- padding: var(--str-video__spacing-sm) 0;
23
- gap: var(--str-video__spacing-sm);
24
-
25
- &:last-of-type {
26
- border-bottom: none;
27
- }
28
- }
29
- .str-video__call-recording-list__filename {
30
- width: 200px;
31
+ padding: var(--str-video__spacing-sm);
32
+ gap: var(--str-video__spacing-xs);
33
+ border-radius: var(--str-video__radius-lg);
34
+ font-size: var(--str-video__typography-font-size-sm);
35
+ line-height: var(--str-video__typography-line-height-normal);
36
+ font-weight: var(--str-video__typography-font-weight-regular);
37
+ color: var(--str-video__text-primary);
31
38
  }
32
39
 
40
+ .str-video__call-recording-list__filename,
33
41
  .str-video__call-recording-list__time {
34
- width: 100px;
42
+ flex: 0 1 120px;
43
+ min-width: 0;
44
+ text-overflow: ellipsis;
45
+ overflow: hidden;
35
46
  }
36
47
 
37
48
  .str-video__call-recording-list__download {
38
49
  display: flex;
39
50
  justify-content: flex-end;
40
- width: 100px;
41
- }
42
-
43
- .str-video__call-recording-list__filename,
44
- .str-video__call-recording-list__time {
45
- text-overflow: ellipsis;
46
- overflow: hidden;
51
+ flex: 0 0 var(--str-video__button-visual-height-xs);
52
+ margin-inline-start: auto;
47
53
  }
48
54
 
49
55
  .str-video__call-recording-list-item__action-button--download {
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ inline-size: var(--str-video__button-visual-height-xs);
60
+ block-size: var(--str-video__button-visual-height-xs);
61
+ padding: var(--str-video__button-padding-y-xs)
62
+ var(--str-video__button-padding-x-icon-only-xs);
63
+ border-radius: var(--str-video__button-radius-full);
64
+
50
65
  .str-video__icon--download {
51
- height: 32px;
52
- width: 32px;
66
+ height: var(--str-video__icon-size-sm);
67
+ width: var(--str-video__icon-size-sm);
68
+ background-color: var(--str-video__button-secondary-text);
53
69
  }
70
+
54
71
  &:hover {
55
- .str-video__icon--download {
56
- cursor: pointer;
57
- background-color: var(--str-video__brand-color1);
58
- }
72
+ cursor: pointer;
73
+ background-color: var(--str-video__background-utility-hover);
74
+ }
75
+
76
+ &:active {
77
+ background-color: var(--str-video__background-utility-pressed);
59
78
  }
60
79
  }
@@ -1,50 +1,38 @@
1
1
  @use '../utils';
2
2
 
3
3
  .str-video__call-recording-list__title {
4
- font-weight: 500;
5
- font-size: 1rem;
6
- line-height: 1.25rem;
4
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
5
+ font-size: var(--str-video__typography-font-size-md);
6
+ line-height: var(--str-video__typography-line-height-normal);
7
+ color: var(--str-video__text-primary);
7
8
  }
8
9
 
9
- .str-video__call-controls__button--icon-call-recordings {
10
- @include utils.apply-mask-image(
11
- var(--str-video__icon--film-roll),
12
- var(--str-video__text-color1),
13
- 2px
14
- );
15
- }
16
-
17
- .str-video__call-recordings__toggle-button--active {
18
- background-color: var(--str-video__background-color7);
19
- }
20
-
21
- .str-video__refresh-button {
22
- background-color: transparent;
23
- cursor: pointer;
24
- border-radius: 4px;
25
-
26
- &:hover {
27
- background-color: var(--str-video__background-color7);
28
- }
29
-
30
- &:active {
31
- background-color: var(--str-video__background-color5);
32
- transition: background-color 0.2s ease-out;
33
- }
34
-
35
- .str-video__refresh-button--icon {
36
- @include utils.apply-mask-image(
37
- var(--str-video__icon--refresh),
38
- var(--str-video__text-color1),
39
- contain
40
- );
41
- }
10
+ .str-video__call-recording-list__listing--empty {
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ justify-content: center;
15
+ gap: var(--str-video__spacing-sm);
16
+ padding: var(--str-video__spacing-3xl) var(--str-video__spacing-xl);
42
17
  }
43
18
 
44
19
  .str-video__call-recording-list__listing--icon-empty {
20
+ flex: 0 0 auto;
21
+ inline-size: var(--str-video__icon-size-lg);
22
+ block-size: var(--str-video__icon-size-lg);
45
23
  @include utils.apply-mask-image(
46
24
  var(--str-video__icon--film-roll),
47
- var(--str-video__text-color1),
25
+ var(--str-video__text-tertiary),
48
26
  contain
49
27
  );
50
28
  }
29
+
30
+ .str-video__call-recording-list__listing--text-empty {
31
+ margin: 0;
32
+ max-inline-size: var(--str-video__size-320);
33
+ text-align: center;
34
+ font-size: var(--str-video__typography-font-size-sm);
35
+ line-height: var(--str-video__typography-line-height-normal);
36
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
37
+ color: var(--str-video__text-primary);
38
+ }
@@ -1,14 +1,12 @@
1
1
  .str-video__device-settings__button {
2
- .str-video__call-controls__button--icon-device-settings {
3
- width: 1.25rem;
4
- height: 1.25rem;
2
+ .str-video__icon--device-settings {
3
+ width: var(--str-video__icon-size-md);
4
+ height: var(--str-video__icon-size-md);
5
5
  }
6
6
  }
7
7
 
8
8
  .str-video__device-settings {
9
- padding: 0.625rem;
10
9
  z-index: 1;
11
- font-family: 'Inter';
12
10
  }
13
11
 
14
12
  .str-video__device-settings__header {
@@ -22,112 +20,188 @@
22
20
  .str-video__icon.str-video__device-settings__settings-icon {
23
21
  height: 24px;
24
22
  width: 24px;
25
- color: var(--str-video__base-color1);
23
+ color: var(--str-video__text-primary);
26
24
  }
27
25
 
28
26
  .str-video__device-settings__close-button {
29
- color: var(--str-video__base-color1);
27
+ color: var(--str-video__text-primary);
30
28
  background-color: transparent;
31
29
  }
32
30
 
31
+ .str-video__menu-container:has(.str-video__device-settings__device-kind) {
32
+ padding-block: var(--str-video__spacing-xxs);
33
+ }
34
+
33
35
  .str-video__device-settings__device-kind {
34
- padding: var(--str-video__spacing-lg);
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: var(--str-video__spacing-xxxs);
35
39
 
36
40
  .str-video__device-settings__device-selector-title {
37
- font-size: var(--str-video__font-size-sm);
38
- font-weight: bold;
39
- line-height: 1.25rem;
40
-
41
- padding-bottom: 0.5rem;
42
- margin-bottom: var(--str-video__spacing-sm);
41
+ display: flex;
42
+ align-items: center;
43
+ min-height: 32px;
44
+ margin-inline: var(--str-video__spacing-xxs);
45
+ padding-inline: var(--str-video__spacing-xs);
46
+
47
+ color: var(--str-video__text-tertiary);
48
+ font-size: var(--str-video__typography-font-size-sm);
49
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
50
+ line-height: var(--str-video__typography-line-height-normal);
43
51
  }
44
52
 
45
53
  .str-video__option,
46
54
  .str-video__device-settings__option {
47
55
  display: flex;
48
56
  align-items: center;
49
- border-radius: var(--str-video__border-radius-lg);
50
- background-color: var(--str-video__button-primary-base);
51
- padding: var(--str-video__spacing-sm) var(--str-video__spacing-lg);
52
-
53
- gap: var(--str-video__spacing-sm);
54
-
55
- font-weight: 600;
56
- font-size: var(--str-video__font-size-sm);
57
- line-height: var(--str-video__spacing-lg);
58
-
59
- &:not(:first-of-type) {
60
- margin-top: var(--str-video__spacing-sm);
57
+ min-height: 32px;
58
+ border-radius: var(--str-video__radius-md);
59
+ margin-inline: var(--str-video__spacing-xxs);
60
+ padding-inline: var(--str-video__spacing-xs);
61
+
62
+ gap: var(--str-video__spacing-xs);
63
+
64
+ color: var(--str-video__text-primary);
65
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
66
+ font-size: var(--str-video__typography-font-size-sm);
67
+ line-height: var(--str-video__typography-line-height-normal);
68
+
69
+ &__label {
70
+ flex: 1 0 0;
71
+ min-inline-size: 0;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
61
75
  }
62
76
 
63
77
  &__icon {
64
78
  &--selected {
65
- background-color: var(--str-video__brand-color1);
79
+ background-color: var(--str-video__accent-primary);
66
80
  }
67
81
  }
68
82
 
69
83
  &:hover {
70
- background-color: var(--str-video__button-default-hover);
84
+ background-color: var(--str-video__background-utility-hover);
71
85
  cursor: pointer;
72
86
  }
73
87
 
74
- &--selected,
75
- &--active {
76
- background-color: var(--str-video__button-default-hover);
88
+ &--disabled {
89
+ color: var(--str-video__text-disabled);
90
+
91
+ &:hover {
92
+ background-color: transparent;
93
+ cursor: default;
94
+ }
77
95
  }
78
96
 
79
97
  input[type='radio'] {
98
+ appearance: none;
80
99
  margin: 0;
81
- height: 1rem;
82
- width: 1rem;
100
+ inline-size: var(--str-video__icon-size-sm);
101
+ block-size: var(--str-video__icon-size-sm);
83
102
  display: grid;
84
103
  place-content: center;
85
104
 
105
+ background-color: var(--str-video__control-radio-button-bg);
106
+ border: var(--str-video__w100) solid
107
+ var(--str-video__border-core-on-elevation);
108
+ border-radius: var(--str-video__radius-max);
109
+
86
110
  &::before {
87
111
  content: '';
88
- width: 0.5rem;
89
- height: 0.5rem;
112
+ inline-size: var(--str-video__size-8);
113
+ block-size: var(--str-video__size-8);
114
+ border-radius: var(--str-video__radius-max);
115
+ background-color: var(--str-video__control-radio-button-indicator);
90
116
  transform: scale(0);
91
117
  }
92
- &:checked::before {
93
- transform: scale(1);
94
- }
95
118
 
96
119
  &:checked {
97
- border-color: var(--str-video__primary-color);
120
+ background-color: var(--str-video__control-radio-button-bg-selected);
121
+ border-color: var(--str-video__control-radio-button-bg-selected);
122
+
123
+ &::before {
124
+ transform: scale(1);
125
+ }
126
+ }
127
+
128
+ &:focus-visible {
129
+ outline: var(--str-video__w200) solid
130
+ var(--str-video__border-utility-focused);
131
+ outline-offset: var(--str-video__w100);
132
+ }
133
+
134
+ &:disabled {
135
+ border-color: var(--str-video__border-utility-disabled);
136
+ cursor: default;
137
+
138
+ &:checked {
139
+ background-color: var(--str-video__background-utility-disabled);
140
+ border-color: var(--str-video__background-utility-disabled);
141
+
142
+ &::before {
143
+ background-color: var(--str-video__text-disabled);
144
+ }
145
+ }
98
146
  }
99
147
  }
100
148
  }
101
149
  }
102
150
 
151
+ .str-video__device-settings__device-kind:has(
152
+ .str-video__device-settings__option
153
+ ) {
154
+ inline-size: 296px;
155
+ }
156
+
157
+ .str-video__device-settings__device-kind:has(.str-video__device-preview) {
158
+ padding: var(--str-video__spacing-md);
159
+ gap: var(--str-video__spacing-xs);
160
+
161
+ .str-video__device-settings__device-selector-title {
162
+ margin-inline: 0;
163
+ padding-inline: 0;
164
+ }
165
+ }
166
+
103
167
  .str-video__device-settings__separator {
104
- border-color: var(--str-video__base-color3);
168
+ margin: var(--str-video__spacing-xxs) 0 3px;
169
+ border: 0;
170
+ border-block-start: var(--str-video__w100) solid
171
+ var(--str-video__border-core-default);
172
+ }
173
+
174
+ .str-video__device-settings__device-kind:last-child
175
+ .str-video__device-settings__separator:last-child {
176
+ display: none;
105
177
  }
106
178
 
107
179
  .str-video__audio-volume-indicator {
108
- width: 100%;
109
180
  display: flex;
110
181
  align-items: center;
182
+ min-height: 32px;
183
+ margin-inline: var(--str-video__spacing-xxs);
184
+ padding-inline: var(--str-video__spacing-xs);
111
185
  gap: var(--str-video__spacing-xs);
112
- padding: var(--str-video__spacing-sm) var(--str-video__spacing-md);
113
186
 
114
187
  .str-video__icon {
115
- width: var(--str-video__font-size-xxl);
116
- height: var(--str-video__font-size-xxl);
188
+ width: var(--str-video__icon-size-sm);
189
+ height: var(--str-video__icon-size-sm);
190
+ background-color: var(--str-video__text-secondary);
117
191
  }
118
192
 
119
193
  .str-video__audio-volume-indicator__bar {
120
194
  flex: 1;
121
- background-color: var(--str-video__base-color1);
122
- height: var(--str-video__spacing-xs);
123
- border-radius: var(--str-video__border-radius-xs);
195
+ block-size: var(--str-video__size-8);
196
+ background-color: var(--str-video__control-progress-bar-track);
197
+ border-radius: var(--str-video__radius-max);
124
198
  }
125
199
 
126
200
  .str-video__audio-volume-indicator__bar-value {
127
201
  width: 100%;
128
202
  height: 100%;
129
- background: var(--str-video__primary-color);
130
- border-radius: var(--str-video__border-radius-xs);
203
+ background: var(--str-video__control-progress-bar-fill-audio);
204
+ border-radius: var(--str-video__radius-max);
131
205
  transform-origin: left center;
132
206
  // resting state; the live level is written inline by AudioVolumeIndicator
133
207
  transform: scaleX(0);
@@ -137,19 +211,19 @@
137
211
  .str-video__device-level-indicator {
138
212
  display: flex;
139
213
  align-items: center;
140
- gap: 0.125rem;
214
+ gap: var(--str-video__spacing-xxxs);
141
215
  flex-shrink: 0;
142
216
  margin-left: auto;
143
217
 
144
218
  .str-video__device-level-indicator__bar {
145
- width: 0.1875rem;
146
- height: 0.75rem;
147
- border-radius: var(--str-video__border-radius-xs);
148
- background-color: var(--str-video__base-color3);
219
+ width: 3px;
220
+ height: var(--str-video__size-12);
221
+ border-radius: var(--str-video__radius-max);
222
+ background-color: var(--str-video__indicator-microphone-level-bar-inactive);
149
223
  transition: background-color 0.1s;
150
224
 
151
225
  &--active {
152
- background-color: var(--str-video__primary-color);
226
+ background-color: var(--str-video__indicator-microphone-level-bar-active);
153
227
  }
154
228
  }
155
229
  }
@@ -165,12 +239,12 @@
165
239
  display: flex;
166
240
  flex-direction: column;
167
241
  align-items: stretch;
168
- max-width: 12rem;
242
+ max-width: 192px;
169
243
  cursor: pointer;
170
244
 
171
245
  .str-video__device-preview__label {
172
- padding: var(--str-video__spacing-xs) 0;
173
- font-size: var(--str-video__font-size-xs);
246
+ padding: var(--str-video__space-6) 0;
247
+ font-size: var(--str-video__typography-font-size-xs);
174
248
  text-align: center;
175
249
  overflow: hidden;
176
250
  text-overflow: ellipsis;
@@ -182,30 +256,41 @@
182
256
  width: 100%;
183
257
  aspect-ratio: 16 / 9;
184
258
  object-fit: cover;
185
- border-radius: var(--str-video__border-radius-sm);
186
- border: 2px solid var(--str-video__base-color3);
187
- background-color: var(--str-video__base-color5);
259
+ border-radius: var(--str-video__radius-sm);
260
+ border: var(--str-video__w200) solid var(--str-video__border-core-default);
261
+ background-color: var(--str-video__background-core-elevation-1);
188
262
  transform: scaleX(-1);
189
263
  }
190
264
 
191
265
  &--selected .str-video__device-video-preview__video {
192
- border-color: var(--str-video__primary-color);
266
+ border-color: var(--str-video__accent-primary);
193
267
  }
194
268
  }
195
269
 
196
270
  .str-video__speaker-test {
197
- padding: var(--str-video__spacing-sm) 0;
271
+ // the button sits on an elevated menu surface: Figma binds
272
+ // border/core/on-elevation on it (Core / Web / Mic Selector Menu / Test
273
+ // Speaker, 28100:111176), not the plain secondary border. overrides the
274
+ // secondary token because .str-video__button--secondary re-declares
275
+ // --button-border on the button element itself
276
+ --str-video__button-secondary-border: var(
277
+ --str-video__border-core-on-elevation
278
+ );
279
+
280
+ padding: var(--str-video__spacing-xs) var(--str-video__spacing-sm);
198
281
 
199
282
  .str-video__speaker-test__button-content {
200
283
  display: flex;
201
284
  align-items: center;
202
- gap: var(--str-video__spacing-sm);
203
- padding: 0 var(--str-video__spacing-sm);
204
- font-size: var(--str-video__font-size-sm);
205
- font-weight: 600;
285
+ gap: var(--str-video__spacing-xs);
286
+ padding: 0 var(--str-video__spacing-xs);
287
+ font-size: var(--str-video__typography-font-size-sm);
288
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
206
289
  }
207
290
 
208
- .str-video__composite-button__button {
209
- width: 100% !important;
291
+ .str-video__composite-button,
292
+ .str-video__composite-button__group,
293
+ .str-video__composite-button__action {
294
+ inline-size: 100%;
210
295
  }
211
296
  }
@@ -5,24 +5,31 @@
5
5
  display: flex;
6
6
  align-items: center;
7
7
  justify-content: space-between;
8
- background-color: var(--str-video__base-color4);
9
- border-radius: var(--str-video__border-radius-lg);
10
- border: 1px solid var(--str-video__base-color6);
8
+ gap: var(--str-video__spacing-xs);
9
+ background-color: transparent;
10
+ box-shadow: inset 0 0 0 var(--str-video__w100)
11
+ var(--str-video__border-core-default);
12
+ border-radius: var(--str-video__input-radius-select-input);
13
+ padding: var(--str-video__spacing-xs) var(--str-video__spacing-sm);
14
+ color: var(--str-video__input-text-default);
11
15
 
12
16
  &__label {
13
17
  display: flex;
14
18
  align-items: center;
15
- font-weight: 600;
16
- padding: var(--str-video__spacing-sm);
17
- font-size: var(--str-video__font-size-xs);
18
- }
19
+ gap: var(--str-video__spacing-xs);
20
+ min-inline-size: 0;
21
+ padding-block: var(--str-video__spacing-xxxs);
19
22
 
20
- &__icon {
21
- margin-right: var(--str-video__spacing-sm);
23
+ font-size: var(--str-video__typography-font-size-sm);
24
+ font-weight: var(--str-video__typography-font-weight-regular);
25
+ line-height: var(--str-video__typography-line-height-normal);
22
26
  }
23
27
 
24
- &__chevron {
25
- margin-right: var(--str-video__spacing-md);
28
+ &__text {
29
+ min-inline-size: 0;
30
+ overflow: hidden;
31
+ text-overflow: ellipsis;
32
+ white-space: nowrap;
26
33
  }
27
34
 
28
35
  & > *:hover,
@@ -31,7 +38,17 @@
31
38
  }
32
39
 
33
40
  &:hover {
34
- border: 1px solid var(--str-video__brand-color1);
41
+ box-shadow: inset 0 0 0 var(--str-video__w100)
42
+ var(--str-video__border-utility-hover);
43
+ }
44
+ &[aria-expanded='true'] {
45
+ box-shadow: inset 0 0 0 var(--str-video__w100)
46
+ var(--str-video__border-utility-active);
47
+ }
48
+ &:focus-visible {
49
+ outline: var(--str-video__w200) solid
50
+ var(--str-video__border-utility-focused);
51
+ outline-offset: calc(var(--str-video__w200) * -1);
35
52
  }
36
53
  }
37
54
 
@@ -41,64 +58,57 @@
41
58
  position: absolute;
42
59
  z-index: 2;
43
60
  width: 100%;
44
- margin-top: var(--str-video__spacing-sm);
45
- background-color: var(--str-video__base-color6);
46
- border-radius: var(--str-video__border-radius-lg);
47
- padding: var(--str-video__spacing-md);
48
- gap: var(--str-video__spacing-sm);
61
+ margin-top: var(--str-video__spacing-xxs);
62
+
63
+ background-color: var(--str-video__background-core-elevation-2);
64
+ border-radius: var(--str-video__radius-lg);
65
+ box-shadow: var(--str-video__box-shadow-3);
49
66
 
50
- box-shadow: 0 0 24px -4px rgba(0, 0, 0, 0.64);
67
+ padding: var(--str-video__spacing-xxs) var(--str-video__spacing-none);
68
+ gap: var(--str-video__spacing-xxxs);
51
69
  }
52
70
 
53
71
  &-option {
54
72
  display: flex;
55
73
  align-items: center;
56
- border-radius: var(--str-video__border-radius-lg);
57
-
58
- padding: 8px 16px;
59
- gap: 8px;
60
-
61
- font-weight: 600;
62
- font-size: var(--str-video__font-size-sm);
74
+ min-height: 32px;
75
+ margin-inline: var(--str-video__spacing-xxs);
76
+ padding-inline: var(--str-video__spacing-xs);
77
+ gap: var(--str-video__spacing-xs);
78
+ border-radius: var(--str-video__radius-md);
79
+
80
+ color: var(--str-video__text-primary);
81
+ font-size: var(--str-video__typography-font-size-sm);
82
+ font-weight: var(--str-video__typography-font-weight-semi-bold);
83
+ line-height: var(--str-video__typography-line-height-normal);
84
+
85
+ .str-video__icon {
86
+ background-color: var(--str-video__text-secondary);
87
+ }
63
88
 
64
89
  &:hover {
65
- background-color: var(--str-video__button-default-hover);
90
+ background-color: var(--str-video__background-utility-hover);
66
91
  cursor: pointer;
67
92
  }
68
93
 
69
- &--selected {
70
- background-color: var(--str-video__button-primary-active);
71
- color: var(--str-video__text-color1);
72
-
73
- &:hover {
74
- background-color: var(--str-video__button-primary-hover);
75
- }
76
- }
77
- }
78
-
79
- &-icon {
80
- background-color: var(--str-video__icon-default);
81
-
82
- .str-video__dropdown__option:hover & {
83
- background-color: var(--str-video__icon-hover);
94
+ &:active {
95
+ background-color: var(--str-video__background-utility-pressed);
84
96
  }
85
97
 
86
- .str-video__dropdown-option--selected & {
87
- background-color: var(--str-video__text-color1);
98
+ &:focus-visible {
99
+ outline: var(--str-video__w200) solid
100
+ var(--str-video__border-utility-focused);
101
+ outline-offset: calc(var(--str-video__w200) * -1);
88
102
  }
89
- }
90
103
 
91
- &-label {
92
- font-size: var(--str-video__font-size-xs);
93
- .str-video__dropdown__option:hover & {
94
- color: var(--str-video__base-color1);
104
+ &--selected {
105
+ background-color: var(--str-video__background-utility-selected);
95
106
  }
96
107
  }
97
108
  }
98
109
  }
99
110
 
100
- @media (min-width: 600px) {
101
- .str-video__dropdown-selected__label {
102
- font-size: var(--str-video__font-size-sm);
103
- }
111
+ .str-video__icon.str-video__dropdown-selected__icon,
112
+ .str-video__icon.str-video__dropdown-selected__chevron {
113
+ background-color: var(--str-video__input-text-icon);
104
114
  }