Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css
13405 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
.image-carousel-editor {
7
width: 100%;
8
height: 100%;
9
display: flex;
10
flex-direction: column;
11
overflow: hidden;
12
}
13
14
.image-carousel-editor .empty-message {
15
display: flex;
16
align-items: center;
17
justify-content: center;
18
height: 100%;
19
color: var(--vscode-descriptionForeground);
20
font-size: 14px;
21
}
22
23
.image-carousel-editor .slideshow-container {
24
display: flex;
25
flex-direction: column;
26
height: 100%;
27
gap: 8px;
28
overflow: hidden;
29
}
30
31
.image-carousel-editor .slideshow-container:focus,
32
.image-carousel-editor .slideshow-container:focus-visible {
33
outline: none !important;
34
}
35
36
/* Image viewing area */
37
.image-carousel-editor .image-area {
38
flex: 1;
39
min-height: 0;
40
position: relative;
41
display: flex;
42
align-items: center;
43
justify-content: center;
44
overflow: hidden;
45
}
46
47
.image-carousel-editor .main-image-container {
48
width: 100%;
49
height: 100%;
50
display: flex;
51
overflow: hidden;
52
cursor: zoom-in;
53
}
54
55
.image-carousel-editor .main-image-container.zoom-out {
56
cursor: zoom-out;
57
}
58
59
.image-carousel-editor .main-image-container.zoomed {
60
overflow: auto;
61
padding: 0;
62
scrollbar-color: var(--vscode-scrollbarSlider-background) transparent;
63
}
64
65
.image-carousel-editor .main-image-container.zoomed::-webkit-scrollbar {
66
width: 10px;
67
height: 10px;
68
}
69
70
.image-carousel-editor .main-image-container.zoomed::-webkit-scrollbar-thumb {
71
background-color: var(--vscode-scrollbarSlider-background);
72
}
73
74
.image-carousel-editor .main-image-container.zoomed::-webkit-scrollbar-thumb:hover {
75
background-color: var(--vscode-scrollbarSlider-hoverBackground);
76
}
77
78
.image-carousel-editor .main-image-container.zoomed::-webkit-scrollbar-thumb:active {
79
background-color: var(--vscode-scrollbarSlider-activeBackground);
80
}
81
82
.image-carousel-editor .main-image {
83
border-radius: 4px;
84
margin: auto;
85
}
86
87
.image-carousel-editor .video-container {
88
width: 100%;
89
height: 100%;
90
border-radius: 4px;
91
overflow: hidden;
92
}
93
94
.image-carousel-editor .main-image.scale-to-fit {
95
max-width: 100%;
96
max-height: 100%;
97
object-fit: contain;
98
}
99
100
.image-carousel-editor .main-image.pixelated {
101
image-rendering: pixelated;
102
}
103
104
/* Overlay navigation arrows */
105
.image-carousel-editor .nav-arrow {
106
position: absolute;
107
top: 50%;
108
transform: translateY(-50%);
109
width: 32px;
110
height: 32px;
111
display: flex;
112
align-items: center;
113
justify-content: center;
114
background: var(--vscode-toolbar-hoverBackground);
115
color: var(--vscode-foreground);
116
border: none;
117
border-radius: 50%;
118
cursor: pointer;
119
opacity: 0;
120
transition: opacity 0.15s ease;
121
z-index: 1;
122
}
123
124
.monaco-workbench.monaco-reduce-motion .image-carousel-editor .nav-arrow {
125
transition: none;
126
}
127
.image-carousel-editor .slideshow-container:hover .nav-arrow:not(:disabled) {
128
opacity: 0.8;
129
}
130
131
.image-carousel-editor .slideshow-container:hover .nav-arrow:disabled {
132
opacity: 0.3;
133
}
134
135
.image-carousel-editor .nav-arrow:hover:not(:disabled) {
136
opacity: 1 !important;
137
background: var(--vscode-toolbar-activeBackground);
138
color: var(--vscode-foreground);
139
}
140
141
.image-carousel-editor .nav-arrow:focus-visible:not(:disabled) {
142
opacity: 1 !important;
143
outline: 1px solid var(--vscode-focusBorder);
144
outline-offset: -1px;
145
}
146
147
.image-carousel-editor .nav-arrow:disabled {
148
cursor: default;
149
}
150
151
.image-carousel-editor .nav-arrow.prev-arrow {
152
left: 8px;
153
}
154
155
.image-carousel-editor .nav-arrow.next-arrow {
156
right: 8px;
157
}
158
159
/* Bottom bar: caption + counter + thumbnails */
160
.image-carousel-editor .bottom-bar {
161
display: flex;
162
flex-direction: column;
163
align-items: center;
164
gap: 2px;
165
padding: 4px 0 8px;
166
flex-shrink: 0;
167
min-width: 0;
168
max-width: 100%;
169
}
170
171
/* Extra gap before thumbnails */
172
.image-carousel-editor .bottom-bar .sections-container {
173
margin-top: 4px;
174
}
175
176
/* Info bar: caption · counter */
177
.image-carousel-editor .image-info-bar {
178
text-align: center;
179
color: var(--vscode-descriptionForeground);
180
font-size: 12px;
181
padding: 0 24px;
182
min-height: 16px;
183
}
184
185
.image-carousel-editor .caption-separator::before {
186
content: '\00b7';
187
margin: 0 6px;
188
opacity: 0.6;
189
}
190
191
.image-carousel-editor .image-counter {
192
opacity: 0.7;
193
}
194
195
/* Sections container — flat horizontal thumbnail strip */
196
.image-carousel-editor .sections-container {
197
display: flex;
198
flex-direction: row;
199
align-items: center;
200
gap: 6px;
201
overflow-x: auto;
202
justify-content: center;
203
justify-content: safe center;
204
padding: 0;
205
flex-shrink: 0;
206
min-width: 0;
207
max-width: 100%;
208
scrollbar-width: none;
209
}
210
211
.image-carousel-editor .sections-container::-webkit-scrollbar {
212
display: none;
213
}
214
215
/* Subtle separator between sections */
216
.image-carousel-editor .thumbnail-separator {
217
width: 1px;
218
height: 24px;
219
background: var(--vscode-editorWidget-border, var(--vscode-widget-border));
220
opacity: 0.4;
221
flex-shrink: 0;
222
margin: 0 6px;
223
}
224
225
.image-carousel-editor .thumbnail {
226
width: 48px;
227
height: 48px;
228
border: 2px solid transparent;
229
border-radius: 4px;
230
overflow: hidden;
231
cursor: pointer;
232
transition: border-color 0.15s ease, opacity 0.15s ease;
233
flex-shrink: 0;
234
opacity: 0.6;
235
padding: 0;
236
background: none;
237
}
238
239
.image-carousel-editor .thumbnail:hover {
240
opacity: 1;
241
border-color: var(--vscode-focusBorder);
242
}
243
244
.image-carousel-editor .thumbnail:focus-visible {
245
opacity: 1;
246
outline: 1px solid var(--vscode-focusBorder);
247
outline-offset: 1px;
248
}
249
250
.image-carousel-editor .thumbnail.active {
251
opacity: 1;
252
border-color: var(--vscode-focusBorder);
253
}
254
255
.image-carousel-editor .thumbnail.broken {
256
display: flex;
257
align-items: center;
258
justify-content: center;
259
background: var(--vscode-editor-background);
260
}
261
262
.image-carousel-editor .thumbnail-broken-icon {
263
font-size: 20px;
264
color: var(--vscode-descriptionForeground);
265
}
266
267
.image-carousel-editor .thumbnail-image {
268
width: 100%;
269
height: 100%;
270
object-fit: cover;
271
pointer-events: none;
272
}
273
274
/* Video thumbnail: play icon centered in a dark background */
275
.image-carousel-editor .thumbnail.video-thumbnail {
276
display: flex;
277
align-items: center;
278
justify-content: center;
279
background: var(--vscode-editor-background);
280
}
281
282
.image-carousel-editor .thumbnail-play-icon {
283
font-size: 20px;
284
color: var(--vscode-descriptionForeground);
285
}
286
287
/* Visually hidden but available to screen readers */
288
.image-carousel-editor .sr-only {
289
position: absolute;
290
width: 1px;
291
height: 1px;
292
padding: 0;
293
margin: -1px;
294
overflow: hidden;
295
clip: rect(0, 0, 0, 0);
296
white-space: nowrap;
297
border: 0;
298
}
299
300