@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
@@ -0,0 +1,853 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+
5
+ @mixin variables {
6
+ --str-video__subtle: 25px; /** Subtle background blur. Used on scrims and glass surfaces where the content behind stays partly legible. */
7
+ --str-video__strong: 50px; /** Strong background blur. Used on scrims and glass surfaces where the content behind should be obscured. */
8
+ --str-video__base-transparent-white-10: rgba(255, 255, 255, 0.1);
9
+ --str-video__base-transparent-white-20: rgba(255, 255, 255, 0.2);
10
+ --str-video__base-transparent-white-30: rgba(
11
+ 255,
12
+ 255,
13
+ 255,
14
+ 0.3
15
+ ); /** Legacy value, no longer defined in Figma. Kept for compatibility; prefer the 0/10/15/20/25/50/75 scale. */
16
+ --str-video__base-transparent-white-70: rgba(
17
+ 255,
18
+ 255,
19
+ 255,
20
+ 0.7
21
+ ); /** Legacy value, no longer defined in Figma. Kept for compatibility; prefer the 0/10/15/20/25/50/75 scale. */
22
+ --str-video__base-transparent-black-5: rgba(
23
+ 0,
24
+ 0,
25
+ 0,
26
+ 0.05
27
+ ); /** Legacy value, no longer defined in Figma. Kept for compatibility; prefer the 0/10/15/20/25/50/75 scale. */
28
+ --str-video__base-transparent-black-10: rgba(
29
+ 0,
30
+ 0,
31
+ 0,
32
+ 0.1
33
+ ); /** Used for bg in closeButton */
34
+ --str-video__base-transparent-black-70: rgba(
35
+ 0,
36
+ 0,
37
+ 0,
38
+ 0.7
39
+ ); /** Legacy value, no longer defined in Figma. Kept for compatibility; prefer the 0/10/15/20/25/50/75 scale. */
40
+ --str-video__base-transparent-black-0: rgba(0, 0, 0, 0);
41
+ --str-video__base-transparent-black-15: rgba(0, 0, 0, 0.15);
42
+ --str-video__base-transparent-black-20: rgba(0, 0, 0, 0.2);
43
+ --str-video__base-transparent-black-25: rgba(0, 0, 0, 0.25);
44
+ --str-video__base-transparent-black-50: rgba(0, 0, 0, 0.5);
45
+ --str-video__base-transparent-black-75: rgba(0, 0, 0, 0.75);
46
+ --str-video__base-transparent-white-0: rgba(255, 255, 255, 0);
47
+ --str-video__base-transparent-white-15: rgba(255, 255, 255, 0.15);
48
+ --str-video__base-transparent-white-25: rgba(255, 255, 255, 0.25);
49
+ --str-video__base-transparent-white-50: rgba(255, 255, 255, 0.5);
50
+ --str-video__base-transparent-white-75: rgba(255, 255, 255, 0.75);
51
+ --str-video__base-black: #000000;
52
+ --str-video__base-white: #ffffff;
53
+ --str-video__slate-50: #f6f8fa;
54
+ --str-video__slate-100: #ebeef1;
55
+ --str-video__slate-150: #d5dbe1;
56
+ --str-video__slate-200: #c0c8d2;
57
+ --str-video__slate-300: #a3acba;
58
+ --str-video__slate-400: #87909f;
59
+ --str-video__slate-500: #687385;
60
+ --str-video__slate-600: #545969;
61
+ --str-video__slate-700: #414552;
62
+ --str-video__slate-800: #30313d;
63
+ --str-video__slate-900: #1a1b25;
64
+ --str-video__neutral-50: #f8f8f8;
65
+ --str-video__neutral-100: #efefef;
66
+ --str-video__neutral-150: #d8d8d8;
67
+ --str-video__neutral-200: #c4c4c4;
68
+ --str-video__neutral-300: #ababab;
69
+ --str-video__neutral-400: #8f8f8f;
70
+ --str-video__neutral-500: #6a6a6a;
71
+ --str-video__neutral-600: #565656;
72
+ --str-video__neutral-700: #464646;
73
+ --str-video__neutral-800: #323232;
74
+ --str-video__neutral-900: #1c1c1c;
75
+ --str-video__blue-50: #f3f7ff;
76
+ --str-video__blue-100: #e3edff;
77
+ --str-video__blue-150: #c3d9ff;
78
+ --str-video__blue-200: #a5c5ff;
79
+ --str-video__blue-300: #78a8ff;
80
+ --str-video__blue-400: #4586ff;
81
+ --str-video__blue-500: #005fff;
82
+ --str-video__blue-600: #1b53bd;
83
+ --str-video__blue-700: #19418d;
84
+ --str-video__blue-800: #142f63;
85
+ --str-video__blue-900: #091a3b;
86
+ --str-video__cyan-50: #f1fbfc;
87
+ --str-video__cyan-100: #d1f3f6;
88
+ --str-video__cyan-150: #a9e4ea;
89
+ --str-video__cyan-200: #72d7e0;
90
+ --str-video__cyan-300: #45bcc7;
91
+ --str-video__cyan-400: #1e9ea9;
92
+ --str-video__cyan-500: #248088;
93
+ --str-video__cyan-600: #006970;
94
+ --str-video__cyan-700: #065056;
95
+ --str-video__cyan-800: #003a3f;
96
+ --str-video__cyan-900: #002124;
97
+ --str-video__green-50: #e1ffee;
98
+ --str-video__green-100: #bdfcdb;
99
+ --str-video__green-150: #8febbd;
100
+ --str-video__green-200: #59dea3;
101
+ --str-video__green-300: #00c384;
102
+ --str-video__green-400: #00a46e;
103
+ --str-video__green-500: #277e59;
104
+ --str-video__green-600: #006643;
105
+ --str-video__green-700: #004f33;
106
+ --str-video__green-800: #003a25;
107
+ --str-video__green-900: #002213;
108
+ --str-video__purple-50: #f7f8ff;
109
+ --str-video__purple-100: #ecedff;
110
+ --str-video__purple-150: #d4d7ff;
111
+ --str-video__purple-200: #c1c5ff;
112
+ --str-video__purple-300: #a1a3ff;
113
+ --str-video__purple-400: #8482fc;
114
+ --str-video__purple-500: #644af9;
115
+ --str-video__purple-600: #553bd8;
116
+ --str-video__purple-700: #4032a1;
117
+ --str-video__purple-800: #2e2576;
118
+ --str-video__purple-900: #1a114d;
119
+ --str-video__yellow-50: #fef9da;
120
+ --str-video__yellow-100: #fcedb9;
121
+ --str-video__yellow-150: #fcd579;
122
+ --str-video__yellow-200: #f6bf57;
123
+ --str-video__yellow-300: #fa922b;
124
+ --str-video__yellow-400: #f26d10;
125
+ --str-video__yellow-500: #c84801;
126
+ --str-video__yellow-600: #a82c00;
127
+ --str-video__yellow-700: #842106;
128
+ --str-video__yellow-800: #5f1a05;
129
+ --str-video__yellow-900: #331302;
130
+ --str-video__red-50: #fff5fa;
131
+ --str-video__red-100: #ffe7f2;
132
+ --str-video__red-150: #ffccdf;
133
+ --str-video__red-200: #ffb1cd;
134
+ --str-video__red-300: #fe87a1;
135
+ --str-video__red-400: #fc526a;
136
+ --str-video__red-500: #d90d10;
137
+ --str-video__red-600: #b3093c;
138
+ --str-video__red-700: #890d37;
139
+ --str-video__red-800: #68052b;
140
+ --str-video__red-900: #3e021a;
141
+ --str-video__violet-50: #fef4ff;
142
+ --str-video__violet-100: #fbe8fe;
143
+ --str-video__violet-150: #f7cffc;
144
+ --str-video__violet-200: #eeb5f4;
145
+ --str-video__violet-300: #e68bec;
146
+ --str-video__violet-400: #d75fe7;
147
+ --str-video__violet-500: #b716ca;
148
+ --str-video__violet-600: #9d00ae;
149
+ --str-video__violet-700: #7c0089;
150
+ --str-video__violet-800: #5c0066;
151
+ --str-video__violet-900: #36003d;
152
+ --str-video__lime-50: #f1fde8;
153
+ --str-video__lime-100: #d4ffb0;
154
+ --str-video__lime-150: #b1ee79;
155
+ --str-video__lime-200: #9cda5d;
156
+ --str-video__lime-300: #78c100;
157
+ --str-video__lime-400: #639e11;
158
+ --str-video__lime-500: #4b7a0a;
159
+ --str-video__lime-600: #3e6213;
160
+ --str-video__lime-700: #355315;
161
+ --str-video__lime-800: #203a00;
162
+ --str-video__lime-900: #112100;
163
+ --str-video__size-2: 2px;
164
+ --str-video__size-4: 4px;
165
+ --str-video__size-6: 6px;
166
+ --str-video__size-8: 8px;
167
+ --str-video__size-12: 12px;
168
+ --str-video__size-16: 16px;
169
+ --str-video__size-20: 20px;
170
+ --str-video__size-24: 24px;
171
+ --str-video__size-32: 32px;
172
+ --str-video__size-40: 40px;
173
+ --str-video__size-48: 48px;
174
+ --str-video__size-64: 64px;
175
+ --str-video__size-28: 28px;
176
+ --str-video__size-80: 80px;
177
+ --str-video__size-128: 128px;
178
+ --str-video__size-240: 240px;
179
+ --str-video__size-320: 320px;
180
+ --str-video__size-480: 480px;
181
+ --str-video__size-560: 560px;
182
+ --str-video__size-640: 640px;
183
+ --str-video__size-760: 760px;
184
+ --str-video__size-144: 144px;
185
+ --str-video__size-208: 208px;
186
+ --str-video__size-56: 56px;
187
+ --str-video__size-10: 10px;
188
+ --str-video__size-13: 13px;
189
+ --str-video__size-14: 14px;
190
+ --str-video__size-15: 15px;
191
+ --str-video__size-17: 17px;
192
+ --str-video__size-18: 18px;
193
+ --str-video__size-22: 22px;
194
+ --str-video__radius-0: 0px;
195
+ --str-video__radius-2: 2px;
196
+ --str-video__radius-4: 4px;
197
+ --str-video__radius-6: 6px;
198
+ --str-video__radius-8: 8px;
199
+ --str-video__radius-12: 12px;
200
+ --str-video__radius-16: 16px;
201
+ --str-video__radius-20: 20px;
202
+ --str-video__radius-24: 24px;
203
+ --str-video__radius-32: 32px;
204
+ --str-video__radius-full: 9999px;
205
+ --str-video__space-0: 0px;
206
+ --str-video__space-2: 2px;
207
+ --str-video__space-4: 4px;
208
+ --str-video__space-8: 8px;
209
+ --str-video__space-12: 12px;
210
+ --str-video__space-16: 16px;
211
+ --str-video__space-20: 20px;
212
+ --str-video__space-24: 24px;
213
+ --str-video__space-32: 32px;
214
+ --str-video__space-40: 40px;
215
+ --str-video__space-48: 48px;
216
+ --str-video__space-64: 64px;
217
+ --str-video__space-80: 80px;
218
+ --str-video__space-6: 6px;
219
+ --str-video__space-10: 10px;
220
+ --str-video__space-14: 14px;
221
+ --str-video__w100: 1px;
222
+ --str-video__w150: 1.5px;
223
+ --str-video__w200: 2px;
224
+ --str-video__w300: 3px;
225
+ --str-video__w400: 4px;
226
+ --str-video__w120: 1.2px;
227
+ --str-video__w80: 0.8px;
228
+ --str-video__font-family-geist: 'Geist'; /** Primary sans-serif font for web typography. Use Geist as the main typeface. Recommended fallbacks: system-ui, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif. */
229
+ --str-video__font-family-geist-mono: 'Geist Mono'; /** Primary monospace font for web typography. Use Geist Mono for code, timestamps, and technical text. Recommended fallbacks: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace. */
230
+ --str-video__font-family-sf-pro: 'SF Pro'; /** Primary sans-serif font for iOS typography. Use SF Pro as the main typeface. Recommended fallbacks: -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif. */
231
+ --str-video__font-family-sf-mono: 'SF Mono'; /** Primary monospace font for iOS typography. Use SF Mono for code, timestamps, and technical text. Recommended fallbacks: SFMono-Regular, Menlo, Monaco, Consolas, monospace. */
232
+ --str-video__font-family-roboto: 'Roboto'; /** Primary sans-serif font for Android typography. Use Roboto as the main typeface, aligned with Material and system defaults. Recommended fallbacks: Roboto, “Noto Sans”, system-ui, sans-serif. */
233
+ --str-video__font-family-roboto-mono: 'Roboto Mono'; /** Primary monospace font for Android typography. Use Roboto Mono for code, timestamps, and technical text. Recommended fallbacks: Roboto Mono, “Noto Sans Mono”, monospace. */
234
+ --str-video__font-family-inter: 'Inter'; /** Sans-serif typeface available for custom themes. */
235
+ --str-video__font-family-dm-mono: 'DM Mono'; /** Monospace typeface available for custom themes. */
236
+ --str-video__font-weight-w400: 400;
237
+ --str-video__font-weight-w500: 500;
238
+ --str-video__font-weight-w600: 600;
239
+ --str-video__font-weight-w700: 700;
240
+ --str-video__font-size-size-8: 8px;
241
+ --str-video__font-size-size-10: 10px;
242
+ --str-video__font-size-size-11: 11px;
243
+ --str-video__font-size-size-12: 12px;
244
+ --str-video__font-size-size-13: 13px;
245
+ --str-video__font-size-size-14: 14px;
246
+ --str-video__font-size-size-16: 16px;
247
+ --str-video__font-size-size-15: 15px;
248
+ --str-video__font-size-size-17: 17px;
249
+ --str-video__font-size-size-18: 18px;
250
+ --str-video__font-size-size-20: 20px;
251
+ --str-video__font-size-size-22: 22px;
252
+ --str-video__font-size-size-24: 24px;
253
+ --str-video__font-size-size-28: 28px;
254
+ --str-video__font-size-size-32: 32px;
255
+ --str-video__font-size-size-40: 40px;
256
+ --str-video__font-size-size-48: 48px;
257
+ --str-video__font-size-size-64: 64px;
258
+ --str-video__line-height-line-height-8: 8px;
259
+ --str-video__line-height-line-height-10: 10px;
260
+ --str-video__line-height-line-height-12: 12px;
261
+ --str-video__line-height-line-height-13: 13px;
262
+ --str-video__line-height-line-height-14: 14px;
263
+ --str-video__line-height-line-height-15: 15px;
264
+ --str-video__line-height-line-height-16: 16px;
265
+ --str-video__line-height-line-height-17: 17px;
266
+ --str-video__line-height-line-height-18: 18px;
267
+ --str-video__line-height-line-height-20: 20px;
268
+ --str-video__line-height-line-height-24: 24px;
269
+ --str-video__line-height-line-height-28: 28px;
270
+ --str-video__line-height-line-height-32: 32px;
271
+ --str-video__line-height-line-height-40: 40px;
272
+ --str-video__line-height-line-height-48: 48px;
273
+ --str-video__typography-font-weight-regular: 400; /** Default weight for body text and low-emphasis content. */
274
+ --str-video__typography-font-weight-medium: 500; /** Slightly emphasized weight for interactive labels, list items, and secondary headings. */
275
+ --str-video__typography-font-weight-semi-bold: 600; /** Strong emphasis for subheadings, active states, and UI labels that need to stand out. */
276
+ --str-video__typography-font-weight-bold: 700; /** Highest emphasis weight for titles, primary headings, and critical labels. */
277
+ --str-video__light-elevation-1:
278
+ 0px 0px 0px 1px rgba(0, 0, 0, 0.05), 0px 1px 2px 0px rgba(0, 0, 0, 0.1),
279
+ 0px 4px 8px 0px rgba(0, 0, 0, 0.06); /** Low elevation level for subtle separation. */
280
+ --str-video__light-elevation-2:
281
+ 0px 0px 0px 1px rgba(0, 0, 0, 0.05), 0px 2px 4px 0px rgba(0, 0, 0, 0.12),
282
+ 0px 6px 16px 0px rgba(0, 0, 0, 0.06);
283
+ --str-video__light-elevation-3:
284
+ 0px 0px 0px 1px rgba(0, 0, 0, 0.05), 0px 4px 8px 0px rgba(0, 0, 0, 0.14),
285
+ 0px 12px 24px 0px rgba(0, 0, 0, 0.1);
286
+ --str-video__light-elevation-4:
287
+ 0px 0px 0px 1px rgba(0, 0, 0, 0.05), 0px 6px 12px 0px rgba(0, 0, 0, 0.16),
288
+ 0px 20px 32px 0px rgba(0, 0, 0, 0.12);
289
+ --str-video__dark-elevation-1:
290
+ 0px 0px 0px 1px rgba(255, 255, 255, 0.15),
291
+ 0px 1px 2px 0px rgba(0, 0, 0, 0.2), 0px 4px 8px 0px rgba(0, 0, 0, 0.1);
292
+ --str-video__dark-elevation-2:
293
+ 0px 0px 0px 1px rgba(255, 255, 255, 0.15),
294
+ 0px 2px 4px 0px rgba(0, 0, 0, 0.22), 0px 6px 16px 0px rgba(0, 0, 0, 0.12);
295
+ --str-video__dark-elevation-3:
296
+ 0px 0px 0px 1px rgba(255, 255, 255, 0.15),
297
+ 0px 4px 8px 0px rgba(0, 0, 0, 0.24), 0px 12px 24px 0px rgba(0, 0, 0, 0.14);
298
+ --str-video__dark-elevation-4:
299
+ 0px 0px 0px 1px rgba(255, 255, 255, 0.15),
300
+ 0px 6px 12px 0px rgba(0, 0, 0, 0.28), 0px 20px 32px 0px rgba(0, 0, 0, 0.16);
301
+ --str-video__button-padding-y-lg: 14px;
302
+ --str-video__button-padding-y-md: 10px;
303
+ --str-video__button-padding-y-sm: 6px;
304
+ --str-video__button-padding-y-xs: 2px;
305
+ --str-video__button-padding-x-icon-only-lg: 16px;
306
+ --str-video__button-padding-x-icon-only-md: 12px;
307
+ --str-video__button-padding-x-icon-only-sm: 8px;
308
+ --str-video__button-padding-x-icon-only-xs: 4px;
309
+ --str-video__button-padding-x-with-label-lg: 16px;
310
+ --str-video__button-padding-x-with-label-md: 16px;
311
+ --str-video__button-padding-x-with-label-sm: 16px;
312
+ --str-video__button-padding-x-with-label-xs: 12px;
313
+ --str-video__background-core-overlay-dark: rgba(
314
+ 26,
315
+ 27,
316
+ 37,
317
+ 0.25
318
+ ); /** A dark semi-transparent layer. Used for image overlays. */
319
+ --str-video__background-core-overlay-dark-strong: rgba(
320
+ 26,
321
+ 27,
322
+ 37,
323
+ 0.75
324
+ ); /** A dark semi-transparent layer. Used for image overlays. */
325
+ --str-video__background-core-overlay-light: rgba(
326
+ 255,
327
+ 255,
328
+ 255,
329
+ 0.75
330
+ ); /** A light semi-transparent layer. Used to lighten surfaces and for hover states on dark backgrounds. */
331
+ --str-video__background-core-scrim: rgba(
332
+ 26,
333
+ 27,
334
+ 37,
335
+ 0.5
336
+ ); /** A heavy semi-transparent layer. Used behind sheets, drawers, and modals to separate them from content. */
337
+ --str-video__background-utility-hover: rgba(
338
+ 26,
339
+ 27,
340
+ 37,
341
+ 0.1
342
+ ); /** A semi-transparent overlay applied on pointer hover. Sits on top of any surface without replacing it. */
343
+ --str-video__background-utility-pressed: rgba(
344
+ 26,
345
+ 27,
346
+ 37,
347
+ 0.15
348
+ ); /** A slightly stronger overlay applied during an active press or tap. Provides tactile feedback on interactive elements. */
349
+ --str-video__background-utility-selected: rgba(
350
+ 26,
351
+ 27,
352
+ 37,
353
+ 0.2
354
+ ); /** Indicates an active or selected state. Used for selected messages, active list items, and toggled controls. */
355
+ --str-video__border-utility-hover: rgba(
356
+ 26,
357
+ 27,
358
+ 37,
359
+ 0.1
360
+ ); /** Applied on pointer hover over bordered interactive elements. */
361
+ --str-video__border-utility-pressed: rgba(
362
+ 26,
363
+ 27,
364
+ 37,
365
+ 0.2
366
+ ); /** Applied during an active press on bordered interactive elements. */
367
+ --str-video__border-utility-selected: rgba(
368
+ 26,
369
+ 27,
370
+ 37,
371
+ 0.15
372
+ ); /** Border for selected or active items. Used for highlighted list items and active controls. */
373
+ --str-video__border-core-opacity-strong: rgba(
374
+ 26,
375
+ 27,
376
+ 37,
377
+ 0.25
378
+ ); /** A stronger transparent border for elements on colored or dark backgrounds. Used for waveform bars and similar treatments. */
379
+ --str-video__border-core-opacity-subtle: rgba(
380
+ 26,
381
+ 27,
382
+ 37,
383
+ 0.1
384
+ ); /** A very light transparent border. Used as a frame treatment on images and media attachments. */
385
+ --str-video__system-bg-blur: rgba(255, 255, 255, 0.01);
386
+ --str-video__system-scrollbar: rgba(0, 0, 0, 0.5);
387
+ --str-video__badge-bg-overlay: rgba(0, 0, 0, 0.75);
388
+ --str-video__base-transparent-0: var(
389
+ --str-video__base-transparent-white-0
390
+ ); /** Deprecated. Superseded by base/transparent/white-0%. Kept as an alias so existing integrations keep working; will be removed in a later release. */
391
+ --str-video__typography-font-family-sans: var(
392
+ --str-video__font-family-geist
393
+ ); /** The primary UI typeface. Maps to SF Pro on iOS, Roboto on Android, and Geist on web. */
394
+ --str-video__typography-font-family-mono: var(
395
+ --str-video__font-family-geist-mono
396
+ ); /** The monospace typeface. Used for code snippets, and technical string values. */
397
+ --str-video__typography-font-size-xxs: var(
398
+ --str-video__font-size-size-10
399
+ ); /** Very small text for fine-print labels, counters, and compact secondary information */
400
+ --str-video__typography-font-size-xs: var(
401
+ --str-video__font-size-size-12
402
+ ); /** Small text for supporting labels, timestamps, and low-hierarchy metadata. */
403
+ --str-video__typography-font-size-sm: var(
404
+ --str-video__font-size-size-14
405
+ ); /** Secondary body text for subtitles, helper text, and de-emphasized UI copy. */
406
+ --str-video__typography-font-size-md: var(
407
+ --str-video__font-size-size-16
408
+ ); /** Default body text size for most readable UI content. */
409
+ --str-video__typography-font-size-lg: var(
410
+ --str-video__font-size-size-18
411
+ ); /** Emphasized body text for primary labels, section headings, and prominent UI copy. */
412
+ --str-video__typography-font-size-xl: var(
413
+ --str-video__font-size-size-20
414
+ ); /** Large text for titles, screen headings, and high-hierarchy labels */
415
+ --str-video__typography-font-size-2xl: var(
416
+ --str-video__font-size-size-24
417
+ ); /** Section titles, important headings. */
418
+ --str-video__typography-font-size-micro: var(
419
+ --str-video__font-size-size-8
420
+ ); /** Smallest text size. Reserved for legal, captions, or secondary metadata where space is extremely constrained. */
421
+ --str-video__typography-line-height-tight: var(
422
+ --str-video__line-height-line-height-16
423
+ ); /** Compact line spacing for short labels, badges, and single-line UI text where vertical density matters. */
424
+ --str-video__typography-line-height-normal: var(
425
+ --str-video__line-height-line-height-20
426
+ ); /** Compact line spacing for short labels, badges, and single-line UI text where vertical density matters. */
427
+ --str-video__typography-line-height-relaxed: var(
428
+ --str-video__line-height-line-height-24
429
+ ); /** Generous line spacing for multi-line body text and message content where readability is the priority. */
430
+ --str-video__radius-none: var(
431
+ --str-video__radius-0
432
+ ); /** No border radius. Used for elements that must have sharp corners, such as full-width banners or flush containers. */
433
+ --str-video__radius-xxs: var(
434
+ --str-video__radius-2
435
+ ); /** 2px radius. Minimal rounding for compact elements like inline badges and tight chips. */
436
+ --str-video__radius-xs: var(
437
+ --str-video__radius-4
438
+ ); /** 4px radius. Subtle rounding for small interactive elements like tags and small buttons. */
439
+ --str-video__radius-sm: var(
440
+ --str-video__radius-6
441
+ ); /** 6px radius. Light rounding for inputs, secondary buttons, and contained UI elements. */
442
+ --str-video__radius-md: var(
443
+ --str-video__radius-8
444
+ ); /** 8px radius. Default radius for cards, modals, and standard interactive components. */
445
+ --str-video__radius-lg: var(
446
+ --str-video__radius-12
447
+ ); /** 12px radius. Prominent rounding for sheets, drawers, and larger containers. */
448
+ --str-video__radius-xl: var(--str-video__radius-16);
449
+ --str-video__radius-2xl: var(--str-video__radius-20);
450
+ --str-video__radius-max: var(--str-video__radius-full);
451
+ --str-video__radius-3xl: var(--str-video__radius-24);
452
+ --str-video__radius-4xl: var(--str-video__radius-32);
453
+ --str-video__spacing-none: var(
454
+ --str-video__space-0
455
+ ); /** No spacing. Used for tight component joins. */
456
+ --str-video__spacing-xxs: var(
457
+ --str-video__space-4
458
+ ); /** Base unit. Minimal padding, tight gaps. */
459
+ --str-video__spacing-xs: var(
460
+ --str-video__space-8
461
+ ); /** Small padding and default vertical gaps. */
462
+ --str-video__spacing-sm: var(
463
+ --str-video__space-12
464
+ ); /** Common internal spacing in inputs and buttons. */
465
+ --str-video__spacing-md: var(
466
+ --str-video__space-16
467
+ ); /** Default large padding for sections and cards. */
468
+ --str-video__spacing-xl: var(
469
+ --str-video__space-24
470
+ ); /** Comfortable spacing for chat bubbles and list items. */
471
+ --str-video__spacing-2xl: var(
472
+ --str-video__space-32
473
+ ); /** Larger spacing for panels, modals, and gutters. */
474
+ --str-video__spacing-3xl: var(
475
+ --str-video__space-40
476
+ ); /** Used for wide layout spacing and breathing room. */
477
+ --str-video__spacing-lg: var(
478
+ --str-video__space-20
479
+ ); /** Medium spacing for grouping elements and section breaks. */
480
+ --str-video__spacing-xxxs: var(--str-video__space-2);
481
+ --str-video__device-safe-area-bottom: var(--str-video__space-0);
482
+ --str-video__device-safe-area-top: var(--str-video__space-0);
483
+ --str-video__button-radius-lg: var(--str-video__radius-full);
484
+ --str-video__button-radius-md: var(--str-video__radius-full);
485
+ --str-video__button-radius-sm: var(--str-video__radius-full);
486
+ --str-video__button-radius-full: var(--str-video__radius-full);
487
+ --str-video__button-visual-height-sm: var(--str-video__size-32);
488
+ --str-video__button-visual-height-md: var(--str-video__size-40);
489
+ --str-video__button-visual-height-lg: var(--str-video__size-48);
490
+ --str-video__button-visual-height-xs: var(--str-video__size-24);
491
+ /**
492
+ * Minimum interactive hit target size.
493
+ *
494
+ * iOS / Android: enforce minimum touch target.
495
+ * Web: do not apply a min-width or min-height; size to content.
496
+ *
497
+ * Note: Web uses a placeholder value in Figma due to variable mode constraints.
498
+ */
499
+ --str-video__button-hit-target-min-height: var(--str-video__size-48);
500
+ /**
501
+ * Minimum interactive hit target size.
502
+ *
503
+ * iOS / Android: enforce minimum touch target.
504
+ * Web: do not apply a min-width or min-height; size to content.
505
+ *
506
+ * Note: Web uses a placeholder value in Figma due to variable mode constraints.
507
+ */
508
+ --str-video__button-hit-target-min-width: var(--str-video__size-48);
509
+ --str-video__icon-size-xs: var(--str-video__size-12);
510
+ --str-video__icon-size-sm: var(--str-video__size-16);
511
+ --str-video__icon-size-md: var(--str-video__size-20);
512
+ --str-video__icon-size-lg: var(--str-video__size-32);
513
+ --str-video__icon-stroke-subtle: var(--str-video__w120);
514
+ --str-video__icon-stroke-default: var(--str-video__w150);
515
+ --str-video__icon-stroke-emphasis: var(--str-video__w200);
516
+ --str-video__emoji-md: var(--str-video__font-size-size-24);
517
+ --str-video__emoji-lg: var(--str-video__font-size-size-32);
518
+ --str-video__emoji-xl: var(--str-video__font-size-size-48);
519
+ --str-video__emoji-2xl: var(--str-video__font-size-size-64);
520
+ --str-video__input-radius-search-input: var(--str-video__radius-full);
521
+ --str-video__background-core-highlight: var(
522
+ --str-video__yellow-50
523
+ ); /** A tint for drawing attention to content. Used for highlights and pinned messages. */
524
+ --str-video__background-utility-skeleton-loading-highlight: var(
525
+ --str-video__background-core-overlay-light
526
+ ); /** Highlight color for the default skeleton loading gradient. Used for the moving shimmer to indicate loading activity. */
527
+ --str-video__control-call-control-error-badge-text: var(
528
+ --str-video__base-black
529
+ ); /** Icon or text on the error badge. Pinned to black in every mode, because the badge background does not invert and a mode-aware text token would flip to white on yellow. */
530
+ --str-video__accent-success: var(
531
+ --str-video__green-400
532
+ ); /** Indicates a positive or completed state. Used for confirmations, sent indicators, and success feedback. */
533
+ --str-video__accent-warning: var(
534
+ --str-video__yellow-200
535
+ ); /** Indicates a cautionary state that requires attention. Used for moderation flags and non-critical alerts. */
536
+ --str-video__accent-error: var(
537
+ --str-video__red-500
538
+ ); /** Indicates a failure or destructive state. Used for failed messages, validation errors, and deletions. */
539
+ --str-video__brand-50: var(--str-video__blue-50);
540
+ --str-video__brand-100: var(--str-video__blue-100);
541
+ --str-video__brand-150: var(--str-video__blue-150);
542
+ --str-video__brand-200: var(--str-video__blue-200);
543
+ --str-video__brand-300: var(--str-video__blue-300);
544
+ --str-video__brand-400: var(--str-video__blue-400);
545
+ --str-video__brand-500: var(--str-video__blue-500);
546
+ --str-video__brand-600: var(--str-video__blue-600);
547
+ --str-video__brand-700: var(--str-video__blue-700);
548
+ --str-video__brand-800: var(--str-video__blue-800);
549
+ --str-video__brand-900: var(--str-video__blue-900);
550
+ --str-video__chrome-0: var(--str-video__base-white);
551
+ --str-video__chrome-50: var(--str-video__slate-50);
552
+ --str-video__chrome-100: var(--str-video__slate-100);
553
+ --str-video__chrome-150: var(--str-video__slate-150);
554
+ --str-video__chrome-200: var(--str-video__slate-200);
555
+ --str-video__chrome-300: var(--str-video__slate-300);
556
+ --str-video__chrome-400: var(--str-video__slate-400);
557
+ --str-video__chrome-500: var(--str-video__slate-500);
558
+ --str-video__chrome-600: var(--str-video__slate-600);
559
+ --str-video__chrome-700: var(--str-video__slate-700);
560
+ --str-video__chrome-800: var(--str-video__slate-800);
561
+ --str-video__chrome-900: var(--str-video__slate-900);
562
+ --str-video__chrome-1000: var(--str-video__base-black);
563
+ --str-video__device-radius: var(--str-video__radius-md);
564
+ --str-video__button-primary-bg-liquid-glass: var(
565
+ --str-video__base-transparent-0
566
+ );
567
+ --str-video__button-primary-border: var(--str-video__brand-200);
568
+ --str-video__button-destructive-bg: var(--str-video__accent-error);
569
+ --str-video__button-destructive-text: var(--str-video__accent-error);
570
+ --str-video__button-destructive-border: var(--str-video__accent-error);
571
+ --str-video__emoji-sm: var(--str-video__typography-font-size-md);
572
+ --str-video__input-radius-text-input: var(--str-video__radius-lg);
573
+ --str-video__input-radius-select-input: var(--str-video__radius-lg);
574
+ --str-video__input-radius-option-card: var(--str-video__radius-lg);
575
+ --str-video__background-core-app: var(
576
+ --str-video__chrome-0
577
+ ); /** The outermost application background. Sits behind all surfaces and is generally not overridden directly. */
578
+ --str-video__background-core-elevation-0: var(
579
+ --str-video__chrome-0
580
+ ); /** The base layer. Always white, used as the reference point for the elevation scale. Steps above this gain depth in dark mode through progressively lighter backgrounds. */
581
+ --str-video__background-core-elevation-1: var(
582
+ --str-video__chrome-0
583
+ ); /** Slightly raised surfaces. Used for content containers that sit directly on the base layer, such as the message list and channel list. */
584
+ --str-video__background-core-elevation-2: var(
585
+ --str-video__chrome-0
586
+ ); /** Floating and modal surfaces. Used for popovers, dropdowns, dialogs, and any element that interrupts the content flow. */
587
+ --str-video__background-core-elevation-3: var(
588
+ --str-video__chrome-0
589
+ ); /** Used for badge counts that float above other UI elements. */
590
+ --str-video__background-core-inverse: var(
591
+ --str-video__chrome-1000
592
+ ); /** The opposite of the primary surface. Used for tooltips, snackbars, and high-contrast floating elements. */
593
+ --str-video__background-core-on-accent: var(
594
+ --str-video__chrome-0
595
+ ); /** Background for elements placed on an accent-colored surface. Ensures legibility against brand colors. */
596
+ --str-video__background-core-on-elevation: var(
597
+ --str-video__chrome-100
598
+ ); /** Background for controls and elements inside a floating surface, such as a menu, dialog, or popover. Steps up in dark mode, where the elevated surface has already lightened and a plain surface background would disappear into it. */
599
+ --str-video__background-core-surface-card: var(
600
+ --str-video__chrome-50
601
+ ); /** Background for contained, card-style elements. Matches the surface in light mode but lifts slightly in dark mode to maintain visual separation. */
602
+ --str-video__background-core-surface-default: var(
603
+ --str-video__chrome-100
604
+ ); /** Background for sectioned content areas. Used for grouped containers, and distinct content regions. */
605
+ --str-video__background-core-surface-strong: var(
606
+ --str-video__chrome-150
607
+ ); /** A more prominent background. Used for elements that need to stand out from the main surface. */
608
+ --str-video__background-core-surface-subtle: var(
609
+ --str-video__chrome-50
610
+ ); /** A slightly receded background. Used for secondary containers or to create soft visual separation. */
611
+ --str-video__background-utility-disabled: var(
612
+ --str-video__chrome-100
613
+ ); /** Background for non-interactive elements. Flattens the element visually to signal unavailability. */
614
+ --str-video__background-utility-skeleton-loading-base: var(
615
+ --str-video__base-transparent-0
616
+ ); /** Base color for the default skeleton loading gradient. Used as the background tone for placeholder surfaces. */
617
+ --str-video__border-utility-focused: var(
618
+ --str-video__brand-150
619
+ ); /** Focus ring for keyboard and accessibility navigation. Uses the brand color to signal input focus. */
620
+ --str-video__border-utility-success: var(
621
+ --str-video__accent-success
622
+ ); /** Border for positive or confirmed states. Used on validated inputs and success indicators. */
623
+ --str-video__border-utility-warning: var(
624
+ --str-video__accent-warning
625
+ ); /** Border for cautionary states. Used on inputs or elements requiring attention. */
626
+ --str-video__border-utility-error: var(
627
+ --str-video__accent-error
628
+ ); /** Border for failure or invalid states. Used on failed inputs and destructive confirmations. */
629
+ --str-video__border-utility-disabled: var(
630
+ --str-video__chrome-100
631
+ ); /** Border for non-interactive elements. Matches the disabled surface to visually flatten the element. */
632
+ --str-video__border-utility-disabled-on-surface: var(
633
+ --str-video__chrome-150
634
+ ); /** Border for disabled elements on elevated surfaces. Stays visually distinct from the surface without drawing attention to a non-interactive element. */
635
+ --str-video__border-core-default: var(
636
+ --str-video__chrome-150
637
+ ); /** Standard border for surfaces and containers. Used for input fields, cards, and dividers on neutral backgrounds. */
638
+ --str-video__border-core-on-accent: var(
639
+ --str-video__chrome-0
640
+ ); /** Border on accent-colored surfaces. Stays white in both modes since the accent background doesn't invert. */
641
+ --str-video__border-core-on-elevation: var(
642
+ --str-video__chrome-150
643
+ ); /** Border for controls and elements inside a floating surface, such as a menu, dialog, or popover. Steps up in dark mode to keep the edge visible once the elevated surface has lightened. Use border/core/on-surface instead for elements on a plain surface. */
644
+ --str-video__border-core-on-inverse: var(
645
+ --str-video__chrome-0
646
+ ); /** Border on inverse-colored surfaces. Stays legible when the background flips between light and dark mode. */
647
+ --str-video__border-core-on-surface: var(
648
+ --str-video__chrome-300
649
+ ); /** Border for elements sitting on elevated surfaces. Uses a stronger value than default to maintain visible separation when the background is darker. */
650
+ --str-video__border-core-strong: var(
651
+ --str-video__chrome-300
652
+ ); /** An emphatic border for elements that need clear definition. Used for focused containers and prominent dividers. */
653
+ --str-video__border-core-subtle: var(
654
+ --str-video__chrome-100
655
+ ); /** A lighter border for minimal separation. Used where a full-strength border would feel too heavy. */
656
+ --str-video__avatar-presence-bg-online: var(
657
+ --str-video__accent-success
658
+ ); /** The green online indicator. Uses success accent in normal themes. In high-contrast, color is dropped and replaced with strong black for maximum clarity. */
659
+ --str-video__avatar-bg-default: var(--str-video__brand-150);
660
+ --str-video__avatar-bg-placeholder: var(--str-video__chrome-150);
661
+ --str-video__avatar-text-default: var(--str-video__brand-900);
662
+ --str-video__avatar-text-placeholder: var(--str-video__chrome-500);
663
+ --str-video__system-text: var(--str-video__chrome-1000);
664
+ --str-video__badge-bg-error: var(--str-video__accent-error);
665
+ --str-video__badge-bg-inverse: var(--str-video__chrome-1000);
666
+ --str-video__control-checkbox-bg: var(--str-video__base-transparent-0);
667
+ --str-video__control-radio-button-bg: var(--str-video__base-transparent-0);
668
+ --str-video__control-radio-check-bg: var(--str-video__base-transparent-0);
669
+ --str-video__control-accept-call-button-bg: var(
670
+ --str-video__accent-success
671
+ ); /** Background for the accept call action. Green rather than the primary accent, so accept and decline read as opposites rather than as two primary actions. */
672
+ --str-video__control-call-control-error-badge-bg: var(
673
+ --str-video__accent-warning
674
+ ); /** Background for the error badge on a call control button. Yellow rather than red, so it stays legible on a red button and over video. */
675
+ --str-video__control-decline-call-button-bg: var(
676
+ --str-video__accent-error
677
+ ); /** Background for the decline call action. Red rather than the destructive button token, so accept and decline read as a matched pair. */
678
+ --str-video__text-primary: var(
679
+ --str-video__chrome-900
680
+ ); /** Main body text. Used for message content, titles, and any text that carries primary meaning. */
681
+ --str-video__text-secondary: var(
682
+ --str-video__chrome-700
683
+ ); /** Supporting metadata text. Used for timestamps, subtitles, and secondary labels. */
684
+ --str-video__text-tertiary: var(
685
+ --str-video__chrome-500
686
+ ); /** De-emphasized text. Used for hints, placeholders, and lowest-priority supporting information. */
687
+ --str-video__text-on-inverse: var(
688
+ --str-video__chrome-0
689
+ ); /** Text on inverse-colored surfaces. Flips between light and dark to maintain legibility when the background inverts. */
690
+ --str-video__text-on-accent: var(
691
+ --str-video__chrome-0
692
+ ); /** Text on accent-colored surfaces. Stays white in both light and dark mode since the accent background doesn't invert. */
693
+ --str-video__text-disabled: var(
694
+ --str-video__chrome-300
695
+ ); /** Text for non-interactive or unavailable states. Communicates that an element can't be interacted with. */
696
+ --str-video__text-link: var(
697
+ --str-video__brand-500
698
+ ); /** Hyperlinks and inline actions. Uses the brand color to signal interactivity within text content. */
699
+ --str-video__accent-primary: var(
700
+ --str-video__brand-500
701
+ ); /** The main brand color. Used for interactive elements, buttons, links, and primary actions. Override this to apply your brand color across the SDK. */
702
+ --str-video__accent-neutral: var(
703
+ --str-video__chrome-500
704
+ ); /** A mid-tone gray for de-emphasized UI elements. */
705
+ --str-video__label-bg-neutral: var(
706
+ --str-video__chrome-150
707
+ ); /** Background for a neutral label. */
708
+ --str-video__label-bg-primary: var(
709
+ --str-video__brand-150
710
+ ); /** Background for a primary label. */
711
+ --str-video__label-text-primary: var(
712
+ --str-video__brand-900
713
+ ); /** Text on a primary label. */
714
+ --str-video__indicator-connection-quality-fair: var(
715
+ --str-video__accent-warning
716
+ ); /** Reduced connection. Fills two bars on the connection quality indicator. */
717
+ --str-video__indicator-connection-quality-great: var(
718
+ --str-video__accent-success
719
+ ); /** Strongest connection. Fills all three bars on the connection quality indicator. */
720
+ --str-video__indicator-connection-quality-poor: var(
721
+ --str-video__accent-error
722
+ ); /** Weak connection. Fills one bar, and is the only quality state worth interrupting the user for. */
723
+ --str-video__indicator-microphone-level-bar-active: var(
724
+ --str-video__brand-400
725
+ ); /** A filled bar in the microphone level meter. The number filled tracks the live input level from the selected device. */
726
+ --str-video__indicator-microphone-level-bar-inactive: var(
727
+ --str-video__chrome-200
728
+ ); /** An unfilled bar in the microphone level meter. Always drawn, so the meter keeps a constant width as the level moves. */
729
+ --str-video__indicator-sound-indicator-speaking: var(
730
+ --str-video__brand-400
731
+ ); /** Shown while a remote participant is talking. Only meaningful once the call is connected, since speaking state arrives from SFU events. */
732
+ --str-video__button-primary-bg: var(--str-video__accent-primary);
733
+ --str-video__button-primary-text: var(--str-video__accent-primary);
734
+ --str-video__button-primary-text-on-accent: var(--str-video__text-on-accent);
735
+ --str-video__button-primary-text-on-dark: var(--str-video__text-on-inverse);
736
+ --str-video__button-primary-border-on-dark: var(
737
+ --str-video__border-core-on-inverse
738
+ );
739
+ --str-video__button-secondary-bg: var(
740
+ --str-video__background-core-surface-default
741
+ );
742
+ --str-video__button-secondary-bg-liquid-glass: var(
743
+ --str-video__background-core-elevation-0
744
+ );
745
+ --str-video__button-secondary-text: var(--str-video__text-primary);
746
+ --str-video__button-secondary-text-on-accent: var(--str-video__text-primary);
747
+ --str-video__button-secondary-text-on-dark: var(--str-video__text-on-inverse);
748
+ --str-video__button-secondary-border: var(--str-video__border-core-default);
749
+ --str-video__button-secondary-border-on-dark: var(
750
+ --str-video__border-core-on-inverse
751
+ );
752
+ --str-video__button-destructive-bg-liquid-glass: var(
753
+ --str-video__background-core-elevation-0
754
+ );
755
+ --str-video__button-destructive-text-on-accent: var(
756
+ --str-video__text-on-accent
757
+ );
758
+ --str-video__button-destructive-text-on-dark: var(
759
+ --str-video__text-on-inverse
760
+ );
761
+ --str-video__button-destructive-border-on-dark: var(
762
+ --str-video__text-on-inverse
763
+ );
764
+ --str-video__input-text-default: var(
765
+ --str-video__text-primary
766
+ ); /** Main text inside the chat input. */
767
+ --str-video__input-text-placeholder: var(
768
+ --str-video__text-tertiary
769
+ ); /** Placeholder text for the input. Lower emphasis than main text. */
770
+ --str-video__input-text-disabled: var(
771
+ --str-video__text-disabled
772
+ ); /** Placeholder text for the input. Lower emphasis than main text. */
773
+ --str-video__input-text-icon: var(
774
+ --str-video__text-tertiary
775
+ ); /** Icons inside the input area (attach, emoji, camera, send when idle). Matches secondary text strength. */
776
+ --str-video__input-text-icon-active: var(
777
+ --str-video__text-primary
778
+ ); /** Icons inside the input area in their active state. Steps up from the resting icon colour to primary text. */
779
+ --str-video__border-utility-active: var(
780
+ --str-video__accent-primary
781
+ ); /** Active input border. Used for focused text fields and selected form elements. */
782
+ --str-video__avatar-presence-border: var(
783
+ --str-video__border-core-on-inverse
784
+ ); /** The thin outline around the presence dot. Matches the local surface behind the avatar. In high-contrast it uses the base surface. */
785
+ --str-video__avatar-presence-bg-offline: var(
786
+ --str-video__accent-neutral
787
+ ); /** The green online indicator. Uses success accent in normal themes. In high-contrast, color is dropped and replaced with strong black for maximum clarity. */
788
+ --str-video__system-caret: var(--str-video__accent-primary);
789
+ --str-video__badge-bg-default: var(--str-video__background-core-elevation-3);
790
+ --str-video__badge-bg-primary: var(--str-video__accent-primary);
791
+ --str-video__badge-bg-neutral: var(--str-video__accent-neutral);
792
+ --str-video__badge-text: var(--str-video__text-primary);
793
+ --str-video__badge-text-on-inverse: var(--str-video__text-on-inverse);
794
+ --str-video__badge-text-on-accent: var(--str-video__text-on-accent);
795
+ --str-video__badge-border: var(--str-video__border-core-on-inverse);
796
+ --str-video__control-progress-bar-fill: var(--str-video__accent-neutral);
797
+ --str-video__control-progress-bar-track: var(
798
+ --str-video__background-core-surface-strong
799
+ );
800
+ --str-video__control-progress-bar-fill-audio: var(
801
+ --str-video__accent-primary
802
+ ); /** Progress fill for audio playback, distinct from the neutral fill used elsewhere. */
803
+ --str-video__control-toggle-switch-bg: var(--str-video__accent-neutral);
804
+ --str-video__control-toggle-switch-bg-selected: var(
805
+ --str-video__accent-primary
806
+ );
807
+ --str-video__control-toggle-switch-bg-disabled: var(
808
+ --str-video__background-utility-disabled
809
+ );
810
+ --str-video__control-toggle-switch-knob: var(
811
+ --str-video__background-core-on-accent
812
+ );
813
+ --str-video__control-checkbox-border: var(--str-video__border-core-default);
814
+ --str-video__control-checkbox-bg-selected: var(--str-video__accent-primary);
815
+ --str-video__control-checkbox-icon: var(--str-video__text-on-accent);
816
+ --str-video__control-radio-button-border: var(
817
+ --str-video__border-core-default
818
+ );
819
+ --str-video__control-radio-button-bg-selected: var(
820
+ --str-video__accent-primary
821
+ );
822
+ --str-video__control-radio-button-indicator: var(--str-video__text-on-accent);
823
+ --str-video__control-radio-check-border: var(
824
+ --str-video__border-core-default
825
+ );
826
+ --str-video__control-radio-check-bg-selected: var(
827
+ --str-video__accent-primary
828
+ );
829
+ --str-video__control-radio-check-icon: var(--str-video__text-on-accent);
830
+ --str-video__control-chip-border: var(--str-video__border-core-default);
831
+ --str-video__control-chip-text: var(--str-video__text-primary);
832
+ --str-video__control-accept-call-button-text: var(
833
+ --str-video__text-on-accent
834
+ ); /** Icon or label on the accept call action, sitting on the success background. */
835
+ --str-video__control-decline-call-button-text: var(
836
+ --str-video__text-on-accent
837
+ ); /** Icon or label on the decline call action, sitting on the error background. */
838
+ --str-video__label-text-neutral: var(
839
+ --str-video__text-primary
840
+ ); /** Text on a neutral label. */
841
+ --str-video__tab-indicator: var(
842
+ --str-video__accent-primary
843
+ ); /** The underline on the selected tab. */
844
+ --str-video__tab-text: var(
845
+ --str-video__text-secondary
846
+ ); /** Label colour of an unselected tab. */
847
+ --str-video__tab-text-selected: var(
848
+ --str-video__accent-primary
849
+ ); /** Label colour of the selected tab. */
850
+ --str-video__tab-track: var(
851
+ --str-video__border-core-default
852
+ ); /** The line running under the tab bar. */
853
+ }